├── frameworks ├── marko │ ├── dist │ ├── .gitignore │ ├── src │ │ ├── components │ │ │ └── app-layout │ │ │ │ ├── favicon.png │ │ │ │ └── index.marko │ │ └── pages │ │ │ ├── todo.marko │ │ │ ├── dashboard.marko │ │ │ └── index.marko │ ├── package.json │ └── README.md ├── hydrogen │ ├── src │ │ ├── index.css │ │ ├── components │ │ │ ├── todo-app.client.jsx │ │ │ └── dashboard.client.jsx │ │ ├── routes │ │ │ ├── todo.server.jsx │ │ │ ├── dashboard.server.jsx │ │ │ └── index.server.jsx │ │ ├── App.server.jsx │ │ └── assets │ │ │ └── favicon.svg │ ├── public │ │ └── .gitkeep │ ├── .gitignore │ ├── mini-oxygen.config.json │ ├── vite.config.js │ ├── hydrogen.config.js │ ├── jsconfig.json │ ├── index.html │ ├── package.json │ └── README.md ├── lit │ ├── docs-src │ │ ├── .nojekyll │ │ ├── package.json │ │ ├── todo.md │ │ ├── .eleventyignore │ │ ├── index.md │ │ ├── dashboard.md │ │ ├── _includes │ │ │ ├── relative-path.cjs │ │ │ └── page.11ty.cjs │ │ ├── _data │ │ │ └── api.11tydata.js │ │ ├── _README.md │ │ └── install.md │ ├── src │ │ └── typings.d.ts │ ├── .eslintignore │ ├── .prettierrc.json │ ├── dev │ │ ├── README.md │ │ └── index.html │ ├── index.html │ ├── .gitignore │ ├── .vscode │ │ └── extensions.json │ ├── sever.js │ ├── server.js │ ├── web-dev-server.config.js │ ├── .eleventy.cjs │ ├── tsconfig.json │ ├── rollup.config.js │ ├── .eslintrc.json │ └── LICENSE ├── qwik │ ├── src │ │ ├── typings.d.ts │ │ ├── root.tsx │ │ ├── routes │ │ │ ├── todo │ │ │ │ └── index.tsx │ │ │ ├── index.tsx │ │ │ ├── layout.tsx │ │ │ └── dashboard │ │ │ │ └── index.tsx │ │ ├── global.css │ │ ├── entry.ssr.tsx │ │ ├── entry.dev.tsx │ │ ├── entry.http.tsx │ │ ├── components │ │ │ └── head │ │ │ │ └── head.tsx │ │ └── entry.express.tsx │ ├── public │ │ ├── _headers │ │ ├── favicon.ico │ │ └── favicons │ │ │ ├── apple-touch-icon.png │ │ │ ├── android-chrome-192x192.png │ │ │ └── android-chrome-256x256.png │ ├── .prettierignore │ ├── vite.config.ts │ ├── .eslintignore │ ├── .gitignore │ ├── tsconfig.json │ └── .eslintrc.cjs ├── angular │ ├── src │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── app │ │ │ ├── typings.d.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.ts │ │ │ ├── app.server.module.ts │ │ │ ├── app.module.ts │ │ │ └── app-routing.module.ts │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── styles.css │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ ├── main.server.ts │ │ └── test.ts │ ├── .vscode │ │ ├── extensions.json │ │ ├── launch.json │ │ └── tasks.json │ ├── tsconfig.app.json │ ├── .editorconfig │ ├── tsconfig.server.json │ ├── tsconfig.spec.json │ ├── server.js │ ├── .browserslistrc │ ├── .gitignore │ ├── tsconfig.json │ ├── README.md │ └── karma.conf.js ├── next │ ├── styles │ │ ├── Home.module.css │ │ └── globals.css │ ├── .eslintrc.json │ ├── public │ │ ├── favicon.ico │ │ └── vercel.svg │ ├── next.config.js │ ├── pages │ │ ├── todo.js │ │ ├── api │ │ │ └── hello.js │ │ ├── dashboard.js │ │ ├── index.js │ │ ├── dashboard-ssr.js │ │ └── _app.js │ ├── next-env.d.ts │ ├── .gitignore │ ├── package.json │ └── README.md ├── solid-start │ ├── src │ │ ├── root.css │ │ ├── entry-client.tsx │ │ ├── entry-server.tsx │ │ ├── routes │ │ │ ├── todo.tsx │ │ │ ├── index.tsx │ │ │ ├── dashboard.tsx │ │ │ └── [...404].tsx │ │ └── root.tsx │ ├── public │ │ └── favicon.ico │ ├── vite.config.ts │ ├── .gitignore │ ├── tsconfig.json │ ├── package.json │ ├── README.md │ └── vite.config.ts.timestamp-1660787794719.mjs ├── preact-ssr-node │ ├── .gitignore │ ├── package.json │ └── http.jsx ├── react-ssr-node │ ├── .gitignore │ ├── package.json │ └── http.jsx ├── solid-ssr-node │ ├── .gitignore │ ├── package.json │ ├── rollup.config.js │ └── http.jsx ├── svelte │ ├── .npmrc │ ├── .gitignore │ ├── static │ │ └── favicon.png │ ├── .prettierrc │ ├── vite.config.js │ ├── .prettierignore │ ├── src │ │ ├── routes │ │ │ ├── todo.svelte │ │ │ ├── dashboard.svelte │ │ │ └── index.svelte │ │ └── app.html │ ├── svelte.config.js │ ├── package.json │ └── README.md ├── react │ ├── .env │ ├── public │ │ ├── robots.txt │ │ ├── favicon.ico │ │ ├── logo192.png │ │ ├── logo512.png │ │ └── manifest.json │ ├── src │ │ ├── setupTests.js │ │ ├── App.test.js │ │ ├── index.css │ │ ├── reportWebVitals.js │ │ ├── index.js │ │ └── App.js │ ├── .gitignore │ ├── server.js │ └── package.json ├── vue3 │ ├── env.d.ts │ ├── .vscode │ │ └── extensions.json │ ├── public │ │ └── favicon.ico │ ├── src │ │ ├── main.ts │ │ ├── views │ │ │ ├── HomeView.vue │ │ │ └── AboutView.vue │ │ ├── App.vue │ │ └── router │ │ │ └── index.ts │ ├── index.html │ ├── vite.config.ts │ ├── .gitignore │ ├── package.json │ └── README.md ├── gatsby │ ├── .gitignore │ ├── gatsby-config.js │ ├── src │ │ └── pages │ │ │ ├── todo.js │ │ │ ├── index.js │ │ │ ├── dashboard.js │ │ │ ├── dashboard-ssr.js │ │ │ └── 404.js │ └── package.json ├── nuxt2 │ ├── .prettierrc │ ├── static │ │ └── favicon.ico │ ├── pages │ │ ├── todo.vue │ │ ├── index.vue │ │ └── dashboard.vue │ ├── .editorconfig │ ├── layouts │ │ └── default.vue │ ├── store │ │ └── README.md │ ├── tsconfig.json │ ├── package.json │ ├── nuxt.config.js │ ├── components │ │ └── NuxtLogo.vue │ ├── .gitignore │ └── .prettierignore ├── astro │ ├── .npmrc │ ├── public │ │ └── favicon.ico │ ├── .vscode │ │ ├── extensions.json │ │ └── launch.json │ ├── src │ │ ├── pages │ │ │ ├── todo.astro │ │ │ ├── index.astro │ │ │ └── dashboard.astro │ │ └── layouts │ │ │ └── Layout.astro │ ├── .gitignore │ ├── server.mjs │ ├── tsconfig.json │ ├── astro.config.mjs │ ├── package.json │ └── README.md ├── remix │ ├── .gitignore │ ├── .eslintrc │ ├── public │ │ └── favicon.ico │ ├── app │ │ ├── entry.client.jsx │ │ ├── routes │ │ │ ├── todo.jsx │ │ │ ├── index.jsx │ │ │ └── dashboard.jsx │ │ ├── entry.server.jsx │ │ └── root.jsx │ ├── remix.config.js │ ├── jsconfig.json │ ├── package.json │ └── README.md ├── fresh │ ├── .vscode │ │ ├── extensions.json │ │ └── settings.json │ ├── static │ │ ├── favicon.ico │ │ └── logo.svg │ ├── islands │ │ ├── Todo.tsx │ │ └── Dashboard.tsx │ ├── package-lock.json │ ├── dev.ts │ ├── README.md │ ├── deno.json │ ├── routes │ │ ├── [name].tsx │ │ ├── index.tsx │ │ ├── todo.tsx │ │ ├── dashboard.tsx │ │ └── api │ │ │ └── joke.ts │ ├── package.json │ ├── utils │ │ └── twind.ts │ ├── components │ │ └── Button.tsx │ ├── import_map.json │ ├── main.ts │ └── fresh.gen.ts ├── nuxt3 │ ├── .gitignore │ ├── tsconfig.json │ ├── pages │ │ ├── todo.vue │ │ ├── dashboard-ssr.vue │ │ ├── dashboard.vue │ │ └── index.vue │ ├── layouts │ │ └── default.vue │ ├── nuxt.config.ts │ ├── package.json │ └── README.md ├── react-ssr-bun │ ├── bun.lockb │ ├── package.json │ └── http.js └── react-ssr-deno │ ├── deno.json │ ├── package.json │ ├── import_map.json │ └── http.jsx ├── apps ├── components │ ├── output │ │ ├── marko │ │ │ ├── dist │ │ │ └── marko.json │ │ └── vue │ │ │ └── nuxt.js │ ├── src │ │ ├── components │ │ │ ├── general │ │ │ │ ├── report-table.lits.tsx │ │ │ │ ├── chart.lite.tsx │ │ │ │ ├── tabs.lite.tsx │ │ │ │ ├── accordion.lite.tsx │ │ │ │ ├── highlight.ts │ │ │ │ ├── code-viewer.lite.tsx │ │ │ │ ├── carousel.lite.tsx │ │ │ │ ├── lh-report-chart.lite.tsx │ │ │ │ └── lite-tooltip.lite.tsx │ │ │ ├── dashboard │ │ │ │ ├── search.ts │ │ │ │ ├── benchmarks.ts │ │ │ │ ├── frameworks.ts │ │ │ │ └── framework-picker.lite.tsx │ │ │ ├── hello-world.lite.tsx │ │ │ ├── utils │ │ │ │ ├── sort.ts │ │ │ │ └── generate-csv.ts │ │ │ ├── todo-item.lite.tsx │ │ │ └── dashboard.lite.tsx │ │ ├── index.ts │ │ ├── utils │ │ │ └── map-keys.ts │ │ ├── reports │ │ │ ├── astro_simple.ts │ │ │ ├── qwik_simple.ts │ │ │ ├── fresh_simple.ts │ │ │ ├── marko_simple.ts │ │ │ ├── react_simple.ts │ │ │ ├── gatsby_simple.ts │ │ │ ├── svelte_simple.ts │ │ │ ├── todo │ │ │ │ ├── astro_simple.ts │ │ │ │ ├── lit_simple.ts │ │ │ │ ├── qwik_simple.ts │ │ │ │ ├── svelte_simple.ts │ │ │ │ ├── nuxt2_simple.ts │ │ │ │ ├── gatsby_simple.ts │ │ │ │ ├── marko_simple.ts │ │ │ │ ├── react_simple.ts │ │ │ │ ├── vue3_simple.ts │ │ │ │ ├── hydrogen_simple.ts │ │ │ │ ├── nuxt3_simple.ts │ │ │ │ ├── next_simple.ts │ │ │ │ ├── solid_simple.ts │ │ │ │ ├── angular_simple.ts │ │ │ │ └── fresh_simple.ts │ │ │ ├── dashboard │ │ │ │ ├── astro_simple.ts │ │ │ │ ├── hydrogen_simple.ts │ │ │ │ ├── solid_simple.ts │ │ │ │ ├── next-bun_simple.ts │ │ │ │ ├── qwik_simple.ts │ │ │ │ ├── angular_simple.ts │ │ │ │ ├── lit_simple.ts │ │ │ │ ├── marko_simple.ts │ │ │ │ ├── next_simple.ts │ │ │ │ ├── nuxt2_simple.ts │ │ │ │ ├── vue3_simple.ts │ │ │ │ ├── nuxt3_simple.ts │ │ │ │ ├── react_simple.ts │ │ │ │ ├── fresh_simple.ts │ │ │ │ ├── gatsby_simple.ts │ │ │ │ ├── remix_simple.ts │ │ │ │ └── svelte_simple.ts │ │ │ ├── next_simple.ts │ │ │ ├── vue3_simple.ts │ │ │ ├── nuxt3_simple.ts │ │ │ ├── remix_simple.ts │ │ │ ├── angular_simple.ts │ │ │ ├── hydrogen_simple.ts │ │ │ ├── lit_simple.ts │ │ │ ├── nuxt2_simple.ts │ │ │ └── solid_simple.ts │ │ └── root-styles.ts │ ├── README.md │ ├── .gitignore │ ├── tsconfig.node.json │ ├── tsconfig.json │ └── package.json └── README.md ├── .prettierrc.json ├── src ├── helpers │ ├── range.ts │ ├── sort-by.ts │ ├── get-port.ts │ ├── lighthouse.d.ts │ ├── kill-process.ts │ ├── preview.ts │ ├── get-frameworks.ts │ ├── install.ts │ ├── build.ts │ ├── get-table.ts │ ├── get-js-size.ts │ └── get-simple-report.ts ├── scripts │ ├── install.ts │ ├── serve.ts │ ├── kill.ts │ ├── clean.ts │ ├── dev.ts │ ├── build.ts │ └── gen-simple-reports.ts └── typings.d.ts └── .gitignore /frameworks/marko/dist: -------------------------------------------------------------------------------- 1 | src -------------------------------------------------------------------------------- /frameworks/hydrogen/src/index.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frameworks/lit/docs-src/.nojekyll: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frameworks/qwik/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/components/output/marko/dist: -------------------------------------------------------------------------------- 1 | src -------------------------------------------------------------------------------- /frameworks/angular/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frameworks/hydrogen/public/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frameworks/next/styles/Home.module.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frameworks/solid-start/src/root.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frameworks/angular/src/app/typings.d.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frameworks/preact-ssr-node/.gitignore: -------------------------------------------------------------------------------- 1 | dist -------------------------------------------------------------------------------- /frameworks/react-ssr-node/.gitignore: -------------------------------------------------------------------------------- 1 | dist -------------------------------------------------------------------------------- /frameworks/solid-ssr-node/.gitignore: -------------------------------------------------------------------------------- 1 | dist -------------------------------------------------------------------------------- /frameworks/angular/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frameworks/svelte/.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /frameworks/react/.env: -------------------------------------------------------------------------------- 1 | DISABLE_ESLINT_PLUGIN=true 2 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true 3 | } 4 | -------------------------------------------------------------------------------- /frameworks/marko/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | build 3 | *.log 4 | -------------------------------------------------------------------------------- /frameworks/vue3/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /frameworks/gatsby/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .cache/ 3 | public 4 | -------------------------------------------------------------------------------- /frameworks/lit/docs-src/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "commonjs" 3 | } 4 | -------------------------------------------------------------------------------- /frameworks/lit/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | /// -------------------------------------------------------------------------------- /frameworks/next/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /apps/components/output/marko/marko.json: -------------------------------------------------------------------------------- 1 | { 2 | "tags-dir": "./src/components" 3 | } 4 | -------------------------------------------------------------------------------- /frameworks/nuxt2/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true 4 | } 5 | -------------------------------------------------------------------------------- /frameworks/astro/.npmrc: -------------------------------------------------------------------------------- 1 | # Expose Astro dependencies for `pnpm` users 2 | shamefully-hoist=true 3 | -------------------------------------------------------------------------------- /frameworks/hydrogen/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | node_modules 3 | .DS_Store 4 | dist 5 | *.local 6 | -------------------------------------------------------------------------------- /frameworks/remix/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | 3 | /.cache 4 | /build 5 | /public/build 6 | .env 7 | -------------------------------------------------------------------------------- /src/helpers/range.ts: -------------------------------------------------------------------------------- 1 | export const range = (n: number) => Array.from({ length: n }, (_, k) => k); 2 | -------------------------------------------------------------------------------- /frameworks/react/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /frameworks/angular/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /frameworks/angular/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /frameworks/fresh/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "denoland.vscode-deno" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /frameworks/nuxt3/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | *.log* 3 | .nuxt 4 | .nitro 5 | .cache 6 | .output 7 | .env 8 | dist 9 | -------------------------------------------------------------------------------- /frameworks/remix/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["@remix-run/eslint-config", "@remix-run/eslint-config/node"] 3 | } 4 | -------------------------------------------------------------------------------- /frameworks/qwik/public/_headers: -------------------------------------------------------------------------------- 1 | /build/* 2 | Cache-Control: public, max-age=31536000, s-maxage=31536000, immutable 3 | -------------------------------------------------------------------------------- /frameworks/vue3/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] 3 | } 4 | -------------------------------------------------------------------------------- /frameworks/lit/docs-src/todo.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page.11ty.cjs 3 | title: Todo Example 4 | --- 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/components/src/components/general/report-table.lits.tsx: -------------------------------------------------------------------------------- 1 | export default function ReportTable() { 2 | return
; 3 | } 4 | -------------------------------------------------------------------------------- /frameworks/angular/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuilderIO/framework-benchmarks/HEAD/frameworks/angular/src/favicon.ico -------------------------------------------------------------------------------- /frameworks/astro/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuilderIO/framework-benchmarks/HEAD/frameworks/astro/public/favicon.ico -------------------------------------------------------------------------------- /frameworks/fresh/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuilderIO/framework-benchmarks/HEAD/frameworks/fresh/static/favicon.ico -------------------------------------------------------------------------------- /frameworks/lit/docs-src/.eleventyignore: -------------------------------------------------------------------------------- 1 | # Ignore files with a leading underscore; useful for e.g. readmes in source documentation 2 | _*.md -------------------------------------------------------------------------------- /frameworks/next/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuilderIO/framework-benchmarks/HEAD/frameworks/next/public/favicon.ico -------------------------------------------------------------------------------- /frameworks/nuxt2/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuilderIO/framework-benchmarks/HEAD/frameworks/nuxt2/static/favicon.ico -------------------------------------------------------------------------------- /frameworks/qwik/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuilderIO/framework-benchmarks/HEAD/frameworks/qwik/public/favicon.ico -------------------------------------------------------------------------------- /frameworks/react-ssr-bun/bun.lockb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuilderIO/framework-benchmarks/HEAD/frameworks/react-ssr-bun/bun.lockb -------------------------------------------------------------------------------- /frameworks/react/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuilderIO/framework-benchmarks/HEAD/frameworks/react/public/favicon.ico -------------------------------------------------------------------------------- /frameworks/react/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuilderIO/framework-benchmarks/HEAD/frameworks/react/public/logo192.png -------------------------------------------------------------------------------- /frameworks/react/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuilderIO/framework-benchmarks/HEAD/frameworks/react/public/logo512.png -------------------------------------------------------------------------------- /frameworks/remix/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuilderIO/framework-benchmarks/HEAD/frameworks/remix/public/favicon.ico -------------------------------------------------------------------------------- /frameworks/svelte/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | -------------------------------------------------------------------------------- /frameworks/svelte/static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuilderIO/framework-benchmarks/HEAD/frameworks/svelte/static/favicon.png -------------------------------------------------------------------------------- /frameworks/vue3/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuilderIO/framework-benchmarks/HEAD/frameworks/vue3/public/favicon.ico -------------------------------------------------------------------------------- /src/scripts/install.ts: -------------------------------------------------------------------------------- 1 | import { installAll } from '../helpers/install.js'; 2 | 3 | await installAll(undefined, process.env.PACKAGE); 4 | -------------------------------------------------------------------------------- /frameworks/astro/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["astro-build.astro-vscode"], 3 | "unwantedRecommendations": [] 4 | } 5 | -------------------------------------------------------------------------------- /frameworks/fresh/islands/Todo.tsx: -------------------------------------------------------------------------------- 1 | import Todo from '../components/generated-components/components/todo-app.js'; 2 | export default Todo; 3 | -------------------------------------------------------------------------------- /frameworks/fresh/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fresh", 3 | "lockfileVersion": 2, 4 | "requires": true, 5 | "packages": {} 6 | } 7 | -------------------------------------------------------------------------------- /frameworks/lit/docs-src/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page.11ty.cjs 3 | title: Hello World 4 | --- 5 | 6 | -------------------------------------------------------------------------------- /frameworks/svelte/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "printWidth": 100 6 | } 7 | -------------------------------------------------------------------------------- /frameworks/lit/.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules/* 2 | docs/* 3 | docs-src/* 4 | rollup-config.js 5 | custom-elements.json 6 | web-dev-server.config.js 7 | -------------------------------------------------------------------------------- /frameworks/lit/docs-src/dashboard.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page.11ty.cjs 3 | title: Dashboard Example 4 | --- 5 | 6 | 7 | -------------------------------------------------------------------------------- /frameworks/solid-start/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuilderIO/framework-benchmarks/HEAD/frameworks/solid-start/public/favicon.ico -------------------------------------------------------------------------------- /frameworks/angular/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /frameworks/fresh/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "deno.enable": true, 3 | "deno.lint": true, 4 | "editor.defaultFormatter": "denoland.vscode-deno" 5 | } 6 | -------------------------------------------------------------------------------- /frameworks/fresh/islands/Dashboard.tsx: -------------------------------------------------------------------------------- 1 | import Dashboard from '../components/generated-components/components/dashboard.js'; 2 | export default Dashboard; 3 | -------------------------------------------------------------------------------- /frameworks/hydrogen/src/components/todo-app.client.jsx: -------------------------------------------------------------------------------- 1 | import TodoApp from '../generated-components/components/todo-app'; 2 | 3 | export default TodoApp; 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | debug.json 4 | report.json 5 | report.js 6 | **/generated-components/** 7 | 8 | flow.report.json 9 | flow.report.html -------------------------------------------------------------------------------- /frameworks/solid-start/src/entry-client.tsx: -------------------------------------------------------------------------------- 1 | import { mount, StartClient } from "solid-start/entry-client"; 2 | 3 | mount(() => , document); 4 | -------------------------------------------------------------------------------- /apps/README.md: -------------------------------------------------------------------------------- 1 | # Apps 2 | 3 | Small apps written in [Mitosis](https://github.com/builderio/mitosis) that get compiled and copied to the various output frameworks 4 | -------------------------------------------------------------------------------- /frameworks/hydrogen/src/components/dashboard.client.jsx: -------------------------------------------------------------------------------- 1 | import Dashboard from '../generated-components/components/dashboard'; 2 | 3 | export default Dashboard; 4 | -------------------------------------------------------------------------------- /frameworks/react-ssr-deno/deno.json: -------------------------------------------------------------------------------- 1 | { 2 | "tasks": { 3 | "preview": "deno run --unstable -A http.jsx" 4 | }, 5 | "importMap": "./import_map.json" 6 | } 7 | -------------------------------------------------------------------------------- /frameworks/fresh/dev.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env -S deno run -A --watch=static/,routes/ 2 | 3 | import dev from "$fresh/dev.ts"; 4 | 5 | await dev(import.meta.url, "./main.ts"); 6 | -------------------------------------------------------------------------------- /frameworks/qwik/public/favicons/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuilderIO/framework-benchmarks/HEAD/frameworks/qwik/public/favicons/apple-touch-icon.png -------------------------------------------------------------------------------- /frameworks/hydrogen/src/routes/todo.server.jsx: -------------------------------------------------------------------------------- 1 | import TodoApp from '../components/todo-app.client'; 2 | 3 | export default function Todo() { 4 | return ; 5 | } 6 | -------------------------------------------------------------------------------- /frameworks/marko/src/components/app-layout/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuilderIO/framework-benchmarks/HEAD/frameworks/marko/src/components/app-layout/favicon.png -------------------------------------------------------------------------------- /frameworks/remix/app/entry.client.jsx: -------------------------------------------------------------------------------- 1 | import { RemixBrowser } from "@remix-run/react"; 2 | import { hydrate } from "react-dom"; 3 | 4 | hydrate(, document); 5 | -------------------------------------------------------------------------------- /apps/components/README.md: -------------------------------------------------------------------------------- 1 | # Components 2 | 3 | Example components written in [Mitosis](https://github.com/builderio/mitosis) to compile across frameworks to measure performance. 4 | -------------------------------------------------------------------------------- /apps/components/src/components/dashboard/search.ts: -------------------------------------------------------------------------------- 1 | import Fuse from 'fuse.js'; 2 | import { frameworks } from './frameworks'; 3 | 4 | export const fuse = new Fuse(frameworks); 5 | -------------------------------------------------------------------------------- /frameworks/lit/.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "es5", 3 | "tabWidth": 2, 4 | "singleQuote": true, 5 | "bracketSpacing": false, 6 | "arrowParens": "always" 7 | } 8 | -------------------------------------------------------------------------------- /frameworks/marko/src/pages/todo.marko: -------------------------------------------------------------------------------- 1 | import TodoApp from '../../../../apps/components/output/marko/src/components/todo-app.marko' 2 | 3 | 4 | -------------------------------------------------------------------------------- /frameworks/qwik/public/favicons/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuilderIO/framework-benchmarks/HEAD/frameworks/qwik/public/favicons/android-chrome-192x192.png -------------------------------------------------------------------------------- /frameworks/qwik/public/favicons/android-chrome-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuilderIO/framework-benchmarks/HEAD/frameworks/qwik/public/favicons/android-chrome-256x256.png -------------------------------------------------------------------------------- /frameworks/react-ssr-deno/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "port": 6015, 3 | "scripts": { 4 | "preview": "deno task preview", 5 | "build": "echo 'No need to build'" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /frameworks/remix/app/routes/todo.jsx: -------------------------------------------------------------------------------- 1 | import { ToDoApp } from '../../components/generated-components'; 2 | 3 | export default function Index() { 4 | return ; 5 | } 6 | -------------------------------------------------------------------------------- /frameworks/angular/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 3 | "recommendations": ["angular.ng-template"] 4 | } 5 | -------------------------------------------------------------------------------- /frameworks/gatsby/gatsby-config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | siteMetadata: { 3 | title: `gatsby`, 4 | siteUrl: `https://www.yourdomain.tld`, 5 | }, 6 | plugins: [], 7 | } 8 | -------------------------------------------------------------------------------- /frameworks/remix/app/routes/index.jsx: -------------------------------------------------------------------------------- 1 | import { HelloWorld } from '../../components/generated-components'; 2 | 3 | export default function Index() { 4 | return ; 5 | } 6 | -------------------------------------------------------------------------------- /frameworks/marko/src/pages/dashboard.marko: -------------------------------------------------------------------------------- 1 | import Dashboard from '../../../../apps/components/output/marko/src/components/dashboard.marko' 2 | 3 | 4 | -------------------------------------------------------------------------------- /frameworks/solid-start/vite.config.ts: -------------------------------------------------------------------------------- 1 | import solid from "solid-start/vite"; 2 | import { defineConfig } from "vite"; 3 | 4 | export default defineConfig({ 5 | plugins: [solid()], 6 | }); 7 | -------------------------------------------------------------------------------- /frameworks/hydrogen/src/routes/dashboard.server.jsx: -------------------------------------------------------------------------------- 1 | import Dashboard from '../components/dashboard.client'; 2 | 3 | export default function DashboardPage() { 4 | return ; 5 | } 6 | -------------------------------------------------------------------------------- /frameworks/next/next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | reactStrictMode: true, 4 | swcMinify: true, 5 | } 6 | 7 | module.exports = nextConfig 8 | -------------------------------------------------------------------------------- /frameworks/marko/src/pages/index.marko: -------------------------------------------------------------------------------- 1 | import HelloWorld from '../../../../apps/components/output/marko/src/components/hello-world.marko' 2 | 3 | 4 | -------------------------------------------------------------------------------- /frameworks/nuxt3/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | // https://v3.nuxtjs.org/concepts/typescript 3 | "extends": "./.nuxt/tsconfig.json", 4 | "compilerOptions": { 5 | "esModuleInterop": true 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /apps/components/src/components/dashboard/benchmarks.ts: -------------------------------------------------------------------------------- 1 | export type Benchmark = 'todo' | 'hello world' | 'dashboard'; 2 | 3 | export const benchmarks: Benchmark[] = ['todo', 'hello world', 'dashboard']; 4 | -------------------------------------------------------------------------------- /frameworks/lit/dev/README.md: -------------------------------------------------------------------------------- 1 | This directory contains HTML files containing your element for development. By running `npm run build:watch` and `npm run serve` you can edit and see changes without bundling. 2 | -------------------------------------------------------------------------------- /frameworks/next/pages/todo.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ToDoApp from '../generated-components/components/todo-app'; 3 | 4 | export default function Todo() { 5 | return ; 6 | } 7 | -------------------------------------------------------------------------------- /frameworks/hydrogen/src/routes/index.server.jsx: -------------------------------------------------------------------------------- 1 | import HelloWorld from '../generated-components/components/hello-world'; 2 | 3 | export default function Home() { 4 | return ; 5 | } 6 | -------------------------------------------------------------------------------- /frameworks/remix/app/routes/dashboard.jsx: -------------------------------------------------------------------------------- 1 | import Dashboard from '../../components/generated-components/components/dashboard'; 2 | 3 | export default function DashboardPage() { 4 | return ; 5 | } 6 | -------------------------------------------------------------------------------- /frameworks/fresh/README.md: -------------------------------------------------------------------------------- 1 | # fresh project 2 | 3 | ### Usage 4 | 5 | Start the project: 6 | 7 | ``` 8 | deno task start 9 | ``` 10 | 11 | This will watch the project directory and restart as necessary. 12 | -------------------------------------------------------------------------------- /frameworks/svelte/vite.config.js: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite'; 2 | 3 | /** @type {import('vite').UserConfig} */ 4 | const config = { 5 | plugins: [sveltekit()] 6 | }; 7 | 8 | export default config; 9 | -------------------------------------------------------------------------------- /frameworks/next/pages/api/hello.js: -------------------------------------------------------------------------------- 1 | // Next.js API route support: https://nextjs.org/docs/api-routes/introduction 2 | 3 | export default function handler(req, res) { 4 | res.status(200).json({ name: 'John Doe' }) 5 | } 6 | -------------------------------------------------------------------------------- /frameworks/next/pages/dashboard.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Dashboard from '../generated-components/components/dashboard'; 3 | 4 | export default function DashboardPage() { 5 | return ; 6 | } 7 | -------------------------------------------------------------------------------- /src/helpers/sort-by.ts: -------------------------------------------------------------------------------- 1 | export type AnyObject = Record; 2 | 3 | export function sortBy(key: keyof T) { 4 | return (a: T, b: T) => (a[key] > b[key] ? 1 : b[key] > a[key] ? -1 : 0); 5 | } 6 | -------------------------------------------------------------------------------- /frameworks/fresh/deno.json: -------------------------------------------------------------------------------- 1 | { 2 | "tasks": { 3 | "start": "deno run -A --watch=static/,routes/ dev.ts", 4 | "preview": "DENO_DEPLOYMENT_ID=abc deno run -A main.ts" 5 | }, 6 | "importMap": "./import_map.json" 7 | } 8 | -------------------------------------------------------------------------------- /frameworks/next/pages/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import HelloWorld from '../generated-components/components/hello-world'; 3 | 4 | export default function Home() { 5 | return ; 6 | } 7 | -------------------------------------------------------------------------------- /frameworks/vue3/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | import router from './router'; 4 | 5 | const app = createApp(App); 6 | 7 | app.use(router); 8 | 9 | app.mount('#app'); 10 | -------------------------------------------------------------------------------- /frameworks/astro/src/pages/todo.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Layout from '../layouts/Layout.astro'; 3 | import ToDoApp from '../generated-components/components/todo-app.jsx'; 4 | --- 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frameworks/vue3/src/views/HomeView.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | -------------------------------------------------------------------------------- /src/scripts/serve.ts: -------------------------------------------------------------------------------- 1 | import { getFrameworks } from '../helpers/get-frameworks.js'; 2 | import { preview } from '../helpers/preview.js'; 3 | 4 | const frameworks = await getFrameworks(); 5 | frameworks.forEach((fw) => preview(fw)); 6 | -------------------------------------------------------------------------------- /apps/components/.gitignore: -------------------------------------------------------------------------------- 1 | output/**/src 2 | **/reports/*.json 3 | **/reports/*.js 4 | **/reports/*.ts 5 | !**/reports/*_simple.ts 6 | **/reports/*/*.json 7 | **/reports/*/*.js 8 | **/reports/*/*.ts 9 | !**/reports/*/*_simple.ts 10 | -------------------------------------------------------------------------------- /src/scripts/kill.ts: -------------------------------------------------------------------------------- 1 | import { getFrameworks } from '../helpers/get-frameworks.js'; 2 | import { killAll } from '../helpers/kill-process.js'; 3 | 4 | // Kill all processes running on our framework ports 5 | killAll(await getFrameworks()); 6 | -------------------------------------------------------------------------------- /apps/components/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "CommonJS", 5 | "moduleResolution": "node", 6 | "esModuleInterop": true 7 | }, 8 | "include": ["e2e.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /frameworks/astro/src/pages/index.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Layout from '../layouts/Layout.astro'; 3 | import HelloWorld from '../generated-components/components/hello-world.jsx'; 4 | --- 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frameworks/astro/src/pages/dashboard.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Layout from '../layouts/Layout.astro'; 3 | import Dashboard from '../generated-components/components/dashboard.jsx'; 4 | --- 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /frameworks/fresh/routes/[name].tsx: -------------------------------------------------------------------------------- 1 | /** @jsx h */ 2 | import { h } from "preact"; 3 | import { PageProps } from "$fresh/server.ts"; 4 | 5 | export default function Greet(props: PageProps) { 6 | return
Hello {props.params.name}
; 7 | } 8 | -------------------------------------------------------------------------------- /frameworks/next/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /frameworks/fresh/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "port": 8000, 3 | "scripts": { 4 | "build": "echo \"Fresh doesn't build :)\"", 5 | "dev": "deno task start", 6 | "start": "npm run dev", 7 | "preview": "deno task preview" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /frameworks/nuxt2/pages/todo.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 12 | -------------------------------------------------------------------------------- /frameworks/nuxt3/pages/todo.vue: -------------------------------------------------------------------------------- 1 | 4 | 10 | -------------------------------------------------------------------------------- /frameworks/svelte/.prettierignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | 10 | # Ignore files for PNPM, NPM and YARN 11 | pnpm-lock.yaml 12 | package-lock.json 13 | yarn.lock 14 | -------------------------------------------------------------------------------- /frameworks/lit/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Lit Starter Kit 7 | 8 | 9 | Component Demo 10 | 11 | 12 | -------------------------------------------------------------------------------- /frameworks/nuxt2/pages/index.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 9 | -------------------------------------------------------------------------------- /frameworks/solid-start/src/entry-server.tsx: -------------------------------------------------------------------------------- 1 | import { 2 | StartServer, 3 | createHandler, 4 | renderAsync, 5 | } from "solid-start/entry-server"; 6 | 7 | export default createHandler( 8 | renderAsync((event) => ) 9 | ); 10 | -------------------------------------------------------------------------------- /frameworks/nuxt3/pages/dashboard-ssr.vue: -------------------------------------------------------------------------------- 1 | 4 | 10 | -------------------------------------------------------------------------------- /frameworks/nuxt3/pages/dashboard.vue: -------------------------------------------------------------------------------- 1 | 4 | 10 | -------------------------------------------------------------------------------- /frameworks/nuxt2/pages/dashboard.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 12 | -------------------------------------------------------------------------------- /frameworks/nuxt3/pages/index.vue: -------------------------------------------------------------------------------- 1 | 4 | 10 | -------------------------------------------------------------------------------- /frameworks/fresh/utils/twind.ts: -------------------------------------------------------------------------------- 1 | import { IS_BROWSER } from "$fresh/runtime.ts"; 2 | import { Configuration, setup } from "twind"; 3 | export * from "twind"; 4 | export const config: Configuration = { 5 | darkMode: "class", 6 | mode: "silent", 7 | }; 8 | if (IS_BROWSER) setup(config); 9 | -------------------------------------------------------------------------------- /frameworks/lit/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules/ 2 | /lib/ 3 | /test/ 4 | custom-elements.json 5 | # top level source 6 | my-element.js 7 | my-element.js.map 8 | my-element.d.ts 9 | my-element.d.ts.map 10 | # only generated for size check 11 | my-element.bundled.js 12 | 13 | docs 14 | dist -------------------------------------------------------------------------------- /src/scripts/clean.ts: -------------------------------------------------------------------------------- 1 | import { glob, fs } from 'zx'; 2 | 3 | const files = await glob([ 4 | 'frameworks/**/generated-components/**', 5 | '!**/node_modules/**', 6 | ]); 7 | await Promise.all( 8 | files.map(async (file) => { 9 | await fs.remove(file); 10 | }) 11 | ); 12 | -------------------------------------------------------------------------------- /frameworks/react/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /frameworks/astro/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "command": "./node_modules/.bin/astro dev", 6 | "name": "Development server", 7 | "request": "launch", 8 | "type": "node-terminal" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /frameworks/nuxt2/.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /frameworks/svelte/src/routes/todo.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/components/src/components/general/chart.lite.tsx: -------------------------------------------------------------------------------- 1 | import { useStore } from '@builder.io/mitosis'; 2 | 3 | export interface ChartProps { 4 | data: any[]; 5 | } 6 | 7 | export default function Chart(props: ChartProps) { 8 | const state = useStore({}); 9 | return
; 10 | } 11 | -------------------------------------------------------------------------------- /apps/components/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | export { default as ToDoApp } from './components/todo-app.lite'; 4 | export { default as HelloWorld } from './components/hello-world.lite'; 5 | export { default as AppHeader } from './components/app-header.lite'; 6 | -------------------------------------------------------------------------------- /frameworks/react/src/App.test.js: -------------------------------------------------------------------------------- 1 | import { render, screen } from '@testing-library/react'; 2 | import App from './App'; 3 | 4 | test('renders learn react link', () => { 5 | render(); 6 | const linkElement = screen.getByText(/learn react/i); 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | -------------------------------------------------------------------------------- /frameworks/hydrogen/mini-oxygen.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "port": 6011, 3 | "workerFile": "dist/worker/index.js", 4 | "assetsDir": "dist/client", 5 | "buildCommand": "yarn build", 6 | "modules": true, 7 | "watch": true, 8 | "buildWatchPaths": [ 9 | "./src" 10 | ], 11 | "autoReload": true 12 | } -------------------------------------------------------------------------------- /frameworks/svelte/src/routes/dashboard.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/components/src/components/general/tabs.lite.tsx: -------------------------------------------------------------------------------- 1 | import { useStore } from '@builder.io/mitosis'; 2 | 3 | export type TabsProps = {}; 4 | 5 | export default function Tabs(props: TabsProps) { 6 | const state = useStore({ 7 | activeTab: 0, 8 | }); 9 | 10 | return
{/* TODO */}
; 11 | } 12 | -------------------------------------------------------------------------------- /frameworks/hydrogen/vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import hydrogen from '@shopify/hydrogen/plugin'; 3 | import compress from 'vite-plugin-compress'; 4 | 5 | export default defineConfig({ 6 | server: { 7 | port: 6011, 8 | }, 9 | plugins: [hydrogen(), compress()], 10 | }); 11 | -------------------------------------------------------------------------------- /frameworks/svelte/src/routes/index.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frameworks/angular/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/app" 6 | }, 7 | "files": ["src/main.ts", "src/polyfills.ts"], 8 | "include": ["src/**/*.d.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /src/helpers/get-port.ts: -------------------------------------------------------------------------------- 1 | import { fs } from 'zx'; 2 | 3 | /** 4 | * Get the port a given framework runs on 5 | */ 6 | export async function getPort(framework: string) { 7 | const { port } = JSON.parse( 8 | await fs.readFile(`./frameworks/${framework}/package.json`, 'utf8') 9 | ); 10 | return port; 11 | } 12 | -------------------------------------------------------------------------------- /apps/components/src/components/hello-world.lite.tsx: -------------------------------------------------------------------------------- 1 | export default function HelloWorld(props: { name?: string }) { 2 | return ( 3 |

9 | Hello {props.name || 'world'} 10 |

11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /frameworks/hydrogen/hydrogen.config.js: -------------------------------------------------------------------------------- 1 | import {defineConfig} from '@shopify/hydrogen/config'; 2 | 3 | export default defineConfig({ 4 | shopify: { 5 | storeDomain: 'hydrogen-preview.myshopify.com', 6 | storefrontToken: '3b580e70970c4528da70c98e097c2fa0', 7 | storefrontApiVersion: '2022-07', 8 | }, 9 | }); 10 | -------------------------------------------------------------------------------- /frameworks/nuxt3/layouts/default.vue: -------------------------------------------------------------------------------- 1 | 7 | 13 | -------------------------------------------------------------------------------- /frameworks/vue3/src/views/AboutView.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | -------------------------------------------------------------------------------- /apps/components/src/components/general/accordion.lite.tsx: -------------------------------------------------------------------------------- 1 | import { useStore } from '@builder.io/mitosis'; 2 | 3 | export type AccordionProps = {}; 4 | 5 | export default function Accordion(props: AccordionProps) { 6 | const state = useStore({ 7 | activeTab: 0, 8 | }); 9 | 10 | return
{/* TODO */}
; 11 | } 12 | -------------------------------------------------------------------------------- /frameworks/astro/.gitignore: -------------------------------------------------------------------------------- 1 | # build output 2 | dist/ 3 | .output/ 4 | 5 | # dependencies 6 | node_modules/ 7 | 8 | # logs 9 | npm-debug.log* 10 | yarn-debug.log* 11 | yarn-error.log* 12 | pnpm-debug.log* 13 | 14 | 15 | # environment variables 16 | .env 17 | .env.production 18 | 19 | # macOS-specific files 20 | .DS_Store 21 | -------------------------------------------------------------------------------- /frameworks/astro/server.mjs: -------------------------------------------------------------------------------- 1 | import express from 'express'; 2 | import { handler as ssrHandler } from './dist/server/entry.mjs'; 3 | 4 | const app = express(); 5 | app.use(ssrHandler); 6 | 7 | const port = Number(process.env.PORT || 6001); 8 | app.listen(port); 9 | 10 | console.log(`Listening on http://localhost:${port}`); 11 | -------------------------------------------------------------------------------- /apps/components/src/utils/map-keys.ts: -------------------------------------------------------------------------------- 1 | export function mapValues( 2 | obj: { [key: string]: T }, 3 | fn: (value: T, key: string) => U 4 | ): { [key: string]: U } { 5 | return Object.keys(obj).reduce((result, key) => { 6 | result[key] = fn(obj[key], key); 7 | return result; 8 | }, {} as { [key: string]: U }); 9 | } 10 | -------------------------------------------------------------------------------- /frameworks/lit/docs-src/_includes/relative-path.cjs: -------------------------------------------------------------------------------- 1 | const path = require('path').posix; 2 | 3 | module.exports = (base, p) => { 4 | const relativePath = path.relative(base, p); 5 | if (p.endsWith('/') && !relativePath.endsWith('/') && relativePath !== '') { 6 | return relativePath + '/'; 7 | } 8 | return relativePath; 9 | }; 10 | -------------------------------------------------------------------------------- /frameworks/nuxt2/layouts/default.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 12 | -------------------------------------------------------------------------------- /frameworks/solid-start/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | dist 3 | .solid 4 | .output 5 | .vercel 6 | .netlify 7 | netlify 8 | 9 | # dependencies 10 | /node_modules 11 | 12 | # IDEs and editors 13 | /.idea 14 | .project 15 | .classpath 16 | *.launch 17 | .settings/ 18 | 19 | # Temp 20 | gitignore 21 | 22 | # System Files 23 | .DS_Store 24 | Thumbs.db 25 | -------------------------------------------------------------------------------- /apps/components/src/reports/astro_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 0, 3 | "totalKb": 9, 4 | "fcpDisplay": "0.7 s", 5 | "fcpNumber": 659.3279, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 0, 8 | "ttiDisplay": "0.7 s", 9 | "ttiNumber": 659.3279, 10 | "lcpDisplay": "0.7 s", 11 | "lcpNumber": 659.3279, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/qwik_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 0, 3 | "totalKb": 4, 4 | "fcpDisplay": "0.7 s", 5 | "fcpNumber": 654.4676, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 0, 8 | "ttiDisplay": "0.7 s", 9 | "ttiNumber": 654.4676, 10 | "lcpDisplay": "0.7 s", 11 | "lcpNumber": 654.4676, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /frameworks/qwik/src/root.tsx: -------------------------------------------------------------------------------- 1 | import { QwikCity, RouterOutlet } from '@builder.io/qwik-city'; 2 | import { Head } from './components/head/head'; 3 | 4 | export default () => { 5 | return ( 6 | 7 | 8 | 9 | 10 | 11 | 12 | ); 13 | }; 14 | -------------------------------------------------------------------------------- /frameworks/svelte/src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %sveltekit.head% 8 | 9 | 10 |
%sveltekit.body%
11 | 12 | 13 | -------------------------------------------------------------------------------- /apps/components/src/reports/fresh_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 0, 3 | "totalKb": 27, 4 | "fcpDisplay": "0.8 s", 5 | "fcpNumber": 753.7646, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 0, 8 | "ttiDisplay": "0.8 s", 9 | "ttiNumber": 753.7646, 10 | "lcpDisplay": "0.8 s", 11 | "lcpNumber": 753.7646, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/marko_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 15, 3 | "totalKb": 21, 4 | "fcpDisplay": "0.8 s", 5 | "fcpNumber": 770.1965, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 0, 8 | "ttiDisplay": "0.8 s", 9 | "ttiNumber": 770.1965, 10 | "lcpDisplay": "1.1 s", 11 | "lcpNumber": 1090.393, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/react_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 154, 3 | "totalKb": 166, 4 | "fcpDisplay": "0.8 s", 5 | "fcpNumber": 753.4726, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 0, 8 | "ttiDisplay": "0.8 s", 9 | "ttiNumber": 753.4726, 10 | "lcpDisplay": "2.2 s", 11 | "lcpNumber": 2229.6815, 12 | "score": 99 13 | } -------------------------------------------------------------------------------- /frameworks/react-ssr-bun/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "port": 6016, 3 | "scripts": { 4 | "build": "echo 'No need to build :)'", 5 | "preview": "bun http.js --jsx-production" 6 | }, 7 | "dependencies": { 8 | "@popperjs/core": "^2.11.6", 9 | "fuse.js": "^6.6.2", 10 | "react": "^18.2.0", 11 | "react-dom": "^18.2.0" 12 | } 13 | } -------------------------------------------------------------------------------- /src/scripts/dev.ts: -------------------------------------------------------------------------------- 1 | import { $ } from 'zx/core'; 2 | import { getFrameworks } from '../helpers/get-frameworks.js'; 3 | 4 | const frameworks = await getFrameworks(); 5 | frameworks.forEach((fw) => 6 | $`cd frameworks/${fw} && npm run dev`.catch((err) => { 7 | console.error('Error in framework', fw, err); 8 | throw err; 9 | }) 10 | ); 11 | -------------------------------------------------------------------------------- /apps/components/src/reports/gatsby_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 69, 3 | "totalKb": 73, 4 | "fcpDisplay": "0.6 s", 5 | "fcpNumber": 635.98915, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 3, 8 | "ttiDisplay": "1.4 s", 9 | "ttiNumber": 1414.96745, 10 | "lcpDisplay": "1.0 s", 11 | "lcpNumber": 982.472875, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/svelte_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 18, 3 | "totalKb": 22, 4 | "fcpDisplay": "1.5 s", 5 | "fcpNumber": 1453.37625, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 0, 8 | "ttiDisplay": "1.5 s", 9 | "ttiNumber": 1453.37625, 10 | "lcpDisplay": "1.5 s", 11 | "lcpNumber": 1453.37625, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/todo/astro_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 20, 3 | "totalKb": 32, 4 | "fcpDisplay": "0.6 s", 5 | "fcpNumber": 642.60405, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 0, 8 | "ttiDisplay": "0.6 s", 9 | "ttiNumber": 642.60405, 10 | "lcpDisplay": "0.6 s", 11 | "lcpNumber": 642.60405, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/todo/lit_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 16, 3 | "totalKb": 18, 4 | "fcpDisplay": "0.8 s", 5 | "fcpNumber": 759.2055, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 0, 8 | "ttiDisplay": "0.8 s", 9 | "ttiNumber": 759.2055, 10 | "lcpDisplay": "1.1 s", 11 | "lcpNumber": 1066.109625, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/todo/qwik_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 2, 3 | "totalKb": 25, 4 | "fcpDisplay": "0.7 s", 5 | "fcpNumber": 650.44375, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 0, 8 | "ttiDisplay": "0.7 s", 9 | "ttiNumber": 650.44375, 10 | "lcpDisplay": "1.2 s", 11 | "lcpNumber": 1219.053125, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/todo/svelte_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 19, 3 | "totalKb": 24, 4 | "fcpDisplay": "1.5 s", 5 | "fcpNumber": 1467.396, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 0, 8 | "ttiDisplay": "1.5 s", 9 | "ttiNumber": 1467.396, 10 | "lcpDisplay": "1.5 s", 11 | "lcpNumber": 1467.396, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /frameworks/solid-start/src/routes/todo.tsx: -------------------------------------------------------------------------------- 1 | import AppHeader from '../generated-components/components/app-header'; 2 | import Todo from '../generated-components/components/todo-app'; 3 | 4 | export default function Home() { 5 | return ( 6 | <> 7 | 8 | 9 | 10 | ); 11 | } 12 | -------------------------------------------------------------------------------- /apps/components/src/reports/dashboard/astro_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 3, 3 | "totalKb": 37, 4 | "fcpDisplay": "0.8 s", 5 | "fcpNumber": 795.9838, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 0, 8 | "ttiDisplay": "0.9 s", 9 | "ttiNumber": 925.9676, 10 | "lcpDisplay": "1.1 s", 11 | "lcpNumber": 1130.9514, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/next_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 82, 3 | "totalKb": 93, 4 | "fcpDisplay": "0.7 s", 5 | "fcpNumber": 652.89135, 6 | "tbtDisplay": "40 ms", 7 | "tbtNumber": 43, 8 | "ttiDisplay": "2.1 s", 9 | "ttiNumber": 2067.9024249999998, 10 | "lcpDisplay": "0.8 s", 11 | "lcpNumber": 824.7827, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/todo/nuxt2_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 95, 3 | "totalKb": 106, 4 | "fcpDisplay": "1.0 s", 5 | "fcpNumber": 997.0992, 6 | "tbtDisplay": "40 ms", 7 | "tbtNumber": 41, 8 | "ttiDisplay": "1.6 s", 9 | "ttiNumber": 1613.0992, 10 | "lcpDisplay": "1.0 s", 11 | "lcpNumber": 997.0992, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/vue3_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 31, 3 | "totalKb": 38, 4 | "fcpDisplay": "1.2 s", 5 | "fcpNumber": 1206.7486, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 4, 8 | "ttiDisplay": "1.2 s", 9 | "ttiNumber": 1235.7486, 10 | "lcpDisplay": "1.5 s", 11 | "lcpNumber": 1510.1228999999998, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/dashboard/hydrogen_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 44, 3 | "totalKb": 68, 4 | "fcpDisplay": "0.8 s", 5 | "fcpNumber": 768.11625, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 0, 8 | "ttiDisplay": "0.8 s", 9 | "ttiNumber": 792.61625, 10 | "lcpDisplay": "1.3 s", 11 | "lcpNumber": 1297.2325, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/dashboard/solid_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 24, 3 | "totalKb": 29, 4 | "fcpDisplay": "0.6 s", 5 | "fcpNumber": 634.52195, 6 | "tbtDisplay": "10 ms", 7 | "tbtNumber": 9.5, 8 | "ttiDisplay": "0.9 s", 9 | "ttiNumber": 872.304875, 10 | "lcpDisplay": "1.3 s", 11 | "lcpNumber": 1262.60975, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/nuxt3_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 122, 3 | "totalKb": 130, 4 | "fcpDisplay": "2.0 s", 5 | "fcpNumber": 2006.986875, 6 | "tbtDisplay": "10 ms", 7 | "tbtNumber": 12.5, 8 | "ttiDisplay": "2.0 s", 9 | "ttiNumber": 2006.986875, 10 | "lcpDisplay": "2.2 s", 11 | "lcpNumber": 2169.650625, 12 | "score": 97 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/remix_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 358, 3 | "totalKb": 363, 4 | "fcpDisplay": "1.3 s", 5 | "fcpNumber": 1300.179675, 6 | "tbtDisplay": "240 ms", 7 | "tbtNumber": 242, 8 | "ttiDisplay": "3.6 s", 9 | "ttiNumber": 3628.353775, 10 | "lcpDisplay": "1.3 s", 11 | "lcpNumber": 1300.179675, 12 | "score": 94 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/todo/gatsby_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 70, 3 | "totalKb": 75, 4 | "fcpDisplay": "0.8 s", 5 | "fcpNumber": 801.5748000000001, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 4, 8 | "ttiDisplay": "1.6 s", 9 | "ttiNumber": 1583.1496, 10 | "lcpDisplay": "1.1 s", 11 | "lcpNumber": 1147.0059, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/todo/marko_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 17, 3 | "totalKb": 23, 4 | "fcpDisplay": "0.8 s", 5 | "fcpNumber": 778.1565, 6 | "tbtDisplay": "10 ms", 7 | "tbtNumber": 8, 8 | "ttiDisplay": "1.1 s", 9 | "ttiNumber": 1057.273875, 10 | "lcpDisplay": "0.9 s", 11 | "lcpNumber": 942.2347500000001, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/todo/react_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 159, 3 | "totalKb": 171, 4 | "fcpDisplay": "0.8 s", 5 | "fcpNumber": 753.8594, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 0, 8 | "ttiDisplay": "0.8 s", 9 | "ttiNumber": 753.8594, 10 | "lcpDisplay": "2.2 s", 11 | "lcpNumber": 2225.6485000000002, 12 | "score": 99 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/todo/vue3_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 33, 3 | "totalKb": 41, 4 | "fcpDisplay": "1.2 s", 5 | "fcpNumber": 1207.7398, 6 | "tbtDisplay": "10 ms", 7 | "tbtNumber": 8.5, 8 | "ttiDisplay": "1.2 s", 9 | "ttiNumber": 1241.2398, 10 | "lcpDisplay": "1.8 s", 11 | "lcpNumber": 1815.4796000000003, 12 | "score": 99 13 | } -------------------------------------------------------------------------------- /frameworks/qwik/.prettierignore: -------------------------------------------------------------------------------- 1 | **/*.log 2 | **/.DS_Store 3 | *. 4 | .vscode/settings.json 5 | .history 6 | .yarn 7 | dist 8 | dist-dev 9 | etc 10 | external 11 | node_modules 12 | temp 13 | tsc-out 14 | tsdoc-metadata.json 15 | target 16 | output 17 | rollup.config.js 18 | build 19 | .cache 20 | .vscode 21 | .rollup.cache 22 | dist 23 | tsconfig.tsbuildinfo 24 | -------------------------------------------------------------------------------- /frameworks/remix/remix.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('@remix-run/dev').AppConfig} */ 2 | module.exports = { 3 | ignoredRouteFiles: ['**/.*'], 4 | serverDependenciesToBundle: ['@builder.io/todo-app'], 5 | // appDirectory: "app", 6 | // assetsBuildDirectory: "public/build", 7 | // serverBuildPath: "build/index.js", 8 | // publicPath: "/build/", 9 | }; 10 | -------------------------------------------------------------------------------- /frameworks/solid-start/src/routes/index.tsx: -------------------------------------------------------------------------------- 1 | import AppHeader from '../generated-components/components/app-header'; 2 | import HelloWorld from '../generated-components/components/hello-world'; 3 | 4 | export default function Home() { 5 | return ( 6 | <> 7 | 8 | 9 | 10 | ); 11 | } 12 | -------------------------------------------------------------------------------- /apps/components/src/reports/angular_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 72, 3 | "totalKb": 74, 4 | "fcpDisplay": "1.5 s", 5 | "fcpNumber": 1523.7797, 6 | "tbtDisplay": "150 ms", 7 | "tbtNumber": 148.80869999999993, 8 | "ttiDisplay": "1.7 s", 9 | "ttiNumber": 1732.7797, 10 | "lcpDisplay": "1.5 s", 11 | "lcpNumber": 1523.7797, 12 | "score": 98 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/dashboard/next-bun_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 91, 3 | "totalKb": 104, 4 | "fcpDisplay": "0.7 s", 5 | "fcpNumber": 655.32395, 6 | "tbtDisplay": "30 ms", 7 | "tbtNumber": 31, 8 | "ttiDisplay": "2.2 s", 9 | "ttiNumber": 2215.605675, 10 | "lcpDisplay": "2.1 s", 11 | "lcpNumber": 2137.9437, 12 | "score": 99 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/dashboard/qwik_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 2, 3 | "totalKb": 38, 4 | "fcpDisplay": "0.6 s", 5 | "fcpNumber": 635.10875, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 0, 8 | "ttiDisplay": "0.6 s", 9 | "ttiNumber": 646.10875, 10 | "lcpDisplay": "1.5 s", 11 | "lcpNumber": 1483.9893749999997, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/hydrogen_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 160, 3 | "totalKb": 172, 4 | "fcpDisplay": "0.6 s", 5 | "fcpNumber": 641.10705, 6 | "tbtDisplay": "30 ms", 7 | "tbtNumber": 34.5, 8 | "ttiDisplay": "1.8 s", 9 | "ttiNumber": 1790.2141, 10 | "lcpDisplay": "1.6 s", 11 | "lcpNumber": 1581.2141000000001, 12 | "score": 91 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/lit_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 15, 3 | "totalKb": 16, 4 | "fcpDisplay": "0.6 s", 5 | "fcpNumber": 639.52875, 6 | "tbtDisplay": "10 ms", 7 | "tbtNumber": 8.5, 8 | "ttiDisplay": "0.8 s", 9 | "ttiNumber": 820.5574999999999, 10 | "lcpDisplay": "0.9 s", 11 | "lcpNumber": 928.8218749999999, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/nuxt2_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 93, 3 | "totalKb": 103, 4 | "fcpDisplay": "0.9 s", 5 | "fcpNumber": 916.9411249999999, 6 | "tbtDisplay": "120 ms", 7 | "tbtNumber": 119, 8 | "ttiDisplay": "1.5 s", 9 | "ttiNumber": 1546.1058, 10 | "lcpDisplay": "0.9 s", 11 | "lcpNumber": 916.9411249999999, 12 | "score": 99 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/todo/hydrogen_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 163, 3 | "totalKb": 178, 4 | "fcpDisplay": "0.6 s", 5 | "fcpNumber": 638.73715, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 0, 8 | "ttiDisplay": "0.6 s", 9 | "ttiNumber": 638.73715, 10 | "lcpDisplay": "1.6 s", 11 | "lcpNumber": 1582.4742999999999, 12 | "score": 91 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/todo/nuxt3_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 122, 3 | "totalKb": 131, 4 | "fcpDisplay": "2.2 s", 5 | "fcpNumber": 2166.76525, 6 | "tbtDisplay": "10 ms", 7 | "tbtNumber": 8.5, 8 | "ttiDisplay": "2.2 s", 9 | "ttiNumber": 2166.76525, 10 | "lcpDisplay": "2.3 s", 11 | "lcpNumber": 2260.9917750000004, 12 | "score": 96 13 | } -------------------------------------------------------------------------------- /frameworks/angular/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Inject } from '@angular/core'; 2 | import { Router } from '@angular/router'; 3 | 4 | @Component({ 5 | selector: 'app-root', 6 | templateUrl: './app.component.html', 7 | styleUrls: ['./app.component.css'], 8 | }) 9 | export class AppComponent { 10 | constructor(public router: Router) {} 11 | } 12 | -------------------------------------------------------------------------------- /frameworks/fresh/routes/index.tsx: -------------------------------------------------------------------------------- 1 | /** @jsx h */ 2 | import { h } from 'preact'; 3 | import { 4 | AppHeader, 5 | HelloWorld, 6 | } from '../components/generated-components/index.js'; 7 | 8 | export default function Home() { 9 | return ( 10 |
11 | 12 | 13 |
14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /frameworks/vue3/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | -------------------------------------------------------------------------------- /apps/components/src/reports/dashboard/angular_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 272, 3 | "totalKb": 299, 4 | "fcpDisplay": "2.6 s", 5 | "fcpNumber": 2573.346925, 6 | "tbtDisplay": "210 ms", 7 | "tbtNumber": 210, 8 | "ttiDisplay": "2.8 s", 9 | "ttiNumber": 2843.35275, 10 | "lcpDisplay": "2.6 s", 11 | "lcpNumber": 2573.346925, 12 | "score": 89 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/dashboard/lit_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 23, 3 | "totalKb": 25, 4 | "fcpDisplay": "0.8 s", 5 | "fcpNumber": 752.5255999999999, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 0, 8 | "ttiDisplay": "0.8 s", 9 | "ttiNumber": 763.0255999999999, 10 | "lcpDisplay": "1.1 s", 11 | "lcpNumber": 1129.4198, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/dashboard/marko_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 24, 3 | "totalKb": 38, 4 | "fcpDisplay": "0.8 s", 5 | "fcpNumber": 755.6697999999999, 6 | "tbtDisplay": "10 ms", 7 | "tbtNumber": 12.5, 8 | "ttiDisplay": "1.0 s", 9 | "ttiNumber": 1022.42215, 10 | "lcpDisplay": "1.1 s", 11 | "lcpNumber": 1133.5047, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/dashboard/next_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 92, 3 | "totalKb": 104, 4 | "fcpDisplay": "0.7 s", 5 | "fcpNumber": 667.1722, 6 | "tbtDisplay": "10 ms", 7 | "tbtNumber": 10.5, 8 | "ttiDisplay": "1.7 s", 9 | "ttiNumber": 1678.0331999999999, 10 | "lcpDisplay": "1.2 s", 11 | "lcpNumber": 1215.4305, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/dashboard/nuxt2_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 107, 3 | "totalKb": 118, 4 | "fcpDisplay": "1.4 s", 5 | "fcpNumber": 1377.138225, 6 | "tbtDisplay": "190 ms", 7 | "tbtNumber": 189, 8 | "ttiDisplay": "1.9 s", 9 | "ttiNumber": 1879.274175, 10 | "lcpDisplay": "1.4 s", 11 | "lcpNumber": 1377.138225, 12 | "score": 97 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/dashboard/vue3_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 41, 3 | "totalKb": 50, 4 | "fcpDisplay": "1.2 s", 5 | "fcpNumber": 1206.6862, 6 | "tbtDisplay": "10 ms", 7 | "tbtNumber": 7.5, 8 | "ttiDisplay": "1.8 s", 9 | "ttiNumber": 1768.3650750000002, 10 | "lcpDisplay": "2.1 s", 11 | "lcpNumber": 2146.708175, 12 | "score": 94 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/solid_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 16, 3 | "totalKb": 18, 4 | "fcpDisplay": "0.9 s", 5 | "fcpNumber": 866.5088750000001, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 0, 8 | "ttiDisplay": "0.9 s", 9 | "ttiNumber": 866.5088750000001, 10 | "lcpDisplay": "1.1 s", 11 | "lcpNumber": 1101.1124250000003, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/todo/next_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 83, 3 | "totalKb": 94, 4 | "fcpDisplay": "0.7 s", 5 | "fcpNumber": 676.1899, 6 | "tbtDisplay": "110 ms", 7 | "tbtNumber": 110, 8 | "ttiDisplay": "2.2 s", 9 | "ttiNumber": 2169.0444499999994, 10 | "lcpDisplay": "0.8 s", 11 | "lcpNumber": 845.3797999999999, 12 | "score": 99 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/todo/solid_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 17, 3 | "totalKb": 19, 4 | "fcpDisplay": "0.7 s", 5 | "fcpNumber": 673.5325, 6 | "tbtDisplay": "40 ms", 7 | "tbtNumber": 39, 8 | "ttiDisplay": "1.0 s", 9 | "ttiNumber": 1047.3312500000002, 10 | "lcpDisplay": "1.3 s", 11 | "lcpNumber": 1316.6625000000001, 12 | "score": 86 13 | } -------------------------------------------------------------------------------- /frameworks/angular/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.ts] 12 | quote_type = single 13 | 14 | [*.md] 15 | max_line_length = off 16 | trim_trailing_whitespace = false 17 | -------------------------------------------------------------------------------- /frameworks/nuxt3/nuxt.config.ts: -------------------------------------------------------------------------------- 1 | import { defineNuxtConfig } from 'nuxt'; 2 | 3 | // https://v3.nuxtjs.org/api/configuration/nuxt.config 4 | export default defineNuxtConfig({ 5 | nitro: { 6 | compressPublicAssets: true, 7 | prerender: { 8 | routes: [ 9 | '/', 10 | '/dashboard', 11 | '/todo' 12 | ] 13 | } 14 | } 15 | }); 16 | -------------------------------------------------------------------------------- /frameworks/solid-start/src/routes/dashboard.tsx: -------------------------------------------------------------------------------- 1 | import AppHeader from '../generated-components/components/app-header'; 2 | import Dashboard from '../generated-components/components/dashboard'; 3 | 4 | export default function Home() { 5 | return ( 6 | <> 7 | 8 | 9 | 10 | ); 11 | } 12 | -------------------------------------------------------------------------------- /apps/components/src/reports/todo/angular_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 72, 3 | "totalKb": 74, 4 | "fcpDisplay": "1.5 s", 5 | "fcpNumber": 1535.190575, 6 | "tbtDisplay": "30 ms", 7 | "tbtNumber": 33.91832499999998, 8 | "ttiDisplay": "1.6 s", 9 | "ttiNumber": 1634.190575, 10 | "lcpDisplay": "1.6 s", 11 | "lcpNumber": 1584.690575, 12 | "score": 99 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/todo/fresh_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 9, 3 | "totalKb": 37, 4 | "fcpDisplay": "0.8 s", 5 | "fcpNumber": 754.8344999999999, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 0, 8 | "ttiDisplay": "0.8 s", 9 | "ttiNumber": 754.8344999999999, 10 | "lcpDisplay": "0.9 s", 11 | "lcpNumber": 906.0431249999999, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /frameworks/angular/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Angular 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /frameworks/hydrogen/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2020", 4 | "module": "esnext", 5 | "moduleResolution": "node16", 6 | "lib": ["dom", "dom.iterable", "scripthost", "es2020"], 7 | "jsx": "react", 8 | "types": ["vite/client"] 9 | }, 10 | "exclude": ["node_modules", "dist"], 11 | "include": ["**/*.js", "**/*.jsx"] 12 | } 13 | -------------------------------------------------------------------------------- /frameworks/next/styles/globals.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | padding: 0; 4 | margin: 0; 5 | font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, 6 | Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; 7 | } 8 | 9 | a { 10 | color: inherit; 11 | text-decoration: none; 12 | } 13 | 14 | * { 15 | box-sizing: border-box; 16 | } 17 | -------------------------------------------------------------------------------- /frameworks/qwik/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import { qwikVite } from '@builder.io/qwik/optimizer'; 3 | import { qwikCity } from '@builder.io/qwik-city/vite'; 4 | import tsconfigPaths from 'vite-tsconfig-paths'; 5 | 6 | export default defineConfig(() => { 7 | return { 8 | plugins: [qwikCity(), qwikVite(), tsconfigPaths()], 9 | }; 10 | }); 11 | -------------------------------------------------------------------------------- /frameworks/react-ssr-node/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "port": 6014, 3 | "dependencies": { 4 | "fuse.js": "^6.6.2", 5 | "react": "^18.2.0", 6 | "react-dom": "^18.2.0" 7 | }, 8 | "devDependencies": { 9 | "typescript": "^4.7.4" 10 | }, 11 | "type": "module", 12 | "scripts": { 13 | "build": "tsc", 14 | "preview": "node dist/http.js" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /apps/components/src/reports/dashboard/nuxt3_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 3784, 3 | "totalKb": 3801, 4 | "fcpDisplay": "20.8 s", 5 | "fcpNumber": 20793.972499999996, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 1, 8 | "ttiDisplay": "20.8 s", 9 | "ttiNumber": 20793.972499999996, 10 | "lcpDisplay": "21.0 s", 11 | "lcpNumber": 21011.367, 12 | "score": 45 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/dashboard/react_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 187, 3 | "totalKb": 199, 4 | "fcpDisplay": "0.8 s", 5 | "fcpNumber": 752.2442000000001, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 0.5, 8 | "ttiDisplay": "2.0 s", 9 | "ttiNumber": 2025.9884000000002, 10 | "lcpDisplay": "2.4 s", 11 | "lcpNumber": 2423.17155, 12 | "score": 98 13 | } -------------------------------------------------------------------------------- /frameworks/gatsby/src/pages/todo.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import AppHeader from '../generated-components/components/app-header'; 3 | import ToDoApp from '../generated-components/components/todo-app'; 4 | 5 | export default function Todo() { 6 | return ( 7 | <> 8 | 9 | 10 | 11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /apps/components/src/reports/dashboard/fresh_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 17, 3 | "totalKb": 46, 4 | "fcpDisplay": "1.1 s", 5 | "fcpNumber": 1054.1068500000001, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 0, 8 | "ttiDisplay": "1.1 s", 9 | "ttiNumber": 1054.1068500000001, 10 | "lcpDisplay": "1.1 s", 11 | "lcpNumber": 1054.1068500000001, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/dashboard/gatsby_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 83, 3 | "totalKb": 88, 4 | "fcpDisplay": "0.8 s", 5 | "fcpNumber": 759.2629999999999, 6 | "tbtDisplay": "10 ms", 7 | "tbtNumber": 5.5, 8 | "ttiDisplay": "1.2 s", 9 | "ttiNumber": 1191.7102499999999, 10 | "lcpDisplay": "1.1 s", 11 | "lcpNumber": 1134.2102499999999, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/dashboard/remix_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 71, 3 | "totalKb": 77, 4 | "fcpDisplay": "1.8 s", 5 | "fcpNumber": 1769.4123249999998, 6 | "tbtDisplay": "30 ms", 7 | "tbtNumber": 34, 8 | "ttiDisplay": "1.9 s", 9 | "ttiNumber": 1933.3054749999997, 10 | "lcpDisplay": "1.8 s", 11 | "lcpNumber": 1769.4123249999998, 12 | "score": 99 13 | } -------------------------------------------------------------------------------- /apps/components/src/reports/dashboard/svelte_simple.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | "jsKb": 29, 3 | "totalKb": 35, 4 | "fcpDisplay": "1.5 s", 5 | "fcpNumber": 1542.0183499999998, 6 | "tbtDisplay": "0 ms", 7 | "tbtNumber": 4.5, 8 | "ttiDisplay": "1.5 s", 9 | "ttiNumber": 1542.0183499999998, 10 | "lcpDisplay": "1.5 s", 11 | "lcpNumber": 1542.0183499999998, 12 | "score": 100 13 | } -------------------------------------------------------------------------------- /frameworks/lit/docs-src/_data/api.11tydata.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright 2021 Google LLC 4 | * SPDX-License-Identifier: BSD-3-Clause 5 | */ 6 | 7 | const fs = require('fs'); 8 | 9 | module.exports = () => { 10 | const customElements = JSON.parse( 11 | fs.readFileSync('custom-elements.json', 'utf-8') 12 | ); 13 | return { 14 | customElements, 15 | }; 16 | }; 17 | -------------------------------------------------------------------------------- /frameworks/fresh/routes/todo.tsx: -------------------------------------------------------------------------------- 1 | /** @jsx h */ 2 | import { h } from 'preact'; 3 | import AppHeader from '../components/generated-components/components/app-header.js'; 4 | import Todo from '../islands/Todo.tsx'; 5 | 6 | export default function Home() { 7 | return ( 8 |
9 | 10 | 11 |
12 | ); 13 | } 14 | -------------------------------------------------------------------------------- /frameworks/next/pages/dashboard-ssr.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Dashboard from '../generated-components/components/dashboard'; 3 | 4 | // Special route for SSR 5 | export default function Todo() { 6 | return ; 7 | } 8 | 9 | // Include this to make sure this page is in SSR mode 10 | export async function getServerSideProps() { 11 | return { props: {} }; 12 | } 13 | -------------------------------------------------------------------------------- /frameworks/angular/tsconfig.server.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.app.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/server", 6 | "target": "es2019", 7 | "types": [ 8 | "node" 9 | ] 10 | }, 11 | "files": [ 12 | "src/main.server.ts", 13 | "server.ts" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /frameworks/react-ssr-deno/import_map.json: -------------------------------------------------------------------------------- 1 | { 2 | "imports": { 3 | "fuse.js": "https://esm.sh/v92/fuse.js", 4 | "fuse.js/": "https://esm.sh/v92/fuse.js/", 5 | "react": "https://esm.sh/v92/react", 6 | "react/": "https://esm.sh/v92/react/", 7 | "@popperjs/core": "https://esm.sh/v92/@popperjs/core", 8 | "@popperjs/core/": "https://esm.sh/v92/@popperjs/core/" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /frameworks/gatsby/src/pages/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import AppHeader from '../generated-components/components/app-header'; 3 | import HelloWorld from '../generated-components/components/hello-world'; 4 | 5 | export default function Home() { 6 | return ( 7 | <> 8 | 9 | 10 | 11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /apps/components/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "strict": true, 5 | "jsx": "preserve", 6 | "module": "ES2022", 7 | "moduleResolution": "node", 8 | "resolveJsonModule": true, 9 | "jsxImportSource": "@builder.io/mitosis" 10 | }, 11 | "include": ["src", "cases", "reports"], 12 | "references": [{ "path": "./tsconfig.node.json" }] 13 | } 14 | -------------------------------------------------------------------------------- /frameworks/gatsby/src/pages/dashboard.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import AppHeader from '../generated-components/components/app-header'; 3 | import Dashboard from '../generated-components/components/dashboard'; 4 | 5 | export default function DashboardPage() { 6 | return ( 7 | <> 8 | 9 | 10 | 11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /src/typings.d.ts: -------------------------------------------------------------------------------- 1 | import { Page } from 'puppeteer'; 2 | 3 | declare module 'lighthouse/core/lib/median-run.js' { 4 | export function computeMedianRun(runs: LH.Result[]): LH.Result; 5 | } 6 | 7 | declare module 'lighthouse/core/fraggle-rock/api.js' { 8 | export async function startFlow(page: Page, options: any): any; 9 | export async function auditFlowArtifacts(artifact: any): Promise; 10 | } 11 | -------------------------------------------------------------------------------- /frameworks/fresh/routes/dashboard.tsx: -------------------------------------------------------------------------------- 1 | /** @jsx h */ 2 | import { h } from 'preact'; 3 | import AppHeader from '../components/generated-components/components/app-header.js'; 4 | import Dashboard from '../islands/Dashboard.tsx'; 5 | 6 | export default function Home() { 7 | return ( 8 |
9 | 10 | 11 |
12 | ); 13 | } 14 | -------------------------------------------------------------------------------- /frameworks/vue3/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite App 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /frameworks/angular/src/app/app.server.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { ServerModule } from '@angular/platform-server'; 3 | 4 | import { AppModule } from './app.module'; 5 | import { AppComponent } from './app.component'; 6 | 7 | @NgModule({ 8 | imports: [ 9 | AppModule, 10 | ServerModule, 11 | ], 12 | bootstrap: [AppComponent], 13 | }) 14 | export class AppServerModule {} 15 | -------------------------------------------------------------------------------- /frameworks/preact-ssr-node/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "port": 6017, 3 | "dependencies": { 4 | "@popperjs/core": "^2.11.6", 5 | "fuse.js": "^6.6.2", 6 | "preact": "^10.10.6", 7 | "preact-render-to-string": "^5.2.3" 8 | }, 9 | "devDependencies": { 10 | "typescript": "^4.7.4" 11 | }, 12 | "type": "module", 13 | "scripts": { 14 | "build": "tsc", 15 | "preview": "node dist/http.js" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /frameworks/react/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /frameworks/solid-start/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "esModuleInterop": true, 5 | "target": "ESNext", 6 | "module": "ESNext", 7 | "moduleResolution": "node", 8 | "jsxImportSource": "solid-js", 9 | "jsx": "preserve", 10 | "types": ["vite/client"], 11 | "baseUrl": "./", 12 | "paths": { 13 | "~/*": ["./src/*"] 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /frameworks/vue3/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { fileURLToPath, URL } from 'node:url'; 2 | 3 | import { defineConfig } from 'vite'; 4 | import vue from '@vitejs/plugin-vue'; 5 | import compress from 'vite-plugin-compress'; 6 | 7 | // https://vitejs.dev/config/ 8 | export default defineConfig({ 9 | plugins: [vue()], 10 | resolve: { 11 | alias: { 12 | '@': fileURLToPath(new URL('./src', import.meta.url)), 13 | }, 14 | }, 15 | }); 16 | -------------------------------------------------------------------------------- /frameworks/angular/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/spec", 6 | "types": [ 7 | "jasmine" 8 | ] 9 | }, 10 | "files": [ 11 | "src/test.ts", 12 | "src/polyfills.ts" 13 | ], 14 | "include": [ 15 | "src/**/*.spec.ts", 16 | "src/**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /frameworks/react/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 5 | sans-serif; 6 | -webkit-font-smoothing: antialiased; 7 | -moz-osx-font-smoothing: grayscale; 8 | } 9 | 10 | code { 11 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', 12 | monospace; 13 | } 14 | -------------------------------------------------------------------------------- /frameworks/fresh/components/Button.tsx: -------------------------------------------------------------------------------- 1 | /** @jsx h */ 2 | import { h } from "preact"; 3 | import { IS_BROWSER } from "$fresh/runtime.ts"; 4 | import { tw } from "@twind"; 5 | 6 | export function Button(props: h.JSX.HTMLAttributes) { 7 | return ( 8 | 40 | ))} 41 | 42 | )} 43 | 44 | ); 45 | } 46 | -------------------------------------------------------------------------------- /frameworks/lit/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "extends": [ 4 | "eslint:recommended", 5 | "plugin:@typescript-eslint/eslint-recommended", 6 | "plugin:@typescript-eslint/recommended" 7 | ], 8 | "parser": "@typescript-eslint/parser", 9 | "parserOptions": { 10 | "ecmaVersion": 2020, 11 | "sourceType": "module" 12 | }, 13 | "plugins": ["@typescript-eslint"], 14 | "env": { 15 | "browser": true 16 | }, 17 | "rules": { 18 | "no-prototype-builtins": "off", 19 | "@typescript-eslint/ban-types": "off", 20 | "@typescript-eslint/explicit-function-return-type": "off", 21 | "@typescript-eslint/explicit-module-boundary-types": "off", 22 | "@typescript-eslint/no-explicit-any": "error", 23 | "@typescript-eslint/no-empty-function": "off", 24 | "@typescript-eslint/no-non-null-assertion": "off", 25 | "@typescript-eslint/no-unused-vars": [ 26 | "warn", 27 | { 28 | "argsIgnorePattern": "^_" 29 | } 30 | ] 31 | }, 32 | "overrides": [ 33 | { 34 | "files": ["rollup.config.js", "web-test-runner.config.js"], 35 | "env": { 36 | "node": true 37 | } 38 | }, 39 | { 40 | "files": [ 41 | "*_test.ts", 42 | "**/custom_typings/*.ts", 43 | "packages/labs/ssr/src/test/integration/tests/**", 44 | "packages/labs/ssr/src/lib/util/parse5-utils.ts" 45 | ], 46 | "rules": { 47 | "@typescript-eslint/no-explicit-any": "off" 48 | } 49 | } 50 | ] 51 | } 52 | -------------------------------------------------------------------------------- /frameworks/react-ssr-node/http.jsx: -------------------------------------------------------------------------------- 1 | /** 2 | * Originally from: https://github.com/oven-sh/bun/blob/e55d6eed2bf9a5db30250fdd8b9be063dc949054/bench/react-hello-world/react-hello-world.node.jsx 3 | */ 4 | import { renderToPipeableStream } from 'react-dom/server.node'; 5 | import Dashboard from './generated-components/components/dashboard.js'; 6 | import AppHeader from './generated-components/components/app-header.js'; 7 | import React from 'react'; 8 | import http from 'http'; 9 | 10 | const App = () => ( 11 | 12 | 13 | 14 | 15 | 16 | 17 | ); 18 | const port = Number(process.env.port || 6014); 19 | 20 | var didError = false; 21 | http 22 | .createServer(function (req, res) { 23 | const stream = renderToPipeableStream(, { 24 | onShellReady() { 25 | // The content above all Suspense boundaries is ready. 26 | // If something errored before we started streaming, we set the error code appropriately. 27 | res.statusCode = didError ? 500 : 200; 28 | res.setHeader('Content-type', 'text/html'); 29 | res.setHeader('Cache-Control', 'no-transform'); // set to match the Deno benchmark, which requires this for an apples to apples comparison 30 | stream.pipe(res); 31 | }, 32 | onError(err) { 33 | didError = true; 34 | console.error(err); 35 | }, 36 | }); 37 | }) 38 | .listen(port); 39 | 40 | console.log(`Listening at http://localhost:${port}`); 41 | -------------------------------------------------------------------------------- /apps/components/src/components/general/lite-tooltip.lite.tsx: -------------------------------------------------------------------------------- 1 | import { onUpdate, useRef, useStore } from '@builder.io/mitosis'; 2 | import { createPopper, Placement, Options } from '@popperjs/core'; 3 | 4 | export type TooltipProps = { 5 | text: string; 6 | tooltipText: string; 7 | placement?: Placement; 8 | options?: Options; 9 | }; 10 | 11 | export default function LiteTooltip(props: TooltipProps) { 12 | const state = useStore({ 13 | open: false, 14 | }); 15 | 16 | const containerRef = useRef(); 17 | const popperRef = useRef(); 18 | 19 | onUpdate(() => { 20 | if (state.open) { 21 | createPopper(containerRef, popperRef, { 22 | placement: props.placement || 'auto', 23 | ...props.options, 24 | }); 25 | } 26 | }, [state.open]); 27 | 28 | return ( 29 | (state.open = true)} 32 | onMouseLeave={() => (state.open = false)} 33 | css={{ 34 | position: 'relative', 35 | }} 36 | > 37 | {props.text} 38 | {state.open && ( 39 |
51 | {props.tooltipText} 52 |
53 | )} 54 |
55 | ); 56 | } 57 | -------------------------------------------------------------------------------- /frameworks/angular/karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration file, see link for more information 2 | // https://karma-runner.github.io/1.0/config/configuration-file.html 3 | 4 | module.exports = function (config) { 5 | config.set({ 6 | basePath: '', 7 | frameworks: ['jasmine', '@angular-devkit/build-angular'], 8 | plugins: [ 9 | require('karma-jasmine'), 10 | require('karma-chrome-launcher'), 11 | require('karma-jasmine-html-reporter'), 12 | require('karma-coverage'), 13 | require('@angular-devkit/build-angular/plugins/karma') 14 | ], 15 | client: { 16 | jasmine: { 17 | // you can add configuration options for Jasmine here 18 | // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html 19 | // for example, you can disable the random execution with `random: false` 20 | // or set a specific seed with `seed: 4321` 21 | }, 22 | clearContext: false // leave Jasmine Spec Runner output visible in browser 23 | }, 24 | jasmineHtmlReporter: { 25 | suppressAll: true // removes the duplicated traces 26 | }, 27 | coverageReporter: { 28 | dir: require('path').join(__dirname, './coverage/angular'), 29 | subdir: '.', 30 | reporters: [ 31 | { type: 'html' }, 32 | { type: 'text-summary' } 33 | ] 34 | }, 35 | reporters: ['progress', 'kjhtml'], 36 | port: 9876, 37 | colors: true, 38 | logLevel: config.LOG_INFO, 39 | autoWatch: true, 40 | browsers: ['Chrome'], 41 | singleRun: false, 42 | restartOnFileChange: true 43 | }); 44 | }; 45 | -------------------------------------------------------------------------------- /frameworks/lit/LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2019 Google LLC. All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright notice, this 9 | list of conditions and the following disclaimer. 10 | 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | 3. Neither the name of the copyright holder nor the names of its 16 | contributors may be used to endorse or promote products derived from 17 | this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 23 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 25 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 26 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 27 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /frameworks/nuxt2/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### Node template 3 | # Logs 4 | /logs 5 | *.log 6 | npm-debug.log* 7 | yarn-debug.log* 8 | yarn-error.log* 9 | 10 | # Runtime data 11 | pids 12 | *.pid 13 | *.seed 14 | *.pid.lock 15 | 16 | # Directory for instrumented libs generated by jscoverage/JSCover 17 | lib-cov 18 | 19 | # Coverage directory used by tools like istanbul 20 | coverage 21 | 22 | # nyc test coverage 23 | .nyc_output 24 | 25 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 26 | .grunt 27 | 28 | # Bower dependency directory (https://bower.io/) 29 | bower_components 30 | 31 | # node-waf configuration 32 | .lock-wscript 33 | 34 | # Compiled binary addons (https://nodejs.org/api/addons.html) 35 | build/Release 36 | 37 | # Dependency directories 38 | node_modules/ 39 | jspm_packages/ 40 | 41 | # TypeScript v1 declaration files 42 | typings/ 43 | 44 | # Optional npm cache directory 45 | .npm 46 | 47 | # Optional eslint cache 48 | .eslintcache 49 | 50 | # Optional REPL history 51 | .node_repl_history 52 | 53 | # Output of 'npm pack' 54 | *.tgz 55 | 56 | # Yarn Integrity file 57 | .yarn-integrity 58 | 59 | # dotenv environment variables file 60 | .env 61 | 62 | # parcel-bundler cache (https://parceljs.org/) 63 | .cache 64 | 65 | # next.js build output 66 | .next 67 | 68 | # nuxt.js build output 69 | .nuxt 70 | 71 | # Nuxt generate 72 | dist 73 | 74 | # vuepress build output 75 | .vuepress/dist 76 | 77 | # Serverless directories 78 | .serverless 79 | 80 | # IDE / Editor 81 | .idea 82 | 83 | # Service worker 84 | sw.* 85 | 86 | # macOS 87 | .DS_Store 88 | 89 | # Vim swap files 90 | *.swp 91 | -------------------------------------------------------------------------------- /frameworks/astro/README.md: -------------------------------------------------------------------------------- 1 | # Welcome to [Astro](https://astro.build) 2 | 3 | [![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/withastro/astro/tree/latest/examples/basics) 4 | 5 | > 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun! 6 | 7 | ## 🚀 Project Structure 8 | 9 | Inside of your Astro project, you'll see the following folders and files: 10 | 11 | ``` 12 | / 13 | ├── public/ 14 | │ └── favicon.ico 15 | ├── src/ 16 | │ ├── components/ 17 | │ │ └── Layout.astro 18 | │ └── pages/ 19 | │ └── index.astro 20 | └── package.json 21 | ``` 22 | 23 | Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name. 24 | 25 | There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components or layouts. 26 | 27 | Any static assets, like images, can be placed in the `public/` directory. 28 | 29 | ## 🧞 Commands 30 | 31 | All commands are run from the root of the project, from a terminal: 32 | 33 | | Command | Action | 34 | | :---------------- | :------------------------------------------- | 35 | | `npm install` | Installs dependencies | 36 | | `npm run dev` | Starts local dev server at `localhost:3000` | 37 | | `npm run build` | Build your production site to `./dist/` | 38 | | `npm run preview` | Preview your build locally, before deploying | 39 | 40 | ## 👀 Want to learn more? 41 | 42 | Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat). 43 | -------------------------------------------------------------------------------- /frameworks/next/README.md: -------------------------------------------------------------------------------- 1 | This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). 2 | 3 | ## Getting Started 4 | 5 | First, run the development server: 6 | 7 | ```bash 8 | npm run dev 9 | # or 10 | yarn dev 11 | ``` 12 | 13 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. 14 | 15 | You can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file. 16 | 17 | [API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.js`. 18 | 19 | The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages. 20 | 21 | ## Learn More 22 | 23 | To learn more about Next.js, take a look at the following resources: 24 | 25 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. 26 | - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. 27 | 28 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! 29 | 30 | ## Deploy on Vercel 31 | 32 | The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. 33 | 34 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. 35 | -------------------------------------------------------------------------------- /src/scripts/gen-simple-reports.ts: -------------------------------------------------------------------------------- 1 | import { glob, fs, chalk } from 'zx'; 2 | import { getSimpleReport, SimpleReport } from '../helpers/get-simple-report.js'; 3 | import { getTable } from '../helpers/get-table.js'; 4 | 5 | const reports = await glob('apps/components/src/reports/**/*.json'); 6 | 7 | type ResultsMap = Record; 8 | type PathResultsMap = Record; 9 | const pathResultsMap: PathResultsMap = {}; 10 | 11 | const IGNORE_FRAMEWORKS = process.env.IGNORE_FRAMEWORKS?.split(',') || []; 12 | 13 | await Promise.all( 14 | reports.map(async (path) => { 15 | const pathSplit = path.split('/'); 16 | let routePathPart = pathSplit.at(-2)!; 17 | if (routePathPart === 'reports') { 18 | routePathPart = 'hello-world'; 19 | } 20 | const framework = pathSplit.at(-1)!.split('.json')[0]; 21 | if (IGNORE_FRAMEWORKS.includes(framework)) { 22 | return; 23 | } 24 | const json = JSON.parse(await fs.readFile(path, 'utf8')) as LH.Result; 25 | const newFilePath = path.replace('.json', '_simple.ts'); 26 | const simpleReport = getSimpleReport(json); 27 | 28 | if (!pathResultsMap[routePathPart]) { 29 | pathResultsMap[routePathPart] = {}; 30 | } 31 | pathResultsMap[routePathPart][framework] = simpleReport; 32 | 33 | const newFile = ` 34 | // Generated from benchmark data 35 | export default ${JSON.stringify(simpleReport, null, 2)}`; 36 | await fs.writeFile(newFilePath, newFile); 37 | }) 38 | ); 39 | 40 | for (const key of Object.keys(pathResultsMap)) { 41 | const resultsMap = pathResultsMap[key]; 42 | const table = getTable(resultsMap); 43 | console.info(chalk.green(`Results for ${key}:`)); 44 | console.table(table); 45 | } 46 | -------------------------------------------------------------------------------- /apps/components/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@builder.io/components", 3 | "private": true, 4 | "version": "0.0.1", 5 | "scripts": { 6 | "build": "mitosis build", 7 | "copy": "cd ../../ && npm run copy", 8 | "postbuild": "npm run copy", 9 | "start": "watch 'npm run build' ./src" 10 | }, 11 | "dependencies": { 12 | "@builder.io/mitosis": "^0.0.56-105", 13 | "@builder.io/mitosis-cli": "^0.0.17-96", 14 | "@popperjs/core": "^2.11.6", 15 | "fuse.js": "^6.6.2", 16 | "highlight.js": "^11.6.0", 17 | "lighthouse": "^9.6.5", 18 | "lodash": "^4.17.21", 19 | "shiki": "^0.11.0", 20 | "traverse": "^0.6.6", 21 | "watch": "^1.0.2" 22 | }, 23 | "devDependencies": { 24 | "@builder.io/qwik": "0.0.38", 25 | "concurrently": "^7.3.0", 26 | "react": "^18.2.0", 27 | "react-dom": "^18.2.0", 28 | "solid-js": "^1.4.5", 29 | "solid-styled-components": "^0.28.4", 30 | "sync-directory": "^5.1.7", 31 | "ts-node": "^10.9.1", 32 | "typescript": "^4.7.4", 33 | "vue": "~2.6" 34 | }, 35 | "peerDependencies": { 36 | "@builder.io/qwik": "0.0.38", 37 | "react": "^18.2.0", 38 | "react-dom": "^18.2.0", 39 | "solid-js": "^1.4.5", 40 | "solid-styled-components": "^0.28.4", 41 | "vue": "^2.6.12" 42 | }, 43 | "exports": { 44 | "./vue/nuxt": "./output/vue/nuxt.js", 45 | "./vue2": "./output/vue/vue2/src/index.js", 46 | "./vue3": "./output/vue/vue3/src/index.js", 47 | "./react": "./output/react/src/index.js", 48 | "./qwik": "./output/qwik/src/index.js", 49 | "./solid": "./output/solid/src/index.js", 50 | "./svelte": "./output/svelte/src/index.js", 51 | "./angular": "./output/angular/src/index.js", 52 | "./*": "./output/*/src/index.js" 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /frameworks/vue3/README.md: -------------------------------------------------------------------------------- 1 | # vue3 2 | 3 | This template should help get you started developing with Vue 3 in Vite. 4 | 5 | ## Recommended IDE Setup 6 | 7 | [VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin). 8 | 9 | ## Type Support for `.vue` Imports in TS 10 | 11 | TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types. 12 | 13 | If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps: 14 | 15 | 1. Disable the built-in TypeScript Extension 16 | 1) Run `Extensions: Show Built-in Extensions` from VSCode's command palette 17 | 2) Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)` 18 | 2. Reload the VSCode window by running `Developer: Reload Window` from the command palette. 19 | 20 | ## Customize configuration 21 | 22 | See [Vite Configuration Reference](https://vitejs.dev/config/). 23 | 24 | ## Project Setup 25 | 26 | ```sh 27 | npm install 28 | ``` 29 | 30 | ### Compile and Hot-Reload for Development 31 | 32 | ```sh 33 | npm run dev 34 | ``` 35 | 36 | ### Type-Check, Compile and Minify for Production 37 | 38 | ```sh 39 | npm run build 40 | ``` 41 | -------------------------------------------------------------------------------- /frameworks/nuxt2/.prettierignore: -------------------------------------------------------------------------------- 1 | ### 2 | # Place your Prettier ignore content here 3 | 4 | ### 5 | # .gitignore content is duplicated here due to https://github.com/prettier/prettier/issues/8506 6 | 7 | # Created by .ignore support plugin (hsz.mobi) 8 | ### Node template 9 | # Logs 10 | /logs 11 | *.log 12 | npm-debug.log* 13 | yarn-debug.log* 14 | yarn-error.log* 15 | 16 | # Runtime data 17 | pids 18 | *.pid 19 | *.seed 20 | *.pid.lock 21 | 22 | # Directory for instrumented libs generated by jscoverage/JSCover 23 | lib-cov 24 | 25 | # Coverage directory used by tools like istanbul 26 | coverage 27 | 28 | # nyc test coverage 29 | .nyc_output 30 | 31 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 32 | .grunt 33 | 34 | # Bower dependency directory (https://bower.io/) 35 | bower_components 36 | 37 | # node-waf configuration 38 | .lock-wscript 39 | 40 | # Compiled binary addons (https://nodejs.org/api/addons.html) 41 | build/Release 42 | 43 | # Dependency directories 44 | node_modules/ 45 | jspm_packages/ 46 | 47 | # TypeScript v1 declaration files 48 | typings/ 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Optional REPL history 57 | .node_repl_history 58 | 59 | # Output of 'npm pack' 60 | *.tgz 61 | 62 | # Yarn Integrity file 63 | .yarn-integrity 64 | 65 | # dotenv environment variables file 66 | .env 67 | 68 | # parcel-bundler cache (https://parceljs.org/) 69 | .cache 70 | 71 | # next.js build output 72 | .next 73 | 74 | # nuxt.js build output 75 | .nuxt 76 | 77 | # Nuxt generate 78 | dist 79 | 80 | # vuepress build output 81 | .vuepress/dist 82 | 83 | # Serverless directories 84 | .serverless 85 | 86 | # IDE / Editor 87 | .idea 88 | 89 | # Service worker 90 | sw.* 91 | 92 | # macOS 93 | .DS_Store 94 | 95 | # Vim swap files 96 | *.swp 97 | --------------------------------------------------------------------------------