Skip to content

Commit 258b542

Browse files
committed
Upgrade to vite 5
1 parent 26ed6d0 commit 258b542

File tree

22 files changed

+725
-382
lines changed

22 files changed

+725
-382
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ jobs:
2424
steps:
2525
- uses: actions/checkout@v3
2626
- uses: ./.github/actions/setup-test-env
27+
- name: Build JS
28+
run: pnpm build
2729
- name: Run Lint
2830
run: pnpm run lint
2931

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
"lint:fix": "prettier --loglevel warn --write \"packages/**/*.{ts,tsx}\" && eslint \"packages/**/*.{ts,tsx}\" --quiet --fix",
1111
"release": "pnpm -F=fastify-renderer publish",
1212
"preinstall": "npx only-allow pnpm",
13-
"prerelease": "pnpm -F=fastify-renderer run gitpkg publish",
14-
"test": "vitest --no-threads"
13+
"prerelease": "pnpm -F=fastify-renderer exec gitpkg publish",
14+
"test": "vitest --pool=forks --run"
1515
},
1616
"repository": {
1717
"type": "git",
@@ -44,7 +44,7 @@
4444
"eslint-plugin-react": "^7.33.2",
4545
"eslint-plugin-react-hooks": "^4.6.0",
4646
"fs-extra": "^11.1.0",
47-
"vitest": "^0.34.6",
47+
"vitest": "^1.0.4",
4848
"playwright-chromium": "^1.39.0",
4949
"prettier": "^2.8.8",
5050
"prettier-plugin-organize-imports": "^3.2.3",

packages/fastify-renderer/package.json

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
{
22
"name": "fastify-renderer",
3-
"version": "0.4.2",
3+
"version": "0.5.0",
44
"description": "Simple, high performance client side app renderer for Fastify.",
55
"exports": {
66
".": {
7-
"require": "./node/index.js"
7+
"default": "./node/index.js",
8+
"import": "./node/index.js"
89
},
910
"./client/react": {
10-
"default": "./client/react/index.js"
11+
"default": "./client/react/index.js",
12+
"import": "./client/react/index.js"
13+
},
14+
"./client/react/DefaultLayout": {
15+
"default": "./client/react/DefaultLayout.js",
16+
"import": "./client/react/DefaultLayout.js"
1117
},
1218
"./package": "./package.json",
1319
"./package.json": "./package.json"
@@ -29,7 +35,7 @@
2935
"lint:fix": "prettier --loglevel warn --write \"{src,test}/**/*.{ts,tsx}\" && eslint \"{src,test}/**/*.{ts,tsx}\" --quiet --fix",
3036
"prepublishOnly": "npm run build",
3137
"test": "run-s build test:unit lint",
32-
"test:unit": "vitest"
38+
"test:unit": "vitest --run"
3339
},
3440
"repository": {
3541
"type": "git",
@@ -67,8 +73,8 @@
6773
"path-to-regexp": "^6.2.1",
6874
"sanitize-filename": "^1.6.3",
6975
"stream-template": "^0.0.10",
70-
"vite": "^2.9.15",
71-
"wouter": "^2.7.5"
76+
"vite": "^5.3.1",
77+
"wouter": "^2.11.0"
7278
},
7379
"peerDependencies": {
7480
"fastify": "^4.24.2",
@@ -109,4 +115,4 @@
109115
"README.md",
110116
"LICENSE"
111117
]
112-
}
118+
}

packages/fastify-renderer/src/client/react/matcher.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Key, pathToRegexp } from 'path-to-regexp'
2-
import { MatcherFn } from 'wouter'
2+
import { MatcherFn } from 'wouter/matcher'
33

44
/*
55
* This function specifies how strings like /app/:users/:items* are transformed into regular expressions to pass into path-to-regexp.
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
{
22
"sideEffects": false,
3-
"module": "./index.js"
3+
"type": "module",
4+
"exports": {
5+
".": "./index.js",
6+
"./DefaultLayout": "./DefaultLayout.js"
7+
}
48
}

packages/fastify-renderer/src/client/react/wouter-extension.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'wouter'
22

33
declare module 'wouter' {
4-
export interface RouterProps {
4+
export interface RouterObject {
55
navigationHistory?: NavigationHistory
66
}
77

packages/fastify-renderer/src/node/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ const plugin: FastifyPluginAsync<FastifyRendererOptions> = async (fastify, incom
5353

5454
fastify.setRenderConfig({
5555
base: incomingOptions.base || '',
56-
layout: incomingOptions.layout || require.resolve('./renderers/react/DefaultLayout.tsx'),
56+
layout: incomingOptions.layout || require.resolve('fastify-renderer/client/react/DefaultLayout'),
5757
document: incomingOptions.document || DefaultDocumentTemplate,
5858
})
5959

@@ -149,6 +149,7 @@ const plugin: FastifyPluginAsync<FastifyRendererOptions> = async (fastify, incom
149149
fastify.addHook('onReady', async () => {
150150
fastify[kRendererViteOptions] = {
151151
clearScreen: false,
152+
appType: 'custom',
152153
...plugin.vite,
153154
plugins: [...(plugin.vite?.plugins || []), ...plugin.renderer.vitePlugins()],
154155
server: {

packages/fastify-renderer/src/node/renderers/Renderer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { FastifyReply, FastifyRequest } from 'fastify'
2-
import { Plugin, ResolvedConfig, ViteDevServer } from 'vite'
2+
import type { Plugin, ResolvedConfig, ViteDevServer } from 'vite'
33
import { Template } from '../DocumentTemplate'
44

55
/** The options configuring a plugin encapsulation context's renders */

