1
+ var _ = require ( 'lodash' ) ;
2
+ var colors = require ( 'colors' ) ;
3
+ var glob = require ( 'glob' ) ;
4
+ var fs = require ( 'fs' ) ;
5
+ var ts = require ( 'typescript' ) ;
6
+
7
+ function diagnose ( fileNames , options ) {
8
+ var program = ts . createProgram ( fileNames , options ) ;
9
+
10
+ var diagnostics = _ . groupBy ( ts . getPreEmitDiagnostics ( program ) ,
11
+ function ( x ) {
12
+ return x . file . fileName ;
13
+ } ) ;
14
+
15
+ _ . forIn ( diagnostics , function ( value , key ) {
16
+ fs . readFile ( key , 'utf-8' , function ( err , file ) {
17
+ var lines = file . split ( '\n' ) ;
18
+ _ . forEach ( value , function ( diagnostic ) {
19
+ var pos = diagnostic . file . getLineAndCharacterOfPosition ( diagnostic . start ) ;
20
+ var message = ts . flattenDiagnosticMessageText ( diagnostic . messageText , '\n' ) ;
21
+
22
+ var prefix = ' (' + key + ': ' + pos . line + ',' + pos . character + ') ' ;
23
+ console . error ( 'Error : ' . red + message + prefix ) ;
24
+ console . error ( lines [ pos . line ] . gray ) ;
25
+ console . error ( _ . repeat ( ' ' , pos . character ) + '^' ) ;
26
+ console . error ( ) ;
27
+ } ) ;
28
+ } ) ;
29
+ } ) ;
30
+ }
31
+
32
+ glob ( 'types/**/*.ts' , function ( err , files ) {
33
+ files . unshift ( 'typings/es6-shim/es6-shim.d.ts' ) ;
34
+ diagnose ( files , {
35
+ module : ts . ModuleKind . CommonJS
36
+ } ) ;
37
+ } ) ;
0 commit comments