1
1
import Core from './index.js'
2
2
import fs from 'fs'
3
- import path from 'path'
3
+ import pathUtils from 'path'
4
+
5
+ class LoaderState {
6
+ constructor ( ) {
7
+ this . loaderVars = { }
8
+ this . parserVars = { }
9
+ }
10
+ }
4
11
5
12
export default class FileSystemLoader {
6
13
constructor ( root ) {
@@ -9,25 +16,28 @@ export default class FileSystemLoader {
9
16
this . seenPaths = new Set ( )
10
17
}
11
18
12
- fetch ( _newPath , relativeTo ) {
13
- let newPath = _newPath . replace ( / ^ [ " ' ] | [ " ' ] $ / g, "" )
19
+ fetch ( path , relativeTo ) {
20
+ let state = new LoaderState ( ) , vars = state . loaderVars
21
+ vars . path = path . replace ( / ^ [ " ' ] | [ " ' ] $ / g, "" )
14
22
return new Promise ( ( resolve , reject ) => {
15
- let rootRelativePath = path . resolve ( path . dirname ( relativeTo ) , newPath ) ,
16
- fileRelativePath = this . root + rootRelativePath
23
+ vars . rootRelativePath = pathUtils . resolve ( pathUtils . dirname ( relativeTo ) , vars . path )
24
+ vars . fileRelativePath = this . root + rootRelativePath
17
25
18
26
fs . readFile ( fileRelativePath , "utf-8" , ( err , source ) => {
19
- err ? reject ( err ) : resolve ( { source, rootRelativePath } )
27
+ vars . source = source
28
+ err ? reject ( err ) : resolve ( state )
20
29
} )
21
30
} )
22
31
}
23
32
24
- load ( { source, rootRelativePath} ) {
33
+ load ( state ) {
34
+ let { source, rootRelativePath } = state . loaderVars
25
35
console . log ( "LOADING " + rootRelativePath )
26
36
return Core . load ( source , rootRelativePath , this )
27
- . then ( ( { injectableSource , exportTokens } ) => {
37
+ . then ( state => {
28
38
console . log ( "LOADED " + rootRelativePath )
29
- this . sources . push ( injectableSource )
30
- return exportTokens
39
+ this . sources . push ( state . parserVars . injectableSource )
40
+ return state
31
41
} )
32
42
}
33
43
}
0 commit comments