@@ -3,41 +3,34 @@ const path = require('path')
33const { toArray } = require ( '@jscad/array-utils' )
44const requireDesignFromModule = require ( '../code-loading/requireDesignFromModule' )
55const getAllParameterDefintionsAndValues = require ( '../parameters/getParameterDefinitionsAndValues' )
6- const transformSources = require ( '../code-loading/transformSources' )
76const makeWebRequire = require ( '../code-loading/webRequire' )
8- const makeFakeFs = require ( '../code-loading/makeFakeFs' )
9- const { registerAllExtensions } = require ( '../io/registerExtensions' )
107
118const rebuildSolids = ( data ) => {
129 const defaults = { vtreeMode : false , serialize : false }
13- const { mainPath, vtreeMode, parameterValues, inputIsDirectory } = Object . assign ( { } , defaults , data )
10+ let { mainPath, vtreeMode, parameterValues, useFakeFs } = Object . assign ( { } , defaults , data )
1411 const apiMainPath = vtreeMode ? '../code-loading/vtreeApi' : '@jscad/modeling'
1512 // we need to update the source for our module
1613 let requireFn = require
17- if ( ! inputIsDirectory ) {
18- let filesAndFolders = [
14+
15+ // source came from conversion, i.e. not from file system
16+ if ( useFakeFs ) {
17+ const pathParts = path . parse ( mainPath )
18+ const fakeName = `${ pathParts . name } .js`
19+ const fakePath = `/${ pathParts . name } .js`
20+ const filesAndFolders = [
1921 {
20- ext : path . extname ( mainPath ) . substring ( 1 ) ,
21- name : path . basename ( mainPath ) ,
22- fullPath : mainPath ,
22+ ext : 'js' ,
23+ fullPath : fakePath ,
24+ name : fakeName ,
2325 source : data . source
2426 }
2527 ]
26- filesAndFolders = transformSources ( { apiMainPath } , filesAndFolders )
27- // console.log('filesAndFolders', filesAndFolders)
28+ requireFn = makeWebRequire ( filesAndFolders , { apiMainPath } )
2829
29- const fakeFs = makeFakeFs ( filesAndFolders )
30- requireFn = makeWebRequire ( filesAndFolders , { apiMainPath, fakeFs } ) // hasRequire() ? require : makeWebRequire(filesAndFolders, { apiMainPath })
31- // register all extension formats
32- registerAllExtensions ( fakeFs , requireFn )
30+ mainPath = fakePath // and use the alias as the entry point
3331 }
3432
35- // console.log('transformed sources', filesAndFolders)
36- // now check if we need fake require or not
37- // FIXME: we need to come up with a way to intercept node 'require' calls to be able to apply transformSources on the fly
38- // since we keep passing the 'mainPath' to the normal require which points to the NON TRANSFORMED source
39- // const requireFn = makeWebRequire(filesAndFolders, { apiMainPath })// hasRequire() ? require : makeWebRequire(filesAndFolders, { apiMainPath })
40- // rootModule SHOULD contain a main() entry and optionally a getParameterDefinitions entry
33+ // rootModule should contain exported main and getParameterDefinitions functions
4134 const rootModule = requireDesignFromModule ( mainPath , requireFn )
4235 // the design (module tree) has been loaded at this stage
4336 // now we can get our usefull data (definitions and values/defaults)
0 commit comments