public void BasicResolveTest() { // Custom Tests: AssertRequire("../module-resolution/packages/main/package", "packages/main/package.json"); // Imported from Node.js: AssertRequire("../module-resolution/a.js", "a.js"); // require a file without any extensions AssertRequire("../module-resolution/foo", "foo"); AssertRequire("../module-resolution/a", "a.js"); AssertRequire("../module-resolution/b/c", "b/c.js"); AssertRequire("../module-resolution/b/d", "b/d.js"); // Test loading relative paths from different files (adapted from require()s spread across files) Assert.AreEqual(Require("./module-resolution/b/c.js"), NodeModuleService.ResolveModule("./b/c", Require("../module-resolution/a"))); Assert.AreEqual(Require("./module-resolution/b/d.js"), NodeModuleService.ResolveModule("./d", Require("../module-resolution/b/c"))); Assert.AreEqual(Require("./module-resolution/b/package/index.js"), NodeModuleService.ResolveModule("./package", Require("../module-resolution/b/c"))); // Absolute // I see no reason to support absolute paths. //Assert.AreEqual(Require("../module-resolution/b/d"), Require(Path.Combine(SourceDirectory, "../module-resolution/b/d"))); // Adapted from test index.js modules ids and relative loading Assert.AreNotEqual(NodeModuleService.ResolveModule(Path.GetDirectoryName(Require("../module-resolution/nested-index/two")), "./hello"), NodeModuleService.ResolveModule(Path.GetDirectoryName(Require("../module-resolution/nested-index/one")), "./hello") ); AssertRequire("../module-resolution/empty", null); }
static IEnumerable <Intel.Completion> GetRootCompletions(string baseFolder) { return(NodeModuleService.GetAvailableModules(baseFolder) .Select(p => new Intel.Completion( Path.GetFileName(p), Path.GetFileName(p), GetDescription(p).ConfigureAwait(false).GetAwaiter().GetResult(), moduleIcon, "Node module" )).Where(t => t.DisplayText != "grunt")); }
protected override bool Execute(VSConstants.VSStd97CmdID commandId, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut) { var path = FindRequirePath(); if (path == null) { return(false); } var filePath = NodeModuleService.ResolveModule(Path.GetDirectoryName(TextView.TextBuffer.GetFileName()), path).ConfigureAwait(false).GetAwaiter().GetResult(); if (filePath != null) { FileHelpers.OpenFileInPreviewTab(Path.GetFullPath(filePath)); return(true); } WebEssentialsPackage.DTE.StatusBar.Text = "Couldn't find " + path; return(false); }
public void NodeModulesTest() { var basePath = Path.Combine(TargetFixturesDir, "node_modules"); // Custom Tests: Assert.AreEqual(Require("../module-resolution/node_modules/baz/otherFile.js"), NodeModuleService.ResolveModule(basePath, "baz/otherFile")); // Imported from Node.js: // Adapted from test node_modules folders Assert.AreEqual(Require("../module-resolution/node_modules/baz/index.js"), NodeModuleService.ResolveModule(basePath, "baz")); Assert.AreEqual(NodeModuleService.ResolveModule(basePath, "./baz/index.js"), NodeModuleService.ResolveModule(basePath, "baz")); basePath += @"\baz"; Assert.AreEqual(NodeModuleService.ResolveModule(basePath, "../bar.js"), NodeModuleService.ResolveModule(basePath, "bar")); Assert.AreEqual(Require("../module-resolution/node_modules/bar.js"), NodeModuleService.ResolveModule(basePath, "bar")); Assert.AreEqual(NodeModuleService.ResolveModule(basePath, "./node_modules/asdf.js"), NodeModuleService.ResolveModule(basePath, "asdf")); Assert.AreEqual(Require("../module-resolution/node_modules/baz/node_modules/asdf"), NodeModuleService.ResolveModule(basePath, "asdf")); }
public void AugmentCompletionSession(ICompletionSession session, IList <CompletionSet> completionSets) { var position = session.GetTriggerPoint(_buffer).GetPoint(_buffer.CurrentSnapshot); var line = position.GetContainingLine(); if (line == null) { return; } int linePos = position - line.Start.Position; var info = NodeModuleCompletionUtils.FindCompletionInfo(line.GetText(), linePos); if (info == null) { return; } var callingFilename = _buffer.GetFileName(); var baseFolder = Path.GetDirectoryName(callingFilename); IEnumerable <Intel.Completion> results; if (String.IsNullOrWhiteSpace(info.Item1)) { results = GetRootCompletions(baseFolder); } else { results = GetRelativeCompletions(NodeModuleService.ResolvePath(baseFolder, info.Item1)); // Show completions for ../../ if (parentTraversalRegex.IsMatch(info.Item1)) { results = new[] { parentFolder } }
public void ParentDirCyclesTest() { // Adapted from test cycles containing a .. path Assert.AreEqual(Require("./module-resolution/cycles/folder/foo.js"), NodeModuleService.ResolveModule("./folder/foo", Require("../module-resolution/cycles/root"))); Assert.AreEqual(Require("./module-resolution/cycles/root.js"), NodeModuleService.ResolveModule("./../root", Require("../module-resolution/cycles/folder/foo"))); }
private static string Require(string modulePath) { return(NodeModuleService.ResolveModule(SourceDirectory, modulePath)); }
private async static Task <string> Require(string modulePath) { return(await NodeModuleService.ResolveModule(SourceDirectory, modulePath)); }