Monorepo for wisp.place. A static site hosting service built on top of the AT Protocol. wisp.place

:tada: feat: init

nekomimi.pet b09f398c

+44
.gitignore
···
···
+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+
# dependencies
+
/node_modules
+
/.pnp
+
.pnp.js
+
+
# testing
+
/coverage
+
+
# next.js
+
/.next/
+
/out/
+
+
# production
+
/build
+
+
# misc
+
.DS_Store
+
*.pem
+
+
# debug
+
npm-debug.log*
+
yarn-debug.log*
+
yarn-error.log*
+
+
# local env files
+
.env.local
+
.env.development.local
+
.env.test.local
+
.env.production.local
+
+
# vercel
+
.vercel
+
+
**/*.trace
+
**/*.zip
+
**/*.tar.gz
+
**/*.tgz
+
**/*.log
+
package-lock.json
+
**/*.bun
+
+
server
+7
.prettierrc
···
···
+
{
+
"useTabs": true,
+
"tabWidth": 4,
+
"semi": false,
+
"singleQuote": true,
+
"trailingComma": "none"
+
}
+15
README.md
···
···
+
# Elysia with Bun runtime
+
+
## Getting Started
+
To get started with this template, simply paste this command into your terminal:
+
```bash
+
bun create elysia ./elysia-example
+
```
+
+
## Development
+
To start the development server run:
+
```bash
+
bun run dev
+
```
+
+
Open http://localhost:3000/ with your browser to see the result.
+118
bun.lock
···
···
+
{
+
"lockfileVersion": 1,
+
"workspaces": {
+
"": {
+
"name": "elysia-static",
+
"dependencies": {
+
"@elysiajs/eden": "^1.4.3",
+
"@elysiajs/openapi": "^1.4.11",
+
"@elysiajs/static": "^1.4.2",
+
"@tanstack/react-query": "^5.90.2",
+
"clsx": "^2.1.1",
+
"elysia": "latest",
+
"react": "^19.2.0",
+
"react-dom": "^19.2.0",
+
"tailwindcss": "^4.1.14",
+
},
+
"devDependencies": {
+
"@types/react": "^19.2.2",
+
"@types/react-dom": "^19.2.1",
+
"bun-plugin-tailwind": "^0.1.2",
+
"bun-types": "latest",
+
},
+
},
+
},
+
"packages": {
+
"@borewit/text-codec": ["@borewit/text-codec@0.1.1", "", {}, "sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA=="],
+
+
"@elysiajs/eden": ["@elysiajs/eden@1.4.3", "", { "peerDependencies": { "elysia": ">= 1.4.0-exp.0" } }, "sha512-mX0v5cTvTJiDsDWNEEyuoqudOvW5J+tXsvp/ZOJXJF3iCIEJI0Brvm78ymPrvwiOG4nUr3lS8BxUfbNf32DSXA=="],
+
+
"@elysiajs/openapi": ["@elysiajs/openapi@1.4.11", "", { "peerDependencies": { "elysia": ">= 1.4.0" } }, "sha512-d75bMxYJpN6qSDi/z9L1S7SLk1S/8Px+cTb3W2lrYzU8uQ5E0kXdy1oOMJEfTyVsz3OA19NP9KNxE7ztSbLBLg=="],
+
+
"@elysiajs/static": ["@elysiajs/static@1.4.2", "", { "peerDependencies": { "elysia": ">= 1.4.0" } }, "sha512-lAEvdxeBhU/jX/hTzfoP+1AtqhsKNCwW4Q+tfNwAShWU6s4ZPQxR1hLoHBveeApofJt4HWEq/tBGvfFz3ODuKg=="],
+
+
"@oven/bun-darwin-aarch64": ["@oven/bun-darwin-aarch64@1.3.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-WeXSaL29ylJEZMYHHW28QZ6rgAbxQ1KuNSZD9gvd3fPlo0s6s2PglvPArjjP07nmvIK9m4OffN0k4M98O7WmAg=="],
+
+
"@oven/bun-darwin-x64": ["@oven/bun-darwin-x64@1.3.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-CFKjoUWQH0Oz3UHYfKbdKLq0wGryrFsTJEYq839qAwHQSECvVZYAnxVVDYUDa0yQFonhO2qSHY41f6HK+b7xtw=="],
+
+
"@oven/bun-darwin-x64-baseline": ["@oven/bun-darwin-x64-baseline@1.3.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-+FSr/ub5vA/EkD3fMhHJUzYioSf/sXd50OGxNDAntVxcDu4tXL/81Ka3R/gkZmjznpLFIzovU/1Ts+b7dlkrfw=="],
+
+
"@oven/bun-linux-aarch64": ["@oven/bun-linux-aarch64@1.3.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-WHthS/eLkCNcp9pk4W8aubRl9fIUgt2XhHyLrP0GClB1FVvmodu/zIOtG0NXNpzlzB8+gglOkGo4dPjfVf4Z+g=="],
+
+
"@oven/bun-linux-aarch64-musl": ["@oven/bun-linux-aarch64-musl@1.3.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-HT5sr7N8NDYbQRjAnT7ISpx64y+ewZZRQozOJb0+KQObKvg4UUNXGm4Pn1xA4/WPMZDDazjO8E2vtOQw1nJlAQ=="],
+
+
"@oven/bun-linux-x64": ["@oven/bun-linux-x64@1.3.0", "", { "os": "linux", "cpu": "x64" }, "sha512-sGEWoJQXO4GDr0x4t/yJQ/Bq1yNkOdX9tHbZZ+DBGJt3z3r7jeb4Digv8xQUk6gdTFC9vnGHuin+KW3/yD1Aww=="],
+
+
"@oven/bun-linux-x64-baseline": ["@oven/bun-linux-x64-baseline@1.3.0", "", { "os": "linux", "cpu": "x64" }, "sha512-OmlEH3nlxQyv7HOvTH21vyNAZGv9DIPnrTznzvKiOQxkOphhCyKvPTlF13ydw4s/i18iwaUrhHy+YG9HSSxa4Q=="],
+
+
"@oven/bun-linux-x64-musl": ["@oven/bun-linux-x64-musl@1.3.0", "", { "os": "linux", "cpu": "x64" }, "sha512-rtzUEzCynl3Rhgn/iR9DQezSFiZMcAXAbU+xfROqsweMGKwvwIA2ckyyckO08psEP8XcUZTs3LT9CH7PnaMiEA=="],
+
+
"@oven/bun-linux-x64-musl-baseline": ["@oven/bun-linux-x64-musl-baseline@1.3.0", "", { "os": "linux", "cpu": "x64" }, "sha512-hrr7mDvUjMX1tuJaXz448tMsgKIqGJBY8+rJqztKOw1U5+a/v2w5HuIIW1ce7ut0ZwEn+KIDvAujlPvpH33vpQ=="],
+
+
"@oven/bun-windows-x64": ["@oven/bun-windows-x64@1.3.0", "", { "os": "win32", "cpu": "x64" }, "sha512-xXwtpZVVP7T+vkxcF/TUVVOGRjEfkByO4mKveKYb4xnHWV4u4NnV0oNmzyMKkvmj10to5j2h0oZxA4ZVVv4gfA=="],
+
+
"@oven/bun-windows-x64-baseline": ["@oven/bun-windows-x64-baseline@1.3.0", "", { "os": "win32", "cpu": "x64" }, "sha512-/jVZ8eYjpYHLDFNoT86cP+AjuWvpkzFY+0R0a1bdeu0sQ6ILuy1FV6hz1hUAP390E09VCo5oP76fnx29giHTtA=="],
+
+
"@sinclair/typebox": ["@sinclair/typebox@0.34.41", "", {}, "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g=="],
+
+
"@tanstack/query-core": ["@tanstack/query-core@5.90.2", "", {}, "sha512-k/TcR3YalnzibscALLwxeiLUub6jN5EDLwKDiO7q5f4ICEoptJ+n9+7vcEFy5/x/i6Q+Lb/tXrsKCggf5uQJXQ=="],
+
+
"@tanstack/react-query": ["@tanstack/react-query@5.90.2", "", { "dependencies": { "@tanstack/query-core": "5.90.2" }, "peerDependencies": { "react": "^18 || ^19" } }, "sha512-CLABiR+h5PYfOWr/z+vWFt5VsOA2ekQeRQBFSKlcoW6Ndx/f8rfyVmq4LbgOM4GG2qtxAxjLYLOpCNTYm4uKzw=="],
+
+
"@tokenizer/inflate": ["@tokenizer/inflate@0.2.7", "", { "dependencies": { "debug": "^4.4.0", "fflate": "^0.8.2", "token-types": "^6.0.0" } }, "sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg=="],
+
+
"@tokenizer/token": ["@tokenizer/token@0.3.0", "", {}, "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="],
+
+
"@types/node": ["@types/node@24.7.2", "", { "dependencies": { "undici-types": "~7.14.0" } }, "sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA=="],
+
+
"@types/react": ["@types/react@19.2.2", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA=="],
+
+
"@types/react-dom": ["@types/react-dom@19.2.1", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-/EEvYBdT3BflCWvTMO7YkYBHVE9Ci6XdqZciZANQgKpaiDRGOLIlRo91jbTNRQjgPFWVaRxcYc0luVNFitz57A=="],
+
+
"bun": ["bun@1.3.0", "", { "optionalDependencies": { "@oven/bun-darwin-aarch64": "1.3.0", "@oven/bun-darwin-x64": "1.3.0", "@oven/bun-darwin-x64-baseline": "1.3.0", "@oven/bun-linux-aarch64": "1.3.0", "@oven/bun-linux-aarch64-musl": "1.3.0", "@oven/bun-linux-x64": "1.3.0", "@oven/bun-linux-x64-baseline": "1.3.0", "@oven/bun-linux-x64-musl": "1.3.0", "@oven/bun-linux-x64-musl-baseline": "1.3.0", "@oven/bun-windows-x64": "1.3.0", "@oven/bun-windows-x64-baseline": "1.3.0" }, "os": [ "linux", "win32", "darwin", ], "cpu": [ "x64", "arm64", ], "bin": { "bun": "bin/bun.exe", "bunx": "bin/bunx.exe" } }, "sha512-YI7mFs7iWc/VsGsh2aw6eAPD2cjzn1j+LKdYVk09x1CrdTWKYIHyd+dG5iQoN9//3hCDoZj8U6vKpZzEf5UARA=="],
+
+
"bun-plugin-tailwind": ["bun-plugin-tailwind@0.1.2", "", { "peerDependencies": { "bun": ">=1.0.0" } }, "sha512-41jNC1tZRSK3s1o7pTNrLuQG8kL/0vR/JgiTmZAJ1eHwe0w5j6HFPKeqEk0WAD13jfrUC7+ULuewFBBCoADPpg=="],
+
+
"bun-types": ["bun-types@1.3.0", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-u8X0thhx+yJ0KmkxuEo9HAtdfgCBaM/aI9K90VQcQioAmkVp3SG3FkwWGibUFz3WdXAdcsqOcbU40lK7tbHdkQ=="],
+
+
"clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="],
+
+
"cookie": ["cookie@1.0.2", "", {}, "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA=="],
+
+
"csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="],
+
+
"debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
+
+
"elysia": ["elysia@1.4.11", "", { "dependencies": { "cookie": "^1.0.2", "exact-mirror": "0.2.2", "fast-decode-uri-component": "^1.0.1" }, "peerDependencies": { "@sinclair/typebox": ">= 0.34.0 < 1", "file-type": ">= 20.0.0", "openapi-types": ">= 12.0.0", "typescript": ">= 5.0.0" }, "optionalPeers": ["typescript"] }, "sha512-cphuzQj0fRw1ICRvwHy2H3xQio9bycaZUVHnDHJQnKqBfMNlZ+Hzj6TMmt9lc0Az0mvbCnPXWVF7y1MCRhUuOA=="],
+
+
"exact-mirror": ["exact-mirror@0.2.2", "", { "peerDependencies": { "@sinclair/typebox": "^0.34.15" }, "optionalPeers": ["@sinclair/typebox"] }, "sha512-CrGe+4QzHZlnrXZVlo/WbUZ4qQZq8C0uATQVGVgXIrNXgHDBBNFD1VRfssRA2C9t3RYvh3MadZSdg2Wy7HBoQA=="],
+
+
"fast-decode-uri-component": ["fast-decode-uri-component@1.0.1", "", {}, "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg=="],
+
+
"fflate": ["fflate@0.8.2", "", {}, "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A=="],
+
+
"file-type": ["file-type@21.0.0", "", { "dependencies": { "@tokenizer/inflate": "^0.2.7", "strtok3": "^10.2.2", "token-types": "^6.0.0", "uint8array-extras": "^1.4.0" } }, "sha512-ek5xNX2YBYlXhiUXui3D/BXa3LdqPmoLJ7rqEx2bKJ7EAUEfmXgW0Das7Dc6Nr9MvqaOnIqiPV0mZk/r/UpNAg=="],
+
+
"ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="],
+
+
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
+
+
"openapi-types": ["openapi-types@12.1.3", "", {}, "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw=="],
+
+
"react": ["react@19.2.0", "", {}, "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ=="],
+
+
"react-dom": ["react-dom@19.2.0", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.0" } }, "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ=="],
+
+
"scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="],
+
+
"strtok3": ["strtok3@10.3.4", "", { "dependencies": { "@tokenizer/token": "^0.3.0" } }, "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg=="],
+
+
"tailwindcss": ["tailwindcss@4.1.14", "", {}, "sha512-b7pCxjGO98LnxVkKjaZSDeNuljC4ueKUddjENJOADtubtdo8llTaJy7HwBMeLNSSo2N5QIAgklslK1+Ir8r6CA=="],
+
+
"token-types": ["token-types@6.1.1", "", { "dependencies": { "@borewit/text-codec": "^0.1.0", "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" } }, "sha512-kh9LVIWH5CnL63Ipf0jhlBIy0UsrMj/NJDfpsy1SqOXlLKEVyXXYrnFxFT1yOOYVGBSApeVnjPw/sBz5BfEjAQ=="],
+
+
"uint8array-extras": ["uint8array-extras@1.5.0", "", {}, "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A=="],
+
+
"undici-types": ["undici-types@7.14.0", "", {}, "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA=="],
+
}
+
}
+2
bunfig.toml
···
···
+
[serve.static]
+
plugins = ["bun-plugin-tailwind"]
+27
package.json
···
···
+
{
+
"name": "elysia-static",
+
"version": "1.0.50",
+
"scripts": {
+
"test": "echo \"Error: no test specified\" && exit 1",
+
"dev": "bun run --watch src/index.ts",
+
"build": "bun build --compile --target bun --outfile server src/index.ts"
+
},
+
"dependencies": {
+
"@elysiajs/eden": "^1.4.3",
+
"@elysiajs/openapi": "^1.4.11",
+
"@elysiajs/static": "^1.4.2",
+
"@tanstack/react-query": "^5.90.2",
+
"clsx": "^2.1.1",
+
"elysia": "latest",
+
"react": "^19.2.0",
+
"react-dom": "^19.2.0",
+
"tailwindcss": "^4.1.14"
+
},
+
"devDependencies": {
+
"@types/react": "^19.2.2",
+
"@types/react-dom": "^19.2.1",
+
"bun-plugin-tailwind": "^0.1.2",
+
"bun-types": "latest"
+
},
+
"module": "src/index.js"
+
}
public/images/maddelena-1.webp

