@@ -127,21 +127,22 @@ export class Transpiler {
127
127
this . options . basePath = this . normalizeSlashes ( path . resolve ( this . options . basePath ) ) ;
128
128
}
129
129
fileNames = fileNames . map ( ( f ) => this . normalizeSlashes ( f ) ) ;
130
- let host = this . createCompilerHost ( ) ;
131
- let program = ts . createProgram ( fileNames , this . getCompilerOptions ( ) , host ) ;
130
+ const host = this . createCompilerHost ( ) ;
131
+ const program = ts . createProgram ( fileNames , this . getCompilerOptions ( ) , host ) ;
132
132
this . fc . setTypeChecker ( program . getTypeChecker ( ) ) ;
133
133
this . declarationTranspiler . setTypeChecker ( program . getTypeChecker ( ) ) ;
134
134
135
135
// Only write files that were explicitly passed in.
136
136
const fileSet = new Set ( fileNames ) ;
137
- let sourceFiles =
138
- program . getSourceFiles ( ) . filter ( ( sourceFile ) => fileSet . has ( sourceFile . fileName ) ) ;
137
+ const sourceFiles = program . getSourceFiles ( ) . filter ( ( sourceFile ) => {
138
+ return fileSet . has ( sourceFile . fileName ) ;
139
+ } ) ;
139
140
140
141
this . errors = [ ] ;
141
142
142
- let sourceFileMap : { [ s : string ] : ts . SourceFile } = { } ;
143
+ const sourceFileMap : Map < string , ts . SourceFile > = new Map ( ) ;
143
144
sourceFiles . forEach ( ( f : ts . SourceFile ) => {
144
- sourceFileMap [ f . fileName ] = f ;
145
+ sourceFileMap . set ( f . fileName , f ) ;
145
146
} ) ;
146
147
147
148
// Check for global module export declarations and propogate them to all modules they export.
@@ -154,6 +155,7 @@ export class Transpiler {
154
155
let globalModuleName = base . ident ( n . name ) ;
155
156
f . moduleName = globalModuleName ;
156
157
158
+ const missingFiles : string [ ] = [ ] ;
157
159
f . statements . forEach ( ( e : ts . Node ) => {
158
160
if ( ! ts . isExportDeclaration ( e ) ) return ;
159
161
let exportDecl = e ;
@@ -164,10 +166,25 @@ export class Transpiler {
164
166
[ location ] , f . fileName , undefined , undefined , this . getCompilerOptions ( ) ) ;
165
167
resolvedPath . forEach ( ( p ) => {
166
168
if ( p . isExternalLibraryImport ) return ;
167
- let exportedFile = sourceFileMap [ p . resolvedFileName ] ;
168
- exportedFile . moduleName = globalModuleName ;
169
+ const exportedFile = sourceFileMap . get ( p . resolvedFileName ) ;
170
+ if ( exportedFile ) {
171
+ exportedFile . moduleName = globalModuleName ;
172
+ } else {
173
+ missingFiles . push ( p . resolvedFileName ) ;
174
+ }
169
175
} ) ;
170
176
} ) ;
177
+ if ( missingFiles . length ) {
178
+ const error = new Error ( ) ;
179
+ error . message =
180
+ 'The following files were referenced but were not supplied as a command line arguments. Reference the README for usage instructions.' ;
181
+ for ( const file of missingFiles ) {
182
+ error . message += '\n' ;
183
+ error . message += file ;
184
+ }
185
+ error . name = 'DartFacadeError' ;
186
+ throw error ;
187
+ }
171
188
} ) ;
172
189
} ) ;
173
190
@@ -215,7 +232,7 @@ export class Transpiler {
215
232
216
233
private createCompilerHost ( ) : ts . CompilerHost {
217
234
const compilerOptions = this . getCompilerOptions ( ) ;
218
- let compilerHost = ts . createCompilerHost ( compilerOptions ) ;
235
+ const compilerHost = ts . createCompilerHost ( compilerOptions ) ;
219
236
let defaultLibFileName = ts . getDefaultLibFileName ( compilerOptions ) ;
220
237
defaultLibFileName = this . normalizeSlashes ( defaultLibFileName ) ;
221
238
compilerHost . getSourceFile = ( sourceName ) => {
@@ -232,6 +249,7 @@ export class Transpiler {
232
249
} ;
233
250
compilerHost . useCaseSensitiveFileNames = ( ) => true ;
234
251
compilerHost . getCanonicalFileName = ( filename ) => filename ;
252
+ compilerHost . getCurrentDirectory = ( ) => '' ;
235
253
compilerHost . getNewLine = ( ) => '\n' ;
236
254
compilerHost . resolveModuleNames = getModuleResolver ( compilerHost ) ;
237
255
@@ -339,7 +357,7 @@ export class Transpiler {
339
357
if ( diagnosticErrs . length ) errors = errors . concat ( diagnosticErrs ) ;
340
358
341
359
if ( errors . length ) {
342
- let e = new Error ( errors . join ( '\n' ) ) ;
360
+ const e = new Error ( errors . join ( '\n' ) ) ;
343
361
e . name = 'DartFacadeError' ;
344
362
throw e ;
345
363
}
0 commit comments