1namespace ts.projectSystem { 2 describe("unittests:: tsserver:: maxNodeModuleJsDepth for inferred projects", () => { 3 it("should be set to 2 if the project has js root files", () => { 4 const file1: File = { 5 path: "/a/b/file1.js", 6 content: `var t = require("test"); t.` 7 }; 8 const moduleFile: File = { 9 path: "/a/b/node_modules/test/index.js", 10 content: `var v = 10; module.exports = v;` 11 }; 12 13 const host = createServerHost([file1, moduleFile]); 14 const projectService = createProjectService(host); 15 projectService.openClientFile(file1.path); 16 17 let project = projectService.inferredProjects[0]; 18 let options = project.getCompilationSettings(); 19 assert.isTrue(options.maxNodeModuleJsDepth === 2); 20 21 // Assert the option sticks 22 projectService.setCompilerOptionsForInferredProjects({ target: ScriptTarget.ES2016 }); 23 project = projectService.inferredProjects[0]; 24 options = project.getCompilationSettings(); 25 assert.isTrue(options.maxNodeModuleJsDepth === 2); 26 }); 27 28 it("should return to normal state when all js root files are removed from project", () => { 29 const file1 = { 30 path: "/a/file1.ts", 31 content: "let x =1;" 32 }; 33 const file2 = { 34 path: "/a/file2.js", 35 content: "let x =1;" 36 }; 37 38 const host = createServerHost([file1, file2, libFile]); 39 const projectService = createProjectService(host, { useSingleInferredProject: true }); 40 41 projectService.openClientFile(file1.path); 42 checkNumberOfInferredProjects(projectService, 1); 43 let project = projectService.inferredProjects[0]; 44 assert.isUndefined(project.getCompilationSettings().maxNodeModuleJsDepth); 45 46 projectService.openClientFile(file2.path); 47 project = projectService.inferredProjects[0]; 48 assert.isTrue(project.getCompilationSettings().maxNodeModuleJsDepth === 2); 49 50 projectService.closeClientFile(file2.path); 51 project = projectService.inferredProjects[0]; 52 assert.isUndefined(project.getCompilationSettings().maxNodeModuleJsDepth); 53 }); 54 }); 55} 56