1
+ 'use strict' ;
2
+
3
+ var _keys = require ( 'babel-runtime/core-js/object/keys' ) ;
4
+
5
+ var _keys2 = _interopRequireDefault ( _keys ) ;
6
+
7
+ function _interopRequireDefault ( obj ) { return obj && obj . __esModule ? obj : { default : obj } ; }
8
+
9
+ var fs = require ( 'fs' ) ;
10
+ var path = require ( 'path' ) ;
11
+
12
+ var Manager = require ( '../modules/manager.js' ) ;
13
+ var utilMw = require ( '../utils/middleware.js' ) ;
14
+ var utilFs = require ( '../utils/fs.js' ) ;
15
+
16
+ var tmplExtensions = [ '.html' , '.vm' , '.string' ] ;
17
+
18
+ module . exports = function ( req , res , next ) {
19
+ var projectInfo = utilMw . getProjectInfo ( req ) ;
20
+ var project = Manager . getProject ( projectInfo . projectCwd , { cache : false } ) ;
21
+ var extName = path . extname ( req . url ) ;
22
+
23
+ if ( tmplExtensions . indexOf ( extName ) > - 1 ) {
24
+ var htmlFilePath = path . join ( projectInfo . projectCwd , req . url . replace ( / .+ \/ s r c \/ / , 'src/' ) ) ;
25
+
26
+ var replacedContent = handleHtmlContent ( htmlFilePath ) ;
27
+
28
+ if ( ! replacedContent ) {
29
+ next ( ) ;
30
+ } else {
31
+ res . setHeader ( 'Content-Type' , 'text/html; charset=UTF-8' ) ;
32
+ res . writeHead ( 200 ) ;
33
+ res . end ( replacedContent ) ;
34
+ }
35
+ } else {
36
+ next ( ) ;
37
+ }
38
+
39
+ function handleHtmlContent ( htmlFilePath ) {
40
+ if ( ! utilFs . fileExists ( htmlFilePath ) ) {
41
+ return '' ;
42
+ }
43
+
44
+ var htmlContent = fs . readFileSync ( htmlFilePath , 'utf-8' ) ;
45
+
46
+ var staticHost = project . server && project . server . staticHost ;
47
+ if ( staticHost ) {
48
+ ( 0 , _keys2 . default ) ( staticHost ) . map ( function ( hostName ) {
49
+ var hostReg = new RegExp ( '(src|href)=("|\')//(' + hostName + ')' , 'g' ) ;
50
+
51
+ var matches = void 0 ;
52
+ while ( ( matches = hostReg . exec ( htmlContent ) ) !== null ) {
53
+ var host = matches [ 3 ] ;
54
+ htmlContent = htmlContent . replace ( host , staticHost [ hostName ] ) ;
55
+ }
56
+ } ) ;
57
+ }
58
+
59
+ return htmlContent ;
60
+ }
61
+ } ;
0 commit comments