Add api backend

This commit is contained in:
Eric
2026-11-13 19:23:40 +01:00
parent a56b8738b3
commit 22e4f966df
9 changed files with 917 additions and 44 deletions
@@ -0,0 +1,30 @@
import { defineEventHandler, getQuery, sendRedirect } from 'h3';
import { waitlistProducts } from '../../theme/components/waitlist/products';
import { verifyWaitlistToken } from '../../lib/waitlist/token';
import { getSiteUrl, upsertWaitlistContact } from '../../lib/waitlist/resend';
/**
* Step 2 of the double opt-in, opened from the confirmation email. Only here does the
* signup become a Resend contact. Redirects to `/waitlist/confirmed`, which shows the
* result and the follow-up survey.
*/
export default defineEventHandler(async (event) => {
const { token } = getQuery(event);
const confirmedPage = `${getSiteUrl()}/waitlist/confirmed`;
const signup = typeof token === 'string' ? verifyWaitlistToken(token) : null;
if (!signup || !Object.hasOwn(waitlistProducts, signup.product)) {
return sendRedirect(event, `${confirmedPage}?status=invalid`, 302);
}
const product = encodeURIComponent(signup.product);
try {
await upsertWaitlistContact(signup);
} catch (error) {
console.error('[waitlist]', error);
return sendRedirect(event, `${confirmedPage}?product=${product}&status=error`, 302);
}
return sendRedirect(event, `${confirmedPage}?product=${product}`, 302);
});
@@ -0,0 +1,63 @@
import { createError, defineEventHandler, readBody, setResponseStatus } from 'h3';
import { checkBotId } from 'botid/server';
import { waitlistProducts } from '../../theme/components/waitlist/products';
import { createWaitlistToken } from '../../lib/waitlist/token';
import { getSiteUrl, sendConfirmationEmail } from '../../lib/waitlist/resend';
const EMAIL_PATTERN = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
const MAX_EMAIL_LENGTH = 254;
const MAX_USE_CASE_LENGTH = 200;
/**
* Step 1 of the double opt-in: runs the spam checks and emails a signed confirmation link.
* Nothing is stored until `/api/waitlist/confirm` is opened from that email.
*/
export default defineEventHandler(async (event) => {
const body = await readBody<Record<string, unknown> | null>(event).catch(() => null);
// Honeypot: people never see this field. Answer as if it worked so bots don't adapt.
if (body?.website) {
setResponseStatus(event, 202);
return { ok: true };
}
const verification = await checkBotId({
advancedOptions: { headers: event.node.req.headers },
});
if (verification.isBot) {
throw createError({ statusCode: 403, statusMessage: 'Forbidden' });
}
const email = typeof body?.email === 'string' ? body.email.trim().toLowerCase() : '';
const product = typeof body?.product === 'string' ? body.product : '';
const useCase =
typeof body?.use_case === 'string' ? body.use_case.trim().slice(0, MAX_USE_CASE_LENGTH) : '';
if (!email || email.length > MAX_EMAIL_LENGTH || !EMAIL_PATTERN.test(email)) {
throw createError({ statusCode: 400, statusMessage: 'Invalid email address' });
}
if (!Object.hasOwn(waitlistProducts, product)) {
throw createError({ statusCode: 400, statusMessage: 'Unknown product' });
}
const token = createWaitlistToken({
email,
product,
use_case: useCase,
signed_up_at: new Date().toISOString(),
});
const confirmUrl = `${getSiteUrl()}/api/waitlist/confirm?token=${encodeURIComponent(token)}`;
try {
await sendConfirmationEmail({ email, product: waitlistProducts[product], confirmUrl });
} catch (error) {
console.error('[waitlist]', error);
throw createError({ statusCode: 502, statusMessage: 'Could not send confirmation email' });
}
setResponseStatus(event, 202);
return { ok: true };
});
+134
View File
@@ -0,0 +1,134 @@
import { Resend } from 'resend';
import type { WaitlistProduct } from '../../theme/components/waitlist/products';
import type { WaitlistTokenPayload } from './token';
const DEFAULT_FROM = 'Lucide <info@lucide.dev>';
let client: Resend | undefined;
function getResend() {
const apiKey = process.env.RESEND_API_KEY;
if (!apiKey) {
throw new Error('RESEND_API_KEY is not set');
}
client ??= new Resend(apiKey);
return client;
}
/** The site the confirmation link and redirects point to. */
export function getSiteUrl() {
return (process.env.WAITLIST_SITE_URL ?? 'https://lucide.dev').replace(/\/$/, '');
}
function escapeHtml(value: string) {
return value
.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;');
}
export async function sendConfirmationEmail({
email,
product,
confirmUrl,
}: {
email: string;
product: WaitlistProduct;
confirmUrl: string;
}) {
const name = escapeHtml(product.name);
const url = escapeHtml(confirmUrl);
const { error } = await getResend().emails.send({
from: process.env.WAITLIST_FROM ?? DEFAULT_FROM,
to: email,
subject: `Confirm your spot on the ${product.name} waitlist`,
text: [
`Thanks for your interest in ${product.name}.`,
'',
'Confirm your email to join the waitlist:',
confirmUrl,
'',
"The link is valid for 7 days. If you didn't sign up, ignore this email and nothing happens.",
'',
'Lucide',
].join('\n'),
html: `<!doctype html>
<html>
<body style="margin:0;padding:32px 16px;background:#f6f6f7;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;color:#1f1f1f;">
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="max-width:480px;margin:0 auto;background:#fff;border-radius:12px;">
<tr>
<td style="padding:32px;">
<h1 style="margin:0 0 16px;font-size:20px;line-height:28px;">Confirm your spot on the ${name} waitlist</h1>
<p style="margin:0 0 24px;font-size:15px;line-height:24px;">Thanks for your interest in ${name}. Click the button to confirm your email and join the waitlist.</p>
<a href="${url}" style="display:inline-block;padding:12px 20px;background:#f56565;color:#fff;font-size:15px;font-weight:600;text-decoration:none;border-radius:8px;">Confirm my email</a>
<p style="margin:24px 0 0;font-size:13px;line-height:20px;color:#6b6b6b;">The link is valid for 7 days. If you didn't sign up, ignore this email and nothing happens.</p>
</td>
</tr>
</table>
</body>
</html>`,
});
if (error) {
throw new Error(`Resend could not send the confirmation email: ${error.message}`);
}
}
/**
* Creates the contact, or updates it when the email is already a contact, and adds it to
* the waitlist segment and the product updates topic.
*/
export async function upsertWaitlistContact(signup: WaitlistTokenPayload) {
const resend = getResend();
const segmentId = process.env.RESEND_WAITLIST_SEGMENT_ID;
const topicId = process.env.RESEND_PRODUCT_UPDATES_TOPIC_ID;
const properties = {
product: signup.product,
use_case: signup.use_case || null,
source: 'lucide.dev',
signed_up_at: signup.signed_up_at,
};
const created = await resend.contacts.create({
email: signup.email,
unsubscribed: false,
properties,
segments: segmentId ? [{ id: segmentId }] : undefined,
topics: topicId ? [{ id: topicId, subscription: 'opt_in' }] : undefined,
});
if (!created.error) return;
// Most likely the contact already exists, e.g. someone who confirmed twice.
const updated = await resend.contacts.update({
email: signup.email,
unsubscribed: false,
properties,
});
if (updated.error) {
throw new Error(
`Resend could not create or update the contact: ${created.error.message} / ${updated.error.message}`,
);
}
// Adding to a segment or topic the contact is already in is harmless, so errors are only logged.
if (segmentId) {
const { error } = await resend.contacts.segments.add({ email: signup.email, segmentId });
if (error) console.warn('[waitlist] Could not add contact to segment:', error.message);
}
if (topicId) {
const { error } = await resend.contacts.topics.update({
email: signup.email,
topics: [{ id: topicId, subscription: 'opt_in' }],
});
if (error) console.warn('[waitlist] Could not subscribe contact to topic:', error.message);
}
}
+80
View File
@@ -0,0 +1,80 @@
import { createHmac, timingSafeEqual } from 'node:crypto';
/** How long a confirmation link stays valid. */
const TOKEN_TTL_MS = 7 * 24 * 60 * 60 * 1000;
export interface WaitlistTokenPayload {
email: string;
product: string;
use_case: string;
/** When the form was submitted, as an ISO string. */
signed_up_at: string;
/** Expiry, in milliseconds since the epoch. */
exp: number;
}
function getSecret() {
const secret = process.env.WAITLIST_TOKEN_SECRET;
if (!secret) {
throw new Error('WAITLIST_TOKEN_SECRET is not set');
}
return secret;
}
function sign(data: string) {
return createHmac('sha256', getSecret()).update(data).digest('base64url');
}
/**
* Signs the signup into the confirmation link itself, so nothing has to be stored
* until the person confirms.
*/
export function createWaitlistToken(payload: Omit<WaitlistTokenPayload, 'exp'>) {
const data = Buffer.from(JSON.stringify({ ...payload, exp: Date.now() + TOKEN_TTL_MS })).toString(
'base64url',
);
return `${data}.${sign(data)}`;
}
/**
* Returns the payload when the signature matches and the token hasn't expired.
*/
export function verifyWaitlistToken(token: string): WaitlistTokenPayload | null {
const [data, signature, ...rest] = token.split('.');
if (!data || !signature || rest.length) return null;
const expected = Buffer.from(sign(data));
const received = Buffer.from(signature);
if (expected.length !== received.length || !timingSafeEqual(expected, received)) {
return null;
}
try {
const payload = JSON.parse(Buffer.from(data, 'base64url').toString('utf-8'));
if (
typeof payload?.email !== 'string' ||
typeof payload?.product !== 'string' ||
typeof payload?.exp !== 'number' ||
payload.exp < Date.now()
) {
return null;
}
return {
email: payload.email,
product: payload.product,
use_case: typeof payload.use_case === 'string' ? payload.use_case : '',
signed_up_at:
typeof payload.signed_up_at === 'string' ? payload.signed_up_at : new Date().toISOString(),
exp: payload.exp,
};
} catch {
return null;
}
}
@@ -3,9 +3,10 @@ import { onMounted, ref } from 'vue';
import Card from '../base/Card.vue';
import WaitlistSurvey from './WaitlistSurvey.vue';
import { waitlistProducts, type WaitlistProduct } from './products';
import { track } from '../../utils/openpanel';
import './waitlist.css';
const status = ref<'pending' | 'confirmed' | 'invalid'>('pending');
const status = ref<'pending' | 'confirmed' | 'invalid' | 'error'>('pending');
const product = ref<WaitlistProduct>();
// This page is prerendered, so the query string is only available after hydration.
@@ -17,7 +18,15 @@ onMounted(() => {
productId && Object.hasOwn(waitlistProducts, productId)
? waitlistProducts[productId]
: undefined;
status.value = product.value && !params.has('status') ? 'confirmed' : 'invalid';
if (params.get('status') === 'error') {
status.value = 'error';
} else {
status.value = product.value && !params.has('status') ? 'confirmed' : 'invalid';
}
if (status.value === 'confirmed' && product.value) {
track('waitlist_confirmed', { product: product.value.id });
}
});
</script>
@@ -41,6 +50,19 @@ onMounted(() => {
:product="product"
/>
<Card
v-if="status === 'error'"
class="waitlist-card"
>
<div class="waitlist-card-header">
<h1 class="waitlist-card-title">Something went wrong</h1>
<p class="waitlist-card-description">
We couldn't confirm your email just now. Click the link in the email again in a few
minutes.
</p>
</div>
</Card>
<Card
v-if="status === 'invalid'"
class="waitlist-card"
+3
View File
@@ -16,6 +16,7 @@ import SnackPlayer from './components/editors/SnackPlayer.vue';
import Toaster from './components/base/Toaster.vue';
import { setupTracking } from './utils/openpanel';
import trackUnderlineDirection from './utils/underlineDirection';
import { initBotId } from 'botid/client/core';
const theme: Partial<Theme> = {
extends: DefaultTheme,
@@ -42,6 +43,8 @@ const theme: Partial<Theme> = {
if (!import.meta.env.SSR) {
trackUnderlineDirection();
// Attaches the invisible bot check to the waitlist form's fetch, verified in /api/waitlist.
initBotId({ protect: [{ path: '/api/waitlist', method: 'POST' }] });
}
},
};
+17
View File
@@ -1,3 +1,7 @@
// Vercel BotID loads its challenge through these first-party paths (same as `botid/nuxt`).
const BOTID_BASE = '/149e9513-01fa-4fb0-aad4-566afd725d1b/2d206a39-8ed7-437e-a3be-862e0f06eea3';
const BOTID_SERVER = 'https://api.vercel.com/bot-protection';
export default defineNitroConfig({
compatibilityDate: '2026-02-26',
preset: 'vercel',
@@ -6,6 +10,19 @@ export default defineNitroConfig({
routeRules: {
'/api/**': { cors: false },
},
vercel: {
config: {
routes: [
{ src: `^${BOTID_BASE}/a-4-a/c\\.js$`, dest: `${BOTID_SERVER}/v1/challenge` },
// Nitro's route type doesn't allow `headers` next to `dest`, Vercel's routing schema does.
{
src: `^${BOTID_BASE}/(.*)$`,
dest: `${BOTID_SERVER}/v1/proxy/$1`,
headers: { 'X-Frame-Options': 'SAMEORIGIN' },
} as { src: string; dest: string },
],
},
},
esbuild: {
options: {
jsxFactory: 'React.createElement',
+2
View File
@@ -67,6 +67,7 @@
"@vueuse/components": "^14.4.0",
"@vueuse/core": "^14.4.0",
"@vueuse/integrations": "^14.4.0",
"botid": "^1.5.13",
"element-to-path": "^1.2.1",
"fuse.js": "^7.5.0",
"jszip": "^3.10.1",
@@ -76,6 +77,7 @@
"motion-v": "2.11.0",
"react": "19.3.1",
"react-dom": "19.3.1",
"resend": "^6.38.0",
"sandpack-vue3": "3.1.12",
"vue": "^3.5.44",
"vue-sonner": "^2.0.9"
+564 -42
View File
@@ -179,6 +179,9 @@ importers:
'@vueuse/integrations':
specifier: ^14.4.0
version: 14.4.0(focus-trap@7.8.0)(fuse.js@7.5.0)(vue@3.5.44(typescript@6.0.3))
botid:
specifier: ^1.5.13
version: 1.5.13(next@16.4.1(@babel/core@7.29.7(supports-color@10.2.2))(@types/node@26.4.1)(react-dom@19.3.1(react@19.3.1))(react@19.3.1)(sass@1.107.0))(react@19.3.1)
element-to-path:
specifier: ^1.2.1
version: 1.2.1
@@ -206,6 +209,9 @@ importers:
react-dom:
specifier: 19.3.1
version: 19.3.1(react@19.3.1)
resend:
specifier: ^6.38.0
version: 6.38.0
sandpack-vue3:
specifier: 3.1.12
version: 3.1.12(vue@3.5.44(typescript@6.0.3))
@@ -214,7 +220,7 @@ importers:
version: 3.5.44(typescript@6.0.3)
vue-sonner:
specifier: ^2.0.9
version: 2.0.9
version: 2.0.9(@nuxt/kit@4.6.3(@nuxt/schema@4.6.3)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.5)(mlly@1.8.2)(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))))(@nuxt/schema@4.6.3)(nuxt@4.6.3(60a2a7448ca37a273c0ea8373995cc0e))
devDependencies:
'@docsearch/js':
specifier: 3.8.2
@@ -526,23 +532,23 @@ importers:
version: link:../../../packages/solid
'@solidjs/meta':
specifier: 1.0.0-next.2
version: 1.0.0-next.2(@solidjs/web@2.0.0-rc.20(solid-js@2.0.0-rc.20))(solid-js@2.0.0-rc.20)
version: 1.0.0-next.2(@solidjs/web@2.0.0-rc.21(solid-js@2.0.0-rc.21))(solid-js@2.0.0-rc.21)
'@solidjs/router':
specifier: 2.0.0-next.34
version: 2.0.0-next.34(@solidjs/web@2.0.0-rc.20(solid-js@2.0.0-rc.20))(filesystem-routing@0.4.0(supports-color@10.2.2)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))(solid-js@2.0.0-rc.20)
version: 2.0.0-next.34(@solidjs/web@2.0.0-rc.21(solid-js@2.0.0-rc.21))(filesystem-routing@0.4.0(supports-color@10.2.2)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))(solid-js@2.0.0-rc.21)
'@solidjs/web':
specifier: next
version: 2.0.0-rc.20(solid-js@2.0.0-rc.20)
version: 2.0.0-rc.21(solid-js@2.0.0-rc.21)
solid-js:
specifier: next
version: 2.0.0-rc.20
version: 2.0.0-rc.21
devDependencies:
'@solidjs/testing-library':
specifier: 1.0.0-rc.2
version: 1.0.0-rc.2(@solidjs/web@2.0.0-rc.20(solid-js@2.0.0-rc.20))(solid-js@2.0.0-rc.20)
version: 1.0.0-rc.2(@solidjs/web@2.0.0-rc.21(solid-js@2.0.0-rc.21))(solid-js@2.0.0-rc.21)
'@solidjs/vite-plugin':
specifier: 3.0.0-next.47
version: 3.0.0-next.47(@solidjs/web@2.0.0-rc.20(solid-js@2.0.0-rc.20))(@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.2)(vitest@5.0.5))(solid-js@2.0.0-rc.20)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
version: 3.0.0-next.47(@solidjs/web@2.0.0-rc.21(solid-js@2.0.0-rc.21))(@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.2)(vitest@5.0.5))(solid-js@2.0.0-rc.21)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
'@vitest/browser-playwright':
specifier: 5.0.5
version: 5.0.5(playwright@1.64.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))(vitest@5.0.5)
@@ -1306,19 +1312,19 @@ importers:
version: 7.1.0(@babel/core@8.0.10)(@types/babel__core@7.20.5)(rollup@4.65.1)(supports-color@10.2.2)
'@solidjs/testing-library':
specifier: next
version: 1.0.0-rc.2(@solidjs/web@2.0.0-rc.20(solid-js@2.0.0-rc.20))(solid-js@2.0.0-rc.20)
version: 1.0.0-rc.2(@solidjs/web@2.0.0-rc.21(solid-js@2.0.0-rc.21))(solid-js@2.0.0-rc.21)
'@solidjs/vite-plugin':
specifier: next
version: 3.0.0-next.35(@solidjs/web@2.0.0-rc.20(solid-js@2.0.0-rc.20))(@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.2)(vitest@5.0.5))(solid-js@2.0.0-rc.20)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
version: 3.0.0-next.35(@solidjs/web@2.0.0-rc.21(solid-js@2.0.0-rc.21))(@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.2)(vitest@5.0.5))(solid-js@2.0.0-rc.21)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
'@solidjs/web':
specifier: next
version: 2.0.0-rc.20(solid-js@2.0.0-rc.20)
version: 2.0.0-rc.21(solid-js@2.0.0-rc.21)
'@testing-library/jest-dom':
specifier: ^7.0.1
version: 7.0.1(@testing-library/dom@10.4.2)(vitest@5.0.5)
babel-preset-solid:
specifier: next
version: 2.0.0-rc.2(@babel/core@8.0.10)(solid-js@2.0.0-rc.20)
version: 2.0.0-rc.2(@babel/core@8.0.10)(solid-js@2.0.0-rc.21)
esbuild:
specifier: ^0.28.2
version: 0.28.2
@@ -1333,7 +1339,7 @@ importers:
version: 6.5.1(rollup@4.65.1)(typescript@6.0.3)
solid-js:
specifier: next
version: 2.0.0-rc.20
version: 2.0.0-rc.21
typescript:
specifier: ^6.0.3
version: 6.0.3
@@ -5831,8 +5837,8 @@ packages:
filesystem-routing:
optional: true
'@solidjs/signals@2.0.0-rc.20':
resolution: {integrity: sha512-BIL5dKm0dAtPGsCEuLSNw60spDbmYG5QFK+aHUxPIgPLweA8IeJKd62DiqqqU/jqX0x39ty31GoP1n+ZINkrcg==}
'@solidjs/signals@2.0.0-rc.21':
resolution: {integrity: sha512-F1TUMO/nd1XC//+tcaWxibOOgXBHQGmNQnAeiDnpLh+1smnlwIgKF6pc20evlyfQwqf0gP6rH4sNEqCPBNcpgg==}
engines: {node: '>=22.12.0'}
'@solidjs/start@2.0.5':
@@ -5892,15 +5898,18 @@ packages:
'@testing-library/jest-dom':
optional: true
'@solidjs/web@2.0.0-rc.20':
resolution: {integrity: sha512-ACGUZ1XBNxiHnWW274na+1JZfuIhiS/BN5XM72wVKNYSopR/NyjVPR4O/nvshtbYlEk1lKJ9d1uBaXDaz6ddYg==}
'@solidjs/web@2.0.0-rc.21':
resolution: {integrity: sha512-1E9dvR3/+5fQTI3oxxACBX2Rg4rezXgrljerhWDHR5uQZ04p5Z8qXROI7dIDJKyANtsnLKYbM2OyI/p/FmjGUA==}
engines: {node: '>=22.12.0'}
peerDependencies:
solid-js: ^2.0.0-rc.20
solid-js: ^2.0.0-rc.21
'@speed-highlight/core@1.2.24':
resolution: {integrity: sha512-qeW2e1l78afw8VhRPfPQ1Gjj+KU5XFQ/OFV5ti6eTa9bruO7mJyZtA4vw0ofqmA3tKCkROE9xLk3VZoeRc98nw==}
'@stablelib/base64@1.0.1':
resolution: {integrity: sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ==}
'@standard-schema/spec@1.1.0':
resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
@@ -7554,6 +7563,17 @@ packages:
resolution: {integrity: sha512-DkVaaQHymRhpYEYo9x1oo7Q7B0Y6KJUsjm3c9eTyFDby4MHLBTwZ6ZDWBel5zrYxj1WsZgC5oLpiz+93MluXeA==}
engines: {node: '>=20.19.0'}
botid@1.5.13:
resolution: {integrity: sha512-bd1oGgunQXOXQOctgLm/XuJKji5E8EUJdHYQAHJhJPgFeBo/mLQMeEsokO9nbrjjOZsSoKZfGHRfM/VAux44GA==}
peerDependencies:
next: '*'
react: ^18.0.0 || ^19.0.0
peerDependenciesMeta:
next:
optional: true
react:
optional: true
brace-expansion@1.1.21:
resolution: {integrity: sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==}
@@ -8736,6 +8756,9 @@ packages:
resolution: {integrity: sha512-99jPl8JkCSCa4VlboNU1XuL98ijm74Pm9CGo6H4BoMVoVh1uhguQcvwLgXDT8Vkl2qj/UEQ0J9gD8beHjTFk1w==}
hasBin: true
fast-sha256@1.3.0:
resolution: {integrity: sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==}
fast-string-truncated-width@3.0.3:
resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==}
@@ -10988,6 +11011,9 @@ packages:
resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
engines: {node: '>= 0.4'}
postal-mime@2.7.6:
resolution: {integrity: sha512-UUlyE2KlxmvwMGq060onF/VWU3zD6dVW31FwokQ5v26jWd35fbs2MoTFzh+jXnPwAyV2MULMKXcBInGOl5TO6Q==}
postcss-calc@11.2.3:
resolution: {integrity: sha512-pFW3MR2a4W7uHcSGUiyQGGXZWHon83ljbNwnUJ1mRKublWQbv+3o9NiqhlV4TJfNby+U+zLY2OgiywzhA5eFqw==}
engines: {node: ^22.22.3 || ^24.15 || >=26.0}
@@ -11331,6 +11357,15 @@ packages:
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
engines: {node: '>=0.10.0'}
resend@6.38.0:
resolution: {integrity: sha512-+t1bz6unmYcyYrLqrZtkn73ODZhUgKJTViuRf+a4ewgo3mT/Bpg64WkBtAVQlXQcmUkeuorO1eLAd2+1h4jgNQ==}
engines: {node: '>=20'}
peerDependencies:
'@react-email/render': '*'
peerDependenciesMeta:
'@react-email/render':
optional: true
resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
@@ -11990,8 +12025,8 @@ packages:
solid-js@1.9.18:
resolution: {integrity: sha512-CHGO5YFk6Y9m/1YSxVtKnXfrW7JD3Tmof8HmR4z6TmCPsS8efo8LnzIR8CQh3cUvffqYm6DWyBFfk8dQw1CNQQ==}
solid-js@2.0.0-rc.20:
resolution: {integrity: sha512-FxaEI7LHupehFoR9j2CfJAGCoRgiKgeNlzii4szUS6lnD8RkpdtvX1k6WFG71vl5bskXRRsmEQVAXsbIemQOuw==}
solid-js@2.0.0-rc.21:
resolution: {integrity: sha512-0Z8/qiJKnK6A2g8QspGthwxR0W8WauMOD2/LQtNmxBT8gpZkKaXmo/fdek/+cB+84w4HYejWJixSAn4fcAI0Uw==}
engines: {node: '>=22.12.0'}
solid-refresh@0.6.3:
@@ -12097,6 +12132,9 @@ packages:
standard-as-callback@2.1.0:
resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==}
standardwebhooks@1.1.1:
resolution: {integrity: sha512-bCbX9ZEyFkWPsRz7Bl3NuQUJohmwGSev/yhr7vhaGPlc4AfIrspIRa6cPTBuI1ItmrTDJ4d/S2hCsfe4+vQGnQ==}
static-browser-server@1.0.3:
resolution: {integrity: sha512-ZUyfgGDdFRbZGGJQ1YhiM930Yczz5VlbJObrQLlk24+qNHVQx4OlLcYswEUo3bIyNAbQUIUR9Yr5/Hqjzqb4zA==}
@@ -16726,6 +16764,77 @@ snapshots:
pkg-types: 2.4.0
semver: 7.8.5
'@nuxt/devtools@3.4.4(@nuxt/schema@4.6.3)(@vercel/blob@2.8.0)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(giget@3.3.1)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(magic-string@1.4.5)(mlly@1.8.2)(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))(vue@3.5.44(typescript@6.0.3))':
dependencies:
'@nuxt/devtools-kit': 3.4.4(@nuxt/schema@4.6.3)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.5)(mlly@1.8.2)(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
'@nuxt/devtools-wizard': 3.4.4
'@nuxt/kit': 4.6.3(@nuxt/schema@4.6.3)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.5)(mlly@1.8.2)(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))
'@vue/devtools-core': 8.2.1(vue@3.5.44(typescript@6.0.3))
'@vue/devtools-kit': 8.2.1
birpc: 4.2.0
consola: 3.4.2
destr: 2.0.5
error-stack-parser-es: 2.0.1
execa: 8.0.1
fast-npm-meta: 2.2.0
get-port-please: 3.2.0
hookable: 6.1.2
image-meta: 0.3.0
is-installed-globally: 1.0.1
launch-editor: 2.14.2
local-pkg: 1.2.1
magicast: 0.5.5
ohash: 2.0.12
package-manager-detector: 1.9.0
pathe: 2.0.3
perfect-debounce: 2.1.0
pkg-types: 2.4.0
semver: 7.8.5
sirv: 3.0.2
structured-clone-es: 2.0.1
tinyexec: 1.3.1
tinyglobby: 0.2.17
unstorage: 1.17.6(@vercel/blob@2.8.0)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2))
vite: 8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)
vite-plugin-inspect: 11.4.1(@nuxt/kit@4.6.3(@nuxt/schema@4.6.3)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.5)(mlly@1.8.2)(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))))(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
vite-plugin-vue-tracer: 1.5.0(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))(vue@3.5.44(typescript@6.0.3))
which: 6.0.1
ws: 8.22.0
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
- '@azure/data-tables'
- '@azure/identity'
- '@azure/keyvault-secrets'
- '@azure/storage-blob'
- '@capacitor/preferences'
- '@deno/kv'
- '@netlify/blobs'
- '@nuxt/schema'
- '@planetscale/database'
- '@upstash/redis'
- '@vercel/blob'
- '@vercel/functions'
- '@vercel/kv'
- aws4fetch
- bufferutil
- confbox
- db0
- dotenv
- giget
- idb-keyval
- ioredis
- jiti
- magic-string
- mlly
- oxc-parser
- rolldown
- unplugin
- uploadthing
- utf-8-validate
- vue
optional: true
'@nuxt/devtools@3.4.4(@nuxt/schema@4.6.3)(@vercel/blob@2.8.0)(confbox@0.3.1)(db0@0.4.1)(dotenv@17.4.2)(giget@3.3.1)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(magic-string@1.4.5)(mlly@1.8.2)(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))(vue@3.5.44(typescript@6.0.3))':
dependencies:
'@nuxt/devtools-kit': 3.4.4(@nuxt/schema@4.6.3)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.5)(mlly@1.8.2)(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
@@ -16829,6 +16938,101 @@ snapshots:
- magic-string
- unplugin
'@nuxt/nitro-server@4.6.3(060109649bb46c9e9ea558f3c0a20c21)':
dependencies:
'@nuxt/kit': 4.6.3(@nuxt/schema@4.6.3)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.5)(mlly@1.8.2)(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))
'@unhead/vue': 3.4.3(@oxc-project/types@0.156.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.150.0)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))(vue@3.5.44(typescript@6.0.3))
consola: 3.4.2
defu: 6.1.7
destr: 2.0.5
devalue: 6.0.3
errx: 0.2.2
escape-string-regexp: 5.0.0
exsolve: 1.2.0
flru: 1.0.2
h3: 1.15.11
impound: 1.2.1(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
klona: 2.0.6
mocked-exports: 0.1.1
my-bad: 0.2.11(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
nitropack: 2.13.5(@parcel/watcher@2.6.0)(@vercel/blob@2.8.0)(encoding@0.1.13)(oxc-parser@0.150.0)(rolldown@1.2.16)(srvx@1.0.5)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))(xml2js@0.6.2)
nostics: 1.3.0
nuxt: 4.6.3(60a2a7448ca37a273c0ea8373995cc0e)
ohash: 2.0.12
pathe: 2.0.3
radix3: 1.1.2
rou3: 0.9.2
std-env: 4.3.0
ufo: 1.6.4
unctx: 3.0.1(magic-string@1.4.5)(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))
unrouting: 0.3.1
unstorage: 1.17.6(@vercel/blob@2.8.0)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2))
vue: 3.5.44(typescript@6.0.3)
vue-bundle-renderer: 2.4.0
vue-devtools-stub: 0.1.0
optionalDependencies:
'@babel/plugin-syntax-typescript': 8.0.3(@babel/core@7.29.7(supports-color@10.2.2))
'@rollup/plugin-babel': 7.1.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/babel__core@7.20.5)(rollup@4.65.1)(supports-color@10.2.2)
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
- '@azure/data-tables'
- '@azure/identity'
- '@azure/keyvault-secrets'
- '@azure/storage-blob'
- '@capacitor/preferences'
- '@deno/kv'
- '@electric-sql/pglite'
- '@farmfe/core'
- '@libsql/client'
- '@netlify/blobs'
- '@nuxt/schema'
- '@oxc-project/types'
- '@parcel/watcher'
- '@planetscale/database'
- '@rsbuild/core'
- '@rspack/core'
- '@unhead/cli'
- '@upstash/redis'
- '@vercel/blob'
- '@vercel/functions'
- '@vercel/kv'
- '@vitejs/devtools-kit'
- aws4fetch
- bare-abort-controller
- bare-buffer
- better-sqlite3
- bun-types-no-globals
- confbox
- db0
- dotenv
- drizzle-orm
- encoding
- esbuild
- giget
- idb-keyval
- ioredis
- jiti
- lightningcss
- magic-string
- mlly
- mysql2
- oxc-parser
- react-native-b4a
- rolldown
- rollup
- sqlite3
- srvx
- supports-color
- typescript
- unloader
- unplugin
- uploadthing
- vite
- webpack
- xml2js
optional: true
'@nuxt/nitro-server@4.6.3(980a5de518d2cbd79c0b54a8c8959b6d)':
dependencies:
'@nuxt/kit': 4.6.3(@nuxt/schema@4.6.3)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.5)(mlly@1.8.2)(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))
@@ -16940,6 +17144,81 @@ snapshots:
rc9: 3.1.0
std-env: 4.3.0
'@nuxt/vite-builder@4.6.3(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.3)(@types/node@26.4.1)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(giget@3.3.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(magic-string@1.4.5)(meow@14.1.0)(mlly@1.8.2)(nuxt@4.6.3(60a2a7448ca37a273c0ea8373995cc0e))(optionator@0.9.4)(oxc-parser@0.150.0)(rolldown@1.2.16)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.16)(rollup@4.65.1))(rollup@4.65.1)(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(supports-color@10.2.2)(terser@5.51.2)(typescript@6.0.3)(vue-tsc@3.3.11(typescript@6.0.3))(vue@3.5.44(typescript@6.0.3))(yaml@2.9.1)':
dependencies:
'@nuxt/kit': 4.6.3(@nuxt/schema@4.6.3)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.5)(mlly@1.8.2)(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))
'@vitejs/plugin-vue': 6.0.10(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))(vue@3.5.44(typescript@6.0.3))
'@vitejs/plugin-vue-jsx': 5.1.6(supports-color@10.2.2)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))(vue@3.5.44(typescript@6.0.3))
autoprefixer: 10.6.1(postcss@8.5.32)
clickable-path: 0.1.1
consola: 3.4.2
cssnano: 9.9.0(postcss@8.5.32)
defu: 6.1.7
escape-string-regexp: 5.0.0
exsolve: 1.2.0
generic-names: 4.0.0
get-port-please: 3.2.0
js-tokens: 10.0.0
knitwork: 1.3.0
mocked-exports: 0.1.1
my-bad: 0.2.11(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
nuxt: 4.6.3(60a2a7448ca37a273c0ea8373995cc0e)
pathe: 2.0.3
pkg-types: 2.4.0
postcss: 8.5.32
rolldown-string: 0.3.1(rolldown@1.2.16)
seroval: 1.7.6
std-env: 4.3.0
ufo: 1.6.4
unenv: 2.0.0-rc.24
unplugin: 3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
vite: 8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)
vite-node: 6.0.0(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)
vite-plugin-checker: 0.14.5(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(meow@14.1.0)(optionator@0.9.4)(typescript@6.0.3)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))(vue-tsc@3.3.11(typescript@6.0.3))
vue: 3.5.44(typescript@6.0.3)
vue-bundle-renderer: 2.4.0
optionalDependencies:
'@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
rolldown: 1.2.16
rollup-plugin-visualizer: 7.1.1(rolldown@1.2.16)(rollup@4.65.1)
transitivePeerDependencies:
- '@biomejs/biome'
- '@farmfe/core'
- '@nuxt/schema'
- '@rsbuild/core'
- '@rspack/core'
- '@types/node'
- '@vitejs/devtools'
- bun-types-no-globals
- confbox
- dotenv
- esbuild
- eslint
- giget
- jiti
- less
- magic-string
- meow
- mlly
- optionator
- oxc-parser
- oxlint
- rollup
- sass
- sass-embedded
- stylelint
- stylus
- sugarss
- supports-color
- terser
- tsx
- typescript
- unloader
- vue-tsc
- webpack
- yaml
optional: true
'@nuxt/vite-builder@4.6.3(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.3)(@types/node@26.4.1)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(giget@3.3.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(magic-string@1.4.5)(meow@14.1.0)(mlly@1.8.2)(nuxt@4.6.3(678d193107555a89b137fff1c862652d))(optionator@0.9.4)(oxc-parser@0.150.0)(rolldown@1.2.16)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.16)(rollup@4.65.1))(rollup@4.65.1)(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(supports-color@10.2.2)(terser@5.51.2)(typescript@6.0.3)(vue-tsc@3.3.11(typescript@6.0.3))(vue@3.5.44(typescript@6.0.3))(yaml@2.9.1)':
dependencies:
'@nuxt/kit': 4.6.3(@nuxt/schema@4.6.3)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.5)(mlly@1.8.2)(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))
@@ -17014,6 +17293,34 @@ snapshots:
- webpack
- yaml
'@nuxt/vite-server@4.6.3(@nuxt/schema@4.6.3)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.5)(mlly@1.8.2)(nuxt@4.6.3(60a2a7448ca37a273c0ea8373995cc0e))(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))':
dependencies:
'@nuxt/kit': 4.6.3(@nuxt/schema@4.6.3)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.5)(mlly@1.8.2)(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))
clickable-path: 0.1.1
defu: 6.1.7
exsolve: 1.2.0
mocked-exports: 0.1.1
my-bad: 0.2.11(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
nuxt: 4.6.3(60a2a7448ca37a273c0ea8373995cc0e)
pathe: 2.0.3
rou3: 0.9.2
srvx: 1.0.5
ufo: 1.6.4
ultrahtml: 1.7.0
vite: 8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)
transitivePeerDependencies:
- '@nuxt/schema'
- confbox
- dotenv
- giget
- jiti
- magic-string
- mlly
- oxc-parser
- rolldown
- unplugin
optional: true
'@nuxt/vite-server@4.6.3(@nuxt/schema@4.6.3)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.5)(mlly@1.8.2)(nuxt@4.6.3(678d193107555a89b137fff1c862652d))(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))':
dependencies:
'@nuxt/kit': 4.6.3(@nuxt/schema@4.6.3)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.5)(mlly@1.8.2)(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))
@@ -18101,23 +18408,23 @@ snapshots:
dependencies:
solid-js: 1.9.18
'@solidjs/meta@1.0.0-next.2(@solidjs/web@2.0.0-rc.20(solid-js@2.0.0-rc.20))(solid-js@2.0.0-rc.20)':
'@solidjs/meta@1.0.0-next.2(@solidjs/web@2.0.0-rc.21(solid-js@2.0.0-rc.21))(solid-js@2.0.0-rc.21)':
dependencies:
'@solidjs/web': 2.0.0-rc.20(solid-js@2.0.0-rc.20)
solid-js: 2.0.0-rc.20
'@solidjs/web': 2.0.0-rc.21(solid-js@2.0.0-rc.21)
solid-js: 2.0.0-rc.21
'@solidjs/router@1.0.0(solid-js@1.9.18)':
dependencies:
solid-js: 1.9.18
'@solidjs/router@2.0.0-next.34(@solidjs/web@2.0.0-rc.20(solid-js@2.0.0-rc.20))(filesystem-routing@0.4.0(supports-color@10.2.2)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))(solid-js@2.0.0-rc.20)':
'@solidjs/router@2.0.0-next.34(@solidjs/web@2.0.0-rc.21(solid-js@2.0.0-rc.21))(filesystem-routing@0.4.0(supports-color@10.2.2)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))(solid-js@2.0.0-rc.21)':
dependencies:
'@solidjs/web': 2.0.0-rc.20(solid-js@2.0.0-rc.20)
solid-js: 2.0.0-rc.20
'@solidjs/web': 2.0.0-rc.21(solid-js@2.0.0-rc.21)
solid-js: 2.0.0-rc.21
optionalDependencies:
filesystem-routing: 0.4.0(supports-color@10.2.2)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
'@solidjs/signals@2.0.0-rc.20': {}
'@solidjs/signals@2.0.0-rc.21': {}
'@solidjs/start@2.0.5(@solidjs/router@1.0.0(solid-js@1.9.18))(@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.2)(vitest@5.0.5))(crossws@0.4.12(srvx@1.0.5))(ocache@0.3.0)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))':
dependencies:
@@ -18162,22 +18469,22 @@ snapshots:
optionalDependencies:
'@solidjs/router': 1.0.0(solid-js@1.9.18)
'@solidjs/testing-library@1.0.0-rc.2(@solidjs/web@2.0.0-rc.20(solid-js@2.0.0-rc.20))(solid-js@2.0.0-rc.20)':
'@solidjs/testing-library@1.0.0-rc.2(@solidjs/web@2.0.0-rc.21(solid-js@2.0.0-rc.21))(solid-js@2.0.0-rc.21)':
dependencies:
'@solidjs/web': 2.0.0-rc.20(solid-js@2.0.0-rc.20)
'@solidjs/web': 2.0.0-rc.21(solid-js@2.0.0-rc.21)
'@testing-library/dom': 10.4.2
solid-js: 2.0.0-rc.20
solid-js: 2.0.0-rc.21
'@solidjs/vite-plugin@3.0.0-next.35(@solidjs/web@2.0.0-rc.20(solid-js@2.0.0-rc.20))(@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.2)(vitest@5.0.5))(solid-js@2.0.0-rc.20)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))':
'@solidjs/vite-plugin@3.0.0-next.35(@solidjs/web@2.0.0-rc.21(solid-js@2.0.0-rc.21))(@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.2)(vitest@5.0.5))(solid-js@2.0.0-rc.21)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))':
dependencies:
'@ampproject/remapping': 2.3.0
'@babel/core': 7.29.7(supports-color@10.2.2)
'@solidjs/babel-plugin': 2.0.0-rc.13(@babel/core@7.29.7(supports-color@10.2.2))
'@solidjs/compiler': 2.0.0-rc.13
'@solidjs/web': 2.0.0-rc.20(solid-js@2.0.0-rc.20)
'@solidjs/web': 2.0.0-rc.21(solid-js@2.0.0-rc.21)
'@types/babel__core': 7.20.5
merge-anything: 5.1.7
solid-js: 2.0.0-rc.20
solid-js: 2.0.0-rc.21
vite: 8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)
vitefu: 1.1.3(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
optionalDependencies:
@@ -18186,16 +18493,16 @@ snapshots:
- '@tsrx/core'
- supports-color
'@solidjs/vite-plugin@3.0.0-next.47(@solidjs/web@2.0.0-rc.20(solid-js@2.0.0-rc.20))(@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.2)(vitest@5.0.5))(solid-js@2.0.0-rc.20)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))':
'@solidjs/vite-plugin@3.0.0-next.47(@solidjs/web@2.0.0-rc.21(solid-js@2.0.0-rc.21))(@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.2)(vitest@5.0.5))(solid-js@2.0.0-rc.21)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))':
dependencies:
'@ampproject/remapping': 2.3.0
'@babel/core': 7.29.7(supports-color@10.2.2)
'@solidjs/babel-plugin': 2.0.0-rc.13(@babel/core@7.29.7(supports-color@10.2.2))
'@solidjs/compiler': 2.0.0-rc.13
'@solidjs/web': 2.0.0-rc.20(solid-js@2.0.0-rc.20)
'@solidjs/web': 2.0.0-rc.21(solid-js@2.0.0-rc.21)
'@types/babel__core': 7.20.5
merge-anything: 5.1.7
solid-js: 2.0.0-rc.20
solid-js: 2.0.0-rc.21
vite: 8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)
vitefu: 1.1.3(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
optionalDependencies:
@@ -18204,14 +18511,16 @@ snapshots:
- '@tsrx/core'
- supports-color
'@solidjs/web@2.0.0-rc.20(solid-js@2.0.0-rc.20)':
'@solidjs/web@2.0.0-rc.21(solid-js@2.0.0-rc.21)':
dependencies:
seroval: 1.7.0
seroval-plugins: 1.7.0(seroval@1.7.0)
solid-js: 2.0.0-rc.20
solid-js: 2.0.0-rc.21
'@speed-highlight/core@1.2.24': {}
'@stablelib/base64@1.0.1': {}
'@standard-schema/spec@1.1.0': {}
'@stitches/core@1.2.8': {}
@@ -20050,12 +20359,12 @@ snapshots:
optionalDependencies:
solid-js: 1.9.18
babel-preset-solid@2.0.0-rc.2(@babel/core@8.0.10)(solid-js@2.0.0-rc.20):
babel-preset-solid@2.0.0-rc.2(@babel/core@8.0.10)(solid-js@2.0.0-rc.21):
dependencies:
'@babel/core': 8.0.10
'@dom-expressions/babel-plugin-jsx': 0.50.0-next.44(@babel/core@8.0.10)
optionalDependencies:
solid-js: 2.0.0-rc.20
solid-js: 2.0.0-rc.21
bail@2.0.2: {}
@@ -20151,6 +20460,11 @@ snapshots:
boolbase@2.0.0: {}
botid@1.5.13(next@16.4.1(@babel/core@7.29.7(supports-color@10.2.2))(@types/node@26.4.1)(react-dom@19.3.1(react@19.3.1))(react@19.3.1)(sass@1.107.0))(react@19.3.1):
optionalDependencies:
next: 16.4.1(@babel/core@7.29.7(supports-color@10.2.2))(@types/node@26.4.1)(react-dom@19.3.1(react@19.3.1))(react@19.3.1)(sass@1.107.0)
react: 19.3.1
brace-expansion@1.1.21:
dependencies:
balanced-match: 1.0.2
@@ -21484,6 +21798,8 @@ snapshots:
dependencies:
cac: 7.0.0
fast-sha256@1.3.0: {}
fast-string-truncated-width@3.0.3: {}
fast-string-width@3.0.2:
@@ -23443,6 +23759,33 @@ snapshots:
neotraverse@1.0.1: {}
next@16.4.1(@babel/core@7.29.7(supports-color@10.2.2))(@types/node@26.4.1)(react-dom@19.3.1(react@19.3.1))(react@19.3.1)(sass@1.107.0):
dependencies:
'@next/env': 16.4.1
'@swc/helpers': 0.5.23
baseline-browser-mapping: 2.11.34
caniuse-lite: 1.0.30001820
postcss: 8.5.23
react: 19.3.1
react-dom: 19.3.1(react@19.3.1)
styled-jsx: 5.1.6(@babel/core@7.29.7(supports-color@10.2.2))(react@19.3.1)
optionalDependencies:
'@next/swc-darwin-arm64': 16.4.1
'@next/swc-darwin-x64': 16.4.1
'@next/swc-linux-arm64-gnu': 16.4.1
'@next/swc-linux-arm64-musl': 16.4.1
'@next/swc-linux-x64-gnu': 16.4.1
'@next/swc-linux-x64-musl': 16.4.1
'@next/swc-win32-arm64-msvc': 16.4.1
'@next/swc-win32-x64-msvc': 16.4.1
sass: 1.107.0
sharp: 0.35.5(@types/node@26.4.1)
transitivePeerDependencies:
- '@babel/core'
- '@types/node'
- babel-plugin-macros
optional: true
next@16.4.1(@babel/core@8.0.10)(@types/node@26.4.1)(react-dom@19.3.1(react@19.3.1))(react@19.3.1)(sass@1.107.0):
dependencies:
'@next/env': 16.4.1
@@ -23752,6 +24095,161 @@ snapshots:
optionalDependencies:
chokidar: 3.6.0
nuxt@4.6.3(60a2a7448ca37a273c0ea8373995cc0e):
dependencies:
'@dxup/nuxt': 0.5.10(@nuxt/schema@4.6.3)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.3.1)(jiti@2.7.0)(mlly@1.8.2)(oxc-parser@0.150.0)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
'@jridgewell/trace-mapping': 0.3.31
'@nuxt/cli': 4.0.1(@nuxt/schema@4.6.3)(jiti@2.7.0)(oxc-parser@0.150.0)(rolldown@1.2.16)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
'@nuxt/devalue': 2.0.2
'@nuxt/devtools': 3.4.4(@nuxt/schema@4.6.3)(@vercel/blob@2.8.0)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(giget@3.3.1)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(magic-string@1.4.5)(mlly@1.8.2)(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))(vue@3.5.44(typescript@6.0.3))
'@nuxt/kit': 4.6.3(@nuxt/schema@4.6.3)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.5)(mlly@1.8.2)(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))
'@nuxt/nitro-server': 4.6.3(060109649bb46c9e9ea558f3c0a20c21)
'@nuxt/schema': 4.6.3
'@nuxt/telemetry': 2.9.1(@nuxt/kit@4.6.3(@nuxt/schema@4.6.3)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.5)(mlly@1.8.2)(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))))
'@nuxt/vite-builder': 4.6.3(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.3)(@types/node@26.4.1)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2))(giget@3.3.1)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(magic-string@1.4.5)(meow@14.1.0)(mlly@1.8.2)(nuxt@4.6.3(60a2a7448ca37a273c0ea8373995cc0e))(optionator@0.9.4)(oxc-parser@0.150.0)(rolldown@1.2.16)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.16)(rollup@4.65.1))(rollup@4.65.1)(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(supports-color@10.2.2)(terser@5.51.2)(typescript@6.0.3)(vue-tsc@3.3.11(typescript@6.0.3))(vue@3.5.44(typescript@6.0.3))(yaml@2.9.1)
'@nuxt/vite-server': 4.6.3(@nuxt/schema@4.6.3)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.5)(mlly@1.8.2)(nuxt@4.6.3(60a2a7448ca37a273c0ea8373995cc0e))(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
'@unhead/vue': 3.4.3(@oxc-project/types@0.156.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.150.0)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))(vue@3.5.44(typescript@6.0.3))
'@vue/shared': 3.5.44
chokidar: 5.0.0
clickable-path: 0.1.1
compatx: 0.2.0
consola: 3.4.2
cookie-es: 3.1.1
defu: 6.1.7
destr: 2.0.5
devalue: 6.0.3
errx: 0.2.2
escape-string-regexp: 5.0.0
exsolve: 1.2.0
fetchdts: 0.2.0
fnv1a-64: 0.1.2
hookable: 6.1.2
ignore: 7.0.14
impound: 1.2.1(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
iron-webcrypto: 2.0.0
jiti: 2.7.0
klona: 2.0.6
knitwork: 1.3.0
magic-string: 1.4.5
my-bad: 0.2.11(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
nanotar: 0.3.0
nostics: 1.3.0
object-identity: 0.2.3
ofetch: 1.5.1
ohash: 2.0.12
on-change: 6.0.2
oxc-walker: 1.1.1(@oxc-project/types@0.156.0)(oxc-parser@0.150.0)(rolldown@1.2.16)
pathe: 2.0.3
perfect-debounce: 2.1.0
picomatch: 4.0.7
pkg-types: 2.4.0
rolldown: 1.2.16
rolldown-string: 0.3.1(rolldown@1.2.16)
rou3: 0.9.2
scule: 1.3.0
std-env: 4.3.0
tinyglobby: 0.2.17
ufo: 1.6.4
ultrahtml: 1.7.0
uncrypto: 0.1.3
unctx: 3.0.1(magic-string@1.4.5)(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))
undici: 8.12.3
unhead: 3.4.3(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
unimport: 7.0.2(acorn@8.19.0)(esbuild@0.28.2)(oxc-parser@0.150.0)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
unplugin: 3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
unrouting: 0.3.1
untyped: 2.0.0
verkit: 0.5.0
vue: 3.5.44(typescript@6.0.3)
vue-bundle-renderer: 2.4.0
vue-component-type-helpers: 3.3.13
vue-router: 5.4.0(@vue/compiler-sfc@3.5.44)(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))(vue@3.5.44(typescript@6.0.3))
optionalDependencies:
'@parcel/watcher': 2.6.0
'@types/node': 26.4.1
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
- '@azure/data-tables'
- '@azure/identity'
- '@azure/keyvault-secrets'
- '@azure/storage-blob'
- '@babel/plugin-proposal-decorators'
- '@babel/plugin-syntax-jsx'
- '@babel/plugin-syntax-typescript'
- '@biomejs/biome'
- '@capacitor/preferences'
- '@deno/kv'
- '@electric-sql/pglite'
- '@farmfe/core'
- '@libsql/client'
- '@netlify/blobs'
- '@nuxt/docs'
- '@oxc-project/types'
- '@pinia/colada'
- '@planetscale/database'
- '@rollup/plugin-babel'
- '@rsbuild/core'
- '@rspack/core'
- '@unhead/cli'
- '@upstash/redis'
- '@vercel/blob'
- '@vercel/functions'
- '@vercel/kv'
- '@vitejs/devtools'
- '@vitejs/devtools-kit'
- '@vue/compiler-sfc'
- acorn
- aws4fetch
- bare-abort-controller
- bare-buffer
- better-sqlite3
- bufferutil
- bun-types-no-globals
- confbox
- db0
- dotenv
- drizzle-orm
- encoding
- esbuild
- eslint
- giget
- idb-keyval
- ioredis
- less
- lightningcss
- meow
- mlly
- mysql2
- optionator
- oxc-parser
- oxlint
- pinia
- react-native-b4a
- rollup
- rollup-plugin-visualizer
- sass
- sass-embedded
- serve
- sqlite3
- srvx
- stylelint
- stylus
- sugarss
- supports-color
- terser
- tsx
- typescript
- unloader
- uploadthing
- utf-8-validate
- vite
- vue-tsc
- webpack
- xml2js
- yaml
optional: true
nuxt@4.6.3(678d193107555a89b137fff1c862652d):
dependencies:
'@dxup/nuxt': 0.5.10(@nuxt/schema@4.6.3)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.3.1)(jiti@2.7.0)(mlly@1.8.2)(oxc-parser@0.150.0)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))
@@ -24376,6 +24874,8 @@ snapshots:
possible-typed-array-names@1.1.0: {}
postal-mime@2.7.6: {}
postcss-calc@11.2.3(postcss@8.5.32):
dependencies:
'@csstools/css-tokenizer': 4.0.2
@@ -24748,6 +25248,11 @@ snapshots:
require-from-string@2.0.2: {}
resend@6.38.0:
dependencies:
postal-mime: 2.7.6
standardwebhooks: 1.1.1
resolve-from@4.0.0: {}
resolve-from@5.0.0: {}
@@ -25553,9 +26058,9 @@ snapshots:
seroval: 1.6.12
seroval-plugins: 1.6.12(seroval@1.6.12)
solid-js@2.0.0-rc.20:
solid-js@2.0.0-rc.21:
dependencies:
'@solidjs/signals': 2.0.0-rc.20
'@solidjs/signals': 2.0.0-rc.21
csstype: 3.2.3
seroval: 1.7.0
seroval-plugins: 1.7.0(seroval@1.7.0)
@@ -25647,6 +26152,11 @@ snapshots:
standard-as-callback@2.1.0: {}
standardwebhooks@1.1.1:
dependencies:
'@stablelib/base64': 1.0.1
fast-sha256: 1.3.0
static-browser-server@1.0.3:
dependencies:
'@open-draft/deferred-promise': 2.2.0
@@ -25775,6 +26285,14 @@ snapshots:
style-mod@4.1.3: {}
styled-jsx@5.1.6(@babel/core@7.29.7(supports-color@10.2.2))(react@19.3.1):
dependencies:
client-only: 0.0.1
react: 19.3.1
optionalDependencies:
'@babel/core': 7.29.7(supports-color@10.2.2)
optional: true
styled-jsx@5.1.6(@babel/core@8.0.10)(react@19.3.1):
dependencies:
client-only: 0.0.1
@@ -27115,7 +27633,11 @@ snapshots:
- unloader
- webpack
vue-sonner@2.0.9: {}
vue-sonner@2.0.9(@nuxt/kit@4.6.3(@nuxt/schema@4.6.3)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.5)(mlly@1.8.2)(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1))))(@nuxt/schema@4.6.3)(nuxt@4.6.3(60a2a7448ca37a273c0ea8373995cc0e)):
optionalDependencies:
'@nuxt/kit': 4.6.3(@nuxt/schema@4.6.3)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.5)(mlly@1.8.2)(oxc-parser@0.150.0)(rolldown@1.2.16)(unplugin@3.7.0(esbuild@0.28.2)(rolldown@1.2.16)(rollup@4.65.1)(vite@8.3.5(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(sass-embedded@1.107.0)(sass@1.107.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.51.2)(yaml@2.9.1)))
'@nuxt/schema': 4.6.3
nuxt: 4.6.3(60a2a7448ca37a273c0ea8373995cc0e)
vue-tsc@3.3.11(typescript@6.0.3):
dependencies: