1 Commits

Author SHA1 Message Date
f2e6325258 Update grafana/grafana:latest Docker digest to 60794dc
All checks were successful
Build / build (pull_request) Successful in 36s
Lint / lint (push) Successful in 12s
2025-09-24 12:01:34 +00:00
17 changed files with 98 additions and 107 deletions

View File

@@ -1,6 +1,3 @@
{
"typescript.tsdk": "node_modules/typescript/lib",
"editor.codeActionsOnSave": {
"source.fixAll.biome": "explicit"
}
"typescript.tsdk": "node_modules/typescript/lib"
}

View File

@@ -1,4 +1,4 @@
FROM oven/bun:1.2.23@sha256:6ebf306367da43ad75c4d5119563e24de9b66372929ad4fa31546be053a16f74 AS bun
FROM oven/bun:1.2.22@sha256:66ba69deede44e3af5dc542def218fdb3bcad2205900ea761dc5623bf973d2df AS bun
FROM node:22.19.0-trixie-slim@sha256:29942871c60d79cfa155b67136b8a26a9c635684a41484ca50fdd8dd6ca31c52
COPY --from=bun /usr/local/bin/bun \
/usr/local/bin/bunx \

View File

@@ -1,36 +1,34 @@
{
"$schema": "https://biomejs.dev/schemas/latest/schema.json",
"vcs": {
"enabled": false,
"clientKind": "git",
"useIgnoreFile": false
},
"files": {
"ignoreUnknown": false
},
"formatter": {
"enabled": false
},
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"nursery": {
"useSortedClasses": "error"
}
}
},
"javascript": {
"$schema": "https://biomejs.dev/schemas/latest/schema.json",
"vcs": {
"enabled": false,
"clientKind": "git",
"useIgnoreFile": false
},
"files": {
"ignoreUnknown": false
},
"formatter": {
"quoteStyle": "double"
"enabled": false,
"indentStyle": "tab"
},
"linter": {
"enabled": true,
"rules": {
"recommended": true
}
},
"javascript": {
"formatter": {
"quoteStyle": "double"
}
},
"assist": {
"enabled": true,
"actions": {
"source": {
"organizeImports": "on"
}
}
}
},
"assist": {
"enabled": true,
"actions": {
"source": {
"organizeImports": "on"
}
}
}
}

View File

@@ -5,7 +5,7 @@
"name": "website",
"devDependencies": {
"@biomejs/biome": "^2.2.4",
"@effect/language-service": "^0.41.0",
"@effect/language-service": "^0.40.0",
"@types/bun": "latest",
"npm-check-updates": "^18.1.1",
"npm-sort": "^0.0.4",
@@ -160,7 +160,7 @@
"@effect/experimental": ["@effect/experimental@0.54.6", "", { "dependencies": { "uuid": "^11.0.3" }, "peerDependencies": { "@effect/platform": "^0.90.2", "effect": "^3.17.7", "ioredis": "^5", "lmdb": "^3" }, "optionalPeers": ["ioredis", "lmdb"] }, "sha512-UqHMvCQmrZT6kUVoUC0lqyno4Yad+j9hBGCdUjW84zkLwAq08tPqySiZUKRwY+Ae5B2Ab8rISYJH7nQvct9DMQ=="],
"@effect/language-service": ["@effect/language-service@0.41.1", "", { "bin": { "effect-language-service": "cli.js" } }, "sha512-BZaFkF1JdoTIJuzT7mNfUnfQG2MLxkQtn5b9y1z0BZUIcNfs5p7yR0ekYfTkPkt+TVD+9HE12VC1SsG5DReKww=="],
"@effect/language-service": ["@effect/language-service@0.40.0", "", { "bin": { "effect-language-service": "cli.js" } }, "sha512-VHikOhYXm+ECy+mLSszHgCfP9YyKQyB9GLFGBKY2nbnru9xwgCnar8pBLA0AkSUjAgn3hc/mdcFdb/XL9uywLQ=="],
"@effect/opentelemetry": ["@effect/opentelemetry@0.56.6", "", { "peerDependencies": { "@effect/platform": "^0.90.8", "@opentelemetry/api": "^1.9", "@opentelemetry/resources": "^2.0.0", "@opentelemetry/sdk-logs": "^0.203.0", "@opentelemetry/sdk-metrics": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/sdk-trace-web": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.33.0", "effect": "^3.17.13" }, "optionalPeers": ["@opentelemetry/api", "@opentelemetry/resources", "@opentelemetry/sdk-logs", "@opentelemetry/sdk-metrics", "@opentelemetry/sdk-trace-base", "@opentelemetry/sdk-trace-node", "@opentelemetry/sdk-trace-web"] }, "sha512-cBi9frXujTIEGXChkl4VdQfvDe7QvzC18SM8wK0CKYSgH9ZL7v/F5f5/3fTSTfEdO9ZyBk73s5Jbbogab0Q01g=="],

View File

@@ -11,7 +11,7 @@ x-env-base: &env-base
services:
server:
<<: *service-base
image: oven/bun:1.2.23@sha256:6ebf306367da43ad75c4d5119563e24de9b66372929ad4fa31546be053a16f74
image: oven/bun:1.2.22@sha256:66ba69deede44e3af5dc542def218fdb3bcad2205900ea761dc5623bf973d2df
volumes:
- *volume-app
working_dir: /app/packages/server
@@ -22,7 +22,7 @@ services:
cli:
<<: *service-base
image: oven/bun:1.2.23@sha256:6ebf306367da43ad75c4d5119563e24de9b66372929ad4fa31546be053a16f74
image: oven/bun:1.2.22@sha256:66ba69deede44e3af5dc542def218fdb3bcad2205900ea761dc5623bf973d2df
volumes:
- *volume-app
working_dir: /app
@@ -48,7 +48,7 @@ services:
tempo:
<<: *service-base
image: grafana/tempo:latest@sha256:b613f54818081f45e20a6bdb5669f6ae583149a0bdd4a658120f9265ccdfdb39
image: grafana/tempo:latest@sha256:21d563828e55c2ee4e79f9a4bf9e1abfa4f585213f9f5e49d9b98e44fac92f2c
command: [-config.file=/etc/tempo.yaml]
volumes:
- ./telemetry/tempo.yaml:/etc/tempo.yaml

View File

@@ -13,7 +13,7 @@
},
"devDependencies": {
"@biomejs/biome": "^2.2.4",
"@effect/language-service": "^0.41.0",
"@effect/language-service": "^0.40.0",
"@types/bun": "latest",
"npm-check-updates": "^18.1.1",
"npm-sort": "^0.0.4",

View File

@@ -1,8 +1,8 @@
{
"$schema": "https://biomejs.dev/schemas/latest/schema.json",
"root": false,
"extends": "//",
"files": {
"includes": ["./src/**"]
}
"$schema": "https://biomejs.dev/schemas/latest/schema.json",
"root": false,
"extends": "//",
"files": {
"includes": ["./src/**"]
}
}

View File

@@ -14,7 +14,7 @@
"clean:modules": "rm -rf node_modules"
},
"dependencies": {
"@effect/rpc": "^0.71.0",
"@effect/rpc": "^0.69.2",
"effect": "^3.17.13"
}
}

