Skip to content

Commit 5bb204e

Browse files
authored
Remove webServer (#51699)
* Remove webServer First draft; I may move some things around to be more readable. * Refactor moved code 1. Move StartSessionOptions to common next to where it's first used. 2. Inline single-use BaseLogger base class into its only child class, Logger. 3. Start using direct imports, eg `import {} from './common'`. I hope this is OK?! * Fix lint * move imports back to namespace import * hereby tsserver: remove exportIsTsObject
1 parent c124d0e commit 5bb204e

File tree

18 files changed

+69
-883
lines changed

18 files changed

+69
-883
lines changed

Herebyfile.mjs

-5
Original file line numberDiff line numberDiff line change
@@ -416,11 +416,6 @@ const { main: tsserver, watch: watchTsserver } = entrypointBuildTask({
416416
builtEntrypoint: "./built/local/tsserver/server.js",
417417
output: "./built/local/tsserver.js",
418418
mainDeps: [generateLibs],
419-
// Even though this seems like an exectuable, so could be the default CJS,
420-
// this is used in the browser too. Do the same thing that we do for our
421-
// libraries and generate an IIFE with name `ts`, as to not pollute the global
422-
// scope.
423-
bundlerOptions: { exportIsTsObject: true },
424419
});
425420
export { tsserver, watchTsserver };
426421

src/testRunner/_namespaces/ts.server.ts

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
export * from "../../jsTyping/_namespaces/ts.server";
44
export * from "../../server/_namespaces/ts.server";
5-
export * from "../../webServer/_namespaces/ts.server";
65
export * from "../../typingsInstallerCore/_namespaces/ts.server";
76
export * from "../../harness/_namespaces/ts.server";
87
export * from "../../loggedIO/_namespaces/ts.server";

src/testRunner/_namespaces/ts.ts

-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ export * from "../../executeCommandLine/_namespaces/ts";
55
export * from "../../services/_namespaces/ts";
66
export * from "../../jsTyping/_namespaces/ts";
77
export * from "../../server/_namespaces/ts";
8-
export * from "../../webServer/_namespaces/ts";
98
export * from "../../typingsInstallerCore/_namespaces/ts";
109
export * from "../../deprecatedCompat/_namespaces/ts";
1110
export * from "../../harness/_namespaces/ts";

src/testRunner/tests.ts

-1
Original file line numberDiff line numberDiff line change
@@ -185,5 +185,4 @@ import "./unittests/tsserver/typeReferenceDirectives";
185185
import "./unittests/tsserver/typingsInstaller";
186186
import "./unittests/tsserver/versionCache";
187187
import "./unittests/tsserver/watchEnvironment";
188-
import "./unittests/tsserver/webServer";
189188
import "./unittests/debugDeprecation";

src/testRunner/tsconfig.json

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
{ "path": "../services" },
1212
{ "path": "../jsTyping" },
1313
{ "path": "../server" },
14-
{ "path": "../webServer" },
1514
{ "path": "../typingsInstallerCore" },
1615
{ "path": "../deprecatedCompat" },
1716
{ "path": "../harness" },

src/testRunner/unittests/tsserver/webServer.ts

-372
This file was deleted.

src/tsconfig.json

-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,5 @@
1919
{ "path": "./typingsInstaller" },
2020
{ "path": "./typingsInstallerCore" },
2121
{ "path": "./watchGuard" },
22-
{ "path": "./webServer" },
2322
]
2423
}

src/tsserver/_namespaces/ts.server.ts

-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,5 @@
22

33
export * from "../../jsTyping/_namespaces/ts.server";
44
export * from "../../server/_namespaces/ts.server";
5-
export * from "../../webServer/_namespaces/ts.server";
65
export * from "../nodeServer";
7-
export * from "../webServer";
86
export * from "../common";

src/tsserver/_namespaces/ts.ts

-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,5 @@ export * from "../../compiler/_namespaces/ts";
44
export * from "../../services/_namespaces/ts";
55
export * from "../../jsTyping/_namespaces/ts";
66
export * from "../../server/_namespaces/ts";
7-
export * from "../../webServer/_namespaces/ts";
87
import * as server from "./ts.server";
98
export { server };

src/tsserver/common.ts

+14-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {
22
Logger,
33
LogLevel,
44
ServerCancellationToken,
5-
StartSessionOptions,
5+
SessionOptions,
66
} from "./_namespaces/ts.server";
77
import { LanguageServiceMode } from "./_namespaces/ts";
88

@@ -19,6 +19,19 @@ export function getLogLevel(level: string | undefined) {
1919
return undefined;
2020
}
2121

