Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 492688 | Differences between
and this patch

Collapse All | Expand All

(-)a/bundles/org.eclipse.orion.client.javascript/web/javascript/plugins/javascriptPlugin.js (-62 / +58 lines)
Lines 248-319 define([ Link Here
248
				// only load modules
248
				// only load modules
249
				if (!/^[\.]+/.test(_l)) {
249
				if (!/^[\.]+/.test(_l)) {
250
					//do node_modules read
250
					//do node_modules read
251
					var project = jsProject.getProjectPath();
251
					var path = request.args.file.file;
252
					if(project) {
252
					var index = path.lastIndexOf('/');
253
						return fileClient.read(project+"node_modules/"+_l+"/package.json", false, false, {readIfExists: true}).then(function(json) {
253
					var nodeFolderPath = path.substr(0, index + 1) +"node_modules/"+_l+"/"; // include the trailing / in the folder path
254
							if(json) {
254
					return fileClient.read(nodeFolderPath+ "package.json", false, false, {readIfExists: true}).then(function(json) {
255
								var val = JSON.parse(json);
255
						if(json) {
256
								var mainPath = null;
256
							var val = JSON.parse(json);
257
								var main = val.main;
257
							var mainPath = null;
258
								if (main) {
258
							var main = val.main;
259
									if (!/(\.js)$/.test(main)) {
259
							if (main) {
260
										main += ".js";
260
								if (!/(\.js)$/.test(main)) {
261
									}
261
									main += ".js";
262
									mainPath = project + "node_modules/" + _l + "/" + main;
263
								} else {
264
									main = "index.js";
265
									mainPath = project + "node_modules/" + _l + "/index.js";
266
								}
262
								}
267
								return fileClient.read(mainPath).then(function(contents) {
263
								mainPath = nodeFolderPath + main;
268
									response.args.contents = contents;
264
							} else {
269
									response.args.file = mainPath;
265
								main = "index.js";
270
									response.args.path = main;
266
								mainPath = nodeFolderPath + "index.js";
271
									ternWorker.postMessage(response);
267
							}
272
								},
268
							return fileClient.read(mainPath).then(function(contents) {
273
								function(err) {
269
								response.args.contents = contents;
274
									response.args.error = "Failed to read node_modules folder";
270
								response.args.file = mainPath;
275
									response.args.message = err.toString();
271
								response.args.path = main;
276
									ternWorker.postMessage(response);
272
								ternWorker.postMessage(response);
277
								});
273
							},
278
							} 
274
							function(err) {
279
							response.args.error = i18nUtil.formatMessage(javascriptMessages['failedToReadFile'], _l);
275
								response.args.error = "Failed to read node_modules folder";
280
							response.args.message = "No file contents";
276
								response.args.message = err.toString();
281
							ternWorker.postMessage(response);
277
								ternWorker.postMessage(response);
282
						},
278
							});
283
						function(err) {
279
						} 
284
							response.args.error = i18nUtil.formatMessage(javascriptMessages['failedToReadFile'], _l);
280
						response.args.error = i18nUtil.formatMessage(javascriptMessages['failedToReadFile'], _l);
285
							response.args.message = err.toString();
281
						response.args.message = "No file contents";
286
							ternWorker.postMessage(response);
282
						ternWorker.postMessage(response);
287
						});
283
					},
288
					} 
284
					function(err) {
289
					//don't search for now
290
					response.args.error = i18nUtil.formatMessage(javascriptMessages['failedToReadFile'], _l);
291
					ternWorker.postMessage(response);
292
				} else {
293
					// try to get the current folder from request.args.file.file
294
					var currentFile = request.args.file.file;
295
					if (currentFile) {
296
						var lastIndex = currentFile.lastIndexOf('/');
297
						var filePath = currentFile.substring(0, lastIndex + 1) + _l;
298
						if (!/\.js|\.json$/ig.test(_l)) {
299
							filePath += ".js";
300
						}
301
						return fileClient.read(filePath).then(function(contents) {
302
							response.args.contents = contents;
303
							response.args.file = filePath;
304
							response.args.path = _l;
305
							ternWorker.postMessage(response);
306
						},
307
						function(err) {
308
							response.args.error =  i18nUtil.formatMessage(javascriptMessages['failedToReadFile'], filePath);
309
							response.args.message = err.toString();
310
							ternWorker.postMessage(response);
311
						});
312
					} else {
313
						// could be a require('./....'); inside a module code
314
						response.args.error = i18nUtil.formatMessage(javascriptMessages['failedToReadFile'], _l);
285
						response.args.error = i18nUtil.formatMessage(javascriptMessages['failedToReadFile'], _l);
286
						response.args.message = err.toString();
315
						ternWorker.postMessage(response);
287
						ternWorker.postMessage(response);
288
					});
289
				}
290
				// try to get the current folder from request.args.file.file
291
				var currentFile = request.args.file.file;
292
				if (currentFile) {
293
					var lastIndex = currentFile.lastIndexOf('/');
294
					var filePath = currentFile.substring(0, lastIndex + 1) + _l;
295
					if (!/\.js|\.json$/ig.test(_l)) {
296
						filePath += ".js";
316
					}
297
					}
298
					return fileClient.read(filePath).then(function(contents) {
299
						response.args.contents = contents;
300
						response.args.file = filePath;
301
						response.args.path = _l;
302
						ternWorker.postMessage(response);
303
					},
304
					function(err) {
305
						response.args.error =  i18nUtil.formatMessage(javascriptMessages['failedToReadFile'], filePath);
306
						response.args.message = err.toString();
307
						ternWorker.postMessage(response);
308
					});
309
				} else {
310
					// could be a require('./....'); inside a module code
311
					response.args.error = i18nUtil.formatMessage(javascriptMessages['failedToReadFile'], _l);
312
					ternWorker.postMessage(response);
317
				}
313
				}
318
			} else {
314
			} else {
319
				scriptresolver.getWorkspaceFile(_l).then(function(files) {
315
				scriptresolver.getWorkspaceFile(_l).then(function(files) {

Return to bug 492688