Skip to content

Commit c884fee

Browse files
committed
Remove dependncy on NodeJs from editor services
1 parent c9ab20c commit c884fee

7 files changed

Lines changed: 31 additions & 8 deletions

File tree

src/harness/harnessLanguageService.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -641,6 +641,14 @@ namespace Harness.LanguageService {
641641

642642
startGroup(): void {
643643
}
644+
645+
setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): any {
646+
return setTimeout(callback, ms, args);
647+
}
648+
649+
clearTimeout(timeoutId: any): void {
650+
clearTimeout(timeoutId);
651+
}
644652
}
645653

646654
export class ServerLanguageServiceAdapter implements LanguageServiceAdapter {

src/server/editorServices.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -533,7 +533,7 @@ namespace ts.server {
533533
// number becomes 0 for a watcher, then we should close it.
534534
directoryWatchersRefCount: ts.Map<number> = {};
535535
hostConfiguration: HostConfiguration;
536-
timerForDetectingProjectFileListChanges: Map<NodeJS.Timer> = {};
536+
timerForDetectingProjectFileListChanges: Map<any> = {};
537537

538538
constructor(public host: ServerHost, public psLogger: Logger, public eventHandler?: ProjectServiceEventHandler) {
539539
// ts.disableIncrementalParsing = true;
@@ -593,9 +593,9 @@ namespace ts.server {
593593

594594
startTimerForDetectingProjectFileListChanges(project: Project) {
595595
if (this.timerForDetectingProjectFileListChanges[project.projectFilename]) {
596-
clearTimeout(this.timerForDetectingProjectFileListChanges[project.projectFilename]);
596+
this.host.clearTimeout(this.timerForDetectingProjectFileListChanges[project.projectFilename]);
597597
}
598-
this.timerForDetectingProjectFileListChanges[project.projectFilename] = setTimeout(
598+
this.timerForDetectingProjectFileListChanges[project.projectFilename] = this.host.setTimeout(
599599
() => this.handleProjectFileListChanges(project),
600600
250
601601
);

src/server/server.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -266,16 +266,21 @@ namespace ts.server {
266266
}
267267
}
268268

269+
const sys = <ServerHost>ts.sys;
270+
269271
// Override sys.write because fs.writeSync is not reliable on Node 4
270-
ts.sys.write = (s: string) => writeMessage(s);
271-
ts.sys.watchFile = (fileName, callback) => {
272+
sys.write = (s: string) => writeMessage(s);
273+
sys.watchFile = (fileName, callback) => {
272274
const watchedFile = pollingWatchedFileSet.addFile(fileName, callback);
273275
return {
274276
close: () => pollingWatchedFileSet.removeFile(watchedFile)
275277
};
276278
};
277279

278-
const ioSession = new IOSession(ts.sys, logger);
280+
sys.setTimeout = setTimeout;
281+
sys.clearTimeout = clearTimeout;
282+
283+
const ioSession = new IOSession(sys, logger);
279284
process.on("uncaughtException", function(err: Error) {
280285
ioSession.logError(err, "unknown");
281286
});

src/server/session.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ namespace ts.server {
133133
}
134134

135135
export interface ServerHost extends ts.System {
136+
setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): any;
137+
clearTimeout(timeoutId: any): void;
136138
}
137139

138140
export class Session {

tests/cases/unittests/cachingInServerLSHost.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,12 @@ module ts {
6060
return {
6161
close: () => { }
6262
}
63+
},
64+
setTimeout: (callback, ms, ...args) => {
65+
return setTimeout(callback, ms, args);
66+
},
67+
clearTimeout: (timeoutId) => {
68+
clearTimeout(timeoutId);
6369
}
6470
};
6571
}

tests/cases/unittests/session.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ namespace ts.server {
1818
getExecutingFilePath(): string { return void 0; },
1919
getCurrentDirectory(): string { return void 0; },
2020
readDirectory(): string[] { return []; },
21-
exit(): void {}
21+
exit(): void { },
22+
setTimeout(callback, ms, ...args) { return 0; },
23+
clearTimeout(timeoutId) { }
2224
};
2325
const mockLogger: Logger = {
2426
close(): void {},

tests/cases/unittests/versionCache.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ and grew 1cm per day`;
271271
});
272272

273273
it("Edit ScriptVersionCache ", () => {
274-
let svc = server.ScriptVersionCache.fromString(ts.sys, testContent);
274+
let svc = server.ScriptVersionCache.fromString(<server.ServerHost>ts.sys, testContent);
275275
let checkText = testContent;
276276

277277
for (let i = 0; i < iterationCount; i++) {

0 commit comments

Comments
 (0)