docs: imporvements

This commit is contained in:
Bereket Engida
2024-09-25 16:31:55 +03:00
parent 9281fb476b
commit 0f97f1cc4c
13 changed files with 389 additions and 421 deletions

View File

@@ -2,128 +2,135 @@ import React from "react";
import { useId } from "react";
export function Features() {
return (
<div className="py-2">
<div className="mt-2 grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-3 gap-10 md:gap-2 max-w-7xl mx-auto">
{grid.map((feature) => (
<div
key={feature.title}
className="relative bg-gradient-to-b dark:from-neutral-900 from-neutral-100 dark:to-neutral-950 to-white p-6 overflow-hidden"
>
<Grid size={20} />
<p className="text-base font-bold text-neutral-800 dark:text-white relative z-20">
{feature.title}
</p>
<p className="text-neutral-600 dark:text-neutral-400 mt-4 text-base font-normal relative z-20">
{feature.description}
</p>
</div>
))}
</div>
</div>
);
return (
<div className="py-2">
<div className="mt-2 grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-3 gap-10 md:gap-2 max-w-7xl mx-auto">
{grid.map((feature, i) => (
<div
key={feature.title}
className="relative bg-gradient-to-b dark:from-neutral-900 from-neutral-100 dark:to-neutral-950 to-white px-6 py-2 overflow-hidden"
>
<Grid size={i * 5 + 10} />
<p className="text-base font-bold text-neutral-800 dark:text-white relative z-20">
{feature.title}
</p>
<p className="text-neutral-600 dark:text-neutral-400 text-base font-normal relative z-20">
{feature.description}
</p>
</div>
))}
</div>
</div>
);
}
const grid = [
{
title: "Framework Agnostic",
description:
"Supports your favorite frontend, backend and meta frameworks, including React, Vue, Svelte, Solid, Next.js, Nuxt.js, Hono, and more.",
},
{
title: "Automatic Database Management",
description:
"better auth will automatically manage required tables for authentication, just configure the database and better auth will do the rest.",
},
{
title: "Email & Password Authentication",
description:
"Builtin support for email and password authentication, with secure password hashing and account management features.",
},
{
title: "Social Sign-on",
description:
"Allow users to sign in with their accounts, including Github, Google, Discord, Twitter, and more.",
},
{
title: "Organization & Access Control",
description:
"Manage users and their access to resources within your application.",
},
{
title: "Plugin Ecosystem",
description:
"Enhance your application with our official plugins and those created by the community.",
},
{
title: "Framework Agnostic",
description: "Support for most popular frameworks",
},
{
title: "Email & Password",
description:
"Built-in support for secure email and password authentication",
},
{
title: "Account & Session Management",
description: "Manage user accounts and sessions with ease",
},
{
title: "Built In Rate Limiter",
description: "Built in rate limiter with custom rules",
},
{
title: "Automatic Database Management",
description: "Automatic database management and migrations",
},
{
title: "Social Sign-on",
description: "multiple social sign-on providers",
},
{
title: "Organization & Access Control",
description: "Manage organizations and access control",
},
{
title: "Two Factor Authentication",
description: "Secure your users with two factor authentication",
},
{
title: "Plugin Ecosystem",
description: "Even more capabilities with plugins",
},
];
export const Grid = ({
pattern,
size,
pattern,
size,
}: {
pattern?: number[][];
size?: number;
pattern?: number[][];
size?: number;
}) => {
const p = pattern ?? [
[Math.floor(Math.random() * 4) + 7, Math.floor(Math.random() * 6) + 1],
[Math.floor(Math.random() * 4) + 7, Math.floor(Math.random() * 6) + 1],
[Math.floor(Math.random() * 4) + 7, Math.floor(Math.random() * 6) + 1],
[Math.floor(Math.random() * 4) + 7, Math.floor(Math.random() * 6) + 1],
[Math.floor(Math.random() * 4) + 7, Math.floor(Math.random() * 6) + 1],
];
return (
<div className="pointer-events-none absolute left-1/2 top-0 -ml-20 -mt-2 h-full w-full [mask-image:linear-gradient(white,transparent)]">
<div className="absolute inset-0 bg-gradient-to-r [mask-image:radial-gradient(farthest-side_at_top,white,transparent)] dark:from-zinc-900/30 from-zinc-100/30 to-zinc-300/30 dark:to-zinc-900/30 opacity-100">
<GridPattern
width={size ?? 20}
height={size ?? 20}
x="-12"
y="4"
squares={p}
className="absolute inset-0 h-full w-full mix-blend-overlay dark:fill-white/10 dark:stroke-white/10 stroke-black/10 fill-black/10"
/>
</div>
</div>
);
const p = pattern ?? [
[Math.floor(Math.random() * 4) + 7, Math.floor(Math.random() * 6) + 1],
[Math.floor(Math.random() * 4) + 7, Math.floor(Math.random() * 6) + 1],
[Math.floor(Math.random() * 4) + 7, Math.floor(Math.random() * 6) + 1],
[Math.floor(Math.random() * 4) + 7, Math.floor(Math.random() * 6) + 1],
[Math.floor(Math.random() * 4) + 7, Math.floor(Math.random() * 6) + 1],
];
return (
<div className="pointer-events-none absolute left-1/2 top-0 -ml-20 -mt-2 h-full w-full [mask-image:linear-gradient(white,transparent)]">
<div className="absolute inset-0 bg-gradient-to-r [mask-image:radial-gradient(farthest-side_at_top,white,transparent)] dark:from-zinc-900/30 from-zinc-100/30 to-zinc-300/30 dark:to-zinc-900/30 opacity-100">
<GridPattern
width={size ?? 20}
height={size ?? 20}
x="-12"
y="4"
squares={p}
className="absolute inset-0 h-full w-full mix-blend-overlay dark:fill-white/10 dark:stroke-white/10 stroke-black/10 fill-black/10"
/>
</div>
</div>
);
};
export function GridPattern({ width, height, x, y, squares, ...props }: any) {
const patternId = useId();
const patternId = useId();
return (
<svg aria-hidden="true" {...props}>
<defs>
<pattern
id={patternId}
width={width}
height={height}
patternUnits="userSpaceOnUse"
x={x}
y={y}
>
<path d={`M.5 ${height}V.5H${width}`} fill="none" />
</pattern>
</defs>
<rect
width="100%"
height="100%"
strokeWidth={0}
fill={`url(#${patternId})`}
/>
{squares && (
<svg x={x} y={y} className="overflow-visible">
{squares.map(([x, y]: any) => (
<rect
strokeWidth="0"
key={`${x}-${y}`}
width={width + 1}
height={height + 1}
x={x * width}
y={y * height}
/>
))}
</svg>
)}
</svg>
);
return (
<svg aria-hidden="true" {...props}>
<defs>
<pattern
id={patternId}
width={width}
height={height}
patternUnits="userSpaceOnUse"
x={x}
y={y}
>
<path d={`M.5 ${height}V.5H${width}`} fill="none" />
</pattern>
</defs>
<rect
width="100%"
height="100%"
strokeWidth={0}
fill={`url(#${patternId})`}
/>
{squares && (
<svg x={x} y={y} className="overflow-visible">
{squares.map(([x, y]: any) => (
<rect
strokeWidth="0"
key={`${x}-${y}`}
width={width + 1}
height={height + 1}
x={x * width}
y={y * height}
/>
))}
</svg>
)}
</svg>
);
}

