Skip to content

Commit 8e93a49

Browse files
committed
Narrow exported session API, Unit tests for session API
1 parent 7664f34 commit 8e93a49

File tree

4 files changed

+505
-45
lines changed

4 files changed

+505
-45
lines changed

Jakefile.js

+1
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ var harnessSources = [
136136
"services/documentRegistry.ts",
137137
"services/preProcessFile.ts",
138138
"services/patternMatcher.ts",
139+
"session.ts",
139140
"versionCache.ts",
140141
"convertToBase64.ts",
141142
"transpile.ts"

src/harness/harness.ts

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ var Buffer: BufferConstructor = require('buffer').Buffer;
2929
// this will work in the browser via browserify
3030
var _chai: typeof chai = require('chai');
3131
var assert: typeof _chai.assert = _chai.assert;
32+
var expect: typeof _chai.expect = _chai.expect;
3233
declare var __dirname: string; // Node-specific
3334
var global = <any>Function("return this").call(null);
3435

src/server/session.ts

+45-45
Original file line numberDiff line numberDiff line change
@@ -109,13 +109,13 @@ namespace ts.server {
109109
}
110110

111111
export class Session {
112-
projectService: ProjectService;
113-
pendingOperation = false;
114-
fileHash: ts.Map<number> = {};
115-
nextFileId = 1;
116-
errorTimer: any; /*NodeJS.Timer | number*/
117-
immediateId: any;
118-
changeSeq = 0;
112+
protected projectService: ProjectService;
113+
private pendingOperation = false;
114+
private fileHash: ts.Map<number> = {};
115+
private nextFileId = 1;
116+
private errorTimer: any; /*NodeJS.Timer | number*/
117+
private immediateId: any;
118+
private changeSeq = 0;
119119

120120
constructor(
121121
private host: ServerHost,
@@ -129,15 +129,15 @@ namespace ts.server {
129129
});
130130
}
131131

132-
handleEvent(eventName: string, project: Project, fileName: string) {
132+
private handleEvent(eventName: string, project: Project, fileName: string) {
133133
if (eventName == "context") {
134134
this.projectService.log("got context event, updating diagnostics for" + fileName, "Info");
135135
this.updateErrorCheck([{ fileName, project }], this.changeSeq,
136136
(n) => n === this.changeSeq, 100);
137137
}
138138
}
139139

140-
logError(err: Error, cmd: string) {
140+
public logError(err: Error, cmd: string) {
141141
var typedErr = <StackTraceError>err;
142142
var msg = "Exception on executing command " + cmd;
143143
if (typedErr.message) {
@@ -149,11 +149,11 @@ namespace ts.server {
149149
this.projectService.log(msg);
150150
}
151151

152-
sendLineToClient(line: string) {
152+
private sendLineToClient(line: string) {
153153
this.host.write(line + this.host.newLine);
154154
}
155155

156-
send(msg: protocol.Message) {
156+
public send(msg: protocol.Message) {
157157
var json = JSON.stringify(msg);
158158
if (this.logger.isVerbose()) {
159159
this.logger.info(msg.type + ": " + json);
@@ -162,7 +162,7 @@ namespace ts.server {
162162
'\r\n\r\n' + json);
163163
}
164164

165-
event(info: any, eventName: string) {
165+
public event(info: any, eventName: string) {
166166
var ev: protocol.Event = {
167167
seq: 0,
168168
type: "event",
@@ -172,7 +172,7 @@ namespace ts.server {
172172
this.send(ev);
173173
}
174174

175-
response(info: any, cmdName: string, reqSeq = 0, errorMsg?: string) {
175+
private response(info: any, cmdName: string, reqSeq = 0, errorMsg?: string) {
176176
var res: protocol.Response = {
177177
seq: 0,
178178
type: "response",
@@ -189,11 +189,11 @@ namespace ts.server {
189189
this.send(res);
190190
}
191191

192-
output(body: any, commandName: string, requestSequence = 0, errorMessage?: string) {
192+
public output(body: any, commandName: string, requestSequence = 0, errorMessage?: string) {
193193
this.response(body, commandName, requestSequence, errorMessage);
194194
}
195195

196-
semanticCheck(file: string, project: Project) {
196+
private semanticCheck(file: string, project: Project) {
197197
try {
198198
var diags = project.compilerService.languageService.getSemanticDiagnostics(file);
199199

@@ -207,7 +207,7 @@ namespace ts.server {
207207
}
208208
}
209209

210-
syntacticCheck(file: string, project: Project) {
210+
private syntacticCheck(file: string, project: Project) {
211211
try {
212212
var diags = project.compilerService.languageService.getSyntacticDiagnostics(file);
213213
if (diags) {
@@ -220,20 +220,20 @@ namespace ts.server {
220220
}
221221
}
222222

223-
errorCheck(file: string, project: Project) {
223+
private errorCheck(file: string, project: Project) {
224224
this.syntacticCheck(file, project);
225225
this.semanticCheck(file, project);
226226
}
227227

228-
updateProjectStructure(seq: number, matchSeq: (seq: number) => boolean, ms = 1500) {
228+
private updateProjectStructure(seq: number, matchSeq: (seq: number) => boolean, ms = 1500) {
229229
setTimeout(() => {
230230
if (matchSeq(seq)) {
231231
this.projectService.updateProjectStructure();
232232
}
233233
}, ms);
234234
}
235235

236-
updateErrorCheck(checkList: PendingErrorCheck[], seq: number,
236+
private updateErrorCheck(checkList: PendingErrorCheck[], seq: number,
237237
matchSeq: (seq: number) => boolean, ms = 1500, followMs = 200) {
238238
if (followMs > ms) {
239239
followMs = ms;
@@ -269,7 +269,7 @@ namespace ts.server {
269269
}
270270
}
271271

272-
getDefinition(line: number, offset: number, fileName: string): protocol.FileSpan[] {
272+
private getDefinition(line: number, offset: number, fileName: string): protocol.FileSpan[] {
273273
var file = ts.normalizePath(fileName);
274274
var project = this.projectService.getProjectForFile(file);
275275
if (!project) {
@@ -291,7 +291,7 @@ namespace ts.server {
291291
}));
292292
}
293293

294-
getTypeDefinition(line: number, offset: number, fileName: string): protocol.FileSpan[] {
294+
private getTypeDefinition(line: number, offset: number, fileName: string): protocol.FileSpan[] {
295295
var file = ts.normalizePath(fileName);
296296
var project = this.projectService.getProjectForFile(file);
297297
if (!project) {
@@ -313,7 +313,7 @@ namespace ts.server {
313313
}));
314314
}
315315

316-
getOccurrences(line: number, offset: number, fileName: string): protocol.OccurrencesResponseItem[]{
316+
private getOccurrences(line: number, offset: number, fileName: string): protocol.OccurrencesResponseItem[]{
317317
fileName = ts.normalizePath(fileName);
318318
let project = this.projectService.getProjectForFile(fileName);
319319

@@ -343,7 +343,7 @@ namespace ts.server {
343343
});
344344
}
345345

346-
getProjectInfo(fileName: string, needFileNameList: boolean): protocol.ProjectInfo {
346+
private getProjectInfo(fileName: string, needFileNameList: boolean): protocol.ProjectInfo {
347347
fileName = ts.normalizePath(fileName)
348348
let project = this.projectService.getProjectForFile(fileName)
349349

@@ -358,7 +358,7 @@ namespace ts.server {
358358
return projectInfo;
359359
}
360360

361-
getRenameLocations(line: number, offset: number, fileName: string,findInComments: boolean, findInStrings: boolean): protocol.RenameResponseBody {
361+
private getRenameLocations(line: number, offset: number, fileName: string,findInComments: boolean, findInStrings: boolean): protocol.RenameResponseBody {
362362
var file = ts.normalizePath(fileName);
363363
var project = this.projectService.getProjectForFile(file);
364364
if (!project) {
@@ -426,7 +426,7 @@ namespace ts.server {
426426
return { info: renameInfo, locs: bakedRenameLocs };
427427
}
428428

429-
getReferences(line: number, offset: number, fileName: string): protocol.ReferencesResponseBody {
429+
private getReferences(line: number, offset: number, fileName: string): protocol.ReferencesResponseBody {
430430
// TODO: get all projects for this file; report refs for all projects deleting duplicates
431431
// can avoid duplicates by eliminating same ref file from subsequent projects
432432
var file = ts.normalizePath(fileName);
@@ -473,12 +473,12 @@ namespace ts.server {
473473
};
474474
}
475475

476-
openClientFile(fileName: string) {
476+
private openClientFile(fileName: string) {
477477
var file = ts.normalizePath(fileName);
478478
this.projectService.openClientFile(file);
479479
}
480480

481-
getQuickInfo(line: number, offset: number, fileName: string): protocol.QuickInfoResponseBody {
481+
private getQuickInfo(line: number, offset: number, fileName: string): protocol.QuickInfoResponseBody {
482482
var file = ts.normalizePath(fileName);
483483
var project = this.projectService.getProjectForFile(file);
484484
if (!project) {
@@ -504,7 +504,7 @@ namespace ts.server {
504504
};
505505
}
506506

507-
getFormattingEditsForRange(line: number, offset: number, endLine: number, endOffset: number, fileName: string): protocol.CodeEdit[] {
507+
private getFormattingEditsForRange(line: number, offset: number, endLine: number, endOffset: number, fileName: string): protocol.CodeEdit[] {
508508
var file = ts.normalizePath(fileName);
509509
var project = this.projectService.getProjectForFile(file);
510510
if (!project) {
@@ -531,7 +531,7 @@ namespace ts.server {
531531
});
532532
}
533533

534-
getFormattingEditsAfterKeystroke(line: number, offset: number, key: string, fileName: string): protocol.CodeEdit[] {
534+
private getFormattingEditsAfterKeystroke(line: number, offset: number, key: string, fileName: string): protocol.CodeEdit[] {
535535
var file = ts.normalizePath(fileName);
536536

537537
var project = this.projectService.getProjectForFile(file);
@@ -607,7 +607,7 @@ namespace ts.server {
607607
});
608608
}
609609

610-
getCompletions(line: number, offset: number, prefix: string, fileName: string): protocol.CompletionEntry[] {
610+
private getCompletions(line: number, offset: number, prefix: string, fileName: string): protocol.CompletionEntry[] {
611611
if (!prefix) {
612612
prefix = "";
613613
}
@@ -633,7 +633,7 @@ namespace ts.server {
633633
}, []).sort((a, b) => a.name.localeCompare(b.name));
634634
}
635635

636-
getCompletionEntryDetails(line: number, offset: number,
636+
private getCompletionEntryDetails(line: number, offset: number,
637637
entryNames: string[], fileName: string): protocol.CompletionEntryDetails[] {
638638
var file = ts.normalizePath(fileName);
639639
var project = this.projectService.getProjectForFile(file);
@@ -653,7 +653,7 @@ namespace ts.server {
653653
}, []);
654654
}
655655

656-
getSignatureHelpItems(line: number, offset: number, fileName: string): protocol.SignatureHelpItems {
656+
private getSignatureHelpItems(line: number, offset: number, fileName: string): protocol.SignatureHelpItems {
657657
var file = ts.normalizePath(fileName);
658658
var project = this.projectService.getProjectForFile(file);
659659
if (!project) {
@@ -682,7 +682,7 @@ namespace ts.server {
682682
return result;
683683
}
684684

685-
getDiagnostics(delay: number, fileNames: string[]) {
685+
private getDiagnostics(delay: number, fileNames: string[]) {
686686
var checkList = fileNames.reduce((accum: PendingErrorCheck[], fileName: string) => {
687687
fileName = ts.normalizePath(fileName);
688688
var project = this.projectService.getProjectForFile(fileName);
@@ -697,7 +697,7 @@ namespace ts.server {
697697
}
698698
}
699699

700-
change(line: number, offset: number, endLine: number, endOffset: number, insertString: string, fileName: string) {
700+
private change(line: number, offset: number, endLine: number, endOffset: number, insertString: string, fileName: string) {
701701
var file = ts.normalizePath(fileName);
702702
var project = this.projectService.getProjectForFile(file);
703703
if (project) {
@@ -712,7 +712,7 @@ namespace ts.server {
712712
}
713713
}
714714

715-
reload(fileName: string, tempFileName: string, reqSeq = 0) {
715+
private reload(fileName: string, tempFileName: string, reqSeq = 0) {
716716
var file = ts.normalizePath(fileName);
717717
var tmpfile = ts.normalizePath(tempFileName);
718718
var project = this.projectService.getProjectForFile(file);
@@ -725,7 +725,7 @@ namespace ts.server {
725725
}
726726
}
727727

728-
saveToTmp(fileName: string, tempFileName: string) {
728+
private saveToTmp(fileName: string, tempFileName: string) {
729729
var file = ts.normalizePath(fileName);
730730
var tmpfile = ts.normalizePath(tempFileName);
731731

@@ -735,12 +735,12 @@ namespace ts.server {
735735
}
736736
}
737737

738-
closeClientFile(fileName: string) {
738+
private closeClientFile(fileName: string) {
739739
var file = ts.normalizePath(fileName);
740740
this.projectService.closeClientFile(file);
741741
}
742742

743-
decorateNavigationBarItem(project: Project, fileName: string, items: ts.NavigationBarItem[]): protocol.NavigationBarItem[] {
743+
private decorateNavigationBarItem(project: Project, fileName: string, items: ts.NavigationBarItem[]): protocol.NavigationBarItem[] {
744744
if (!items) {
745745
return undefined;
746746
}
@@ -759,7 +759,7 @@ namespace ts.server {
759759
}));
760760
}
761761

762-
getNavigationBarItems(fileName: string): protocol.NavigationBarItem[] {
762+
private getNavigationBarItems(fileName: string): protocol.NavigationBarItem[] {
763763
var file = ts.normalizePath(fileName);
764764
var project = this.projectService.getProjectForFile(file);
765765
if (!project) {
@@ -775,7 +775,7 @@ namespace ts.server {
775775
return this.decorateNavigationBarItem(project, fileName, items);
776776
}
777777

778-
getNavigateToItems(searchValue: string, fileName: string, maxResultCount?: number): protocol.NavtoItem[] {
778+
private getNavigateToItems(searchValue: string, fileName: string, maxResultCount?: number): protocol.NavtoItem[] {
779779
var file = ts.normalizePath(fileName);
780780
var project = this.projectService.getProjectForFile(file);
781781
if (!project) {
@@ -814,7 +814,7 @@ namespace ts.server {
814814
});
815815
}
816816

817-
getBraceMatching(line: number, offset: number, fileName: string): protocol.TextSpan[] {
817+
private getBraceMatching(line: number, offset: number, fileName: string): protocol.TextSpan[] {
818818
var file = ts.normalizePath(fileName);
819819

820820
var project = this.projectService.getProjectForFile(file);
@@ -836,7 +836,7 @@ namespace ts.server {
836836
}));
837837
}
838838

839-
exit() {
839+
public exit() {
840840
}
841841

842842
private handlers : Map<(request: protocol.Request) => {response?: any, responseRequired?: boolean}> = {
@@ -942,14 +942,14 @@ namespace ts.server {
942942
return {response: this.getProjectInfo(file, needFileNameList)};
943943
},
944944
};
945-
addProtocolHandler(command: string, handler: (request: protocol.Request) => {response?: any, responseRequired: boolean}) {
945+
public addProtocolHandler(command: string, handler: (request: protocol.Request) => {response?: any, responseRequired: boolean}) {
946946
if (this.handlers[command]) {
947947
throw new Error(`Protocol handler already exists for command "${command}"`);
948948
}
949949
this.handlers[command] = handler;
950950
}
951951

952-
executeCommand(request: protocol.Request) : {response?: any, responseRequired?: boolean} {
952+
public executeCommand(request: protocol.Request) : {response?: any, responseRequired?: boolean} {
953953
var handler = this.handlers[request.command];
954954
if (handler) {
955955
return handler(request);
@@ -960,7 +960,7 @@ namespace ts.server {
960960
}
961961
}
962962

963-
onMessage(message: string) {
963+
public onMessage(message: string) {
964964
if (this.logger.isVerbose()) {
965965
this.logger.info("request: " + message);
966966
var start = this.hrtime();

0 commit comments

Comments
 (0)