diff --git a/app/buildPublicUrl.ts b/app/buildPublicUrl.ts index 405d105..b6d9667 100644 --- a/app/buildPublicUrl.ts +++ b/app/buildPublicUrl.ts @@ -1,11 +1,8 @@ -import { config } from "@/config"; +import type { PageContext } from "vike/types"; -export function buildPublicUrl(resource: string) { - const { BASE_URL } = config; +export function buildPublicUrl(pageContext: PageContext, resource: string) { + const { baseUrl } = pageContext; + const url = new URL(resource, baseUrl).toString(); - if (BASE_URL) { - return new URL(resource, BASE_URL).toString(); - } - - return resource; + return url; } diff --git a/app/fastify-entry.ts b/app/fastify-entry.ts index eac6897..56a66ba 100755 --- a/app/fastify-entry.ts +++ b/app/fastify-entry.ts @@ -18,6 +18,7 @@ const root = __dirname; declare global { namespace Vike { interface PageContext { + baseUrl: string; exports: { frontmatter?: Partial<{ title: string; diff --git a/app/pages/+config.ts b/app/pages/+config.ts index 2884778..18b2a09 100755 --- a/app/pages/+config.ts +++ b/app/pages/+config.ts @@ -1,6 +1,5 @@ import type { Config } from "vike/types"; -import { buildPublicUrl } from "@/buildPublicUrl"; import Layout from "@/layouts/LayoutDefault"; import vikeSolid from "vike-solid/config"; @@ -26,8 +25,6 @@ export default { class: "flex min-h-full bg-white", }, - image: buildPublicUrl("/opengraph/default.png"), - prerender: true, prefetchStaticAssets: "hover", diff --git a/app/pages/+image.ts b/app/pages/+image.ts new file mode 100644 index 0000000..1502ea5 --- /dev/null +++ b/app/pages/+image.ts @@ -0,0 +1,7 @@ +import type { PageContext } from "vike/types"; + +import { buildPublicUrl } from "@/buildPublicUrl"; + +export const image = (pageContext: PageContext) => { + return buildPublicUrl(pageContext, "/opengraph/default.png"); +}; diff --git a/app/pages/docs/+Page.mdx b/app/pages/docs/+Page.mdx new file mode 100644 index 0000000..d28a7a8 --- /dev/null +++ b/app/pages/docs/+Page.mdx @@ -0,0 +1,50 @@ +--- +title: Documentations du Memento +description: Plonge toi dans une documentation synthétique et concise, conçue pour les développeurs ou passionnés de l'information en quête de savoir ! +tags: [] +--- + +import { QuickLink, QuickLinks } from "@/components/QuickLinks"; + +## Documentations rédigées + + + + + + + +## Documentations en cours de rédaction + + + + + +## Documentations à venir + +- HTML +- CSS +- JavaScript +- PHP +- SQL +- Node.js +- Express.js +- UML +- Maquettage + +Et bien d'autres encore ! 😄 diff --git a/app/server/vike-handler.ts b/app/server/vike-handler.ts index a0ff858..f52af21 100755 --- a/app/server/vike-handler.ts +++ b/app/server/vike-handler.ts @@ -1,18 +1,28 @@ /// -import { renderPage } from "vike/server"; + // TODO: stop using universal-middleware and directly integrate server middlewares instead and/or use vike-server https://vike.dev/server. (Bati generates boilerplates that use universal-middleware https://github.com/magne4000/universal-middleware to make Bati's internal logic easier. This is temporary and will be removed soon.) import type { Get, UniversalHandler } from "@universal-middleware/core"; -export const vikeHandler: Get<[], UniversalHandler> = () => async (request, context, runtime) => { - const pageContextInit = { ...context, ...runtime, urlOriginal: request.url, headersOriginal: request.headers }; - const pageContext = await renderPage(pageContextInit); - const response = pageContext.httpResponse; +import { renderPage } from "vike/server"; +import { config } from "@/config"; - const { readable, writable } = new TransformStream(); - response.pipe(writable); +export const vikeHandler: Get<[], UniversalHandler> = + () => async (request, context, runtime) => { + const pageContextInit = { + ...context, + ...runtime, + urlOriginal: request.url, + headersOriginal: request.headers, + baseUrl: config.BASE_URL, + }; + const pageContext = await renderPage(pageContextInit); + const response = pageContext.httpResponse; - return new Response(readable, { - status: response.statusCode, - headers: response.headers, - }); -}; + const { readable, writable } = new TransformStream(); + response.pipe(writable); + + return new Response(readable, { + status: response.statusCode, + headers: response.headers, + }); + };