@@ -2,50 +2,42 @@ const path = require('path')
22const walk = require ( 'walk-sync' ) . entries
33const Page = require ( './page' )
44const languages = require ( './languages' )
5- const { mapLimit, filterLimit } = require ( 'async' )
6- const FILE_READ_LIMIT = 500
5+ const fs = require ( 'fs' )
76
87async function loadPageList ( ) {
98 const pageList = [ ]
109
1110 // load english pages
1211 const englishPath = path . join ( __dirname , '..' , languages . en . dir , 'content' )
13- const englishPaths = walk ( englishPath )
14- . filter ( ( { relativePath } ) =>
15- relativePath . endsWith ( '.md' ) && ! relativePath . includes ( 'README' )
16- )
17- const englishPages = await mapLimit (
18- englishPaths ,
19- FILE_READ_LIMIT ,
20- async fileData => await Page . init ( { ...fileData , languageCode : languages . en . code } )
21- )
12+ const englishPages = walk ( englishPath )
13+ . filter ( ( { relativePath } ) => {
14+ return relativePath . endsWith ( '.md' ) &&
15+ ! relativePath . includes ( 'README' )
16+ } )
17+ . map ( fileData => new Page ( { ...fileData , languageCode : languages . en . code } ) )
18+
2219 pageList . push ( ...englishPages )
2320
2421 // load matching pages in other languages
25- let localizedPaths = Object . values ( languages )
26- . filter ( ( { code } ) => code !== 'en' )
27- . map ( language => {
22+ for ( const page of englishPages ) {
23+ for ( const language of Object . values ( languages ) ) {
24+ if ( language . code === 'en' ) continue
25+
2826 const basePath = path . join ( __dirname , '..' , language . dir , 'content' )
29- return englishPages . map ( page => ( {
30- basePath,
27+ const localizedPath = path . join ( basePath , page . relativePath )
28+ try {
29+ fs . statSync ( localizedPath )
30+ } catch ( _ ) {
31+ continue
32+ }
33+
34+ pageList . push ( new Page ( {
3135 relativePath : page . relativePath ,
32- localizedPath : path . join ( basePath , page . relativePath ) ,
36+ basePath,
3337 languageCode : language . code
3438 } ) )
35- } )
36- . flat ( )
37- localizedPaths = await filterLimit (
38- localizedPaths ,
39- FILE_READ_LIMIT ,
40- async ( { localizedPath } ) => Page . exists ( localizedPath )
41- )
42- const localizedPages = await mapLimit (
43- localizedPaths ,
44- FILE_READ_LIMIT ,
45- async ( { basePath, relativePath, languageCode } ) =>
46- await Page . init ( { basePath, relativePath, languageCode } )
47- )
48- pageList . push ( ...localizedPages )
39+ }
40+ }
4941
5042 return pageList
5143}
0 commit comments