11let url = require ( 'url' ) ;
22let compile = require ( './compile' ) ;
3- let { glob } = require ( 'glob' ) ;
43let path = require ( 'path' ) ;
54let findNodeModules = require ( 'findup-sync' ) ;
65let fs = require ( 'fs' ) ;
@@ -80,11 +79,15 @@ async function writeIndexJs(schemaJsPath) {
8079}
8180
8281async function findSchemaJs ( cwd ) {
83- let options = {
84- ignore : [ '**/node_modules/**' , '**/dist/**' , '**/dev/**' , '**/deploy/**' , '**/build/**' ] ,
85- cwd
82+ let ignoredDirNames = {
83+ node_modules : true ,
84+ dist : true ,
85+ dev : true ,
86+ deploy : true ,
87+ build : true
8688 } ;
87- let files = await glob ( '**/schema.*(js|mjs|ts)' , options ) ;
89+ let files = [ ] ;
90+ scanForSchemaFiles ( cwd , ignoredDirNames , files ) ;
8891 files . sort ( ( a , b ) => {
8992 const aIsTs = a . substring ( a . length - 2 ) === 'ts' ;
9093 const bIsTs = b . substring ( b . length - 2 ) === 'ts' ;
@@ -97,7 +100,29 @@ async function findSchemaJs(cwd) {
97100 else
98101 return 0 ;
99102 } ) ;
100- return files . map ( x => path . join ( cwd , '/' , x ) ) ;
103+ return files ;
104+ }
105+
106+ function scanForSchemaFiles ( currentDir , ignoredDirNames , results ) {
107+ for ( let entry of fs . readdirSync ( currentDir ) ) {
108+ const fullPath = path . join ( currentDir , entry ) ;
109+ let stat ;
110+ try {
111+ stat = fs . statSync ( fullPath ) ;
112+ }
113+ catch ( e ) {
114+ continue ;
115+ }
116+ if ( stat . isDirectory ( ) ) {
117+ if ( ignoredDirNames [ entry ] )
118+ continue ;
119+ scanForSchemaFiles ( fullPath , ignoredDirNames , results ) ;
120+ continue ;
121+ }
122+
123+ if ( entry === 'schema.js' || entry === 'schema.mjs' || entry === 'schema.ts' )
124+ results . push ( fullPath ) ;
125+ }
101126}
102127
103128function tryDownload ( _url , _isNamespace ) {
@@ -124,4 +149,4 @@ async function download(url, isNamespace) {
124149
125150module . exports = function ( cwd ) {
126151 run ( cwd ) . then ( null , console . log ) ;
127- } ;
152+ } ;
0 commit comments