diff --git a/.github/workflows/benchmarks.yml b/.github/workflows/benchmarks.yml index 4603745f..4fba6789 100644 --- a/.github/workflows/benchmarks.yml +++ b/.github/workflows/benchmarks.yml @@ -38,6 +38,10 @@ jobs: - name: Install dependencies run: npm i --ignore-scripts + - name: Build SvelteKit + working-directory: benchmarks/sveltekit-app + run: npm run build + - name: Run benchmarks run: npm start y 100 10 40 diff --git a/.gitignore b/.gitignore index b2bfff76..a22478c9 100644 --- a/.gitignore +++ b/.gitignore @@ -159,3 +159,6 @@ profile* # benchmark results results + +benchmarks/sveltekit-app/build/ +benchmarks/sveltekit-app/.svelte-kit/ diff --git a/benchmarks/sveltekit-app/package.json b/benchmarks/sveltekit-app/package.json new file mode 100644 index 00000000..ba2f8207 --- /dev/null +++ b/benchmarks/sveltekit-app/package.json @@ -0,0 +1,7 @@ +{ + "name": "sveltekit-benchmark", + "type": "module", + "scripts": { + "build": "vite build" + } +} \ No newline at end of file diff --git a/benchmarks/sveltekit-app/src/app.html b/benchmarks/sveltekit-app/src/app.html new file mode 100644 index 00000000..5787e239 --- /dev/null +++ b/benchmarks/sveltekit-app/src/app.html @@ -0,0 +1,11 @@ + + + + + + %sveltekit.head% + + + %sveltekit.body% + + \ No newline at end of file diff --git a/benchmarks/sveltekit-app/src/routes/+server.js b/benchmarks/sveltekit-app/src/routes/+server.js new file mode 100644 index 00000000..a1f06851 --- /dev/null +++ b/benchmarks/sveltekit-app/src/routes/+server.js @@ -0,0 +1,5 @@ +import { json } from "@sveltejs/kit"; + +export function GET() { + return json({ hello: "world" }); +} diff --git a/benchmarks/sveltekit-app/svelte.config.js b/benchmarks/sveltekit-app/svelte.config.js new file mode 100644 index 00000000..b64a278b --- /dev/null +++ b/benchmarks/sveltekit-app/svelte.config.js @@ -0,0 +1,12 @@ +import adapter from "@sveltejs/adapter-node"; + +/** @type {import('@sveltejs/kit').Config} */ + +const config = { + kit: { + adapter: adapter(), + }, +}; + +export default config; + \ No newline at end of file diff --git a/benchmarks/sveltekit-app/vite.config.js b/benchmarks/sveltekit-app/vite.config.js new file mode 100644 index 00000000..80864b9d --- /dev/null +++ b/benchmarks/sveltekit-app/vite.config.js @@ -0,0 +1,6 @@ +import { sveltekit } from "@sveltejs/kit/vite"; +import { defineConfig } from "vite"; + +export default defineConfig({ + plugins: [sveltekit()], +}); diff --git a/benchmarks/sveltekit.mjs b/benchmarks/sveltekit.mjs new file mode 100644 index 00000000..9f6b3f54 --- /dev/null +++ b/benchmarks/sveltekit.mjs @@ -0,0 +1,4 @@ +import { createServer } from "node:http"; +import { handler } from "./sveltekit-app/build/handler.js"; + +createServer(handler).listen(3000, "127.0.0.1"); diff --git a/lib/packages.js b/lib/packages.js index 091eca58..275e265c 100755 --- a/lib/packages.js +++ b/lib/packages.js @@ -26,6 +26,7 @@ const packages = { restana: { hasRouter: true, package: 'restana' }, restify: { hasRouter: true }, 'srvx': { package: 'srvx' }, + 'sveltekit': { hasRouter: true, package: '@sveltejs/kit' }, 'trpc-router': { extra: true, hasRouter: true, package: '@trpc/server' }, 'whatwg-node-server': { package: '@whatwg-node/server' }, } diff --git a/package.json b/package.json index 4646c328..d80449df 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,8 @@ "@hapi/hapi": "^21.1.0", "@hono/node-server": "^1.3.0", "@koa/router": "^14.0.0", + "@sveltejs/adapter-node": "^5.4.0", + "@sveltejs/kit": "^2.49.1", "@tinyhttp/app": "^3.0.1", "@trpc/server": "^11.1.0", "@whatwg-node/server": "^0.10.6", @@ -73,6 +75,8 @@ "restify": "^11.0.0", "router": "^2.2.0", "srvx": "^0.9.4", + "svelte": "^5.45.5", + "vite": "^7.2.6", "x-xss-protection": "^2.0.0" }, "devDependencies": {