Skip to content
This repository was archived by the owner on Oct 16, 2020. It is now read-only.

Commit ef0beff

Browse files
committed
style: use prettier
1 parent 5fb0b73 commit ef0beff

33 files changed

+3725
-2759
lines changed

README.md

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
# JavaScript/TypeScript language server
22

33
[![npm](https://img.shields.io/npm/v/javascript-typescript-langserver.svg)](https://www.npmjs.com/package/javascript-typescript-langserver)
4-
[![npm](https://img.shields.io/npm/dm/javascript-typescript-langserver.svg)](https://www.npmjs.com/package/javascript-typescript-langserver)
5-
[![Build Status](https://travis-ci.org/sourcegraph/javascript-typescript-langserver.svg?branch=master)](https://travis-ci.org/sourcegraph/javascript-typescript-langserver)
6-
[![Windows Build Status](https://ci.appveyor.com/api/projects/status/2wj7xe035pm7r76v/branch/master?svg=true
4+
[![downloads](https://img.shields.io/npm/dm/javascript-typescript-langserver.svg)](https://www.npmjs.com/package/javascript-typescript-langserver)
5+
[![build](https://travis-ci.org/sourcegraph/javascript-typescript-langserver.svg?branch=master)](https://travis-ci.org/sourcegraph/javascript-typescript-langserver)
6+
[![appveyor build](https://ci.appveyor.com/api/projects/status/2wj7xe035pm7r76v/branch/master?svg=true
77
)](https://ci.appveyor.com/project/sourcegraph/javascript-typescript-langserver/branch/master)
88
[![codecov](https://codecov.io/gh/sourcegraph/javascript-typescript-langserver/branch/master/graph/badge.svg)](https://codecov.io/gh/sourcegraph/javascript-typescript-langserver)
9-
[![Dependencies](https://david-dm.org/sourcegraph/javascript-typescript-langserver.svg)](https://david-dm.org/sourcegraph/javascript-typescript-langserver)
9+
[![dependencies](https://david-dm.org/sourcegraph/javascript-typescript-langserver.svg)](https://david-dm.org/sourcegraph/javascript-typescript-langserver)
10+
[![OpenTracing: enabled](https://img.shields.io/badge/OpenTracing-enabled-blue.svg)](http://opentracing.io)
1011
[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)
11-
[![OpenTracing Badge](https://img.shields.io/badge/OpenTracing-enabled-blue.svg)](http://opentracing.io)
12-
[![License](https://img.shields.io/github/license/sourcegraph/javascript-typescript-langserver.svg)]()
13-
[![Gitter](https://badges.gitter.im/sourcegraph/javascript-typescript-langserver.svg)](https://gitter.im/sourcegraph/javascript-typescript-langserver?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
12+
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)
13+
[![license](https://img.shields.io/github/license/sourcegraph/javascript-typescript-langserver.svg)]()
14+
[![chat: on gitter](https://badges.gitter.im/sourcegraph/javascript-typescript-langserver.svg)](https://gitter.im/sourcegraph/javascript-typescript-langserver?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
1415

1516
This is a language server for JavaScript and TypeScript that adheres to the [Language Server Protocol (LSP)](https://github.com/Microsoft/language-server-protocol/blob/master/protocol.md). It uses [TypeScript's](http://www.typescriptlang.org/) LanguageService to perform source code analysis.
1617

@@ -76,15 +77,15 @@ npm test
7677

7778
This language server implements some LSP extensions, prefixed with an `x`.
7879

79-
- **[Files extension](https://github.com/sourcegraph/language-server-protocol/blob/master/extension-files.md)**
80+
- **[Files extension](https://github.com/sourcegraph/language-server-protocol/blob/master/extension-files.md)**
8081
Allows the server to request file contents without accessing the file system
81-
- **[SymbolDescriptor extension](https://github.com/sourcegraph/language-server-protocol/blob/master/extension-workspace-references.md)**
82+
- **[SymbolDescriptor extension](https://github.com/sourcegraph/language-server-protocol/blob/master/extension-workspace-references.md)**
8283
Get a SymbolDescriptor for a symbol, search the workspace for symbols or references to it
83-
- **[Streaming](https://github.com/sourcegraph/language-server-protocol/blob/streaming/protocol.md#partialResult)**
84+
- **[Streaming](https://github.com/sourcegraph/language-server-protocol/blob/streaming/protocol.md#partialResult)**
8485
Supports streaming partial results for all endpoints through JSON Patches
85-
- **Packages extension**
86+
- **Packages extension**
8687
Methods to get information about dependencies
87-
- **TCP / multiple client support**
88+
- **TCP / multiple client support**
8889
When running over TCP, the `exit` notification will not kill the process, but close the TCP socket
8990

9091
## Versioning

package.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@
2727
"clean": "rimraf lib",
2828
"cover": "nyc --silent --all --require source-map-support/register mocha --timeout 7000 --slow 2000 lib/test/**/*.js",
2929
"test": "mocha --require source-map-support/register --timeout 7000 --slow 2000 lib/test/**/*.js",
30-
"lint": "tslint -c tslint.json -p .",
30+
"lint": "npm run tslint && npm run prettier",
31+
"tslint": "tslint -c tslint.json -p .",
32+
"prettier": "prettier --list-different --write \"src/**/*.ts\"",
3133
"build": "tsc",
3234
"watch": "tsc -w",
3335
"semantic-release": "semantic-release pre && npm publish && semantic-release post",
@@ -55,8 +57,9 @@
5557
"vscode-languageserver-types": "^3.0.3"
5658
},
5759
"devDependencies": {
60+
"@sourcegraph/prettierrc": "^1.1.0",
5861
"@sourcegraph/tsconfig": "^1.0.0",
59-
"@sourcegraph/tslint-config": "^6.0.0",
62+
"@sourcegraph/tslint-config": "^7.0.0",
6063
"@types/chai": "^4.0.0",
6164
"@types/chai-as-promised": "^7.1.0",
6265
"@types/glob": "^5.0.30",
@@ -73,12 +76,13 @@
7376
"husky": "^0.14.0",
7477
"mocha": "^4.0.0",
7578
"nyc": "^11.0.2",
79+
"prettier": "^1.7.4",
7680
"rimraf": "^2.6.1",
7781
"semantic-release": "^8.0.0",
7882
"sinon": "^4.0.0",
7983
"source-map-support": "^0.5.0",
8084
"temp": "^0.8.3",
81-
"tslint": "^5.7.0",
85+
"tslint": "^5.8.0",
8286
"tslint-language-service": "^0.9.6",
8387
"validate-commit-msg": "^2.12.2"
8488
},

prettier.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = require('@sourcegraph/prettierrc')

src/ast.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
21
import * as ts from 'typescript'
32

43
/**
54
* Returns a Generator that walks most of the AST (the part that matters for gathering all references) and emits Nodes
65
*
76
* TODO is this function worth it?
87
*/
9-
export function *walkMostAST(node: ts.Node): IterableIterator<ts.Node> {
8+
export function* walkMostAST(node: ts.Node): IterableIterator<ts.Node> {
109
yield node
1110
const children = node.getChildren()
1211
for (const child of children) {

src/connection.ts

Lines changed: 47 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,20 @@ import { camelCase, omit } from 'lodash'
44
import { FORMAT_TEXT_MAP, SpanContext, Tracer } from 'opentracing'
55
import { Observable, Subscription, Symbol } from 'rxjs'
66
import { inspect } from 'util'
7-
import { ErrorCodes, Message, StreamMessageReader as VSCodeStreamMessageReader, StreamMessageWriter as VSCodeStreamMessageWriter } from 'vscode-jsonrpc'
8-
import { isNotificationMessage, isRequestMessage, isResponseMessage, NotificationMessage, RequestMessage, ResponseMessage } from 'vscode-jsonrpc/lib/messages'
7+
import {
8+
ErrorCodes,
9+
Message,
10+
StreamMessageReader as VSCodeStreamMessageReader,
11+
StreamMessageWriter as VSCodeStreamMessageWriter,
12+
} from 'vscode-jsonrpc'
13+
import {
14+
isNotificationMessage,
15+
isRequestMessage,
16+
isResponseMessage,
17+
NotificationMessage,
18+
RequestMessage,
19+
ResponseMessage,
20+
} from 'vscode-jsonrpc/lib/messages'
921
import { Logger, NoopLogger } from './logging'
1022
import { InitializeParams, PartialResultParams } from './request-type'
1123
import { TypeScriptService } from './typescript-service'
@@ -21,7 +33,12 @@ export interface HasMeta {
2133
* Returns true if the passed argument has a meta field
2234
*/
2335
function hasMeta(candidate: any): candidate is HasMeta {
24-
return typeof candidate === 'object' && candidate !== null && typeof candidate.meta === 'object' && candidate.meta !== null
36+
return (
37+
typeof candidate === 'object' &&
38+
candidate !== null &&
39+
typeof candidate.meta === 'object' &&
40+
candidate.meta !== null
41+
)
2542
}
2643

2744
/**
@@ -51,7 +68,6 @@ export interface MessageLogOptions {
5168
* In opposite to StreamMessageReader, supports multiple listeners and is compatible with Observables
5269
*/
5370
export class MessageEmitter extends EventEmitter {
54-
5571
constructor(input: NodeJS.ReadableStream, options: MessageLogOptions = {}) {
5672
super()
5773
const reader = new VSCodeStreamMessageReader(input)
@@ -104,7 +120,6 @@ export class MessageEmitter extends EventEmitter {
104120
* consistent event API
105121
*/
106122
export class MessageWriter {
107-
108123
private logger: Logger
109124
private logMessages: boolean
110125
private vscodeWriter: VSCodeStreamMessageWriter
@@ -134,7 +149,6 @@ export class MessageWriter {
134149
}
135150

136151
export interface RegisterLanguageHandlerOptions {
137-
138152
logger?: Logger
139153

140154
/** An opentracing-compatible tracer */
@@ -154,7 +168,6 @@ export function registerLanguageHandler(
154168
handler: TypeScriptService,
155169
options: RegisterLanguageHandlerOptions = {}
156170
): void {
157-
158171
const logger = options.logger || new NoopLogger()
159172
const tracer = options.tracer || new Tracer()
160173

@@ -282,30 +295,33 @@ export function registerLanguageHandler(
282295
subscriptions.delete(message.id)
283296
})
284297
})
285-
.subscribe(result => {
286-
// Send final result
287-
messageWriter.write({
288-
jsonrpc: '2.0',
289-
id: message.id,
290-
result,
291-
})
292-
}, err => {
293-
// Set error on span
294-
span.setTag('error', true)
295-
span.log({ 'event': 'error', 'error.object': err, 'message': err.message, 'stack': err.stack })
296-
// Log error
297-
logger.error(`Handler for ${message.method} failed:`, err, '\nMessage:', message)
298-
// Send error response
299-
messageWriter.write({
300-
jsonrpc: '2.0',
301-
id: message.id,
302-
error: {
303-
message: err.message + '',
304-
code: typeof err.code === 'number' ? err.code : ErrorCodes.UnknownErrorCode,
305-
data: omit(err, ['message', 'code']),
306-
},
307-
})
308-
})
298+
.subscribe(
299+
result => {
300+
// Send final result
301+
messageWriter.write({
302+
jsonrpc: '2.0',
303+
id: message.id,
304+
result,
305+
})
306+
},
307+
err => {
308+
// Set error on span
309+
span.setTag('error', true)
310+
span.log({ event: 'error', 'error.object': err, message: err.message, stack: err.stack })
311+
// Log error
312+
logger.error(`Handler for ${message.method} failed:`, err, '\nMessage:', message)
313+
// Send error response
314+
messageWriter.write({
315+
jsonrpc: '2.0',
316+
id: message.id,
317+
error: {
318+
message: err.message + '',
319+
code: typeof err.code === 'number' ? err.code : ErrorCodes.UnknownErrorCode,
320+
data: omit(err, ['message', 'code']),
321+
},
322+
})
323+
}
324+
)
309325
// Save subscription for $/cancelRequest
310326
subscriptions.set(message.id, subscription)
311327
} else {

src/diagnostics.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { Diagnostic, DiagnosticSeverity, Range } from 'vscode-languageserver'
66
*/
77
export function convertTsDiagnostic(diagnostic: ts.Diagnostic): Diagnostic {
88
const text = ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n')
9-
let range: Range = { start: {character: 0, line: 0}, end: {character: 0, line: 0} }
9+
let range: Range = { start: { character: 0, line: 0 }, end: { character: 0, line: 0 } }
1010
if (diagnostic.file && diagnostic.start && diagnostic.length) {
1111
range = {
1212
start: diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start),
@@ -35,6 +35,6 @@ function convertDiagnosticCategory(category: ts.DiagnosticCategory): DiagnosticS
3535
return DiagnosticSeverity.Warning
3636
case ts.DiagnosticCategory.Message:
3737
return DiagnosticSeverity.Information
38-
// unmapped: DiagnosticSeverity.Hint
38+
// unmapped: DiagnosticSeverity.Hint
3939
}
4040
}

src/disposable.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
/**
32
* Interface for objects to perform actions if they are not needed anymore
43
*/

src/fs.ts

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@ export interface FileSystem {
2727
}
2828

2929
export class RemoteFileSystem implements FileSystem {
30-
3130
constructor(private client: LanguageClient) {}
3231

3332
/**
3433
* The files request is sent from the server to the client to request a list of all files in the workspace or inside the directory of the base parameter, if given.
3534
* A language server can use the result to index files by filtering and doing a content request for each text document of interest.
3635
*/
3736
public getWorkspaceFiles(base?: string, childOf = new Span()): Observable<string> {
38-
return this.client.workspaceXfiles({ base }, childOf)
37+
return this.client
38+
.workspaceXfiles({ base }, childOf)
3939
.mergeMap(textDocuments => textDocuments)
4040
.map(textDocument => normalizeUri(textDocument.uri))
4141
}
@@ -46,13 +46,13 @@ export class RemoteFileSystem implements FileSystem {
4646
* directly.
4747
*/
4848
public getTextDocumentContent(uri: string, childOf = new Span()): Observable<string> {
49-
return this.client.textDocumentXcontent({ textDocument: { uri } }, childOf)
49+
return this.client
50+
.textDocumentXcontent({ textDocument: { uri } }, childOf)
5051
.map(textDocument => textDocument.text)
5152
}
5253
}
5354

5455
export class LocalFileSystem implements FileSystem {
55-
5656
/**
5757
* @param rootUri The root URI that is used if `base` is not specified
5858
*/
@@ -104,7 +104,6 @@ export class LocalFileSystem implements FileSystem {
104104
* TODO: Implement Disposable with Disposer
105105
*/
106106
export class FileSystemUpdater {
107-
108107
/**
109108
* Observable for a pending or completed structure fetch
110109
*/
@@ -133,12 +132,15 @@ export class FileSystemUpdater {
133132
// Limit concurrent fetches
134133
const observable = Observable.fromPromise(this.concurrencyLimit.wait())
135134
.mergeMap(() => this.remoteFs.getTextDocumentContent(uri))
136-
.do(content => {
137-
this.concurrencyLimit.signal()
138-
this.inMemoryFs.add(uri, content)
139-
}, err => {
140-
this.fetches.delete(uri)
141-
})
135+
.do(
136+
content => {
137+
this.concurrencyLimit.signal()
138+
this.inMemoryFs.add(uri, content)
139+
},
140+
err => {
141+
this.fetches.delete(uri)
142+
}
143+
)
142144
.ignoreElements()
143145
.publishReplay()
144146
.refCount() as Observable<never>
@@ -167,16 +169,23 @@ export class FileSystemUpdater {
167169
* @param childOf A parent span for tracing
168170
*/
169171
public fetchStructure(childOf = new Span()): Observable<never> {
170-
const observable = traceObservable('Fetch workspace structure', childOf, span =>
171-
this.remoteFs.getWorkspaceFiles(undefined, span)
172-
.do(uri => {
173-
this.inMemoryFs.add(uri)
174-
}, err => {
175-
this.structureFetch = undefined
176-
})
177-
.ignoreElements()
178-
.publishReplay()
179-
.refCount() as Observable<never>
172+
const observable = traceObservable(
173+
'Fetch workspace structure',
174+
childOf,
175+
span =>
176+
this.remoteFs
177+
.getWorkspaceFiles(undefined, span)
178+
.do(
179+
uri => {
180+
this.inMemoryFs.add(uri)
181+
},
182+
err => {
183+
this.structureFetch = undefined
184+
}
185+
)
186+
.ignoreElements()
187+
.publishReplay()
188+
.refCount() as Observable<never>
180189
)
181190
this.structureFetch = observable
182191
return observable
@@ -189,8 +198,7 @@ export class FileSystemUpdater {
189198
* @param span An OpenTracing span for tracing
190199
*/
191200
public ensureStructure(childOf = new Span()): Observable<never> {
192-
return traceObservable('Ensure structure', childOf, span =>
193-
this.structureFetch || this.fetchStructure(span))
201+
return traceObservable('Ensure structure', childOf, span => this.structureFetch || this.fetchStructure(span))
194202
}
195203

196204
/**

0 commit comments

Comments
 (0)