@@ -5,6 +5,7 @@ var tsconfig = require('../tsconfig/tsconfig');
5
5
var utils = require ( './utils' ) ;
6
6
var project = require ( './project' ) ;
7
7
var Project = project . Project ;
8
+ var resolve = Promise . resolve . bind ( Promise ) ;
8
9
var projectByProjectPath = { } ;
9
10
var projectByFilePath = { } ;
10
11
function cacheAndCreateProject ( projectFile ) {
@@ -47,31 +48,31 @@ function textSpan(span) {
47
48
}
48
49
function echo ( data ) {
49
50
data . num = data . num + 1 ;
50
- return data ;
51
+ return resolve ( data ) ;
51
52
}
52
53
exports . echo = echo ;
53
54
function quickInfo ( query ) {
54
55
var project = getOrCreateProject ( query . filePath ) ;
55
56
var info = project . languageService . getQuickInfoAtPosition ( query . filePath , query . position ) ;
56
57
if ( ! info )
57
- return { valid : false } ;
58
+ return Promise . resolve ( { valid : false } ) ;
58
59
else
59
- return {
60
+ return resolve ( {
60
61
valid : true ,
61
62
name : ts . displayPartsToString ( info . displayParts || [ ] ) ,
62
63
comment : ts . displayPartsToString ( info . documentation || [ ] ) ,
63
- } ;
64
+ } ) ;
64
65
}
65
66
exports . quickInfo = quickInfo ;
66
67
function build ( query ) {
67
- return {
68
+ return resolve ( {
68
69
outputs : getOrCreateProject ( query . filePath ) . build ( )
69
- } ;
70
+ } ) ;
70
71
}
71
72
exports . build = build ;
72
73
function errorsForFileFiltered ( query ) {
73
74
var fileName = path . basename ( query . filePath ) ;
74
- return { errors : errorsForFile ( { filePath : query . filePath } ) . errors . filter ( function ( error ) { return path . basename ( error . filePath ) == fileName ; } ) } ;
75
+ return errorsForFile ( { filePath : query . filePath } ) . then ( function ( resp ) { return { errors : resp . errors . filter ( function ( error ) { return path . basename ( error . filePath ) == fileName ; } ) } ; } ) ;
75
76
}
76
77
exports . errorsForFileFiltered = errorsForFileFiltered ;
77
78
var punctuations = utils . createMap ( [ ';' , '{' , '}' , '(' , ')' , '.' , ':' , '<' , '>' ] ) ;
@@ -101,7 +102,7 @@ function getCompletionsAtPosition(query) {
101
102
var comment = ts . displayPartsToString ( completionDetails . documentation || [ ] ) ;
102
103
return { display : display , comment : comment } ;
103
104
}
104
- return {
105
+ return resolve ( {
105
106
completions : completionList . map ( function ( c ) {
106
107
var details = docComment ( c ) ;
107
108
return {
@@ -112,44 +113,44 @@ function getCompletionsAtPosition(query) {
112
113
} ;
113
114
} ) ,
114
115
endsInPunctuation : endsInPunctuation
115
- } ;
116
+ } ) ;
116
117
}
117
118
exports . getCompletionsAtPosition = getCompletionsAtPosition ;
118
119
function getSignatureHelps ( query ) {
119
120
var project = getOrCreateProject ( query . filePath ) ;
120
121
var signatureHelpItems = project . languageService . getSignatureHelpItems ( query . filePath , query . position ) ;
121
122
if ( ! signatureHelpItems || ! signatureHelpItems . items || ! signatureHelpItems . items . length )
122
- return { signatureHelps : [ ] } ;
123
+ return resolve ( { signatureHelps : [ ] } ) ;
123
124
return signatureHelpItems . items ;
124
125
}
125
126
exports . getSignatureHelps = getSignatureHelps ;
126
127
function emitFile ( query ) {
127
- return getOrCreateProject ( query . filePath ) . emitFile ( query . filePath ) ;
128
+ return resolve ( getOrCreateProject ( query . filePath ) . emitFile ( query . filePath ) ) ;
128
129
}
129
130
exports . emitFile = emitFile ;
130
131
function regenerateProjectGlob ( query ) {
131
132
var projectFile = getOrCreateProjectFile ( query . filePath ) ;
132
133
cacheAndCreateProject ( projectFile ) ;
133
- return { } ;
134
+ return resolve ( { } ) ;
134
135
}
135
136
exports . regenerateProjectGlob = regenerateProjectGlob ;
136
137
function formatDocument ( query ) {
137
138
var prog = getOrCreateProject ( query . filePath ) ;
138
- return prog . formatDocument ( query . filePath , query . cursor ) ;
139
+ return resolve ( prog . formatDocument ( query . filePath , query . cursor ) ) ;
139
140
}
140
141
exports . formatDocument = formatDocument ;
141
142
function formatDocumentRange ( query ) {
142
143
var prog = getOrCreateProject ( query . filePath ) ;
143
- return { formatted : prog . formatDocumentRange ( query . filePath , query . start , query . end ) } ;
144
+ return resolve ( { formatted : prog . formatDocumentRange ( query . filePath , query . start , query . end ) } ) ;
144
145
}
145
146
exports . formatDocumentRange = formatDocumentRange ;
146
147
function getDefinitionsAtPosition ( query ) {
147
148
var project = getOrCreateProject ( query . filePath ) ;
148
149
var definitions = project . languageService . getDefinitionAtPosition ( query . filePath , query . position ) ;
149
150
var projectFileDirectory = project . projectFile . projectFileDirectory ;
150
151
if ( ! definitions || ! definitions . length )
151
- return { projectFileDirectory : projectFileDirectory , definitions : [ ] } ;
152
- return {
152
+ return resolve ( { projectFileDirectory : projectFileDirectory , definitions : [ ] } ) ;
153
+ return resolve ( {
153
154
projectFileDirectory : projectFileDirectory ,
154
155
definitions : definitions . map ( function ( d ) {
155
156
var pos = project . languageServiceHost . getPositionFromIndex ( d . fileName , d . textSpan . start ( ) ) ;
@@ -158,12 +159,12 @@ function getDefinitionsAtPosition(query) {
158
159
position : pos
159
160
} ;
160
161
} )
161
- } ;
162
+ } ) ;
162
163
}
163
164
exports . getDefinitionsAtPosition = getDefinitionsAtPosition ;
164
165
function updateText ( query ) {
165
166
getOrCreateProject ( query . filePath ) . languageServiceHost . updateScript ( query . filePath , query . text ) ;
166
- return { } ;
167
+ return resolve ( { } ) ;
167
168
}
168
169
exports . updateText = updateText ;
169
170
function errorsForFile ( query ) {
@@ -172,7 +173,7 @@ function errorsForFile(query) {
172
173
if ( diagnostics . length === 0 ) {
173
174
diagnostics = program . languageService . getSemanticDiagnostics ( query . filePath ) ;
174
175
}
175
- return { errors : diagnostics . map ( project . diagnosticToTSError ) } ;
176
+ return resolve ( { errors : diagnostics . map ( project . diagnosticToTSError ) } ) ;
176
177
}
177
178
exports . errorsForFile = errorsForFile ;
178
179
function getRenameInfo ( query ) {
@@ -181,12 +182,12 @@ function getRenameInfo(query) {
181
182
var info = project . languageService . getRenameInfo ( query . filePath , query . position ) ;
182
183
if ( info && info . canRename ) {
183
184
var locations = project . languageService . findRenameLocations ( query . filePath , query . position , findInStrings , findInComments ) . map ( function ( loc ) {
184
- return {
185
+ return resolve ( {
185
186
textSpan : textSpan ( loc . textSpan ) ,
186
187
filePath : loc . fileName
187
- } ;
188
+ } ) ;
188
189
} ) ;
189
- return {
190
+ return resolve ( {
190
191
canRename : true ,
191
192
localizedErrorMessage : info . localizedErrorMessage ,
192
193
displayName : info . displayName ,
@@ -195,12 +196,12 @@ function getRenameInfo(query) {
195
196
kindModifiers : info . kindModifiers ,
196
197
triggerSpan : textSpan ( info . triggerSpan ) ,
197
198
locations : locations
198
- } ;
199
+ } ) ;
199
200
}
200
201
else {
201
- return {
202
+ return resolve ( {
202
203
canRename : false
203
- } ;
204
+ } ) ;
204
205
}
205
206
}
206
207
exports . getRenameInfo = getRenameInfo ;
0 commit comments