1
0
Fork 0
freesewing/sites/shared/prebuild/navigation.mjs

55 lines
1.4 KiB
JavaScript
Raw Normal View History

import path from 'path'
import fs from 'fs'
import set from 'lodash.set'
// Some arbitrary future time
const future = new Date('10-12-2026').getTime()
/*
* Main method that does what needs doing
*/
export const prebuildNavigation = (mdxPages, strapiPosts, site) => {
const nav = {}
for (const lang in mdxPages) {
nav[lang] = {}
// Handle MDX content
for (const slug of Object.keys(mdxPages[lang]).sort()) {
const page = mdxPages[lang][slug]
const chunks = slug.split('/')
set(nav, [lang, ...chunks], {
2021-12-17 17:51:20 +01:00
__title: page.title,
__linktitle: page.linktitle || page.title,
__slug: slug,
__order: page.order,
})
}
// Handle strapi content
2022-05-26 19:33:51 +02:00
for (const type in strapiPosts) {
set(nav, [lang, type], {
2021-12-17 17:51:20 +01:00
__title: type,
__linktitle: type,
__slug: type,
__order: type,
})
2022-05-26 19:33:51 +02:00
for (const [slug, page] of Object.entries(strapiPosts[type][lang])) {
const chunks = slug.split('/')
set(nav, [lang, type, ...chunks], {
2021-12-17 17:51:20 +01:00
__title: page.title,
__linktitle: page.linktitle,
__slug: type + '/' + slug,
__order: (future - new Date(page.date).getTime()) / 100000,
})
}
}
}
fs.writeFileSync(
2022-06-17 12:02:09 +02:00
path.resolve('..', site, 'prebuild', `navigation.js`),
`export default ${JSON.stringify(nav, null ,2)}`
)
2022-01-20 09:07:38 +01:00
return true
}