chore: bump biome (#3784)

This commit is contained in:
Alex Yang
2025-08-04 13:48:54 -07:00
committed by GitHub
parent 5eca938933
commit 575070f605
41 changed files with 283 additions and 257 deletions

View File

@@ -1,12 +1,11 @@
{
"$schema": "https://biomejs.dev/schemas/1.8.3/schema.json",
"root": true,
"$schema": "https://biomejs.dev/schemas/2.1.3/schema.json",
"formatter": {
"enabled": true,
"indentStyle": "tab"
},
"organizeImports": {
"enabled": false
},
"assist": { "actions": { "source": { "organizeImports": "off" } } },
"linter": {
"enabled": true,
"rules": {
@@ -24,12 +23,15 @@
},
"correctness": {
"noUnusedImports": "warn"
},
"nursery": {
"noMisusedPromises": "error"
}
}
},
"overrides": [
{
"include": ["examples/svelte-kit-example/**"],
"includes": ["**/examples/svelte-kit-example/**"],
"linter": {
"rules": {
"correctness": {
@@ -40,19 +42,20 @@
}
],
"files": {
"ignore": [
"dist",
"build",
".next",
".svelte-kit",
"package.json",
".contentlayer",
".turbo",
".nuxt",
".source",
".expo",
".cache",
"dev/cloudflare/drizzle"
"includes": [
"**",
"!**/dist",
"!**/build",
"!**/.next",
"!**/.svelte-kit",
"!**/package.json",
"!**/.contentlayer",
"!**/.turbo",
"!**/.nuxt",
"!**/.source",
"!**/.expo",
"!**/.cache",
"!**/dev/cloudflare/drizzle"
]
}
}

View File

@@ -15,10 +15,7 @@ import { ArrowUpFromLine, CreditCard, RefreshCcw } from "lucide-react";
import { useId, useState } from "react";
import { toast } from "sonner";
function Component(props: {
currentPlan?: string;
isTrial?: boolean;
}) {
function Component(props: { currentPlan?: string; isTrial?: boolean }) {
const [selectedPlan, setSelectedPlan] = useState("plus");
const id = useId();
return (

View File

@@ -20,11 +20,7 @@ import { Session } from "@/lib/auth-types";
import { client, useSession } from "@/lib/auth-client";
import { useRouter } from "next/navigation";
export default function AccountSwitcher({
sessions,
}: {
sessions: Session[];
}) {
export default function AccountSwitcher({ sessions }: { sessions: Session[] }) {
const { data: currentUser } = useSession();
const [open, setOpen] = useState(false);
const router = useRouter();

View File

@@ -251,11 +251,10 @@ html {
@layer utilities {
.no-scrollbar::-webkit-scrollbar {
display: none;
display: none;
}
.no-scrollbar {
-ms-overflow-style: none;
scrollbar-width: none;
-ms-overflow-style: none;
scrollbar-width: none;
}
}
}

View File

@@ -319,7 +319,10 @@ function getChildren(
function TypeTable({
props,
isServer,
}: { props: Property[]; isServer: boolean }) {
}: {
props: Property[];
isServer: boolean;
}) {
if (!isServer && !props.filter((x) => !x.isServerOnly).length) return null;
if (isServer && !props.filter((x) => !x.isClientOnly).length) return null;
if (!props.length) return null;

View File

@@ -9,11 +9,7 @@ type Tab = {
content?: string | React.ReactNode | any;
};
export const AuthTabs = ({
tabs: propTabs,
}: {
tabs: Tab[];
}) => {
export const AuthTabs = ({ tabs: propTabs }: { tabs: Tab[] }) => {
const [active, setActive] = useState<Tab>(propTabs[0]);
const [tabs, setTabs] = useState<Tab[]>(propTabs);
const isActive = (tab: Tab) => {

View File

@@ -1,8 +1,4 @@
const SectionSvg = ({
crossesOffset,
}: {
crossesOffset: string;
}) => {
const SectionSvg = ({ crossesOffset }: { crossesOffset: string }) => {
return (
<>
<PlusSvg

View File

@@ -211,7 +211,10 @@ const tabs = [
function SidebarTab({
group,
setGroup,
}: { group: string; setGroup: (group: string) => void }) {
}: {
group: string;
setGroup: (group: string) => void;
}) {
const router = useRouter();
const selected = tabs.find((tab) => tab.value === group);

View File

@@ -1,26 +1,26 @@
@import "tailwindcss";
:root {
--background: #ffffff;
--foreground: #171717;
--background: #ffffff;
--foreground: #171717;
}
@theme inline {
--color-background: var(--background);
--color-foreground: var(--foreground);
--font-sans: var(--font-geist-sans);
--font-mono: var(--font-geist-mono);
--color-background: var(--background);
--color-foreground: var(--foreground);
--font-sans: var(--font-geist-sans);
--font-mono: var(--font-geist-mono);
}
@media (prefers-color-scheme: dark) {
:root {
--background: #0a0a0a;
--foreground: #ededed;
}
:root {
--background: #0a0a0a;
--foreground: #ededed;
}
}
body {
background: var(--background);
color: var(--foreground);
font-family: Arial, Helvetica, sans-serif;
background: var(--background);
color: var(--foreground);
font-family: Arial, Helvetica, sans-serif;
}

View File

@@ -82,6 +82,7 @@ export function LoginForm() {
height="1em"
viewBox="0 0 24 24"
>
<title>Discord logo</title>
<path
fill="currentColor"
d="M19.27 5.33C17.94 4.71 16.5 4.26 15 4a.1.1 0 0 0-.07.03c-.18.33-.39.76-.53 1.09a16.1 16.1 0 0 0-4.8 0c-.14-.34-.35-.76-.54-1.09c-.01-.02-.04-.03-.07-.03c-1.5.26-2.93.71-4.27 1.33c-.01 0-.02.01-.03.02c-2.72 4.07-3.47 8.03-3.1 11.95c0 .02.01.04.03.05c1.8 1.32 3.53 2.12 5.24 2.65c.03.01.06 0 .07-.02c.4-.55.76-1.13 1.07-1.74c.02-.04 0-.08-.04-.09c-.57-.22-1.11-.48-1.64-.78c-.04-.02-.04-.08-.01-.11c.11-.08.22-.17.33-.25c.02-.02.05-.02.07-.01c3.44 1.57 7.15 1.57 10.55 0c.02-.01.05-.01.07.01c.11.09.22.17.33.26c.04.03.04.09-.01.11c-.52.31-1.07.56-1.64.78c-.04.01-.05.06-.04.09c.32.61.68 1.19 1.07 1.74c.03.01.06.02.09.01c1.72-.53 3.45-1.33 5.25-2.65c.02-.01.03-.03.03-.05c.44-4.53-.73-8.46-3.1-11.95c-.01-.01-.02-.02-.04-.02M8.52 14.91c-1.03 0-1.89-.95-1.89-2.12s.84-2.12 1.89-2.12c1.06 0 1.9.96 1.89 2.12c0 1.17-.84 2.12-1.89 2.12m6.97 0c-1.03 0-1.89-.95-1.89-2.12s.84-2.12 1.89-2.12c1.06 0 1.9.96 1.89 2.12c0 1.17-.83 2.12-1.89 2.12"
@@ -105,6 +106,7 @@ export function LoginForm() {
height="1em"
viewBox="0 0 24 24"
>
<title>GitHub logo</title>
<path
fill="currentColor"
d="M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33s1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2"

View File

@@ -1,7 +1,7 @@
"use client";
import * as React from "react";
import * as AvatarPrimitive from "@radix-ui/react-avatar";
import * as React from "react";
import { cn } from "~/lib/utils";

View File

@@ -1,7 +1,7 @@
"use client";
import { Slot } from "@radix-ui/react-slot";
import { type VariantProps, cva } from "class-variance-authority";
import { cva, type VariantProps } from "class-variance-authority";
import * as React from "react";
import { cn } from "~/lib/utils";

View File

@@ -1,8 +1,8 @@
"use client";
import * as React from "react";
import * as DialogPrimitive from "@radix-ui/react-dialog";
import { X } from "lucide-react";
import * as React from "react";
import { cn } from "~/lib/utils";

View File

@@ -1,8 +1,8 @@
"use client";
import * as React from "react";
import * as LabelPrimitive from "@radix-ui/react-label";
import { cva, type VariantProps } from "class-variance-authority";
import * as React from "react";
import { cn } from "~/lib/utils";

View File

@@ -1,5 +1,5 @@
import { twoFactor } from "better-auth/plugins";
import { betterAuth } from "better-auth";
import { twoFactor } from "better-auth/plugins";
import Database from "better-sqlite3";
export const auth = betterAuth({

View File

@@ -1,4 +1,5 @@
import { X } from "lucide-react-native";
import { iconWithClassName } from "./iconWithClassName";
iconWithClassName(X);
export { X };

View File

@@ -76,6 +76,8 @@
}
body {
@apply bg-background text-foreground;
font-feature-settings: "rlig" 1, "calt" 1;
font-feature-settings:
"rlig" 1,
"calt" 1;
}
}

View File

@@ -11,10 +11,10 @@
// Import Routes
import { Route as rootRoute } from "./routes/__root";
import { Route as IndexImport } from "./routes/index";
import { Route as AuthTwoFactorImport } from "./routes/auth/two-factor";
import { Route as AuthSignupImport } from "./routes/auth/signup";
import { Route as AuthSigninImport } from "./routes/auth/signin";
import { Route as AuthSignupImport } from "./routes/auth/signup";
import { Route as AuthTwoFactorImport } from "./routes/auth/two-factor";
import { Route as IndexImport } from "./routes/index";
// Create/Update Routes

View File

@@ -1,5 +1,10 @@
import { Link, createRootRoute, useRouter } from "@tanstack/react-router";
import { Outlet, ScrollRestoration } from "@tanstack/react-router";
import {
createRootRoute,
Link,
Outlet,
ScrollRestoration,
useRouter,
} from "@tanstack/react-router";
import { Body, Head, Html, Meta, Scripts } from "@tanstack/start";
import type * as React from "react";
import { useEffect, useState } from "react";

View File

@@ -1,3 +1,10 @@
import { createFileRoute } from "@tanstack/react-router";
import { Laptop, Loader2, Phone, ShieldCheck, ShieldOff } from "lucide-react";
import { useState } from "react";
import QRCode from "react-qr-code";
import { toast } from "sonner";
import { UAParser } from "ua-parser-js";
import { Button } from "~/components/ui/button";
import {
Card,
CardContent,
@@ -5,11 +12,6 @@ import {
CardHeader,
CardTitle,
} from "~/components/ui/card";
import { twoFactor, useSession } from "~/lib/auth-client";
import { UAParser } from "ua-parser-js";
import { Laptop, Loader2, Phone, ShieldCheck, ShieldOff } from "lucide-react";
import { useState } from "react";
import {
Dialog,
DialogContent,
@@ -19,12 +21,9 @@ import {
DialogTitle,
DialogTrigger,
} from "~/components/ui/dialog";
import { Button } from "~/components/ui/button";
import { Label } from "~/components/ui/label";
import { Input } from "~/components/ui/input";
import { toast } from "sonner";
import QRCode from "react-qr-code";
import { createFileRoute } from "@tanstack/react-router";
import { Label } from "~/components/ui/label";
import { twoFactor, useSession } from "~/lib/auth-client";
export const Route = createFileRoute("/")({
component: Home,

View File

@@ -1,21 +1,33 @@
{
"$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
"root": false,
"$schema": "https://biomejs.dev/schemas/2.1.3/schema.json",
"vcs": {
"enabled": false,
"clientKind": "git",
"useIgnoreFile": false
},
"files": {
"ignoreUnknown": false,
"ignore": []
"includes": [
"**",
"!**/dist",
"!**/build",
"!**/.next",
"!**/.svelte-kit",
"!**/package.json",
"!**/.contentlayer",
"!**/.turbo",
"!**/.nuxt",
"!**/.source",
"!**/.expo",
"!**/.cache",
"!**/dev/cloudflare/drizzle"
]
},
"formatter": {
"enabled": true,
"indentStyle": "tab"
},
"organizeImports": {
"enabled": true
},
"assist": { "actions": { "source": { "organizeImports": "on" } } },
"linter": {
"enabled": true,
"rules": {

View File

@@ -1,44 +1,43 @@
{
"name": "@better-auth/root",
"private": true,
"type": "module",
"version": "0.0.2-beta.8",
"packageManager": "pnpm@9.15.0",
"scripts": {
"build": "turbo --filter \"./packages/*\" build",
"dev": "turbo --filter \"./packages/*\" dev",
"dev:dts": "turbo --filter \"./packages/*\" dev:dts",
"clean": "turbo --filter \"./packages/*\" clean && rm -rf node_modules",
"format": "biome format . --write",
"lint": "biome check .",
"lint:fix": "biome check . --apply",
"release": "turbo --filter \"./packages/*\" build && bumpp && pnpm -r publish --access public --no-git-checks",
"release:no-build": "bumpp && pnpm -r publish --access public --no-git-checks --tag next",
"release:canary": "turbo --filter \"./packages/*\" build && bumpp && pnpm -r publish --access public --tag canary --no-git-checks",
"bump": "bumpp",
"test": "turbo --filter \"./packages/*\" test",
"typecheck": "turbo --filter \"./packages/*\" typecheck"
},
"dependencies": {
"@biomejs/biome": "1.7.3",
"@types/node": "^20.17.9",
"bumpp": "^9.8.1",
"cross-env": "^7.0.3",
"dotenv-cli": "^7.4.4",
"simple-git-hooks": "^2.11.1",
"taze": "^0.18.0",
"tinyglobby": "^0.2.10",
"turbo": "^2.3.3",
"typescript": "catalog:"
},
"pnpm": {
"overrides": {
"mdast-util-frontmatter": "2.0.1",
"remark-mdx": "3.0.0",
"remark-parse": "11.0.0",
"unified": "11.0.4",
"whatwg-url": "^14.0.0"
}
"name": "@better-auth/root",
"private": true,
"type": "module",
"version": "0.0.2-beta.8",
"packageManager": "pnpm@9.15.0",
"scripts": {
"build": "turbo --filter \"./packages/*\" build",
"dev": "turbo --filter \"./packages/*\" dev",
"dev:dts": "turbo --filter \"./packages/*\" dev:dts",
"clean": "turbo --filter \"./packages/*\" clean && rm -rf node_modules",
"format": "biome format . --write",
"lint": "biome check .",
"lint:fix": "biome check . --fix",
"release": "turbo --filter \"./packages/*\" build && bumpp && pnpm -r publish --access public --no-git-checks",
"release:no-build": "bumpp && pnpm -r publish --access public --no-git-checks --tag next",
"release:canary": "turbo --filter \"./packages/*\" build && bumpp && pnpm -r publish --access public --tag canary --no-git-checks",
"bump": "bumpp",
"test": "turbo --filter \"./packages/*\" test",
"typecheck": "turbo --filter \"./packages/*\" typecheck"
},
"dependencies": {
"@biomejs/biome": "2.1.3",
"@types/node": "^20.17.9",
"bumpp": "^9.8.1",
"cross-env": "^7.0.3",
"dotenv-cli": "^7.4.4",
"simple-git-hooks": "^2.11.1",
"taze": "^0.18.0",
"tinyglobby": "^0.2.10",
"turbo": "^2.3.3",
"typescript": "catalog:"
},
"pnpm": {
"overrides": {
"mdast-util-frontmatter": "2.0.1",
"remark-mdx": "3.0.0",
"remark-parse": "11.0.0",
"unified": "11.0.4",
"whatwg-url": "^14.0.0"
}
}
}

View File

@@ -88,7 +88,10 @@ export const createAdapter =
const getDefaultFieldName = ({
field,
model: unsafe_model,
}: { model: string; field: string }) => {
}: {
model: string;
field: string;
}) => {
// Plugin `schema`s can't define their own `id`. Better-auth auto provides `id` to every schema model.
// Given this, we can't just check if the `field` (that being `id`) is within the schema's fields, since it is never defined.
// So we check if the `field` is `id` and if so, we return `id` itself. Otherwise, we return the `field` from the schema.
@@ -184,7 +187,10 @@ export const createAdapter =
function getFieldName({
model: model_name,
field: field_name,
}: { model: string; field: string }) {
}: {
model: string;
field: string;
}) {
const model = getDefaultModelName(model_name);
const field = getDefaultFieldName({ model, field: field_name });
@@ -251,7 +257,10 @@ export const createAdapter =
const idField = ({
customModelName,
forceAllowId,
}: { customModelName?: string; forceAllowId?: boolean }) => {
}: {
customModelName?: string;
forceAllowId?: boolean;
}) => {
const shouldGenerateId =
!config.disableIdGeneration &&
!options.advanced?.database?.useNumberId &&
@@ -291,7 +300,10 @@ export const createAdapter =
const getFieldAttributes = ({
model,
field,
}: { model: string; field: string }) => {
}: {
model: string;
field: string;
}) => {
const defaultModelName = getDefaultModelName(model);
const defaultFieldName = getDefaultFieldName({
field: field,
@@ -482,9 +494,10 @@ export const createAdapter =
const transformWhereClause = <W extends Where[] | undefined>({
model,
where,
}: { where: W; model: string }): W extends undefined
? undefined
: CleanedWhere[] => {
}: {
where: W;
model: string;
}): W extends undefined ? undefined : CleanedWhere[] => {
if (!where) return undefined as any;
const newMappedKeys = config.mapKeysTransformInput ?? {};

View File

@@ -222,9 +222,7 @@ export interface AdapterConfig {
* }
* ```
*/
customIdGenerator?: (props: {
model: string;
}) => string;
customIdGenerator?: (props: { model: string }) => string;
}
export type CreateCustomAdapter = ({
@@ -280,7 +278,10 @@ export type CreateCustomAdapter = ({
getDefaultFieldName: ({
model,
field,
}: { model: string; field: string }) => string;
}: {
model: string;
field: string;
}) => string;
/**
* Get the field attributes for a given model and field.
*
@@ -289,7 +290,10 @@ export type CreateCustomAdapter = ({
getFieldAttributes: ({
model,
field,
}: { model: string; field: string }) => FieldAttribute;
}: {
model: string;
field: string;
}) => FieldAttribute;
}) => CustomAdapter;
export interface CustomAdapter {

View File

@@ -29,7 +29,10 @@ const mysqlKy = new Kysely({
export const opts = ({
database,
isNumberIdTest,
}: { database: BetterAuthOptions["database"]; isNumberIdTest: boolean }) =>
}: {
database: BetterAuthOptions["database"];
isNumberIdTest: boolean;
}) =>
({
database: database,
user: {

View File

@@ -15,7 +15,10 @@ import type { BetterAuthOptions } from "../../../../types";
export const opts = ({
database,
isNumberIdTest,
}: { database: BetterAuthOptions["database"]; isNumberIdTest: boolean }) =>
}: {
database: BetterAuthOptions["database"];
isNumberIdTest: boolean;
}) =>
({
database: database,
user: {

View File

@@ -96,7 +96,11 @@ export const mongodbAdapter = (db: Db, config?: MongoDBAdapterConfig) => {
field,
value,
model,
}: { field: string; value: any; model: string }) {
}: {
field: string;
value: any;
model: string;
}) {
if (customIdGen) {
return value;
}
@@ -139,7 +143,10 @@ export const mongodbAdapter = (db: Db, config?: MongoDBAdapterConfig) => {
function convertWhereClause({
where,
model,
}: { where: Where[]; model: string }) {
}: {
where: Where[];
model: string;
}) {
if (!where.length) return {};
const conditions = where.map((w) => {
const {

View File

@@ -56,8 +56,8 @@ const numberIdAdapterTests = {
SHOULD_INCREMENT_THE_ID_BY_1: "Should increment the id by 1",
} as const;
// @ts-ignore
// biome-ignore lint/performance/noDelete: <explanation>
// @ts-expect-error
// biome-ignore lint/performance/noDelete: testing propose
delete numberIdAdapterTests.SHOULD_NOT_THROW_ON_DELETE_RECORD_NOT_FOUND;
async function adapterTest(

View File

@@ -75,9 +75,7 @@ export function parseSetCookieHeader(
}
export function setCookieToHeader(headers: Headers) {
return (context: {
response: Response;
}) => {
return (context: { response: Response }) => {
const setCookieHeader = context.response.headers.get("set-cookie");
if (!setCookieHeader) {
return;

View File

@@ -30,7 +30,10 @@ export const hashPassword = async (password: string) => {
export const verifyPassword = async ({
hash,
password,
}: { hash: string; password: string }) => {
}: {
hash: string;
password: string;
}) => {
const [salt, key] = hash.split(":");
const targetKey = await generateKey(password, salt!);
return constantTimeEqual(targetKey, hexToBytes(key));

View File

@@ -5,9 +5,7 @@ export function toSolidStartHandler(
}
| ((request: Request) => Promise<Response>),
) {
const handler = async (event: {
request: Request;
}) => {
const handler = async (event: { request: Request }) => {
return "handler" in auth
? auth.handler(event.request)
: auth(event.request);

View File

@@ -15,9 +15,10 @@ export function createApiKey({
schema,
deleteAllExpiredApiKeys,
}: {
keyGenerator: (options: { length: number; prefix: string | undefined }) =>
| Promise<string>
| string;
keyGenerator: (options: {
length: number;
prefix: string | undefined;
}) => Promise<string> | string;
opts: PredefinedApiKeyOptions;
schema: ReturnType<typeof apiKeySchema>;
deleteAllExpiredApiKeys(
@@ -420,12 +421,12 @@ export function createApiKey({
rateLimitTimeWindow:
rateLimitTimeWindow ?? opts.rateLimit.timeWindow ?? null,
remaining:
remaining === null ? remaining : remaining ?? refillAmount ?? null,
remaining === null ? remaining : (remaining ?? refillAmount ?? null),
refillAmount: refillAmount ?? null,
refillInterval: refillInterval ?? null,
rateLimitEnabled:
rateLimitEnabled === undefined
? opts.rateLimit.enabled ?? true
? (opts.rateLimit.enabled ?? true)
: rateLimitEnabled,
requestCount: 0,
//@ts-ignore - we intentionally save the permissions as string on DB.

View File

@@ -75,9 +75,10 @@ export function createApiKeyRoutes({
opts,
schema,
}: {
keyGenerator: (options: { length: number; prefix: string | undefined }) =>
| Promise<string>
| string;
keyGenerator: (options: {
length: number;
prefix: string | undefined;
}) => Promise<string> | string;
opts: PredefinedApiKeyOptions;
schema: ReturnType<typeof apiKeySchema>;
}) {

View File

@@ -4,7 +4,10 @@ import parseJSON from "../../client/parser";
export const apiKeySchema = ({
timeWindow,
rateLimitMax,
}: { timeWindow: number; rateLimitMax: number }) =>
}: {
timeWindow: number;
rateLimitMax: number;
}) =>
({
apikey: {
fields: {

View File

@@ -671,9 +671,7 @@ export const getOrgAdapter = <O extends OrganizationOptions>(
return session as Session;
},
listTeamMembers: async (data: {
teamId: string;
}) => {
listTeamMembers: async (data: { teamId: string }) => {
const members = await adapter.findMany<TeamMember>({
model: "teamMember",
where: [
@@ -686,27 +684,21 @@ export const getOrgAdapter = <O extends OrganizationOptions>(
return members;
},
countTeamMembers: async (data: {
teamId: string;
}) => {
countTeamMembers: async (data: { teamId: string }) => {
const count = await adapter.count({
model: "teamMember",
where: [{ field: "teamId", value: data.teamId }],
});
return count;
},
countMembers: async (data: {
organizationId: string;
}) => {
countMembers: async (data: { organizationId: string }) => {
const count = await adapter.count({
model: "member",
where: [{ field: "organizationId", value: data.organizationId }],
});
return count;
},
listTeamsByUser: async (data: {
userId: string;
}) => {
listTeamsByUser: async (data: { userId: string }) => {
const members = await adapter.findMany<TeamMember>({
model: "teamMember",
where: [
@@ -731,10 +723,7 @@ export const getOrgAdapter = <O extends OrganizationOptions>(
return teams;
},
findTeamMember: async (data: {
teamId: string;
userId: string;
}) => {
findTeamMember: async (data: { teamId: string; userId: string }) => {
const member = await adapter.findOne<TeamMember>({
model: "teamMember",
where: [
@@ -782,10 +771,7 @@ export const getOrgAdapter = <O extends OrganizationOptions>(
});
},
removeTeamMember: async (data: {
teamId: string;
userId: string;
}) => {
removeTeamMember: async (data: { teamId: string; userId: string }) => {
await adapter.delete({
model: "teamMember",
where: [
@@ -891,9 +877,7 @@ export const getOrgAdapter = <O extends OrganizationOptions>(
(invite) => new Date(invite.expiresAt) > new Date(),
);
},
findPendingInvitations: async (data: {
organizationId: string;
}) => {
findPendingInvitations: async (data: { organizationId: string }) => {
const invitations = await adapter.findMany<InferInvitation<O>>({
model: "invitation",
where: [
@@ -911,9 +895,7 @@ export const getOrgAdapter = <O extends OrganizationOptions>(
(invite) => new Date(invite.expiresAt) > new Date(),
);
},
listInvitations: async (data: {
organizationId: string;
}) => {
listInvitations: async (data: { organizationId: string }) => {
const invitations = await adapter.findMany<InferInvitation<O>>({
model: "invitation",
where: [

View File

@@ -256,7 +256,7 @@ export const createInvitation = <O extends OrganizationOptions>(option: O) => {
},
ctx.context,
)
: ctx.context.orgOptions.invitationLimit ?? 100;
: (ctx.context.orgOptions.invitationLimit ?? 100);
const pendingInvitations = await adapter.findPendingInvitations({
organizationId: organizationId,
@@ -315,7 +315,7 @@ export const createInvitation = <O extends OrganizationOptions>(option: O) => {
"teamId" in ctx.body
? typeof ctx.body.teamId === "string"
? [ctx.body.teamId as string]
: (ctx.body.teamId as string[]) ?? []
: ((ctx.body.teamId as string[]) ?? [])
: [];
const {

View File

@@ -51,10 +51,7 @@ export type Adapter = {
};
offset?: number;
}) => Promise<T[]>;
count: (data: {
model: string;
where?: Where[];
}) => Promise<number>;
count: (data: { model: string; where?: Where[] }) => Promise<number>;
/**
* ⚠︎ Update may not return the updated data
* if multiple where clauses are provided

View File

@@ -201,11 +201,7 @@ const defaultFormatOptions = {
tabWidth: 4,
};
const getDefaultAuthConfig = async ({
appName,
}: {
appName?: string;
}) =>
const getDefaultAuthConfig = async ({ appName }: { appName?: string }) =>
await prettierFormat(
[
"import { betterAuth } from 'better-auth';",

View File

@@ -55,7 +55,11 @@ export const generatePrismaSchema: SchemaGenerator = async ({
isBigint,
isOptional,
type,
}: { type: FieldType; isOptional: boolean; isBigint: boolean }) {
}: {
type: FieldType;
isOptional: boolean;
isBigint: boolean;
}) {
if (type === "string") {
return isOptional ? "String?" : "String";
}

View File

@@ -563,7 +563,7 @@ export const sso = (options?: SSOOptions) => {
const limit =
typeof options?.providersLimit === "function"
? await options.providersLimit(user)
: options?.providersLimit ?? 10;
: (options?.providersLimit ?? 10);
if (!limit) {
throw new APIError("FORBIDDEN", {

118
pnpm-lock.yaml generated
View File

@@ -31,8 +31,8 @@ importers:
.:
dependencies:
'@biomejs/biome':
specifier: 1.7.3
version: 1.7.3
specifier: 2.1.3
version: 2.1.3
'@types/node':
specifier: ^20.17.9
version: 20.17.57
@@ -979,7 +979,7 @@ importers:
version: 8.6.0(vue@3.5.18(typescript@5.8.3))
nuxt:
specifier: ^3.14.1592
version: 3.17.4(u7o2fm6xsvozcu3hqg2m2evhvi)
version: 3.17.4(pmbbkaqntai4lvdcfdsxjvtgwi)
radix-vue:
specifier: ^1.9.11
version: 1.9.17(vue@3.5.18(typescript@5.8.3))
@@ -2703,21 +2703,15 @@ packages:
'@better-fetch/fetch@1.1.18':
resolution: {integrity: sha512-rEFOE1MYIsBmoMJtQbl32PGHHXuG2hDxvEd7rUHE0vCBoFQVSDqaVs9hkZEtHCxRoY+CljXKFCOuJ8uxqw1LcA==}
'@biomejs/biome@1.7.3':
resolution: {integrity: sha512-ogFQI+fpXftr+tiahA6bIXwZ7CSikygASdqMtH07J2cUzrpjyTMVc9Y97v23c7/tL1xCZhM+W9k4hYIBm7Q6cQ==}
engines: {node: '>=14.21.3'}
hasBin: true
'@biomejs/biome@1.9.4':
resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==}
engines: {node: '>=14.21.3'}
hasBin: true
'@biomejs/cli-darwin-arm64@1.7.3':
resolution: {integrity: sha512-eDvLQWmGRqrPIRY7AIrkPHkQ3visEItJKkPYSHCscSDdGvKzYjmBJwG1Gu8+QC5ed6R7eiU63LEC0APFBobmfQ==}
'@biomejs/biome@2.1.3':
resolution: {integrity: sha512-KE/tegvJIxTkl7gJbGWSgun7G6X/n2M6C35COT6ctYrAy7SiPyNvi6JtoQERVK/VRbttZfgGq96j2bFmhmnH4w==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [darwin]
hasBin: true
'@biomejs/cli-darwin-arm64@1.9.4':
resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==}
@@ -2725,10 +2719,10 @@ packages:
cpu: [arm64]
os: [darwin]
'@biomejs/cli-darwin-x64@1.7.3':
resolution: {integrity: sha512-JXCaIseKRER7dIURsVlAJacnm8SG5I0RpxZ4ya3dudASYUc68WGl4+FEN03ABY3KMIq7hcK1tzsJiWlmXyosZg==}
'@biomejs/cli-darwin-arm64@2.1.3':
resolution: {integrity: sha512-LFLkSWRoSGS1wVUD/BE6Nlt2dSn0ulH3XImzg2O/36BoToJHKXjSxzPEMAqT9QvwVtk7/9AQhZpTneERU9qaXA==}
engines: {node: '>=14.21.3'}
cpu: [x64]
cpu: [arm64]
os: [darwin]
'@biomejs/cli-darwin-x64@1.9.4':
@@ -2737,11 +2731,11 @@ packages:
cpu: [x64]
os: [darwin]
'@biomejs/cli-linux-arm64-musl@1.7.3':
resolution: {integrity: sha512-c8AlO45PNFZ1BYcwaKzdt46kYbuP6xPGuGQ6h4j3XiEDpyseRRUy/h+6gxj07XovmyxKnSX9GSZ6nVbZvcVUAw==}
'@biomejs/cli-darwin-x64@2.1.3':
resolution: {integrity: sha512-Q/4OTw8P9No9QeowyxswcWdm0n2MsdCwWcc5NcKQQvzwPjwuPdf8dpPPf4r+x0RWKBtl1FLiAUtJvBlri6DnYw==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [linux]
cpu: [x64]
os: [darwin]
'@biomejs/cli-linux-arm64-musl@1.9.4':
resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==}
@@ -2749,8 +2743,8 @@ packages:
cpu: [arm64]
os: [linux]
'@biomejs/cli-linux-arm64@1.7.3':
resolution: {integrity: sha512-phNTBpo7joDFastnmZsFjYcDYobLTx4qR4oPvc9tJ486Bd1SfEVPHEvJdNJrMwUQK56T+TRClOQd/8X1nnjA9w==}
'@biomejs/cli-linux-arm64-musl@2.1.3':
resolution: {integrity: sha512-KXouFSBnoxAWZYDQrnNRzZBbt5s9UJkIm40hdvSL9mBxSSoxRFQJbtg1hP3aa8A2SnXyQHxQfpiVeJlczZt76w==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [linux]
@@ -2761,10 +2755,10 @@ packages:
cpu: [arm64]
os: [linux]
'@biomejs/cli-linux-x64-musl@1.7.3':
resolution: {integrity: sha512-UdEHKtYGWEX3eDmVWvQeT+z05T9/Sdt2+F/7zmMOFQ7boANeX8pcO6EkJPK3wxMudrApsNEKT26rzqK6sZRTRA==}
'@biomejs/cli-linux-arm64@2.1.3':
resolution: {integrity: sha512-2hS6LgylRqMFmAZCOFwYrf77QMdUwJp49oe8PX/O8+P2yKZMSpyQTf3Eo5ewnsMFUEmYbPOskafdV1ds1MZMJA==}
engines: {node: '>=14.21.3'}
cpu: [x64]
cpu: [arm64]
os: [linux]
'@biomejs/cli-linux-x64-musl@1.9.4':
@@ -2773,8 +2767,8 @@ packages:
cpu: [x64]
os: [linux]
'@biomejs/cli-linux-x64@1.7.3':
resolution: {integrity: sha512-vnedYcd5p4keT3iD48oSKjOIRPYcjSNNbd8MO1bKo9ajg3GwQXZLAH+0Cvlr+eMsO67/HddWmscSQwTFrC/uPA==}
'@biomejs/cli-linux-x64-musl@2.1.3':
resolution: {integrity: sha512-KaLAxnROouzIWtl6a0Y88r/4hW5oDUJTIqQorOTVQITaKQsKjZX4XCUmHIhdEk8zMnaiLZzRTAwk1yIAl+mIew==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [linux]
@@ -2785,11 +2779,11 @@ packages:
cpu: [x64]
os: [linux]
'@biomejs/cli-win32-arm64@1.7.3':
resolution: {integrity: sha512-unNCDqUKjujYkkSxs7gFIfdasttbDC4+z0kYmcqzRk6yWVoQBL4dNLcCbdnJS+qvVDNdI9rHp2NwpQ0WAdla4Q==}
'@biomejs/cli-linux-x64@2.1.3':
resolution: {integrity: sha512-NxlSCBhLvQtWGagEztfAZ4WcE1AkMTntZV65ZvR+J9jp06+EtOYEBPQndA70ZGhHbEDG57bR6uNvqkd1WrEYVA==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [win32]
cpu: [x64]
os: [linux]
'@biomejs/cli-win32-arm64@1.9.4':
resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==}
@@ -2797,10 +2791,10 @@ packages:
cpu: [arm64]
os: [win32]
'@biomejs/cli-win32-x64@1.7.3':
resolution: {integrity: sha512-ZmByhbrnmz/UUFYB622CECwhKIPjJLLPr5zr3edhu04LzbfcOrz16VYeNq5dpO1ADG70FORhAJkaIGdaVBG00w==}
'@biomejs/cli-win32-arm64@2.1.3':
resolution: {integrity: sha512-V9CUZCtWH4u0YwyCYbQ3W5F4ZGPWp2C2TYcsiWFNNyRfmOW1j/TY/jAurl33SaRjgZPO5UUhGyr9m6BN9t84NQ==}
engines: {node: '>=14.21.3'}
cpu: [x64]
cpu: [arm64]
os: [win32]
'@biomejs/cli-win32-x64@1.9.4':
@@ -2809,6 +2803,12 @@ packages:
cpu: [x64]
os: [win32]
'@biomejs/cli-win32-x64@2.1.3':
resolution: {integrity: sha512-dxy599q6lgp8ANPpR8sDMscwdp9oOumEsVXuVCVT9N2vAho8uYXlCz53JhxX6LtJOXaE73qzgkGQ7QqvFlMC0g==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [win32]
'@chevrotain/cst-dts-gen@10.5.0':
resolution: {integrity: sha512-lhmC/FyqQ2o7pGK4Om+hzuDrm9rhFYIJ/AXoQBeongmn870Xeb0L6oGEiuR8nohFNL5sMaQEJWCxr1oIVIVXrw==}
@@ -21238,17 +21238,6 @@ snapshots:
'@better-fetch/fetch@1.1.18': {}
'@biomejs/biome@1.7.3':
optionalDependencies:
'@biomejs/cli-darwin-arm64': 1.7.3
'@biomejs/cli-darwin-x64': 1.7.3
'@biomejs/cli-linux-arm64': 1.7.3
'@biomejs/cli-linux-arm64-musl': 1.7.3
'@biomejs/cli-linux-x64': 1.7.3
'@biomejs/cli-linux-x64-musl': 1.7.3
'@biomejs/cli-win32-arm64': 1.7.3
'@biomejs/cli-win32-x64': 1.7.3
'@biomejs/biome@1.9.4':
optionalDependencies:
'@biomejs/cli-darwin-arm64': 1.9.4
@@ -21260,54 +21249,65 @@ snapshots:
'@biomejs/cli-win32-arm64': 1.9.4
'@biomejs/cli-win32-x64': 1.9.4
'@biomejs/cli-darwin-arm64@1.7.3':
optional: true
'@biomejs/biome@2.1.3':
optionalDependencies:
'@biomejs/cli-darwin-arm64': 2.1.3
'@biomejs/cli-darwin-x64': 2.1.3
'@biomejs/cli-linux-arm64': 2.1.3
'@biomejs/cli-linux-arm64-musl': 2.1.3
'@biomejs/cli-linux-x64': 2.1.3
'@biomejs/cli-linux-x64-musl': 2.1.3
'@biomejs/cli-win32-arm64': 2.1.3
'@biomejs/cli-win32-x64': 2.1.3
'@biomejs/cli-darwin-arm64@1.9.4':
optional: true
'@biomejs/cli-darwin-x64@1.7.3':
'@biomejs/cli-darwin-arm64@2.1.3':
optional: true
'@biomejs/cli-darwin-x64@1.9.4':
optional: true
'@biomejs/cli-linux-arm64-musl@1.7.3':
'@biomejs/cli-darwin-x64@2.1.3':
optional: true
'@biomejs/cli-linux-arm64-musl@1.9.4':
optional: true
'@biomejs/cli-linux-arm64@1.7.3':
'@biomejs/cli-linux-arm64-musl@2.1.3':
optional: true
'@biomejs/cli-linux-arm64@1.9.4':
optional: true
'@biomejs/cli-linux-x64-musl@1.7.3':
'@biomejs/cli-linux-arm64@2.1.3':
optional: true
'@biomejs/cli-linux-x64-musl@1.9.4':
optional: true
'@biomejs/cli-linux-x64@1.7.3':
'@biomejs/cli-linux-x64-musl@2.1.3':
optional: true
'@biomejs/cli-linux-x64@1.9.4':
optional: true
'@biomejs/cli-win32-arm64@1.7.3':
'@biomejs/cli-linux-x64@2.1.3':
optional: true
'@biomejs/cli-win32-arm64@1.9.4':
optional: true
'@biomejs/cli-win32-x64@1.7.3':
'@biomejs/cli-win32-arm64@2.1.3':
optional: true
'@biomejs/cli-win32-x64@1.9.4':
optional: true
'@biomejs/cli-win32-x64@2.1.3':
optional: true
'@chevrotain/cst-dts-gen@10.5.0':
dependencies:
'@chevrotain/gast': 10.5.0
@@ -23658,7 +23658,7 @@ snapshots:
transitivePeerDependencies:
- magicast
'@nuxt/vite-builder@3.17.4(@biomejs/biome@1.9.4)(@types/node@22.13.8)(eslint@8.57.1)(less@4.3.0)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.41.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(typescript@5.8.3)(vue@3.5.18(typescript@5.8.3))(yaml@2.8.0)':
'@nuxt/vite-builder@3.17.4(@biomejs/biome@2.1.3)(@types/node@22.13.8)(eslint@8.57.1)(less@4.3.0)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.41.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(typescript@5.8.3)(vue@3.5.18(typescript@5.8.3))(yaml@2.8.0)':
dependencies:
'@nuxt/kit': 3.17.4(magicast@0.3.5)
'@rollup/plugin-replace': 6.0.2(rollup@4.41.1)
@@ -23691,7 +23691,7 @@ snapshots:
unplugin: 2.3.5
vite: 6.3.5(@types/node@22.13.8)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(yaml@2.8.0)
vite-node: 3.1.4(@types/node@22.13.8)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(yaml@2.8.0)
vite-plugin-checker: 0.9.3(@biomejs/biome@1.9.4)(eslint@8.57.1)(optionator@0.9.4)(typescript@5.8.3)(vite@6.3.5(@types/node@22.13.8)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(yaml@2.8.0))
vite-plugin-checker: 0.9.3(@biomejs/biome@2.1.3)(eslint@8.57.1)(optionator@0.9.4)(typescript@5.8.3)(vite@6.3.5(@types/node@22.13.8)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(yaml@2.8.0))
vue: 3.5.18(typescript@5.8.3)
vue-bundle-renderer: 2.1.1
transitivePeerDependencies:
@@ -39047,7 +39047,7 @@ snapshots:
dependencies:
esm-env: 1.2.2
nuxt@3.17.4(u7o2fm6xsvozcu3hqg2m2evhvi):
nuxt@3.17.4(pmbbkaqntai4lvdcfdsxjvtgwi):
dependencies:
'@nuxt/cli': 3.25.1(magicast@0.3.5)
'@nuxt/devalue': 2.0.2
@@ -39055,7 +39055,7 @@ snapshots:
'@nuxt/kit': 3.17.4(magicast@0.3.5)
'@nuxt/schema': 3.17.4
'@nuxt/telemetry': 2.6.6(magicast@0.3.5)
'@nuxt/vite-builder': 3.17.4(@biomejs/biome@1.9.4)(@types/node@22.13.8)(eslint@8.57.1)(less@4.3.0)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.41.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(typescript@5.8.3)(vue@3.5.18(typescript@5.8.3))(yaml@2.8.0)
'@nuxt/vite-builder': 3.17.4(@biomejs/biome@2.1.3)(@types/node@22.13.8)(eslint@8.57.1)(less@4.3.0)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.41.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(typescript@5.8.3)(vue@3.5.18(typescript@5.8.3))(yaml@2.8.0)
'@unhead/vue': 2.0.10(vue@3.5.18(typescript@5.8.3))
'@vue/shared': 3.5.18
c12: 3.0.4(magicast@0.3.5)
@@ -44290,7 +44290,7 @@ snapshots:
- tsx
- yaml
vite-plugin-checker@0.9.3(@biomejs/biome@1.9.4)(eslint@8.57.1)(optionator@0.9.4)(typescript@5.8.3)(vite@6.3.5(@types/node@22.13.8)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(yaml@2.8.0)):
vite-plugin-checker@0.9.3(@biomejs/biome@2.1.3)(eslint@8.57.1)(optionator@0.9.4)(typescript@5.8.3)(vite@6.3.5(@types/node@22.13.8)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(yaml@2.8.0)):
dependencies:
'@babel/code-frame': 7.27.1
chokidar: 4.0.3
@@ -44303,7 +44303,7 @@ snapshots:
vite: 6.3.5(@types/node@22.13.8)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(yaml@2.8.0)
vscode-uri: 3.1.0
optionalDependencies:
'@biomejs/biome': 1.9.4
'@biomejs/biome': 2.1.3
eslint: 8.57.1
optionator: 0.9.4
typescript: 5.8.3