mirror of
https://github.com/jakejarvis/sofa.git
synced 2026-08-29 01:35:39 -04:00
Migrate the entire monorepo from Biome 2.4.7 to oxlint 1.56.0 (linter) and oxfmt 0.41.0 (formatter) for faster lint/format and broader rule coverage. - Add `.oxlintrc.json` with React, TypeScript, unicorn, import plugins and correctness/suspicious categories - Add `.oxfmtrc.json` with 2-space indent, import sorting, and Tailwind class sorting (all 30+ custom className attributes migrated) - Add `docs/.oxlintrc.json` and `docs/.oxfmtrc.json` with Next.js plugin - Update all 12 workspace package.json scripts: `oxlint`, `oxfmt`, `oxfmt --check` - Add `format:check` turbo task and CI step - Update VS Code settings/extensions to use `oxc.oxc-vscode` - Update CI path triggers from `biome.json` to new config files - Remove all `biome-ignore` comments and fix shadowed variables - Delete `biome.json` and `docs/biome.json` - Reformat entire codebase with oxfmt Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
import { oo } from "@orpc/openapi";
|
|
import { os as baseOs, ORPCError } from "@orpc/server";
|
|
|
|
import { auth } from "@sofa/auth/server";
|
|
|
|
const base = baseOs.$context<{ headers: Headers }>();
|
|
|
|
export const authed = oo.spec(
|
|
base.middleware(async ({ context, next }) => {
|
|
const sessionData = await auth.api.getSession({
|
|
headers: context.headers,
|
|
});
|
|
if (!sessionData?.session || !sessionData?.user) {
|
|
throw new ORPCError("UNAUTHORIZED");
|
|
}
|
|
return next({
|
|
context: {
|
|
user: sessionData.user,
|
|
session: sessionData.session,
|
|
},
|
|
});
|
|
}),
|
|
{ security: [{ session: [] }] },
|
|
);
|
|
|
|
export const admin = oo.spec(
|
|
base.middleware(async ({ context, next }) => {
|
|
const sessionData = await auth.api.getSession({
|
|
headers: context.headers,
|
|
});
|
|
if (!sessionData?.session || !sessionData?.user) {
|
|
throw new ORPCError("UNAUTHORIZED");
|
|
}
|
|
if (sessionData.user.role !== "admin") {
|
|
throw new ORPCError("FORBIDDEN");
|
|
}
|
|
return next({
|
|
context: {
|
|
user: sessionData.user,
|
|
session: sessionData.session,
|
|
},
|
|
});
|
|
}),
|
|
{ security: [{ session: [] }] },
|
|
);
|