This is a binary file and will not be displayed.

public/images/maddelena-2.webp

This is a binary file and will not be displayed.

+13
public/index.html
···
···
+
<!doctype html>
+
<html lang="en">
+
<head>
+
<meta charset="UTF-8" />
+
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
+
<title>Elysia Static</title>
+
</head>
+
<body>
+
<div id="elysia"></div>
+
<script type="module" src="./index.tsx"></script>
+
</body>
+
</html>
+30
public/index.tsx
···
···
+
import { useState } from 'react'
+
import { createRoot } from 'react-dom/client'
+
+
import Layout from './layouts'
+
+
function App() {
+
const [count, setCount] = useState(0)
+
const increase = () => setCount((c) => c + 1)
+
+
return (
+
<>
+
<img src="/images/maddelena-1.webp" className="max-w-40" />
+
<h1 className="text-3xl">Bun/Elysia Fullstack</h1>
+
<h2 className="text-6xl">{count}</h2>
+
<button
+
className="text-xl text-blue-500 px-6 py-2 bg-blue-100 rounded-xl"
+
onClick={increase}
+
>
+
Increase
+
</button>
+
</>
+
)
+
}
+
+
const root = createRoot(document.getElementById('elysia')!)
+
root.render(
+
<Layout className="gap-6">
+
<App />
+
</Layout>
+
)
+27
public/layouts/index.tsx
···
···
+
import type { PropsWithChildren } from 'react'
+
+
import { QueryClientProvider, QueryClient } from '@tanstack/react-query'
+
import clsx from 'clsx'
+
+
import '../styles/global.css'
+
+
const client = new QueryClient()
+
+
interface LayoutProps extends PropsWithChildren {
+
className?: string
+
}
+
+
export default function Layout({ children, className }: LayoutProps) {
+
return (
+
<QueryClientProvider client={client}>
+
<div
+
className={clsx(
+
'flex flex-col justify-center items-center w-full min-h-screen',
+
className
+
)}
+
>
+
{children}
+
</div>
+
</QueryClientProvider>
+
)
+
}
+5
public/libs/api.ts
···
···
+
import { treaty } from '@elysiajs/eden'
+
+
import type { app } from '../../src'
+
+
export const api = treaty<typeof app>('localhost:3000')
+13
public/other/index.html
···
···
+
<!doctype html>
+
<html lang="en">
+
<head>
+
<meta charset="UTF-8" />
+
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
+
<title>Elysia Static</title>
+
</head>
+
<body>
+
<div id="elysia"></div>
+
<script type="module" src="./index.tsx"></script>
+
</body>
+
</html>
+27
public/other/index.tsx
···
···
+
import { createRoot } from 'react-dom/client'
+
import { useQuery } from '@tanstack/react-query'
+
+
import Layout from '../layouts'
+
import { api } from '../libs/api'
+
+
function App() {
+
const { data: response, isLoading } = useQuery({
+
queryKey: ['version'],
+
queryFn: () => api.message.get()
+
})
+
+
return (
+
<>
+
<img src="/images/maddelena-2.webp" className="max-w-40" />
+
<h1 className="text-3xl">API call!</h1>
+
<h2 className="text-6xl">{response?.data?.message}</h2>
+
</>
+
)
+
}
+
+
const root = createRoot(document.getElementById('elysia')!)
+
root.render(
+
<Layout className="gap-6">
+
<App />
+
</Layout>
+
)
+1
public/styles/global.css
···
···
+
@import 'tailwindcss';
+21
src/index.ts
···
···
+
import { Elysia } from 'elysia'
+
import { staticPlugin } from '@elysiajs/static'
+
import { openapi, fromTypes } from '@elysiajs/openapi'
+
+
export const app = new Elysia()
+
.use(
+
openapi({
+
references: fromTypes()
+
})
+
)
+
.use(
+
await staticPlugin({
+
prefix: '/'
+
})
+
)
+
.get('/message', { message: 'Hello from server' } as const)
+
.listen(3000)
+
+
console.log(
+
`🦊 Elysia is running at ${app.server?.hostname}:${app.server?.port}`
+
)
+105
tsconfig.json
···
···
+
{
+
"compilerOptions": {
+
/* Visit https://aka.ms/tsconfig to read more about this file */
+
+
/* Projects */
+
// "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */
+
// "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
+
// "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */
+
// "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */
+
// "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
+
// "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
+
+
/* Language and Environment */
+
"target": "ES2021" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */,
+
// "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
+
"jsx": "preserve" /* Specify what JSX code is generated. */,
+
// "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
+
// "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
+
// "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
+
// "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
+
// "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
+
// "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
+
// "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
+
// "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
+
// "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
+
+
/* Modules */
+
"module": "ES2022" /* Specify what module code is generated. */,
+
// "rootDir": "./", /* Specify the root folder within your source files. */
+
"moduleResolution": "node" /* Specify how TypeScript looks up a file from a given module specifier. */,
+
// "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
+
// "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
+
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
+
// "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */
+
"types": [
+
"bun-types"
+
] /* Specify type package names to be included without being referenced in a source file. */,
+
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
+
// "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
+
// "resolveJsonModule": true, /* Enable importing .json files. */
+
// "noResolve": true, /* Disallow 'import's, 'require's or '<reference>'s from expanding the number of files TypeScript should add to a project. */
+
+
/* JavaScript Support */
+
// "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
+
// "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
+
// "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
+
+
/* Emit */
+
// "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
+
// "declarationMap": true, /* Create sourcemaps for d.ts files. */
+
// "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
+
// "sourceMap": true, /* Create source map files for emitted JavaScript files. */
+
// "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
+
// "outDir": "./", /* Specify an output folder for all emitted files. */
+
// "removeComments": true, /* Disable emitting comments. */
+
// "noEmit": true, /* Disable emitting files from a compilation. */
+
// "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
+
// "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */
+
// "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
+
// "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
+
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
+
// "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
+
// "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
+
// "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
+
// "newLine": "crlf", /* Set the newline character for emitting files. */
+
// "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
+
// "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */
+
// "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
+
// "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */
+
// "declarationDir": "./", /* Specify the output directory for generated declaration files. */
+
// "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
+
+
/* Interop Constraints */
+
// "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
+
// "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
+
"esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */,
+
// "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
+
"forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */,
+
+
/* Type Checking */
+
"strict": true /* Enable all strict type-checking options. */,
+
// "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
+
// "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */
+
// "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
+
// "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
+
// "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
+
// "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */
+
// "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */
+
// "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
+
// "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
+
// "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
+
// "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
+
// "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
+
// "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
+
// "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
+
// "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
+
// "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
+
// "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
+
// "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
+
+
/* Completeness */
+
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
+
"skipLibCheck": true /* Skip type checking all .d.ts files. */
+
}
+
}