View File

@@ -1,8 +1,8 @@
{
"$schema": "https://biomejs.dev/schemas/latest/schema.json",
"root": false,
"extends": "//",
"files": {
"includes": ["./src/**"]
}
"$schema": "https://biomejs.dev/schemas/latest/schema.json",
"root": false,
"extends": "//",
"files": {
"includes": ["./src/**"]
}
}

View File

@@ -15,11 +15,11 @@
"clean:modules": "rm -rf node_modules"
},
"dependencies": {
"@effect/opentelemetry": "^0.58.0",
"@effect/platform": "^0.92.0",
"@effect/platform-bun": "^0.81.0",
"@effect/platform-node": "^0.98.0",
"@effect/rpc": "^0.71.0",
"@effect/opentelemetry": "^0.56.6",
"@effect/platform": "^0.90.9",
"@effect/platform-bun": "^0.79.0",
"@effect/platform-node": "^0.96.1",
"@effect/rpc": "^0.69.2",
"@opentelemetry/exporter-trace-otlp-http": "^0.205.0",
"@opentelemetry/sdk-metrics": "^2.1.0",
"@opentelemetry/sdk-trace-base": "^2.1.0",

View File

@@ -1,6 +1,6 @@
import { createServer } from "node:http"
import { NodeContext, NodeHttpServer, NodeRuntime } from "@effect/platform-node"
import { Effect, Layer } from "effect"
import { createServer } from "node:http"
import { ServerConfig } from "./config"
import { Server } from "./server"

View File

@@ -16,41 +16,51 @@ const makeWebRpcRoute = Effect.all([
Effect.provide(WebRpcLive),
)
const makeProductionWebappRoute = Effect.fnUntraced(function*(route: HttpRouter.PathInput) {
const makeProductionWebappMiddleware = Effect.gen(function*() {
const path = yield* Path.Path
const fs = yield* FileSystem.FileSystem
const dist = path.join(yield* path.fromFileUrl(new URL(".", import.meta.resolve("@website/webapp"))), "dist")
return HttpRouter.all(route, Effect.gen(function*() {
return () => Effect.gen(function*() {
const req = yield* HttpServerRequest.HttpServerRequest
const source = path.join(dist, req.url)
const exists = yield* fs.stat(source).pipe(
const isValid = yield* fs.stat(source).pipe(
Effect.andThen(stat => stat.type === "File"),
Effect.catchAll(() => Effect.succeed(false)),
)
return yield* HttpServerResponse.setHeader(
yield* HttpServerResponse.file(exists ? source : path.join(dist, "index.html")),
yield* HttpServerResponse.file(isValid ? source : path.join(dist, "index.html")),
"Cache-Control",
`public, max-age=${Duration.toSeconds("365 days")}, immutable`
)
}))
})
})
export const HttpAppDevelopment = Layer.unwrapScoped(Effect.gen(function*() {
return router.pipe(
yield* Effect.provide(makeWebRpcRoute, WebRpcSerializationDevelopment),
HttpServer.serve(flow(HttpMiddleware.logger, HttpMiddleware.xForwardedHeaders)),
export const HttpAppDevelopment = Effect.provide(makeWebRpcRoute, WebRpcSerializationDevelopment).pipe(
Effect.map(serveWebRpc => router.pipe(
serveWebRpc,
HttpServer.serve(flow(
HttpMiddleware.logger,
HttpMiddleware.xForwardedHeaders,
)),
HttpServer.withLogAddress,
)
}))
)),
export const HttpAppProduction = Layer.unwrapScoped(Effect.gen(function*() {
return router.pipe(
yield* Effect.provide(makeWebRpcRoute, WebRpcSerializationProduction),
yield* makeProductionWebappRoute("*"),
Layer.unwrapScoped,
)
export const HttpAppProduction = Effect.all([
Effect.provide(makeWebRpcRoute, WebRpcSerializationProduction),
makeProductionWebappMiddleware,
]).pipe(
Effect.map(([serveWebRpc, serveProductionWebapp]) => router.pipe(
serveWebRpc,
serveProductionWebapp,
HttpServer.serve(HttpMiddleware.xForwardedHeaders),
HttpServer.withLogAddress,
)
}))
)),
Layer.unwrapScoped,
)

View File

@@ -1,8 +1,8 @@
{
"$schema": "https://biomejs.dev/schemas/latest/schema.json",
"root": false,
"extends": "//",
"files": {
"includes": ["./src/**", "!src/routeTree.gen.ts"]
}
"$schema": "https://biomejs.dev/schemas/latest/schema.json",
"root": false,
"extends": "//",
"files": {
"includes": ["./src/**", "!src/routeTree.gen.ts"]
}
}

View File

@@ -14,9 +14,9 @@
"clean:modules": "rm -rf node_modules"
},
"dependencies": {
"@effect/platform": "^0.92.0",
"@effect/platform-browser": "^0.72.0",
"@effect/rpc": "^0.71.0",
"@effect/platform": "^0.90.9",
"@effect/platform-browser": "^0.70.0",
"@effect/rpc": "^0.69.2",
"@fontsource/work-sans": "^5.2.8",
"@tanstack/react-router": "^1.131.48",
"@website/common": "workspace:*",

View File

@@ -7,7 +7,7 @@ function Card({ className, ...props }: React.ComponentProps<"div">) {
<div
data-slot="card"
className={cn(
"flex flex-col gap-6 rounded-base border-2 border-border bg-background py-6 font-base text-foreground shadow-shadow",
"rounded-base flex flex-col shadow-shadow border-2 gap-6 py-6 border-border bg-background text-foreground font-base",
className,
)}
{...props}
@@ -42,7 +42,7 @@ function CardDescription({ className, ...props }: React.ComponentProps<"div">) {
return (
<div
data-slot="card-description"
className={cn("font-base text-sm", className)}
className={cn("text-sm font-base", className)}
{...props}
/>
)

View File

@@ -1,6 +1,6 @@
import { createRootRoute, Outlet } from "@tanstack/react-router"
import { TanStackRouterDevtools } from "@tanstack/react-router-devtools"
import { Card, CardContent } from "@/components/ui/card"
import { Outlet, createRootRoute } from "@tanstack/react-router"
import { TanStackRouterDevtools } from "@tanstack/react-router-devtools"
export const Route = createRootRoute({
@@ -9,7 +9,7 @@ export const Route = createRootRoute({
function RootComponent() {
return <>
<div className="mx-auto w-[750px] max-w-full px-5 pt-28 pb-10 text-foreground">
<div className="text-foreground mx-auto w-[750px] max-w-full px-5 pt-28 pb-10">
<Card>
<CardContent>
<Outlet />

View File

@@ -2,19 +2,5 @@
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended"
],
"packageRules": [
{
"matchManagers": ["bun", "npm"],
"matchUpdateTypes": ["minor", "patch"],
"groupName": "bun minor+patch updates",
"groupSlug": "bun-minor-patch"
},
{
"matchManagers": ["bun", "npm"],
"matchUpdateTypes": ["major"],
"groupName": "bun major updates",
"groupSlug": "bun-major"
}
]
}