Skip to content

Commit 18cc6e4

Browse files
refactor(vitrify): rename onRendered to onTemplateRendered
1 parent 7c49449 commit 18cc6e4

File tree

14 files changed

+92
-60
lines changed

14 files changed

+92
-60
lines changed

.changeset/new-shoes-poke.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'vitrify': patch
3+
---
4+
5+
refactor(vitrify): rename onRendered to onTemplateRendered

packages/vitrify/src/node/bin/cli.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ cli
2424
const { build } = await import('./build.js')
2525
let appDir: URL
2626
let prerender
27-
let onRendered
2827
if (options.appDir) {
2928
if (options.appDir.slice(-1) !== '/') options.appDir += '/'
3029
appDir = new URL(`file://${options.appDir}`)
@@ -90,7 +89,7 @@ cli
9089
new URL('ssr/server/prerender.mjs', baseOutDir).pathname
9190
))
9291

93-
const { template, manifest, render, getRoutes, onRendered } =
92+
const { template, manifest, render, getRoutes, onTemplateRendered } =
9493
await loadSSRAssets({
9594
mode: 'ssg',
9695
distDir: baseOutDir
@@ -103,7 +102,7 @@ cli
103102
manifest,
104103
render,
105104
routes,
106-
onRendered
105+
onTemplateRendered
107106
})
108107
break
109108
default:

