@@ -56,124 +56,133 @@ exports.createPages = async ({ graphql, actions }) => {
56
56
let sideBardata = { }
57
57
let pagesGroupedByFolder = { }
58
58
const allPages = [ ]
59
-
60
- await Promise . all ( edges . map ( async ( { node } ) => {
61
- const {
62
- frontmatter : { permalink, next, sidebarTitle } ,
63
- parent : { relativeDirectory, sourceInstanceName } ,
64
- } = node
65
-
66
- if ( sourceInstanceName !== "content" ) {
67
- return
68
- }
69
59
70
- if ( ! pagesGroupedByFolder [ relativeDirectory ] ) {
71
- pagesGroupedByFolder = {
72
- ...pagesGroupedByFolder ,
73
- [ relativeDirectory ] : [ node ] ,
60
+ await Promise . all (
61
+ edges . map ( async ( { node } ) => {
62
+ const {
63
+ frontmatter : { permalink, next, sidebarTitle } ,
64
+ parent : { relativeDirectory, sourceInstanceName } ,
65
+ } = node
66
+
67
+ if ( sourceInstanceName !== "content" ) {
68
+ return
74
69
}
75
- } else {
76
- pagesGroupedByFolder = {
77
- ...pagesGroupedByFolder ,
78
- [ relativeDirectory ] : [ ...pagesGroupedByFolder [ relativeDirectory ] , node ] ,
70
+
71
+ if ( ! pagesGroupedByFolder [ relativeDirectory ] ) {
72
+ pagesGroupedByFolder = {
73
+ ...pagesGroupedByFolder ,
74
+ [ relativeDirectory ] : [ node ] ,
75
+ }
76
+ } else {
77
+ pagesGroupedByFolder = {
78
+ ...pagesGroupedByFolder ,
79
+ [ relativeDirectory ] : [
80
+ ...pagesGroupedByFolder [ relativeDirectory ] ,
81
+ node ,
82
+ ] ,
83
+ }
79
84
}
80
- }
81
- allPages . push ( {
82
- permalink ,
83
- relativeDirectory ,
84
- sidebarTitle ,
85
- nextPermalink : next ,
86
- sourcePath : path . relative ( __dirname , node . fileAbsolutePath ) ,
85
+ allPages . push ( {
86
+ permalink ,
87
+ relativeDirectory ,
88
+ sidebarTitle ,
89
+ nextPermalink : next ,
90
+ sourcePath : path . relative ( __dirname , node . fileAbsolutePath ) ,
91
+ } )
87
92
} )
88
- } ) ) ;
89
-
90
- await Promise . all ( Object . entries ( pagesGroupedByFolder ) . map ( async ( [ folder , pages ] ) => {
91
- let pagesByUrl = { }
92
- let previousPagesMap = { }
93
- let pagesByDate = pages . sort ( ( a , b ) => {
94
- const aDate = new Date ( a . frontmatter . date || Date . now ( ) )
95
- const bDate = new Date ( b . frontmatter . date || Date . now ( ) )
96
- if ( aDate > bDate ) {
97
- return - 1 ;
98
- } else if ( aDate < bDate ) {
99
- return 1 ;
100
- }
101
- return 0 ;
102
- } ) ;
103
-
104
- await Promise . all (
105
- pagesByDate . map ( async page => {
106
- const {
107
- frontmatter : { permalink, next } ,
108
- } = page
109
- if ( next ) {
110
- previousPagesMap [ next ] = permalink
93
+ )
94
+
95
+ await Promise . all (
96
+ Object . entries ( pagesGroupedByFolder ) . map ( async ( [ folder , pages ] ) => {
97
+ let pagesByUrl = { }
98
+ let previousPagesMap = { }
99
+ let pagesByDate = pages . sort ( ( a , b ) => {
100
+ const aDate = new Date ( a . frontmatter . date || Date . now ( ) )
101
+ const bDate = new Date ( b . frontmatter . date || Date . now ( ) )
102
+ if ( aDate > bDate ) {
103
+ return - 1
104
+ } else if ( aDate < bDate ) {
105
+ return 1
111
106
}
112
- pagesByUrl [ permalink ] = page
107
+ return 0
113
108
} )
114
- )
115
109
116
- let firstPage = null
110
+ await Promise . all (
111
+ pagesByDate . map ( async page => {
112
+ const {
113
+ frontmatter : { permalink, next } ,
114
+ } = page
115
+ if ( next ) {
116
+ previousPagesMap [ next ] = permalink
117
+ }
118
+ pagesByUrl [ permalink ] = page
119
+ } )
120
+ )
117
121
118
- await Promise . all (
119
- pagesByDate . map ( async page => {
120
- const {
121
- frontmatter : { permalink } ,
122
- } = page
122
+ let firstPage = null
123
123
124
- if ( ! previousPagesMap [ permalink ] && ! firstPage ) {
125
- firstPage = page
126
- return
127
- }
128
- } )
129
- )
124
+ await Promise . all (
125
+ pagesByDate . map ( async page => {
126
+ const {
127
+ frontmatter : { permalink } ,
128
+ } = page
130
129
131
- if ( ! firstPage ) {
132
- throw new Error ( `First page not found in ${ folder } ` )
133
- }
130
+ if ( ! previousPagesMap [ permalink ] && ! firstPage ) {
131
+ firstPage = page
132
+ return
133
+ }
134
+ } )
135
+ )
134
136
135
- let categories = [ ]
136
- let currentCategory = null
137
+ if ( ! firstPage ) {
138
+ throw new Error ( `First page not found in ${ folder } ` )
139
+ }
137
140
138
- let page = firstPage
139
- let i = 0
140
- while ( page && i ++ < 1000 ) {
141
- const {
142
- frontmatter,
143
- } = page
144
- const { definedCategory, next : nextPage } = frontmatter ;
145
- let category = definedCategory || folder ;
146
- if ( ! currentCategory || category !== currentCategory . name ) {
147
- currentCategory && categories . push ( currentCategory )
148
- currentCategory = {
149
- name : category ,
150
- links : [ ] ,
141
+ let categories = [ ]
142
+ let currentCategory = null
143
+
144
+ let page = firstPage
145
+ let i = 0
146
+ while ( page && i ++ < 1000 ) {
147
+ const { frontmatter } = page
148
+ const { definedCategory, next : definedNextPageUrl } = frontmatter
149
+ let category = definedCategory || folder
150
+ if ( ! currentCategory || category !== currentCategory . name ) {
151
+ currentCategory && categories . push ( currentCategory )
152
+ currentCategory = {
153
+ name : category ,
154
+ links : [ ] ,
155
+ }
156
+ }
157
+ currentCategory . links . push ( page )
158
+ if ( definedNextPageUrl ) {
159
+ page = pagesByUrl [ definedNextPageUrl ]
160
+ } else {
161
+ page = pagesByDate [ pagesByDate . indexOf ( page ) + 1 ]
162
+ }
163
+ if ( currentCategory . links . includes ( page ) ) {
164
+ page = null
151
165
}
152
166
}
153
- currentCategory . links . push ( page )
154
- if ( nextPage ) {
155
- page = pagesByUrl [ nextPage ]
156
- } else {
157
- page = pagesByDate [ pagesByDate . indexOf ( page ) + 1 ] ;
158
- }
159
- }
160
-
161
- categories . push ( currentCategory )
162
167
163
- sideBardata [ folder ] = categories
164
- } ) )
168
+ categories . push ( currentCategory )
165
169
166
-
167
- await Promise . all ( allPages . map ( async page => {
168
- createPage ( {
169
- path : `${ page . permalink } ` ,
170
- component : docTemplate ,
171
- context : {
172
- permalink : page . permalink ,
173
- nextPermalink : page . nextPermalink ,
174
- sideBarData : sideBardata [ page . relativeDirectory ] ,
175
- sourcePath : page . sourcePath ,
176
- } ,
170
+ sideBardata [ folder ] = categories
171
+ } )
172
+ )
173
+
174
+ await Promise . all (
175
+ allPages . map ( async page => {
176
+ createPage ( {
177
+ path : `${ page . permalink } ` ,
178
+ component : docTemplate ,
179
+ context : {
180
+ permalink : page . permalink ,
181
+ nextPermalink : page . nextPermalink ,
182
+ sideBarData : sideBardata [ page . relativeDirectory ] ,
183
+ sourcePath : page . sourcePath ,
184
+ } ,
185
+ } )
177
186
} )
178
- } ) )
187
+ )
179
188
}
0 commit comments