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);
        }
Beispiel #2
0
 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"));
 }
Beispiel #3
0
        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"));
        }
Beispiel #5
0
        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));
 }
Beispiel #8
0
 private async static Task <string> Require(string modulePath)
 {
     return(await NodeModuleService.ResolveModule(SourceDirectory, modulePath));
 }