packages/fastify-renderer/src/node/renderers/react/ReactRenderer.tsx

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import path from 'path'
33
import querystring from 'querystring'
44
import type { ReactElement } from 'react'
55
import { URL } from 'url'
6-
import { Plugin, ResolvedConfig, ViteDevServer } from 'vite'
7-
import { normalizePath } from 'vite/dist/node'
6+
import type { Plugin, ResolvedConfig, ViteDevServer } from 'vite'
7+
import { normalizePath } from 'vite'
88
import { FastifyRendererPlugin } from '../../Plugin'
99
import { RenderBus } from '../../RenderBus'
1010
import { wrap } from '../../tracing'
@@ -43,11 +43,8 @@ export class ReactRenderer implements Renderer {
4343
devServer?: ViteDevServer
4444
renderables!: RenderableRegistration[]
4545
tmpdir!: string
46-
clientModulePath: string
4746

48-
constructor(readonly plugin: FastifyRendererPlugin, readonly options: ReactRendererOptions) {
49-
this.clientModulePath = require.resolve('../../../client/react/index.ts')
50-
}
47+
constructor(readonly plugin: FastifyRendererPlugin, readonly options: ReactRendererOptions) {}
5148

5249
vitePlugins() {
5350
return [
@@ -58,6 +55,10 @@ export class ReactRenderer implements Renderer {
5855
]
5956
}
6057

58+
async clientModulePath() {
59+
return 'fastify-renderer/client/react'
60+
}
61+
6162
async prepare(renderables: RenderableRegistration[], viteConfig: ResolvedConfig, devServer?: ViteDevServer) {
6263
this.viteConfig = viteConfig
6364
this.renderables = renderables
@@ -322,7 +323,7 @@ export class ReactRenderer implements Renderer {
322323
return id
323324
}
324325
},
325-
load: (id) => {
326+
load: async (id) => {
326327
if (id.startsWith(CLIENT_ENTRYPOINT_PREFIX)) {
327328
const url = new URL('fstr://' + id)
328329
const entrypoint = id.replace(CLIENT_ENTRYPOINT_PREFIX, '/@fs/').replace(/\/hydrate\.jsx\?.+$/, '')
@@ -343,7 +344,7 @@ export class ReactRenderer implements Renderer {
343344
import { routes } from ${JSON.stringify(
344345
ReactRenderer.ROUTE_TABLE_ID + '?' + querystring.stringify(queryParams)
345346
)}
346-
import { Root } from ${JSON.stringify(this.clientModulePath)}
347+
import { Root } from ${JSON.stringify(await this.clientModulePath())}
347348
import Layout from ${JSON.stringify(layout)}
348349
import Entrypoint from ${JSON.stringify(entrypoint)}
349350
@@ -375,7 +376,7 @@ export class ReactRenderer implements Renderer {
375376
return id
376377
}
377378
},
378-
load: (id) => {
379+
load: async (id) => {
379380
if (id.startsWith(SERVER_ENTRYPOINT_PREFIX)) {
380381
const entrypoint = id.replace(SERVER_ENTRYPOINT_PREFIX, '').replace(/\/ssr\.jsx\?.+$/, '')
381382
const url = new URL('fstr://' + id)
@@ -385,7 +386,7 @@ export class ReactRenderer implements Renderer {
385386
// server side processed entrypoint for a particular route generated by fastify-renderer
386387
import React from 'react'
387388
import ReactDOMServer from 'react-dom/server'
388-
import { Router, RenderBusContext } from ${JSON.stringify(this.clientModulePath)}
389+
import { Router, RenderBusContext } from ${JSON.stringify(await this.clientModulePath())}
389390
import Layout from ${JSON.stringify(layout)}
390391
import Entrypoint from ${JSON.stringify(entrypoint)}
391392
@@ -432,7 +433,7 @@ export class ReactRenderer implements Renderer {
432433
return id
433434
}
434435
},
435-
load: (id) => {
436+
load: async (id) => {
436437
if (id.startsWith(ReactRenderer.ROUTE_TABLE_ID)) {
437438
const url = new URL('fstr://' + id)
438439
const lazy = !!url.searchParams.get('lazy')!

0 commit comments

Comments
 (0)