| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | import path from 'path' |
| |
|
| | import type { Response, NextFunction } from 'express' |
| |
|
| | import type { ExtendedRequest, UnversionedTree, SiteTree } from '@/types' |
| | import languages, { languageKeys } from '@/languages/lib/languages-server' |
| | import createTree from '@/frame/lib/create-tree' |
| | import warmServer from '@/frame/lib/warm-server' |
| | import { loadSiteTree, loadPages, loadPageMap } from '@/frame/lib/page-data' |
| | import loadRedirects from '@/redirects/lib/precompile' |
| |
|
| | const languagePrefixRegex = new RegExp(`^/(${languageKeys.join('|')})(/|$)`) |
| | const englishPrefixRegex = /^\/en(\/|$)/ |
| |
|
| | const isDev = process.env.NODE_ENV === 'development' |
| |
|
| | export default async function reloadTree(req: ExtendedRequest, res: Response, next: NextFunction) { |
| | if (!isDev) return next() |
| | |
| | if (!req.pagePath || !languagePrefixRegex.test(req.pagePath)) return next() |
| | |
| | if (!englishPrefixRegex.test(req.pagePath)) return next() |
| |
|
| | const warmed = await warmServer([]) |
| |
|
| | |
| | |
| | const before = getMtimes(warmed.unversionedTree.en) |
| | warmed.unversionedTree.en = (await createTree( |
| | path.join(languages.en.dir, 'content'), |
| | undefined, |
| | warmed.unversionedTree.en, |
| | )) as UnversionedTree |
| | const after = getMtimes(warmed.unversionedTree.en) |
| | |
| | |
| | |
| | |
| | |
| | if (before !== after) { |
| | warmed.siteTree = (await loadSiteTree(warmed.unversionedTree)) as SiteTree |
| | warmed.pageList = await loadPages(warmed.unversionedTree) |
| | warmed.pages = await loadPageMap(warmed.pageList) |
| | warmed.redirects = await loadRedirects(warmed.pageList) |
| | } |
| |
|
| | return next() |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | function getMtimes(tree: UnversionedTree) { |
| | let mtimes = tree.page.mtime |
| | for (const child of tree.childPages || []) { |
| | mtimes += getMtimes(child) |
| | } |
| | return mtimes |
| | } |
| |
|