mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-12-12 20:25:48 -06:00
[WIP] pass ITypingsInstaller to ProjectService
This commit is contained in:
parent
51e2b02a31
commit
b1871a5bf9
16
Jakefile.js
16
Jakefile.js
@ -11,6 +11,7 @@ var runTestsInParallel = require("./scripts/mocha-parallel").runTestsInParallel;
|
||||
var compilerDirectory = "src/compiler/";
|
||||
var servicesDirectory = "src/services/";
|
||||
var serverDirectory = "src/server/";
|
||||
var typingsInstallerDirectory = "src/server/typingsInstaller";
|
||||
var harnessDirectory = "src/harness/";
|
||||
var libraryDirectory = "src/lib/";
|
||||
var scriptsDirectory = "scripts/";
|
||||
@ -102,6 +103,7 @@ var servicesSources = [
|
||||
}));
|
||||
|
||||
var serverCoreSources = [
|
||||
"types.d.ts",
|
||||
"utilities.ts",
|
||||
"scriptVersionCache.ts",
|
||||
"scriptInfo.ts",
|
||||
@ -121,6 +123,14 @@ var cancellationTokenSources = [
|
||||
return path.join(serverDirectory, f);
|
||||
});
|
||||
|
||||
var typingsInstallerSources = [
|
||||
"../types.d.ts",
|
||||
"typingsInstaller.ts",
|
||||
"nodeTypingsInstaller.ts"
|
||||
].map(function (f) {
|
||||
return path.join(typingsInstallerDirectory, f);
|
||||
});
|
||||
|
||||
var serverSources = serverCoreSources.concat(servicesSources);
|
||||
|
||||
var languageServiceLibrarySources = [
|
||||
@ -571,8 +581,12 @@ compileFile(
|
||||
var cancellationTokenFile = path.join(builtLocalDirectory, "cancellationToken.js");
|
||||
compileFile(cancellationTokenFile, cancellationTokenSources, [builtLocalDirectory].concat(cancellationTokenSources), /*prefixes*/ [copyright], /*useBuiltCompiler*/ true, { outDir: builtLocalDirectory, noOutFile: true });
|
||||
|
||||
var typingsInstallerFile = path.join(builtLocalDirectory, "typingsInstaller.js");
|
||||
compileFile(typingsInstallerFile, typingsInstallerSources, [builtLocalDirectory].concat(typingsInstallerSources), /*prefixes*/ [copyright], /*useBuiltCompiler*/ true, { outDir: builtLocalDirectory, noOutFile: false });
|
||||
|
||||
var serverFile = path.join(builtLocalDirectory, "tsserver.js");
|
||||
compileFile(serverFile, serverSources,[builtLocalDirectory, copyright, cancellationTokenFile].concat(serverSources), /*prefixes*/ [copyright], /*useBuiltCompiler*/ true, { types: ["node"] });
|
||||
compileFile(serverFile, serverSources,[builtLocalDirectory, copyright, cancellationTokenFile, typingsInstallerFile].concat(serverSources), /*prefixes*/ [copyright], /*useBuiltCompiler*/ true, { types: ["node"] });
|
||||
|
||||
var tsserverLibraryFile = path.join(builtLocalDirectory, "tsserverlibrary.js");
|
||||
var tsserverLibraryDefinitionFile = path.join(builtLocalDirectory, "tsserverlibrary.d.ts");
|
||||
compileFile(
|
||||
|
||||
@ -692,6 +692,7 @@ namespace Harness.LanguageService {
|
||||
const server = new ts.server.Session(serverHost,
|
||||
{ isCancellationRequested: () => false },
|
||||
/*useOneInferredProject*/ false,
|
||||
/*typingsInstaller*/ undefined,
|
||||
Utils.byteLength,
|
||||
Utils.maxUncompressedMessageSize,
|
||||
Utils.compress,
|
||||
|
||||
@ -84,7 +84,7 @@ namespace ts {
|
||||
msg: (s: string, type?: string) => { }
|
||||
};
|
||||
|
||||
const projectService = new server.ProjectService(serverHost, logger, { isCancellationRequested: () => false }, /*useOneInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(serverHost, logger, { isCancellationRequested: () => false }, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
const rootScriptInfo = projectService.getOrCreateScriptInfo(rootFile, /* openedByClient */true, /*containingProject*/ undefined);
|
||||
const project = projectService.createInferredProjectWithRootFileIfNecessary(rootScriptInfo);
|
||||
project.setCompilerOptions({ module: ts.ModuleKind.AMD } );
|
||||
|
||||
@ -43,7 +43,7 @@ namespace ts.server {
|
||||
let lastSent: protocol.Message;
|
||||
|
||||
beforeEach(() => {
|
||||
session = new Session(mockHost, nullCancellationToken, /*useOneInferredProject*/ false, Utils.byteLength, Utils.maxUncompressedMessageSize, Utils.compress, process.hrtime, mockLogger);
|
||||
session = new Session(mockHost, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined, Utils.byteLength, Utils.maxUncompressedMessageSize, Utils.compress, process.hrtime, mockLogger);
|
||||
session.send = (msg: protocol.Message) => {
|
||||
lastSent = msg;
|
||||
};
|
||||
@ -268,7 +268,7 @@ namespace ts.server {
|
||||
lastSent: protocol.Message;
|
||||
customHandler = "testhandler";
|
||||
constructor() {
|
||||
super(mockHost, nullCancellationToken, /*useOneInferredProject*/ false, Utils.byteLength, Utils.maxUncompressedMessageSize, Utils.compress, process.hrtime, mockLogger);
|
||||
super(mockHost, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined, Utils.byteLength, Utils.maxUncompressedMessageSize, Utils.compress, process.hrtime, mockLogger);
|
||||
this.addProtocolHandler(this.customHandler, () => {
|
||||
return { response: undefined, responseRequired: true };
|
||||
});
|
||||
@ -326,7 +326,7 @@ namespace ts.server {
|
||||
class InProcSession extends Session {
|
||||
private queue: protocol.Request[] = [];
|
||||
constructor(private client: InProcClient) {
|
||||
super(mockHost, nullCancellationToken, /*useOneInferredProject*/ false, Utils.byteLength, Utils.maxUncompressedMessageSize, Utils.compress, process.hrtime, mockLogger);
|
||||
super(mockHost, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined, Utils.byteLength, Utils.maxUncompressedMessageSize, Utils.compress, process.hrtime, mockLogger);
|
||||
this.addProtocolHandler("echo", (req: protocol.Request) => ({
|
||||
response: req.arguments,
|
||||
responseRequired: true
|
||||
|
||||
@ -404,7 +404,7 @@ namespace ts {
|
||||
content: `export let x: number`
|
||||
};
|
||||
const host = createServerHost([appFile, moduleFile, libFile]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
const { configFileName } = projectService.openClientFile(appFile.path);
|
||||
|
||||
assert(!configFileName, `should not find config, got: '${configFileName}`);
|
||||
@ -442,7 +442,7 @@ namespace ts {
|
||||
};
|
||||
|
||||
const host = createServerHost([configFile, libFile, file1, file2, file3]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
const { configFileName, configFileErrors } = projectService.openClientFile(file1.path);
|
||||
|
||||
assert(configFileName, "should find config file");
|
||||
@ -469,7 +469,7 @@ namespace ts {
|
||||
const host = createServerHost(filesWithoutConfig);
|
||||
|
||||
const filesWithConfig = [libFile, commonFile1, commonFile2, configFile];
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
projectService.openClientFile(commonFile1.path);
|
||||
projectService.openClientFile(commonFile2.path);
|
||||
|
||||
@ -500,7 +500,7 @@ namespace ts {
|
||||
content: `{}`
|
||||
};
|
||||
const host = createServerHost([commonFile1, libFile, configFile]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
projectService.openClientFile(commonFile1.path);
|
||||
checkWatchedDirectories(host, ["/a/b"]);
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
@ -528,7 +528,7 @@ namespace ts {
|
||||
}`
|
||||
};
|
||||
const host = createServerHost([commonFile1, commonFile2, configFile]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
projectService.openClientFile(commonFile1.path);
|
||||
projectService.openClientFile(commonFile2.path);
|
||||
|
||||
@ -544,7 +544,7 @@ namespace ts {
|
||||
content: `{}`
|
||||
};
|
||||
const host = createServerHost([commonFile1, commonFile2, configFile]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
projectService.openClientFile(commonFile1.path);
|
||||
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
@ -574,7 +574,7 @@ namespace ts {
|
||||
};
|
||||
const files = [commonFile1, commonFile2, configFile];
|
||||
const host = createServerHost(files);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
projectService.openClientFile(commonFile1.path);
|
||||
|
||||
const project = projectService.configuredProjects[0];
|
||||
@ -607,7 +607,7 @@ namespace ts {
|
||||
};
|
||||
|
||||
const host = createServerHost([commonFile1, commonFile2, excludedFile1, configFile]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
|
||||
projectService.openClientFile(commonFile1.path);
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
@ -641,7 +641,7 @@ namespace ts {
|
||||
};
|
||||
const files = [file1, nodeModuleFile, classicModuleFile, configFile];
|
||||
const host = createServerHost(files);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
projectService.openClientFile(file1.path);
|
||||
projectService.openClientFile(nodeModuleFile.path);
|
||||
projectService.openClientFile(classicModuleFile.path);
|
||||
@ -682,7 +682,7 @@ namespace ts {
|
||||
}`
|
||||
};
|
||||
const host = createServerHost([file1, file2, configFile]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
projectService.openClientFile(file1.path);
|
||||
projectService.closeClientFile(file1.path);
|
||||
projectService.openClientFile(file2.path);
|
||||
@ -709,7 +709,7 @@ namespace ts {
|
||||
}`
|
||||
};
|
||||
const host = createServerHost([file1, file2, configFile]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
projectService.openClientFile(file1.path);
|
||||
projectService.closeClientFile(file1.path);
|
||||
projectService.openClientFile(file2.path);
|
||||
@ -742,7 +742,7 @@ namespace ts {
|
||||
};
|
||||
|
||||
const host = createServerHost([file1, file2, file3, libFile]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ true);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ true, /*typingsInstaller*/ undefined);
|
||||
projectService.openClientFile(file1.path);
|
||||
projectService.openClientFile(file2.path);
|
||||
projectService.openClientFile(file3.path);
|
||||
@ -775,7 +775,7 @@ namespace ts {
|
||||
}`
|
||||
};
|
||||
const host = createServerHost([file1, configFile, libFile]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ true);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ true, /*typingsInstaller*/ undefined);
|
||||
projectService.openClientFile(file1.path);
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
|
||||
@ -794,7 +794,7 @@ namespace ts {
|
||||
};
|
||||
const externalProjectName = "externalproject";
|
||||
const host = createServerHost([file1, file2]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
projectService.openExternalProject({
|
||||
rootFiles: toExternalFiles([file1.path, file2.path]),
|
||||
options: {},
|
||||
@ -852,7 +852,7 @@ namespace ts {
|
||||
};
|
||||
const externalProjectName = "externalproject";
|
||||
const host = createServerHost([file1, file2, file3, config1, config2]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
projectService.openExternalProject({
|
||||
rootFiles: toExternalFiles([config1.path, config2.path, file3.path]),
|
||||
options: {},
|
||||
@ -890,7 +890,7 @@ namespace ts {
|
||||
};
|
||||
const externalProjectName = "externalproject";
|
||||
const host = createServerHost([file1, configFile]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
|
||||
projectService.openClientFile(file1.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
@ -921,7 +921,7 @@ namespace ts {
|
||||
};
|
||||
const externalProjectName = "externalproject";
|
||||
const host = createServerHost([file1, configFile]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
|
||||
projectService.openClientFile(file1.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
@ -956,7 +956,7 @@ namespace ts {
|
||||
content: `export let y = 1;`
|
||||
};
|
||||
const host = createServerHost([file1, file2, file3]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
|
||||
projectService.openClientFile(file1.path);
|
||||
|
||||
@ -993,7 +993,7 @@ namespace ts {
|
||||
content: `export let y = 1;`
|
||||
};
|
||||
const host = createServerHost([file1, file2, file3]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
|
||||
projectService.openClientFile(file1.path);
|
||||
|
||||
@ -1032,7 +1032,7 @@ namespace ts {
|
||||
};
|
||||
|
||||
const host = createServerHost([file1, file2, file3]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
|
||||
projectService.openClientFile(file1.path);
|
||||
checkNumberOfProjects(projectService, { inferredProjects: 1 });
|
||||
@ -1065,7 +1065,7 @@ namespace ts {
|
||||
content: "export let y = 1;"
|
||||
};
|
||||
const host = createServerHost([file1, file2, file3]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
|
||||
projectService.openClientFile(file2.path);
|
||||
checkNumberOfProjects(projectService, { inferredProjects: 1 });
|
||||
@ -1100,7 +1100,7 @@ namespace ts {
|
||||
};
|
||||
|
||||
const host = createServerHost([file1, configFile]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
|
||||
projectService.openClientFile(file1.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
@ -1131,7 +1131,7 @@ namespace ts {
|
||||
};
|
||||
|
||||
const host = createServerHost([file1, file2, configFile]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
|
||||
projectService.openClientFile(file1.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
@ -1164,7 +1164,7 @@ namespace ts {
|
||||
};
|
||||
|
||||
const host = createServerHost([file1, file2, configFile]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
|
||||
projectService.openClientFile(file1.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
@ -1192,7 +1192,7 @@ namespace ts {
|
||||
content: "let y = 1"
|
||||
};
|
||||
const host = createServerHost([file1, file2]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
|
||||
projectService.openExternalProject({ projectFileName: "project", options: {}, rootFiles: toExternalFiles([file1.path]) });
|
||||
checkNumberOfProjects(projectService, { externalProjects: 1 });
|
||||
@ -1218,7 +1218,7 @@ namespace ts {
|
||||
};
|
||||
|
||||
const host = createServerHost([file1, file2, file3]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
|
||||
projectService.openExternalProject({ projectFileName: "project", options: { moduleResolution: ModuleResolutionKind.NodeJs }, rootFiles: toExternalFiles([file1.path, file2.path]) });
|
||||
checkNumberOfProjects(projectService, { externalProjects: 1 });
|
||||
@ -1245,7 +1245,7 @@ namespace ts {
|
||||
content: JSON.stringify({ compilerOptions: {} })
|
||||
};
|
||||
const host = createServerHost([file1, file2, config]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
|
||||
projectService.openClientFile(file1.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
@ -1273,7 +1273,7 @@ namespace ts {
|
||||
content: "export let x = 1"
|
||||
};
|
||||
const host = createServerHost([file1, file2]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
|
||||
projectService.openClientFile(file1.path);
|
||||
projectService.openClientFile(file2.path);
|
||||
@ -1298,7 +1298,7 @@ namespace ts {
|
||||
content: `<html><script language="javascript">var x = 1;</></html>`
|
||||
};
|
||||
const host = createServerHost([file1]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
const projectFileName = "projectFileName";
|
||||
projectService.openExternalProject({ projectFileName, options: {}, rootFiles: [{ fileName: file1.path, scriptKind: ScriptKind.JS, hasMixedContent: true }] });
|
||||
|
||||
@ -1336,7 +1336,7 @@ namespace ts {
|
||||
content: "export let x: number"
|
||||
};
|
||||
const host = createServerHost([file1, modFile]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
|
||||
projectService.openClientFile(file1.path);
|
||||
projectService.openClientFile(modFile.path);
|
||||
@ -1353,7 +1353,7 @@ namespace ts {
|
||||
content: "{x: 1}"
|
||||
};
|
||||
const host = createServerHost([file1]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ true);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ true, /*typingsInstaller*/ undefined);
|
||||
projectService.setCompilerOptionsForInferredProjects({ target: ScriptTarget.ES5, allowJs: false });
|
||||
projectService.openClientFile(file1.path);
|
||||
projectService.inferredProjects[0].getLanguageService(/*ensureSynchronized*/ false).getOutliningSpans(file1.path);
|
||||
@ -1381,7 +1381,7 @@ namespace ts {
|
||||
content: "{}"
|
||||
};
|
||||
const host = createServerHost([file1, file2, tsconfig1, tsconfig2]);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false);
|
||||
const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ false, /*typingsInstaller*/ undefined);
|
||||
|
||||
projectService.openClientFile(file2.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
|
||||
@ -176,11 +176,13 @@ namespace ts.server {
|
||||
public readonly logger: Logger,
|
||||
public readonly cancellationToken: HostCancellationToken,
|
||||
private readonly useSingleInferredProject: boolean,
|
||||
private typingsInstaller: ITypingsInstaller,
|
||||
private readonly eventHandler?: ProjectServiceEventHandler) {
|
||||
|
||||
this.toCanonicalFileName = createGetCanonicalFileName(host.useCaseSensitiveFileNames);
|
||||
this.directoryWatchers = new DirectoryWatchers(this);
|
||||
this.throttledOperations = new ThrottledOperations(host);
|
||||
this.typingsCache = new TypingsCache(typingsInstaller || nullTypingsInstaller);
|
||||
// ts.disableIncrementalParsing = true;
|
||||
|
||||
this.hostConfiguration = {
|
||||
|
||||
@ -233,7 +233,7 @@ namespace ts.server {
|
||||
}
|
||||
this.projectStructureVersion++;
|
||||
}
|
||||
return hasChanges;
|
||||
return !hasChanges;
|
||||
}
|
||||
|
||||
setTypings(typings: string[]): boolean {
|
||||
|
||||
@ -153,7 +153,8 @@ namespace ts.server {
|
||||
|
||||
class IOSession extends Session {
|
||||
constructor(host: ServerHost, cancellationToken: HostCancellationToken, useSingleInferredProject: boolean, logger: ts.server.Logger) {
|
||||
super(host, cancellationToken, useSingleInferredProject, Buffer.byteLength, maxUncompressedMessageSize, compress, process.hrtime, logger);
|
||||
// TODO: fixme
|
||||
super(host, cancellationToken, useSingleInferredProject, undefined, Buffer.byteLength, maxUncompressedMessageSize, compress, process.hrtime, logger);
|
||||
}
|
||||
|
||||
exit() {
|
||||
|
||||
@ -8,26 +8,12 @@ namespace ts.server {
|
||||
stack?: string;
|
||||
}
|
||||
|
||||
export interface CompressedData {
|
||||
length: number;
|
||||
compressionKind: string;
|
||||
data: any;
|
||||
}
|
||||
|
||||
function hrTimeToMilliseconds(time: number[]): number {
|
||||
const seconds = time[0];
|
||||
const nanoseconds = time[1];
|
||||
return ((1e9 * seconds) + nanoseconds) / 1000000.0;
|
||||
}
|
||||
|
||||
export interface ServerHost extends System {
|
||||
setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): any;
|
||||
clearTimeout(timeoutId: any): void;
|
||||
setImmediate(callback: (...args: any[]) => void, ...args: any[]): any;
|
||||
clearImmediate(timeoutId: any): void;
|
||||
writeCompressedData(prefix: string, data: CompressedData, suffix: string): void;
|
||||
}
|
||||
|
||||
interface FileStart {
|
||||
file: string;
|
||||
start: ILineInfo;
|
||||
@ -157,13 +143,14 @@ namespace ts.server {
|
||||
private host: ServerHost,
|
||||
cancellationToken: HostCancellationToken,
|
||||
useSingleInferredProject: boolean,
|
||||
typingsInstaller: ITypingsInstaller,
|
||||
private byteLength: (buf: string, encoding?: string) => number,
|
||||
private maxUncompressedMessageSize: number,
|
||||
private compress: (s: string) => CompressedData,
|
||||
private hrtime: (start?: number[]) => number[],
|
||||
protected logger: Logger) {
|
||||
this.projectService =
|
||||
new ProjectService(host, logger, cancellationToken, useSingleInferredProject, (eventName, project, fileName) => {
|
||||
new ProjectService(host, logger, cancellationToken, useSingleInferredProject, typingsInstaller, (eventName, project, fileName) => {
|
||||
this.handleEvent(eventName, project, fileName);
|
||||
});
|
||||
this.gcTimer = new GcTimer(host, /*delay*/ 15000, logger);
|
||||
|
||||
37
src/server/types.d.ts
vendored
Normal file
37
src/server/types.d.ts
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
declare namespace ts.server {
|
||||
export interface InstallTypingsRequest {
|
||||
readonly projectName: string;
|
||||
readonly fileNames: string[];
|
||||
readonly projectRootPath: ts.Path;
|
||||
readonly safeListPath: ts.Path;
|
||||
readonly packageNameToTypingLocation: ts.Map<string>;
|
||||
readonly typingOptions: ts.TypingOptions;
|
||||
readonly compilerOptions: ts.CompilerOptions;
|
||||
readonly cachePath: string;
|
||||
}
|
||||
|
||||
export interface CompressedData {
|
||||
length: number;
|
||||
compressionKind: string;
|
||||
data: any;
|
||||
}
|
||||
|
||||
export interface ServerHost extends System {
|
||||
setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): any;
|
||||
clearTimeout(timeoutId: any): void;
|
||||
setImmediate(callback: (...args: any[]) => void, ...args: any[]): any;
|
||||
clearImmediate(timeoutId: any): void;
|
||||
writeCompressedData(prefix: string, data: CompressedData, suffix: string): void;
|
||||
}
|
||||
|
||||
export interface InstallTypingsResponse {
|
||||
readonly projectName: string;
|
||||
readonly typingOptions: ts.TypingOptions;
|
||||
readonly compilerOptions: ts.CompilerOptions;
|
||||
readonly typings: string[];
|
||||
}
|
||||
|
||||
export interface InstallTypingHost extends JsTyping.TypingResolutionHost {
|
||||
writeFile(path: string, content: string): void;
|
||||
}
|
||||
}
|
||||
@ -5,6 +5,10 @@ namespace ts.server {
|
||||
enqueueInstallTypingsRequest(p: Project): void;
|
||||
}
|
||||
|
||||
export const nullTypingsInstaller: ITypingsInstaller = {
|
||||
enqueueInstallTypingsRequest: () => {}
|
||||
};
|
||||
|
||||
class TypingsCacheEntry {
|
||||
readonly typingOptions: TypingOptions;
|
||||
readonly compilerOptions: CompilerOptions;
|
||||
@ -19,8 +23,8 @@ namespace ts.server {
|
||||
return (<ConfiguredProject>proj).getTypingOptions();
|
||||
}
|
||||
|
||||
const enableAutoDiscovery =
|
||||
proj.projectKind === ProjectKind.Inferred &&
|
||||
const enableAutoDiscovery =
|
||||
proj.projectKind === ProjectKind.Inferred &&
|
||||
proj.getCompilerOptions().allowJs &&
|
||||
proj.getFileNames().every(f => fileExtensionIsAny(f, jsOrDts));
|
||||
|
||||
@ -35,7 +39,9 @@ namespace ts.server {
|
||||
if ((arr1 || emptyArray).length === 0 && (arr2 || emptyArray).length === 0) {
|
||||
return true;
|
||||
}
|
||||
/* tslint:disable:no-null-keyword */
|
||||
const set: Map<boolean> = Object.create(null);
|
||||
/* tslint:enable:no-null-keyword */
|
||||
let unique = 0;
|
||||
|
||||
for (const v of arr1) {
|
||||
@ -59,7 +65,7 @@ namespace ts.server {
|
||||
function typingOptionsChanged(opt1: TypingOptions, opt2: TypingOptions): boolean {
|
||||
return opt1.enableAutoDiscovery !== opt2.enableAutoDiscovery ||
|
||||
!setIsEqualTo(opt1.include, opt2.include) ||
|
||||
!setIsEqualTo(opt1.exclude, opt2.exclude);
|
||||
!setIsEqualTo(opt1.exclude, opt2.exclude);
|
||||
}
|
||||
|
||||
function compilerOptionsChanged(opt1: CompilerOptions, opt2: CompilerOptions): boolean {
|
||||
@ -76,7 +82,7 @@ namespace ts.server {
|
||||
getTypingsForProject(project: Project): Path[] {
|
||||
const typingOptions = getTypingOptionsForProjects(project);
|
||||
|
||||
if(!typingOptions.enableAutoDiscovery) {
|
||||
if (!typingOptions.enableAutoDiscovery) {
|
||||
return emptyArray;
|
||||
}
|
||||
|
||||
@ -84,7 +90,7 @@ namespace ts.server {
|
||||
if (!entry || typingOptionsChanged(typingOptions, entry.typingOptions) || compilerOptionsChanged(project.getCompilerOptions(), entry.compilerOptions)) {
|
||||
this.installer.enqueueInstallTypingsRequest(project);
|
||||
}
|
||||
return entry? entry.typings : emptyArray;
|
||||
return entry ? entry.typings : emptyArray;
|
||||
}
|
||||
|
||||
deleteTypingsForProject(project: Project) {
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
/// <reference path="typingsInstaller.ts"/>
|
||||
/// <reference types="node" />
|
||||
|
||||
namespace ts.server.typingsInstaller {
|
||||
export class NodeTypingsInstaller extends TypingsInstaller {
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
},
|
||||
"files": [
|
||||
"../../services/services.ts",
|
||||
"../utilities.ts",
|
||||
"../types.d.ts",
|
||||
"typingsInstaller.ts",
|
||||
"nodeTypingsInstaller.ts"
|
||||
]
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
/// <reference path="../../services/services.ts"/>
|
||||
/// <reference path="../utilities.ts"/>
|
||||
/// <reference path="../../services/JsTyping.ts"/>
|
||||
/// <reference path="../../services/shims.ts"/>
|
||||
/// <reference path="../types.d.ts"/>
|
||||
|
||||
namespace ts.server.typingsInstaller {
|
||||
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
/// <reference path="..\services\services.ts" />
|
||||
/// <reference path="types.d.ts" />
|
||||
|
||||
namespace ts.server {
|
||||
export enum LogLevel {
|
||||
@ -8,28 +9,6 @@ namespace ts.server {
|
||||
verbose
|
||||
}
|
||||
|
||||
export interface InstallTypingsRequest {
|
||||
readonly projectName: string;
|
||||
readonly fileNames: string[];
|
||||
readonly projectRootPath: ts.Path;
|
||||
readonly safeListPath: ts.Path;
|
||||
readonly packageNameToTypingLocation: ts.Map<string>;
|
||||
readonly typingOptions: ts.TypingOptions;
|
||||
readonly compilerOptions: ts.CompilerOptions;
|
||||
readonly cachePath: string;
|
||||
}
|
||||
|
||||
export interface InstallTypingsResponse {
|
||||
readonly projectName: string;
|
||||
readonly typingOptions: ts.TypingOptions;
|
||||
readonly compilerOptions: ts.CompilerOptions;
|
||||
readonly typings: string[];
|
||||
}
|
||||
|
||||
export interface InstallTypingHost extends JsTyping.TypingResolutionHost {
|
||||
writeFile(path: string, content: string): void;
|
||||
}
|
||||
|
||||
export interface Logger {
|
||||
close(): void;
|
||||
hasLevel(level: LogLevel): boolean;
|
||||
@ -145,7 +124,6 @@ namespace ts.server {
|
||||
};
|
||||
}
|
||||
function throwLanguageServiceIsDisabledError() {
|
||||
;
|
||||
throw new Error("LanguageService is disabled");
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user