11import Core from './index.js'
22import 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+ }
411
512export default class FileSystemLoader {
613 constructor ( root ) {
@@ -9,25 +16,28 @@ export default class FileSystemLoader {
916 this . seenPaths = new Set ( )
1017 }
1118
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, "" )
1422 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
1725
1826 fs . readFile ( fileRelativePath , "utf-8" , ( err , source ) => {
19- err ? reject ( err ) : resolve ( { source, rootRelativePath } )
27+ vars . source = source
28+ err ? reject ( err ) : resolve ( state )
2029 } )
2130 } )
2231 }
2332
24- load ( { source, rootRelativePath} ) {
33+ load ( state ) {
34+ let { source, rootRelativePath } = state . loaderVars
2535 console . log ( "LOADING " + rootRelativePath )
2636 return Core . load ( source , rootRelativePath , this )
27- . then ( ( { injectableSource , exportTokens } ) => {
37+ . then ( state => {
2838 console . log ( "LOADED " + rootRelativePath )
29- this . sources . push ( injectableSource )
30- return exportTokens
39+ this . sources . push ( state . parserVars . injectableSource )
40+ return state
3141 } )
3242 }
3343}
0 commit comments