@@ -5,35 +5,68 @@ System.register([], function (_export) {
5
5
6
6
_export ( 'load' , load ) ;
7
7
8
- _export ( 'parse' , parse ) ;
8
+ function load ( options ) {
9
+ window . env = { } ;
10
+ var _options = Object . assign ( { } , options , defaultOptions ) ;
9
11
10
- function isFileApiAvailable ( ) {
11
- if ( window . File && window . FileReader && window . FileList && window . Blob ) {
12
- return true ;
13
- }
12
+ return new Promise ( function ( resolve , reject ) {
13
+ var xhr = new XMLHttpRequest ( ) ;
14
+ xhr . open ( 'GET' , _options . path + _options . file ) ;
15
+ xhr . onload = function ( ) {
16
+ if ( this . status >= 200 && this . status < 300 ) {
17
+ ( function ( ) {
18
+ var parsedObject = parse ( xhr . response ) ;
19
+ Object . keys ( parsedObject ) . forEach ( function ( key ) {
20
+ window . env [ key ] = parsedObject [ key ] ;
21
+ } ) ;
14
22
15
- return false ;
16
- }
23
+ resolve ( ) ;
24
+ } ) ( ) ;
25
+ } else {
26
+ reject ( {
27
+ status : this . status ,
28
+ statusText : xhr . statusText
29
+ } ) ;
30
+ }
31
+ } ;
17
32
18
- function load ( options ) {
19
- if ( isFileApiAvailable ( ) === false ) {
20
- console . log ( 'File api is not available to load the aurelia environment.' ) ;
21
- }
33
+ xhr . onerror = function ( ) {
34
+ reject ( {
35
+ status : this . status ,
36
+ statusText : xhr . statusText
37
+ } ) ;
38
+ } ;
22
39
23
- var _options = Object . assign ( { } , options , defaultOptions ) ;
24
- var envFile = new XMLHttpRequest ( ) ;
25
- envFile . open ( 'GET' , _options . path + _options . file , true ) ;
26
- envFile . send ( ) ;
40
+ xhr . send ( ) ;
41
+ } ) ;
27
42
}
28
43
29
- function parse ( content ) { }
44
+ function parse ( content ) {
45
+ var obj = { } ;
30
46
47
+ content . split ( '\n' ) . forEach ( function ( line ) {
48
+ var keyValueArr = line . match ( / ^ \s * ( [ \w \. \- ] + ) \s * = \s * ( .* ) ? \s * $ / ) ;
49
+ if ( keyValueArr !== null ) {
50
+ var key = keyValueArr [ 1 ] ;
51
+ var value = keyValueArr [ 2 ] ? keyValueArr [ 2 ] : '' ;
52
+ var len = value ? value . length : 0 ;
53
+ if ( len > 0 && value . charAt ( 0 ) === '\"' && value . charAt ( len - 1 ) === '\"' ) {
54
+ value = value . replace ( / \\ n / gm, '\n' ) ;
55
+ }
56
+ value = value . replace ( / ( ^ [ ' " ] | [ ' " ] $ ) / g, '' ) . trim ( ) ;
57
+
58
+ obj [ key ] = value ;
59
+ }
60
+ } ) ;
61
+
62
+ return obj ;
63
+ }
31
64
return {
32
65
setters : [ ] ,
33
66
execute : function ( ) {
34
67
defaultOptions = {
35
68
path : './' ,
36
- file : 'package.json '
69
+ file : 'aurelia.env '
37
70
} ;
38
71
}
39
72
} ;
0 commit comments