22+
/** @internal */
23+
export interface StartSessionOptions {
24+
globalPlugins: SessionOptions["globalPlugins"];
25+
pluginProbeLocations: SessionOptions["pluginProbeLocations"];
26+
allowLocalPluginLoads: SessionOptions["allowLocalPluginLoads"];
27+
useSingleInferredProject: SessionOptions["useSingleInferredProject"];
28+
useInferredProjectPerProjectRoot: SessionOptions["useInferredProjectPerProjectRoot"];
29+
suppressDiagnosticEvents: SessionOptions["suppressDiagnosticEvents"];
30+
noGetErrOnBackgroundUpdate: SessionOptions["noGetErrOnBackgroundUpdate"];
31+
syntaxOnly: SessionOptions["syntaxOnly"];
32+
serverMode: SessionOptions["serverMode"];
33+
}
34+
2235
/** @internal */
2336
export interface StartInput {
2437
args: readonly string[];

src/tsserver/nodeServer.ts

+54-10
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import {
55
ActionPackageInstalled,
66
ActionSet,
77
Arguments,
8-
BaseLogger,
98
BeginInstallTypes,
109
createInstallTypingsRequest,
1110
EndInstallTypes,
@@ -27,6 +26,7 @@ import {
2726
LogLevel,
2827
ModuleImportResult,
2928
Msg,
29+
nowString,
3030
nullCancellationToken,
3131
nullTypingsInstaller,
3232
PackageInstalledResponse,
@@ -65,6 +65,7 @@ import {
6565
noopFileWatcher,
6666
normalizePath,
6767
normalizeSlashes,
68+
perfLogger,
6869
resolveJSModule,
6970
SortedReadonlyArray,
7071
startTracing,
@@ -205,14 +206,16 @@ export function initializeNodeSystem(): StartInput {
205206
stat(path: string, callback?: (err: NodeJS.ErrnoException, stats: Stats) => any): void;
206207
} = require("fs");
207208

208-
class Logger extends BaseLogger {
209+
class Logger implements Logger {
210+
private seq = 0;
211+
private inGroup = false;
212+
private firstInGroup = true;
209213
private fd = -1;
210214
constructor(
211215
private readonly logFilename: string,
212216
private readonly traceToConsole: boolean,
213-
level: LogLevel
217+
private readonly level: LogLevel
214218
) {
215-
super(level);
216219
if (this.logFilename) {
217220
try {
218221
this.fd = fs.openSync(this.logFilename, "w");
@@ -222,25 +225,67 @@ export function initializeNodeSystem(): StartInput {
222225
}
223226
}
224227
}
225-
228+
static padStringRight(str: string, padding: string) {
229+
return (str + padding).slice(0, padding.length);
230+
}
226231
close() {
227232
if (this.fd >= 0) {
228233
fs.close(this.fd, noop);
229234
}
230235
}
231-
232-
getLogFileName() {
236+
getLogFileName(): string | undefined {
233237
return this.logFilename;
234238
}
235-
239+
perftrc(s: string) {
240+
this.msg(s, Msg.Perf);
241+
}
242+
info(s: string) {
243+
this.msg(s, Msg.Info);
244+
}
245+
err(s: string) {
246+
this.msg(s, Msg.Err);
247+
}
248+
startGroup() {
249+
this.inGroup = true;
250+
this.firstInGroup = true;
251+
}
252+
endGroup() {
253+
this.inGroup = false;
254+
}
236255
loggingEnabled() {
237256
return !!this.logFilename || this.traceToConsole;
238257
}
258+
hasLevel(level: LogLevel) {
259+
return this.loggingEnabled() && this.level >= level;
260+
}
261+
msg(s: string, type: Msg = Msg.Err) {
262+
switch (type) {
263+
case Msg.Info:
264+
perfLogger.logInfoEvent(s);
265+
break;
266+
case Msg.Perf:
267+
perfLogger.logPerfEvent(s);
268+
break;
269+
default: // Msg.Err
270+
perfLogger.logErrEvent(s);
271+
break;
272+
}
273+
274+
if (!this.canWrite()) return;
239275

276+
s = `[${nowString()}] ${s}\n`;
277+
if (!this.inGroup || this.firstInGroup) {
278+
const prefix = Logger.padStringRight(type + " " + this.seq.toString(), " ");
279+
s = prefix + s;
280+
}
281+
this.write(s, type);
282+
if (!this.inGroup) {
283+
this.seq++;
284+
}
285+
}
240286
protected canWrite() {
241287
return this.fd >= 0 || this.traceToConsole;
242288
}
243-
244289
protected write(s: string, _type: Msg) {
245290
if (this.fd >= 0) {
246291
const buf = sys.bufferFrom!(s);
@@ -463,7 +508,6 @@ function parseEventPort(eventPortStr: string | undefined) {
463508
const eventPort = eventPortStr === undefined ? undefined : parseInt(eventPortStr);
464509
return eventPort !== undefined && !isNaN(eventPort) ? eventPort : undefined;
465510
}
466-
467511
function startNodeSession(options: StartSessionOptions, logger: Logger, cancellationToken: ServerCancellationToken) {
468512
const childProcess: {
469513
fork(modulePath: string, args: string[], options?: { execArgv: string[], env?: MapLike<string> }): NodeChildProcess;

src/tsserver/server.ts

+1-16
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import {
33
findArgument,
44
hasArgument,
55
initializeNodeSystem,
6-
initializeWebSystem,
76
Msg,
87
StartInput,
98
} from "./_namespaces/ts.server";
@@ -17,8 +16,6 @@ import {
1716

1817
export * from "./_namespaces/ts";
1918

20-
declare const addEventListener: any;
21-
declare const removeEventListener: any;
2219
function findArgumentStringArray(argName: string): readonly string[] {
2320
const arg = findArgument(argName);
2421
if (arg === undefined) {
@@ -73,16 +70,4 @@ function start({ args, logger, cancellationToken, serverMode, unknownServerMode,
7370
}
7471

7572
setStackTraceLimit();
76-
// Cannot check process var directory in webworker so has to be typeof check here
77-
if (typeof process !== "undefined") {
78-
start(initializeNodeSystem(), require("os").platform());
79-
}
80-
else {
81-
// Get args from first message
82-
const listener = (e: any) => {
83-
removeEventListener("message", listener);
84-
const args = e.data;
85-
start(initializeWebSystem(args), "web");
86-
};
87-
addEventListener("message", listener);
88-
}
73+
start(initializeNodeSystem(), require("os").platform());

src/tsserver/tsconfig.json

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
{ "path": "../services" },
1212
{ "path": "../jsTyping" },
1313
{ "path": "../server" },
14-
{ "path": "../webServer" }
1514
],
1615
"include": ["**/*"]
1716
}

0 commit comments

Comments
 (0)