View File

@@ -7,13 +7,6 @@ import {
TooltipTrigger,
} from "@/components/ui/tooltip";
type TechStackIconType = {
[key: string]: {
name: string;
icon: any;
};
};
export const TechStackDisplay = ({
skills,
className,
@@ -22,10 +15,15 @@ export const TechStackDisplay = ({
className?: string;
}) => {
return (
<div className={cn("flex gap-7 flex-wrap mt-3 justify-center items-center max-w-4xl", className)}>
<div
className={cn(
"flex gap-7 flex-wrap mt-3 justify-center items-center max-w-4xl",
className
)}
>
{skills.map((icon) => {
return (
<TooltipProvider key={icon} >
<TooltipProvider key={icon}>
<Tooltip>
<TooltipTrigger asChild>
<span className="transform duration-300 hover:rotate-12 transition-transform">

View File

@@ -41,9 +41,9 @@ export default function Features() {
</div>
<p className="text-left text-sm mt-2 text-muted-foreground">
Supports your favorite frontend, backend and meta frameworks,
including React, Vue, Svelte, Solid, Next.js, Nuxt.js, Hono, and
more{" "}
<a className="text-gray-50" href=".docs" target="_blank">
including React, Vue, Svelte, Astro, Solid, Next.js, Nuxt.js,
Hono, and more{" "}
<a className="text-gray-50" href="/docs" target="_blank">
Learn more
</a>
</p>
@@ -188,6 +188,7 @@ export default function Features() {
"nextJs",
"nuxt",
"svelteKit",
"astro",
"solidStart",
"react",
"hono",

View File

@@ -8,7 +8,7 @@ interface RippleProps {
export const Ripple = React.memo(function Ripple({
mainCircleSize = 180,
mainCircleOpacity = 0.20,
mainCircleOpacity = 0.2,
numCircles = 10,
}: RippleProps) {
return (

View File

@@ -60,36 +60,54 @@ export default function ArticleLayout() {
</SelectTrigger>
<SelectContent>
<SelectItem value="docs" className="h-12">
<div className="flex items-center gap-2">
<div className="flex items-center gap-1">
<svg
xmlns="http://www.w3.org/2000/svg"
width="1.3em"
height="1.3em"
width="1.4em"
height="1.4em"
viewBox="0 0 24 24"
>
<path
fill="currentColor"
d="M7 16h2V4H7zm-1 6q-1.25 0-2.125-.875T3 19V5q0-1.25.875-2.125T6 2h11v16H6q-.425 0-.712.288T5 19t.288.713T6 20h13V4h2v18z"
d="M4.727 2.733c.306-.308.734-.508 1.544-.618C7.105 2.002 8.209 2 9.793 2h4.414c1.584 0 2.688.002 3.522.115c.81.11 1.238.31 1.544.618c.305.308.504.74.613 1.557c.112.84.114 1.955.114 3.552V18H7.426c-1.084 0-1.462.006-1.753.068c-.513.11-.96.347-1.285.667c-.11.108-.164.161-.291.505A1.3 1.3 0 0 0 4 19.7V7.842c0-1.597.002-2.711.114-3.552c.109-.816.308-1.249.613-1.557"
opacity=".5"
></path>
<path
fill="currentColor"
d="M20 18H7.426c-1.084 0-1.462.006-1.753.068c-.513.11-.96.347-1.285.667c-.11.108-.164.161-.291.505s-.107.489-.066.78l.022.15c.11.653.31.998.616 1.244c.307.246.737.407 1.55.494c.837.09 1.946.092 3.536.092h4.43c1.59 0 2.7-.001 3.536-.092c.813-.087 1.243-.248 1.55-.494c.2-.16.354-.362.467-.664H8a.75.75 0 0 1 0-1.5h11.975c.018-.363.023-.776.025-1.25M7.25 7A.75.75 0 0 1 8 6.25h8a.75.75 0 0 1 0 1.5H8A.75.75 0 0 1 7.25 7M8 9.75a.75.75 0 0 0 0 1.5h5a.75.75 0 0 0 0-1.5z"
></path>
</svg>
Docs
</div>
<p className="text-xs">getting started, concepts, and plugins</p>
<p className="text-xs text-muted-foreground">
getting started, concepts, and plugins
</p>
</SelectItem>
<SelectItem value="examples">
<div className="flex items-center gap-1">
<svg
xmlns="http://www.w3.org/2000/svg"
width="1em"
height="1em"
className="mx-1"
viewBox="0 0 14 14"
width="1.4em"
height="1.4em"
viewBox="0 0 24 24"
>
<path
fill="currentColor"
fillRule="evenodd"
d="M1.5 0h3.375v14H1.5A1.5 1.5 0 0 1 0 12.5v-11A1.5 1.5 0 0 1 1.5 0m4.625 7.625V14H12.5a1.5 1.5 0 0 0 1.5-1.5V7.625zM14 6.375H6.125V0H12.5A1.5 1.5 0 0 1 14 1.5z"
clipRule="evenodd"
d="M12 2c4.714 0 7.071 0 8.535 1.464c1.08 1.08 1.364 2.647 1.439 5.286L22 9.5H2.026v-.75c.075-2.64.358-4.205 1.438-5.286C4.93 2 7.286 2 12 2"
opacity=".5"
></path>
<path
fill="currentColor"
d="M13 6a1 1 0 1 1-2 0a1 1 0 0 1 2 0m-3 0a1 1 0 1 1-2 0a1 1 0 0 1 2 0M7 6a1 1 0 1 1-2 0a1 1 0 0 1 2 0"
></path>
<path
fill="currentColor"
d="M2 12c0 4.714 0 7.071 1.464 8.535c1.01 1.01 2.446 1.324 4.786 1.421L9 22V9.5H2.026l-.023.75Q2 11.066 2 12"
opacity=".7"
></path>
<path
fill="currentColor"
d="M22 12c0 4.714 0 7.071-1.465 8.535C19.072 22 16.714 22 12 22c-.819 0-2.316 0-3-.008V9.5h13l-.003.75Q22 11.066 22 12"
></path>
</svg>
Examples

View File

@@ -1,36 +1,37 @@
import {Icons} from './icons'
import { Icons } from "./icons";
type TechStackIconType = {
[key: string]: {
name: string;
icon: any;
};
[key: string]: {
name: string;
icon: any;
};
};
export const techStackIcons: TechStackIconType = {
nextJs: {
name: "Nextjs",
icon: <Icons.nextJS className="w-10 h-10" />,
},
nuxt: {
name: "Nuxt",
icon: <Icons.nuxt className="w-10 h-10" />,
},
svelteKit: {
name: "Svelte Kit",
icon: <Icons.svelteKit className="w-10 h-10" />,
},
solidStart: {
name: "Solid Start",
icon: <Icons.solidStart className="w-10 h-10" />,
},
react: {
name: "Reaact",
icon: <Icons.react className="w-10 h-10" />,
},
hono: {
name: "Hono",
icon: <Icons.hono className="w-10 h-10" />,
},
};
nextJs: {
name: "Nextjs",
icon: <Icons.nextJS className="w-10 h-10" />,
},
nuxt: {
name: "Nuxt",
icon: <Icons.nuxt className="w-10 h-10" />,
},
svelteKit: {
name: "Svelte Kit",
icon: <Icons.svelteKit className="w-10 h-10" />,
},
solidStart: {
name: "Solid Start",
icon: <Icons.solidStart className="w-10 h-10" />,
},
react: {
name: "Reaact",
icon: <Icons.react className="w-10 h-10" />,
},
hono: {
name: "Hono",
icon: <Icons.hono className="w-10 h-10" />,
},
astro: {
name: "Astro",
icon: <Icons.astro className="w-10 h-10" />,
},
};

View File

@@ -150,7 +150,7 @@ Create a new file or route in your framework's designated catch-all route handle
Better auth supports any backend framework with standard Request and Response objects and offers helper functions for popular frameworks.
</Callout>
<Tabs items={["next-js", "nuxt", "svelte-kit", "astro", "solid-start", "hono", "express"]} defaultValue="react">
<Tabs items={["next-js", "nuxt", "svelte-kit", "solid-start", "hono", "express"]} defaultValue="react">
<Tab value="next-js">
```ts title="/app/api/[...auth]/route.ts"
import { auth } from "@/lib/auth"; // path to your auth file
@@ -222,17 +222,16 @@ Better auth supports any backend framework with standard Request and Response ob
<Tab value="astro">
```ts title="/pages/api/auth/[...all].ts"
import type { APIRoute } from "astro";
import { auth } from "../../../auth";
import { auth } from "@/auth"; // path to your auth file
export const GET: APIRoute = async (ctx) => {
return auth.handler(ctx.request);
};
export const ALL: APIRoute = async (ctx) => {
export const POST: APIRoute = async (ctx) => {
return auth.handler(ctx.request);
};
```
This also works for any other node server framework like express, fastify, hapi, etc.
</Tab>
</Tabs>
</Step>

View File

@@ -4,7 +4,8 @@
"private": true,
"version": "0.0.1",
"scripts": {
"dev": "astro dev --port 3000",
"dev": "pnpm migrate:auth && astro dev --port 3000",
"migrate:auth": "pnpm better-auth migrate",
"start": "astro dev",
"build": "astro check && astro build",
"preview": "astro preview",

View File

@@ -29,12 +29,13 @@ export const auth = betterAuth({
twoFactor({
otpOptions: {
async sendOTP(user, otp) {
await resend.emails.send({
from: "Acme <no-reply@demo.better-auth.com>",
to: user.email,
subject: "Your OTP",
html: `Your OTP is ${otp}`,
});
console.log(`Sending OTP to ${user.email}: ${otp}`);
// await resend.emails.send({
// from: "Acme <no-reply@demo.better-auth.com>",
// to: user.email,
// subject: "Your OTP",
// html: `Your OTP is ${otp}`,
// });
},
},
}),

View File

@@ -95,13 +95,15 @@ export function TwoFactorEmail() {
createEffect(() => {
if (otp().length === 6) {
twoFactorActions.verifyTotp({
twoFactorActions.verifyOtp({
code: otp(),
callbackURL: "/dashboard",
fetchOptions: {
onError(context) {
alert(context.error.message);
},
onSuccess(context) {
window.location.href = "/dashboard";
},
},
});
}

View File

@@ -135,6 +135,7 @@ export function UserCard(props: {
class="gap-2"
onClick={async () => {
await signOut();
window.location.reload();
}}
>
<svg

View File

@@ -1,15 +1,17 @@
import { APIError } from "better-call";
import { generateRandomInteger } from "oslo/crypto";
import { generateHOTP } from "oslo/otp";
import { generateHOTP, TOTPController } from "oslo/otp";
import { z } from "zod";
import { createAuthEndpoint } from "../../../api/call";
import { OTP_RANDOM_NUMBER_COOKIE_NAME } from "../constant";
import { verifyTwoFactorMiddleware } from "../verify-middleware";
import type { TwoFactorProvider, UserWithTwoFactor } from "../types";
import { TimeSpan } from "oslo";
export interface OTPOptions {
/**
* How long the opt will be valid for
* How long the opt will be valid for in
* minutes
*
* @default "5 mins"
*/
@@ -28,6 +30,13 @@ export interface OTPOptions {
* The otp adapter is created from the totp adapter.
*/
export const otp2fa = (options?: OTPOptions) => {
const opts = {
period: new TimeSpan(options?.period || 5, "m"),
};
const totp = new TOTPController({
digits: 6,
period: opts.period,
});
/**
* Generate OTP and send it to the user.
*/
@@ -46,24 +55,9 @@ export const otp2fa = (options?: OTPOptions) => {
message: "otp isn't configured",
});
}
const randomNumber = generateRandomInteger(100000);
const otp = await generateHOTP(
Buffer.from(ctx.context.secret),
randomNumber,
);
await options.sendOTP(ctx.context.session.user as UserWithTwoFactor, otp);
const cookie = ctx.context.createAuthCookie(
OTP_RANDOM_NUMBER_COOKIE_NAME,
{
maxAge: options.period,
},
);
await ctx.setSignedCookie(
cookie.name,
randomNumber.toString(),
ctx.context.secret,
cookie.options,
);
const user = ctx.context.session.user as UserWithTwoFactor;
const code = await totp.generate(Buffer.from(user.twoFactorSecret));
await options.sendOTP(user, code);
return ctx.json({ status: true, OTP: undefined });
},
);
@@ -84,30 +78,8 @@ export const otp2fa = (options?: OTPOptions) => {
message: "two factor isn't enabled",
});
}
const cookie = ctx.context.createAuthCookie(
OTP_RANDOM_NUMBER_COOKIE_NAME,
);
const randomNumber = await ctx.getSignedCookie(
cookie.name,
ctx.context.secret,
);
if (!randomNumber) {
throw new APIError("UNAUTHORIZED", {
message: "OTP is expired",
});
}
const toCheckOtp = await generateHOTP(
Buffer.from(ctx.context.secret),
parseInt(randomNumber),
);
const toCheckOtp = await totp.generate(Buffer.from(user.twoFactorSecret));
if (toCheckOtp === ctx.body.code) {
ctx.setCookie(cookie.name, "", {
path: "/",
sameSite: "lax",
httpOnly: true,
secure: false,
maxAge: 0,
});
return ctx.context.valid();
} else {
return ctx.context.invalid();

353
pnpm-lock.yaml generated
View File

@@ -397,7 +397,7 @@ importers:
version: link:../../packages/better-auth
nuxt:
specifier: ^3.13.0
version: 3.13.2(@biomejs/biome@1.7.3)(@types/node@20.16.5)(typescript@5.6.1-rc)(vite@5.4.7)
version: 3.13.2(@biomejs/biome@1.7.3)(@types/node@20.16.5)(typescript@5.6.1-rc)(vite@5.4.8)
vue:
specifier: latest
version: 3.5.7(typescript@5.6.1-rc)
@@ -783,6 +783,39 @@ importers:
specifier: ^0.7.39
version: 0.7.39
examples/svelte-example:
devDependencies:
'@sveltejs/adapter-auto':
specifier: ^3.0.0
version: 3.2.5(@sveltejs/kit@2.5.28)
'@sveltejs/kit':
specifier: ^2.0.0
version: 2.5.28(@sveltejs/vite-plugin-svelte@3.1.2)(svelte@4.2.19)(vite@5.4.8)
'@sveltejs/vite-plugin-svelte':
specifier: ^3.0.0
version: 3.1.2(svelte@4.2.19)(vite@5.4.8)
'@tailwindcss/typography':
specifier: ^0.5.14
version: 0.5.15(tailwindcss@3.4.13)
autoprefixer:
specifier: ^10.4.20
version: 10.4.20(postcss@8.4.47)
svelte:
specifier: ^4.2.7
version: 4.2.19
svelte-check:
specifier: ^4.0.0
version: 4.0.2(svelte@4.2.19)(typescript@5.6.2)
tailwindcss:
specifier: ^3.4.9
version: 3.4.13
typescript:
specifier: ^5.0.0
version: 5.6.2
vite:
specifier: ^5.0.3
version: 5.4.8(@types/node@20.16.5)
packages/better-auth:
dependencies:
'@babel/preset-react':
@@ -4036,7 +4069,7 @@ packages:
resolution: {integrity: sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA==}
dev: false
/@nuxt/devtools-kit@1.5.0(magicast@0.3.5)(vite@5.4.7):
/@nuxt/devtools-kit@1.5.0(magicast@0.3.5)(vite@5.4.8):
resolution: {integrity: sha512-Q8sOquz9CoUMTABo6Bq+nkbNMZi+WVN4xpz1USZPZazcJhSj9imSmQRSycY2fBYqkfB1AKBRhm2UV2ujCQfw0Q==}
peerDependencies:
vite: '*'
@@ -4044,7 +4077,7 @@ packages:
'@nuxt/kit': 3.13.2(magicast@0.3.5)
'@nuxt/schema': 3.13.2
execa: 7.2.0
vite: 5.4.7(@types/node@20.16.5)
vite: 5.4.8(@types/node@20.16.5)
transitivePeerDependencies:
- magicast
- rollup
@@ -4068,17 +4101,17 @@ packages:
semver: 7.6.3
dev: false
/@nuxt/devtools@1.5.0(vite@5.4.7)(vue@3.5.7):
/@nuxt/devtools@1.5.0(vite@5.4.8)(vue@3.5.7):
resolution: {integrity: sha512-82LEPZUVU0osPRypSTq/bPXfl1Oo/+R2UaXx/pq9WkE8Vj1V/n0v7a40EVHJsusZ+e/JGjed8+8oYDwF8nNIQw==}
hasBin: true
peerDependencies:
vite: '*'
dependencies:
'@antfu/utils': 0.7.10
'@nuxt/devtools-kit': 1.5.0(magicast@0.3.5)(vite@5.4.7)
'@nuxt/devtools-kit': 1.5.0(magicast@0.3.5)(vite@5.4.8)
'@nuxt/devtools-wizard': 1.5.0
'@nuxt/kit': 3.13.2(magicast@0.3.5)
'@vue/devtools-core': 7.4.4(vite@5.4.7)(vue@3.5.7)
'@vue/devtools-core': 7.4.4(vite@5.4.8)(vue@3.5.7)
'@vue/devtools-kit': 7.4.4
birpc: 0.2.17
consola: 3.2.3
@@ -4107,9 +4140,9 @@ packages:
sirv: 2.0.4
tinyglobby: 0.2.6
unimport: 3.12.0(rollup@4.22.2)
vite: 5.4.7(@types/node@20.16.5)
vite-plugin-inspect: 0.8.7(@nuxt/kit@3.13.2)(vite@5.4.7)
vite-plugin-vue-inspector: 5.2.0(vite@5.4.7)
vite: 5.4.8(@types/node@20.16.5)
vite-plugin-inspect: 0.8.7(@nuxt/kit@3.13.2)(vite@5.4.8)
vite-plugin-vue-inspector: 5.2.0(vite@5.4.8)
which: 3.0.1
ws: 8.18.0
transitivePeerDependencies:
@@ -4211,8 +4244,8 @@ packages:
dependencies:
'@nuxt/kit': 3.13.2(magicast@0.3.5)
'@rollup/plugin-replace': 5.0.7(rollup@4.22.2)
'@vitejs/plugin-vue': 5.1.4(vite@5.4.7)(vue@3.5.7)
'@vitejs/plugin-vue-jsx': 4.0.1(vite@5.4.7)(vue@3.5.7)
'@vitejs/plugin-vue': 5.1.4(vite@5.4.8)(vue@3.5.7)
'@vitejs/plugin-vue-jsx': 4.0.1(vite@5.4.8)(vue@3.5.7)
autoprefixer: 10.4.20(postcss@8.4.47)
clear: 0.1.0
consola: 3.2.3
@@ -4238,9 +4271,9 @@ packages:
ufo: 1.5.4
unenv: 1.10.0
unplugin: 1.14.1
vite: 5.4.7(@types/node@20.16.5)
vite: 5.4.8(@types/node@20.16.5)
vite-node: 2.1.1(@types/node@20.16.5)
vite-plugin-checker: 0.8.0(@biomejs/biome@1.7.3)(typescript@5.6.1-rc)(vite@5.4.7)
vite-plugin-checker: 0.8.0(@biomejs/biome@1.7.3)(typescript@5.6.1-rc)(vite@5.4.8)
vue: 3.5.7(typescript@5.6.1-rc)
vue-bundle-renderer: 2.1.0
transitivePeerDependencies:
@@ -7896,14 +7929,6 @@ packages:
requiresBuild: true
optional: true
/@rollup/rollup-android-arm-eabi@4.22.4:
resolution: {integrity: sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==}
cpu: [arm]
os: [android]
requiresBuild: true
dev: false
optional: true
/@rollup/rollup-android-arm64@4.22.2:
resolution: {integrity: sha512-I+B1v0a4iqdS9DvYt1RJZ3W+Oh9EVWjbY6gp79aAYipIbxSLEoQtFQlZEnUuwhDXCqMxJ3hluxKAdPD+GiluFQ==}
cpu: [arm64]
@@ -7911,14 +7936,6 @@ packages:
requiresBuild: true
optional: true
/@rollup/rollup-android-arm64@4.22.4:
resolution: {integrity: sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: false
optional: true
/@rollup/rollup-darwin-arm64@4.22.2:
resolution: {integrity: sha512-BTHO7rR+LC67OP7I8N8GvdvnQqzFujJYWo7qCQ8fGdQcb8Gn6EQY+K1P+daQLnDCuWKbZ+gHAQZuKiQkXkqIYg==}
cpu: [arm64]
@@ -7926,14 +7943,6 @@ packages:
requiresBuild: true
optional: true
/@rollup/rollup-darwin-arm64@4.22.4:
resolution: {integrity: sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
/@rollup/rollup-darwin-x64@4.22.2:
resolution: {integrity: sha512-1esGwDNFe2lov4I6GsEeYaAMHwkqk0IbuGH7gXGdBmd/EP9QddJJvTtTF/jv+7R8ZTYPqwcdLpMTxK8ytP6k6Q==}
cpu: [x64]
@@ -7941,14 +7950,6 @@ packages:
requiresBuild: true
optional: true
/@rollup/rollup-darwin-x64@4.22.4:
resolution: {integrity: sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
/@rollup/rollup-linux-arm-gnueabihf@4.22.2:
resolution: {integrity: sha512-GBHuY07x96OTEM3OQLNaUSUwrOhdMea/LDmlFHi/HMonrgF6jcFrrFFwJhhe84XtA1oK/Qh4yFS+VMREf6dobg==}
cpu: [arm]
@@ -7956,14 +7957,6 @@ packages:
requiresBuild: true
optional: true
/@rollup/rollup-linux-arm-gnueabihf@4.22.4:
resolution: {integrity: sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@rollup/rollup-linux-arm-musleabihf@4.22.2:
resolution: {integrity: sha512-Dbfa9Sc1G1lWxop0gNguXOfGhaXQWAGhZUcqA0Vs6CnJq8JW/YOw/KvyGtQFmz4yDr0H4v9X248SM7bizYj4yQ==}
cpu: [arm]
@@ -7971,14 +7964,6 @@ packages:
requiresBuild: true
optional: true
/@rollup/rollup-linux-arm-musleabihf@4.22.4:
resolution: {integrity: sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@rollup/rollup-linux-arm64-gnu@4.22.2:
resolution: {integrity: sha512-Z1YpgBvFYhZIyBW5BoopwSg+t7yqEhs5HCei4JbsaXnhz/eZehT18DaXl957aaE9QK7TRGFryCAtStZywcQe1A==}
cpu: [arm64]
@@ -7986,14 +7971,6 @@ packages:
requiresBuild: true
optional: true
/@rollup/rollup-linux-arm64-gnu@4.22.4:
resolution: {integrity: sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@rollup/rollup-linux-arm64-musl@4.22.2:
resolution: {integrity: sha512-66Zszr7i/JaQ0u/lefcfaAw16wh3oT72vSqubIMQqWzOg85bGCPhoeykG/cC5uvMzH80DQa2L539IqKht6twVA==}
cpu: [arm64]
@@ -8001,14 +7978,6 @@ packages:
requiresBuild: true
optional: true
/@rollup/rollup-linux-arm64-musl@4.22.4:
resolution: {integrity: sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@rollup/rollup-linux-powerpc64le-gnu@4.22.2:
resolution: {integrity: sha512-HpJCMnlMTfEhwo19bajvdraQMcAq3FX08QDx3OfQgb+414xZhKNf3jNvLFYKbbDSGBBrQh5yNwWZrdK0g0pokg==}
cpu: [ppc64]
@@ -8016,14 +7985,6 @@ packages:
requiresBuild: true
optional: true
/@rollup/rollup-linux-powerpc64le-gnu@4.22.4:
resolution: {integrity: sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==}
cpu: [ppc64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@rollup/rollup-linux-riscv64-gnu@4.22.2:
resolution: {integrity: sha512-/egzQzbOSRef2vYCINKITGrlwkzP7uXRnL+xU2j75kDVp3iPdcF0TIlfwTRF8woBZllhk3QaxNOEj2Ogh3t9hg==}
cpu: [riscv64]
@@ -8031,14 +7992,6 @@ packages:
requiresBuild: true
optional: true
/@rollup/rollup-linux-riscv64-gnu@4.22.4:
resolution: {integrity: sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==}
cpu: [riscv64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@rollup/rollup-linux-s390x-gnu@4.22.2:
resolution: {integrity: sha512-qgYbOEbrPfEkH/OnUJd1/q4s89FvNJQIUldx8X2F/UM5sEbtkqZpf2s0yly2jSCKr1zUUOY1hnTP2J1WOzMAdA==}
cpu: [s390x]
@@ -8046,14 +7999,6 @@ packages:
requiresBuild: true
optional: true
/@rollup/rollup-linux-s390x-gnu@4.22.4:
resolution: {integrity: sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==}
cpu: [s390x]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@rollup/rollup-linux-x64-gnu@4.22.2:
resolution: {integrity: sha512-a0lkvNhFLhf+w7A95XeBqGQaG0KfS3hPFJnz1uraSdUe/XImkp/Psq0Ca0/UdD5IEAGoENVmnYrzSC9Y2a2uKQ==}
cpu: [x64]
@@ -8061,14 +8006,6 @@ packages:
requiresBuild: true
optional: true
/@rollup/rollup-linux-x64-gnu@4.22.4:
resolution: {integrity: sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@rollup/rollup-linux-x64-musl@4.22.2:
resolution: {integrity: sha512-sSWBVZgzwtsuG9Dxi9kjYOUu/wKW+jrbzj4Cclabqnfkot8Z3VEHcIgyenA3lLn/Fu11uDviWjhctulkhEO60g==}
cpu: [x64]
@@ -8076,14 +8013,6 @@ packages:
requiresBuild: true
optional: true
/@rollup/rollup-linux-x64-musl@4.22.4:
resolution: {integrity: sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@rollup/rollup-win32-arm64-msvc@4.22.2:
resolution: {integrity: sha512-t/YgCbZ638R/r7IKb9yCM6nAek1RUvyNdfU0SHMDLOf6GFe/VG1wdiUAsxTWHKqjyzkRGg897ZfCpdo1bsCSsA==}
cpu: [arm64]
@@ -8091,14 +8020,6 @@ packages:
requiresBuild: true
optional: true
/@rollup/rollup-win32-arm64-msvc@4.22.4:
resolution: {integrity: sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@rollup/rollup-win32-ia32-msvc@4.22.2:
resolution: {integrity: sha512-kTmX5uGs3WYOA+gYDgI6ITkZng9SP71FEMoHNkn+cnmb9Zuyyay8pf0oO5twtTwSjNGy1jlaWooTIr+Dw4tIbw==}
cpu: [ia32]
@@ -8106,14 +8027,6 @@ packages:
requiresBuild: true
optional: true
/@rollup/rollup-win32-ia32-msvc@4.22.4:
resolution: {integrity: sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@rollup/rollup-win32-x64-msvc@4.22.2:
resolution: {integrity: sha512-Yy8So+SoRz8I3NS4Bjh91BICPOSVgdompTIPYTByUqU66AXSIOgmW3Lv1ke3NORPqxdF+RdrZET+8vYai6f4aA==}
cpu: [x64]
@@ -8121,14 +8034,6 @@ packages:
requiresBuild: true
optional: true
/@rollup/rollup-win32-x64-msvc@4.22.4:
resolution: {integrity: sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@rtsao/scc@1.1.0:
resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
dev: true
@@ -8428,7 +8333,7 @@ packages:
peerDependencies:
'@sveltejs/kit': ^2.0.0
dependencies:
'@sveltejs/kit': 2.5.28(@sveltejs/vite-plugin-svelte@3.1.2)(svelte@4.2.19)(vite@5.4.7)
'@sveltejs/kit': 2.5.28(@sveltejs/vite-plugin-svelte@3.1.2)(svelte@4.2.19)(vite@5.4.8)
import-meta-resolve: 4.1.0
dev: true
@@ -8459,6 +8364,33 @@ packages:
vite: 5.4.7(@types/node@20.16.5)
dev: true
/@sveltejs/kit@2.5.28(@sveltejs/vite-plugin-svelte@3.1.2)(svelte@4.2.19)(vite@5.4.8):
resolution: {integrity: sha512-/O7pvFGBsQPcFa9UrW8eUC5uHTOXLsUp3SN0dY6YmRAL9nfPSrJsSJk//j5vMpinSshzUjteAFcfQTU+04Ka1w==}
engines: {node: '>=18.13'}
hasBin: true
requiresBuild: true
peerDependencies:
'@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1
svelte: ^4.0.0 || ^5.0.0-next.0
vite: ^5.0.3
dependencies:
'@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.8)
'@types/cookie': 0.6.0
cookie: 0.6.0
devalue: 5.0.0
esm-env: 1.0.0
import-meta-resolve: 4.1.0
kleur: 4.1.5
magic-string: 0.30.11
mrmime: 2.0.0
sade: 1.8.1
set-cookie-parser: 2.7.0
sirv: 2.0.4
svelte: 4.2.19
tiny-glob: 0.2.9
vite: 5.4.8(@types/node@20.16.5)
dev: true
/@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2)(svelte@4.2.19)(vite@5.4.7):
resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==}
engines: {node: ^18.0.0 || >=20}
@@ -8475,6 +8407,22 @@ packages:
- supports-color
dev: true
/@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2)(svelte@4.2.19)(vite@5.4.8):
resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==}
engines: {node: ^18.0.0 || >=20}
peerDependencies:
'@sveltejs/vite-plugin-svelte': ^3.0.0
svelte: ^4.0.0 || ^5.0.0-next.0
vite: ^5.0.0
dependencies:
'@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.8)
debug: 4.3.7
svelte: 4.2.19
vite: 5.4.8(@types/node@20.16.5)
transitivePeerDependencies:
- supports-color
dev: true
/@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.7):
resolution: {integrity: sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==}
engines: {node: ^18.0.0 || >=20}
@@ -8495,6 +8443,26 @@ packages:
- supports-color
dev: true
/@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.8):
resolution: {integrity: sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==}
engines: {node: ^18.0.0 || >=20}
peerDependencies:
svelte: ^4.0.0 || ^5.0.0-next.0
vite: ^5.0.0
dependencies:
'@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2)(svelte@4.2.19)(vite@5.4.8)
debug: 4.3.7
deepmerge: 4.3.1
kleur: 4.1.5
magic-string: 0.30.11
svelte: 4.2.19
svelte-hmr: 0.16.0(svelte@4.2.19)
vite: 5.4.8(@types/node@20.16.5)
vitefu: 0.2.5(vite@5.4.8)
transitivePeerDependencies:
- supports-color
dev: true
/@swc/counter@0.1.3:
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
@@ -8535,6 +8503,18 @@ packages:
tailwindcss: 3.4.12
dev: false
/@tailwindcss/typography@0.5.15(tailwindcss@3.4.13):
resolution: {integrity: sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==}
peerDependencies:
tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20'
dependencies:
lodash.castarray: 4.4.0
lodash.isplainobject: 4.0.6
lodash.merge: 4.6.2
postcss-selector-parser: 6.0.10
tailwindcss: 3.4.13
dev: true
/@tanstack/query-core@5.56.2:
resolution: {integrity: sha512-gor0RI3/R5rVV3gXfddh1MM+hgl0Z4G7tj6Xxpq6p2I03NGPaJ8dITY9Gz05zYYb/EJq9vPas/T4wn9EaDPd4Q==}
dev: false
@@ -9542,7 +9522,7 @@ packages:
- supports-color
dev: true
/@vitejs/plugin-vue-jsx@4.0.1(vite@5.4.7)(vue@3.5.7):
/@vitejs/plugin-vue-jsx@4.0.1(vite@5.4.8)(vue@3.5.7):
resolution: {integrity: sha512-7mg9HFGnFHMEwCdB6AY83cVK4A6sCqnrjFYF4WIlebYAQVVJ/sC/CiTruVdrRlhrFoeZ8rlMxY9wYpPTIRhhAg==}
engines: {node: ^18.0.0 || >=20.0.0}
peerDependencies:
@@ -9552,20 +9532,20 @@ packages:
'@babel/core': 7.25.2
'@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2)
'@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.25.2)
vite: 5.4.7(@types/node@20.16.5)
vite: 5.4.8(@types/node@20.16.5)
vue: 3.5.7(typescript@5.6.1-rc)
transitivePeerDependencies:
- supports-color
dev: false
/@vitejs/plugin-vue@5.1.4(vite@5.4.7)(vue@3.5.7):
/@vitejs/plugin-vue@5.1.4(vite@5.4.8)(vue@3.5.7):
resolution: {integrity: sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==}
engines: {node: ^18.0.0 || >=20.0.0}
peerDependencies:
vite: ^5.0.0
vue: ^3.2.25
dependencies:
vite: 5.4.7(@types/node@20.16.5)
vite: 5.4.8(@types/node@20.16.5)
vue: 3.5.7(typescript@5.6.1-rc)
dev: false
@@ -9814,7 +9794,7 @@ packages:
resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
dev: false
/@vue/devtools-core@7.4.4(vite@5.4.7)(vue@3.5.7):
/@vue/devtools-core@7.4.4(vite@5.4.8)(vue@3.5.7):
resolution: {integrity: sha512-DLxgA3DfeADkRzhAfm3G2Rw/cWxub64SdP5b+s5dwL30+whOGj+QNhmyFpwZ8ZTrHDFRIPj0RqNzJ8IRR1pz7w==}
peerDependencies:
vue: ^3.0.0
@@ -9824,7 +9804,7 @@ packages:
mitt: 3.0.1
nanoid: 3.3.7
pathe: 1.1.2
vite-hot-client: 0.2.3(vite@5.4.7)
vite-hot-client: 0.2.3(vite@5.4.8)
vue: 3.5.7(typescript@5.6.1-rc)
transitivePeerDependencies:
- vite
@@ -16445,7 +16425,6 @@ packages:
/lodash.castarray@4.4.0:
resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==}
dev: false
/lodash.defaults@4.2.0:
resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==}
@@ -16461,7 +16440,6 @@ packages:
/lodash.isplainobject@4.0.6:
resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
dev: false
/lodash.memoize@4.1.2:
resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
@@ -18220,7 +18198,7 @@ packages:
fsevents: 2.3.3
dev: false
/nuxt@3.13.2(@biomejs/biome@1.7.3)(@types/node@20.16.5)(typescript@5.6.1-rc)(vite@5.4.7):
/nuxt@3.13.2(@biomejs/biome@1.7.3)(@types/node@20.16.5)(typescript@5.6.1-rc)(vite@5.4.8):
resolution: {integrity: sha512-Bjc2qRsipfBhjXsBEJCN+EUAukhdgFv/KoIR5HFB2hZOYRSqXBod3oWQs78k3ja1nlIhAEdBG533898KJxUtJw==}
engines: {node: ^14.18.0 || >=16.10.0}
hasBin: true
@@ -18234,7 +18212,7 @@ packages:
optional: true
dependencies:
'@nuxt/devalue': 2.0.2
'@nuxt/devtools': 1.5.0(vite@5.4.7)(vue@3.5.7)
'@nuxt/devtools': 1.5.0(vite@5.4.8)(vue@3.5.7)
'@nuxt/kit': 3.13.2(magicast@0.3.5)
'@nuxt/schema': 3.13.2
'@nuxt/telemetry': 2.6.0
@@ -19363,7 +19341,6 @@ packages:
dependencies:
cssesc: 3.0.0
util-deprecate: 1.0.2
dev: false
/postcss-selector-parser@6.1.2:
resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
@@ -20653,32 +20630,6 @@ packages:
'@rollup/rollup-win32-x64-msvc': 4.22.2
fsevents: 2.3.3
/rollup@4.22.4:
resolution: {integrity: sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
dependencies:
'@types/estree': 1.0.5
optionalDependencies:
'@rollup/rollup-android-arm-eabi': 4.22.4
'@rollup/rollup-android-arm64': 4.22.4
'@rollup/rollup-darwin-arm64': 4.22.4
'@rollup/rollup-darwin-x64': 4.22.4
'@rollup/rollup-linux-arm-gnueabihf': 4.22.4
'@rollup/rollup-linux-arm-musleabihf': 4.22.4
'@rollup/rollup-linux-arm64-gnu': 4.22.4
'@rollup/rollup-linux-arm64-musl': 4.22.4
'@rollup/rollup-linux-powerpc64le-gnu': 4.22.4
'@rollup/rollup-linux-riscv64-gnu': 4.22.4
'@rollup/rollup-linux-s390x-gnu': 4.22.4
'@rollup/rollup-linux-x64-gnu': 4.22.4
'@rollup/rollup-linux-x64-musl': 4.22.4
'@rollup/rollup-win32-arm64-msvc': 4.22.4
'@rollup/rollup-win32-ia32-msvc': 4.22.4
'@rollup/rollup-win32-x64-msvc': 4.22.4
fsevents: 2.3.3
dev: false
/rou3@0.5.1:
resolution: {integrity: sha512-OXMmJ3zRk2xeXFGfA3K+EOPHC5u7RDFG7lIOx0X1pdnhUkI8MdVrbV+sNsD80ElpUZ+MRHdyxPnFthq9VHs8uQ==}
dev: false
@@ -21736,6 +21687,25 @@ packages:
- sugarss
dev: true
/svelte-check@4.0.2(svelte@4.2.19)(typescript@5.6.2):
resolution: {integrity: sha512-w2yqcG9ELJe2RJCnAvB7v0OgkHhL3czzz/tVoxGFfO6y4mOrF6QHCDhXijeXzsU7LVKEwWS3Qd9tza4JBuDxqA==}
engines: {node: '>= 18.0.0'}
hasBin: true
peerDependencies:
svelte: ^4.0.0 || ^5.0.0-next.0
typescript: '>=5.0.0'
dependencies:
'@jridgewell/trace-mapping': 0.3.25
chokidar: 3.6.0
fdir: 6.3.0(picomatch@4.0.2)
picocolors: 1.1.0
sade: 1.8.1
svelte: 4.2.19
typescript: 5.6.2
transitivePeerDependencies:
- picomatch
dev: true
/svelte-hmr@0.16.0(svelte@4.2.19):
resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==}
engines: {node: ^12.20 || ^14.13.1 || >= 16}
@@ -21926,7 +21896,6 @@ packages:
sucrase: 3.35.0
transitivePeerDependencies:
- ts-node
dev: false
/tapable@2.2.1:
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
@@ -23207,12 +23176,12 @@ packages:
- xml2js
dev: false
/vite-hot-client@0.2.3(vite@5.4.7):
/vite-hot-client@0.2.3(vite@5.4.8):
resolution: {integrity: sha512-rOGAV7rUlUHX89fP2p2v0A2WWvV3QMX2UYq0fRqsWSvFvev4atHWqjwGoKaZT1VTKyLGk533ecu3eyd0o59CAg==}
peerDependencies:
vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0
dependencies:
vite: 5.4.7(@types/node@20.16.5)
vite: 5.4.8(@types/node@20.16.5)
dev: false
/vite-node@1.6.0(@types/node@20.16.5):
@@ -23224,7 +23193,7 @@ packages:
debug: 4.3.7
pathe: 1.1.2
picocolors: 1.1.0
vite: 5.4.7(@types/node@20.16.5)
vite: 5.4.8(@types/node@20.16.5)
transitivePeerDependencies:
- '@types/node'
- less
@@ -23245,7 +23214,7 @@ packages:
cac: 6.7.14
debug: 4.3.7
pathe: 1.1.2
vite: 5.4.7(@types/node@20.16.5)
vite: 5.4.8(@types/node@20.16.5)
transitivePeerDependencies:
- '@types/node'
- less
@@ -23258,7 +23227,7 @@ packages:
- terser
dev: false
/vite-plugin-checker@0.8.0(@biomejs/biome@1.7.3)(typescript@5.6.1-rc)(vite@5.4.7):
/vite-plugin-checker@0.8.0(@biomejs/biome@1.7.3)(typescript@5.6.1-rc)(vite@5.4.8):
resolution: {integrity: sha512-UA5uzOGm97UvZRTdZHiQVYFnd86AVn8EVaD4L3PoVzxH+IZSfaAw14WGFwX9QS23UW3lV/5bVKZn6l0w+q9P0g==}
engines: {node: '>=14.16'}
peerDependencies:
@@ -23304,7 +23273,7 @@ packages:
strip-ansi: 6.0.1
tiny-invariant: 1.3.3
typescript: 5.6.1-rc
vite: 5.4.7(@types/node@20.16.5)
vite: 5.4.8(@types/node@20.16.5)
vscode-languageclient: 7.0.0
vscode-languageserver: 7.0.0
vscode-languageserver-textdocument: 1.0.12
@@ -23335,7 +23304,7 @@ packages:
- supports-color
dev: false
/vite-plugin-inspect@0.8.7(@nuxt/kit@3.13.2)(vite@5.4.7):
/vite-plugin-inspect@0.8.7(@nuxt/kit@3.13.2)(vite@5.4.8):
resolution: {integrity: sha512-/XXou3MVc13A5O9/2Nd6xczjrUwt7ZyI9h8pTnUMkr5SshLcb0PJUOVq2V+XVkdeU4njsqAtmK87THZuO2coGA==}
engines: {node: '>=14'}
peerDependencies:
@@ -23355,7 +23324,7 @@ packages:
perfect-debounce: 1.0.0
picocolors: 1.1.0
sirv: 2.0.4
vite: 5.4.7(@types/node@20.16.5)
vite: 5.4.8(@types/node@20.16.5)
transitivePeerDependencies:
- rollup
- supports-color
@@ -23405,7 +23374,7 @@ packages:
- supports-color
dev: false
/vite-plugin-vue-inspector@5.2.0(vite@5.4.7):
/vite-plugin-vue-inspector@5.2.0(vite@5.4.8):
resolution: {integrity: sha512-wWxyb9XAtaIvV/Lr7cqB1HIzmHZFVUJsTNm3yAxkS87dgh/Ky4qr2wDEWNxF23fdhVa3jQ8MZREpr4XyiuaRqA==}
peerDependencies:
vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0
@@ -23419,7 +23388,7 @@ packages:
'@vue/compiler-dom': 3.5.7
kolorist: 1.8.0
magic-string: 0.30.11
vite: 5.4.7(@types/node@20.16.5)
vite: 5.4.8(@types/node@20.16.5)
transitivePeerDependencies:
- supports-color
dev: false
@@ -23496,10 +23465,9 @@ packages:
'@types/node': 20.16.5
esbuild: 0.21.5
postcss: 8.4.47
rollup: 4.22.4
rollup: 4.22.2
optionalDependencies:
fsevents: 2.3.3
dev: false
/vitefu@0.2.5(vite@5.4.7):
resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==}
@@ -23521,7 +23489,6 @@ packages:
optional: true
dependencies:
vite: 5.4.8(@types/node@20.16.5)
dev: false
/vitefu@1.0.2(vite@5.4.7):
resolution: {integrity: sha512-0/iAvbXyM3RiPPJ4lyD4w6Mjgtf4ejTK6TPvTNG3H32PLwuT0N/ZjJLiXug7ETE/LWtTeHw9WRv7uX/tIKYyKg==}