vitrify 0.6.16 → 0.6.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bin/cli.js CHANGED
@@ -16,6 +16,7 @@ cli
16
16
  const { build } = await import('./build.js');
17
17
  let appDir;
18
18
  let prerender;
19
+ let onRendered;
19
20
  if (options.appDir) {
20
21
  if (options.appDir.slice(-1) !== '/')
21
22
  options.appDir += '/';
@@ -68,14 +69,16 @@ cli
68
69
  ...args,
69
70
  outDir: new URL('ssr/server/', baseOutDir).pathname
70
71
  });
71
- ({ prerender } = await import(new URL('ssr/server/prerender.mjs', baseOutDir).pathname));
72
+ ({ prerender, onRendered } = await import(new URL('ssr/server/prerender.mjs', baseOutDir).pathname));
73
+ console.log(onRendered);
72
74
  prerender({
73
75
  outDir: new URL('static/', baseOutDir).pathname,
74
76
  templatePath: new URL('static/index.html', baseOutDir).pathname,
75
77
  manifestPath: new URL('static/ssr-manifest.json', baseOutDir)
76
78
  .pathname,
77
79
  entryServerPath: new URL('ssr/server/entry-server.mjs', baseOutDir)
78
- .pathname
80
+ .pathname,
81
+ onRendered
79
82
  });
80
83
  break;
81
84
  default:
@@ -1,6 +1,6 @@
1
1
  import { promises as fs } from 'fs';
2
2
  import { routesToPaths } from '../../helpers/routes.js';
3
- export const prerender = async ({ outDir, templatePath, manifestPath, entryServerPath }) => {
3
+ export const prerender = async ({ outDir, templatePath, manifestPath, entryServerPath, onRendered }) => {
4
4
  const promises = [];
5
5
  const template = (await fs.readFile(templatePath)).toString();
6
6
  const manifest = await fs.readFile(manifestPath);
@@ -25,6 +25,11 @@ export const prerender = async ({ outDir, templatePath, manifestPath, entryServe
25
25
  let html = template
26
26
  .replace(`<!--preload-links-->`, preloadLinks)
27
27
  .replace(`<!--app-html-->`, appHtml);
28
+ if (onRendered?.length) {
29
+ for (const ssrFunction of onRendered) {
30
+ html = ssrFunction(html, ssrContext);
31
+ }
32
+ }
28
33
  html = await critters.process(html);
29
34
  promises.push(fs.writeFile(outDir + filename, html, 'utf-8'));
30
35
  }
@@ -1,6 +1,8 @@
1
- export declare const prerender: ({ outDir, templatePath, manifestPath, entryServerPath }: {
1
+ import type { OnRenderedHook } from 'src/node/vitrify-config.js';
2
+ export declare const prerender: ({ outDir, templatePath, manifestPath, entryServerPath, onRendered }: {
2
3
  outDir: string;
3
4
  templatePath: string;
4
5
  manifestPath: string;
5
6
  entryServerPath: string;
7
+ onRendered: OnRenderedHook[];
6
8
  }) => Promise<void[]>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vitrify",
3
- "version": "0.6.16",
3
+ "version": "0.6.17",
4
4
  "license": "MIT",
5
5
  "author": "Stefan van Herwijnen",
6
6
  "description": "Pre-configured Vite CLI for your framework",
@@ -25,6 +25,7 @@ cli
25
25
  const { build } = await import('./build.js')
26
26
  let appDir: URL
27
27
  let prerender
28
+ let onRendered
28
29
  if (options.appDir) {
29
30
  if (options.appDir.slice(-1) !== '/') options.appDir += '/'
30
31
  appDir = new URL(`file://${options.appDir}`)
@@ -84,16 +85,18 @@ cli
84
85
  ...args,
85
86
  outDir: new URL('ssr/server/', baseOutDir).pathname
86
87
  })
87
- ;({ prerender } = await import(
88
+ ;({ prerender, onRendered } = await import(
88
89
  new URL('ssr/server/prerender.mjs', baseOutDir).pathname
89
90
  ))
91
+ console.log(onRendered)
90
92
  prerender({
91
93
  outDir: new URL('static/', baseOutDir).pathname,
92
94
  templatePath: new URL('static/index.html', baseOutDir).pathname,
93
95
  manifestPath: new URL('static/ssr-manifest.json', baseOutDir)
94
96
  .pathname,
95
97
  entryServerPath: new URL('ssr/server/entry-server.mjs', baseOutDir)
96
- .pathname
98
+ .pathname,
99
+ onRendered
97
100
  })
98
101
  break
99
102
  default:
@@ -1,16 +1,19 @@
1
1
  import { promises as fs } from 'fs'
2
+ import type { OnRenderedHook } from 'src/node/vitrify-config.js'
2
3
  import { routesToPaths } from '../../helpers/routes.js'
3
4
 
4
5
  export const prerender = async ({
5
6
  outDir,
6
7
  templatePath,
7
8
  manifestPath,
8
- entryServerPath
9
+ entryServerPath,
10
+ onRendered
9
11
  }: {
10
12
  outDir: string
11
13
  templatePath: string
12
14
  manifestPath: string
13
15
  entryServerPath: string
16
+ onRendered: OnRenderedHook[]
14
17
  }) => {
15
18
  const promises = []
16
19
  const template = (await fs.readFile(templatePath)).toString()
@@ -41,6 +44,12 @@ export const prerender = async ({
41
44
  .replace(`<!--preload-links-->`, preloadLinks)
42
45
  .replace(`<!--app-html-->`, appHtml)
43
46
 
47
+ if (onRendered?.length) {
48
+ for (const ssrFunction of onRendered) {
49
+ html = ssrFunction(html, ssrContext)
50
+ }
51
+ }
52
+
44
53
  html = await critters.process(html)
45
54
 
46
55
  promises.push(fs.writeFile(outDir + filename, html, 'utf-8'))
@@ -1,3 +1,4 @@
1
1
  import { prerender } from '../../../node/frameworks/vue/prerender.js'
2
+ import { onRendered } from 'virtual:vitrify-hooks'
2
3
 
3
- export { prerender }
4
+ export { prerender, onRendered }