@@ -84,22 +84,30 @@ function requireProxy(path) {
84
84
85
85
function registerExtensions ( ) {
86
86
var originalJsExtension = require . extensions [ ".js" ] ;
87
+ var originalTsExtension = require . extensions [ ".ts" ] ;
87
88
var originalCoffeeExtension = require . extensions [ ".coffee" ] ;
88
89
89
90
if ( originalJsExtension ) {
90
91
originalExtensions . js = originalJsExtension ;
91
92
}
93
+ if ( originalTsExtension ) {
94
+ originalExtensions . ts = originalTsExtension ;
95
+ }
92
96
if ( originalCoffeeExtension ) {
93
97
originalExtensions . coffee = originalCoffeeExtension ;
94
98
}
95
99
require . extensions [ ".js" ] = jsExtension ;
100
+ require . extensions [ ".ts" ] = tsExtension ;
96
101
require . extensions [ ".coffee" ] = coffeeExtension ;
97
102
}
98
103
99
104
function restoreExtensions ( ) {
100
105
if ( "js" in originalExtensions ) {
101
106
require . extensions [ ".js" ] = originalExtensions . js ;
102
107
}
108
+ if ( "ts" in originalExtensions ) {
109
+ require . extensions [ ".ts" ] = originalExtensions . ts ;
110
+ }
103
111
if ( "coffee" in originalExtensions ) {
104
112
require . extensions [ ".coffee" ] = originalExtensions . coffee ;
105
113
}
@@ -136,6 +144,32 @@ function jsExtension(module, filename) {
136
144
originalExtensions . js ( module , filename ) ;
137
145
}
138
146
147
+ function tsExtension ( module , filename ) {
148
+ var _compile = module . _compile ;
149
+
150
+ module . _compile = function rewireCompile ( content , filename ) {
151
+ var noConstAssignMessage = linter . verify ( content , eslintOptions ) . find ( isNoConstAssignMessage ) ;
152
+ var line ;
153
+ var column ;
154
+
155
+ if ( noConstAssignMessage !== undefined ) {
156
+ line = noConstAssignMessage . line ;
157
+ column = noConstAssignMessage . column ;
158
+ throw new TypeError ( `Assignment to constant variable at ${ filename } :${ line } :${ column } ` ) ;
159
+ }
160
+ _compile . call (
161
+ this ,
162
+ content
163
+ . replace ( shebang , '' ) // Remove shebang declarations
164
+ . replace ( matchConst , "$1let $2" ) , // replace const with let, while maintaining the column width
165
+ filename
166
+ ) ;
167
+ } ;
168
+
169
+ restoreExtensions ( ) ;
170
+ originalExtensions . ts ( module , filename ) ;
171
+ }
172
+
139
173
function coffeeExtension ( module , filename ) {
140
174
if ( ! coffee ) {
141
175
throw new Error ( "Cannot rewire module written in CoffeeScript: Please install 'coffeescript' package first." ) ;
0 commit comments