Files
sofa/apps/server/src/orpc/procedures/system.ts
T
jakeandClaude Opus 4.6 2b0c683b7b refactor: replace Biome with oxlint + oxfmt
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>
2026-03-18 13:26:50 -04:00

48 lines
1.5 KiB
TypeScript

import { getOidcProviderName, isOidcConfigured, isPasswordLoginDisabled } from "@sofa/auth/config";
import { getInstanceId, getUserCount, isRegistrationOpen } from "@sofa/core/settings";
import { isTmdbConfigured } from "@sofa/tmdb/config";
import { tmdbImageUrl } from "@sofa/tmdb/image";
import { os } from "../context";
// Well-known TMDB poster paths for the background collage
const posterPaths = [
"/qJ2tW6WMUDux911r6m7haRef0WH.jpg",
"/gEU2QniE6E77NI6lCU6MxlNBvIx.jpg",
"/rCzpDGLbOoPwLjy3OAm5NUPOTrC.jpg",
"/pB8BM7pdSp6B6Ih7QZ4DrQ3PmJK.jpg",
"/d5NXSklXo0qyIYkgV94XAgMIckC.jpg",
"/ztkUQFLlC19CCMYHW9o1zWhJRNq.jpg",
"/7DJKHzAi83BmQrWLrYYOqcoKfhR.jpg",
"/u3bZgnGQ9T01sWNhyveQz0wH0Hl.jpg",
"/ggFHVNu6YYI5L9pCfOacjizRGt.jpg",
"/q6y0Go1tsGEsmtFryDOJo3dEmqu.jpg",
"/pIkRyD18kl4FhoCNQuWxWu5cBLM.jpg",
"/saHP97rTPS5eLmrLQEcANmKrsFl.jpg",
];
export const publicInfo = os.system.publicInfo.handler(async () => {
const posterUrls = posterPaths
.map((p) => tmdbImageUrl(p, "posters", "w300"))
.filter(Boolean) as string[];
return {
instanceId: getInstanceId(),
tmdbConfigured: isTmdbConfigured(),
userCount: getUserCount(),
registrationOpen: isRegistrationOpen(),
posterUrls,
};
});
export const authConfig = os.system.authConfig.handler(async () => {
const oidcEnabled = isOidcConfigured();
return {
oidcEnabled,
oidcProviderName: oidcEnabled ? getOidcProviderName() : null,
passwordLoginDisabled: isPasswordLoginDisabled(),
registrationOpen: isRegistrationOpen(),
userCount: getUserCount(),
};
});