From 0a4c09afd9ca027d676fd887dcc4bd3078c879b5 Mon Sep 17 00:00:00 2001 From: Alexander Karan <47707063+AlexanderKaran@users.noreply.github.com> Date: Tue, 8 Sep 2026 20:21:20 +0800 Subject: [PATCH] Remove Mastro --- .github/frameworks.json | 48 ---- packages/app-mastro/.vscode/extensions.json | 3 - packages/app-mastro/README.md | 40 ---- packages/app-mastro/ci-stats.json | 214 ------------------ packages/app-mastro/components/Layout.ts | 21 -- packages/app-mastro/generated/styles.css | 26 --- packages/app-mastro/handlers/detail.ts | 7 - packages/app-mastro/handlers/home.ts | 29 --- packages/app-mastro/package.json | 21 -- packages/app-mastro/pnpm-lock.yaml | 63 ------ packages/app-mastro/pnpm-workspace.yaml | 6 - packages/app-mastro/routes/styles.css | 26 --- packages/app-mastro/server.ts | 32 --- packages/app-mastro/tsconfig.json | 15 -- .../docs/src/components/FrameworkLists.astro | 1 - .../src/content/devtime/starter-mastro.json | 53 ----- .../docs/src/content/docs/framework/mastro.md | 7 - packages/docs/src/content/docs/methodology.md | 3 +- .../docs/src/content/runtime/app-mastro.json | 209 ----------------- packages/docs/src/lib/collections.ts | 1 - .../starter-mastro/.vscode/extensions.json | 3 - packages/starter-mastro/README.md | 40 ---- packages/starter-mastro/ci-stats.json | 58 ----- packages/starter-mastro/components/Layout.ts | 21 -- packages/starter-mastro/package.json | 20 -- packages/starter-mastro/pnpm-lock.yaml | 63 ------ packages/starter-mastro/pnpm-workspace.yaml | 6 - .../starter-mastro/routes/index.server.ts | 10 - packages/starter-mastro/routes/styles.css | 26 --- packages/starter-mastro/server.ts | 15 -- packages/starter-mastro/tsconfig.json | 15 -- .../stats-generator/src/dev-server.test.ts | 4 +- packages/stats-generator/src/dev-server.ts | 8 +- .../stats-generator/src/interaction-timing.ts | 2 +- .../stats-generator/src/node-engines.test.ts | 6 +- packages/stats-generator/src/serve/mastro.ts | 17 -- .../src/serverSideRendered/index.ts | 7 - packages/stats-generator/src/ssrLoad/index.ts | 6 - .../ssrRequestThroughput/handlers/mastro.ts | 18 -- .../src/ssrRequestThroughput/index.ts | 7 - 40 files changed, 9 insertions(+), 1168 deletions(-) delete mode 100644 packages/app-mastro/.vscode/extensions.json delete mode 100644 packages/app-mastro/README.md delete mode 100644 packages/app-mastro/ci-stats.json delete mode 100644 packages/app-mastro/components/Layout.ts delete mode 100644 packages/app-mastro/generated/styles.css delete mode 100644 packages/app-mastro/handlers/detail.ts delete mode 100644 packages/app-mastro/handlers/home.ts delete mode 100644 packages/app-mastro/package.json delete mode 100644 packages/app-mastro/pnpm-lock.yaml delete mode 100644 packages/app-mastro/pnpm-workspace.yaml delete mode 100644 packages/app-mastro/routes/styles.css delete mode 100644 packages/app-mastro/server.ts delete mode 100644 packages/app-mastro/tsconfig.json delete mode 100644 packages/docs/src/content/devtime/starter-mastro.json delete mode 100644 packages/docs/src/content/docs/framework/mastro.md delete mode 100644 packages/docs/src/content/runtime/app-mastro.json delete mode 100644 packages/starter-mastro/.vscode/extensions.json delete mode 100644 packages/starter-mastro/README.md delete mode 100644 packages/starter-mastro/ci-stats.json delete mode 100644 packages/starter-mastro/components/Layout.ts delete mode 100644 packages/starter-mastro/package.json delete mode 100644 packages/starter-mastro/pnpm-lock.yaml delete mode 100644 packages/starter-mastro/pnpm-workspace.yaml delete mode 100644 packages/starter-mastro/routes/index.server.ts delete mode 100644 packages/starter-mastro/routes/styles.css delete mode 100644 packages/starter-mastro/server.ts delete mode 100644 packages/starter-mastro/tsconfig.json delete mode 100644 packages/stats-generator/src/serve/mastro.ts delete mode 100644 packages/stats-generator/src/ssrRequestThroughput/handlers/mastro.ts diff --git a/.github/frameworks.json b/.github/frameworks.json index 45078f2d..bb652ada 100644 --- a/.github/frameworks.json +++ b/.github/frameworks.json @@ -69,54 +69,6 @@ ] } }, - { - "name": "mastro", - "displayName": "Mastro", - "frameworkPackage": "jsr:@mastrojs/mastro", - "focusedFramework": false, - "starter": { - "package": "starter-mastro", - "buildScript": "build", - "buildOutputDir": "generated", - "devServerPort": 8000, - "measurements": [ - { - "type": "install", - "runFrequency": 5 - }, - { - "type": "build", - "runFrequency": 5 - }, - { - "type": "devServer", - "runFrequency": 5 - }, - { - "type": "dependencies" - }, - { - "type": "browserBaseline" - } - ] - }, - "app": { - "package": "app-mastro", - "buildScript": "build", - "buildOutputDir": "generated", - "measurements": [ - { - "type": "ssrRequestThroughput" - }, - { - "type": "serverSideRendered" - }, - { - "type": "ssrLoad" - } - ] - } - }, { "name": "next", "displayName": "Next.js", diff --git a/packages/app-mastro/.vscode/extensions.json b/packages/app-mastro/.vscode/extensions.json deleted file mode 100644 index 74a66e8b..00000000 --- a/packages/app-mastro/.vscode/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": ["ms-fast.fast-tagged-templates"] -} diff --git a/packages/app-mastro/README.md b/packages/app-mastro/README.md deleted file mode 100644 index ecd9935b..00000000 --- a/packages/app-mastro/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# Mastro Template Basic for Node.js - -This is a basic TypeScript template for [Mastro](https://mastrojs.github.io) when using [Node.js](https://nodejs.org). - -Click the green **Use this template** button in the top right to create your own copy of this repository. Then clone the **Code** to your computer. - -## Run locally - -If you have multiple projects on your computer that require different Node.js versions, you should install a tool to manage those version for you; for example [Volta](https://volta.sh/) (see [pnpm Support](https://docs.volta.sh/advanced/pnpm)). - -Mastro requires Node.js >=24 (unless you want to install a [`URLPattern` polyfill](https://www.npmjs.com/package/urlpattern-polyfill)). - -[JSR recommends](https://jsr.io/docs/npm-compatibility#installing-and-using-jsr-packages) to use `pnpm`. - -The first time, you need to: - - pnpm install - -After that, to start the server: - - pnpm run start - -and open in your browser. - -To generate the whole static site (this will create a `generated` folder): - - pnpm run generate - -## Next steps - -To see how Mastro works, [follow the guide](https://mastrojs.github.io/guide/server-side-components-and-routing/). - -To make sure you're using the latest Mastro packages: - - pnpm update "@mastrojs/*" --latest - -## Deploy to production - -- [Deploy static site](https://mastrojs.github.io/guide/deploy/#deploy-static-site-with-ci%2Fcd) -- [Deploy server](https://mastrojs.github.io/guide/deploy/#deploy-server-to-production) diff --git a/packages/app-mastro/ci-stats.json b/packages/app-mastro/ci-stats.json deleted file mode 100644 index b585fec7..00000000 --- a/packages/app-mastro/ci-stats.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "timingMeasuredAt": "2026-09-05T12:13:00.998Z", - "runner": "Depot depot-ubuntu-24.04 GitHub Actions runner (2 CPUs, 8 GB RAM, 100 GB disk, 2 GB disk accelerator)", - "ssrRequestThroughputTests": { - "opsPerSec": 345, - "avgLatencyMs": 2.917, - "medianLatencyMs": 2.866, - "samples": 3428, - "bodySizeKb": 327.46, - "duplicationFactor": 1.5 - }, - "packageJson": { - "dependencies": { - "@mastrojs/mastro": "jsr:^0.7.13", - "@remix-run/node-fetch-server": "^0.11" - }, - "devDependencies": { - "@types/node": "^24", - "typescript": "^5" - } - }, - "ssrLoadTests": { - "peakWorkers": 25, - "peakRequestsPerSec": 582.6, - "peakAvgLatencyMs": 42.21, - "peakP50LatencyMs": 42, - "peakP75LatencyMs": 43, - "peakP90LatencyMs": 44, - "peakP99LatencyMs": 44, - "totalRequests": 18499, - "totalErrors": 0, - "stages": [ - { - "workers": 1, - "durationMs": 5010, - "requests": 1690, - "errors": 0, - "requestsPerSec": 338, - "avgLatencyMs": 2.31, - "medianLatencyMs": 2, - "p50LatencyMs": 2, - "p75LatencyMs": 3, - "p90LatencyMs": 3, - "p99LatencyMs": 3, - "maxLatencyMs": 5, - "bytesPerSec": 113396940.8 - }, - { - "workers": 5, - "durationMs": 5000, - "requests": 2589, - "errors": 0, - "requestsPerSec": 517.8, - "avgLatencyMs": 9.2, - "medianLatencyMs": 9, - "p50LatencyMs": 9, - "p75LatencyMs": 9, - "p90LatencyMs": 10, - "p99LatencyMs": 12, - "maxLatencyMs": 15, - "bytesPerSec": 173735936 - }, - { - "workers": 10, - "durationMs": 5000, - "requests": 2768, - "errors": 0, - "requestsPerSec": 553.6, - "avgLatencyMs": 17.47, - "medianLatencyMs": 17, - "p50LatencyMs": 17, - "p75LatencyMs": 18, - "p90LatencyMs": 19, - "p99LatencyMs": 20, - "maxLatencyMs": 38, - "bytesPerSec": 185715916.8 - }, - { - "workers": 25, - "durationMs": 5000, - "requests": 2913, - "errors": 0, - "requestsPerSec": 582.6, - "avgLatencyMs": 42.21, - "medianLatencyMs": 42, - "p50LatencyMs": 42, - "p75LatencyMs": 43, - "p90LatencyMs": 44, - "p99LatencyMs": 44, - "maxLatencyMs": 141, - "bytesPerSec": 195467673.6 - }, - { - "workers": 50, - "durationMs": 5000, - "requests": 2889, - "errors": 0, - "requestsPerSec": 577.8, - "avgLatencyMs": 85.35, - "medianLatencyMs": 84, - "p50LatencyMs": 84, - "p75LatencyMs": 85, - "p90LatencyMs": 86, - "p99LatencyMs": 112, - "maxLatencyMs": 544, - "bytesPerSec": 193842380.8 - }, - { - "workers": 100, - "durationMs": 5010, - "requests": 2859, - "errors": 0, - "requestsPerSec": 571.8, - "avgLatencyMs": 171.53, - "medianLatencyMs": 163, - "p50LatencyMs": 163, - "p75LatencyMs": 168, - "p90LatencyMs": 181, - "p99LatencyMs": 1431, - "maxLatencyMs": 2804, - "bytesPerSec": 191850086.4 - }, - { - "workers": 200, - "durationMs": 5010, - "requests": 2791, - "errors": 0, - "requestsPerSec": 558.21, - "avgLatencyMs": 232.51, - "medianLatencyMs": 166, - "p50LatencyMs": 166, - "p75LatencyMs": 209, - "p90LatencyMs": 225, - "p99LatencyMs": 3090, - "maxLatencyMs": 4995, - "bytesPerSec": 187288780.8 - } - ] - }, - "browserVersion": "Google Chrome 152.0.7977.64", - "serverSideRenderedTests": { - "firstPaintMs": 77.8, - "fcpMs": 77.71, - "interactionTests": { - "scenario": "first-row-detail-navigation", - "source": "lighthouse-inp-breakdown", - "interactionLatencyMs": 1.85, - "inputDelayMs": 1.53, - "processingDurationMs": 0.31, - "presentationDelayMs": 0 - }, - "runs": 5, - "standardDeviation": { - "firstPaintMs": 14.31, - "fcpMs": 14.52, - "interactionLatencyMs": 1.46, - "inputDelayMs": 1.31, - "processingDurationMs": 0.23, - "presentationDelayMs": 0 - }, - "samples": [ - { - "firstPaintMs": 70, - "fcpMs": 69.956, - "interactionTests": { - "interactionLatencyMs": 0.7909999999999999, - "inputDelayMs": 0.567, - "processingDurationMs": 0.224, - "presentationDelayMs": 0 - } - }, - { - "firstPaintMs": 99, - "fcpMs": 99.339, - "interactionTests": { - "interactionLatencyMs": 3.683, - "inputDelayMs": 2.955, - "processingDurationMs": 0.728, - "presentationDelayMs": 0 - } - }, - { - "firstPaintMs": 65, - "fcpMs": 64.705, - "interactionTests": { - "interactionLatencyMs": 0.873, - "inputDelayMs": 0.674, - "processingDurationMs": 0.199, - "presentationDelayMs": 0 - } - }, - { - "firstPaintMs": 86, - "fcpMs": 85.81, - "interactionTests": { - "interactionLatencyMs": 3.1870000000000003, - "inputDelayMs": 2.974, - "processingDurationMs": 0.213, - "presentationDelayMs": 0 - } - }, - { - "firstPaintMs": 69, - "fcpMs": 68.745, - "interactionTests": { - "interactionLatencyMs": 0.694, - "inputDelayMs": 0.489, - "processingDurationMs": 0.205, - "presentationDelayMs": 0 - } - } - ] - } -} diff --git a/packages/app-mastro/components/Layout.ts b/packages/app-mastro/components/Layout.ts deleted file mode 100644 index f9ae3c28..00000000 --- a/packages/app-mastro/components/Layout.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { type Html, html } from '@mastrojs/mastro' - -interface Props { - children: Html - title: string -} - -export const Layout = (props: Props) => html` - - - - - ${props.title} - - - -

${props.title}

- ${props.children} - - -` diff --git a/packages/app-mastro/generated/styles.css b/packages/app-mastro/generated/styles.css deleted file mode 100644 index efa12c41..00000000 --- a/packages/app-mastro/generated/styles.css +++ /dev/null @@ -1,26 +0,0 @@ -html { - font-family: sans-serif; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - word-break: break-word; - text-wrap-style: pretty; -} - -p { - hyphens: auto; - word-break: break-word; -} - -img { - max-width: 100%; -} - -@view-transition { - navigation: auto; -} diff --git a/packages/app-mastro/handlers/detail.ts b/packages/app-mastro/handlers/detail.ts deleted file mode 100644 index 3a8ee038..00000000 --- a/packages/app-mastro/handlers/detail.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { getParams, html, htmlToResponse } from '@mastrojs/mastro' - -export const GET = (request: Request) => { - const { id } = getParams(request) - - return htmlToResponse(html`

${id}

`) -} diff --git a/packages/app-mastro/handlers/home.ts b/packages/app-mastro/handlers/home.ts deleted file mode 100644 index f472b83f..00000000 --- a/packages/app-mastro/handlers/home.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { testData } from '../../testdata/src/ssr.ts' -import { html, htmlToResponse } from '@mastrojs/mastro' -import { Layout } from '../components/Layout.ts' - -export const GET = async () => { - const entries = await testData() - return htmlToResponse( - Layout({ - title: 'Test', - children: html` - - - ${entries.map( - (entry) => html` - - - - - - `, - )} - -
${entry.id}${entry.name} - View → -
- `, - }), - ) -} diff --git a/packages/app-mastro/package.json b/packages/app-mastro/package.json deleted file mode 100644 index 18ec6806..00000000 --- a/packages/app-mastro/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "app-mastro", - "private": true, - "type": "module", - "scripts": { - "dev": "node --watch server.ts", - "build": "node node_modules/@mastrojs/mastro/src/generator.js", - "type-check": "tsc" - }, - "dependencies": { - "@mastrojs/mastro": "jsr:^0.7.13", - "@remix-run/node-fetch-server": "^0.11" - }, - "devDependencies": { - "@types/node": "^24", - "typescript": "^5" - }, - "engines": { - "node": ">=24.12" - } -} diff --git a/packages/app-mastro/pnpm-lock.yaml b/packages/app-mastro/pnpm-lock.yaml deleted file mode 100644 index 974d5aac..00000000 --- a/packages/app-mastro/pnpm-lock.yaml +++ /dev/null @@ -1,63 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@mastrojs/mastro': - specifier: jsr:^0.7.13 - version: '@jsr/mastrojs__mastro@0.7.13' - '@remix-run/node-fetch-server': - specifier: ^0.11 - version: 0.11.0 - devDependencies: - '@types/node': - specifier: ^24 - version: 24.10.13 - typescript: - specifier: ^5 - version: 5.9.3 - -packages: - - '@jsr/mastrojs__mastro@0.7.13': - resolution: {integrity: sha512-x/7dVGwaZgcNe1JneXiD7xzjajjdEUCM7F+duaidXV7qwLxHnVD7HY468GTcQH33JrhGlLEVtnRAQhiHGR9IOQ==, tarball: https://npm.jsr.io/~/11/@jsr/mastrojs__mastro/0.7.13.tgz} - - '@jsr/std__media-types@1.1.0': - resolution: {integrity: sha512-dHvaxHL7ENWnltgL653uo3KnKFse3ZbopZop2gqsT7yrscx7irZEClu5Cba7gMPPRk4Lg1FbriNcaBViM2RSBw==, tarball: https://npm.jsr.io/~/11/@jsr/std__media-types/1.1.0.tgz} - - '@remix-run/node-fetch-server@0.11.0': - resolution: {integrity: sha512-nCrFHVxDFioSHc0g/3m5ztwgjBt7g8qh/UwmYkDjuMePKFepMKfNGgH5S6L7iXKX+jUrf3ooVmhx3NGIoa9iYA==} - - '@types/node@24.10.13': - resolution: {integrity: sha512-oH72nZRfDv9lADUBSo104Aq7gPHpQZc4BTx38r9xf9pg5LfP6EzSyH2n7qFmmxRQXh7YlUXODcYsg6PuTDSxGg==} - - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@7.16.0: - resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - -snapshots: - - '@jsr/mastrojs__mastro@0.7.13': - dependencies: - '@jsr/std__media-types': 1.1.0 - - '@jsr/std__media-types@1.1.0': {} - - '@remix-run/node-fetch-server@0.11.0': {} - - '@types/node@24.10.13': - dependencies: - undici-types: 7.16.0 - - typescript@5.9.3: {} - - undici-types@7.16.0: {} diff --git a/packages/app-mastro/pnpm-workspace.yaml b/packages/app-mastro/pnpm-workspace.yaml deleted file mode 100644 index dd5be382..00000000 --- a/packages/app-mastro/pnpm-workspace.yaml +++ /dev/null @@ -1,6 +0,0 @@ -packages: - - . - -allowBuilds: - esbuild: true - sharp: true diff --git a/packages/app-mastro/routes/styles.css b/packages/app-mastro/routes/styles.css deleted file mode 100644 index efa12c41..00000000 --- a/packages/app-mastro/routes/styles.css +++ /dev/null @@ -1,26 +0,0 @@ -html { - font-family: sans-serif; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - word-break: break-word; - text-wrap-style: pretty; -} - -p { - hyphens: auto; - word-break: break-word; -} - -img { - max-width: 100%; -} - -@view-transition { - navigation: auto; -} diff --git a/packages/app-mastro/server.ts b/packages/app-mastro/server.ts deleted file mode 100644 index 5ebc9522..00000000 --- a/packages/app-mastro/server.ts +++ /dev/null @@ -1,32 +0,0 @@ -import * as http from 'node:http' -import { createRequestListener } from '@remix-run/node-fetch-server' -import { Mastro } from '@mastrojs/mastro/server-programmatic' -import { GET as getDetail } from './handlers/detail.ts' -import { GET as getHome } from './handlers/home.ts' - -// This is using Mastro's programmatic (Express-like) router -// because the default file-based router requires the -// current working directory to be the project root, which isn't -// always the case in this pnpm monorepo. - -export const handler = new Mastro() - .get('/', getHome) - .get('/ssr-throughput', getHome) - .get('/server-side-rendered', getHome) - .get('/server-side-rendered/:id', getDetail) - .createHandler() - -const host = process.env.HOST ?? '127.0.0.1' -const port = Number.parseInt(process.env.PORT ?? '8000', 10) - -if (import.meta.main) { - const server = http.createServer(createRequestListener(handler)) - - server.on('error', (e) => { - console.error(e) - }) - - server.listen(port, host, () => { - console.log(`Server running at http://${host}:${port}`) - }) -} diff --git a/packages/app-mastro/tsconfig.json b/packages/app-mastro/tsconfig.json deleted file mode 100644 index 826c1a4e..00000000 --- a/packages/app-mastro/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "compilerOptions": { - "allowImportingTsExtensions": true, - "module": "NodeNext", - "moduleResolution": "nodenext", - "noEmit": true, - "skipLibCheck": true, - "strict": true, - "verbatimModuleSyntax": true, - - "noFallthroughCasesInSwitch": true, - "noUncheckedIndexedAccess": true, - "noImplicitOverride": true - } -} diff --git a/packages/docs/src/components/FrameworkLists.astro b/packages/docs/src/components/FrameworkLists.astro index 802c28b5..f379d808 100644 --- a/packages/docs/src/components/FrameworkLists.astro +++ b/packages/docs/src/components/FrameworkLists.astro @@ -11,7 +11,6 @@ const frameworkLogos: Record< src: '/framework-logos/astro-gradient.svg', className: 'framework-card-logo--astro', }, - 'starter-mastro': { symbol: '👨‍🍳' }, 'starter-next-js': { src: '/framework-logos/nextdotjs-light.svg', className: 'framework-card-logo--next', diff --git a/packages/docs/src/content/devtime/starter-mastro.json b/packages/docs/src/content/devtime/starter-mastro.json deleted file mode 100644 index 6616a951..00000000 --- a/packages/docs/src/content/devtime/starter-mastro.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "name": "Mastro", - "package": "starter-mastro", - "isFocused": false, - "type": "starter-kit", - "prodDependencies": 2, - "devDependencies": 2, - "allDependencies": 6, - "timingMeasuredAt": "2026-09-05T12:13:00.998Z", - "runner": "Depot depot-ubuntu-24.04 GitHub Actions runner (2 CPUs, 8 GB RAM, 100 GB disk, 2 GB disk accelerator)", - "frameworkVersion": "unknown", - "installTime": { - "avgMs": 485.6, - "standardDeviationMs": 13.7, - "minMs": 472, - "maxMs": 508, - "samplesMs": [472, 480, 480, 508, 488] - }, - "nodeModulesSize": 30572544, - "coldBuildTime": { - "avgMs": 295.6, - "standardDeviationMs": 6.02, - "minMs": 289, - "maxMs": 302, - "samplesMs": [292, 302, 289, 293, 302] - }, - "warmBuildTime": { - "avgMs": 304.4, - "standardDeviationMs": 11.72, - "minMs": 286, - "maxMs": 316, - "samplesMs": [286, 303, 313, 316, 304] - }, - "order": 2, - "duplicateDependencies": 0, - "depInstallSize": 28724892, - "e18eMessages": [], - "vendoredCoreJsSize": 0, - "vendoredCoreJsUnnecessaryModules": [], - "browserBaselineTests": { - "baselineStatus": null, - "baselineYear": null, - "baselineReason": null, - "baselineFeatureCount": 0 - }, - "frameworkDependencies": { - "prodDependencies": 1, - "devDependencies": 0, - "allDependencies": 1 - }, - "minimumNodeVersion": "24.12.0", - "minimumNodeVersionImposedBy": ["starter-mastro"] -} diff --git a/packages/docs/src/content/docs/framework/mastro.md b/packages/docs/src/content/docs/framework/mastro.md deleted file mode 100644 index 63ce8094..00000000 --- a/packages/docs/src/content/docs/framework/mastro.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Mastro -description: Mastro version comparison page. ---- - -Versioning has not been turned on for Mastro yet, so past comparisons are not -active. diff --git a/packages/docs/src/content/docs/methodology.md b/packages/docs/src/content/docs/methodology.md index d2dfed2e..791d8f9d 100644 --- a/packages/docs/src/content/docs/methodology.md +++ b/packages/docs/src/content/docs/methodology.md @@ -110,8 +110,7 @@ matches the framework version tracked by the starter project. - The port is the starter's default dev port, recorded as `devServerPort` in `.github/frameworks.json`. The starters are not modified, so whatever they ship is inside the measurement: Nuxt and TanStack Start enable devtools, - and Astro and React Router generate types at boot. Mastro's `dev` script is - a plain `node --watch` server rather than a framework dev server. + and Astro and React Router generate types at boot. - The dev server runs with a minimal environment (`PATH`, `HOME`, `TMPDIR`, `LANG`, `LC_ALL`) plus telemetry opt-outs, so the terminal that launches the benchmark cannot change how the framework behaves. Astro, for example, diff --git a/packages/docs/src/content/runtime/app-mastro.json b/packages/docs/src/content/runtime/app-mastro.json deleted file mode 100644 index de8f0998..00000000 --- a/packages/docs/src/content/runtime/app-mastro.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "name": "Mastro", - "package": "app-mastro", - "type": "runtime-app", - "isFocused": false, - "timingMeasuredAt": "2026-09-05T12:13:00.998Z", - "runner": "Depot depot-ubuntu-24.04 GitHub Actions runner (2 CPUs, 8 GB RAM, 100 GB disk, 2 GB disk accelerator)", - "order": 2, - "ssrRequestThroughputTests": { - "opsPerSec": 345, - "avgLatencyMs": 2.917, - "medianLatencyMs": 2.866, - "samples": 3428, - "bodySizeKb": 327.46, - "duplicationFactor": 1.5 - }, - "ssrLoadTests": { - "peakWorkers": 25, - "peakRequestsPerSec": 582.6, - "peakAvgLatencyMs": 42.21, - "peakP50LatencyMs": 42, - "peakP75LatencyMs": 43, - "peakP90LatencyMs": 44, - "peakP99LatencyMs": 44, - "totalRequests": 18499, - "totalErrors": 0, - "stages": [ - { - "workers": 1, - "durationMs": 5010, - "requests": 1690, - "errors": 0, - "requestsPerSec": 338, - "avgLatencyMs": 2.31, - "medianLatencyMs": 2, - "p50LatencyMs": 2, - "p75LatencyMs": 3, - "p90LatencyMs": 3, - "p99LatencyMs": 3, - "maxLatencyMs": 5, - "bytesPerSec": 113396940.8 - }, - { - "workers": 5, - "durationMs": 5000, - "requests": 2589, - "errors": 0, - "requestsPerSec": 517.8, - "avgLatencyMs": 9.2, - "medianLatencyMs": 9, - "p50LatencyMs": 9, - "p75LatencyMs": 9, - "p90LatencyMs": 10, - "p99LatencyMs": 12, - "maxLatencyMs": 15, - "bytesPerSec": 173735936 - }, - { - "workers": 10, - "durationMs": 5000, - "requests": 2768, - "errors": 0, - "requestsPerSec": 553.6, - "avgLatencyMs": 17.47, - "medianLatencyMs": 17, - "p50LatencyMs": 17, - "p75LatencyMs": 18, - "p90LatencyMs": 19, - "p99LatencyMs": 20, - "maxLatencyMs": 38, - "bytesPerSec": 185715916.8 - }, - { - "workers": 25, - "durationMs": 5000, - "requests": 2913, - "errors": 0, - "requestsPerSec": 582.6, - "avgLatencyMs": 42.21, - "medianLatencyMs": 42, - "p50LatencyMs": 42, - "p75LatencyMs": 43, - "p90LatencyMs": 44, - "p99LatencyMs": 44, - "maxLatencyMs": 141, - "bytesPerSec": 195467673.6 - }, - { - "workers": 50, - "durationMs": 5000, - "requests": 2889, - "errors": 0, - "requestsPerSec": 577.8, - "avgLatencyMs": 85.35, - "medianLatencyMs": 84, - "p50LatencyMs": 84, - "p75LatencyMs": 85, - "p90LatencyMs": 86, - "p99LatencyMs": 112, - "maxLatencyMs": 544, - "bytesPerSec": 193842380.8 - }, - { - "workers": 100, - "durationMs": 5010, - "requests": 2859, - "errors": 0, - "requestsPerSec": 571.8, - "avgLatencyMs": 171.53, - "medianLatencyMs": 163, - "p50LatencyMs": 163, - "p75LatencyMs": 168, - "p90LatencyMs": 181, - "p99LatencyMs": 1431, - "maxLatencyMs": 2804, - "bytesPerSec": 191850086.4 - }, - { - "workers": 200, - "durationMs": 5010, - "requests": 2791, - "errors": 0, - "requestsPerSec": 558.21, - "avgLatencyMs": 232.51, - "medianLatencyMs": 166, - "p50LatencyMs": 166, - "p75LatencyMs": 209, - "p90LatencyMs": 225, - "p99LatencyMs": 3090, - "maxLatencyMs": 4995, - "bytesPerSec": 187288780.8 - } - ] - }, - "browserVersion": "Google Chrome 152.0.7977.64", - "serverSideRenderedTests": { - "firstPaintMs": 77.8, - "fcpMs": 77.71, - "interactionTests": { - "scenario": "first-row-detail-navigation", - "source": "lighthouse-inp-breakdown", - "interactionLatencyMs": 1.85, - "inputDelayMs": 1.53, - "processingDurationMs": 0.31, - "presentationDelayMs": 0 - }, - "runs": 5, - "standardDeviation": { - "firstPaintMs": 14.31, - "fcpMs": 14.52, - "interactionLatencyMs": 1.46, - "inputDelayMs": 1.31, - "processingDurationMs": 0.23, - "presentationDelayMs": 0 - }, - "samples": [ - { - "firstPaintMs": 70, - "fcpMs": 69.956, - "interactionTests": { - "interactionLatencyMs": 0.7909999999999999, - "inputDelayMs": 0.567, - "processingDurationMs": 0.224, - "presentationDelayMs": 0 - } - }, - { - "firstPaintMs": 99, - "fcpMs": 99.339, - "interactionTests": { - "interactionLatencyMs": 3.683, - "inputDelayMs": 2.955, - "processingDurationMs": 0.728, - "presentationDelayMs": 0 - } - }, - { - "firstPaintMs": 65, - "fcpMs": 64.705, - "interactionTests": { - "interactionLatencyMs": 0.873, - "inputDelayMs": 0.674, - "processingDurationMs": 0.199, - "presentationDelayMs": 0 - } - }, - { - "firstPaintMs": 86, - "fcpMs": 85.81, - "interactionTests": { - "interactionLatencyMs": 3.1870000000000003, - "inputDelayMs": 2.974, - "processingDurationMs": 0.213, - "presentationDelayMs": 0 - } - }, - { - "firstPaintMs": 69, - "fcpMs": 68.745, - "interactionTests": { - "interactionLatencyMs": 0.694, - "inputDelayMs": 0.489, - "processingDurationMs": 0.205, - "presentationDelayMs": 0 - } - } - ] - } -} diff --git a/packages/docs/src/lib/collections.ts b/packages/docs/src/lib/collections.ts index 4667b0fd..31c5fb59 100644 --- a/packages/docs/src/lib/collections.ts +++ b/packages/docs/src/lib/collections.ts @@ -240,7 +240,6 @@ export const minimumNodeVersionTableData = starterStats.map((f) => ({ const frameworkPackageNames: Record = { 'starter-astro': 'astro', - 'starter-mastro': '@mastrojs/mastro', 'starter-next-js': 'next', 'starter-nuxt': 'nuxt', 'starter-react-router': '@react-router/dev', diff --git a/packages/starter-mastro/.vscode/extensions.json b/packages/starter-mastro/.vscode/extensions.json deleted file mode 100644 index 74a66e8b..00000000 --- a/packages/starter-mastro/.vscode/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": ["ms-fast.fast-tagged-templates"] -} diff --git a/packages/starter-mastro/README.md b/packages/starter-mastro/README.md deleted file mode 100644 index ecd9935b..00000000 --- a/packages/starter-mastro/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# Mastro Template Basic for Node.js - -This is a basic TypeScript template for [Mastro](https://mastrojs.github.io) when using [Node.js](https://nodejs.org). - -Click the green **Use this template** button in the top right to create your own copy of this repository. Then clone the **Code** to your computer. - -## Run locally - -If you have multiple projects on your computer that require different Node.js versions, you should install a tool to manage those version for you; for example [Volta](https://volta.sh/) (see [pnpm Support](https://docs.volta.sh/advanced/pnpm)). - -Mastro requires Node.js >=24 (unless you want to install a [`URLPattern` polyfill](https://www.npmjs.com/package/urlpattern-polyfill)). - -[JSR recommends](https://jsr.io/docs/npm-compatibility#installing-and-using-jsr-packages) to use `pnpm`. - -The first time, you need to: - - pnpm install - -After that, to start the server: - - pnpm run start - -and open in your browser. - -To generate the whole static site (this will create a `generated` folder): - - pnpm run generate - -## Next steps - -To see how Mastro works, [follow the guide](https://mastrojs.github.io/guide/server-side-components-and-routing/). - -To make sure you're using the latest Mastro packages: - - pnpm update "@mastrojs/*" --latest - -## Deploy to production - -- [Deploy static site](https://mastrojs.github.io/guide/deploy/#deploy-static-site-with-ci%2Fcd) -- [Deploy server](https://mastrojs.github.io/guide/deploy/#deploy-server-to-production) diff --git a/packages/starter-mastro/ci-stats.json b/packages/starter-mastro/ci-stats.json deleted file mode 100644 index 99e85fea..00000000 --- a/packages/starter-mastro/ci-stats.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "timingMeasuredAt": "2026-09-05T12:13:00.998Z", - "runner": "Depot depot-ubuntu-24.04 GitHub Actions runner (2 CPUs, 8 GB RAM, 100 GB disk, 2 GB disk accelerator)", - "frameworkVersion": "unknown", - "installTime": { - "avgMs": 485.6, - "standardDeviationMs": 13.7, - "minMs": 472, - "maxMs": 508, - "samplesMs": [472, 480, 480, 508, 488] - }, - "nodeModulesSize": 30572544, - "coldBuildTime": { - "avgMs": 295.6, - "standardDeviationMs": 6.02, - "minMs": 289, - "maxMs": 302, - "samplesMs": [292, 302, 289, 293, 302] - }, - "warmBuildTime": { - "avgMs": 304.4, - "standardDeviationMs": 11.72, - "minMs": 286, - "maxMs": 316, - "samplesMs": [286, 303, 313, 316, 304] - }, - "prodDependencies": 2, - "devDependencies": 2, - "allDependencies": 6, - "duplicateDependencies": 0, - "depInstallSize": 28724892, - "e18eMessages": [], - "vendoredCoreJsSize": 0, - "vendoredCoreJsUnnecessaryModules": [], - "browserBaselineTests": { - "baselineStatus": null, - "baselineYear": null, - "baselineReason": null, - "baselineFeatureCount": 0 - }, - "packageJson": { - "dependencies": { - "@mastrojs/mastro": "jsr:^0.7.13", - "@remix-run/node-fetch-server": "^0.11" - }, - "devDependencies": { - "@types/node": "^24", - "typescript": "^5" - } - }, - "frameworkDependencies": { - "prodDependencies": 1, - "devDependencies": 0, - "allDependencies": 1 - }, - "minimumNodeVersion": "24.12.0", - "minimumNodeVersionImposedBy": ["starter-mastro"] -} diff --git a/packages/starter-mastro/components/Layout.ts b/packages/starter-mastro/components/Layout.ts deleted file mode 100644 index f9ae3c28..00000000 --- a/packages/starter-mastro/components/Layout.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { type Html, html } from '@mastrojs/mastro' - -interface Props { - children: Html - title: string -} - -export const Layout = (props: Props) => html` - - - - - ${props.title} - - - -

${props.title}

- ${props.children} - - -` diff --git a/packages/starter-mastro/package.json b/packages/starter-mastro/package.json deleted file mode 100644 index 4c9fbd89..00000000 --- a/packages/starter-mastro/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "starter-mastro", - "type": "module", - "scripts": { - "dev": "node --watch server.ts", - "build": "node node_modules/@mastrojs/mastro/src/generator.js", - "check": "tsc" - }, - "dependencies": { - "@mastrojs/mastro": "jsr:^0.7.13", - "@remix-run/node-fetch-server": "^0.11" - }, - "devDependencies": { - "@types/node": "^24", - "typescript": "^5" - }, - "engines": { - "node": ">=24.12" - } -} diff --git a/packages/starter-mastro/pnpm-lock.yaml b/packages/starter-mastro/pnpm-lock.yaml deleted file mode 100644 index a890b52f..00000000 --- a/packages/starter-mastro/pnpm-lock.yaml +++ /dev/null @@ -1,63 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@mastrojs/mastro': - specifier: jsr:^0.7.13 - version: '@jsr/mastrojs__mastro@0.7.13' - '@remix-run/node-fetch-server': - specifier: ^0.11 - version: 0.11.0 - devDependencies: - '@types/node': - specifier: ^24 - version: 24.12.0 - typescript: - specifier: ^5 - version: 5.9.3 - -packages: - - '@jsr/mastrojs__mastro@0.7.13': - resolution: {integrity: sha512-x/7dVGwaZgcNe1JneXiD7xzjajjdEUCM7F+duaidXV7qwLxHnVD7HY468GTcQH33JrhGlLEVtnRAQhiHGR9IOQ==, tarball: https://npm.jsr.io/~/11/@jsr/mastrojs__mastro/0.7.13.tgz} - - '@jsr/std__media-types@1.1.0': - resolution: {integrity: sha512-dHvaxHL7ENWnltgL653uo3KnKFse3ZbopZop2gqsT7yrscx7irZEClu5Cba7gMPPRk4Lg1FbriNcaBViM2RSBw==, tarball: https://npm.jsr.io/~/11/@jsr/std__media-types/1.1.0.tgz} - - '@remix-run/node-fetch-server@0.11.0': - resolution: {integrity: sha512-nCrFHVxDFioSHc0g/3m5ztwgjBt7g8qh/UwmYkDjuMePKFepMKfNGgH5S6L7iXKX+jUrf3ooVmhx3NGIoa9iYA==} - - '@types/node@24.12.0': - resolution: {integrity: sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==} - - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@7.16.0: - resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - -snapshots: - - '@jsr/mastrojs__mastro@0.7.13': - dependencies: - '@jsr/std__media-types': 1.1.0 - - '@jsr/std__media-types@1.1.0': {} - - '@remix-run/node-fetch-server@0.11.0': {} - - '@types/node@24.12.0': - dependencies: - undici-types: 7.16.0 - - typescript@5.9.3: {} - - undici-types@7.16.0: {} diff --git a/packages/starter-mastro/pnpm-workspace.yaml b/packages/starter-mastro/pnpm-workspace.yaml deleted file mode 100644 index dd5be382..00000000 --- a/packages/starter-mastro/pnpm-workspace.yaml +++ /dev/null @@ -1,6 +0,0 @@ -packages: - - . - -allowBuilds: - esbuild: true - sharp: true diff --git a/packages/starter-mastro/routes/index.server.ts b/packages/starter-mastro/routes/index.server.ts deleted file mode 100644 index 77e5de51..00000000 --- a/packages/starter-mastro/routes/index.server.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { html, htmlToResponse } from '@mastrojs/mastro' -import { Layout } from '../components/Layout.ts' - -export const GET = (_req: Request) => - htmlToResponse( - Layout({ - title: 'Hello World', - children: html`

Welcome!

`, - }), - ) diff --git a/packages/starter-mastro/routes/styles.css b/packages/starter-mastro/routes/styles.css deleted file mode 100644 index efa12c41..00000000 --- a/packages/starter-mastro/routes/styles.css +++ /dev/null @@ -1,26 +0,0 @@ -html { - font-family: sans-serif; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - word-break: break-word; - text-wrap-style: pretty; -} - -p { - hyphens: auto; - word-break: break-word; -} - -img { - max-width: 100%; -} - -@view-transition { - navigation: auto; -} diff --git a/packages/starter-mastro/server.ts b/packages/starter-mastro/server.ts deleted file mode 100644 index d9353884..00000000 --- a/packages/starter-mastro/server.ts +++ /dev/null @@ -1,15 +0,0 @@ -import * as http from 'node:http' -import { createRequestListener } from '@remix-run/node-fetch-server' -import mastro from '@mastrojs/mastro/server' - -const port = 8000 - -const server = http.createServer(createRequestListener(mastro.fetch)) - -server.on('error', (e) => { - console.error(e) -}) - -server.listen(port, () => { - console.log(`Server running at http://localhost:${port}`) -}) diff --git a/packages/starter-mastro/tsconfig.json b/packages/starter-mastro/tsconfig.json deleted file mode 100644 index 826c1a4e..00000000 --- a/packages/starter-mastro/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "compilerOptions": { - "allowImportingTsExtensions": true, - "module": "NodeNext", - "moduleResolution": "nodenext", - "noEmit": true, - "skipLibCheck": true, - "strict": true, - "verbatimModuleSyntax": true, - - "noFallthroughCasesInSwitch": true, - "noUncheckedIndexedAccess": true, - "noImplicitOverride": true - } -} diff --git a/packages/stats-generator/src/dev-server.test.ts b/packages/stats-generator/src/dev-server.test.ts index 132b81eb..fe9d90f0 100644 --- a/packages/stats-generator/src/dev-server.test.ts +++ b/packages/stats-generator/src/dev-server.test.ts @@ -68,7 +68,7 @@ async function freePort(): Promise { return port } -test('probeOnce reports the status and preserves the localhost Host header', async (t) => { +test('probeOnce reports the status and uses the target Host header', async (t) => { let hostHeader = '' const { server, port } = await listen((req, res) => { hostHeader = req.headers.host ?? '' @@ -77,7 +77,7 @@ test('probeOnce reports the status and preserves the localhost Host header', asy t.after(() => close(server)) assert.deepEqual(await probeOnce('127.0.0.1', port, 1000), { status: 503 }) - assert.equal(hostHeader, `localhost:${port}`) + assert.equal(hostHeader, `127.0.0.1:${port}`) }) test('probeOnce reports a refused connection without throwing', async () => { diff --git a/packages/stats-generator/src/dev-server.ts b/packages/stats-generator/src/dev-server.ts index ca3b4846..2a2fafa0 100644 --- a/packages/stats-generator/src/dev-server.ts +++ b/packages/stats-generator/src/dev-server.ts @@ -36,8 +36,6 @@ function ipFamily(address: string): 4 | 6 { return address.includes(':') ? 6 : 4 } -// Mastro serves its dev routes only when the request hostname is `localhost`, -// and fetch() refuses to send a custom Host header, so this uses node:http. export function probeOnce( address: string, port: number, @@ -52,8 +50,7 @@ export function probeOnce( method: 'GET', family: ipFamily(address), agent: false, - setHost: false, - headers: { host: `localhost:${port}`, connection: 'close' }, + headers: { connection: 'close' }, timeout: timeoutMs, }, (response) => { @@ -225,8 +222,7 @@ function signalPid(pid: number, signal: NodeJS.Signals): void { } // Astro re-spawns its dev server detached when it detects an agent terminal, -// so the process group alone is not enough; `node --watch` (Mastro) restarts -// children, so the descendant list alone is not enough either. +// so the process group alone is not enough. export async function killProcessTree( child: ChildProcess, graceMs = 5_000, diff --git a/packages/stats-generator/src/interaction-timing.ts b/packages/stats-generator/src/interaction-timing.ts index c2b50f06..981675cc 100644 --- a/packages/stats-generator/src/interaction-timing.ts +++ b/packages/stats-generator/src/interaction-timing.ts @@ -34,7 +34,7 @@ interface LighthouseTrace { * Lighthouse drops them before pairing the start and end events used to calculate the final interaction timing. * https://github.com/ChromeDevTools/devtools-frontend/blob/main/front_end/models/trace/handlers/UserInteractionsHandler.ts * - * TODO: When Chrome or Lighthouse is bumped, capture repeated Astro and Mastro native-navigation traces. + * TODO: When Chrome or Lighthouse is bumped, capture repeated Astro native-navigation traces. * Remove this normalization if Chrome no longer emits sub-1ms preliminary durations, or if Lighthouse no longer * rejects Event Timing start records whose preliminary duration is below 1 ms. */ diff --git a/packages/stats-generator/src/node-engines.test.ts b/packages/stats-generator/src/node-engines.test.ts index 9604ed63..c7e0d5f0 100644 --- a/packages/stats-generator/src/node-engines.test.ts +++ b/packages/stats-generator/src/node-engines.test.ts @@ -119,12 +119,12 @@ test('disjoint ranges yield null and list every range a candidate failed', () => ]) }) -test('the starter package itself can be the sole imposer', () => { +test('a starter package can be the sole imposer', () => { const stats = resolveMinimumNodeVersion([ - { name: 'starter-mastro', range: '>=24.12' }, + { name: 'starter-example', range: '>=24.12' }, { name: 'a', range: '>=18' }, { name: 'b', range: '^20 || >=22' }, ]) assert.equal(stats.minimumNodeVersion, '24.12.0') - assert.deepEqual(stats.imposedBy, ['starter-mastro']) + assert.deepEqual(stats.imposedBy, ['starter-example']) }) diff --git a/packages/stats-generator/src/serve/mastro.ts b/packages/stats-generator/src/serve/mastro.ts deleted file mode 100644 index 0fe2fd88..00000000 --- a/packages/stats-generator/src/serve/mastro.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { join } from 'node:path' -import { - getHost, - getPort, - parseAppDir, - spawnProductionServer, -} from './common.ts' - -const appDir = parseAppDir() -const HOST = getHost() -const PORT = getPort(8000) -const entryPath = join(appDir, 'server.ts') - -spawnProductionServer([entryPath], appDir, { - HOST, - PORT: String(PORT), -}) diff --git a/packages/stats-generator/src/serverSideRendered/index.ts b/packages/stats-generator/src/serverSideRendered/index.ts index e494ed85..fb5da7c7 100644 --- a/packages/stats-generator/src/serverSideRendered/index.ts +++ b/packages/stats-generator/src/serverSideRendered/index.ts @@ -25,13 +25,6 @@ const SERVER_SIDE_RENDERED_FRAMEWORKS: ServerSideRenderedFrameworkConfig[] = [ serveScript: 'astro.ts', fullDocumentNavigation: true, }, - { - name: 'mastro-server-side-rendered', - displayName: 'Mastro Server Side Rendered', - package: 'app-mastro', - serveScript: 'mastro.ts', - fullDocumentNavigation: true, - }, { name: 'next-server-side-rendered', displayName: 'Next.js Server Side Rendered', diff --git a/packages/stats-generator/src/ssrLoad/index.ts b/packages/stats-generator/src/ssrLoad/index.ts index cf653b11..9d027392 100644 --- a/packages/stats-generator/src/ssrLoad/index.ts +++ b/packages/stats-generator/src/ssrLoad/index.ts @@ -29,12 +29,6 @@ const SSR_LOAD_FRAMEWORKS: SSRLoadFrameworkConfig[] = [ package: 'app-astro', serveScript: 'astro.ts', }, - { - name: 'mastro-ssr-load', - displayName: 'Mastro SSR Load', - package: 'app-mastro', - serveScript: 'mastro.ts', - }, { name: 'next-ssr-load', displayName: 'Next.js SSR Load', diff --git a/packages/stats-generator/src/ssrRequestThroughput/handlers/mastro.ts b/packages/stats-generator/src/ssrRequestThroughput/handlers/mastro.ts deleted file mode 100644 index 4dfd5cc9..00000000 --- a/packages/stats-generator/src/ssrRequestThroughput/handlers/mastro.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { join } from 'node:path' -import { pathToFileURL } from 'node:url' -import { packagesDir } from '../../constants.ts' -import type { ServerRenderHandler } from '../types.ts' - -export async function buildMastroHandler(): Promise { - const entryPath = join(packagesDir, 'app-mastro', 'server.ts') - const entryUrl = pathToFileURL(entryPath).href - const { handler } = await import(entryUrl) - return { - type: 'web', - handler: (request) => { - const url = new URL(request.url) - url.hostname = '127.0.0.1' - return handler(new Request(url, request)) - }, - } -} diff --git a/packages/stats-generator/src/ssrRequestThroughput/index.ts b/packages/stats-generator/src/ssrRequestThroughput/index.ts index f2c8c3df..94d510de 100644 --- a/packages/stats-generator/src/ssrRequestThroughput/index.ts +++ b/packages/stats-generator/src/ssrRequestThroughput/index.ts @@ -1,7 +1,6 @@ import { runBenchmark } from './run-benchmark.ts' import { buildAstroHandler } from './handlers/astro.ts' import { buildBaselineHtmlHandler } from './handlers/baseline-html.ts' -import { buildMastroHandler } from './handlers/mastro.ts' import { buildNuxtHandler } from './handlers/nuxt.ts' import { buildSvelteKitHandler } from './handlers/sveltekit.ts' import { buildNextJSHandler } from './handlers/nextjs.ts' @@ -34,12 +33,6 @@ const SSR_REQUEST_THROUGHPUT_FRAMEWORKS: SSRRequestThroughputFrameworkConfig[] = package: 'app-astro', buildHandler: buildAstroHandler, }, - { - name: 'mastro-ssr-request-throughput', - displayName: 'Mastro SSR Request Handler Throughput', - package: 'app-mastro', - buildHandler: buildMastroHandler, - }, { name: 'nuxt-ssr-request-throughput', displayName: 'Nuxt SSR Request Handler Throughput',