4a604bab0b
- Updated import path for app.server module in SSR hook. - Removed babel.config.server.json as Babel is no longer needed for async/await transformation. - Adjusted esbuild configuration to target ESNext and modified output paths. - Enhanced App.svelte to handle initial content loading during SSR. - Updated SSR script to load messages synchronously before rendering. - Simplified build:server script in package.json by removing Babel step.
72 lines
2.3 KiB
JavaScript
72 lines
2.3 KiB
JavaScript
const apiSsrBaseURL =
|
|
"http://localhost:" + context.config.server().api.port + "/api/v1/_/" + context.api().namespace + "/"
|
|
|
|
const now = { $date: new Date().toISOString() }
|
|
const publishedFilter = {
|
|
active: true,
|
|
$or: [
|
|
{ publication: { $exists: false } },
|
|
{ publication: null },
|
|
{
|
|
$and: [
|
|
{
|
|
$or: [
|
|
{ "publication.from": { $exists: false } },
|
|
{ "publication.from": null },
|
|
{ "publication.from": { $lte: now } },
|
|
],
|
|
},
|
|
{
|
|
$or: [
|
|
{ "publication.to": { $exists: false } },
|
|
{ "publication.to": null },
|
|
{ "publication.to": { $gte: now } },
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
}
|
|
|
|
module.exports = {
|
|
apiSsrBaseURL,
|
|
publishedFilter,
|
|
ssrValidatePath: function (/** @type {string} */ path) {
|
|
// validate if path ssr rendering is ok, -1 = NOTFOUND, 0 = NO SSR, 1 = SSR
|
|
// Starter project: SSR the app shell for language roots and all published content pages.
|
|
if (path === "/" || path.match(/^\/(de|en)\/?$/)) {
|
|
return 1
|
|
}
|
|
|
|
const langMatch = path.match(/^\/(de|en)(\/|$)/)
|
|
const lang = langMatch ? langMatch[1] : null
|
|
const routePath = lang ? path.replace(/^\/(de|en)(?=\/|$)/, "") || "/" : path
|
|
|
|
const resp = context.db.find("content", {
|
|
filter: {
|
|
$and: [
|
|
...(lang ? [{ lang: lang }] : []),
|
|
{ $or: [{ path: routePath }, { "alternativePaths.path": routePath }] },
|
|
publishedFilter,
|
|
],
|
|
},
|
|
selector: { _id: 1, path: 1, lang: 1 },
|
|
})
|
|
if (resp && resp.length) {
|
|
const canonicalLang = resp[0].lang || lang
|
|
const canonicalPath = resp[0].path || routePath
|
|
const canonicalUrl = canonicalLang
|
|
? `/${canonicalLang}${canonicalPath === "/" ? "" : canonicalPath}`
|
|
: canonicalPath
|
|
|
|
if (canonicalUrl && canonicalUrl !== path) {
|
|
return canonicalUrl
|
|
}
|
|
return 1
|
|
}
|
|
|
|
return -1
|
|
},
|
|
ssrPublishCheckCollections: ["content"],
|
|
}
|