packages/vitrify/src/node/bin/dev.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ import type { Server } from 'net'
55
import fastify from 'fastify'
66
import type { FastifyServerOptions } from 'fastify'
77
import { fastifySsrPlugin } from '../frameworks/vue/fastify-ssr-plugin.js'
8-
import type { OnRenderedHook, VitrifyConfig } from '../vitrify-config.js'
8+
import type {
9+
OnTemplateRenderedHook,
10+
VitrifyConfig
11+
} from '../vitrify-config.js'
912
import isPortReachable from 'is-port-reachable'
1013
import { exitLogs } from '../helpers/logger.js'
1114
import { fileURLToPath } from 'url'
@@ -138,7 +141,7 @@ export async function createServer({
138141
let setup
139142
let app: FastifyInstance | undefined
140143
let server: Server
141-
let onRendered: OnRenderedHook[]
144+
let onTemplateRendered: OnTemplateRenderedHook[]
142145
let vitrifyConfig: VitrifyConfig
143146

144147
console.log(`Development mode: ${ssr ? ssr : 'csr'}`)
@@ -149,7 +152,7 @@ export async function createServer({
149152
: fileURLToPath(new URL(`src/vite/${framework}/ssr/app.ts`, cliDir))
150153

151154
const environment = vite.environments.ssr
152-
;({ setup, onRendered, vitrifyConfig } =
155+
;({ setup, onTemplateRendered, vitrifyConfig } =
153156
// @ts-expect-error missing types
154157
await environment.runner.import(entryUrl))
155158
// console.log(module)
@@ -177,7 +180,7 @@ export async function createServer({
177180
await app.register(fastifySsrPlugin, {
178181
appDir,
179182
mode: 'development',
180-
onRendered,
183+
onTemplateRendered,
181184
host
182185
})
183186
}

packages/vitrify/src/node/frameworks/vue/fastify-ssr-plugin.ts

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
appendToHead
99
} from '../../helpers/utils.js'
1010
import type { ViteDevServer } from 'vite'
11-
import type { OnRenderedHook } from '../../vitrify-config.js'
11+
import type { OnTemplateRenderedHook } from '../../vitrify-config.js'
1212
import { getAppDir } from '../../app-urls.js'
1313

1414
type ProvideFn = (
@@ -22,7 +22,7 @@ export interface FastifySsrOptions {
2222
vitrifyDir?: URL
2323
vite?: ViteDevServer
2424
// frameworkDir?: URL
25-
onRendered?: OnRenderedHook[]
25+
onTemplateRendered?: OnTemplateRenderedHook[]
2626
appDir?: URL
2727
publicDir?: URL
2828
mode?: string
@@ -96,7 +96,7 @@ const fastifySsrPlugin: FastifyPluginAsync<FastifySsrOptions> = async (
9696
reply: res,
9797
url: url ?? '/',
9898
provide,
99-
onRendered: options.onRendered,
99+
onTemplateRendered: options.onTemplateRendered,
100100
template,
101101
manifest,
102102
render
@@ -127,16 +127,17 @@ const fastifySsrPlugin: FastifyPluginAsync<FastifySsrOptions> = async (
127127
const url = req.raw.url?.replace(options.baseUrl!, '/')
128128
const provide = options.provide ? await options.provide(req, res) : {}
129129

130-
const { template, manifest, render, onRendered } = await loadSSRAssets({
131-
distDir: new URL('./dist/', options.appDir)
132-
})
130+
const { template, manifest, render, onTemplateRendered } =
131+
await loadSSRAssets({
132+
distDir: new URL('./dist/', options.appDir)
133+
})
133134

134135
const html = await renderHtml({
135136
request: req,
136137
reply: res,
137138
url: url ?? '/',
138139
provide,
139-
onRendered,
140+
onTemplateRendered,
140141
template,
141142
manifest,
142143
render
@@ -171,7 +172,7 @@ const renderHtml = async (options: {
171172
request: FastifyRequest | { headers: Record<string, unknown>; url: string }
172173
reply: FastifyReply | Record<string, unknown>
173174
provide: Record<string, unknown>
174-
onRendered?: OnRenderedHook[]
175+
onTemplateRendered?: OnTemplateRenderedHook[]
175176
template: string
176177
manifest: Record<string, unknown>
177178
render: any
@@ -182,15 +183,18 @@ const renderHtml = async (options: {
182183
provide: options.provide
183184
}
184185

185-
const onRendered = options.onRendered ?? []
186+
const onTemplateRendered = options.onTemplateRendered ?? []
187+
188+
console.log(ssrContext)
186189

187190
const {
188191
html: appHtml,
189192
preloadLinks,
190193
app
191194
} = await options.render(options.url, options.manifest, ssrContext)
192195

193-
if (!ssrContext.initialState) ssrContext.initialState = {}
196+
console.log(ssrContext)
197+
// if (!ssrContext.initialState) ssrContext.initialState = {}
194198
ssrContext.initialState.provide = options.provide
195199

196200
const initialStateScript = `
@@ -205,9 +209,9 @@ const renderHtml = async (options: {
205209
preloadLinks
206210
})
207211

208-
if (onRendered?.length) {
209-
for (const ssrFunction of onRendered) {
210-
html = ssrFunction(html, ssrContext)
212+
if (onTemplateRendered?.length) {
213+
for (const ssrFunction of onTemplateRendered) {
214+
html = ssrFunction({ html, ssrContext })
211215
}
212216
}
213217

@@ -229,7 +233,7 @@ const loadSSRAssets = async (
229233
const baseOutDir = distDir || new URL('dist/', appDir)
230234

231235
let templatePath, manifestPath, entryServerPath
232-
const onRenderedPath = fileURLToPath(
236+
const onTemplateRenderedPath = fileURLToPath(
233237
new URL('ssr/server/virtual_vitrify-hooks.mjs', baseOutDir)
234238
)
235239
if (mode === 'ssg') {
@@ -254,14 +258,15 @@ const loadSSRAssets = async (
254258
const manifest = JSON.parse(readFileSync(manifestPath).toString())
255259
const entryServer = await import(entryServerPath)
256260
const { render, getRoutes } = entryServer
257-
const onRendered = (await import(onRenderedPath)).onRendered
261+
const onTemplateRendered = (await import(onTemplateRenderedPath))
262+
.onTemplateRendered
258263

259264
return {
260265
template,
261266
manifest,
262267
render,
263268
getRoutes,
264-
onRendered
269+
onTemplateRendered
265270
}
266271
} catch (e) {
267272
console.error(e)

packages/vitrify/src/node/frameworks/vue/prerender.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { existsSync, promises as fs, mkdirSync } from 'fs'
2-
import type { OnRenderedHook } from 'src/node/vitrify-config.js'
2+
import type { OnTemplateRenderedHook } from 'src/node/vitrify-config.js'
33
import { routesToPaths } from '../../helpers/routes.js'
44
import { renderHtml } from './fastify-ssr-plugin.js'
55
import { type RouteRecordRaw } from 'vue-router'
@@ -10,14 +10,14 @@ export const prerender = async ({
1010
manifest,
1111
render,
1212
routes,
13-
onRendered
13+
onTemplateRendered
1414
}: {
1515
outDir: string
1616
template: string
1717
manifest: Record<string, unknown>
1818
render: unknown
1919
routes: RouteRecordRaw[]
20-
onRendered: OnRenderedHook[]
20+
onTemplateRendered: OnTemplateRenderedHook[]
2121
}) => {
2222
const promises = []
2323
const paths = routesToPaths(routes).filter(
@@ -52,7 +52,7 @@ export const prerender = async ({
5252
request: { headers: {}, url },
5353
reply: {},
5454
template,
55-
onRendered
55+
onTemplateRendered
5656
})
5757
html = await beasties.process(html)
5858

packages/vitrify/src/node/frameworks/vue/server.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
import type { FastifyInstance } from 'fastify'
21
import fastify from 'fastify'
3-
import type { OnRenderedHook, OnSetupHook } from '../../vitrify-config.js'
2+
import type {
3+
OnTemplateRenderedHook,
4+
OnSetupHook
5+
} from '../../vitrify-config.js'
46
import type { FastifyCsrPlugin } from './fastify-csr-plugin.js'
57
import type { FastifySsrPlugin } from './fastify-ssr-plugin.js'
68

@@ -9,15 +11,15 @@ export const createApp = ({
911
appDir,
1012
baseUrl,
1113
fastifyPlugin,
12-
onRendered,
14+
onTemplateRendered,
1315
vitrifyDir,
1416
mode
1517
}: {
1618
onSetup: OnSetupHook[]
1719
appDir: URL
1820
baseUrl?: string
1921
fastifyPlugin: FastifySsrPlugin | FastifyCsrPlugin
20-
onRendered?: OnRenderedHook[]
22+
onTemplateRendered?: OnTemplateRenderedHook[]
2123
vitrifyDir?: URL
2224
mode: string
2325
}) => {
@@ -34,7 +36,7 @@ export const createApp = ({
3436
baseUrl,
3537
appDir,
3638
vitrifyDir,
37-
onRendered,
39+
onTemplateRendered,
3840
mode
3941
})
4042

packages/vitrify/src/node/hooks/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type {
33
OnCreateAppHook,
44
OnMountedHook,
55
OnRenderedHook,
6+
OnTemplateRenderedHook,
67
OnSetupFile,
78
OnSetupHook
89
} from '../vitrify-config.js'
@@ -12,6 +13,7 @@ export {
1213
OnCreateAppHook,
1314
OnMountedHook,
1415
OnRenderedHook,
16+
OnTemplateRenderedHook,
1517
OnSetupFile,
1618
OnSetupHook
1719
}

packages/vitrify/src/node/index.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ import type {
2727
OnRenderedHook,
2828
OnBootHook,
2929
OnSetupFile,
30-
OnCreateAppHook
30+
OnCreateAppHook,
31+
OnTemplateRenderedHook
3132
} from './vitrify-config.js'
3233
import type { VitrifyContext } from './bin/run.js'
3334
import type { VitrifyPlugin } from './plugins/index.js'
@@ -279,6 +280,7 @@ export const baseConfig = async ({
279280

280281
let onBootHooks: OnBootHook[]
281282
let onRenderedHooks: OnRenderedHook[]
283+
let onTemplateRenderedHooks: OnTemplateRenderedHook[]
282284
let onMountedHooks: OnMountedHook[]
283285
let onCreateAppHooks: OnCreateAppHook[]
284286
let onSetupFiles: OnSetupFile[]
@@ -358,6 +360,8 @@ export const baseConfig = async ({
358360
config: (config: VitrifyConfig, env) => {
359361
onBootHooks = config.vitrify?.hooks?.onBoot || []
360362
onRenderedHooks = config.vitrify?.hooks?.onRendered || []
363+
onTemplateRenderedHooks =
364+
config.vitrify?.hooks?.onTemplateRendered || []
361365
onMountedHooks = config.vitrify?.hooks?.onMounted || []
362366
onCreateAppHooks = config.vitrify?.hooks?.onCreateApp || []
363367
onSetupFiles = config?.vitrify?.hooks?.onSetup || []
@@ -397,6 +401,9 @@ export const baseConfig = async ({
397401
export const onRendered = [${onRenderedHooks
398402
.map((fn) => `${String(fn)}`)
399403
.join(', ')}]
404+
export const onTemplateRendered = [${onTemplateRenderedHooks
405+
.map((fn) => `${String(fn)}`)
406+
.join(', ')}]
400407
export const onCreateApp = [${onCreateAppHooks
401408
.map((fn) => `${String(fn)}`)
402409
.join(', ')}]

packages/vitrify/src/node/plugins/quasar/index.ts

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import type { Plugin } from 'vite'
21
import { fileURLToPath } from 'url'
32
import type {
43
OnBootHook,
54
OnMountedHook,
5+
OnTemplateRenderedHook,
66
VitrifyConfig
77
} from '../../vitrify-config.js'
88
import type { VitrifyPlugin } from '../index.js'
@@ -31,10 +31,10 @@ export interface QuasarPluginOptions {
3131
disableSass?: boolean
3232
}
3333

34-
export const injectSsrContext = (
35-
html: string,
36-
ssrContext: Record<string, any>
37-
) =>
34+
export const injectSsrContext: OnTemplateRenderedHook = ({
35+
html,
36+
ssrContext
37+
}) =>
3838
html
3939
.replace(/(<html[^>]*)(>)/i, (found, start, end) => {
4040
let matches
@@ -49,21 +49,21 @@ export const injectSsrContext = (
4949
start = start.replace(matches[0], '')
5050
}
5151

52-
return `${start} ${ssrContext._meta.htmlAttrs || ''} ${end}`
52+
return `${start} ${ssrContext?._meta.htmlAttrs || ''} ${end}`
5353
})
5454
.replace(
5555
/(<head[^>]*)(>)/i,
56-
(_, start, end) => `${start}${end}${ssrContext._meta.headTags || ''}`
56+
(_, start, end) => `${start}${end}${ssrContext?._meta.headTags || ''}`
5757
)
5858
.replace(
5959
/(<\/head>)/i,
6060
(_, tag) =>
61-
`${ssrContext._meta.resourceStyles || ''}${
62-
ssrContext._meta.endingHeadTags || ''
61+
`${ssrContext?._meta.resourceStyles || ''}${
62+
ssrContext?._meta.endingHeadTags || ''
6363
}${tag}`
6464
)
6565
.replace(/(<body[^>]*)(>)/i, (found, start, end) => {
66-
let classes = ssrContext._meta.bodyClasses || ''
66+
let classes = ssrContext?._meta.bodyClasses || ''
6767

6868
const matches = found.match(/\sclass\s*=\s*['"]([^'"]*)['"]/i)
6969

@@ -75,8 +75,8 @@ export const injectSsrContext = (
7575
}
7676

7777
return `${start} class="${classes.trim()}" ${
78-
ssrContext._meta.bodyAttrs || ''
79-
}${end}${ssrContext._meta.bodyTags || ''}`
78+
ssrContext?._meta.bodyAttrs || ''
79+
}${end}${ssrContext?._meta.bodyTags || ''}`
8080
})
8181

8282
export const QuasarPlugin: VitrifyPlugin<QuasarPluginOptions> = async ({
@@ -204,7 +204,7 @@ export const QuasarPlugin: VitrifyPlugin<QuasarPluginOptions> = async ({
204204
hooks: {
205205
onBoot: onBootHooks,
206206
onMounted: onMountedHooks,
207-
onRendered: [injectSsrContext]
207+
onTemplateRendered: [injectSsrContext]
208208
},
209209
sass: quasarConf.disableSass
210210
? undefined
@@ -316,5 +316,3 @@ export const QuasarPlugin: VitrifyPlugin<QuasarPluginOptions> = async ({
316316
}
317317
}
318318
}
319-
320-
export default QuasarPlugin

0 commit comments

Comments
 (0)