From 7d443a004a970955042dba47bd7a2129f98dadf4 Mon Sep 17 00:00:00 2001 From: Madhura68 Date: Sat, 18 Apr 2026 14:18:26 +0200 Subject: [PATCH] feat: initial commit --- .env | 3 + .env.example | 2 + .env.local | 2 + .gitignore | 9 + .nvmrc | 1 + .vscode/settings.json | 15 + README.md | 50 + app/auth-actions.ts | 101 + app/auth/confirm/route.ts | 34 + app/dashboard/page.tsx | 204 + app/globals.css | 153 + app/layout.tsx | 24 + app/login/page.tsx | 96 + app/onboarding/actions.ts | 39 + app/onboarding/page.tsx | 37 + app/page.tsx | 196 + app/settings/actions.ts | 31 + app/settings/page.tsx | 138 + app/sign-up/page.tsx | 96 + components.json | 25 + components/auth/auth-notice.tsx | 25 + components/auth/auth-panel.tsx | 64 + components/onboarding/onboarding-flow.tsx | 292 + components/settings/settings-form.tsx | 217 + components/ui/button.tsx | 58 + docs/README.md | 53 + .../backlog/generate_linear_backlog_assets.py | 332 + docs/backlog/inspannings-monitor-backlog.csv | 53 + docs/backlog/inspannings-monitor-backlog.md | 160 + ...nnings-monitor-linear-eerste-30-minuten.md | 110 + ...annings-monitor-linear-import-checklist.md | 185 + ...spannings-monitor-linear-import-issues.csv | 431 + .../inspannings-monitor-linear-projects.csv | 10 + .../inspannings-monitor-linear-projects.md | 121 + .../inspannings-monitor-linear-setup.md | 112 + ...-01-productkader-en-positionering-v05.docx | Bin 0 -> 40525 bytes ...e-02-functionele-specificatie-mvp-v05.docx | Bin 0 -> 40687 bytes ...-privacy-security-safety-baseline-v01.docx | Bin 0 -> 41157 bytes ...-04-roadmap-wellness-naar-medisch-v01.docx | Bin 0 -> 39744 bytes docs/generate_inspannings_monitor_docs.py | 1207 ++ ...-01-productkader-en-positionering-v06.docx | Bin 0 -> 40445 bytes ...r-02-functionele-specificatie-mvp-v06.docx | Bin 0 -> 41048 bytes ...-privacy-security-safety-baseline-v02.docx | Bin 0 -> 41520 bytes ...-04-roadmap-wellness-naar-medisch-v02.docx | Bin 0 -> 40018 bytes ...che-architectuur-en-implementatie-v01.docx | Bin 0 -> 43028 bytes ...r-06-implementatieplan-en-backlog-v01.docx | Bin 0 -> 42462 bytes ...pecificatie-verbeteradvies-2026-04-17.docx | Bin 0 -> 50913 bytes eslint.config.mjs | 5 + lib/auth/messages.ts | 71 + lib/auth/navigation.ts | 41 + lib/auth/session.ts | 64 + lib/onboarding/options.ts | 28 + lib/profile/service.ts | 385 + lib/profile/types.ts | 44 + lib/supabase/client.ts | 15 + lib/supabase/config.ts | 22 + lib/supabase/proxy.ts | 40 + lib/supabase/server.ts | 26 + lib/utils.ts | 6 + next.config.ts | 7 + package-lock.json | 10056 ++++++++++++++++ package.json | 39 + postcss.config.mjs | 7 + proxy.ts | 12 + supabase/.temp/cli-latest | 1 + supabase/.temp/gotrue-version | 1 + supabase/.temp/linked-project.json | 1 + supabase/.temp/pooler-url | 1 + supabase/.temp/postgres-version | 1 + supabase/.temp/project-ref | 1 + supabase/.temp/rest-version | 1 + supabase/.temp/storage-migration | 1 + supabase/.temp/storage-version | 1 + ...260418_add_onboarding_seen_to_profiles.sql | 7 + ...0418_create_profiles_and_user_settings.sql | 93 + tsconfig.json | 41 + 76 files changed, 15704 insertions(+) create mode 100644 .env create mode 100644 .env.example create mode 100644 .env.local create mode 100644 .gitignore create mode 100644 .nvmrc create mode 100644 .vscode/settings.json create mode 100644 README.md create mode 100644 app/auth-actions.ts create mode 100644 app/auth/confirm/route.ts create mode 100644 app/dashboard/page.tsx create mode 100644 app/globals.css create mode 100644 app/layout.tsx create mode 100644 app/login/page.tsx create mode 100644 app/onboarding/actions.ts create mode 100644 app/onboarding/page.tsx create mode 100644 app/page.tsx create mode 100644 app/settings/actions.ts create mode 100644 app/settings/page.tsx create mode 100644 app/sign-up/page.tsx create mode 100644 components.json create mode 100644 components/auth/auth-notice.tsx create mode 100644 components/auth/auth-panel.tsx create mode 100644 components/onboarding/onboarding-flow.tsx create mode 100644 components/settings/settings-form.tsx create mode 100644 components/ui/button.tsx create mode 100644 docs/README.md create mode 100644 docs/backlog/generate_linear_backlog_assets.py create mode 100644 docs/backlog/inspannings-monitor-backlog.csv create mode 100644 docs/backlog/inspannings-monitor-backlog.md create mode 100644 docs/backlog/inspannings-monitor-linear-eerste-30-minuten.md create mode 100644 docs/backlog/inspannings-monitor-linear-import-checklist.md create mode 100644 docs/backlog/inspannings-monitor-linear-import-issues.csv create mode 100644 docs/backlog/inspannings-monitor-linear-projects.csv create mode 100644 docs/backlog/inspannings-monitor-linear-projects.md create mode 100644 docs/backlog/inspannings-monitor-linear-setup.md create mode 100644 docs/energypace-01-productkader-en-positionering-v05.docx create mode 100644 docs/energypace-02-functionele-specificatie-mvp-v05.docx create mode 100644 docs/energypace-03-privacy-security-safety-baseline-v01.docx create mode 100644 docs/energypace-04-roadmap-wellness-naar-medisch-v01.docx create mode 100644 docs/generate_inspannings_monitor_docs.py create mode 100644 docs/inspannings-monitor-01-productkader-en-positionering-v06.docx create mode 100644 docs/inspannings-monitor-02-functionele-specificatie-mvp-v06.docx create mode 100644 docs/inspannings-monitor-03-privacy-security-safety-baseline-v02.docx create mode 100644 docs/inspannings-monitor-04-roadmap-wellness-naar-medisch-v02.docx create mode 100644 docs/inspannings-monitor-05-technische-architectuur-en-implementatie-v01.docx create mode 100644 docs/inspannings-monitor-06-implementatieplan-en-backlog-v01.docx create mode 100644 energypace-specificatie-verbeteradvies-2026-04-17.docx create mode 100644 eslint.config.mjs create mode 100644 lib/auth/messages.ts create mode 100644 lib/auth/navigation.ts create mode 100644 lib/auth/session.ts create mode 100644 lib/onboarding/options.ts create mode 100644 lib/profile/service.ts create mode 100644 lib/profile/types.ts create mode 100644 lib/supabase/client.ts create mode 100644 lib/supabase/config.ts create mode 100644 lib/supabase/proxy.ts create mode 100644 lib/supabase/server.ts create mode 100644 lib/utils.ts create mode 100644 next.config.ts create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 postcss.config.mjs create mode 100644 proxy.ts create mode 100644 supabase/.temp/cli-latest create mode 100644 supabase/.temp/gotrue-version create mode 100644 supabase/.temp/linked-project.json create mode 100644 supabase/.temp/pooler-url create mode 100644 supabase/.temp/postgres-version create mode 100644 supabase/.temp/project-ref create mode 100644 supabase/.temp/rest-version create mode 100644 supabase/.temp/storage-migration create mode 100644 supabase/.temp/storage-version create mode 100644 supabase/migrations/20260418_add_onboarding_seen_to_profiles.sql create mode 100644 supabase/migrations/20260418_create_profiles_and_user_settings.sql create mode 100644 tsconfig.json diff --git a/.env b/.env new file mode 100644 index 0000000..1301c9d --- /dev/null +++ b/.env @@ -0,0 +1,3 @@ +NEXT_PUBLIC_SUPABASE_URL=https://yntzfgnkrwjlnbaxxkkc.supabase.co +NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=sb_publishable_AVx1DjyUnRtpqGoyHhVR_A_GCtJVXZh +NEXT_PUBLIC_SUPABASE_SERVICE_KEY=sb_service_AVx1DjyUnRtpqGoyHhVR_A_GCtJVXZh \ No newline at end of file diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..4191d20 --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +NEXT_PUBLIC_SUPABASE_URL=https://your-project-ref.supabase.co +NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=sb_publishable_your_key_here diff --git a/.env.local b/.env.local new file mode 100644 index 0000000..adeba88 --- /dev/null +++ b/.env.local @@ -0,0 +1,2 @@ +NEXT_PUBLIC_SUPABASE_URL=https://yntzfgnkrwjlnbaxxkkc.supabase.co +NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=sb_publishable_AVx1DjyUnRtpqGoyHhVR_A_GCtJVXZh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..768560a --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +.next +node_modules +.vercel +dist +coverage +*.log +.DS_Store +next-env.d.ts + diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..f3f52b4 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +20.9.0 diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..ee87eae --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,15 @@ +{ + "sqltools.connections": [ + { + "ssh": "Disabled", + "previewLimit": 50, + "server": "aws-0-eu-west-1.pooler.supabase.com", + "port": 5432, + "driver": "PostgreSQL", + "name": "supabase im 2", + "database": "postgres", + "username": "postgres.yntzfgnkrwjlnbaxxkkc", + "password": "$fzysXR5Z+&g-4#" + } + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..fa3ec2b --- /dev/null +++ b/README.md @@ -0,0 +1,50 @@ +# Inspannings Monitor + +Wellness-first webapp voor individuele gebruikers die hun energie willen plannen, uitvoeren en evalueren. + +## Stack + +- Next.js 16 App Router +- React 19 +- TypeScript +- Tailwind CSS +- Vercel als hostingdoel +- Supabase voor database en authenticatie + +## Scripts + +- `npm run dev` +- `npm run build` +- `npm run start` +- `npm run lint` + +## Supabase Auth configuratie + +1. Kopieer `.env.example` naar `.env.local` +2. Vul in: + - `NEXT_PUBLIC_SUPABASE_URL` + - `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY` +3. Zet in Supabase Dashboard aan: + - Email/password auth + - Self-signup + - Email confirmation verplicht +4. Voeg redirect URLs toe voor: + - `http://localhost:3000/auth/confirm` + - je Vercel productie-URL + - eventuele preview-URL's die je wilt testen + +## Supabase database migraties + +Voor `ST-102` staat de eerste databasefundering in: + +- `supabase/migrations/20260418_create_profiles_and_user_settings.sql` + +Voer deze SQL uit in de Supabase SQL Editor of via de Supabase CLI voordat je +de profile/settings-laag lokaal test. + +## Eerstvolgende bouwstappen + +1. `ST-201` Ochtendcheck-in UI bouwen +2. `ST-203` Budgetlogica implementeren +3. `ST-301` Activiteitenmodel en planning opzetten +4. `ST-105` RLS-policy tests en hardening afronden diff --git a/app/auth-actions.ts b/app/auth-actions.ts new file mode 100644 index 0000000..5489b41 --- /dev/null +++ b/app/auth-actions.ts @@ -0,0 +1,101 @@ +"use server"; + +import { headers } from "next/headers"; +import { redirect } from "next/navigation"; +import { + buildPathWithQuery, + getRequestOrigin, + sanitizeNextPath, +} from "@/lib/auth/navigation"; +import { createClient } from "@/lib/supabase/server"; +import { hasSupabaseEnv } from "@/lib/supabase/config"; + +function getString(formData: FormData, key: string) { + const value = formData.get(key); + return typeof value === "string" ? value.trim() : ""; +} + +export async function signInAction(formData: FormData) { + const next = sanitizeNextPath(getString(formData, "next")); + + if (!hasSupabaseEnv()) { + redirect(buildPathWithQuery("/login", { error: "auth-not-configured", next })); + } + + const email = getString(formData, "email"); + const password = getString(formData, "password"); + + if (!email || !password) { + redirect(buildPathWithQuery("/login", { error: "missing-fields", next })); + } + + const supabase = await createClient(); + const { error } = await supabase.auth.signInWithPassword({ + email, + password, + }); + + if (error) { + const normalizedMessage = error.message.toLowerCase(); + const errorParam = + error.code === "email_not_confirmed" || + normalizedMessage.includes("email not confirmed") + ? "email-not-confirmed" + : "invalid-credentials"; + + redirect(buildPathWithQuery("/login", { error: errorParam, next })); + } + + redirect(next); +} + +export async function signUpAction(formData: FormData) { + const next = sanitizeNextPath(getString(formData, "next")); + + if (!hasSupabaseEnv()) { + redirect( + buildPathWithQuery("/sign-up", { error: "auth-not-configured", next }), + ); + } + + const email = getString(formData, "email"); + const password = getString(formData, "password"); + + if (!email || !password) { + redirect(buildPathWithQuery("/sign-up", { error: "missing-fields", next })); + } + + const supabase = await createClient(); + const headerStore = await headers(); + const origin = getRequestOrigin(headerStore); + + const { error } = await supabase.auth.signUp({ + email, + password, + options: { + emailRedirectTo: `${origin}/auth/confirm?next=${encodeURIComponent(next)}`, + }, + }); + + if (error) { + const normalizedMessage = error.message.toLowerCase(); + const errorParam = + error.code === "over_email_send_rate_limit" || + normalizedMessage.includes("rate limit") + ? "signup-rate-limited" + : "signup-failed"; + + redirect(buildPathWithQuery("/sign-up", { error: errorParam, next })); + } + + redirect(buildPathWithQuery("/sign-up", { status: "check-email", next })); +} + +export async function signOutAction() { + if (hasSupabaseEnv()) { + const supabase = await createClient(); + await supabase.auth.signOut(); + } + + redirect(buildPathWithQuery("/", { status: "signed-out" })); +} diff --git a/app/auth/confirm/route.ts b/app/auth/confirm/route.ts new file mode 100644 index 0000000..cbb082e --- /dev/null +++ b/app/auth/confirm/route.ts @@ -0,0 +1,34 @@ +import { type EmailOtpType } from "@supabase/supabase-js"; +import { type NextRequest, NextResponse } from "next/server"; +import { buildPathWithQuery, sanitizeNextPath } from "@/lib/auth/navigation"; +import { hasSupabaseEnv } from "@/lib/supabase/config"; +import { createClient } from "@/lib/supabase/server"; + +export async function GET(request: NextRequest) { + const { searchParams } = new URL(request.url); + const tokenHash = searchParams.get("token_hash"); + const type = searchParams.get("type") as EmailOtpType | null; + const next = sanitizeNextPath(searchParams.get("next")); + + if (!hasSupabaseEnv()) { + return NextResponse.redirect( + new URL(buildPathWithQuery("/login", { error: "auth-not-configured" }), request.url), + ); + } + + if (tokenHash && type) { + const supabase = await createClient(); + const { error } = await supabase.auth.verifyOtp({ + type, + token_hash: tokenHash, + }); + + if (!error) { + return NextResponse.redirect(new URL(next, request.url)); + } + } + + return NextResponse.redirect( + new URL(buildPathWithQuery("/login", { error: "verification-failed" }), request.url), + ); +} diff --git a/app/dashboard/page.tsx b/app/dashboard/page.tsx new file mode 100644 index 0000000..75d5ffa --- /dev/null +++ b/app/dashboard/page.tsx @@ -0,0 +1,204 @@ +import { redirect } from "next/navigation"; +import { signOutAction } from "@/app/auth-actions"; +import { sanitizeNextPath } from "@/lib/auth/navigation"; +import { getAuthState } from "@/lib/auth/session"; +import { getProfileBundleForCurrentUser } from "@/lib/profile/service"; +import Link from "next/link"; + +export const dynamic = "force-dynamic"; + +type DashboardPageProps = { + searchParams: Promise>; +}; + +function getParamValue( + params: Record, + key: string, +) { + const value = params[key]; + return typeof value === "string" ? value : null; +} + +function formatToggleState(value: boolean, enabledLabel = "Aan", disabledLabel = "Uit") { + return value ? enabledLabel : disabledLabel; +} + +function formatReminderTime(value: string | null) { + return value ? value.slice(0, 5) : "Nog niet ingesteld"; +} + +function getDashboardNotice(status: string | null) { + if (status === "onboarding-completed") { + return "Je onboarding is opgeslagen. Je basisinstellingen staan nu klaar."; + } + + if (status === "onboarding-skipped") { + return "Je hebt de onboarding nu overgeslagen. Je kunt hem later alsnog afronden."; + } + + return null; +} + +export default async function DashboardPage({ searchParams }: DashboardPageProps) { + const authState = await getAuthState(); + const resolvedSearchParams = await searchParams; + + if (!authState.isConfigured) { + redirect("/login?error=auth-not-configured"); + } + + if (!authState.isAuthenticated) { + redirect(`/login?next=${encodeURIComponent(sanitizeNextPath("/dashboard"))}`); + } + + const profileBundle = await getProfileBundleForCurrentUser(); + + if (!profileBundle) { + redirect(`/login?next=${encodeURIComponent(sanitizeNextPath("/dashboard"))}`); + } + + const { profile, settings } = profileBundle; + const notice = getDashboardNotice(getParamValue(resolvedSearchParams, "status")); + + if (!profile.onboardingSeen) { + redirect("/onboarding"); + } + + const profileTitle = profile.displayName ?? profile.email ?? authState.email ?? "Ingelogde gebruiker"; + const onboardingState = profile.onboardingCompleted ? "Afgerond" : "Nog niet afgerond"; + const morningReminderState = settings.morningReminderEnabled + ? `Aan om ${formatReminderTime(settings.morningReminderTime)}` + : "Uit"; + + return ( +
+
+ {notice ? ( +
+ {notice} +
+ ) : null} + +
+
+

+ Protected route +

+

+ Dashboard placeholder voor release 1 +

+

+ Je sessie is server-side gevalideerd en het minimale profielbundle is + nu beschikbaar. Daarmee staat de fundering voor onboarding, settings + en de eerste energieflows klaar. +

+
+ +
+
+ + Instellingen + + +
+
+
+ +
+
+

+ Auth +

+

+ Cookie-based sessie actief +

+

+ Gebruiker-ID `{authState.userId}` is server-side gevalideerd via Supabase SSR-auth. +

+
+ +
+

+ Profiel +

+

+ {profileTitle} +

+

+ Taal `{profile.locale}` en timezone `{profile.timezone}` staan nu per + gebruiker opgeslagen. +

+
+ +
+

+ Onboarding +

+

+ {onboardingState} +

+

+ Nieuwe accounts starten bewust zonder afgeronde onboarding, zodat + `ST-103` straks een duidelijke eerste flow kan aansturen. +

+
+ +
+

+ Instellingen +

+

+ Punten {formatToggleState(settings.showEnergyPoints, "zichtbaar", "verborgen")} +

+

+ Ochtendreminder: {morningReminderState}. Reflectieprompts:{" "} + {formatToggleState(settings.reflectionReminderEnabled)}. +

+
+
+ + {!profile.onboardingCompleted ? ( +
+
+

Je onboarding is nog niet afgerond.

+

+ Je kunt de korte flow later alsnog afronden om je basisinstellingen + en eerste voorkeuren vast te leggen. +

+
+ + Rond onboarding af + +
+ ) : ( +
+
+

Je instellingen kun je nu ook los beheren.

+

+ `ST-104` staat nu klaar als aparte route, zodat je reminders, + timezone en zichtbaarheid van punten later zelfstandig kunt aanpassen. +

+
+ + Open instellingen + +
+ )} +
+
+ ); +} diff --git a/app/globals.css b/app/globals.css new file mode 100644 index 0000000..3673b38 --- /dev/null +++ b/app/globals.css @@ -0,0 +1,153 @@ +@import "tailwindcss"; +@import "tw-animate-css"; +@import "shadcn/tailwind.css"; + +@custom-variant dark (&:is(.dark *)); + +:root { + --font-display: "Iowan Old Style", "Palatino Linotype", "URW Palladio L", + Palatino, Georgia, serif; + --font-body: "Inter", "Aptos", "Segoe UI", "Helvetica Neue", Arial, + sans-serif; + --background: oklch(1 0 0); + --foreground: oklch(0.145 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0.145 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.145 0 0); + --primary: oklch(0.205 0 0); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.97 0 0); + --secondary-foreground: oklch(0.205 0 0); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + --accent: oklch(0.97 0 0); + --accent-foreground: oklch(0.205 0 0); + --destructive: oklch(0.577 0.245 27.325); + --border: oklch(0.922 0 0); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + --chart-1: oklch(0.87 0 0); + --chart-2: oklch(0.556 0 0); + --chart-3: oklch(0.439 0 0); + --chart-4: oklch(0.371 0 0); + --chart-5: oklch(0.269 0 0); + --radius: 0.625rem; + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.145 0 0); + --sidebar-primary: oklch(0.205 0 0); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.97 0 0); + --sidebar-accent-foreground: oklch(0.205 0 0); + --sidebar-border: oklch(0.922 0 0); + --sidebar-ring: oklch(0.708 0 0); +} + +* { + box-sizing: border-box; +} + +html { + background: var(--background); + color: var(--foreground); +} + +body { + margin: 0; + min-height: 100vh; + font-family: var(--font-body), sans-serif; +} + +a { + color: inherit; + text-decoration: none; +} + +@theme inline { + --font-heading: var(--font-sans); + --font-sans: var(--font-sans); + --color-sidebar-ring: var(--sidebar-ring); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar: var(--sidebar); + --color-chart-5: var(--chart-5); + --color-chart-4: var(--chart-4); + --color-chart-3: var(--chart-3); + --color-chart-2: var(--chart-2); + --color-chart-1: var(--chart-1); + --color-ring: var(--ring); + --color-input: var(--input); + --color-border: var(--border); + --color-destructive: var(--destructive); + --color-accent-foreground: var(--accent-foreground); + --color-accent: var(--accent); + --color-muted-foreground: var(--muted-foreground); + --color-muted: var(--muted); + --color-secondary-foreground: var(--secondary-foreground); + --color-secondary: var(--secondary); + --color-primary-foreground: var(--primary-foreground); + --color-primary: var(--primary); + --color-popover-foreground: var(--popover-foreground); + --color-popover: var(--popover); + --color-card-foreground: var(--card-foreground); + --color-card: var(--card); + --color-foreground: var(--foreground); + --color-background: var(--background); + --radius-sm: calc(var(--radius) * 0.6); + --radius-md: calc(var(--radius) * 0.8); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) * 1.4); + --radius-2xl: calc(var(--radius) * 1.8); + --radius-3xl: calc(var(--radius) * 2.2); + --radius-4xl: calc(var(--radius) * 2.6); +} + +.dark { + --background: oklch(0.145 0 0); + --foreground: oklch(0.985 0 0); + --card: oklch(0.205 0 0); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.205 0 0); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.922 0 0); + --primary-foreground: oklch(0.205 0 0); + --secondary: oklch(0.269 0 0); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --accent: oklch(0.269 0 0); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.704 0.191 22.216); + --border: oklch(1 0 0 / 10%); + --input: oklch(1 0 0 / 15%); + --ring: oklch(0.556 0 0); + --chart-1: oklch(0.87 0 0); + --chart-2: oklch(0.556 0 0); + --chart-3: oklch(0.439 0 0); + --chart-4: oklch(0.371 0 0); + --chart-5: oklch(0.269 0 0); + --sidebar: oklch(0.205 0 0); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.269 0 0); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(1 0 0 / 10%); + --sidebar-ring: oklch(0.556 0 0); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } + html { + @apply font-sans; + } +} \ No newline at end of file diff --git a/app/layout.tsx b/app/layout.tsx new file mode 100644 index 0000000..c3b4245 --- /dev/null +++ b/app/layout.tsx @@ -0,0 +1,24 @@ +import type { Metadata } from "next"; +import "./globals.css"; +import { Geist } from "next/font/google"; +import { cn } from "@/lib/utils"; + +const geist = Geist({subsets:['latin'],variable:'--font-sans'}); + +export const metadata: Metadata = { + title: "Inspannings Monitor", + description: + "Wellness-first app voor energieplanning, zelfreflectie en een rustige plan-doe-evalueer flow.", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + {children} + + ); +} diff --git a/app/login/page.tsx b/app/login/page.tsx new file mode 100644 index 0000000..8da140f --- /dev/null +++ b/app/login/page.tsx @@ -0,0 +1,96 @@ +import Link from "next/link"; +import { redirect } from "next/navigation"; +import { AuthNotice } from "@/components/auth/auth-notice"; +import { AuthPanel } from "@/components/auth/auth-panel"; +import { signInAction } from "@/app/auth-actions"; +import { getAuthNotice } from "@/lib/auth/messages"; +import { buildPathWithQuery, sanitizeNextPath } from "@/lib/auth/navigation"; +import { getAuthState } from "@/lib/auth/session"; + +export const dynamic = "force-dynamic"; + +type LoginPageProps = { + searchParams: Promise>; +}; + +function getParamValue( + params: Record, + key: string, +) { + const value = params[key]; + return typeof value === "string" ? value : null; +} + +export default async function LoginPage({ searchParams }: LoginPageProps) { + const authState = await getAuthState(); + const resolvedSearchParams = await searchParams; + const next = sanitizeNextPath(getParamValue(resolvedSearchParams, "next")); + + if (authState.isAuthenticated) { + redirect(next); + } + + const notice = getAuthNotice( + getParamValue(resolvedSearchParams, "error"), + getParamValue(resolvedSearchParams, "status"), + ); + const signUpHref = buildPathWithQuery("/sign-up", { next }); + + return ( + + Nog geen account?{" "} + + Maak er een aan + +

+ } + > + + + {!authState.isConfigured ? ( +
+ Voeg eerst je Supabase-gegevens toe in `.env.local` op basis van `.env.example`. +
+ ) : ( +
+ + + + + + + +
+ )} +
+ ); +} diff --git a/app/onboarding/actions.ts b/app/onboarding/actions.ts new file mode 100644 index 0000000..389795f --- /dev/null +++ b/app/onboarding/actions.ts @@ -0,0 +1,39 @@ +"use server"; + +import { redirect } from "next/navigation"; +import { buildPathWithQuery } from "@/lib/auth/navigation"; +import { + completeOnboardingForCurrentUser, + markOnboardingSeenForCurrentUser, +} from "@/lib/profile/service"; +import type { OnboardingSubmission } from "@/lib/profile/types"; + +function getString(formData: FormData, key: string) { + const value = formData.get(key); + return typeof value === "string" ? value.trim() : ""; +} + +function getBoolean(formData: FormData, key: string) { + return formData.get(key) === "true"; +} + +function buildOnboardingSubmission(formData: FormData): OnboardingSubmission { + return { + displayName: getString(formData, "displayName") || null, + timezone: getString(formData, "timezone"), + morningReminderEnabled: getBoolean(formData, "morningReminderEnabled"), + morningReminderTime: getString(formData, "morningReminderTime") || null, + reflectionReminderEnabled: getBoolean(formData, "reflectionReminderEnabled"), + showEnergyPoints: getBoolean(formData, "showEnergyPoints"), + }; +} + +export async function completeOnboardingAction(formData: FormData) { + await completeOnboardingForCurrentUser(buildOnboardingSubmission(formData)); + redirect(buildPathWithQuery("/dashboard", { status: "onboarding-completed" })); +} + +export async function skipOnboardingAction() { + await markOnboardingSeenForCurrentUser(); + redirect(buildPathWithQuery("/dashboard", { status: "onboarding-skipped" })); +} diff --git a/app/onboarding/page.tsx b/app/onboarding/page.tsx new file mode 100644 index 0000000..2e48884 --- /dev/null +++ b/app/onboarding/page.tsx @@ -0,0 +1,37 @@ +import { redirect } from "next/navigation"; +import { OnboardingFlow } from "@/components/onboarding/onboarding-flow"; +import { sanitizeNextPath } from "@/lib/auth/navigation"; +import { getAuthState } from "@/lib/auth/session"; +import { getProfileBundleForCurrentUser } from "@/lib/profile/service"; + +export const dynamic = "force-dynamic"; + +export default async function OnboardingPage() { + const authState = await getAuthState(); + + if (!authState.isConfigured) { + redirect("/login?error=auth-not-configured"); + } + + if (!authState.isAuthenticated) { + redirect(`/login?next=${encodeURIComponent(sanitizeNextPath("/onboarding"))}`); + } + + const profileBundle = await getProfileBundleForCurrentUser(); + + if (!profileBundle) { + redirect(`/login?next=${encodeURIComponent(sanitizeNextPath("/onboarding"))}`); + } + + if (profileBundle.profile.onboardingCompleted) { + redirect("/dashboard"); + } + + return ( +
+
+ +
+
+ ); +} diff --git a/app/page.tsx b/app/page.tsx new file mode 100644 index 0000000..a6a54f9 --- /dev/null +++ b/app/page.tsx @@ -0,0 +1,196 @@ +import Link from "next/link"; +import { signOutAction } from "@/app/auth-actions"; +import { getAuthNotice } from "@/lib/auth/messages"; +import { getAuthState } from "@/lib/auth/session"; + +export const dynamic = "force-dynamic"; + +const headerActionClassName = + "shrink-0 whitespace-nowrap rounded-full border border-black/10 bg-white/70 px-4 py-2 text-sm font-medium text-slate-900 shadow-sm transition hover:-translate-y-0.5"; + +const loopSteps = [ + { + title: "Check-in", + copy: "Start de dag met een korte energiescore en slaapkwaliteit, zonder overbodige frictie.", + }, + { + title: "Plannen", + copy: "Verdeel activiteiten over de dag met een licht energiebudget en duidelijke prioriteiten.", + }, + { + title: "Evalueren", + copy: "Kijk rustig terug op wat wel, niet of aangepast is gelukt, zonder medische claims of oordeel.", + }, +]; + +const releaseFocus = [ + "Alleen individuele gebruikers in release 1", + "Wellness/self-management positionering", + "Geen sharing, AI of medische workflows in de MVP", + "Vercel + Supabase als technische basis", +]; + +type HomePageProps = { + searchParams: Promise>; +}; + +function getParamValue( + params: Record, + key: string, +) { + const value = params[key]; + return typeof value === "string" ? value : null; +} + +export default async function Home({ searchParams }: HomePageProps) { + const authState = await getAuthState(); + const resolvedSearchParams = await searchParams; + const notice = getAuthNotice( + getParamValue(resolvedSearchParams, "error"), + getParamValue(resolvedSearchParams, "status"), + ); + + return ( +
+
+
+
+

+ Inspannings Monitor +

+

+ Rustige basis voor een wellness-first MVP +

+
+
+ {authState.isConfigured ? ( + authState.isAuthenticated ? ( + <> + + Naar dashboard + +
+ +
+ + ) : ( + <> + + Inloggen + + + Account aanmaken + + + ) + ) : ( + + Supabase nog niet geconfigureerd + + )} +
+
+ + {notice ? ( +
+ {notice.text} +
+ ) : null} + +
+
+

+ De projectbasis staat nu, inclusief de eerste auth-laag via Supabase. + Release 1 blijft bewust smal: publieke landing, aparte login/signup + routes en een eerste protected dashboard als basis voor de volgende stories. +

+
+ {loopSteps.map((step, index) => ( +
+

+ Stap {index + 1} +

+

+ {step.title} +

+

{step.copy}

+
+ ))} +
+
+ + +
+ +
+
+

+ Volgende story +

+

+ ST-201 Ochtendcheck-in +

+
+
+

+ Doelgroep +

+

Volwassen individuele gebruikers

+
+
+

+ Positionering +

+

Wellness / self-management

+
+
+

+ Status +

+

Auth, onboarding en settings actief

+
+
+
+
+ ); +} diff --git a/app/settings/actions.ts b/app/settings/actions.ts new file mode 100644 index 0000000..e68902f --- /dev/null +++ b/app/settings/actions.ts @@ -0,0 +1,31 @@ +"use server"; + +import { redirect } from "next/navigation"; +import { buildPathWithQuery } from "@/lib/auth/navigation"; +import { saveSettingsForCurrentUser } from "@/lib/profile/service"; +import type { SettingsSubmission } from "@/lib/profile/types"; + +function getString(formData: FormData, key: string) { + const value = formData.get(key); + return typeof value === "string" ? value.trim() : ""; +} + +function getBoolean(formData: FormData, key: string) { + return formData.get(key) === "true"; +} + +function buildSettingsSubmission(formData: FormData): SettingsSubmission { + return { + locale: getString(formData, "locale"), + timezone: getString(formData, "timezone"), + morningReminderEnabled: getBoolean(formData, "morningReminderEnabled"), + morningReminderTime: getString(formData, "morningReminderTime") || null, + reflectionReminderEnabled: getBoolean(formData, "reflectionReminderEnabled"), + showEnergyPoints: getBoolean(formData, "showEnergyPoints"), + }; +} + +export async function saveSettingsAction(formData: FormData) { + await saveSettingsForCurrentUser(buildSettingsSubmission(formData)); + redirect(buildPathWithQuery("/settings", { status: "saved" })); +} diff --git a/app/settings/page.tsx b/app/settings/page.tsx new file mode 100644 index 0000000..8ba065e --- /dev/null +++ b/app/settings/page.tsx @@ -0,0 +1,138 @@ +import Link from "next/link"; +import { redirect } from "next/navigation"; +import { signOutAction } from "@/app/auth-actions"; +import { SettingsForm } from "@/components/settings/settings-form"; +import { sanitizeNextPath } from "@/lib/auth/navigation"; +import { getAuthState } from "@/lib/auth/session"; +import { getProfileBundleForCurrentUser } from "@/lib/profile/service"; + +export const dynamic = "force-dynamic"; + +type SettingsPageProps = { + searchParams: Promise>; +}; + +function getParamValue( + params: Record, + key: string, +) { + const value = params[key]; + return typeof value === "string" ? value : null; +} + +function getSettingsNotice(status: string | null) { + if (status === "saved") { + return "Je instellingen zijn opgeslagen."; + } + + return null; +} + +export default async function SettingsPage({ searchParams }: SettingsPageProps) { + const authState = await getAuthState(); + const resolvedSearchParams = await searchParams; + + if (!authState.isConfigured) { + redirect("/login?error=auth-not-configured"); + } + + if (!authState.isAuthenticated) { + redirect(`/login?next=${encodeURIComponent(sanitizeNextPath("/settings"))}`); + } + + const profileBundle = await getProfileBundleForCurrentUser(); + + if (!profileBundle) { + redirect(`/login?next=${encodeURIComponent(sanitizeNextPath("/settings"))}`); + } + + if (!profileBundle.profile.onboardingSeen) { + redirect("/onboarding"); + } + + const notice = getSettingsNotice(getParamValue(resolvedSearchParams, "status")); + const profileTitle = + profileBundle.profile.displayName ?? + profileBundle.profile.email ?? + authState.email ?? + "Ingelogde gebruiker"; + + return ( +
+
+
+
+
+ + Dashboard + + / + Instellingen +
+

+ Instellingen +

+

+ Pas je basisvoorkeuren rustig aan. Alles blijft beperkt tot jouw eigen + account en de wellness-first scope van release 1. +

+
+ +
+ + Terug naar dashboard + +
+ +
+
+
+ + {notice ? ( +
+ {notice} +
+ ) : null} + +
+ + + +
+
+
+ ); +} diff --git a/app/sign-up/page.tsx b/app/sign-up/page.tsx new file mode 100644 index 0000000..bb72d95 --- /dev/null +++ b/app/sign-up/page.tsx @@ -0,0 +1,96 @@ +import Link from "next/link"; +import { redirect } from "next/navigation"; +import { AuthNotice } from "@/components/auth/auth-notice"; +import { AuthPanel } from "@/components/auth/auth-panel"; +import { signUpAction } from "@/app/auth-actions"; +import { getAuthNotice } from "@/lib/auth/messages"; +import { buildPathWithQuery, sanitizeNextPath } from "@/lib/auth/navigation"; +import { getAuthState } from "@/lib/auth/session"; + +export const dynamic = "force-dynamic"; + +type SignUpPageProps = { + searchParams: Promise>; +}; + +function getParamValue( + params: Record, + key: string, +) { + const value = params[key]; + return typeof value === "string" ? value : null; +} + +export default async function SignUpPage({ searchParams }: SignUpPageProps) { + const authState = await getAuthState(); + const resolvedSearchParams = await searchParams; + const next = sanitizeNextPath(getParamValue(resolvedSearchParams, "next")); + + if (authState.isAuthenticated) { + redirect(next); + } + + const notice = getAuthNotice( + getParamValue(resolvedSearchParams, "error"), + getParamValue(resolvedSearchParams, "status"), + ); + const loginHref = buildPathWithQuery("/login", { next }); + + return ( + + Heb je al een account?{" "} + + Log dan in + +

+ } + > + + + {!authState.isConfigured ? ( +
+ Voeg eerst je Supabase-gegevens toe in `.env.local` op basis van `.env.example`. +
+ ) : ( +
+ + + + + + + +
+ )} +
+ ); +} diff --git a/components.json b/components.json new file mode 100644 index 0000000..f382eb7 --- /dev/null +++ b/components.json @@ -0,0 +1,25 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "base-nova", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "", + "css": "app/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "iconLibrary": "lucide", + "rtl": false, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "menuColor": "default", + "menuAccent": "subtle", + "registries": {} +} diff --git a/components/auth/auth-notice.tsx b/components/auth/auth-notice.tsx new file mode 100644 index 0000000..c897177 --- /dev/null +++ b/components/auth/auth-notice.tsx @@ -0,0 +1,25 @@ +import { type AuthNotice } from "@/lib/auth/messages"; + +type AuthNoticeProps = { + notice: AuthNotice | null; +}; + +const toneStyles = { + error: "border-rose-200 bg-rose-50 text-rose-900", + success: "border-emerald-200 bg-emerald-50 text-emerald-900", + info: "border-sky-200 bg-sky-50 text-sky-900", +}; + +export function AuthNotice({ notice }: AuthNoticeProps) { + if (!notice) { + return null; + } + + return ( +
+ {notice.text} +
+ ); +} diff --git a/components/auth/auth-panel.tsx b/components/auth/auth-panel.tsx new file mode 100644 index 0000000..59aa3af --- /dev/null +++ b/components/auth/auth-panel.tsx @@ -0,0 +1,64 @@ +import Link from "next/link"; +import type { ReactNode } from "react"; + +type AuthPanelProps = { + eyebrow: string; + title: string; + description: string; + children: ReactNode; + footer: ReactNode; +}; + +export function AuthPanel({ + eyebrow, + title, + description, + children, + footer, +}: AuthPanelProps) { + return ( +
+
+
+
+

+ {eyebrow} +

+

+ {title} +

+

+ {description} +

+
+ +
+

Release 1 blijft bewust licht.

+
    +
  • Wellness-first en alleen voor individuele gebruikers
  • +
  • Geen zorgverlenerstoegang, sharing of AI in deze fase
  • +
  • Authenticatie via Supabase met cookie-based sessies
  • +
+
+
+ +
+
+
+ + Terug naar landing + +
+ {children} +
+ {footer} +
+
+
+
+
+ ); +} diff --git a/components/onboarding/onboarding-flow.tsx b/components/onboarding/onboarding-flow.tsx new file mode 100644 index 0000000..b9b8d5d --- /dev/null +++ b/components/onboarding/onboarding-flow.tsx @@ -0,0 +1,292 @@ +"use client"; + +import type { MouseEvent } from "react"; +import { useState } from "react"; +import { completeOnboardingAction, skipOnboardingAction } from "@/app/onboarding/actions"; +import { ONBOARDING_TIMEZONE_OPTIONS } from "@/lib/onboarding/options"; +import type { ProfileBundle } from "@/lib/profile/types"; + +type OnboardingFlowProps = { + profileBundle: ProfileBundle; +}; + +const steps = [ + { + eyebrow: "Stap 1", + title: "Zo gebruiken we Inspannings Monitor", + description: + "De app helpt je om je dag rustiger te plannen en terug te kijken zonder medische claims of zorgverlenerfuncties.", + }, + { + eyebrow: "Stap 2", + title: "Basisprofiel", + description: + "Kies hoe de app je mag aanspreken en welke timezone het best bij je dagindeling past.", + }, + { + eyebrow: "Stap 3", + title: "Startvoorkeuren", + description: + "Kies rustig hoe zichtbaar je energiebudget is en of je lichte reminders wilt ontvangen.", + }, +] as const; + +export function OnboardingFlow({ profileBundle }: OnboardingFlowProps) { + const [currentStep, setCurrentStep] = useState(0); + const [displayName, setDisplayName] = useState(profileBundle.profile.displayName ?? ""); + const [timezone, setTimezone] = useState(profileBundle.profile.timezone); + const [showEnergyPoints, setShowEnergyPoints] = useState( + profileBundle.settings.showEnergyPoints, + ); + const [morningReminderEnabled, setMorningReminderEnabled] = useState( + profileBundle.settings.morningReminderEnabled, + ); + const [morningReminderTime, setMorningReminderTime] = useState( + profileBundle.settings.morningReminderTime ?? "08:30", + ); + const [reflectionReminderEnabled, setReflectionReminderEnabled] = useState( + profileBundle.settings.reflectionReminderEnabled, + ); + + const step = steps[currentStep]; + const isFirstStep = currentStep === 0; + const isLastStep = currentStep === steps.length - 1; + + function goToPreviousStep() { + setCurrentStep((stepIndex) => Math.max(0, stepIndex - 1)); + } + + function goToNextStep(event: MouseEvent) { + // This button lives inside the onboarding form. By preventing the default + // click action and rendering a keyed replacement, we avoid an accidental + // form submit when the final step button appears after the state update. + event.preventDefault(); + setCurrentStep((stepIndex) => Math.min(steps.length - 1, stepIndex + 1)); + } + + return ( +
+
+

+ {step.eyebrow} +

+

+ {step.title} +

+

+ {step.description} +

+ +
+

Release 1 blijft bewust wellness-first.

+
    +
  • Alleen voor individuele gebruikers, zonder delen of zorgverlenerstoegang.
  • +
  • De app geeft geen diagnose, behandeling of medisch advies.
  • +
  • Bij acute of snel verslechterende klachten hoort directe hulp via arts, huisartsenpost of 112 buiten deze app.
  • +
+
+ +
    + {steps.map((item, index) => ( +
  1. + ))} +
+
+ +
+
+

+ Korte onboarding +

+
+ +
+
+ +
+ + + + + + + + {currentStep === 0 ? ( +
+
+

+ Wat je hier wél krijgt +

+

+ Een rustige plan-doe-evalueer flow met energiebudgetten, zonder + druk, score-oordeel of medische terminologie. +

+
+ +
+

+ Wat deze app niet doet +

+

+ Geen diagnose, geen behandeling, geen medische triage en geen + automatisch delen met derden. +

+
+
+ ) : null} + + {currentStep === 1 ? ( +
+ + +
+ Voertaal voor release 1 staat vast op Nederlands. +
+ + +
+ ) : null} + + {currentStep === 2 ? ( +
+ + + + + +
+ ) : null} + +
+ + + {isLastStep ? ( + + ) : ( + + )} +
+
+
+
+ ); +} diff --git a/components/settings/settings-form.tsx b/components/settings/settings-form.tsx new file mode 100644 index 0000000..d826fd9 --- /dev/null +++ b/components/settings/settings-form.tsx @@ -0,0 +1,217 @@ +"use client"; + +import { useState } from "react"; +import { saveSettingsAction } from "@/app/settings/actions"; +import { ONBOARDING_TIMEZONE_OPTIONS } from "@/lib/onboarding/options"; +import type { ProfileBundle } from "@/lib/profile/types"; + +type SettingsFormProps = { + profileBundle: ProfileBundle; +}; + +const LOCALE_OPTIONS = [ + { + value: "nl-NL", + label: "Nederlands", + }, +] as const; + +export function SettingsForm({ profileBundle }: SettingsFormProps) { + const [locale, setLocale] = useState(profileBundle.profile.locale); + const [timezone, setTimezone] = useState(profileBundle.profile.timezone); + const [showEnergyPoints, setShowEnergyPoints] = useState( + profileBundle.settings.showEnergyPoints, + ); + const [morningReminderEnabled, setMorningReminderEnabled] = useState( + profileBundle.settings.morningReminderEnabled, + ); + const [morningReminderTime, setMorningReminderTime] = useState( + profileBundle.settings.morningReminderTime ?? "08:30", + ); + const [reflectionReminderEnabled, setReflectionReminderEnabled] = useState( + profileBundle.settings.reflectionReminderEnabled, + ); + + return ( +
+ + + + + + + +
+

+ Account +

+

+ Basisinstellingen voor jouw account +

+

+ Je past hier alleen je wellness-first voorkeuren aan. Er zijn in release 1 + geen medische velden, deelinstellingen of zorgverlenerrollen. +

+
+ +
+
+

+ Taal en tijd +

+ +
+ + +
+ Release 1 draait bewust volledig in het Nederlands. De taalinstelling + blijft al wel aanwezig in het accountmodel. +
+ + +
+
+ +
+

+ Interface +

+ +
+ +
+
+
+ +
+
+

+ Reminders +

+ +
+ + + +
+
+ +
+

+ Bewuste grenzen +

+
    +
  • Geen medische drempels, diagnoses of behandelinstellingen.
  • +
  • Geen delen met zorgverleners of naasten in release 1.
  • +
  • Alle instellingen blijven gekoppeld aan alleen jouw account.
  • +
+
+
+ +
+

+ Wijzigingen zijn direct van toepassing op jouw account en volgende sessies. +

+ + +
+
+ ); +} diff --git a/components/ui/button.tsx b/components/ui/button.tsx new file mode 100644 index 0000000..09df753 --- /dev/null +++ b/components/ui/button.tsx @@ -0,0 +1,58 @@ +import { Button as ButtonPrimitive } from "@base-ui/react/button" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const buttonVariants = cva( + "group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80", + outline: + "border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50", + secondary: + "bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground", + ghost: + "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50", + destructive: + "bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: + "h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2", + xs: "h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3", + sm: "h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5", + lg: "h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2", + icon: "size-8", + "icon-xs": + "size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3", + "icon-sm": + "size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg", + "icon-lg": "size-9", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +function Button({ + className, + variant = "default", + size = "default", + ...props +}: ButtonPrimitive.Props & VariantProps) { + return ( + + ) +} + +export { Button, buttonVariants } diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..d81ab30 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,53 @@ +# Inspannings Monitor Documentatieset + +Deze map bevat de vernieuwde documentatie voor de gekozen `wellness/self-management` route van `Inspannings Monitor`, met een expliciet opengehouden pad naar een latere medische producttrack. + +## Huidige leidende documenten + +- [inspannings-monitor-01-productkader-en-positionering-v06.docx](./inspannings-monitor-01-productkader-en-positionering-v06.docx) + Legt intended use, non-intended use, scope, doelgroep en claim-guardrails vast. + +- [inspannings-monitor-02-functionele-specificatie-mvp-v06.docx](./inspannings-monitor-02-functionele-specificatie-mvp-v06.docx) + Beschrijft de wellness-first MVP in toetsbare functionele requirements. + +- [inspannings-monitor-03-privacy-security-safety-baseline-v02.docx](./inspannings-monitor-03-privacy-security-safety-baseline-v02.docx) + Bundelt de minimale randvoorwaarden voor privacy, informatiebeveiliging en productveiligheid. + +- [inspannings-monitor-04-roadmap-wellness-naar-medisch-v02.docx](./inspannings-monitor-04-roadmap-wellness-naar-medisch-v02.docx) + Laat zien hoe het product gecontroleerd kan doorgroeien zonder ongemerkt medische scope binnen te trekken. + +- [inspannings-monitor-05-technische-architectuur-en-implementatie-v01.docx](./inspannings-monitor-05-technische-architectuur-en-implementatie-v01.docx) + Brengt de technische implementatielaag uit de oude specificatie terug als apart architectuurdocument voor de wellness-first MVP. + +- [inspannings-monitor-06-implementatieplan-en-backlog-v01.docx](./inspannings-monitor-06-implementatieplan-en-backlog-v01.docx) + Zet de documentatieset om naar een uitvoerbare backlog met epics, stories, afhankelijkheden en releasevolgorde. + +## Bevestigde uitgangspunten + +- Productnaam: `Inspannings Monitor` +- Positionering eerste release: `wellness/self-management` +- Release 1: alleen individuele gebruikers +- Doelgroep: `volwassenen` +- Voertaal eerste release: `Nederlands` +- Hosting: `Vercel` +- Database: `Supabase PostgreSQL` +- Authenticatie: `Supabase Auth` + +## Generator + +- [generate_inspannings_monitor_docs.py](./generate_inspannings_monitor_docs.py) + Genereert de actuele `.docx`-documenten opnieuw vanuit de bevestigde uitgangspunten. + +## Backlog en Linear + +- [backlog/inspannings-monitor-backlog.md](./backlog/inspannings-monitor-backlog.md) +- [backlog/inspannings-monitor-backlog.csv](./backlog/inspannings-monitor-backlog.csv) +- [backlog/inspannings-monitor-linear-setup.md](./backlog/inspannings-monitor-linear-setup.md) +- [backlog/inspannings-monitor-linear-import-checklist.md](./backlog/inspannings-monitor-linear-import-checklist.md) +- [backlog/inspannings-monitor-linear-projects.md](./backlog/inspannings-monitor-linear-projects.md) +- [backlog/inspannings-monitor-linear-eerste-30-minuten.md](./backlog/inspannings-monitor-linear-eerste-30-minuten.md) +- [backlog/generate_linear_backlog_assets.py](./backlog/generate_linear_backlog_assets.py) + +## Oudere documenten + +De eerdere `EnergyPace`-documenten in deze map zijn niet leidend meer. De `Inspannings Monitor`-documenten hierboven zijn de actuele basis. diff --git a/docs/backlog/generate_linear_backlog_assets.py b/docs/backlog/generate_linear_backlog_assets.py new file mode 100644 index 0000000..c70e57b --- /dev/null +++ b/docs/backlog/generate_linear_backlog_assets.py @@ -0,0 +1,332 @@ +import csv +from pathlib import Path + + +BASE_DIR = Path("/Users/janpetervisser/Development/third/docs/backlog") +SOURCE_CSV = BASE_DIR / "inspannings-monitor-backlog.csv" +LINEAR_CSV = BASE_DIR / "inspannings-monitor-linear-import-issues.csv" +PROJECTS_CSV = BASE_DIR / "inspannings-monitor-linear-projects.csv" + +TEAM_NAME = "Inspannings Monitor" +INITIATIVE_NAME = "Release 1 MVP" +CREATED_AT = "2026-04-17T00:00:00Z" + +LINEAR_HEADERS = [ + "ID", + "Team", + "Title", + "Description", + "Status", + "Estimate", + "Priority", + "Project ID", + "Project", + "Creator", + "Assignee", + "Labels", + "Cycle Number", + "Cycle Name", + "Cycle Start", + "Cycle End", + "Created", + "Updated", + "Started", + "Triaged", + "Completed", + "Canceled", + "Archived", + "Due Date", + "Parent issue", + "Initiatives", + "Project Milestone ID", + "Project Milestone", + "SLA Status", +] + +PRIORITY_MAP = { + "P0": "high", + "P1": "medium", +} + + +def read_rows(): + with SOURCE_CSV.open(newline="", encoding="utf-8") as handle: + return list(csv.DictReader(handle)) + + +def build_epic_map(rows): + return { + row["ID"]: row["Title"] + for row in rows + if row.get("Issue Type") == "Epic" + } + + +def normalize_labels(raw): + labels = [label.strip() for label in raw.split(";") if label.strip()] + return ", ".join(labels) + + +def build_description(row, epic_title): + parts = [ + row["Description"].strip(), + "", + "## Context", + f"- Bron backlog-ID: `{row['ID']}`", + f"- Epic / project: `{epic_title}`", + f"- Fase: `{row['Phase']}`", + ] + depends_on = row.get("Depends On", "").strip() + if depends_on: + parts.append(f"- Afhankelijk van: `{depends_on}`") + definition = row.get("Definition of Done", "").strip() + if definition: + parts.extend( + [ + "", + "## Definition of done", + definition, + ] + ) + return "\n".join(parts).strip() + + +def build_linear_rows(rows): + epic_map = build_epic_map(rows) + linear_rows = [] + + for row in rows: + if row.get("Issue Type") != "Story": + continue + + epic_id = row.get("Epic", "").strip() + epic_title = epic_map.get(epic_id, "") + labels = normalize_labels(row.get("Labels", "")) + + linear_rows.append( + { + "ID": "", + "Team": TEAM_NAME, + "Title": row["Title"].strip(), + "Description": build_description(row, epic_title), + "Status": "Backlog", + "Estimate": "", + "Priority": PRIORITY_MAP.get(row.get("Priority", "").strip(), ""), + "Project ID": "", + "Project": epic_title, + "Creator": "", + "Assignee": "", + "Labels": labels, + "Cycle Number": "", + "Cycle Name": "", + "Cycle Start": "", + "Cycle End": "", + "Created": CREATED_AT, + "Updated": "", + "Started": "", + "Triaged": "", + "Completed": "", + "Canceled": "", + "Archived": "", + "Due Date": "", + "Parent issue": "", + "Initiatives": INITIATIVE_NAME, + "Project Milestone ID": "", + "Project Milestone": "", + "SLA Status": "", + } + ) + + return linear_rows + + +def write_linear_csv(rows): + with LINEAR_CSV.open("w", newline="", encoding="utf-8") as handle: + writer = csv.DictWriter(handle, fieldnames=LINEAR_HEADERS) + writer.writeheader() + writer.writerows(rows) + + +def write_projects_csv(): + headers = [ + "Name", + "Summary", + "Status", + "Milestones", + "Creator", + "Lead", + "Members", + "Created At", + "Started At", + "Target Date", + "Completed At", + "Canceled At", + "Teams", + "Initiatives", + ] + rows = [ + { + "Name": "Fundament", + "Summary": "Leg de technische basis voor release 1 met projectsetup, omgevingen, UI-basis en foutafhandeling.", + "Status": "Planned", + "Milestones": "", + "Creator": "", + "Lead": "", + "Members": "", + "Created At": CREATED_AT, + "Started At": "", + "Target Date": "", + "Completed At": "", + "Canceled At": "", + "Teams": TEAM_NAME, + "Initiatives": INITIATIVE_NAME, + }, + { + "Name": "Auth en profiel", + "Summary": "Implementeer accounttoegang, profieldata, onboarding en basisinstellingen per gebruiker.", + "Status": "Planned", + "Milestones": "", + "Creator": "", + "Lead": "", + "Members": "", + "Created At": CREATED_AT, + "Started At": "", + "Target Date": "", + "Completed At": "", + "Canceled At": "", + "Teams": TEAM_NAME, + "Initiatives": INITIATIVE_NAME, + }, + { + "Name": "Ochtendcheck-in", + "Summary": "Bouw de ochtendcheck-in met energiescore, slaapkwaliteit en automatische budgetafleiding.", + "Status": "Planned", + "Milestones": "", + "Creator": "", + "Lead": "", + "Members": "", + "Created At": CREATED_AT, + "Started At": "", + "Target Date": "", + "Completed At": "", + "Canceled At": "", + "Teams": TEAM_NAME, + "Initiatives": INITIATIVE_NAME, + }, + { + "Name": "Dagplanning", + "Summary": "Maak plannen van activiteiten mogelijk met budgetfeedback, energie-impact en prioriteit.", + "Status": "Planned", + "Milestones": "", + "Creator": "", + "Lead": "", + "Members": "", + "Created At": CREATED_AT, + "Started At": "", + "Target Date": "", + "Completed At": "", + "Canceled At": "", + "Teams": TEAM_NAME, + "Initiatives": INITIATIVE_NAME, + }, + { + "Name": "Evaluatie en dagoverzicht", + "Summary": "Maak evaluatie van activiteiten en een dagelijks overzicht van gepland versus uitgevoerd mogelijk.", + "Status": "Planned", + "Milestones": "", + "Creator": "", + "Lead": "", + "Members": "", + "Created At": CREATED_AT, + "Started At": "", + "Target Date": "", + "Completed At": "", + "Canceled At": "", + "Teams": TEAM_NAME, + "Initiatives": INITIATIVE_NAME, + }, + { + "Name": "Weekoverzicht en inzichten", + "Summary": "Voeg weekterugblik, eenvoudige aggregaties en veilige patroonweergave toe zonder medische claims.", + "Status": "Backlog", + "Milestones": "", + "Creator": "", + "Lead": "", + "Members": "", + "Created At": CREATED_AT, + "Started At": "", + "Target Date": "", + "Completed At": "", + "Canceled At": "", + "Teams": TEAM_NAME, + "Initiatives": INITIATIVE_NAME, + }, + { + "Name": "Reflectie en reminders", + "Summary": "Voeg optionele T+1/T+2 reflectieprompts en lichte reminderlogica toe voor zwaardere dagen.", + "Status": "Backlog", + "Milestones": "", + "Creator": "", + "Lead": "", + "Members": "", + "Created At": CREATED_AT, + "Started At": "", + "Target Date": "", + "Completed At": "", + "Canceled At": "", + "Teams": TEAM_NAME, + "Initiatives": INITIATIVE_NAME, + }, + { + "Name": "Security en operations", + "Summary": "Borg logging, rate limiting, secrets, back-up en owner-only toegangscontrole voor echte gebruikersintroductie.", + "Status": "Planned", + "Milestones": "", + "Creator": "", + "Lead": "", + "Members": "", + "Created At": CREATED_AT, + "Started At": "", + "Target Date": "", + "Completed At": "", + "Canceled At": "", + "Teams": TEAM_NAME, + "Initiatives": INITIATIVE_NAME, + }, + { + "Name": "Launch-readiness", + "Summary": "Rond QA, copy review, accessibility checks, DPIA-input en go-live checks voor release 1 af.", + "Status": "Backlog", + "Milestones": "", + "Creator": "", + "Lead": "", + "Members": "", + "Created At": CREATED_AT, + "Started At": "", + "Target Date": "", + "Completed At": "", + "Canceled At": "", + "Teams": TEAM_NAME, + "Initiatives": INITIATIVE_NAME, + }, + ] + + with PROJECTS_CSV.open("w", newline="", encoding="utf-8") as handle: + writer = csv.DictWriter(handle, fieldnames=headers) + writer.writeheader() + writer.writerows(rows) + + +def main(): + rows = read_rows() + linear_rows = build_linear_rows(rows) + write_linear_csv(linear_rows) + write_projects_csv() + print(LINEAR_CSV) + print(f"rows={len(linear_rows)}") + print(PROJECTS_CSV) + print("projects=9") + + +if __name__ == "__main__": + main() diff --git a/docs/backlog/inspannings-monitor-backlog.csv b/docs/backlog/inspannings-monitor-backlog.csv new file mode 100644 index 0000000..57df05e --- /dev/null +++ b/docs/backlog/inspannings-monitor-backlog.csv @@ -0,0 +1,53 @@ +"ID","Title","Description","Issue Type","Epic","Priority","Status","Phase","Labels","Depends On","Definition of Done" +"EPIC-01","Fundament","Projectbasis, omgevingen en design foundation neerzetten.","Epic","","P0","Todo","Release 1","release:r1;domain:platform","","" +"ST-001","Next.js projectbasis opzetten","Zet de projectbasis op met TypeScript en de gekozen stylingaanpak.","Story","EPIC-01","P0","Todo","Release 1","release:r1;epic:fundament;type:build","EPIC-01","Project start lokaal en in preview zonder handmatige workarounds." +"ST-002","Omgevingen definiëren","Richt development, preview en production technisch in.","Story","EPIC-01","P0","Todo","Release 1","release:r1;epic:fundament;type:ops","ST-001","Development, preview en production zijn technisch ingericht." +"ST-003","Component foundation neerzetten","Bouw herbruikbare basiscomponenten voor formulieren, kaarten, knoppen en meldingen.","Story","EPIC-01","P0","Todo","Release 1","release:r1;epic:fundament;type:ui","ST-001","Herbruikbare basiscomponenten zijn mobiel bruikbaar." +"ST-004","Foutafhandeling en lege staten ontwerpen","Ontwerp en implementeer lege staten en bruikbare foutfeedback.","Story","EPIC-01","P0","Todo","Release 1","release:r1;epic:fundament;type:ux","ST-001","Gebruiker krijgt bruikbare feedback bij lege of foutieve situaties." +"EPIC-02","Auth en profiel","Inloggen, sessies, profiel en basisinstellingen werkend maken.","Epic","","P0","Todo","Release 1","release:r1;domain:auth","EPIC-01","" +"ST-101","Supabase Auth integreren","Integreer Supabase Auth en de sessieflow in de app.","Story","EPIC-02","P0","Todo","Release 1","release:r1;epic:auth-profiel;type:build","EPIC-01","Gebruiker kan inloggen en beveiligde routes gebruiken." +"ST-102","Profile- en UserSettings-model implementeren","Implementeer profiel- en settingsmodellen per gebruiker.","Story","EPIC-02","P0","Todo","Release 1","release:r1;epic:auth-profiel;type:build","ST-101","Profiel en instellingen zijn per gebruiker beschikbaar." +"ST-103","Onboardingflow bouwen","Bouw een onboarding van maximaal drie schermen.","Story","EPIC-02","P0","Todo","Release 1","release:r1;epic:auth-profiel;type:ux","ST-101","Nieuwe gebruiker begrijpt schaal, positionering en basisinstellingen." +"ST-104","Settingsscherm bouwen","Bouw instellingen voor taal, timezone, reminders en zichtbaarheid van punten.","Story","EPIC-02","P0","Todo","Release 1","release:r1;epic:auth-profiel;type:build","ST-102","Taal, timezone, reminders en zichtbaarheid van punten zijn persistent." +"ST-105","RLS-basispolicies inrichten","Richt owner-only RLS-policies in voor profiel en instellingen.","Story","EPIC-02","P0","Todo","Release 1","release:r1;epic:auth-profiel;type:security","ST-101","Gebruiker kan uitsluitend eigen profiel en settings lezen of wijzigen." +"EPIC-03","Ochtendcheck-in","Energiescore, slaapkwaliteit en dagbudget implementeren.","Epic","","P0","Todo","Release 1","release:r1;domain:checkin","EPIC-02","" +"ST-201","EnergySlider en SleepQualityInput bouwen","Bouw de invoercomponenten voor energiescore en slaapkwaliteit.","Story","EPIC-03","P0","Todo","Release 1","release:r1;epic:ochtendcheckin;type:ui","EPIC-02","Check-in kan mobiel comfortabel worden ingevuld." +"ST-202","Server action voor createMorningCheckIn","Implementeer de server action voor het opslaan van de ochtendcheck-in.","Story","EPIC-03","P0","Todo","Release 1","release:r1;epic:ochtendcheckin;type:build","ST-201","Check-in wordt opgeslagen met juiste validatie." +"ST-203","Budgetlogica implementeren","Bouw mapping van score naar energy level en dagbudget.","Story","EPIC-03","P0","Todo","Release 1","release:r1;epic:ochtendcheckin;type:logic","ST-202","Score mapping en budgetberekening zijn consistent en testbaar." +"ST-204","Check-instatus op dashboard tonen","Toon direct score, niveau en budget op het dashboard.","Story","EPIC-03","P0","Todo","Release 1","release:r1;epic:ochtendcheckin;type:ui","ST-202","Gebruiker ziet direct score, niveau en budget." +"ST-205","Unit tests voor score- en budgetmapping","Voeg tests toe voor grenswaarden en budgetberekening.","Story","EPIC-03","P0","Todo","Release 1","release:r1;epic:ochtendcheckin;type:qa","ST-203","Belangrijkste grenswaarden zijn afgedekt." +"EPIC-04","Dagplanning","Activiteiten plannen en budgetfeedback tonen.","Epic","","P0","Todo","Release 1","release:r1;domain:planning","EPIC-03","" +"ST-301","Datamodel voor activiteiten implementeren","Implementeer tabellen en seed-data voor activiteiten, categorieen en skip-redenen.","Story","EPIC-04","P0","Todo","Release 1","release:r1;epic:dagplanning;type:build","EPIC-03","Migraties en seed-data voor categorieen en skip-redenen zijn aanwezig." +"ST-302","Planningformulier bouwen","Bouw het formulier voor naam, categorie, duur, impact en prioriteit.","Story","EPIC-04","P0","Todo","Release 1","release:r1;epic:dagplanning;type:ui","ST-301","Activiteit kan met naam, categorie, duur, impact en prioriteit worden aangemaakt." +"ST-303","Autocomplete op eerdere activiteiten toevoegen","Maak snelle herselectie van eerder gebruikte activiteiten mogelijk.","Story","EPIC-04","P0","Todo","Release 1","release:r1;epic:dagplanning;type:ux","ST-302","Veelgebruikte activiteiten zijn snel opnieuw te kiezen." +"ST-304","EnergyMeter en lopend totaal implementeren","Toon het lopende totaal ten opzichte van het dagbudget.","Story","EPIC-04","P0","Todo","Release 1","release:r1;epic:dagplanning;type:logic-ui","ST-302","Totaal update direct na elke wijziging." +"ST-305","Overschrijdingswaarschuwing toevoegen","Toon een niet-blokkerende waarschuwing bij budgetoverschrijding.","Story","EPIC-04","P0","Todo","Release 1","release:r1;epic:dagplanning;type:ux","ST-304","Gebruiker krijgt feedback maar behoudt regie." +"EPIC-05","Evaluatie en dagoverzicht","Activiteiten afronden en dagresultaat tonen.","Epic","","P0","Todo","Release 1","release:r1;domain:evaluatie","EPIC-04","" +"ST-401","Statusflows voor uitgevoerd, geskipt en aangepast bouwen","Implementeer de drie kernstatussen voor activiteiten.","Story","EPIC-05","P0","Todo","Release 1","release:r1;epic:evaluatie;type:build","EPIC-04","Alle drie de statussen worden correct opgeslagen." +"ST-402","Evaluatievelden toevoegen","Voeg contextuele velden toe voor werkelijke duur, fatigue en skip-reden.","Story","EPIC-05","P0","Todo","Release 1","release:r1;epic:evaluatie;type:ui","ST-401","Contextuele velden verschijnen passend per status." +"ST-403","Ongeplande activiteiten ondersteunen","Maak het mogelijk een ongeplande activiteit toe te voegen en mee te tellen.","Story","EPIC-05","P0","Todo","Release 1","release:r1;epic:evaluatie;type:build","ST-401","Ongeplande activiteit telt mee in werkelijke totalen." +"ST-404","Dagoverzicht bouwen","Bouw het overzicht met gepland versus uitgevoerd en statusverdeling.","Story","EPIC-05","P0","Todo","Release 1","release:r1;epic:evaluatie;type:ui","ST-401","Gepland versus uitgevoerd en statusverdeling zijn zichtbaar." +"ST-405","Dagaggregaties server-side implementeren","Bereken dagtotalen en samenvatting server-side.","Story","EPIC-05","P0","Todo","Release 1","release:r1;epic:evaluatie;type:logic","ST-404","Dagtotalen blijven consistent met individuele records." +"EPIC-06","Weekoverzicht en inzichten","Weekpatronen en veilige insightregels toevoegen.","Epic","","P1","Todo","Release 1","release:r1;domain:insights","EPIC-05","" +"ST-501","Weekoverzichtspagina bouwen","Bouw de pagina voor weekterugblik.","Story","EPIC-06","P1","Todo","Release 1","release:r1;epic:weekoverzicht;type:ui","EPIC-05","Gebruiker kan per week terugkijken." +"ST-502","Weekaggregaties bouwen","Bereken gemiddelde energie en budget-adherence per week.","Story","EPIC-06","P1","Todo","Release 1","release:r1;epic:weekoverzicht;type:logic","ST-501","Gemiddelde energie en budget-adherence zijn herleidbaar en testbaar." +"ST-503","Skip-patronen zichtbaar maken","Toon patronen rond skip-redenen en terugkerende activiteiten.","Story","EPIC-06","P1","Todo","Release 1","release:r1;epic:weekoverzicht;type:logic-ui","ST-502","Patronen worden alleen bij voldoende data getoond." +"ST-504","Insightregels met datadrempels definiëren","Leg guardrails vast voor het tonen van patronen.","Story","EPIC-06","P1","Todo","Release 1","release:r1;epic:weekoverzicht;type:safety-logic","ST-502","Geen patroonclaim zonder guardrails." +"ST-505","Insightcopy toetsen op niet-medische formulering","Controleer alle inzichtteksten op wellness-positionering.","Story","EPIC-06","P1","Todo","Release 1","release:r1;epic:weekoverzicht;type:content","ST-504","Alle teksten blijven binnen wellness-positionering." +"EPIC-07","Reflectie en reminders","Optionele T+1/T+2 follow-up mogelijk maken.","Epic","","P1","Todo","Release 1","release:r1;domain:reminders","EPIC-05","" +"ST-601","ReflectionCheckIn-model en flow implementeren","Implementeer model en basisflow voor reflectie na een zwaardere dag.","Story","EPIC-07","P1","Todo","Release 1","release:r1;epic:reflectie;type:build","EPIC-05","Reflecties kunnen aan eerdere dagen gekoppeld worden." +"ST-602","Joblogica voor T+1/T+2 prompts bouwen","Bepaal server-side welke gebruikers een reflectieprompt moeten zien.","Story","EPIC-07","P1","Todo","Release 1","release:r1;epic:reflectie;type:logic-ops","ST-601","Prompts worden niet dubbel of willekeurig aangemaakt." +"ST-603","Instellingsoptie voor reflectieprompts toevoegen","Maak opt-in beheerbaar vanuit instellingen.","Story","EPIC-07","P1","Todo","Release 1","release:r1;epic:reflectie;type:build","ST-104","Gebruiker beheert opt-in zelfstandig." +"ST-604","Korte reflectie-UI bouwen","Bouw een lichte, niet-medische reflectieprompt.","Story","EPIC-07","P1","Todo","Release 1","release:r1;epic:reflectie;type:ui","ST-602","Prompt voelt licht en niet medisch." +"EPIC-08","Security en operations","Logging, hardening, back-up en policy-tests.","Epic","","P0","Todo","Release 1","release:r1;domain:security-ops","EPIC-01,EPIC-02,EPIC-03,EPIC-04,EPIC-05,EPIC-06,EPIC-07","" +"ST-701","Rate limiting toevoegen","Bescherm kritieke auth- en mutatieroutes tegen misbruik.","Story","EPIC-08","P0","Todo","Release 1","release:r1;epic:security-ops;type:security","EPIC-02","Kritieke auth- en mutatieroutes zijn beschermd." +"ST-702","Logging voor fouten en kernmutaties inrichten","Log fouten, loginproblemen en belangrijke mutaties centraal.","Story","EPIC-08","P0","Todo","Release 1","release:r1;epic:security-ops;type:ops","EPIC-03,EPIC-04,EPIC-05","Kerngebeurtenissen zijn herleidbaar." +"ST-703","Back-up en herstelstrategie documenteren en testen","Werk het restore-pad uit en valideer het.","Story","EPIC-08","P0","Todo","Release 1","release:r1;epic:security-ops;type:ops","EPIC-01","Restore-pad is aantoonbaar gevalideerd." +"ST-704","Secrets- en environmentbeheer formaliseren","Leg veilig beheer van secrets en omgevingen vast voor Vercel en Supabase.","Story","EPIC-08","P0","Todo","Release 1","release:r1;epic:security-ops;type:security-ops","EPIC-01","Geen secrets in code of onveilige configuratie." +"ST-705","RLS-policy tests toevoegen","Test aantoonbaar dat owner-only toegang technisch afgedwongen is.","Story","EPIC-08","P0","Todo","Release 1","release:r1;epic:security-ops;type:qa-security","ST-105","Owner-only model is aantoonbaar afgedwongen." +"EPIC-09","Launch-readiness","QA, copy review, DPIA-input en go-live checks afronden.","Epic","","P0","Todo","Release 1","release:r1;domain:launch","EPIC-01,EPIC-02,EPIC-03,EPIC-04,EPIC-05,EPIC-06,EPIC-07,EPIC-08","" +"ST-801","Kernflows handmatig testen","Voer end-to-end handmatige tests uit op mobiel en desktop.","Story","EPIC-09","P0","Todo","Release 1","release:r1;epic:launch;type:qa","EPIC-05,EPIC-06,EPIC-07","Belangrijkste user journeys zijn geverifieerd." +"ST-802","Accessibility check uitvoeren","Controleer touch targets, contrast en reduced motion.","Story","EPIC-09","P0","Todo","Release 1","release:r1;epic:launch;type:qa-ux","EPIC-05","Touch targets, contrast en reduced motion zijn gecontroleerd." +"ST-803","Copy review doen","Controleer onboarding, dashboardteksten en inzichten op wellness-copy.","Story","EPIC-09","P0","Todo","Release 1","release:r1;epic:launch;type:content-safety","EPIC-06","Geen medische of zorgdossier-taal in release 1." +"ST-804","DPIA-input en datacatalogus afronden","Rond privacyartefacten af op basis van de werkelijke MVP-scope.","Story","EPIC-09","P0","Todo","Release 1","release:r1;epic:launch;type:privacy","EPIC-08","Pre-launch privacyartefacten zijn gereed." +"ST-805","Go-live checklist opstellen","Maak een checklist voor launch, rollback, monitoring en incidentrespons.","Story","EPIC-09","P0","Todo","Release 1","release:r1;epic:launch;type:ops","EPIC-08","Team weet hoe launch en eerste incidentrespons verloopt." diff --git a/docs/backlog/inspannings-monitor-backlog.md b/docs/backlog/inspannings-monitor-backlog.md new file mode 100644 index 0000000..3099e37 --- /dev/null +++ b/docs/backlog/inspannings-monitor-backlog.md @@ -0,0 +1,160 @@ +# Inspannings Monitor Backlog + +Dit bestand zet de huidige documentatieset om naar een concrete development backlog voor `release 1`. + +## Uitgangspunten + +- Productnaam: `Inspannings Monitor` +- Positionering: `wellness/self-management` +- Release 1: alleen individuele gebruikers +- Doelgroep: volwassenen +- Voertaal release 1: Nederlands +- Stack: `Vercel + Supabase Auth + Supabase PostgreSQL` +- Buiten scope release 1: sharing, AI, PDF-export, medische claims, habit-tracking buiten slaapkwaliteit + +## Aanbevolen bouwvolgorde + +1. Fundament en projectopzet +2. Authenticatie, profiel en instellingen +3. Ochtendcheck-in en budgetlogica +4. Activiteiten plannen +5. Activiteiten evalueren en dagoverzicht +6. Weekoverzicht en inzichten +7. Reflectieprompts en geplande taken +8. Privacy, security, logging en launch-readiness + +## Epic-overzicht + +| Epic | Titel | Prioriteit | Afhankelijk van | Doel | +| --- | --- | --- | --- | --- | +| EPIC-01 | Fundament | P0 | - | Projectbasis, omgevingen en design foundation neerzetten | +| EPIC-02 | Auth en profiel | P0 | EPIC-01 | Inloggen, sessies, profiel en basisinstellingen | +| EPIC-03 | Ochtendcheck-in | P0 | EPIC-02 | Energiescore, slaapkwaliteit en dagbudget | +| EPIC-04 | Dagplanning | P0 | EPIC-03 | Activiteiten plannen en budgetfeedback tonen | +| EPIC-05 | Evaluatie en dagoverzicht | P0 | EPIC-04 | Activiteiten afronden en dagresultaat tonen | +| EPIC-06 | Weekoverzicht en inzichten | P1 | EPIC-05 | Weekpatronen en veilige insightregels | +| EPIC-07 | Reflectie en reminders | P1 | EPIC-05 | Optionele T+1/T+2 follow-up | +| EPIC-08 | Security en operations | P0 | EPIC-01 t/m EPIC-07 | Logging, hardening, back-up en policy-tests | +| EPIC-09 | Launch-readiness | P0 | EPIC-01 t/m EPIC-08 | QA, copy review, DPIA-input en go-live checks | + +## EPIC-01 Fundament + +Doel: een stabiele technische basis waarop alle kernflows kunnen landen. + +| Story ID | Titel | Type | Definition of done | +| --- | --- | --- | --- | +| ST-001 | Next.js projectbasis opzetten | Build | Project start lokaal en in preview zonder handmatige workarounds | +| ST-002 | Omgevingen definiëren | Ops | Development, preview en production zijn technisch ingericht | +| ST-003 | Component foundation neerzetten | UI | Herbruikbare basiscomponenten zijn mobiel bruikbaar | +| ST-004 | Foutafhandeling en lege staten ontwerpen | UX | Gebruiker krijgt bruikbare feedback bij lege of foutieve situaties | + +## EPIC-02 Auth en profiel + +Doel: iedere gebruiker kan veilig een eigen account en basisinstellingen beheren. + +| Story ID | Titel | Type | Definition of done | +| --- | --- | --- | --- | +| ST-101 | Supabase Auth integreren | Build | Gebruiker kan inloggen en beveiligde routes gebruiken | +| ST-102 | Profile- en UserSettings-model implementeren | Build | Profiel en instellingen zijn per gebruiker beschikbaar | +| ST-103 | Onboardingflow bouwen | UX | Nieuwe gebruiker begrijpt schaal, positionering en basisinstellingen | +| ST-104 | Settingsscherm bouwen | Build | Taal, timezone, reminders en zichtbaarheid van punten zijn persistent | +| ST-105 | RLS-basispolicies inrichten | Security | Gebruiker kan uitsluitend eigen profiel en settings lezen of wijzigen | + +## EPIC-03 Ochtendcheck-in + +Doel: de gebruiker kan met minimale inspanning de dag starten en een budget krijgen. + +| Story ID | Titel | Type | Definition of done | +| --- | --- | --- | --- | +| ST-201 | EnergySlider en SleepQualityInput bouwen | UI | Check-in kan mobiel comfortabel worden ingevuld | +| ST-202 | Server action voor createMorningCheckIn | Build | Check-in wordt opgeslagen met juiste validatie | +| ST-203 | Budgetlogica implementeren | Logic | Score mapping en budgetberekening zijn consistent en testbaar | +| ST-204 | Check-instatus op dashboard tonen | UI | Gebruiker ziet direct score, niveau en budget | +| ST-205 | Unit tests voor score- en budgetmapping | QA | Belangrijkste grenswaarden zijn afgedekt | + +## EPIC-04 Dagplanning + +Doel: de gebruiker kan activiteiten voor de dag plannen binnen een eenvoudig energiemodel. + +| Story ID | Titel | Type | Definition of done | +| --- | --- | --- | --- | +| ST-301 | Datamodel voor activiteiten implementeren | Build | Migraties en seed-data voor categorieën en skip-redenen zijn aanwezig | +| ST-302 | Planningformulier bouwen | UI | Activiteit kan met naam, categorie, duur, impact en prioriteit worden aangemaakt | +| ST-303 | Autocomplete op eerdere activiteiten toevoegen | UX | Veelgebruikte activiteiten zijn snel opnieuw te kiezen | +| ST-304 | EnergyMeter en lopend totaal implementeren | Logic/UI | Totaal update direct na elke wijziging | +| ST-305 | Overschrijdingswaarschuwing toevoegen | UX | Gebruiker krijgt feedback maar behoudt regie | + +## EPIC-05 Evaluatie en dagoverzicht + +Doel: de kernloop afronden door geplande activiteiten te evalueren en terug te zien. + +| Story ID | Titel | Type | Definition of done | +| --- | --- | --- | --- | +| ST-401 | Statusflows voor uitgevoerd, geskipt en aangepast bouwen | Build | Alle drie de statussen worden correct opgeslagen | +| ST-402 | Evaluatievelden toevoegen | UI | Contextuele velden verschijnen passend per status | +| ST-403 | Ongeplande activiteiten ondersteunen | Build | Ongeplande activiteit telt mee in werkelijke totalen | +| ST-404 | Dagoverzicht bouwen | UI | Gepland versus uitgevoerd en statusverdeling zijn zichtbaar | +| ST-405 | Dagaggregaties server-side implementeren | Logic | Dagtotalen blijven consistent met individuele records | + +## EPIC-06 Weekoverzicht en inzichten + +Doel: terugkijken op patronen zonder de wellness-guardrails te verlaten. + +| Story ID | Titel | Type | Definition of done | +| --- | --- | --- | --- | +| ST-501 | Weekoverzichtspagina bouwen | UI | Gebruiker kan per week terugkijken | +| ST-502 | Weekaggregaties bouwen | Logic | Gemiddelde energie en budget-adherence zijn herleidbaar en testbaar | +| ST-503 | Skip-patronen zichtbaar maken | Logic/UI | Patronen worden alleen bij voldoende data getoond | +| ST-504 | Insightregels met datadrempels definiëren | Safety/Logic | Geen patroonclaim zonder guardrails | +| ST-505 | Insightcopy toetsen op niet-medische formulering | Content | Alle teksten blijven binnen wellness-positionering | + +## EPIC-07 Reflectie en reminders + +Doel: gebruikers optioneel laten terugblikken na zwaardere dagen. + +| Story ID | Titel | Type | Definition of done | +| --- | --- | --- | --- | +| ST-601 | ReflectionCheckIn-model en flow implementeren | Build | Reflecties kunnen aan eerdere dagen gekoppeld worden | +| ST-602 | Joblogica voor T+1/T+2 prompts bouwen | Logic/Ops | Prompts worden niet dubbel of willekeurig aangemaakt | +| ST-603 | Instellingsoptie voor reflectieprompts toevoegen | Build | Gebruiker beheert opt-in zelfstandig | +| ST-604 | Korte reflectie-UI bouwen | UI | Prompt voelt licht en niet medisch | + +## EPIC-08 Security en operations + +Doel: de wellness-first MVP technisch hard genoeg maken voor echte gebruikers. + +| Story ID | Titel | Type | Definition of done | +| --- | --- | --- | --- | +| ST-701 | Rate limiting toevoegen | Security | Kritieke auth- en mutatieroutes zijn beschermd | +| ST-702 | Logging voor fouten en kernmutaties inrichten | Ops | Kerngebeurtenissen zijn herleidbaar | +| ST-703 | Back-up en herstelstrategie documenteren en testen | Ops | Restore-pad is aantoonbaar gevalideerd | +| ST-704 | Secrets- en environmentbeheer formaliseren | Security/Ops | Geen secrets in code of onveilige configuratie | +| ST-705 | RLS-policy tests toevoegen | QA/Security | Owner-only model is aantoonbaar afgedwongen | + +## EPIC-09 Launch-readiness + +Doel: release 1 verantwoord kunnen opleveren. + +| Story ID | Titel | Type | Definition of done | +| --- | --- | --- | --- | +| ST-801 | Kernflows handmatig testen | QA | Belangrijkste user journeys zijn geverifieerd | +| ST-802 | Accessibility check uitvoeren | QA/UX | Touch targets, contrast en reduced motion zijn gecontroleerd | +| ST-803 | Copy review doen | Content/Safety | Geen medische of zorgdossier-taal in release 1 | +| ST-804 | DPIA-input en datacatalogus afronden | Privacy | Pre-launch privacyartefacten zijn gereed | +| ST-805 | Go-live checklist opstellen | Ops | Team weet hoe launch en eerste incidentrespons verloopt | + +## Release-level definition of done + +- Alle `P0`-epics zijn functioneel afgerond +- Geen blocking bugs in ochtendcheck-in, planning, evaluatie of dashboardflow +- Owner-only toegang is technisch afgedwongen en getest +- Launchcopy blijft binnen wellness/self-management claims +- Privacy- en securitybasis is gereed voor echte gebruikersintroductie + +## Niet in release 1 + +- Viewerrollen, delen met zorgverleners of naasten, en granular sharing +- Habit tracking buiten slaapkwaliteit +- Database-gestuurde vertalingen of extra talen +- AI-inzichten, chatbotfuncties of vrije tekstinterpretatie +- PDF-export, zorgdossierkoppelingen of medical-track features diff --git a/docs/backlog/inspannings-monitor-linear-eerste-30-minuten.md b/docs/backlog/inspannings-monitor-linear-eerste-30-minuten.md new file mode 100644 index 0000000..8dd1e6e --- /dev/null +++ b/docs/backlog/inspannings-monitor-linear-eerste-30-minuten.md @@ -0,0 +1,110 @@ +# Inspannings Monitor: eerste 30 minuten in Linear + +Gebruik dit als snelle start nadat je workspace klaar is. + +## 0-5 minuten: basis neerzetten + +- Open of maak de workspace `Inspannings Monitor` +- Controleer dat je adminrechten hebt +- Maak één team aan: `Inspannings Monitor` +- Laat de issueworkflow simpel: + - `Backlog` + - `Todo` + - `In Progress` + - `Done` + - `Canceled` +- Zet `Cycles` nog niet aan + +## 5-10 minuten: release-structuur maken + +- Maak de initiative `Release 1 MVP` +- Maak de 9 projects uit [inspannings-monitor-linear-projects.md](./inspannings-monitor-linear-projects.md) +- Gebruik de samenvattingen uit dat document +- Zet deze projects direct op `Planned`: + - `Fundament` + - `Auth en profiel` + - `Ochtendcheck-in` + - `Dagplanning` + - `Evaluatie en dagoverzicht` + - `Security en operations` +- Zet deze op `Backlog`: + - `Weekoverzicht en inzichten` + - `Reflectie en reminders` + - `Launch-readiness` + +## 10-15 minuten: labels klaarzetten + +Maak minimaal deze labels aan: + +- `release:r1` +- `type:build` +- `type:ui` +- `type:logic` +- `type:qa` +- `type:security` +- `type:ops` +- `type:ux` +- `type:content` +- `type:privacy` + +Maak daarna de `epic:*` labels uit [inspannings-monitor-linear-setup.md](./inspannings-monitor-linear-setup.md). + +## 15-20 minuten: backlog importeren + +- Open [inspannings-monitor-linear-import-checklist.md](./inspannings-monitor-linear-import-checklist.md) +- Gebruik [inspannings-monitor-linear-import-issues.csv](./inspannings-monitor-linear-import-issues.csv) +- Importeer de `43` issues +- Controleer direct: + - team klopt + - status is `Backlog` + - prioriteit is `high` of `medium` + - labels zijn meegekomen + +## 20-25 minuten: eerste opschoning + +- Controleer of issues aan de juiste projects hangen +- Als projectkoppeling ontbreekt: + - filter op `epic:*` label + - koppel issues in bulk aan het juiste project +- Koppel daarna alles aan initiative `Release 1 MVP` als dat nog niet goed staat +- Sorteer de backlog op `Priority` + +## 25-30 minuten: eerste views maken + +Maak deze saved views: + +- `Release 1 - All` +- `P0` +- `Security / Privacy` +- `Launch-readiness` + +Als je daarna nog tijd hebt: + +- wijs 2 of 3 issues uit `Fundament` toe +- zet alleen die issues op `Todo` +- laat de rest nog in `Backlog` + +## Wat je nog niet moet doen + +- nog geen cycles aanzetten +- nog geen extra workflowstappen maken +- nog geen sub-teams maken +- nog geen extra releasestructuur toevoegen +- nog geen medical-track werk mengen met release 1 + +## Beste eerste werkset + +Als je meteen wilt starten met uitvoering, begin dan hier: + +1. `ST-001` Next.js projectbasis opzetten +2. `ST-002` Omgevingen definiëren +3. `ST-101` Supabase Auth integreren +4. `ST-102` Profile- en UserSettings-model implementeren + +## Relevante bestanden + +- [inspannings-monitor-linear-setup.md](./inspannings-monitor-linear-setup.md) +- [inspannings-monitor-linear-import-checklist.md](./inspannings-monitor-linear-import-checklist.md) +- [inspannings-monitor-linear-projects.md](./inspannings-monitor-linear-projects.md) +- [inspannings-monitor-linear-import-issues.csv](./inspannings-monitor-linear-import-issues.csv) +- [inspannings-monitor-backlog.md](./inspannings-monitor-backlog.md) diff --git a/docs/backlog/inspannings-monitor-linear-import-checklist.md b/docs/backlog/inspannings-monitor-linear-import-checklist.md new file mode 100644 index 0000000..a5d9740 --- /dev/null +++ b/docs/backlog/inspannings-monitor-linear-import-checklist.md @@ -0,0 +1,185 @@ +# Inspannings Monitor Linear Import Checklist + +Gebruik deze checklist om de backlog en projectstructuur van `Inspannings Monitor` gecontroleerd in `Linear` te krijgen. + +## Doel + +Na afronding van deze checklist heb je: + +- één `Linear` workspace +- één team voor `release 1` +- één initiative voor de MVP +- negen projects voor de epics +- een geïmporteerde issue-backlog voor alle stories +- een eerste kwaliteitscontrole op mapping, labels en prioriteiten + +## Benodigde bestanden + +- [inspannings-monitor-linear-setup.md](./inspannings-monitor-linear-setup.md) +- [inspannings-monitor-linear-import-issues.csv](./inspannings-monitor-linear-import-issues.csv) +- [inspannings-monitor-linear-projects.csv](./inspannings-monitor-linear-projects.csv) +- [inspannings-monitor-linear-projects.md](./inspannings-monitor-linear-projects.md) +- [inspannings-monitor-backlog.md](./inspannings-monitor-backlog.md) + +## Fase 1: Workspace voorbereiden + +- [ ] Maak of kies de `Linear` workspace voor `Inspannings Monitor` +- [ ] Bevestig dat je adminrechten hebt in de workspace +- [ ] Maak één top-level team aan met naam `Inspannings Monitor` +- [ ] Laat de teamworkflow in het begin simpel: + - `Backlog` + - `Todo` + - `In Progress` + - `Done` + - `Canceled` +- [ ] Zet `Cycles` nog niet aan +- [ ] Gebruik nog geen extra sub-teams + +## Fase 2: Labels voorbereiden + +Maak deze labels aan als teamlabels: + +- [ ] `release:r1` +- [ ] `type:build` +- [ ] `type:ui` +- [ ] `type:logic` +- [ ] `type:qa` +- [ ] `type:security` +- [ ] `type:ops` +- [ ] `type:ux` +- [ ] `type:content` +- [ ] `type:privacy` +- [ ] `epic:fundament` +- [ ] `epic:auth-profiel` +- [ ] `epic:ochtendcheckin` +- [ ] `epic:dagplanning` +- [ ] `epic:evaluatie` +- [ ] `epic:weekoverzicht` +- [ ] `epic:reflectie` +- [ ] `epic:security-ops` +- [ ] `epic:launch` + +## Fase 3: Initiative en projects aanmaken + +### Initiative + +- [ ] Maak één initiative aan: `Release 1 MVP` + +### Projects + +Maak deze negen projects aan: + +- [ ] `Fundament` +- [ ] `Auth en profiel` +- [ ] `Ochtendcheck-in` +- [ ] `Dagplanning` +- [ ] `Evaluatie en dagoverzicht` +- [ ] `Weekoverzicht en inzichten` +- [ ] `Reflectie en reminders` +- [ ] `Security en operations` +- [ ] `Launch-readiness` + +### Aanbevolen projectleads + +- [ ] Wijs alleen projectleads toe als die nu al duidelijk zijn +- [ ] Laat anders de leads leeg bij de eerste importfase + +## Fase 4: Import voorbereiden + +- [ ] Open de actuele import-CSV: [inspannings-monitor-linear-import-issues.csv](./inspannings-monitor-linear-import-issues.csv) +- [ ] Controleer steekproefsgewijs: + - `Team` = `Inspannings Monitor` + - `Status` = `Backlog` + - `Priority` = `high` of `medium` + - `Project` bevat één van de negen epic-projectnamen + - `Initiatives` = `Release 1 MVP` +- [ ] Maak desnoods eerst een testworkspace of testteam als je Linear eerst wilt proefimporteren + +## Fase 5: Import uitvoeren + +Volgens de actuele `Linear`-documentatie loopt import van “other” bronnen via hun importer/CLI met een CSV in `Linear`-formaat. + +- [ ] Ga in Linear naar `Settings > Administration > Import/Export` +- [ ] Kies de importroute voor een generieke / `Other`-bron of `Linear CSV`-aanpak +- [ ] Upload of importeer het bestand `inspannings-monitor-linear-import-issues.csv` +- [ ] Gebruik het team `Inspannings Monitor` als doel +- [ ] Rond de import af + +## Fase 6: Directe controle na import + +Controleer meteen deze punten: + +- [ ] Zijn alle `43` issues aanwezig? +- [ ] Staan de issues in het team `Inspannings Monitor`? +- [ ] Hebben issues status `Backlog`? +- [ ] Zijn prioriteiten zichtbaar als `high` of `medium`? +- [ ] Zijn labels meegekomen? +- [ ] Zijn issues aan de juiste projects gekoppeld? +- [ ] Is de initiative-koppeling zichtbaar? + +## Fase 7: Als project- of initiative-koppeling niet goed is meegekomen + +Gebruik dan deze fallback: + +- [ ] Filter op label `epic:fundament` en koppel alle resultaten in bulk aan project `Fundament` +- [ ] Filter op label `epic:auth-profiel` en koppel in bulk aan `Auth en profiel` +- [ ] Filter op label `epic:ochtendcheckin` en koppel in bulk aan `Ochtendcheck-in` +- [ ] Filter op label `epic:dagplanning` en koppel in bulk aan `Dagplanning` +- [ ] Filter op label `epic:evaluatie` en koppel in bulk aan `Evaluatie en dagoverzicht` +- [ ] Filter op label `epic:weekoverzicht` en koppel in bulk aan `Weekoverzicht en inzichten` +- [ ] Filter op label `epic:reflectie` en koppel in bulk aan `Reflectie en reminders` +- [ ] Filter op label `epic:security-ops` en koppel in bulk aan `Security en operations` +- [ ] Filter op label `epic:launch` en koppel in bulk aan `Launch-readiness` +- [ ] Selecteer daarna alle release-1 issues en koppel ze in bulk aan initiative `Release 1 MVP` + +## Fase 8: Eerste opschoning in Linear + +- [ ] Sorteer backlog eerst op `Priority` +- [ ] Controleer of alle `P0`-stories als `high` binnengekomen zijn +- [ ] Controleer of alle `P1`-stories als `medium` binnengekomen zijn +- [ ] Archiveer nog niets in deze eerste fase +- [ ] Voeg nog geen cycles toe +- [ ] Voeg nog geen extra workflowstappen toe + +## Fase 9: Eerste operationele inrichting + +- [ ] Maak een opgeslagen view voor `Release 1 - All` +- [ ] Maak een view voor `P0` +- [ ] Maak een view voor `Security / Privacy` +- [ ] Maak een view voor `Launch-readiness` +- [ ] Maak eventueel één view `My work` of `This week` + +## Fase 10: Go / No-Go na import + +### Go als dit klopt + +- [ ] Alle `43` issues staan in Linear +- [ ] De negen projects bestaan +- [ ] De initiative bestaat +- [ ] Labels en prioriteiten zijn bruikbaar +- [ ] De backlog is zonder extra handwerk te filteren per epic + +### No-Go als dit misgaat + +- [ ] Issues missen of zijn dubbel geïmporteerd +- [ ] Projectkoppeling is structureel kapot +- [ ] Statusmapping is onbruikbaar +- [ ] CSV blijkt niet goed te matchen met de importer + +Als `No-Go`: import verwijderen, mapping aanpassen, en opnieuw importeren. + +## Eerste week in Linear + +Voor de eerste week zou ik dit simpel houden: + +- gebruik alleen `Backlog`, `Todo`, `In Progress`, `Done` +- plan nog geen formele cycles +- werk eerst `EPIC-01` en `EPIC-02` uit +- gebruik labels en projects voor overzicht, niet extra workflowcomplexiteit + +## Bronnen + +- [Linear Importer docs](https://linear.app/docs/import-issues) +- [Linear Teams docs](https://linear.app/docs/teams) +- [Linear Projects docs](https://linear.app/docs/projects) +- [Linear Priority docs](https://linear.app/docs/priority) diff --git a/docs/backlog/inspannings-monitor-linear-import-issues.csv b/docs/backlog/inspannings-monitor-linear-import-issues.csv new file mode 100644 index 0000000..df35271 --- /dev/null +++ b/docs/backlog/inspannings-monitor-linear-import-issues.csv @@ -0,0 +1,431 @@ +ID,Team,Title,Description,Status,Estimate,Priority,Project ID,Project,Creator,Assignee,Labels,Cycle Number,Cycle Name,Cycle Start,Cycle End,Created,Updated,Started,Triaged,Completed,Canceled,Archived,Due Date,Parent issue,Initiatives,Project Milestone ID,Project Milestone,SLA Status +,Inspannings Monitor,Next.js projectbasis opzetten,"Zet de projectbasis op met TypeScript en de gekozen stylingaanpak. + +## Context +- Bron backlog-ID: `ST-001` +- Epic / project: `Fundament` +- Fase: `Release 1` +- Afhankelijk van: `EPIC-01` + +## Definition of done +Project start lokaal en in preview zonder handmatige workarounds.",Backlog,,high,,Fundament,,,"release:r1, epic:fundament, type:build",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Omgevingen definiëren,"Richt development, preview en production technisch in. + +## Context +- Bron backlog-ID: `ST-002` +- Epic / project: `Fundament` +- Fase: `Release 1` +- Afhankelijk van: `ST-001` + +## Definition of done +Development, preview en production zijn technisch ingericht.",Backlog,,high,,Fundament,,,"release:r1, epic:fundament, type:ops",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Component foundation neerzetten,"Bouw herbruikbare basiscomponenten voor formulieren, kaarten, knoppen en meldingen. + +## Context +- Bron backlog-ID: `ST-003` +- Epic / project: `Fundament` +- Fase: `Release 1` +- Afhankelijk van: `ST-001` + +## Definition of done +Herbruikbare basiscomponenten zijn mobiel bruikbaar.",Backlog,,high,,Fundament,,,"release:r1, epic:fundament, type:ui",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Foutafhandeling en lege staten ontwerpen,"Ontwerp en implementeer lege staten en bruikbare foutfeedback. + +## Context +- Bron backlog-ID: `ST-004` +- Epic / project: `Fundament` +- Fase: `Release 1` +- Afhankelijk van: `ST-001` + +## Definition of done +Gebruiker krijgt bruikbare feedback bij lege of foutieve situaties.",Backlog,,high,,Fundament,,,"release:r1, epic:fundament, type:ux",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Supabase Auth integreren,"Integreer Supabase Auth en de sessieflow in de app. + +## Context +- Bron backlog-ID: `ST-101` +- Epic / project: `Auth en profiel` +- Fase: `Release 1` +- Afhankelijk van: `EPIC-01` + +## Definition of done +Gebruiker kan inloggen en beveiligde routes gebruiken.",Backlog,,high,,Auth en profiel,,,"release:r1, epic:auth-profiel, type:build",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Profile- en UserSettings-model implementeren,"Implementeer profiel- en settingsmodellen per gebruiker. + +## Context +- Bron backlog-ID: `ST-102` +- Epic / project: `Auth en profiel` +- Fase: `Release 1` +- Afhankelijk van: `ST-101` + +## Definition of done +Profiel en instellingen zijn per gebruiker beschikbaar.",Backlog,,high,,Auth en profiel,,,"release:r1, epic:auth-profiel, type:build",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Onboardingflow bouwen,"Bouw een onboarding van maximaal drie schermen. + +## Context +- Bron backlog-ID: `ST-103` +- Epic / project: `Auth en profiel` +- Fase: `Release 1` +- Afhankelijk van: `ST-101` + +## Definition of done +Nieuwe gebruiker begrijpt schaal, positionering en basisinstellingen.",Backlog,,high,,Auth en profiel,,,"release:r1, epic:auth-profiel, type:ux",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Settingsscherm bouwen,"Bouw instellingen voor taal, timezone, reminders en zichtbaarheid van punten. + +## Context +- Bron backlog-ID: `ST-104` +- Epic / project: `Auth en profiel` +- Fase: `Release 1` +- Afhankelijk van: `ST-102` + +## Definition of done +Taal, timezone, reminders en zichtbaarheid van punten zijn persistent.",Backlog,,high,,Auth en profiel,,,"release:r1, epic:auth-profiel, type:build",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,RLS-basispolicies inrichten,"Richt owner-only RLS-policies in voor profiel en instellingen. + +## Context +- Bron backlog-ID: `ST-105` +- Epic / project: `Auth en profiel` +- Fase: `Release 1` +- Afhankelijk van: `ST-101` + +## Definition of done +Gebruiker kan uitsluitend eigen profiel en settings lezen of wijzigen.",Backlog,,high,,Auth en profiel,,,"release:r1, epic:auth-profiel, type:security",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,EnergySlider en SleepQualityInput bouwen,"Bouw de invoercomponenten voor energiescore en slaapkwaliteit. + +## Context +- Bron backlog-ID: `ST-201` +- Epic / project: `Ochtendcheck-in` +- Fase: `Release 1` +- Afhankelijk van: `EPIC-02` + +## Definition of done +Check-in kan mobiel comfortabel worden ingevuld.",Backlog,,high,,Ochtendcheck-in,,,"release:r1, epic:ochtendcheckin, type:ui",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Server action voor createMorningCheckIn,"Implementeer de server action voor het opslaan van de ochtendcheck-in. + +## Context +- Bron backlog-ID: `ST-202` +- Epic / project: `Ochtendcheck-in` +- Fase: `Release 1` +- Afhankelijk van: `ST-201` + +## Definition of done +Check-in wordt opgeslagen met juiste validatie.",Backlog,,high,,Ochtendcheck-in,,,"release:r1, epic:ochtendcheckin, type:build",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Budgetlogica implementeren,"Bouw mapping van score naar energy level en dagbudget. + +## Context +- Bron backlog-ID: `ST-203` +- Epic / project: `Ochtendcheck-in` +- Fase: `Release 1` +- Afhankelijk van: `ST-202` + +## Definition of done +Score mapping en budgetberekening zijn consistent en testbaar.",Backlog,,high,,Ochtendcheck-in,,,"release:r1, epic:ochtendcheckin, type:logic",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Check-instatus op dashboard tonen,"Toon direct score, niveau en budget op het dashboard. + +## Context +- Bron backlog-ID: `ST-204` +- Epic / project: `Ochtendcheck-in` +- Fase: `Release 1` +- Afhankelijk van: `ST-202` + +## Definition of done +Gebruiker ziet direct score, niveau en budget.",Backlog,,high,,Ochtendcheck-in,,,"release:r1, epic:ochtendcheckin, type:ui",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Unit tests voor score- en budgetmapping,"Voeg tests toe voor grenswaarden en budgetberekening. + +## Context +- Bron backlog-ID: `ST-205` +- Epic / project: `Ochtendcheck-in` +- Fase: `Release 1` +- Afhankelijk van: `ST-203` + +## Definition of done +Belangrijkste grenswaarden zijn afgedekt.",Backlog,,high,,Ochtendcheck-in,,,"release:r1, epic:ochtendcheckin, type:qa",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Datamodel voor activiteiten implementeren,"Implementeer tabellen en seed-data voor activiteiten, categorieen en skip-redenen. + +## Context +- Bron backlog-ID: `ST-301` +- Epic / project: `Dagplanning` +- Fase: `Release 1` +- Afhankelijk van: `EPIC-03` + +## Definition of done +Migraties en seed-data voor categorieen en skip-redenen zijn aanwezig.",Backlog,,high,,Dagplanning,,,"release:r1, epic:dagplanning, type:build",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Planningformulier bouwen,"Bouw het formulier voor naam, categorie, duur, impact en prioriteit. + +## Context +- Bron backlog-ID: `ST-302` +- Epic / project: `Dagplanning` +- Fase: `Release 1` +- Afhankelijk van: `ST-301` + +## Definition of done +Activiteit kan met naam, categorie, duur, impact en prioriteit worden aangemaakt.",Backlog,,high,,Dagplanning,,,"release:r1, epic:dagplanning, type:ui",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Autocomplete op eerdere activiteiten toevoegen,"Maak snelle herselectie van eerder gebruikte activiteiten mogelijk. + +## Context +- Bron backlog-ID: `ST-303` +- Epic / project: `Dagplanning` +- Fase: `Release 1` +- Afhankelijk van: `ST-302` + +## Definition of done +Veelgebruikte activiteiten zijn snel opnieuw te kiezen.",Backlog,,high,,Dagplanning,,,"release:r1, epic:dagplanning, type:ux",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,EnergyMeter en lopend totaal implementeren,"Toon het lopende totaal ten opzichte van het dagbudget. + +## Context +- Bron backlog-ID: `ST-304` +- Epic / project: `Dagplanning` +- Fase: `Release 1` +- Afhankelijk van: `ST-302` + +## Definition of done +Totaal update direct na elke wijziging.",Backlog,,high,,Dagplanning,,,"release:r1, epic:dagplanning, type:logic-ui",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Overschrijdingswaarschuwing toevoegen,"Toon een niet-blokkerende waarschuwing bij budgetoverschrijding. + +## Context +- Bron backlog-ID: `ST-305` +- Epic / project: `Dagplanning` +- Fase: `Release 1` +- Afhankelijk van: `ST-304` + +## Definition of done +Gebruiker krijgt feedback maar behoudt regie.",Backlog,,high,,Dagplanning,,,"release:r1, epic:dagplanning, type:ux",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,"Statusflows voor uitgevoerd, geskipt en aangepast bouwen","Implementeer de drie kernstatussen voor activiteiten. + +## Context +- Bron backlog-ID: `ST-401` +- Epic / project: `Evaluatie en dagoverzicht` +- Fase: `Release 1` +- Afhankelijk van: `EPIC-04` + +## Definition of done +Alle drie de statussen worden correct opgeslagen.",Backlog,,high,,Evaluatie en dagoverzicht,,,"release:r1, epic:evaluatie, type:build",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Evaluatievelden toevoegen,"Voeg contextuele velden toe voor werkelijke duur, fatigue en skip-reden. + +## Context +- Bron backlog-ID: `ST-402` +- Epic / project: `Evaluatie en dagoverzicht` +- Fase: `Release 1` +- Afhankelijk van: `ST-401` + +## Definition of done +Contextuele velden verschijnen passend per status.",Backlog,,high,,Evaluatie en dagoverzicht,,,"release:r1, epic:evaluatie, type:ui",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Ongeplande activiteiten ondersteunen,"Maak het mogelijk een ongeplande activiteit toe te voegen en mee te tellen. + +## Context +- Bron backlog-ID: `ST-403` +- Epic / project: `Evaluatie en dagoverzicht` +- Fase: `Release 1` +- Afhankelijk van: `ST-401` + +## Definition of done +Ongeplande activiteit telt mee in werkelijke totalen.",Backlog,,high,,Evaluatie en dagoverzicht,,,"release:r1, epic:evaluatie, type:build",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Dagoverzicht bouwen,"Bouw het overzicht met gepland versus uitgevoerd en statusverdeling. + +## Context +- Bron backlog-ID: `ST-404` +- Epic / project: `Evaluatie en dagoverzicht` +- Fase: `Release 1` +- Afhankelijk van: `ST-401` + +## Definition of done +Gepland versus uitgevoerd en statusverdeling zijn zichtbaar.",Backlog,,high,,Evaluatie en dagoverzicht,,,"release:r1, epic:evaluatie, type:ui",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Dagaggregaties server-side implementeren,"Bereken dagtotalen en samenvatting server-side. + +## Context +- Bron backlog-ID: `ST-405` +- Epic / project: `Evaluatie en dagoverzicht` +- Fase: `Release 1` +- Afhankelijk van: `ST-404` + +## Definition of done +Dagtotalen blijven consistent met individuele records.",Backlog,,high,,Evaluatie en dagoverzicht,,,"release:r1, epic:evaluatie, type:logic",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Weekoverzichtspagina bouwen,"Bouw de pagina voor weekterugblik. + +## Context +- Bron backlog-ID: `ST-501` +- Epic / project: `Weekoverzicht en inzichten` +- Fase: `Release 1` +- Afhankelijk van: `EPIC-05` + +## Definition of done +Gebruiker kan per week terugkijken.",Backlog,,medium,,Weekoverzicht en inzichten,,,"release:r1, epic:weekoverzicht, type:ui",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Weekaggregaties bouwen,"Bereken gemiddelde energie en budget-adherence per week. + +## Context +- Bron backlog-ID: `ST-502` +- Epic / project: `Weekoverzicht en inzichten` +- Fase: `Release 1` +- Afhankelijk van: `ST-501` + +## Definition of done +Gemiddelde energie en budget-adherence zijn herleidbaar en testbaar.",Backlog,,medium,,Weekoverzicht en inzichten,,,"release:r1, epic:weekoverzicht, type:logic",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Skip-patronen zichtbaar maken,"Toon patronen rond skip-redenen en terugkerende activiteiten. + +## Context +- Bron backlog-ID: `ST-503` +- Epic / project: `Weekoverzicht en inzichten` +- Fase: `Release 1` +- Afhankelijk van: `ST-502` + +## Definition of done +Patronen worden alleen bij voldoende data getoond.",Backlog,,medium,,Weekoverzicht en inzichten,,,"release:r1, epic:weekoverzicht, type:logic-ui",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Insightregels met datadrempels definiëren,"Leg guardrails vast voor het tonen van patronen. + +## Context +- Bron backlog-ID: `ST-504` +- Epic / project: `Weekoverzicht en inzichten` +- Fase: `Release 1` +- Afhankelijk van: `ST-502` + +## Definition of done +Geen patroonclaim zonder guardrails.",Backlog,,medium,,Weekoverzicht en inzichten,,,"release:r1, epic:weekoverzicht, type:safety-logic",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Insightcopy toetsen op niet-medische formulering,"Controleer alle inzichtteksten op wellness-positionering. + +## Context +- Bron backlog-ID: `ST-505` +- Epic / project: `Weekoverzicht en inzichten` +- Fase: `Release 1` +- Afhankelijk van: `ST-504` + +## Definition of done +Alle teksten blijven binnen wellness-positionering.",Backlog,,medium,,Weekoverzicht en inzichten,,,"release:r1, epic:weekoverzicht, type:content",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,ReflectionCheckIn-model en flow implementeren,"Implementeer model en basisflow voor reflectie na een zwaardere dag. + +## Context +- Bron backlog-ID: `ST-601` +- Epic / project: `Reflectie en reminders` +- Fase: `Release 1` +- Afhankelijk van: `EPIC-05` + +## Definition of done +Reflecties kunnen aan eerdere dagen gekoppeld worden.",Backlog,,medium,,Reflectie en reminders,,,"release:r1, epic:reflectie, type:build",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Joblogica voor T+1/T+2 prompts bouwen,"Bepaal server-side welke gebruikers een reflectieprompt moeten zien. + +## Context +- Bron backlog-ID: `ST-602` +- Epic / project: `Reflectie en reminders` +- Fase: `Release 1` +- Afhankelijk van: `ST-601` + +## Definition of done +Prompts worden niet dubbel of willekeurig aangemaakt.",Backlog,,medium,,Reflectie en reminders,,,"release:r1, epic:reflectie, type:logic-ops",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Instellingsoptie voor reflectieprompts toevoegen,"Maak opt-in beheerbaar vanuit instellingen. + +## Context +- Bron backlog-ID: `ST-603` +- Epic / project: `Reflectie en reminders` +- Fase: `Release 1` +- Afhankelijk van: `ST-104` + +## Definition of done +Gebruiker beheert opt-in zelfstandig.",Backlog,,medium,,Reflectie en reminders,,,"release:r1, epic:reflectie, type:build",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Korte reflectie-UI bouwen,"Bouw een lichte, niet-medische reflectieprompt. + +## Context +- Bron backlog-ID: `ST-604` +- Epic / project: `Reflectie en reminders` +- Fase: `Release 1` +- Afhankelijk van: `ST-602` + +## Definition of done +Prompt voelt licht en niet medisch.",Backlog,,medium,,Reflectie en reminders,,,"release:r1, epic:reflectie, type:ui",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Rate limiting toevoegen,"Bescherm kritieke auth- en mutatieroutes tegen misbruik. + +## Context +- Bron backlog-ID: `ST-701` +- Epic / project: `Security en operations` +- Fase: `Release 1` +- Afhankelijk van: `EPIC-02` + +## Definition of done +Kritieke auth- en mutatieroutes zijn beschermd.",Backlog,,high,,Security en operations,,,"release:r1, epic:security-ops, type:security",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Logging voor fouten en kernmutaties inrichten,"Log fouten, loginproblemen en belangrijke mutaties centraal. + +## Context +- Bron backlog-ID: `ST-702` +- Epic / project: `Security en operations` +- Fase: `Release 1` +- Afhankelijk van: `EPIC-03,EPIC-04,EPIC-05` + +## Definition of done +Kerngebeurtenissen zijn herleidbaar.",Backlog,,high,,Security en operations,,,"release:r1, epic:security-ops, type:ops",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Back-up en herstelstrategie documenteren en testen,"Werk het restore-pad uit en valideer het. + +## Context +- Bron backlog-ID: `ST-703` +- Epic / project: `Security en operations` +- Fase: `Release 1` +- Afhankelijk van: `EPIC-01` + +## Definition of done +Restore-pad is aantoonbaar gevalideerd.",Backlog,,high,,Security en operations,,,"release:r1, epic:security-ops, type:ops",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Secrets- en environmentbeheer formaliseren,"Leg veilig beheer van secrets en omgevingen vast voor Vercel en Supabase. + +## Context +- Bron backlog-ID: `ST-704` +- Epic / project: `Security en operations` +- Fase: `Release 1` +- Afhankelijk van: `EPIC-01` + +## Definition of done +Geen secrets in code of onveilige configuratie.",Backlog,,high,,Security en operations,,,"release:r1, epic:security-ops, type:security-ops",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,RLS-policy tests toevoegen,"Test aantoonbaar dat owner-only toegang technisch afgedwongen is. + +## Context +- Bron backlog-ID: `ST-705` +- Epic / project: `Security en operations` +- Fase: `Release 1` +- Afhankelijk van: `ST-105` + +## Definition of done +Owner-only model is aantoonbaar afgedwongen.",Backlog,,high,,Security en operations,,,"release:r1, epic:security-ops, type:qa-security",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Kernflows handmatig testen,"Voer end-to-end handmatige tests uit op mobiel en desktop. + +## Context +- Bron backlog-ID: `ST-801` +- Epic / project: `Launch-readiness` +- Fase: `Release 1` +- Afhankelijk van: `EPIC-05,EPIC-06,EPIC-07` + +## Definition of done +Belangrijkste user journeys zijn geverifieerd.",Backlog,,high,,Launch-readiness,,,"release:r1, epic:launch, type:qa",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Accessibility check uitvoeren,"Controleer touch targets, contrast en reduced motion. + +## Context +- Bron backlog-ID: `ST-802` +- Epic / project: `Launch-readiness` +- Fase: `Release 1` +- Afhankelijk van: `EPIC-05` + +## Definition of done +Touch targets, contrast en reduced motion zijn gecontroleerd.",Backlog,,high,,Launch-readiness,,,"release:r1, epic:launch, type:qa-ux",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Copy review doen,"Controleer onboarding, dashboardteksten en inzichten op wellness-copy. + +## Context +- Bron backlog-ID: `ST-803` +- Epic / project: `Launch-readiness` +- Fase: `Release 1` +- Afhankelijk van: `EPIC-06` + +## Definition of done +Geen medische of zorgdossier-taal in release 1.",Backlog,,high,,Launch-readiness,,,"release:r1, epic:launch, type:content-safety",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,DPIA-input en datacatalogus afronden,"Rond privacyartefacten af op basis van de werkelijke MVP-scope. + +## Context +- Bron backlog-ID: `ST-804` +- Epic / project: `Launch-readiness` +- Fase: `Release 1` +- Afhankelijk van: `EPIC-08` + +## Definition of done +Pre-launch privacyartefacten zijn gereed.",Backlog,,high,,Launch-readiness,,,"release:r1, epic:launch, type:privacy",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, +,Inspannings Monitor,Go-live checklist opstellen,"Maak een checklist voor launch, rollback, monitoring en incidentrespons. + +## Context +- Bron backlog-ID: `ST-805` +- Epic / project: `Launch-readiness` +- Fase: `Release 1` +- Afhankelijk van: `EPIC-08` + +## Definition of done +Team weet hoe launch en eerste incidentrespons verloopt.",Backlog,,high,,Launch-readiness,,,"release:r1, epic:launch, type:ops",,,,,2026-04-17T00:00:00Z,,,,,,,,,Release 1 MVP,,, diff --git a/docs/backlog/inspannings-monitor-linear-projects.csv b/docs/backlog/inspannings-monitor-linear-projects.csv new file mode 100644 index 0000000..61de276 --- /dev/null +++ b/docs/backlog/inspannings-monitor-linear-projects.csv @@ -0,0 +1,10 @@ +Name,Summary,Status,Milestones,Creator,Lead,Members,Created At,Started At,Target Date,Completed At,Canceled At,Teams,Initiatives +Fundament,"Leg de technische basis voor release 1 met projectsetup, omgevingen, UI-basis en foutafhandeling.",Planned,,,,,2026-04-17T00:00:00Z,,,,,Inspannings Monitor,Release 1 MVP +Auth en profiel,"Implementeer accounttoegang, profieldata, onboarding en basisinstellingen per gebruiker.",Planned,,,,,2026-04-17T00:00:00Z,,,,,Inspannings Monitor,Release 1 MVP +Ochtendcheck-in,"Bouw de ochtendcheck-in met energiescore, slaapkwaliteit en automatische budgetafleiding.",Planned,,,,,2026-04-17T00:00:00Z,,,,,Inspannings Monitor,Release 1 MVP +Dagplanning,"Maak plannen van activiteiten mogelijk met budgetfeedback, energie-impact en prioriteit.",Planned,,,,,2026-04-17T00:00:00Z,,,,,Inspannings Monitor,Release 1 MVP +Evaluatie en dagoverzicht,Maak evaluatie van activiteiten en een dagelijks overzicht van gepland versus uitgevoerd mogelijk.,Planned,,,,,2026-04-17T00:00:00Z,,,,,Inspannings Monitor,Release 1 MVP +Weekoverzicht en inzichten,"Voeg weekterugblik, eenvoudige aggregaties en veilige patroonweergave toe zonder medische claims.",Backlog,,,,,2026-04-17T00:00:00Z,,,,,Inspannings Monitor,Release 1 MVP +Reflectie en reminders,Voeg optionele T+1/T+2 reflectieprompts en lichte reminderlogica toe voor zwaardere dagen.,Backlog,,,,,2026-04-17T00:00:00Z,,,,,Inspannings Monitor,Release 1 MVP +Security en operations,"Borg logging, rate limiting, secrets, back-up en owner-only toegangscontrole voor echte gebruikersintroductie.",Planned,,,,,2026-04-17T00:00:00Z,,,,,Inspannings Monitor,Release 1 MVP +Launch-readiness,"Rond QA, copy review, accessibility checks, DPIA-input en go-live checks voor release 1 af.",Backlog,,,,,2026-04-17T00:00:00Z,,,,,Inspannings Monitor,Release 1 MVP diff --git a/docs/backlog/inspannings-monitor-linear-projects.md b/docs/backlog/inspannings-monitor-linear-projects.md new file mode 100644 index 0000000..9f4b49f --- /dev/null +++ b/docs/backlog/inspannings-monitor-linear-projects.md @@ -0,0 +1,121 @@ +# Inspannings Monitor Linear Projects + +Dit document geeft per `Linear Project` een aanbevolen naam, samenvatting, status en praktisch gebruik. + +## Initiative + +### Release 1 MVP + +- Aanbevolen status: `Planned` +- Samenvatting: `Wellness-first MVP voor individuele gebruikers, met een lichte plan-doe-evalueer flow voor energiemanagement.` +- Doel: alle release-1 projecten samenbrengen onder één duidelijk productdoel + +Volgens de actuele `Linear`-documentatie zijn initiatives workspace-breed, bedoeld om projecten te groeperen rond een organisatorisch doel, en hebben ze een lifecycle met `Planned`, `Active` en `Completed`. Voor jullie huidige fase is `Planned` de juiste startstatus. + +## Projects + +### 1. Fundament + +- Aanbevolen status: `Planned` +- Samenvatting: `Leg de technische basis voor release 1 met projectsetup, omgevingen, UI-basis en foutafhandeling.` +- Waarom dit een project is: + - duidelijke uitkomst + - vroeg in de planning + - direct blokkerend voor alle andere projecten + +### 2. Auth en profiel + +- Aanbevolen status: `Planned` +- Samenvatting: `Implementeer accounttoegang, profieldata, onboarding en basisinstellingen per gebruiker.` +- Waarom dit een project is: + - eigen domein met duidelijke oplevering + - nodig voor alle persoonlijke flows + +### 3. Ochtendcheck-in + +- Aanbevolen status: `Planned` +- Samenvatting: `Bouw de ochtendcheck-in met energiescore, slaapkwaliteit en automatische budgetafleiding.` +- Waarom dit een project is: + - centrale start van de kerngebruikersreis + - duidelijke functionele grens + +### 4. Dagplanning + +- Aanbevolen status: `Planned` +- Samenvatting: `Maak plannen van activiteiten mogelijk met budgetfeedback, energie-impact en prioriteit.` +- Waarom dit een project is: + - aparte UX- en datamodelscope + - kern van de planfase + +### 5. Evaluatie en dagoverzicht + +- Aanbevolen status: `Planned` +- Samenvatting: `Maak evaluatie van activiteiten en een dagelijks overzicht van gepland versus uitgevoerd mogelijk.` +- Waarom dit een project is: + - sluit de kernloop functioneel af + - levert directe gebruikerswaarde op + +### 6. Weekoverzicht en inzichten + +- Aanbevolen status: `Backlog` +- Samenvatting: `Voeg weekterugblik, eenvoudige aggregaties en veilige patroonweergave toe zonder medische claims.` +- Waarom dit een project is: + - logisch vervolg op de basisflow + - minder blokkerend dan de eerste vijf projecten + +### 7. Reflectie en reminders + +- Aanbevolen status: `Backlog` +- Samenvatting: `Voeg optionele T+1/T+2 reflectieprompts en lichte reminderlogica toe voor zwaardere dagen.` +- Waarom dit een project is: + - waardevol, maar niet nodig om de eerste basisflow werkend te krijgen + - goed af te bakenen als apart project + +### 8. Security en operations + +- Aanbevolen status: `Planned` +- Samenvatting: `Borg logging, rate limiting, secrets, back-up en owner-only toegangscontrole voor echte gebruikersintroductie.` +- Waarom dit een project is: + - releasekritisch + - loopt parallel aan featurebouw + +### 9. Launch-readiness + +- Aanbevolen status: `Backlog` +- Samenvatting: `Rond QA, copy review, accessibility checks, DPIA-input en go-live checks voor release 1 af.` +- Waarom dit een project is: + - hoort als apart releaseproject zichtbaar te zijn + - wordt pas later actief, maar moet wel vroeg bestaan + +## Aanbevolen praktische werkwijze in Linear + +- Gebruik `Projects` voor deze 9 grotere werkstromen. +- Gebruik `Issues` voor de individuele stories. +- Gebruik voorlopig geen milestones. +- Gebruik voorlopig geen cycles. +- Zet een project pas op `In Progress` zodra er daadwerkelijk actief werk in loopt. +- Laat `Weekoverzicht en inzichten`, `Reflectie en reminders` en `Launch-readiness` aanvankelijk op `Backlog` staan. + +## Aanbevolen eerste statusverdeling + +### Start op `Planned` + +- `Fundament` +- `Auth en profiel` +- `Ochtendcheck-in` +- `Dagplanning` +- `Evaluatie en dagoverzicht` +- `Security en operations` + +### Start op `Backlog` + +- `Weekoverzicht en inzichten` +- `Reflectie en reminders` +- `Launch-readiness` + +## Bronnen + +- [Linear Project status](https://linear.app/docs/project-status) +- [Linear Projects](https://linear.app/docs/projects) +- [Linear Project overview](https://linear.app/docs/project-overview) +- [Linear Initiatives](https://linear.app/docs/initiatives) diff --git a/docs/backlog/inspannings-monitor-linear-setup.md b/docs/backlog/inspannings-monitor-linear-setup.md new file mode 100644 index 0000000..48e9e18 --- /dev/null +++ b/docs/backlog/inspannings-monitor-linear-setup.md @@ -0,0 +1,112 @@ +# Inspannings Monitor in Linear + +Dit document vertaalt de huidige backlog en documentatieset naar een praktische `Linear`-inrichting. + +## Waarom deze inrichting + +Volgens de actuele `Linear`-documentatie is een workspace het hoogste niveau en beveelt Linear in de praktijk aan om per bedrijf één workspace te gebruiken. Ook is een issue in Linear altijd gekoppeld aan precies één team, terwijl projecten grotere eenheden van werk zijn met een duidelijke uitkomst en geplande afronding. + +Voor `Inspannings Monitor` betekent dat: houd het in het begin eenvoudig en maak één team voor release 1. + +## Aanbevolen structuur + +### Workspace + +- `Inspannings Monitor` + +### Team + +- `Inspannings Monitor` + +Gebruik één top-level team voor release 1. Dat past goed bij het feit dat release 1 alleen voor individuele gebruikers is en dat de backlog nog niet over meerdere product- of engineeringteams verdeeld hoeft te worden. + +### Initiative + +- `Release 1 MVP` + +Gebruik één initiative als overkoepelend kader voor de eerste release. + +### Projects + +Maak de huidige epics als `Projects` aan in Linear: + +1. `Fundament` +2. `Auth en profiel` +3. `Ochtendcheck-in` +4. `Dagplanning` +5. `Evaluatie en dagoverzicht` +6. `Weekoverzicht en inzichten` +7. `Reflectie en reminders` +8. `Security en operations` +9. `Launch-readiness` + +## Aanbevolen labels + +Houd labels klein en functioneel: + +- `release:r1` +- `type:build` +- `type:ui` +- `type:logic` +- `type:qa` +- `type:security` +- `type:ops` +- `type:ux` +- `type:content` +- `type:privacy` +- `epic:fundament` +- `epic:auth-profiel` +- `epic:ochtendcheckin` +- `epic:dagplanning` +- `epic:evaluatie` +- `epic:weekoverzicht` +- `epic:reflectie` +- `epic:security-ops` +- `epic:launch` + +## Aanbevolen statusgebruik + +Voor de eerste release zou ik de workflow simpel houden: + +- `Backlog` +- `Todo` +- `In Progress` +- `Done` +- `Canceled` + +Begin zonder extra workflowstappen zoals `In Review`, tenzij jullie daar direct echt behoefte aan hebben. Linear is sterk juist wanneer je niet te vroeg te veel proceslagen toevoegt. + +## Hoe ik de backlog heb gemapt + +- `Epics` uit onze backlog zijn gemapt naar `Projects` in Linear. +- `Stories` zijn gemapt naar `Issues`. +- `P0` is gemapt naar `high`. +- `P1` is gemapt naar `medium`. +- Alle issues starten in `Backlog`. +- Het labelpakket uit de bestaande backlog blijft behouden. + +## Aanbevolen importaanpak + +1. Maak in Linear eerst de workspace en het team aan. +2. Maak daarna handmatig de `Initiative` en de negen `Projects` aan. +3. Gebruik het gegenereerde bestand [inspannings-monitor-linear-import-issues.csv](./inspannings-monitor-linear-import-issues.csv). +4. Gebruik de importroute die Linear documenteert voor `Other`-bronnen / `Linear CSV` via hun importer/CLI. +5. Controleer na import of `Project` en `Initiatives` goed zijn overgekomen. +6. Als die velden niet automatisch gekoppeld blijken, kun je in Linear issues per `epic:*` label filteren en daarna in bulk aan het juiste project koppelen. + +## Belangrijke noot over de CSV + +De gegenereerde CSV volgt de actuele exportkoppen van Linear, zodat het formaat dicht op het eigen model van Linear ligt. De importdocumentatie noemt expliciet onder meer `Title`, `Description`, `Priority`, `Status`, `Assignee`, `Created`, `Completed`, `Labels` en `Estimate` als relevante velden voor een `Other`-import. Ik heb daarnaast ook `Team`, `Project` en `Initiatives` ingevuld op basis van Linear’s eigen exportstructuur. Daardoor is de CSV zo bruikbaar mogelijk, maar het blijft verstandig om na import even te verifiëren dat projectkoppelingen exact zijn overgekomen. + +## Cycles + +Ik zou `Cycles` nog niet meteen aanzetten. Eerst de basisflow goed krijgen, daarna pas time-boxing toevoegen. Linear ondersteunt cycles per team, maar voor deze eerste release levert een eenvoudige project- en issue-structuur waarschijnlijk meer rust op dan direct sprintdiscipline. + +## Bestanden in deze map + +- [inspannings-monitor-backlog.md](./inspannings-monitor-backlog.md) +- [inspannings-monitor-backlog.csv](./inspannings-monitor-backlog.csv) +- [inspannings-monitor-linear-import-issues.csv](./inspannings-monitor-linear-import-issues.csv) +- [inspannings-monitor-linear-projects.csv](./inspannings-monitor-linear-projects.csv) +- [inspannings-monitor-linear-projects.md](./inspannings-monitor-linear-projects.md) +- [generate_linear_backlog_assets.py](./generate_linear_backlog_assets.py) diff --git a/docs/energypace-01-productkader-en-positionering-v05.docx b/docs/energypace-01-productkader-en-positionering-v05.docx new file mode 100644 index 0000000000000000000000000000000000000000..e19469a366d8c7edb57cc0b9833d31ef780ab465 GIT binary patch literal 40525 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 WKQ6L}tpHX2a`6v~|3T$tw4DZQ{dwwt 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 literal 0 HcmV?d00001 diff --git a/docs/generate_inspannings_monitor_docs.py b/docs/generate_inspannings_monitor_docs.py new file mode 100644 index 0000000..e094a42 --- /dev/null +++ b/docs/generate_inspannings_monitor_docs.py @@ -0,0 +1,1207 @@ +from pathlib import Path + +from docx import Document +from docx.enum.text import WD_ALIGN_PARAGRAPH +from docx.oxml import OxmlElement +from docx.oxml.ns import qn +from docx.opc.constants import RELATIONSHIP_TYPE as RT +from docx.shared import Inches, Pt + + +BASE_DIR = Path("/Users/janpetervisser/Development/third/docs") +PRODUCT_NAME = "Inspannings Monitor" +DATE_TEXT = "17 april 2026" +POSITIONING = "Wellness/self-management" +LANGUAGES = "Nederlands" +HOSTING = "Vercel" +DATABASE = "Supabase PostgreSQL" +AUTH = "Supabase Auth" +AUDIENCE = "Volwassenen" + + +def init_doc(title_text: str, subtitle_text: str) -> Document: + doc = Document() + section = doc.sections[0] + section.top_margin = Inches(0.8) + section.bottom_margin = Inches(0.8) + section.left_margin = Inches(0.8) + section.right_margin = Inches(0.8) + + styles = doc.styles + styles["Normal"].font.name = "Aptos" + styles["Normal"].font.size = Pt(10.5) + for style_name in ["Title", "Subtitle", "Heading 1", "Heading 2", "Heading 3"]: + styles[style_name].font.name = "Aptos" + styles["Title"].font.size = Pt(22) + styles["Subtitle"].font.size = Pt(11) + styles["Heading 1"].font.size = Pt(15) + styles["Heading 2"].font.size = Pt(12.5) + styles["Heading 3"].font.size = Pt(11) + styles["Heading 1"].font.bold = True + styles["Heading 2"].font.bold = True + styles["Heading 3"].font.bold = True + + title = doc.add_paragraph(style="Title") + title.alignment = WD_ALIGN_PARAGRAPH.CENTER + title.add_run(title_text) + subtitle = doc.add_paragraph(style="Subtitle") + subtitle.alignment = WD_ALIGN_PARAGRAPH.CENTER + subtitle.add_run(subtitle_text) + doc.add_paragraph("") + return doc + + +def add_hyperlink(paragraph, text: str, url: str) -> None: + part = paragraph.part + rel_id = part.relate_to(url, RT.HYPERLINK, is_external=True) + hyperlink = OxmlElement("w:hyperlink") + hyperlink.set(qn("r:id"), rel_id) + + run = OxmlElement("w:r") + run_props = OxmlElement("w:rPr") + color = OxmlElement("w:color") + color.set(qn("w:val"), "0563C1") + run_props.append(color) + underline = OxmlElement("w:u") + underline.set(qn("w:val"), "single") + run_props.append(underline) + run.append(run_props) + text_elem = OxmlElement("w:t") + text_elem.text = text + run.append(text_elem) + hyperlink.append(run) + paragraph._p.append(hyperlink) + + +def p(doc: Document, text: str = "", style: str = "Normal") -> None: + doc.add_paragraph(text, style=style) + + +def bullets(doc: Document, items) -> None: + for item in items: + doc.add_paragraph(item, style="List Bullet") + + +def numbered(doc: Document, items) -> None: + for item in items: + doc.add_paragraph(item, style="List Number") + + +def table(doc: Document, headers, rows) -> None: + tbl = doc.add_table(rows=1, cols=len(headers)) + tbl.style = "Table Grid" + for idx, header in enumerate(headers): + cell = tbl.rows[0].cells[idx] + cell.text = header + for para in cell.paragraphs: + for run in para.runs: + run.bold = True + for row in rows: + cells = tbl.add_row().cells + for idx, value in enumerate(row): + cells[idx].text = value + doc.add_paragraph("") + + +def set_footer(doc: Document, text: str) -> None: + footer = doc.sections[0].footer.paragraphs[0] + footer.alignment = WD_ALIGN_PARAGRAPH.CENTER + footer.text = text + + +def build_productkader() -> None: + doc = init_doc( + f"{PRODUCT_NAME} Productkader en Positionering v0.6", + f"{POSITIONING}-route met expliciet opengehouden future medical track\n{DATE_TEXT}", + ) + p(doc, "1. Documentdoel", "Heading 1") + p( + doc, + f"Dit document legt de strategische productpositie van {PRODUCT_NAME} vast voor de eerstvolgende versies. " + "Het voorkomt dat marketing, product, ontwerp en engineering verschillende aannames gebruiken over wat het product wel en niet is. " + "De gekozen route is bewust: eerst een wellness/self-management product, later eventueel een aparte medische producttrack als daar bewijs, middelen en governance voor zijn.", + ) + + p(doc, "2. Besluit", "Heading 1") + p( + doc, + f"{PRODUCT_NAME} wordt in de MVP en de direct daaropvolgende releases gepositioneerd als een wellness/self-management product. " + "Het ondersteunt zelfobservatie, planning en reflectie rondom energie, belasting en herstel. " + "Het product is in deze fase uitdrukkelijk geen medisch hulpmiddel, geen diagnostisch systeem en geen behandelondersteunend klinisch systeem.", + ) + + p(doc, "3. Intended Use", "Heading 1") + p( + doc, + f"{PRODUCT_NAME} helpt {AUDIENCE.lower()} gebruikers met wisselende of beperkte energiereserves om hun dagelijkse activiteiten te plannen, " + "uit te voeren en te evalueren in relatie tot hun ervaren energie. Het product ondersteunt gebruikers bij zelfmanagement door een eenvoudige plan-doe-evalueer cyclus, " + "wekelijkse terugblik en optionele reflectieprompts na zwaardere dagen.", + ) + + p(doc, "4. Non-Intended Use", "Heading 1") + bullets( + doc, + [ + f"{PRODUCT_NAME} is niet bedoeld voor diagnose, behandeling, preventie, monitoring of voorspelling van een ziekte in medische zin.", + f"{PRODUCT_NAME} geeft geen patiëntspecifiek medisch advies, geen triage en geen therapeutische aanbevelingen.", + f"{PRODUCT_NAME} is niet bedoeld om behandelbesluiten van een arts of andere zorgprofessional te sturen.", + f"{PRODUCT_NAME} is niet bedoeld als noodhulpmiddel of voor spoedsituaties.", + f"{PRODUCT_NAME} is niet bedoeld als formele bron voor opname in een patiëntendossier in de wellness-first fase.", + ], + ) + + p(doc, "5. Productprincipes", "Heading 1") + bullets( + doc, + [ + "Minimale gebruikslast: de gebruiker heeft weinig energie; elke interactie moet zuinig zijn.", + "Geen oordeel: het product toont patronen, geen morele duiding.", + "Privacy by default: alleen noodzakelijke data, standaard zo beperkt mogelijk.", + "Uitlegbare inzichten: transparante regels boven slimme maar ondoorzichtige uitkomsten.", + "Wellness claims alleen: copy en UI mogen de gekozen intended use niet overschrijden.", + "Medical-ready fundament: documentatie, logging en architectuur moeten latere aanscherping mogelijk maken zonder nu al medische claims te maken.", + ], + ) + + p(doc, "6. Primaire doelgroep", "Heading 1") + bullets( + doc, + [ + f"{AUDIENCE} met chronische of terugkerende vermoeidheid die meer grip willen op hun dagindeling en energieverdeling.", + "Mensen die baat hebben bij gestructureerde zelfobservatie zonder behoefte aan een klinische app of zorgintegratie in de eerste fase.", + ], + ) + + p(doc, "7. Rollen in de wellness-first fase", "Heading 1") + table( + doc, + ["Rol", "Toegelaten in MVP", "Toelichting"], + [ + ["Gebruiker/eigenaar", "Ja", "Beheert eigen gegevens, check-ins, activiteiten en persoonlijke instellingen."], + ["Zorgverlener", "Nee", "Geen viewerrol in release 1; blijft buiten scope tot een latere fase."], + ["Naaste/mantelzorger", "Nee", "Geen live delen in release 1; privacy en veiligheidskaders eerst aanscherpen."], + ["Admin/support", "Beperkt", "Alleen systeembeheer waar strikt noodzakelijk, met logging en rolgebonden toegang."], + ], + ) + + p(doc, "8. MVP-scope", "Heading 1") + bullets( + doc, + [ + "Ochtend energie check-in met vaste schaal en slaapkwaliteit.", + "Activiteiten plannen voor de dag binnen een eenvoudig energiebudgetmodel.", + "Activiteiten markeren als uitgevoerd, geskipt of aangepast.", + "Dagoverzicht en weekoverzicht met eenvoudige, uitlegbare patronen.", + "Optionele reflectieprompt op T+1 en T+2 na een zware of overschreden dag.", + "Basisinstellingen voor taal, timezone, zichtbaarheid van energiebudgetpunten en herinneringen.", + ], + ) + + p(doc, "9. Uitdrukkelijk buiten scope voor MVP", "Heading 1") + bullets( + doc, + [ + "Delen met zorgverleners, naasten of andere viewers.", + "PDF-export voor patiëntendossiers of formele zorgrapportage.", + "Medicatie-tracking, drugs/middelen-logging, nicotine-logging en andere extra gevoelige habit-tracking.", + "AI-gegenereerde inzichten of vrije tekstinterpretatie door een model.", + "Claims over voorspellen van PEM, ziekteverloop of behandeladvies.", + "Integraties met EPD, wearables of externe medische databronnen.", + ], + ) + + p(doc, "10. Claim- en copy-guardrails", "Heading 1") + bullets( + doc, + [ + "Wel toegestaan: “helpt je plannen”, “maakt patronen zichtbaar”, “ondersteunt zelfmanagement”, “helpt je terugkijken op je energieverdeling”.", + "Niet toegestaan: “voorspelt crashes”, “detecteert PEM”, “ondersteunt behandelbesluiten”, “geschikt voor patiëntendossier”, “klinisch gevalideerd” tenzij dat later aantoonbaar klopt.", + "Elke insightkaart gebruikt patroon-taal: “in jouw data lijkt … samen te hangen met …”, nooit causale taal.", + "Elke reflectieprompt verwijst niet naar risico of medische noodzaak, maar naar zelfreflectie en terugblik.", + ], + ) + + p(doc, "11. Bevestigde productkeuzes voor deze versie", "Heading 1") + table( + doc, + ["Onderwerp", "Besluit"], + [ + ["Productnaam", PRODUCT_NAME], + ["Doelgroep", AUDIENCE], + ["Release 1", "Alleen individuele gebruikers"], + ["Voertaal eerste release", LANGUAGES], + ["Hosting", HOSTING], + ["Database", DATABASE], + ["Authenticatie", AUTH], + ], + ) + + p(doc, "12. Voorwaarden om later een medische producttrack te starten", "Heading 1") + numbered( + doc, + [ + "Er is een expliciet strategisch besluit om intended use te verbreden naar een medisch doel.", + "Er is aparte documentatie voor de medische variant of medische release-tak.", + "Claims, clinician workflows en rapportage worden opnieuw beoordeeld op MDR-consequenties.", + "Er is budget en eigenaarschap voor risicomanagement, klinische evaluatie, kwaliteitsmanagement en post-market verplichtingen.", + "De wellness-versie en de toekomstige medische variant krijgen duidelijke change control en traceerbaarheid.", + ], + ) + + p(doc, "13. Succescriteria voor de wellness-first fase", "Heading 1") + bullets( + doc, + [ + "Gebruikers kunnen de kernloop dagelijks gebruiken zonder hoge cognitieve belasting.", + "Gebruikers ervaren de app als ondersteunend en niet normatief of veroordelend.", + "De eerste release verwerkt alleen data die nodig is voor het beoogde wellness-doel.", + "De documentatie is sterk genoeg voor productreview, privacyreview en securityreview.", + "Het product blijft inhoudelijk en qua copy binnen de wellness-positionering.", + ], + ) + + set_footer(doc, f"{PRODUCT_NAME} Productkader en Positionering v0.6") + doc.save(BASE_DIR / "inspannings-monitor-01-productkader-en-positionering-v06.docx") + + +def build_functionele_specificatie() -> None: + doc = init_doc( + f"{PRODUCT_NAME} Functionele Specificatie MVP v0.6", + f"{POSITIONING}-scope met toetsbare requirements\n{DATE_TEXT}", + ) + p(doc, "1. Documentdoel", "Heading 1") + p( + doc, + "Dit document beschrijft de functionele scope van de wellness-first MVP. Het is nadrukkelijk geen roadmapdocument en geen privacydocument; " + "alleen gedrag, regels, staten en acceptance criteria die nodig zijn om het product te bouwen en te testen.", + ) + + p(doc, "2. Kerngebruikersreis", "Heading 1") + numbered( + doc, + [ + "De gebruiker opent de app en doet een korte ochtendcheck-in.", + "De app bepaalt een eenvoudig dagbudget op basis van de gekozen energieschaal.", + "De gebruiker plant enkele activiteiten voor de dag.", + "De app toont een visuele meter en een niet-blokkerende waarschuwing bij overschrijding.", + "Gedurende of na de dag markeert de gebruiker activiteiten als uitgevoerd, geskipt of aangepast.", + "De gebruiker bekijkt het dagoverzicht en later het weekoverzicht om patronen te zien.", + "Na een zware dag kan de app een optionele reflectieprompt tonen op T+1 en T+2.", + ], + ) + + p(doc, "3. Functionele modules", "Heading 1") + p(doc, "3.1 Onboarding", "Heading 2") + bullets( + doc, + [ + "Korte onboarding van maximaal drie schermen.", + "Uitleg over energieschaal, dagplanning en niet-medische positionering.", + "Keuze van taal, timezone en herinneringsinstellingen.", + "Geen uitgebreide profielvragen of gevoelige aanvullende intake in MVP.", + ], + ) + + p(doc, "3.2 Ochtendcheck-in", "Heading 2") + bullets( + doc, + [ + "Energiescore via visuele schaal met ankerlabels.", + "Slaapkwaliteit als vast veld.", + "Optionele korte notitie.", + "Automatische afleiding van energieniveau en dagbudget.", + ], + ) + + p(doc, "3.3 Activiteiten plannen", "Heading 2") + bullets( + doc, + [ + "Velden: naam, categorie, geplande duur, energie-impact, optioneel tijdslot, prioriteit.", + "Autocomplete op basis van eerder ingevoerde activiteiten.", + "Lopend totaal van geplande energiebelasting tegenover dagbudget.", + "Niet-blokkerende feedback als het geplande totaal het budget overschrijdt.", + ], + ) + + p(doc, "3.4 Uitvoeren en evalueren", "Heading 2") + bullets( + doc, + [ + "Statussen: uitgevoerd, geskipt, aangepast.", + "Bij uitgevoerd: werkelijke duur, vermoeidheidsscore na afloop, optionele notitie.", + "Bij geskipt: reden uit lijst plus optionele toelichting.", + "Bij aangepast: omschrijving van aanpassing, werkelijke duur, vermoeidheidsscore.", + "Ongeplande activiteiten mogen worden toegevoegd met dezelfde basisvelden.", + ], + ) + + p(doc, "3.5 Overzichten", "Heading 2") + bullets( + doc, + [ + "Dagoverzicht met geplande versus uitgevoerde activiteiten, totale energiebelasting en korte samenvatting.", + "Weekoverzicht met eenvoudige patronen, adherence aan budget en skip-patronen.", + "Inzichten blijven transparant, beperkt en uitlegbaar.", + ], + ) + + p(doc, "3.6 Reflectie na zware dagen", "Heading 2") + bullets( + doc, + [ + "Optionele T+1 en T+2 reflectie na dagen met duidelijke overschrijding of hoge belasting.", + "Reflectie bestaat uit korte zelfrapportage, niet uit medische waarschuwing.", + "Prompt is opt-in en kan door gebruiker worden uitgezet.", + ], + ) + + p(doc, "4. Functionele requirements", "Heading 1") + requirements = [ + ["FR-ONB-001", "Onboarding", "De onboarding bestaat uit maximaal drie schermen en kan worden overgeslagen of later worden afgerond.", "Acceptatie: gebruiker kan onboarding afronden binnen circa 1 minuut zonder verplichte gevoelige invoer."], + ["FR-CHK-001", "Check-in", "De gebruiker kan een ochtendcheck-in opslaan met energiescore en slaapkwaliteit.", "Acceptatie: opslaan lukt met beide velden ingevuld; andere velden zijn optioneel."], + ["FR-CHK-002", "Check-in", "Het systeem leidt uit de energiescore automatisch een energieniveau en dagbudget af.", "Acceptatie: dagbudget wordt direct zichtbaar na opslaan van de check-in."], + ["FR-PLAN-001", "Planning", "De gebruiker kan een activiteit plannen met naam, categorie, duur, energie-impact en prioriteit.", "Acceptatie: activiteit verschijnt direct in het dagoverzicht."], + ["FR-PLAN-002", "Planning", "De app toont steeds het geplande totaal versus dagbudget.", "Acceptatie: totaal wordt bijgewerkt na elke mutatie."], + ["FR-PLAN-003", "Planning", "Bij overschrijding toont de app een niet-blokkerende waarschuwing.", "Acceptatie: gebruiker kan bewust doorgaan zonder blokkade."], + ["FR-ACT-001", "Uitvoering", "Een geplande activiteit kan worden gemarkeerd als uitgevoerd.", "Acceptatie: werkelijke duur en vermoeidheidsscore zijn invulbaar en worden opgeslagen."], + ["FR-ACT-002", "Uitvoering", "Een geplande activiteit kan worden gemarkeerd als geskipt.", "Acceptatie: skip-reden kan gekozen worden uit een lijst met optionele toelichting."], + ["FR-ACT-003", "Uitvoering", "Een geplande activiteit kan worden gemarkeerd als aangepast.", "Acceptatie: aanpassingstekst, werkelijke duur en vermoeidheidsscore kunnen worden vastgelegd."], + ["FR-ACT-004", "Uitvoering", "De status “aangepast” dekt ook deels uitgevoerde activiteiten.", "Acceptatie: geen aparte status nodig om dit scenario vast te leggen."], + ["FR-ACT-005", "Uitvoering", "De gebruiker kan een ongeplande activiteit toevoegen.", "Acceptatie: ongeplande activiteit telt mee in het werkelijke totaal."], + ["FR-DAY-001", "Dagoverzicht", "De app toont het verschil tussen gepland en uitgevoerd.", "Acceptatie: scherm bevat beide totalen en de relevante activiteitenstatussen."], + ["FR-DAY-002", "Dagoverzicht", "De gebruiker ziet een korte samenvatting van de dag zonder medische interpretatie.", "Acceptatie: tekst gebruikt patroon- of reflectietaal, geen medische taal."], + ["FR-WEEK-001", "Weekoverzicht", "De app toont per week gemiddelde energie, budget-adherence en skip-patronen.", "Acceptatie: gebruiker kan een week terugkijken zonder ruwe database-informatie te hoeven interpreteren."], + ["FR-INS-001", "Inzichten", "Een inzicht wordt alleen getoond als aan minimale datadrempels is voldaan.", "Acceptatie: bij te weinig data toont de app geen patroonclaim maar een neutrale melding."], + ["FR-REM-001", "Reflectie", "De gebruiker kan optionele reflectieprompts ontvangen na een zware dag.", "Acceptatie: prompts zijn per gebruiker aan of uit te zetten."], + ["FR-SET-001", "Instellingen", "De gebruiker kan taal, timezone, herinneringen en zichtbaarheid van punten beheren.", "Acceptatie: wijzigingen zijn direct actief op het account."], + ["FR-ACC-001", "Toegankelijkheid", "Belangrijke acties zijn mobiel bruikbaar met grote touch targets.", "Acceptatie: primaire knoppen voldoen aan de gekozen UX-richtlijn voor mobiel gebruik."], + ] + table(doc, ["ID", "Module", "Requirement", "Acceptance / toetsing"], requirements) + + p(doc, "5. Bevestigde platformkeuzes voor deze MVP", "Heading 1") + table( + doc, + ["Onderwerp", "Besluit", "Effect op scope"], + [ + ["Productnaam", PRODUCT_NAME, "Alle UI-copy en documentatie gebruiken deze naam."], + ["Doelgroep", AUDIENCE, "Geen flows voor minderjarigen in de eerste release."], + ["Taal", LANGUAGES, "Geen meertaligheidsvereisten in release 1."], + ["Authenticatie", AUTH, "Account- en sessiebeheer volgt de Supabase-architectuur."], + ["Database", DATABASE, "Datamodel en beveiliging worden rond Supabase/PostgreSQL ontworpen."], + ["Hosting", HOSTING, "Webapp-hosting en deployment gaan uit van Vercel."], + ], + ) + + p(doc, "6. Datavelden in MVP", "Heading 1") + table( + doc, + ["Domein", "Velden in MVP", "Opmerkingen"], + [ + ["Profiel", "naam of schermnaam, taal, timezone", "Zo minimaal mogelijk."], + ["Ochtendcheck-in", "energiescore, slaapkwaliteit, optionele notitie, timestamp", "Geen uitgebreid symptomenformulier in MVP."], + ["Activiteit", "naam, categorie, geplande duur, energie-impact, prioriteit, tijdslot optioneel, status, werkelijke duur, fatigue na afloop, optionele notitie", "Kern van het product."], + ["Weekpatronen", "berekende totalen en eenvoudige aggregaties", "Alleen uitlegbare regels."], + ["Reflectieprompt", "korte follow-up score en optionele notitie", "Opt-in en niet medisch geformuleerd."], + ], + ) + + p(doc, "7. Expliciet buiten scope van deze specificatie", "Heading 1") + bullets( + doc, + [ + "Caregiver- of professional-sharing.", + "Habit tracking buiten slaapkwaliteit en kernenergieflow.", + "Medicatie, alcohol, nicotine, drugs/middelen, water- of voedingstracking.", + "AI-samenvattingen, generatieve tekstuitleg en chatbotfuncties.", + "PDF-export of andere zorgdossier-achtige rapportages.", + "Integraties met wearable data of medische systemen.", + ], + ) + + p(doc, "8. Release-acceptatie voor MVP", "Heading 1") + numbered( + doc, + [ + "Alle kernflows werken op mobiel zonder hoge interactielast.", + "De app blijft binnen de wellness/non-medical copy-guardrails.", + "Geen viewerrollen of deelroutes zijn actief in release 1.", + "Inzichten gebruiken alleen expliciet gedefinieerde regels.", + "Alle requirements met FR-ID zijn aantoonbaar getest of handmatig geverifieerd.", + ], + ) + + set_footer(doc, f"{PRODUCT_NAME} Functionele Specificatie MVP v0.6") + doc.save(BASE_DIR / "inspannings-monitor-02-functionele-specificatie-mvp-v06.docx") + + +def build_privacy_security_safety() -> None: + doc = init_doc( + f"{PRODUCT_NAME} Privacy, Security en Safety Baseline v0.2", + f"Basiseisen voor een wellness-first product met gezondheidsgerelateerde data\n{DATE_TEXT}", + ) + p(doc, "1. Documentdoel", "Heading 1") + p( + doc, + "Dit document beschrijft de minimale privacy-, beveiligings- en safety-baseline voor de eerste wellness-first releases. " + "Het is opgesteld om te voorkomen dat gevoelige datafunctionality sneller groeit dan governance, beveiliging en risicoafdekking.", + ) + + p(doc, "2. Werkhypothese voor gegevensverwerking", "Heading 1") + p( + doc, + f"{PRODUCT_NAME} verwerkt gegevens die in context gezondheidsgerelateerd en vaak bijzonder gevoelig zijn. Daarom wordt in dit document uitgegaan van een strikte benadering: " + "dataminimalisatie, expliciete toestemming waar nodig, terughoudendheid met extra datacategorieen en een DPIA voorafgaand aan echte gebruikersintroductie. " + "Juridische validatie blijft nodig, maar de productdocumentatie moet nu al vanuit de strengere lezing worden ontworpen.", + ) + + p(doc, "3. Bevestigde technische uitgangspunten", "Heading 1") + table( + doc, + ["Onderwerp", "Bevestigd uitgangspunt", "Implicatie"], + [ + ["Hosting", HOSTING, "Deployment- en security-instellingen moeten aansluiten op het Vercel-model."], + ["Database", DATABASE, "Gegevensmodellering, toegangscontrole en back-upstrategie steunen op Supabase/PostgreSQL."], + ["Authenticatie", AUTH, "Identiteit, sessies en autorisatie gaan uit van Supabase Auth."], + ["Releasevorm", "Alleen individuele gebruikers", "Geen sharing-architectuur in release 1."], + ["Taal", LANGUAGES, "Geen meertalige opslag- of vertaalpijplijn in launchscope."], + ], + ) + + p(doc, "4. Dataminimalisatie en default-instellingen", "Heading 1") + table( + doc, + ["Datadomein", "Toelaatbaar in MVP", "Default", "Opmerking"], + [ + ["Account/profiel", "Ja", "Minimaal", "Alleen wat nodig is voor account, taal en timezone."], + ["Energiescore en slaapkwaliteit", "Ja", "Actief", "Kerngegevens voor intended use."], + ["Activiteitenplanning", "Ja", "Actief", "Kerngegevens voor intended use."], + ["Vrije notities", "Beperkt", "Optioneel", "Korte notities toestaan, geen uitgebreide journaling als kernflow."], + ["Reflectie na zware dag", "Ja", "Opt-in", "Alleen als wellness-reflectieprompt."], + ["Delen met derden", "Nee", "Uit", "Niet opnemen in release 1."], + ["Medicatie", "Nee", "Uit", "Te gevoelig voor wellness-first MVP."], + ["Alcohol/nicotine/drugs", "Nee", "Uit", "Niet noodzakelijk voor eerste value proof."], + ["Geavanceerde leefstijlfactoren", "Nee", "Uit", "Alleen later na aparte risicoafweging."], + ], + ) + + p(doc, "5. Aanbevolen privacy-eisen", "Heading 1") + table( + doc, + ["ID", "Eis"], + [ + ["PRIV-001", "Voor elke datacategorie moet een expliciet doel in documentatie zijn vastgelegd."], + ["PRIV-002", "Niet-noodzakelijke datavelden staan standaard uit of bestaan nog niet in de MVP."], + ["PRIV-003", "De gebruiker kan eigen data exporteren en verwijderen via een duidelijk proces."], + ["PRIV-004", "Bewaartermijnen worden per datadomein vastgesteld voor launch."], + ["PRIV-005", "Er is vóór launch een DPIA uitgevoerd op de daadwerkelijke MVP-scope."], + ["PRIV-006", "Subverwerkers, regio’s en dataflows zijn in een apart register vastgelegd."], + ["PRIV-007", "Marketingcopy en onboarding mogen geen bredere verwerking suggereren dan feitelijk plaatsvindt."], + ], + ) + + p(doc, "6. Aanbevolen security-eisen", "Heading 1") + table( + doc, + ["ID", "Eis"], + [ + ["SEC-001", "Alle netwerkcommunicatie verloopt via moderne TLS-configuratie."], + ["SEC-002", "Gegevens worden versleuteld opgeslagen op platformniveau en waar nodig aanvullend logisch afgescheiden."], + ["SEC-003", "Sessiebeheer voorkomt onbeperkte of onzichtbare langdurige toegang."], + ["SEC-004", "Rate limiting en basisbescherming tegen misbruik zijn actief op auth- en mutatieroutes."], + ["SEC-005", "Beheer- en supporttoegang is rolgebonden, minimaal en auditbaar."], + ["SEC-006", "Belangrijke gebeurtenissen zoals login, mislukte toegang, data-export en accountverwijdering worden gelogd."], + ["SEC-007", "Back-ups en hersteltests zijn gedefinieerd vóór launch."], + ["SEC-008", "Secrets worden niet in code of clientside configuratie opgeslagen."], + ], + ) + + p(doc, "7. Safety- en content guardrails", "Heading 1") + table( + doc, + ["ID", "Eis"], + [ + ["SAFE-001", "Het product gebruikt geen diagnose-, behandel- of voorspellende taal in de wellness-first fase."], + ["SAFE-002", "Reflectieprompts worden gepresenteerd als zelfreflectie, niet als medische waarschuwing."], + ["SAFE-003", "Inzichten tonen alleen patronen bij voldoende data en vermelden periode en aantal observaties waar relevant."], + ["SAFE-004", "De app toont geen advies om medicatie te wijzigen, zorg uit te stellen of medisch handelen te vervangen."], + ["SAFE-005", "De onboarding en helpteksten bevatten een heldere noodgevallen- en niet-medische disclaimer."], + ["SAFE-006", "Nieuwe claims of clinician-facing functies vereisen aparte review voordat ze in product en copy verschijnen."], + ], + ) + + p(doc, "8. Hoogste productrisico’s in deze fase", "Heading 1") + table( + doc, + ["Risico", "Waarom relevant", "Mitigatie in deze documentatie"], + [ + ["Te brede datascope", "Meer gevoelige data dan nodig verhoogt risico en governance-last.", "Scope beperken tot energie, slaapkwaliteit, activiteiten en korte reflectie."], + ["Te medische copy", "Kan product regulatoir opschuiven en gebruikers verkeerd laten vertrouwen.", "Intended use en non-intended use expliciet vastleggen."], + ["Schijnzekerheid in inzichten", "Gebruiker kan patronen als feiten of voorspellingen lezen.", "Alleen eenvoudige, uitlegbare regels en guardrails."], + ["Onvoldoende zicht op datatoegang", "Gezondheidsgerelateerde data vragen auditability.", "Audit logging en rolgebonden beheer als launch-voorwaarde."], + ["Premature sharing", "Delen met derden vergroot privacy- en securityrisico sterk.", "Geen sharing in release 1; pas later na apart ontwerp."], + ], + ) + + p(doc, "9. Pre-launch artefacten die verplicht gereed moeten zijn", "Heading 1") + numbered( + doc, + [ + "DPIA op de werkelijke MVP-scope.", + "Datacatalogus met per veld doel, gevoeligheid, bewaartermijn en toegangsmodel.", + "Subprocessor- en regio-overzicht voor onder meer Vercel en Supabase.", + "Beveiligingsbaselines voor authenticatie, logging, back-up en incidentafhandeling.", + "Safety review van productcopy, onboarding en insightformuleringen.", + "Besluitdocument waarin expliciet is vastgelegd dat delen met derden buiten de launchscope valt.", + ], + ) + + p(doc, "10. Externe referenties", "Heading 1") + references = [ + ("EDPB Data Protection Basics", "https://www.edpb.europa.eu/sme-data-protection-guide/data-protection-basics_en"), + ("EDPB Be Compliant", "https://www.edpb.europa.eu/sme-data-protection-guide/be-compliant_en"), + ("GDPR via EUR-Lex", "https://eur-lex.europa.eu/eli/reg/2016/679/oj/eng"), + ("NHS DTAC", "https://transform.england.nhs.uk/key-tools-and-info/digital-technology-assessment-criteria-dtac/"), + ("NHS Clinical Risk Management Standards", "https://digital.nhs.uk/services/clinical-safety/clinical-risk-management-standards"), + ("HL7 FHIR Security & Privacy", "https://www.hl7.org/fhir/secpriv-module.html"), + ("European Commission MDCG guidance index", "https://health.ec.europa.eu/medical-devices-sector/new-regulations/guidance-mdcg-endorsed-documents-and-other-guidance_en"), + ("Nictiz over NEN 7510", "https://nationalebibliotheek.nictiz.nl/bibliotheek/nen-7510/"), + ] + for name, url in references: + para = doc.add_paragraph(style="List Bullet") + para.add_run(f"{name}: ") + add_hyperlink(para, url, url) + + set_footer(doc, f"{PRODUCT_NAME} Privacy, Security en Safety Baseline v0.2") + doc.save(BASE_DIR / "inspannings-monitor-03-privacy-security-safety-baseline-v02.docx") + + +def build_roadmap() -> None: + doc = init_doc( + f"{PRODUCT_NAME} Roadmap: Wellness-first naar Eventuele Medische Track v0.2", + f"Gefaseerde productontwikkeling met expliciete decision gates\n{DATE_TEXT}", + ) + p(doc, "1. Doel van deze roadmap", "Heading 1") + p( + doc, + f"Deze roadmap beschrijft hoe {PRODUCT_NAME} gecontroleerd kan groeien vanuit een wellness/self-management MVP naar een mogelijk zwaardere productvorm in de toekomst, " + "zonder nu al medische claims of medische scope binnen te halen. De roadmap is bewust gefaseerd om eerst productwaarde, governance en veiligheid op orde te brengen.", + ) + + p(doc, "2. Fase 0: Fundament vóór launch", "Heading 1") + bullets( + doc, + [ + "Definitieve intended use en non-intended use goedkeuren.", + "MVP-scope vastleggen en extra gevoelige datacategorieen expliciet uitsluiten.", + "DPIA uitvoeren op de werkelijke launchscope.", + f"{AUTH}, {DATABASE} en {HOSTING} als startarchitectuur formaliseren.", + "Productcopy, onboarding en inzichtteksten safety-reviewen.", + "Support- en incidentproces benoemen.", + ], + ) + + p(doc, "3. Fase 1: Wellness-first MVP", "Heading 1") + bullets( + doc, + [ + "Ochtendcheck-in, dagplanning, uitvoering/evaluatie, dag- en weekoverzicht.", + "Optionele reflectieprompt na zware dagen.", + "Geen delen met derden, geen habit-uitbreiding, geen AI, geen zorgrapportages.", + "Voertaal bij launch: alleen Nederlands.", + "Hoofddoel: bewijzen dat de kernloop waarde oplevert en laagdrempelig is.", + ], + ) + + p(doc, "4. Fase 2: Beperkte uitbreiding binnen wellness", "Heading 1") + bullets( + doc, + [ + "Verbeterde weekpatronen en transparante insightregels.", + "Eventueel beperkte extra gewoontevelden met lage gevoeligheid, alleen na aparte review.", + "Sjablonen en gebruiksgemakverbeteringen.", + "Doel: betere retentie en reflectiewaarde zonder positionering te verbreden.", + ], + ) + + p(doc, "5. Fase 3: Gecontroleerd delen buiten MVP", "Heading 1") + bullets( + doc, + [ + "Pas starten na apart ontwerp voor consent, viewer-authenticatie, audit logging en toegangsbeheer.", + "Begin bij voorkeur met een smalle share-scope en geen vrije notities of hooggevoelige velden.", + "Geen “zorgdashboard” taal zolang intended use wellness blijft.", + "Doel: delen onderzoeken zonder onbedoeld naar klinische besluitondersteuning te schuiven.", + ], + ) + + p(doc, "6. Future Medical Track: aparte producttak, geen kleine feature-toggle", "Heading 1") + p( + doc, + f"Als {PRODUCT_NAME} later een medisch product of medisch geclassificeerde software wil worden, dan moet dat worden behandeld als een aparte producttrack of minimaal als een expliciet gereguleerde release-tak. " + "Het mag niet ontstaan doordat losse features langzaam over de grens schuiven.", + ) + numbered( + doc, + [ + "Start met een formeel besluit over nieuwe intended use.", + "Herbeoordeel claims, clinician workflows, rapportages en data-interpretatie op MDR-impact.", + "Richt aparte documentatie in voor risicomanagement, klinische evaluatie en change control.", + "Bepaal welke onderdelen van de wellness-architectuur herbruikbaar zijn en welke opnieuw ontworpen moeten worden.", + "Maak een duidelijke scheiding tussen de wellness-productlijn en de medische productlijn in communicatie en releasebeheer.", + ], + ) + + p(doc, "7. Decision gates", "Heading 1") + table( + doc, + ["Gate", "Vraag", "Minimale voorwaarde om door te gaan"], + [ + ["Gate A", "Is de wellness-positionering intern en extern scherp genoeg?", "Approved intended use, non-intended use en copy-guardrails."], + ["Gate B", "Is launch juridisch en organisatorisch verantwoord?", "DPIA, datacatalogus, security baseline en supportproces gereed."], + ["Gate C", "Mag sharing worden toegevoegd?", "Aparte consent-, auth- en audit-architectuur plus risicoreview."], + ["Gate D", "Is een medical track gewenst?", "Expliciet business- en productbesluit met budget en ownership."], + ["Gate E", "Mag een medical track worden gestart?", "Nieuwe intended use, regulatoire analyse en extra kwaliteitsartefacten zijn ingepland."], + ], + ) + + p(doc, "8. Signalering dat het product richting medisch schuift", "Heading 1") + bullets( + doc, + [ + "Er verschijnen claims over voorspellen, detecteren of verminderen van ziekte of symptomen.", + "Zorgverleners gaan op de output vertrouwen voor behandelafstemming.", + "PDF- of dashboardfunctionaliteit wordt ontworpen voor formele zorgdossiers.", + "Het systeem geeft patiëntspecifieke aanbevelingen die verder gaan dan algemene zelfreflectie.", + "Marketing of sales gebruikt klinische taal om waarde te beschrijven.", + ], + ) + + p(doc, "9. Bevestigde uitgangspunten voor de eerstvolgende maanden", "Heading 1") + table( + doc, + ["Onderwerp", "Bevestigd uitgangspunt"], + [ + ["Productnaam", PRODUCT_NAME], + ["Doelgroep", AUDIENCE], + ["Voertaal launch", LANGUAGES], + ["Launchvorm", "Alleen individuele gebruikers"], + ["Hosting", HOSTING], + ["Authenticatie", AUTH], + ["Database", DATABASE], + ], + ) + + p(doc, "10. Aanbevolen werkvolgorde voor de komende weken", "Heading 1") + numbered( + doc, + [ + "Maak deze v0.6-documentenset leidend en archiveer verouderde aannames uit eerdere documenten.", + "Werk de MVP uit in backlog-items op basis van requirement-ID’s.", + "Plan DPIA, security baseline en copy review parallel aan ontwerp en bouw.", + "Formuleer Vercel- en Supabase-keuzes als formeel architectuurbesluit met subprocessor-overzicht.", + "Gebruik elke scope-uitbreiding langs de decision gates in dit document.", + ], + ) + + set_footer(doc, f"{PRODUCT_NAME} Roadmap: Wellness-first naar Eventuele Medische Track v0.2") + doc.save(BASE_DIR / "inspannings-monitor-04-roadmap-wellness-naar-medisch-v02.docx") + + +def build_technische_architectuur() -> None: + doc = init_doc( + f"{PRODUCT_NAME} Technische Architectuur en Implementatie v0.1", + f"Technische uitwerking van de wellness-first MVP op {HOSTING} en {AUTH}\n{DATE_TEXT}", + ) + p(doc, "1. Documentdoel", "Heading 1") + p( + doc, + "Dit document beschrijft de technische implementatielaag van de wellness-first MVP. " + "Het vertaalt de product- en privacykeuzes naar een concrete architectuur, datamodel, autorisatiemodel, deploy-aanpak en teststrategie. " + "Dit document is bewust apart gehouden van de functionele specificatie, zodat producteisen en technische keuzes niet opnieuw door elkaar gaan lopen.", + ) + + p(doc, "2. Bevestigde technische uitgangspunten", "Heading 1") + table( + doc, + ["Onderwerp", "Keuze", "Toelichting"], + [ + ["Frontend hosting", HOSTING, "De webapp wordt in eerste instantie gedeployed op Vercel."], + ["Database", DATABASE, "De primaire datastore is Supabase PostgreSQL."], + ["Authenticatie", AUTH, "Identity, sessies en basisautorisatie lopen via Supabase Auth."], + ["Applicatietype", "Webapp, mobile-first", "Eerste release richt zich op individueel gebruik op mobiel, met bruikbare desktopweergave."], + ["Release 1", "Alleen individuele gebruikers", "Geen share-dashboard, viewerrollen of zorgverlenerstoegang in de MVP."], + ["Voertaal", LANGUAGES, "Geen meertaligheidsinfrastructuur in de launchscope."], + ], + ) + + p(doc, "3. Doelarchitectuur op hoofdlijnen", "Heading 1") + bullets( + doc, + [ + "Client: browsergebaseerde UI, primair mobiel, responsief voor desktop.", + "App-laag: Next.js App Router met server-side rendering waar dat de dataflow en veiligheid vereenvoudigt.", + "Auth-laag: Supabase Auth voor accounts, sessies en gebruikersidentiteit.", + "Data-laag: Supabase PostgreSQL voor kernentiteiten en geaggregeerde overzichten.", + "Business logic: server actions en server-side services voor mutaties, validatie en berekeningen.", + "Presentatielaag: eenvoudige, uitlegbare inzichten op basis van transparante regels, niet op basis van AI.", + ], + ) + + p(doc, "4. Aanbevolen stackindeling", "Heading 1") + table( + doc, + ["Laag", "Aanbevolen keuze", "Reden"], + [ + ["Framework", "Next.js met App Router", "Past goed bij Vercel, server components en server-side datatoegang."], + ["UI", "React + TypeScript", "Sterke typeveiligheid en goede componentstructuur."], + ["Styling", "Tailwind CSS + componentbibliotheek", "Snel consistente, toegankelijke UI voor mobile-first flows."], + ["Validatie", "Zod of vergelijkbare runtime-validatie", "Nodig voor strikte server-side inputcontrole."], + ["Database access", "Supabase client en/of Prisma", "Prisma kan nog steeds zinvol zijn, maar is een bewuste keuze en geen verplichting."], + ["Charts", "Lichte grafiekbibliotheek", "Alleen voor eenvoudige dag- en weekinzichten; geen heavy analytics platform nodig."], + ["Background jobs", "Cron via Vercel of vergelijkbare jobtrigger", "Voldoende voor simpele reminder- en onderhoudstaken in MVP."], + ], + ) + + p(doc, "5. Systeemcontext", "Heading 1") + table( + doc, + ["Component", "Verantwoordelijkheid"], + [ + ["Browserclient", "Rendert UI, verzamelt gebruikersinvoer, toont overzichten en roept beveiligde mutaties aan."], + ["Next.js serverlaag", "Rendert pagina’s, bewaakt routes, valideert mutaties, voert domeinlogica uit."], + ["Supabase Auth", "Gebruikersaccounts, sessies, identity en auth-context."], + ["Supabase Postgres", "Opslag van profieldata, check-ins, activiteiten, instellingen en geaggregeerde weekdata."], + ["Cron/reminderlaag", "Plant en verstuurt optionele reflectie- en onderhoudstaken."], + ["Logging/monitoring", "Verzamelt fouten, audit-events en operationele signalen."], + ], + ) + + p(doc, "6. Applicatiestructuur", "Heading 1") + p(doc, "6.1 Routevoorstel", "Heading 2") + table( + doc, + ["Route", "Type", "Doel"], + [ + ["/", "Server", "Landing en instappunt naar login of dashboard."], + ["/login", "Server + Client", "Authenticatieflow via Supabase Auth."], + ["/onboarding", "Client", "Korte uitleg en eerste instellingen."], + ["/dashboard", "Server + Client", "Dagoverzicht met check-instatus, energiemeter en activiteiten."], + ["/plan", "Client", "Activiteiten plannen of aanpassen voor de dag."], + ["/history", "Server", "Weekoverzicht en eenvoudige patronen."], + ["/history/[date]", "Server", "Dagdetail en terugblik op een specifieke dag."], + ["/settings", "Client", "Taal, timezone, reminders, zichtbaarheid van punten en accountacties."], + ], + ) + + p(doc, "6.2 Kerncomponenten", "Heading 2") + bullets( + doc, + [ + "EnergySlider voor de ochtendscore.", + "SleepQualityInput als vast onderdeel van de ochtendcheck-in.", + "EnergyMeter voor budget versus gepland of werkelijk verbruik.", + "ActivityCard voor geplande en geëvalueerde activiteiten.", + "QuickCheckIn voor snelle handelingen met lage interactielast.", + "DaySummary voor geplande versus uitgevoerde totalen.", + "WeekTrendChart voor eenvoudige wekelijkse patronen.", + ], + ) + + p(doc, "7. Authenticatie en autorisatie", "Heading 1") + bullets( + doc, + [ + f"Authenticatie loopt via {AUTH}; de applicatie gebruikt de auth-context server-side om de ingelogde gebruiker te bepalen.", + "Release 1 kent alleen het concept eigenaar/gebruiker; er zijn geen viewerrollen.", + "Elke mutatie en elke data-opvraag moet server-side gekoppeld worden aan de ingelogde eigenaar.", + "Beheer- of supporttoegang moet gescheiden blijven van gewone gebruikersaccounts en auditbaar zijn.", + "Routes met persoonlijke data worden alleen geserveerd wanneer een geldige sessie aanwezig is.", + ], + ) + + p(doc, "8. Row-Level Security (RLS) strategie", "Heading 1") + p( + doc, + "Hoewel sharing niet in de MVP zit, is RLS nog steeds waardevol. De basisregel in release 1 is eenvoudig: een gebruiker mag uitsluitend records lezen en muteren die aan diens eigen profiel gekoppeld zijn. " + "Dat geeft een verdedigbare securitybasis en voorkomt dat autorisatie alleen in applicatiecode leeft.", + ) + table( + doc, + ["Tabelgroep", "RLS-principe in MVP"], + [ + ["Profile / UserSettings", "Alleen owner mag eigen profiel en instellingen lezen en wijzigen."], + ["EnergyCheckIn", "Alleen owner mag eigen check-ins lezen en schrijven."], + ["PlannedActivity", "Alleen owner mag eigen activiteiten lezen en muteren."], + ["SkipReason / ActivityCategory (user-defined)", "Alleen owner mag eigen uitbreidingen zien en beheren."], + ["Aggregaties / weekdata", "Alleen owner mag afgeleide weekinzichten opvragen."], + ], + ) + + p(doc, "9. Datamodel voor de wellness-first MVP", "Heading 1") + table( + doc, + ["Model", "Kernvelden", "Opmerking"], + [ + ["Profile", "id, displayName, locale, timezone, onboardingCompleted", "Profiel gekoppeld aan auth identity."], + ["UserSettings", "profileId, morningReminder, reflectionReminderEnabled, showEnergyPoints", "Alleen settings die in MVP nodig zijn."], + ["EnergyCheckIn", "id, profileId, score, energyLevel, dailyBudget, sleepQuality, note, timestamp", "Ochtendcheck-in en budgetbasis."], + ["ActivityCategory", "id, profileId nullable, name, type, isSystem, sortOrder", "Systeemcategorieën plus optionele eigen categorieën."], + ["PlannedActivity", "id, profileId, name, categoryId, plannedDate, plannedTimeSlot, plannedDurationMin, energyImpact, priority, status, actualDurationMin, fatigueScoreAfter, skipReasonId, adjustmentNote, note, isUnplanned, createdAt", "Kernentiteit voor plan/doe/evalueer."], + ["SkipReason", "id, profileId nullable, name, isSystem, isActive, sortOrder", "Systeemredenen plus optionele eigen redenen."], + ["ReflectionCheckIn", "id, profileId, relatedDate, checkInDate, fatigueScore, note", "Wellness-reflectie op T+1/T+2; niet medisch formuleren."], + ], + ) + + p(doc, "10. Dataflow van de kernloop", "Heading 1") + numbered( + doc, + [ + "Gebruiker authenticereert en opent het dashboard.", + "Server haalt profiel, settings, laatste check-in en dagactiviteiten op voor de ingelogde gebruiker.", + "Gebruiker doet een ochtendcheck-in; server valideert invoer en berekent energyLevel en dailyBudget.", + "Gebruiker plant activiteiten; server valideert, schrijft records weg en berekent het lopend totaal.", + "Gebruiker markeert activiteiten als uitgevoerd, geskipt of aangepast; server slaat evaluatievelden op.", + "Dag- en weekoverzichten lezen geaggregeerde waarden uit of berekenen die server-side.", + "Een reminderjob kan optioneel bepalen of een reflectieprompt op T+1 of T+2 klaarstaat.", + ], + ) + + p(doc, "11. Server actions en services", "Heading 1") + table( + doc, + ["Actie/service", "Doel"], + [ + ["createMorningCheckIn", "Slaat energiescore en slaapkwaliteit op en berekent dagbudget."], + ["planActivity", "Voegt een geplande activiteit toe aan een dag."], + ["updatePlannedActivity", "Wijzigt duur, impact, tijdslot of prioriteit van een activiteit."], + ["completeActivity", "Markeert activiteit als uitgevoerd met werkelijke duur en fatigue na afloop."], + ["skipActivity", "Markeert activiteit als geskipt met reden en toelichting."], + ["adjustActivity", "Legt aangepaste/deels uitgevoerde activiteit vast."], + ["createUnplannedActivity", "Voegt een ongeplande activiteit toe aan de dag."], + ["getDailyOverview", "Levert alle gegevens voor het dashboard van een specifieke dag."], + ["getWeeklyOverview", "Levert geaggregeerde weekinzichten en patronen."], + ["saveSettings", "Wijzigt taal, timezone en reminderinstellingen."], + ["createReflectionCheckIn", "Slaat optionele T+1/T+2 reflectie op."], + ], + ) + + p(doc, "12. Inzichten-engine", "Heading 1") + bullets( + doc, + [ + "In release 1 gebruikt de app alleen regelgebaseerde, uitlegbare inzichten.", + "Elke insightregel moet een minimale datadrempel kennen; zonder voldoende data wordt geen patroonclaim getoond.", + "Inzichten worden server-side berekend om clientcomplexiteit en inconsistentie te beperken.", + "Taal blijft patroon-georiënteerd en niet-medisch.", + "AI en vrije tekstuitleg door modellen blijven expliciet buiten scope van deze technische versie.", + ], + ) + + p(doc, "13. Scheduling en reminders", "Heading 1") + bullets( + doc, + [ + "Release 1 vereist alleen eenvoudige geplande taken voor reflectieprompts en eventueel basisopschoning.", + "Een cron-trigger op Vercel of vergelijkbare scheduled mechanismen is voldoende.", + "Jobs moeten idempotent zijn, zodat dubbel uitvoeren niet tot dubbele prompts of dubbele records leidt.", + "Elke reminder blijft opt-in en gekoppeld aan gebruikersinstellingen.", + ], + ) + + p(doc, "14. Deployment en omgevingsscheiding", "Heading 1") + table( + doc, + ["Onderdeel", "Aanpak"], + [ + ["Omgevingen", "Minimaal development, preview/staging en production."], + ["Hosting", "Next.js-app via Vercel deployments per omgeving."], + ["Database", "Supabase-projecten of logisch gescheiden omgevingen per fase."], + ["Secrets", "Opslaan in omgevingsbeheer van Vercel en Supabase, nooit in clientbundles of repository."], + ["Migrations", "Schemawijzigingen via gecontroleerde migraties, niet handmatig in productie."], + ["Rollbacks", "Deploystrategie moet snelle rollback van frontend mogelijk maken; databasemigraties krijgen een apart rollbackplan."], + ], + ) + + p(doc, "15. Logging, monitoring en audit", "Heading 1") + bullets( + doc, + [ + "Applicatiefouten en server exceptions worden centraal gelogd.", + "Belangrijke security-events zoals loginfouten, sessieproblemen en accountverwijdering worden apart vastgelegd.", + "Mutaties op check-ins, activiteiten en settings moeten herleidbaar zijn op technisch niveau.", + "Ondersteuningsacties van beheerders worden apart auditbaar gemaakt.", + "Monitoring moet minimaal inzicht geven in availability, cronfouten en foutpercentages van kernmutaties.", + ], + ) + + p(doc, "16. Teststrategie", "Heading 1") + table( + doc, + ["Testlaag", "Wat moet worden afgedekt"], + [ + ["Unit tests", "Budgetberekening, insightregels, mapping van energiescore naar level en validatielogica."], + ["Integration tests", "Server actions, auth-context, data-opslag en RLS-gerelateerde toegangspaden."], + ["UI tests", "Ochtendcheck-in, activiteitenflow, dagoverzicht en instellingen op mobiel formaat."], + ["Policy tests", "Controle dat gebruikers alleen hun eigen data kunnen lezen en muteren."], + ["Manual QA", "Toegankelijkheid, lage-interactielast, foutmeldingen en regressie in kernflows."], + ], + ) + + p(doc, "17. Bewuste afwijkingen ten opzichte van v0.4", "Heading 1") + bullets( + doc, + [ + "Geen deelmodule, viewerrollen of shared dashboards in de MVP-architectuur.", + "Geen gewoonte- of middelenmodule buiten slaapkwaliteit in release 1.", + "Geen database-gestuurde meertaligheid in de launchfase; alleen Nederlands is bevestigd.", + "Geen AI-laag of medische copy in de technische scope.", + "PDF-export, zorgdossierdoelen en zorgverlenerstoegang zijn expliciet uit deze eerste architectuur gehaald.", + ], + ) + + p(doc, "18. Vooruitkijkend ontwerp", "Heading 1") + p( + doc, + "De architectuur mag future-ready zijn, maar niet over-abstract. Dat betekent: RLS en duidelijke domeinmodellen nu al goed neerzetten, " + "maar sharing, meertaligheid, geavanceerde habits of medische varianten pas toevoegen wanneer daar een apart besluit en aparte specificatie voor is.", + ) + + set_footer(doc, f"{PRODUCT_NAME} Technische Architectuur en Implementatie v0.1") + doc.save(BASE_DIR / "inspannings-monitor-05-technische-architectuur-en-implementatie-v01.docx") + + +def build_implementatieplan_backlog() -> None: + doc = init_doc( + f"{PRODUCT_NAME} Implementatieplan en Backlog v0.1", + f"Vertaling van product-, privacy- en architectuurkeuzes naar epics en werkpakketten\n{DATE_TEXT}", + ) + p(doc, "1. Documentdoel", "Heading 1") + p( + doc, + "Dit document vertaalt de huidige documentatieset naar een uitvoerbaar implementatieplan voor release 1. " + "Het groepeert werk in epics en backlogblokken, benoemt afhankelijkheden en maakt duidelijk wat eerst gebouwd moet worden en wat bewust later blijft.", + ) + + p(doc, "2. Uitgangspunten", "Heading 1") + bullets( + doc, + [ + f"Productnaam: {PRODUCT_NAME}.", + f"Positionering: {POSITIONING}.", + "Release 1 is alleen voor individuele gebruikers.", + f"Doelgroep: {AUDIENCE.lower()}.", + f"Voertaal in release 1: {LANGUAGES}.", + f"Technische basis: {HOSTING} + {AUTH} + {DATABASE}.", + "Geen sharing, geen AI, geen PDF-export, geen medische claims in release 1.", + ], + ) + + p(doc, "3. Aanbevolen bouwvolgorde", "Heading 1") + numbered( + doc, + [ + "Fundament en projectopzet.", + "Authenticatie, profiel en instellingen.", + "Ochtendcheck-in en budgetlogica.", + "Activiteiten plannen.", + "Activiteiten evalueren en dagoverzicht.", + "Weekoverzicht en uitlegbare inzichten.", + "Reflectieprompts en geplande taken.", + "Privacy, security, logging en launch-readiness.", + ], + ) + + p(doc, "4. Epic-overzicht", "Heading 1") + table( + doc, + ["Epic", "Doel", "Prioriteit", "Afhankelijk van"], + [ + ["EPIC-01 Fundament", "Projectbasis, CI, omgevingen en design foundation neerzetten.", "P0", "-"], + ["EPIC-02 Auth en profiel", "Inloggen, sessies, profiel en basisinstellingen werkend maken.", "P0", "EPIC-01"], + ["EPIC-03 Ochtendcheck-in", "Energiescore, slaapkwaliteit en dagbudget implementeren.", "P0", "EPIC-02"], + ["EPIC-04 Dagplanning", "Activiteiten plannen en budgetfeedback tonen.", "P0", "EPIC-03"], + ["EPIC-05 Evaluatie en dagoverzicht", "Activiteiten afronden en dagresultaat tonen.", "P0", "EPIC-04"], + ["EPIC-06 Weekoverzicht en inzichten", "Weekpatronen en veilige insightregels toevoegen.", "P1", "EPIC-05"], + ["EPIC-07 Reflectie en reminders", "Optionele T+1/T+2 follow-up mogelijk maken.", "P1", "EPIC-05"], + ["EPIC-08 Security en operations", "Logging, auditability, back-up, rate limiting en hardening.", "P0", "EPIC-01 t/m EPIC-07"], + ["EPIC-09 Launch-readiness", "QA, content review, DPIA-input en go-live checks afronden.", "P0", "EPIC-01 t/m EPIC-08"], + ], + ) + + p(doc, "5. Epic 01: Fundament", "Heading 1") + p(doc, "Doel: een stabiele technische basis waarop alle kernflows kunnen landen.", "Normal") + table( + doc, + ["Story ID", "Omschrijving", "Type", "Definition of done"], + [ + ["ST-001", "Next.js projectbasis opzetten met TypeScript en gekozen stylingaanpak.", "Build", "Project start lokaal en in previewomgeving zonder handmatige workarounds."], + ["ST-002", "Omgevingen definiëren voor development, preview en production.", "Ops", "Environment strategy is vastgelegd en werkt technisch."], + ["ST-003", "Component foundation voor formulieren, kaarten, knoppen en meldingen neerzetten.", "UI", "Kerncomponenten zijn herbruikbaar en mobiel bruikbaar."], + ["ST-004", "Basale foutafhandeling en lege staten ontwerpen.", "UX", "Gebruiker ziet bruikbare feedback bij lege of foutieve situaties."], + ], + ) + + p(doc, "6. Epic 02: Auth en profiel", "Heading 1") + p(doc, "Doel: iedere gebruiker kan veilig een eigen account en basisinstellingen beheren.", "Normal") + table( + doc, + ["Story ID", "Omschrijving", "Type", "Definition of done"], + [ + ["ST-101", "Supabase Auth integreren in de app en sessieflow inrichten.", "Build", "Gebruiker kan inloggen en beveiligde routes gebruiken."], + ["ST-102", "Profile- en UserSettings-model implementeren.", "Build", "Profiel- en settingsrecords zijn per gebruiker beschikbaar."], + ["ST-103", "Onboardingflow van maximaal drie schermen implementeren.", "UX", "Nieuwe gebruiker begrijpt schaal, positionering en basisinstellingen."], + ["ST-104", "Settingsscherm bouwen voor taal, timezone, reminders en zichtbaarheid van punten.", "Build", "Wijzigingen worden persistent opgeslagen."], + ["ST-105", "RLS-basispolicies voor owner-only toegang inrichten.", "Security", "Gebruiker kan uitsluitend eigen profiel en settings lezen of wijzigen."], + ], + ) + + p(doc, "7. Epic 03: Ochtendcheck-in", "Heading 1") + p(doc, "Doel: de gebruiker kan met minimale inspanning de dag starten en een budget krijgen.", "Normal") + table( + doc, + ["Story ID", "Omschrijving", "Type", "Definition of done"], + [ + ["ST-201", "EnergySlider en SleepQualityInput component bouwen.", "UI", "Check-in kan mobiel comfortabel worden ingevuld."], + ["ST-202", "Server action voor createMorningCheckIn implementeren.", "Build", "Check-in wordt opgeslagen met juiste validatie."], + ["ST-203", "Logica voor mapping van score naar energyLevel en dailyBudget bouwen.", "Logic", "Budget wordt consistent en testbaar berekend."], + ["ST-204", "Check-instatus en budget direct zichtbaar maken op dashboard.", "UI", "Gebruiker ziet onmiddellijk het resultaat van de check-in."], + ["ST-205", "Unit tests voor score- en budgetmapping toevoegen.", "QA", "Belangrijkste grenswaarden zijn afgedekt."], + ], + ) + + p(doc, "8. Epic 04: Dagplanning", "Heading 1") + p(doc, "Doel: de gebruiker kan activiteiten voor de dag plannen binnen een eenvoudig energiemodel.", "Normal") + table( + doc, + ["Story ID", "Omschrijving", "Type", "Definition of done"], + [ + ["ST-301", "Datamodel voor activiteiten, categorieën en skip-redenen implementeren.", "Build", "Migraties en basisseed-data zijn aanwezig."], + ["ST-302", "Planningformulier bouwen met naam, categorie, duur, impact en prioriteit.", "UI", "Gebruiker kan een activiteit aanmaken zonder onnodige complexiteit."], + ["ST-303", "Autocomplete op basis van eerdere activiteiten toevoegen.", "UX", "Veelgebruikte activiteiten zijn snel opnieuw te kiezen."], + ["ST-304", "EnergyMeter en lopend totaal implementeren.", "Logic/UI", "Totaal update direct na elke wijziging."], + ["ST-305", "Niet-blokkerende waarschuwing bij budgetoverschrijding toevoegen.", "UX", "Gebruiker krijgt feedback maar behoudt regie."], + ], + ) + + p(doc, "9. Epic 05: Evaluatie en dagoverzicht", "Heading 1") + p(doc, "Doel: de kernloop afronden door geplande activiteiten te evalueren en terug te zien.", "Normal") + table( + doc, + ["Story ID", "Omschrijving", "Type", "Definition of done"], + [ + ["ST-401", "Statusflows voor uitgevoerd, geskipt en aangepast implementeren.", "Build", "Alle drie de statussen kunnen correct worden opgeslagen."], + ["ST-402", "Formuliervelden voor werkelijke duur, fatigue na afloop en skip-reden toevoegen.", "UI", "Bijbehorende velden verschijnen contextueel per status."], + ["ST-403", "Ondersteuning voor ongeplande activiteiten toevoegen.", "Build", "Ongeplande activiteit telt mee in werkelijke totalen."], + ["ST-404", "Dagoverzicht bouwen met gepland versus uitgevoerd en statusverdeling.", "UI", "Gebruiker ziet de dag samengevat in één scherm."], + ["ST-405", "Server-side aggregatie voor dagtotalen en eenvoudige samenvatting implementeren.", "Logic", "Dagtotalen blijven consistent met individuele records."], + ], + ) + + p(doc, "10. Epic 06: Weekoverzicht en inzichten", "Heading 1") + p(doc, "Doel: terugkijken op patronen zonder de wellness-guardrails te verlaten.", "Normal") + table( + doc, + ["Story ID", "Omschrijving", "Type", "Definition of done"], + [ + ["ST-501", "Weekoverzichtspagina ontwerpen en bouwen.", "UI", "Gebruiker kan per week terugkijken."], + ["ST-502", "Aggregaties voor gemiddelde energie en budget-adherence bouwen.", "Logic", "Weekstatistieken zijn herleidbaar en testbaar."], + ["ST-503", "Skip-patronen per activiteit of reden zichtbaar maken.", "Logic/UI", "Patronen worden alleen bij voldoende data getoond."], + ["ST-504", "Insightregels met minimale datadrempels definiëren.", "Safety/Logic", "Geen patroonclaim zonder expliciete guardrails."], + ["ST-505", "Tekstuele insightcopy toetsen op niet-medische formulering.", "Content", "Alle teksten blijven binnen de wellness-positionering."], + ], + ) + + p(doc, "11. Epic 07: Reflectie en reminders", "Heading 1") + p(doc, "Doel: gebruikers optioneel laten terugblikken na zwaardere dagen.", "Normal") + table( + doc, + ["Story ID", "Omschrijving", "Type", "Definition of done"], + [ + ["ST-601", "Model en flow voor ReflectionCheckIn implementeren.", "Build", "Reflecties kunnen gekoppeld worden aan een eerdere dag."], + ["ST-602", "Joblogica bouwen die bepaalt welke gebruikers een T+1/T+2 prompt zien.", "Logic/Ops", "Prompts worden niet dubbel of willekeurig aangemaakt."], + ["ST-603", "Instellingsoptie voor reflectieprompts toevoegen.", "Build", "Gebruiker kan opt-in zelfstandig beheren."], + ["ST-604", "Korte reflectie-UI bouwen.", "UI", "Prompt voelt licht en niet medisch."], + ], + ) + + p(doc, "12. Epic 08: Security en operations", "Heading 1") + p(doc, "Doel: de wellness-first MVP technisch hard genoeg maken voor echte gebruikers.", "Normal") + table( + doc, + ["Story ID", "Omschrijving", "Type", "Definition of done"], + [ + ["ST-701", "Rate limiting op auth- en mutatieroutes toevoegen.", "Security", "Misbruik wordt beperkt op kritieke routes."], + ["ST-702", "Logging van fouten, loginproblemen en belangrijke mutaties inrichten.", "Ops", "Kerngebeurtenissen zijn herleidbaar."], + ["ST-703", "Back-up en herstelstrategie voor Supabase documenteren en testen.", "Ops", "Restore-pad is minimaal een keer geoefend of aantoonbaar gevalideerd."], + ["ST-704", "Secrets- en environmentbeheer voor Vercel en Supabase formaliseren.", "Security/Ops", "Geen secrets in code of onveilige configuratie."], + ["ST-705", "RLS-policy tests en toegangstests toevoegen.", "QA/Security", "Owner-only model is aantoonbaar afgedwongen."], + ], + ) + + p(doc, "13. Epic 09: Launch-readiness", "Heading 1") + p(doc, "Doel: release 1 verantwoord kunnen opleveren.", "Normal") + table( + doc, + ["Story ID", "Omschrijving", "Type", "Definition of done"], + [ + ["ST-801", "Kernflows handmatig testen op mobiel en desktop.", "QA", "Belangrijkste user journeys zijn geverifieerd."], + ["ST-802", "Accessibility check uitvoeren op touch targets, contrast en reduced motion.", "QA/UX", "Belangrijkste toegankelijkheidseisen zijn afgevinkt."], + ["ST-803", "Copy review doen op intended use en non-intended use guardrails.", "Content/Safety", "Geen medische of zorgdossier-taal in release 1."], + ["ST-804", "DPIA-input en datacatalogus afronden voor de werkelijke MVP-scope.", "Privacy", "Pre-launch privacyartefacten zijn gereed."], + ["ST-805", "Go-live checklist opstellen met rollback, monitoring en incidentverantwoordelijkheid.", "Ops", "Team weet hoe launch en eerste incidentrespons verloopt."], + ], + ) + + p(doc, "14. Definition of done op release-niveau", "Heading 1") + bullets( + doc, + [ + "Alle P0-epics zijn functioneel afgerond.", + "Geen blocking bugs in ochtendcheck-in, planning, evaluatie of dashboardflow.", + "Owner-only toegang is technisch afgedwongen en getest.", + "Launchcopy blijft binnen wellness/self-management claims.", + "Privacy- en securitybasis is gereed voor echte gebruikersintroductie.", + ], + ) + + p(doc, "15. Bewust níet in deze backlog voor release 1", "Heading 1") + bullets( + doc, + [ + "Viewerrollen, delen met zorgverleners of naasten, en granular sharing.", + "Habit tracking buiten slaapkwaliteit.", + "Database-gestuurde vertalingen of extra talen.", + "AI-inzichten, chatbotfuncties of vrije tekstinterpretatie.", + "PDF-export, zorgdossierkoppelingen of medical-track features.", + ], + ) + + p(doc, "16. Aanbevolen vertaling naar projectsturing", "Heading 1") + numbered( + doc, + [ + "Gebruik epics als hoofdstructuur in je projectboard.", + "Gebruik de story-ID’s als eerste backlogbasis; verfijn ze later in kleinere technische taken.", + "Koppel iedere story terug aan de bestaande FR-, PRIV-, SEC- en SAFE-eisen waar relevant.", + "Plan EPIC-08 en EPIC-09 niet als eindklus, maar parallel aan de featurebouw.", + "Gebruik dit document als leidraad voor scopebewaking: alles wat hier niet in staat, komt niet ongemerkt mee in release 1.", + ], + ) + + set_footer(doc, f"{PRODUCT_NAME} Implementatieplan en Backlog v0.1") + doc.save(BASE_DIR / "inspannings-monitor-06-implementatieplan-en-backlog-v01.docx") + + +def main() -> None: + BASE_DIR.mkdir(parents=True, exist_ok=True) + build_productkader() + build_functionele_specificatie() + build_privacy_security_safety() + build_roadmap() + build_technische_architectuur() + build_implementatieplan_backlog() + + +if __name__ == "__main__": + main() diff --git a/docs/inspannings-monitor-01-productkader-en-positionering-v06.docx b/docs/inspannings-monitor-01-productkader-en-positionering-v06.docx new file mode 100644 index 0000000000000000000000000000000000000000..085329022de0c43cd2b8854da0e55652f5a0b431 GIT binary patch literal 40445 zcmaI6W0+;j(k)!>sxG_B=q}r~ZQHiBN?o??F59-B7MS;4b_fq=xn00AL?j%o3fT`{-MV;yE&ows`XJZBXr$9pJ7#TteQ;2b*TP(EEQ@ALjlCvaTi1Os`QROI$uD>@3n}TpeaBsTZT{M8UbXe8<4U{JAiOwYz za0ma&apBqRYKEgswx`FM7Bb5w>wQ@q5pm`5^v;rh7Tu1Eia2zV;aZy=&;$>D)mK%x zL#C+5x;0JVjB~ibE9Cw$t%66e1+{$?wFVrZ$T{Rf!4WhR6UA~^`h^G~*cF~AV5ISpZ_}cMwSjV)PH`lo=@5J_xP^v@3auNI1b;1Q z3m!`S;_gZwJ1?*Xh!!k&w95%a0R0Lbdr4xGHY{RI^MCyZa8uYef9OY^;pWO|g#LuR&IOKE+qTFQ`LqB??#cvp5d% z7TS?i#mS3m#s5PV8JVOkM>CnnH+Ftmsb^C-<8E*a z-q>=lvD7z$8U(}!;0488_!@>ntD(NH=%cN^WD1e9l_&h{x#)VHxh6JYHyG&(lf#7h zT9pYZmPV%~IUmgay|0FeaW-&*AfrjXAm@-@0a0oxP? zTEybU0$iYU#G)MFkiW%|v~GY5OSjY(%vtx}lAAQ-qr zjGU>nqB35;9LQA-=XIOD{OZBk+3i&-2O=LHN5dwDD&)6@QC5;9JwWJH{e5#UslV*tcU7IBl{S7lHTJo@=cC z%**Y{3i`=sUM#_YfDrz7Ui55j|4NJEsPzghLfZ=kn3iLx*%v;!Z?S&!d{Y8zm{qaq zjk6nlSC_gBUb z2pzymz>86p`w_M5bS6j2=OCz{98*+eD@HsBYxT#jaKG3($WTl=F2nJz*Lf7QO51w= zel_A1I(4po?7K{mtzTSEmZOykEd_n6G%a;2n&e^<*||GbOH6=;69&Wls z3Km9}!pEZ1ZND5d1v7{CaJ;KAJVMMivC=^2ocYdsf=g+8Jp=RD_jMQD;MXQE;P;)d zZE40i=?V~fXx&LIzCum0O7L~WS#+l=-(WTy6X=@&Y54H;_XKl2o9z@@0W9>NwGH4JpXp)gv}Hr!1^6apl*bs=%SwyD$40RmkzY zX4p$Dh(Ek0rnrTwN2^N3x2ekrxGDxnek9_&=;L8g7?7Q-92^KNsB1}UM4)CdVIn#c zZ3O_Df%j}kz~e2rzR8L>t8e2ym}0&mP+wWm9c(^1aX}xuK(GRuYN2qG&Y&#chQmj3 zeVZ&dk`lPbRW^Qb1f`=Zd05KCB=xO`@#M>hw6~?vywc!aLZv<3V13Npo#OrH#&|YI zkEn(N0+Q$Y`-OF}u{Wgod~2PoK98wCJ7Z5{)P6-6ZEaG;(QHSkFX)FzL&^}@%C!Z# zJ!9gT;&=rxV>gs)}m@hLxo;ld-H_iT%|TAjqY7N{MU*CIzD~!92Xiip z@8@I_{T$8Wa<-O67VHh=kv`@rVy>2l_qDL@UXR?{=^ym9!Z>TKvU}}WxF36idq1k} z5-4`SooV+B)%rv@7%swwO%(?i5=QNlPZpP^rQc{9o`$3g*_HG1orX=l+gSE(0&1(t zC9oePQv)bnj?e5pYS-*BSaco+cY<8!3)XfVf-Q4kw57{O^9S=Js(Z#u^?kUYkDPun zoY9z8_ByBaPf72M{aQEp-NR==45V8#RBK$*Zfy-z_in1(lm>*6h`m5+aw#lr1hklH zUl7K$ZrzHdJ&`I^(QbQCGpc{_z7`BP-9^GXfwchvAffH4`Mf^kJPfd8Lt0H$G(kZo zOv#*I>nwsD^W2k4yML)1(_$GiGpEo7f z8vgM(SSh6@YGCV5CS5kQ&Te;XDc=vEM&8S2=`W^Y3i)N9OpLa(MR2y`#)5v|hFeri zeyszwP)R-t^P8Sri5X{idPp%w6`mJRDOk}aix(z2h`AA*pukkC1Y%m4P>DS*>PX43 zl@Wfx)W(~Q74Y_e3#rDM5%PBRj=F%M~a3*Bo zN1w1Q)-BI=q*M}8EQlDaKr0omD*Byy3PE@hsAdA8QcUSBb{v&)FcEXc zR=hh)wIYUVSSl64;1fCWsVY-n;z^BNr>uW5dVZ+hAMHi z>8GwQT77gpkSPgG)sBv-+%zsi6>)+_o?#ca+!A3z2RF94fD)rpnGIBNgfKcJ|1c`5mEZugSXkq2Ns7hP? zUy-d8$s2vzl{b?qyF_$ZnZ|*@9%uAI#_0+)#cK(ZAEp;(jN8=E?yX(HD7#eD$>_lQ zKvcywnX*bHvnGML=jRwvYso18kq4L!Y6(WB8&t|Duvv(^p13LK z2ht`?wn;8h-#GF{-Ll=t2OS{AvJ+yw(`3&%VftY5Cc%LKAv`=1PLKzm%a5m}@j@$_ z#UHT&TR`t$OO`JoX72{j1jOjq|MUUE?@vBd>9~OJ$FhK6A$~hp`6!e4sPl8aV`*59 z#+omUAq>31Js=Uj^2;*5Y@})?xfKW4?`r!`c z!uJP4dmxP5?+>5qZu&AMu^-tBn$_EjhGngSL>F$5w&nd4c&tZGmORyE2^u(iQ8 zRph>W#iEGu-bj`xebLz>v@F1s8qos$oGW{{!Fk}^Ih=lTmSyX@CBsYj9y6tckAOwi znM)?AGH9jyux#XSm72ySaz#XH3s73+b5*q1KZGO#ip}y;yb;LLklnNCh_H@VK?+Ml zN!A9ooYdW77z@OhtrAR9z+D!bHiXhR!e&6$;VmI}oP85ttH` zAi~AQh$m4bJ7T*tqm3@@8>LaYRe6cAYQF;cKb>OKJ)jWhBZiZj)=po+P;%sa3j_o9 z=E7h|hpB}knG2?$VO!)RQAy;aI&nqBkTgYSy{~HYimQPd7fct+NMbrBCT!>jH(P(G z#NZ&d)w?`*GWbfNYKEqRMF?3q8MjWr301w(#m7v8fZ*r3t0KAlo7}Z5MQUalIRUOa zJSa+5DN+d709&zY3V&zoYwB_|&bLB*lYZ_9TGZ$&=13-O(#LGIcJp|FX;K6?sYvKs zo#Qg{=l=De$S^SgQLv#@6Gl9DtEz)NkN_!^;gMnB$0ZZ#G6=hTA+&2A3Kl;+%X&dY zJACy$d^KnIowT=tJtI&UJ{wpB;a8wdvx2WvjI(esWH|3)C^HBs%FFy_^jAwhjB+5t zp?<%4_fwMDo!Y3Ak>S*oK8$y}W!vh*Cn(0}2X;K;=kWA6Je$)gb5Uj_3ge=ayH9kk zMs!e)O+}Q~&o|B7>KLqbJ}l3$4Lna7(v+InmX}t{gx8mi-b9s)+<2@Z9+`MBUXIBe z&0lT_IIrX(EImJln+62YT|p8${JN1W@v=Es7gykc0OOa3(}CRS2tl29ZdaHX!y?T$ zPtWf9Q}QDLzNBrHS+54atwG&{Pe2Go}nJWKYn zkxR{v6UT_O$gVvGWT^O_vCJhsm*1W-@40-A8|#laR$a2Qg_qZWyoO(P_8PF`jfE}Y ze%8ri!}$ncr!~nmMg#7xCOnT~3;45YYYn7eN!Yk_@LJ;a%(fy*vE*4ALyOGa+o{NV z;bc*u<4~=}TPX^-+36=e4&pH3IbU@vOn4)SlH6Gh(KNyMnwH^gBdVo%9hlof#?vf? zCNE#@l?GCKid;6%5W_DzRtj&K4vdn(pf6|orbEG?9M3Sy3TtMK7Q7)jce{I9drmY7 z%s~L(EP@-cMf}s}PwnO9QkH2_XDfg3MnzKffG`~v=z(O;icq4LLD7pFjT`>*YBkzeKD_g3Gy6?x2)5jY zRoIllU05@nZk~9#`L&SMt&UpGN`Q|W8tMmiP9thci=yrGt6^is5JIJz#!qt{Qi`AY zq8Dn9#FL0$BPL~{ijRq#1p-o_!4xJOL(k&b@(o|99Cz=$P`N%*%=VMU*Dr-{kUu>etkYoYGF?1r&lU0S_mz+ebiZYP&+X*EN2L~ zM-VbkWMq_1+8e1(Gk9&ta^J_5GFu)9of@(!7=fDQl1h!_kgD3v!17SoF~wDRbAB(h ztxYvAs7HN@7jI`LsP5y)hKO~Wh#=3|0Iib0@}Z^LPoa8thR+N_5(`1-nY0ttXs9r= z8uzip-+?|~Yc5Y5d-Rix8a(V26bmsK0h|1RC5?m^extO7X_2j>OoVD{T4>evQA`5N zog0acS92MUfe1Ix)$n7m{1u{6>$3`GaK*GcZ>jdLR8m=aLA~NSj#TqOcS^0Z;&4zZ z&$ci>aGG%H85eHfQdK@Qh+$eixjV%Qrh)0%$QPF>WNhr# zS)TRaA*gvsbN=L4%3xZ#zT3d3bh1s3wQ*liX=v*>{0%Rh5XRE*U@b#DT)WOaHBsUh zm9uY?#qM<9nAN#Qm8A#}hBe2Q1eBIe=jgN<(w4OiW?=R`1Z{(+r~D2uEn+IO)>qyS z%`~zG%FEoB62F$P-cBQrsxYnhp5RhS2esrl=Ab&rz2AZAld!_h%%~zY%vcmSz2BF2 z=&^cTq5)BVaB|ULTTV9)YYK40oa!dZYM6JvT(X&~cYxI;(B43$6QZVrE0{lhVyqpF zomsVN3D9U@tMPw`FeQ+8l2GLDULU?%;j@$~29!3j-6-3=qF~Uuvey*&qBKN}U|tq~(7!}j!3A!Yg&KhMz&(O0Qk|^V z74FPWZH_vP-nDJl@ksaQZDGr=z^y+)iLAje)P`rz{)U%EGhgf3@Ceg|)}0Z_{0YD! zht)h^wgCw0KQ36POR=dHVuvB$bvGr55%#$VQN~h-v-dZb=!A5C@%iDo>l!>?pR=p_rw8&S$ zei(-_+_AnliU$(+v{23osZG7XE*lR4wevXnKpf+{g_*j)ZZB=+`J;1;|1Qq!zS?@c z+*D(54HV*ZxBalai1s#QsYgrpC@oM-44qrffo#v^=#gUVaeiQTLjk!Y0~~8Qvogjp?D%>JB@6rA~ST}@+z;TTBIW;c&kgYR%4mGAFLXjCVL zxo87p!9o}qzu+FdCYjVwhRsrsmNKeYX*@=;h!=yc<}I4iIuiS_Ei-SneQ!jSjX6JA zeff3j`Fe+Ur4AJaN3;iWN8pyk%9i$6QUr)b0?YXMpiU5(R%8K0_|f5&=#RwzZBX#> z=iLpIkPM8kq`sdhW8L-%MC7*&6u;zwpZGj0ppRq^+q8YO;ludMk+Pjnb&=mEqsSG& z*hLva#SEC;Vdr&vVhZB;5gP4mK%p!@Xq}xJ!R}As)4f6eGx8iZG{faIpY0}Pa3J`9 zBJbenW@+T`r>}6PW#v#RT=Nd_4j9$BCbNJ-h?VznmO!c!Q({gV7qjOXt(mB1uGys+ z_K1CbhK4lMHr6dD^u;i3C1-;$!+f^NEYx#b$+#eB3P1Y^2k8pEe$}UcLm~u+XHz zKTIZ#p0L2fAB^AJ8+pBtUO9O{$^h6iwda#ACua_VlJ1Tg8y6~B29p-l^STE+6;sExP>>t=((NE*!PqA!mt6XR2c!W6zJiT!rS{FR48p`g5 zPSm(7mGD_J1}nV_ot|UblKa06SkHrA?v75P!VbgWhugVOE*|S2RVW{w+L!w6=d-9+ ze$(*R3i_YBD6qWk6gG<1pEQorAzr6K4#U03%DW#@=iGR^Gjx z3`)3e_j*xMa6XQ@@MJm5WmR^`u3I+;#4ZRx?@19iH@ zeBuFbH!tlhmjidc(2@@}5N?+b*0W4=At}}y81GBGhm-O9rzY>^%yYo{J0Rxm9e%Ji zN+n*-MumyVv-9QEv-#x_n`B&Fk6Pr&X~(;hL+AL*!K(P$CO@+y8(9T84e&=4p_Be^J?#`cZc_H}50aDhh&Lud2ZgnVb^Zb!ldlV-PEe~T$0 za&6Aeo72mE1-dY(*b!_)FnG<+5n*EhT^vc_2y!BSvbEnBnVtoaM`D z@H4Ir9Bk`{4X}M!bQ}0D{Ld#c(?65y*J#lJ|4j0+ehwl0Ydu!Ea0qm_#5zcgZET~@ zKiC}Qe@r1i*M0rVG_eib@DJ{PnEp-0cRbvx4XOQK1Rm4kpCf*MRAdv`0IU6_;y)z* z8|qhP+eyIYpH=@`*qZXE9+aP-zJgP^K@ai&w?t^j9fD1zCClT?{mgwGmnGQxFIkl2^_-uA{VriigF7}Z`ZUff z*k2IQ>OEF3BCjl%z2gTmmD>|vE9cf4S5{7(16bB2w(&Z46QPBA2f{Xb;I-dfVFx|N zJI-z#z1BG0%vj$yU1S=KxTccw!kQ$|WQl@yETn!7d~j#<%1UrEV1iS)SbtfNp+gV$ zYSL-bj;sb99POCy+_5oCbjp8-tLO`*soW2=ZbT@y^dMjBxw*5YJhsDGzSQ|Lzjo#l zv@yN25TiVKvTJdHCdxx6ql~-T?w^CXfisyHVjf#>kaV}h_T>HCOllOc@a_G{ozuI? zWmPRUh(3!=NcH4Crui%q$tZs(Vg6TtMQWL-gSEG<$}hY4cBr|k^&d%%ZX7z1G}U>i zT%>t*xlk2_=j*8IRRT3&+xN=qZ9sko3G88)vot4C-B+%9t}}%vdKfk>k%H?#_M|ZK zQKf9T@{gtX2BOD36k;a^$4(u!)MXFkgU&9{WBO1-iXE9#EHhb`Y*x-r;B#JsZlf*) zX0q_E0oP4$j+_CQw#L;itE$ipnu-mc`h+~QMjGD1K>@N={etynpKK8!Fj!I zk{Nl3dbxm$@%9!YKV6{kdiL_l0@&8CU3@fm0G=O5J`MpdNA_GCxZ~dr@S>7NuL3^a z9%F#KeS%*5IajUyDld9hMtAPxIR|#RUBg!Z@pE2QUvi7gmJFYI>CT$_nzC;d>pjHx zs9`gg)-usQkI$9cDX;un72;;Mj)NYH9ScnF4SW5zo#p5*Jz34RP z%1VjUnF_|j2t#QP+x?&XrzbChLLQn?`no5szsPmDaDn$T7xrezf}ppfgslqVlJefe zZ79`o5Ia6`uIW6A`68g0zK81Byj$8CggiViogxnfGA5NQdy z7~7GAq>ZdgSRyvEt!W;5T{pQkDopSocYmSFeL7e}Oqr-ib)`q_eX!%2kw!<$qHW0z zQ%}zrvd%CJ+i%b45;Zx}O~8QlD-h_gdmFUY0nBElGk*6i;$)&=n{k!D#Ww!%{KBHL zTQ+t>G8Z26Akl$!l){+WKyM(7P*2anBN+eM?xH(Y6fp1SRGe!`wE_(GMopb1*dJwj z)m4PcKD2&&{dg;~+STmZITd1IanPbM-eSp)Jp!E**1wqMHb)dto!~Ji%~j*z(xnt? zZn`n6o%cPHKiinPlkEW@ad$CMeV+YH#Ad0m5$$x1YaDl%_ll!@2s?`LNE8^@mh)=A z@}f1@xjxVmaQv`{3G=$5`M@m@j=>a0XFpEpy@9&icZ~>G%N-DjM(xYuPhlX@?NGc* zJgqa+*$8*l#^V;jvRET21-31mI>a4qW-`Ov*lb@(#2OPxh|WpypfQPkTtA5ub$H;$ z9anF8+FJp18oj(}*;i;WtrqD&MqOCrQQ7tv+;&0vpA66E`Idhz#Zj`&C6p6d>F!nz zSgRuk1ZTz7FvXJO8j)?zQ7cPmupRIQ@EC(ND>7;{T&Li9hk8U{gJ%MV;wd0 z9XU&=_^$n>2*qjgSvl$0@XNXrLu&4Hg~-Wt)Q~})>#ve;^}iC`Nxqi364QlxFIJ}I zwyeEm(A5_nTVWtyCK&(BwYT^d)*`;~#Xfrdi+xjfilFqnmLwNmGne+q%E-2$7=<)> zIV)ey_Ahv4OMqF@ud`M0m1fZfhZo(}2J|B_b$fNQVX|1FLaxRi@BD0H3=`zztOE2q zW$?zQ#?`66xDFET)4wk{tbg$^Z_*8yidH^py3iXgN!w+O|3RlsnM!+B*m8Z@UiQ67 z|6u={+qbV#U33Pp!{2HGci-yUM~{Y7-{Y|p!)PH|Yk=YzODPYn*4&HGY)+l|pXPt9 zcbi0untmgaQe4^#e4S|eW)xJ`RC4UUHk3$5I{hT#(Dp94|?D!MDu+lAE zMW*;#Spss!EE4ee>QVa+(_q#*Pj(3jR&Jp~^2-AOuYsvCQ))PNr1A6v19XbUTKVHM z`2&KAax%H7oD!Y~9YU^r9`)g=P*}?Q;fQ%%%-oPXwCnJGr?OetUGCSKvjsKwAsUk; ze1h>h9x@i16cf7;UY2l|d_j?1EtC=VkcmDlN?N5@tMu;X7qK%3)bK<|`wXVU!Osi6 zqZb;E%X|@ES{}@@r%plY?HZ7m3d%uEXNL1Bke8baBvtjB^4UpePsh8geCM#0^oTFY zMOgf4b&o45QSBEL#`IP7*KlO%!rKh$?!mO9?$zu0pcU4o!|;?5nL(P-yRD<0^T{;8 zK;vUL4DL2j>RIi1IDmjW^2)~Z7O?IBk2 z<s=6-W(adyElOI|it9TUXi>12LkJWH9M4B*}KUTm`+|r$jGJ82wM2&2}6mny}wkYM;Ptn|;^leDB~D*XeAgw}Hj@ zLbv;&IV=l;xBDyS=6%KO?Fad|*^RpFE;!N!PFqlI&Z_)2>=RcY>pskb&_jf`!ihw; z#xSfmo|ei z!|UK)zy2T!_6|)2Xxac?JlQ(}Qeyce?2qJG?NBXKwa97Gdd7j2WCj}tT~u7i#t8Jd zb!~+i0?{gd1fUNaTdlx==~=iJ^u17$vq%z1mM%Z=UKEhwXB8?_di6Dcm+oso!C7$+CG)MGbSFeuJaEYa{^7&G8k7NRkG z3AX<+r-i||``cXmZ*w`Cf6VhpKFwj>A@54=mwva3!4I7j-^t*~*>smY&7%qkx1(J0 z1IrX8?IUn$mZ;52GzipWd_CT~V;;%Xb~X6U-(K=2c57`7cI|GSGAlBxQDxq-HyABP z1KuXvg?yaPCJ3Koj&>J&7HwJR=kCUpQ&WV#ju0waX|99bp7zxO@P@K^Mwp02V{B|<-LcplLOna@w$EeY_70j z?zSzR0U{Njx89B3vUZMEgiJF{vcGl3EM3az%wu zEQ|%CoZ!r~u_h~8YLx+WjHYd(#Z$&Gh?+@By&4j zFoilB?P@b@YX_H)Y^8DaK%8dgCn>LM0nZrbC9G?*9mK~8n z{By57RPXNLKH7~Vluf<5a9lY{@h_3_Kr-y>8~=)aI`VV5%X$o$S$PeL6)_Y&&J}3S z4`zFSh0m#+)Tq}kR)#!RgjYrLG~QD>G53NXV)O!lTLbK8V^$%d?(qIBKv`E&7E#t! zbC@*W`APAXmaU~(h*zseqx^Wvki?!GWO^MM1@7sIZ-EdK6`1UC83tlmPw)?w;cHhd zm-EBetDIDr&;Rfc;{U_bh$Yhi3Aqsw6zW5iroaO5{d9@<)1|z4XZYOQpy8=;Dv)EO zb#tXCViw~Z!fbs+*+JKA+ib$@zy+T0VbR*nnFh$uMAl_U@(tX1+1O*Tb=n!;7ZnKc zUPnk5XAW>LXd*^?N+V}k$rW8x-r=oGK4_ z8Ah*G!+(pN;y+br6kb`Gnc#GQ6-mzCFI7KA74cw8Y=X{bW`M z@t35ho$0|bMs>iRq%AK%O`^=z!G3HU#vhxVI>6q8{m7c>JxC=5X#o-Ha=bAh2O&fO zHaju@ALkTJORdO3?%NLatQ{S~d|G}ss?Q0Kau!1_O8q~hDac2B={bnCCOm;=xVrj( zNnVf~*z3W)*~9(ymD?MNww{~C=E+g(Zd*@B*U_>C`A2(_r^sgsxBOJzT}h^k;bU-Sh#^gMXC-#A&gqXC(Bp5`Uzw_QEw zx{JyZyQAyL6zcu;@z`CfhPNamS4Vfu8L|k9~?342s$ih=#-c~jlyvMo@wmD zmCX=MAkx|=4>@egrFS!dRlGe7=7Uf_O0UTg|b7Q6z^ESavcote|Kr3etnvXf$g z?eS@dK>NDp`$eG%(Pq%m1Y(w?44E6Ki8nAgHWVdy^svVF4tNLHB0Is zRW@%Weq-Dk&)o(oRkY& zMRfVW2nVw=43@w=5s698Lo^tWOoSMDZl@2Vz;J1YI56j`|CxV*r4M#EF7z;(P;0gG&+o7U zwUhp9JTcY~jV@(@GmDiZ@hZdt(}e!km1trq*!(XgEJOGc#aZVGY$j*SSc%WfSpQa- zgR^ht#G8&h{RBNVTSos$Zjv81$5MvKOXReegX?ne9c4-gO?Te(uHQRX*0+nJ#fH+y3F zJ1aCPmoE`M@65U(TUCEi6aAsq3-NUy^e3vg@IcZ8~& zp)darYFBtW5Sx8;9UJLNIhuc{>qtJSaXcUs@jEqQb?&ml`k^@cEP{ws^;szqYiv99 z#FDBR3{~~B*ROO#_GtWGOEE4MiZCd<+Z35pd(KXxgNQB*;J_qo^~Ch_OsUbdT!TN0 zkg7ggRYJopKyNIyfyq!+A8&hJcWl=UPGwUQQM+)vF4S>;kFMBVX~iXr=9;pc=$Dyc zglw5J{*F_3H?IW1jO8!fQmHflK$UnHsU5f11Q*=- z6hJYy#$>&;9A|@qaP^)O86!x=F?C-3E*48A#&{5%VazoHX<$&gDW73HDlRFcwqch# zX|u^VXDqh^N0b7csyklyO?1ED%{Al7HUk;&+&$>1U=Q`>oviYpz!aP@9Jk?gG>)P32_} z?1KKlaZ>$Re*4X_QqA8qwd^S(NIIfIDlW_;*9>!t5qKq~bzH$%ea~P%~!%yV#%3zyJapr4o+bbR7?)(6+I(j zJ8Tn_x0(ETK+6T;?;|9h^RBaDLyGf=Lz8?DgA}Dn7E!!qI-y zek+2I0JzUv$0HEo7as(Ceco@t)S^g4L(rIz(y|s@O9sDyZoc(=m88*-O!6f;H`2-l zpOsMRg-;1+kySskTJrY=kux<+F-<-?f)lILCH{ycccZ-MlAUH_ob{6W)} zJ@K74X#0Z(onFrucGQDOK=h`! zbycU)KQ=1#a&IiUxJ_2F8cDe+N;GK7E0n z_6zhwk543d_(s#k8F&fulJ673aZWI?;f{2QI>%P zFAZ3yiNa9%t{p#|UvA}T6R+mDhs7+^1p5o1`;C}V!f+(~RHQe^-%w^n^8u=&8}ZL_ zdRFp+g9&G$@+{}P$vR)8WZ88A-D3})GLO_DPZ&VfAy0QxkbSSVr}}OZHe{Le9EN~3 z7EyT0Cv_X+@1}Vv6Tlo*5#=44V&AKK*X#c1o_&wnsI@>!R#$d58v0!?KfC&D z)K?2#0`>~a&d?USpq|%d8t+V}- zCph$-=NfCp3_MElAh_u7NVYrbEE!KqEXZ}UX;4TvC%`vp5t<~m%Z%tbaPd!2Fkkfm zAiW^TSzSf=`y`wdKW<8KT=2&#{Re(((ejMKgE$AoIVJVI!T>e)y*`_Q=>u5DY_`F< zu@)I-+=Ip{UkdV%$7E3ReFnifL~s70Y7D5KUFrFY${{gqZp29B5NzZX3+m`qtf8v zy4D1$2f$&3zSvI5!edQGVm<6=saLS75yuI=lBs8Yl{0S?H%wP zWj5<@Qw*WZdl6|(F5NBo$3K{9gSkUsVRK~lzxN`=k1f`Si5s5!{w{`N7Fk5?`dxvE z8=@`|_+x`t|V<0Y1f4%Shj;XmzK_4glWt7h001H$K#iXX43$?;y@*d zF)X%^qZ3f4J4DTsBUM8_Mkg(%{Lbvr+Yphtkh-nXVJU6lOk8|bDzFt`(<^k+l<7sd^;%g%PI!vxy3H3M3?P`pIcPCWN>vUcM4Fb?ld{-{?+H+n&y5d}>Ccy#hsAnE3B2Oxh; zQNI+J^nG>*MtzlykOJpXD8$>t1t8mO*PaYep7Vlt;yx>HKm&@nE0ixC`o99GQD2KT z3vEKP{qS}?!@xT~uYwcEF!Rm_pPUqj#hXF2#b0KcPpY1xB*1wh+Bf3KY-lHBK5?M| zhitMsG@o`Q)y118$G3T>!lQG3H@T!?9G`g$>X>`@oQfJnd2RdrlIz0dK%#gAJ)(QN&tRDSy#14#pHGuSx3hMtdf zNJ$F{Z6>a4Bmc#c0bbUEj0S?>u-v+Fk59RnroXvaWPTf4%`9@lmlE>D*G(W*&=J_V zyu7RuFxecvQY62oxPub|?rZ6+^1>V`gmiq?0o-P=9;lxWh(9$Vahgt(U?2lsfP1Z6 zkj9oq+aQBo5b&uM4OnH{sEpu1!gt6OfFqL{%c#5UE}iGV27|x`16-=Uvr5~xMcJ;_ zQx4X!0rT3n`M;rHuhiq%`6FPntmF3j?pTpIAlPE7q^e+Ih&9Or0|GNSVfj%$LZ<{4u^RJ53|W3N3SrR9y^}PZd$5wE*#WD~_-RasK z*5O}hsSP$DW~^5D-o!A){Y5if`-$HX(;>7r-{Dcg#J9(H4plxI?N0f<%sr@@2WViI z{IMO3_+q}cb{y(xAxZ8A68gHtv{n2fBdgh8u_bj?fuNDUCAcO}aE^T*{p}qI$=~Rz zGwJCp_R0!QrE&WD6`NK0nghrPxK=5#EV{e;1|4f4Fu!X|C{yU{s<$2(h8@vgdTvP& zDHBhQj6_JemBFlU#H*%2l}YN#LQ=#D<(TFnQOqPKfHQ2|xM|srrevsMRM+5E)f~;L ztDU;&CchzvB#8Z5@Uw^ZO~AEIOsLn@)i+{S1C2;{ircds);1kVMQAlN(ymITUZl~h zrA|;y;iRB=Xxyu&cTLmKHySD{``t>;0?a0>tb8bwhBa%PuU)4H{K>EQiBnr6HZ;0; z*WfA8y@`JMKgi4l#K_JSj}D3d0H!ar2HpHy_;{!r;Em(C3tT-Xf! zag+A*zI(se7wuGht0|V5kia2uql(eS$5>5o`03qqVw#U8DFub2^8_rr-XAv!EUJ!0 zh?EQHC~n%jU>Dg72Xf{Jgd8wWvyE z`P;}iW7JWjTU5=zCi6U?!LZ}AJZ29>>P?e zJ7?t2&Y^%#%&awZ8PJsq)~cz|ZC1Cv7c=?8h^UNqHq=+Bf2BtHCa&U){C0c?Ayv-u zX6?9LyxK8*4AwsG<)K$wh`b-WK3AewrrDH@y-ilm-l-KqXunV1$vw|R@PjgVj4+g! z5dz1Y)nlbhc&bvjpyrCDA;!&@>=m(Hw)L1lCpo*r*Up(n#PvZR1gaMZ>dfUAQ8F*B zuP#V8m|2*61G+6c$RPwuTRsoez;@E|55=Oxl9Yh2mx-xhs1U%Y?51&|vcB0MeBgdx zud&)72vl`>Vs-aQsB`#r|6E`J#ZvqMp~^ODML-uf!m@hbWOLruwFLaX>h(P`gg9kI z2n6(i?`89wnbH4&XyFB4cxVr?tvE&^e+<(-t;YCvBme&q_72dQH2b%3Y)@=XY}+;_ zp4hhSiJggU+qSKVJ+U)!?vwX@&$;LPzkBbuo|RrJ-PQZI_pa_*g|4dfAQ&{>q&fxQ zO@$vheGEB5FR~6H5NJj3UI!8^t(Le{sB{#NXj0yo&{Rk&GhkG1{_J}diG~Mda=Cp2 zupFn9KmX!wb{7ZWO-JxI@89bTEG0aG zGP}xauHJgkyBEIZ3Jspz(x~{+^OBb^K$Xn&I_%~Og0H2z!@6uFuI?7tmnZ;oK!w72 zhp0qALGVinl3Q25IqTTiC&>1bqa3K(VPT$duy2NoyjK`fb}%t$daU3#<+Q`LVjfh{ z`!De&6?h=P@nxg3uTcY!;#XzB5i1;LbNTto}06Pd|#UH&LJ0 zsWkUOS1F#+?)U}h!C4sm+;SBt6uL2)o)e!9B>EtN;L`>mEXIS|gdxXQEe`6_7w*sr zSbV3kiNFBgxH%#ZpMi>*?U>9e^cl3ljkeTaxcvA6=x#%%RH+D_AO?Tbln{amLQNBa zu_y;%z`PrAYRLsxw_`};K6x%dQBL5kHLli#wK^@D70mQa?povE(GlsSg#YcX+o694Nf0i z%UZnc2yOxJK>deD&?gV6zj$Da!bn+u@|d(GuOv`1d(UDOf=TE}m0vAa{K-ofDF#Ek zPP3WpA9WdBbtHBXE|F_MWQ0!HgCT^XL|8CGs-&PrwScE&<`bd(7Ati7rvh221~3Xf zGMhJU+_kDMB?|SiW-Kb?`SJXI>e~L6Jw3kh z{pRKVqP@Br@$xeJ;br-9vvZA?hgKK8y}PplzbSp=aQ@vEF+IgKT|QeCaokmxeQnrv zN{@r%wR`#eP``DJZ0IoJ{xV|Yt+X`-Ue}U7BJ}pd86r^f=8uK9`QAe`TlKiJ!_BEF}gKv@bQ;La?ukT0GcVAbFy|r=gg6=1}R{u*M zUw1y;j?%UVxBTJ{&JTle$AsbRp!Cq@lmidnmQL5T14oDc^!p3*dyjMW)us3Z`6DqZ z0*>1nUER>EUpb*`gUkEARq!|K?|awc^wY!K)i(AV+n8|;KgQ|ZY=~@cy~s7LypvAT ztd4wCPuIF_*=?(rmsBk(-&)=s%&9dXM1FBaDL%})Sg_yjm|v&K$ z>w;LmSUvhiR@q&FBFsOr)V}ELVA8sBZrZ*`?8(H1Cq2zyh{5FhRI_G^09ih~_|~3r zzo9$&t(!h;Ym0kovh=CyZvWQc?a9lb_5ERspzcp9=N%*C)4NYCU?RlXuf9K*OdEF3 zB+H6F{MA&qI?D0T% zv8Uow!kz52{uw2H*lEEa!=T}RYjA(8^Lnk3m+R=}SC>b4e;L+oDxYN2Sl`-`FD?!w zNTx3*P>qQhzkhkzdFs2LKe2!M$Vxu-y-bc--uu8IIQ%Fb44qu_@b$`(hUC4(&*#Ta zu0GDo(5}-d=zn#5EZ;z}M#<49wrNu);l_5ZQ|ES;CY0V##;ibhmuJUHDXk;U6 zIAp-VupK6|7$&hW65P3ZL`n z;}S^FmA%mu3^?_B8*mB}aEkfip5Id)_r2?BM*@zuyXs+j{MWs;L~TaaLu$J&`r6>p z`R@HO-2pgz(Mj6V)r0-C>%4G4`g_fmjnadb;kZ4Nl_-6+e8h%@nr)N;hmWkr=EhcY z`LL#Ee*9bIP#^ttMCif%;gfx9=Zo{xuufTAHoGf9G;WDc546WY@#0bO+xNau0(Y8c zGSFV*{o+L%UEAFK+!h);_$pnH4Q$vCb-t=iohjbI-Z-z6zG!9JVddHc1eodm$iyf+ zo*&f)qX4f^!`7+L=$dpN4|mmVnx@&O)6a{WO)tI~)36`WyFB8H z+5FOtw5y~wY~{?>3c55wMEoH<25P*xsNR!!Qb(f~ZsLv3AW^RXi%F_p3tllwyYZp< z-t{XJy7{r?lBuKl0evGL0oj1*oSQF!4%~C{yZ|InzNQdH zon%D|yaL&(4rB?{Rm(?OWUb0iFyKwC2fJ5{MlZ@v{BYY_g_|jqvJ5Y^AN4$XLO<3; z+-4{grABO923nnD9fYF-*#>y>Q3GTttjW(qdO!;(RIrcMuOE8{y+=RF4tD!$th5OT zL0JWGf$|sN0^vE}LM-4yjaUn~-M=Alm!O(~-qLWo$#y>z{p;?}L~fJTz_>*vpC}EV z@PDEFXM+Dk`9HJ3WNikw`S`a=CzaB4tQa=!OE={92rwy z$f>XQ#;sm&oUPri!G`>mOXJ@kw(t8#W5(svt>?Tq_x+~kT@zDSFYN9Qt+RbZp5`y7 zQ@C5#g)T_O)|V@{QoPsN9_0s{E00I#Y_%M_JABsC@TYv&(xMG7V%#sT3Fh9mUumlN z!;2xo2!3&&pyyowv8?FFIIz>mnY%j zC34e|G&dzY{RO}J?E;Z`o2M+~R)Qo$+&i@1lrO`v#)*fWFMJ;N%nf%QWU(5etQxt* zXUm_9iJ)ZN(z2WoUoFtB0(oGsD{$o!DXdfQxf*KMdoD^1>Z48SRs?(iDocgLEf2Xj zp^L=LiZ5U>I7DzqM9d6xM#xY_G~SODL-BeQi;Dzw_d)oXhSxKi^SK`s>>sSEjqJ zd~erY0?&Kx2)whys@K!&Ym6vg`hm}_=G*+n{0Wx9wIR&!?94EQ7d0`+i}YIv(ub4O%#?nc;Y$O zR)MYpAwG0a?YHo_Ny45)jDMPu4GL!=H1K97|=?S$53C) z%ujBww-_U+HuD+dR^G}?{*sx7f3I~hTSn=7GCNelX}eJx z#&hdPk*gEdaW6fMaw8a*c2oAzYJJF*P+^}WduaNO2VN`OaPC1`jrd&~#Jl=Q4a&h? zg-Ou6C5QvaK2tp2V;z2579Z|G)1l&a`0Qqn^8Nnj3t6~ueQkMDWZjbcu}m%W1Jb0_yk#<)V?+3~GsEB=#btIj=00_XTM(m>iW6W`%G195#A zA(z{|!=uhc z+gPO*u@g(Z!htDKEl&SQd{B5WCcJtJ2UYJYBIHE{Z@r4Kxn%Kg17)0KnIPQN*MU(DS<(XCo#e>u_J%)RY3+fH&a zdrvrN?(>m=xk}sYqBRj&+4$8;^`xNULsxB@G1n%C<}SfxoDC&DWNm9S)~3#yG|qo? zT}@1ejI;&^{e z0>+=VWkIqgqE(xEaB;7Ft-BxqEzQtH-IOUj^pv0d!9P}i!8+4uB*a4xUjITICN5a; z=r*xOfbX`Vuk_Nic6|X8`;&?=A`{=o!Wp6ebhhf{Sj1o%ep@5}Z7aFczRSYRqlJ)x z7<~AE$gZ~tvz%V(+Ue27Sq(n}-jTQ|pifTQz26)!jnG5oa(=x{?|zm!qYB=01bzki z+8Ejm7_{V>;RU7{P}pjjje!Qmd~aI6xRg}ThHOaov(skEqNBOmac^BgZ}qx4Dqg%5 z+?M?K9*akSaJZ`BaYjMZZm&O_)U&3Kn7+9zdM>ztnK zcAjUOGJ%Acvg6O98=X5=1Q+n@I1VEg`N;;ZdRUD?o}h3|QGzY(Z-OQLV_fDsu?9DtcnmKgmUHAj*3(CO{+P&VbeFWVXPozU`g;l^Xjm`& zB{kX3_AjY_ik3ULBKsv-^lvQaT~RNh3i}1NHzUE;)2-O%<=WUU>~>{AA8hQL6<&@u z-FmI~{`~*5lVgdv&30XPU~OSXM+Eiv+=FdlUxiW3bh0I0&PJ5VV_%ld^SzMe$$Hiq zrPH7xrmlx|Y(o44aRJY1)Tk(3%Uu(x+1CjSu{K1wp00Cy!V%d~^RuQLkQ1ALoKU)$ zlrP`t8Y||^Q2S$8XTB6E`DoLe(wiOA%2VIb+nQxt%z`5MXOXon34gcWcTn-Y#qIIN zz1>~9DbtfJbbCFZCFK_6SDiUSQuA~cH+)QbbIkJbMR_He$FkrCb?#Cll1&JajhG?j zkiWO=3b~6L5R?`W(YeR9QH5M}zKj~YE{&(g-e|!fc@|M=nK3y&lYT$B*u)paT%Nt8qN!WF=;`C7q!Y|dNS{qDC%reJS}ha z0PS5=ejwRLu< z(wN?o$FcSCj+vCc?QB8#m$RFttcN9d$AR)-pO$5xR)V}_70HfUKjma8#&E*e0i~7zjpxKlUPjONc9kN*ECb*gJRqE&uUmbENnTkea>vezizKA;3})7K+Dcy<(rN|J!0%DCt&A;KPU4@-F#tg=2svUOFsS-_0;y0skxH z>53^Jr1RNdA-Ntx7HUoZ37G+bL@W^2gCN_Jr8HJZ1mb8xX^DopMtL8FBp9LmlU_t` z8g&THMjwJiMDLm;5MiY~*@;R7NY4x+B*)`KT#*BywyfCZ!pv0&Odtn6ZJr{u7G&Q# z1PaLEMX-unWcxYM^2oe8Mhn$@s8Y;svE%tH8Y!$-f1-cQ9}sNC*rH zc_kOxZW?ogTJ=2b8#XZ#bFSm+92LV&wKWv7lM&2qFw|LU-_Ks!PY-B(jAnp6m*eGv zp@85fdytgn`#Ca15+W)qJWdXxUC2d%z$|h(qZ}})1vX8>fC!rj_S=NPNH&prp@=}f z2!rV`q)$s*sK&tf1c*>E`Y#ot{D5wtPY{#Iac|WG>w^%fPrSww2m>Ml;bsB8z{>X= zEc;$RW{C`yI@4-pj)wWP%oYU2#T3kGiLA~X%owQkvlj|k{dFV<^r4C@69yRwGtHl< zB#Ud7W{TXXJ8cZ`H2i1QENX%QwcZmh;}KuE3xn|qfqe~u+Pz-*BQG&nKG71QBp`OGk%|8s`P;SoO$-`L+j+yMH0f3Cj*Y6ToR zj;?LLFNpoA!656B;E-^0o_zFT->G*kx?f3@ecoDqXW5XcEa1vnP$I=sid>PY9 zczF;Q!|ww+31bf-YGLW@ zkQfUMmWC?1-M-TG=OVb&O(nrWLt*%qI2?KQ8o59@(oFng9w$kKwl$^oiSTV$`><{} z60KKeg-Y{SSSYG6bF}hsAY12Q&*^Zw`n9*5eXg7Uvc9*Yz@ZSLTW2(5LbcjR!Ju5N zj{IO_TrePhQnzh^yzFd-mP?arqxZ7^&#VsfQTYhQHUm7_i-}s<#wPEv}w9JA5W4Hz#D> z-YPxc6f@i^cn^M)0Y8E=kXr~I^HX!5vsQ^t9`NMO$2|?oPV=XP)hHL=S-#5 z9nBdCsWy@yJ56bXswU9!CDG}AO*He0GuKZw_sL}p=|ZEzK9V-?Keg@qca*kef}tJK zv_u-W)%>gH$x~6cw_zqBA)SxH6QmBGgpT)XBR(kJ2ME@(^_&7WZ!$+Eg8Nd;#HRxJ z!K`)Hw|MlOdjQ_RX-YOq6g?9y4f7;D%g{`-P+Xsvvy9stz_p+0ovGxjdl1%fpy*9R>#d?9_0diTZ{s4sM#q>Wpzh0RJ;+;0+|lDRL(}x zfRh{kFM3W84q$b9|67l(FP1b(6a48ZspjwdTjT3|iOrPz-JN|{&Zqu5cuILS3s`D*X%M34X*@86nIKIPrrkRR zV;K7JmJLA9PU!p;VhJ=eIl5T}mT(s8o8_KEnw&sRAxv8Yg)_p=!&1;oG#gUWUCphi zhMT4F#1dit#CUG)i(u@*N2?1qGohCuN)u$McYHbpD&Qj8`Hg2DW^x!NjWl@z48a6H z3rE2q#j-~&f1!{}9%=>9rk7*n&)bnq6(_+&6=?A1*d=j9Ec==CSkezbMt$NOf~ zq^n3HZ!Adm0TsCKeq*BZwxAs>Mw*x%tTTtax1DmBvPbW(6#*#*X)|(;{~;9IUT{U zviTjs*qE)xgJd}!8RvmF0XJ+QEDAcJMg1Go$x);f^nNpN2lx3DxQtJ^medD}eNXd|E!R#q~raU6<>aSTJfOtFNlW{ zfE8cKQ;Xw8lPm zQTo7Pnzj^=!dHF6bPN$+9f>`ay9_ng;o2XW^<6t{+7}^JlwgD^Ts@}zhH(DHo!tIq z7bsq79MuW)eIgaX_)rFl8OcPV&LzAaSJ)w7EZ(93H&~$m$BdG{7)@&~T4LQPO4LfM zV1d6xKDhcDrgOb9cG5z_&y&JHgxrwpwhGo&FK*h!1_n4JOAf+?c=i6<8#v=B(=b*f zONkrV2uD2OI*svoOVaTW^-t7VF&f%xw1&DdlJAff;<$eL73VM#)@0je(FE0A%RJ{2_pl@sLKG^yt+jld{(I?WI* zF?4m;7CopH52m4q02{zV25F*La!?I$CZg>UE(uf+mCBJ{k2Yg9UK)+EN}UQ;?1-4T zPhsa0>!{9*RYkBG2txpZN1^N88!k+uTdGJg7?h z&&hB}I_**kD&mj|J)Tn-Yotzd(Wb-yCX0<~`QG)NS5?hls+y4UoyF#R`f*0y4*Z<2 z)wd(BD-PE{4oHSlz32|c(iG+W$Hz|B2h$7XYs3UqF%2iA(i&|@q7q>_S4|zd@~X(*Rz^u-a#pA1gg?< z#MvY?zMwWRcw#}*;(k{48dOj@8C96bh2a4;uvlR-Po=xqo;*Uq#73y_lJ2Z85(W_b zMx=`R(f(htCBK;N5h6U1|AZG&+#@Mf9y|#*axarmjDu5Q^u&_It9HYUly)HCT8zk1 z`3{HXsFc*D0ymaup;${UiUv&sqa>;kkrV!0F6l>QawRN=hIWWqk{74K7-_nfI?dZ_ zl@tD1eo?6|3y&&`hI>%tgs+ZElo)JJ9VNt1NZZ^KQwXCaO^hmtk_DouD2`^Kej}}+ zkU%r04WK%iHij?z*^7wvP35OyPPmxTpgU$rJ?9^=dVeZFN#I3!9|BXtB5JE<Er3>^GP`e^4iRWSO8i?5 zKpD^%JRxc92B4gfC;mSu6NCIWWsaZICRRFwX?ko5qERuV@@SlVrn!&d#&cZEBGCqh zoOI#@8ENR`4X@VYHEQomWF=I-drBQD4eo*{V~aePrjQQj60{Z$k&64^v-?^^$1#6000ygM2q>8FNsd*9l=rh<7>+8A&S1rL9NT}>XmR0Y&lzzqDR}+XI z*ABpHc+w-zs_^4dAQxZGvXfA?XMunTaR~UOm8htHGrguBe4q6|qcor4Ze;W>OJftqc z5o|-A%MPwf6%<+l}J8A^hy>} z0-`$M&Wf^lgi7De*S#AQ1pX~GNE6un6&&c${F_u^jVCx11k#KfBg)T?+|`J&k{(P_ zhaIQ}x+GZf9PdX&}-JITbZ##l9bXD>23EZ{Ps4ri_2XyG{`8 z08z%;c_3ujp#ydVnuer_wL2@dl}v{XO^FR(~GQuj(P zlW3@X{23(@mC($-mpPOPyf6hTfv2UEM^IS_G{8}1150pZmUvj?1$_~(RYNH>`v3aO z?bc_8T_=nx!>8vTWGKI3t^^&L{!d(>pOY~LM`XCsxE!dZwneG)=M-!k^PD%oIVX9( zdKon$2*N6Pgyz6wO$yHhtt(L*i#XLDu!FqiQ?s_H8Ed-_O6G$r=5HL3rxwf7m^VhG z?Zu_ec2-GxU~s9bI}@wh!PPS_ft6M|GAAP)S<7p1QU9zBnNWwBom-+@8*nNE;@auc z3%Dut)IFw@05|$(eRUGXR{kY7p4ckp$@gd!jMtAm@Q$Fk-Z}>XQ3WU3qSFMfc=eY_ zijd#VUG(o*k{LT6@w?|bVq%0a4#Hi(FyUrmgj}2O+l#lx7HD0i_6bftnr?#Jy?X2;&1<4&(dD*uAia z7%lL+qcnhZ4LLx7d<{9z82$)|^1i-uZN+1la%t4M5ylS)#Q%37o*&6m z*N{fqLV&cP+yew{*uGc!6ccLSIp`Oj=7_@h{j!PP^}t%wAOsl%VO_Cx*cn80gp`86bY+Tc^7+fgvr$2YLQ9m5o? z>d<4$uIH!2yS^=38)91B^H_chJy(Yw_}b z42=1=lG#ULK&O{v4#)HrKrp}XYcG@oTFhq?uG`xO|63ul{%3A*T26n;xrW5C1LVdo zVv!+0jsnaZ62f79yu6#b4f`%)59==SD$Rw$SEPjehw=ort_55p5{GEqYNoyQ< zj~O9T5Xn~vTuZ$AaK>r;m#YRh?YUUZS*jLHbU{Hqr4wHQ|ywl_EyYISMSBI6EnfUE*z%U57=seLR+Olp;K0~{8gON@Z^eD z{pSI%6kD-7A0|9c)BKrH=odNW3=@t?@0B0k!`HaYMxuW6>-5F$C#_wl*MY!tj;@)9 z0GQ%WnBu=-zRMLqDUIWO-lvsuXpRJyPwBYXy1EktfX0$@BycgHzX?TX@2egE^<#&{ zb;TV2MR_>$_WumVD_6{UI@@O+GH(?;KcTFE@eiHV9~&!p(JPl;?iHDsa*m;yhl*#i z!^}PmJ?0lx^Xm}k+bpi;ggY#2%(3Bej*_{zIK`hrtnkk>IlWUjMhT&Av7Tc5|-PO^&j=gg1h>C71xZHL8LU4mdu^h$zq=C%3 z*R64-qZ6a!oN}{HFZ3c#bwz==QuMt`D>1u+rXfsD09C){%G({m{N)rr_Yw@Q9MQrI zz1TyIUmq$@K%p1JoCIs$x4MHMBWt(u{6TUJ!NxIbI5zgovKSg^H%f#`ePL6GEw!zk zX-KU6RAzITb3B+1#s<8e$%UxFG$HfXUk^L{aykbuB8a4Po={#CY43YpgfN9Zoidd4 ze_jt9>~H88J}SMeUsX{><4(p5MD2s>dN5Vu`+|9uC1LKn94eK6lMZl;MPq;kxFb5&vL`^Zbsq) zCXKQjg%rFHC#AMohJz9Xb1VtGj*WYYq8v=pheKt1@RD)jm$(Nqz~L}A<4%SXYcL@U zk8fmo(BFZ$BEybe>Onz^g8aLpoY<_}KKfR36-5~M!M?*Um4gC?f?)4=uNKjR0{96* z&bUBrZg9v?D-KBSNZ7YadCX!Qm=FPF{D%bb7<81Ff|63L3`tH&1yodyU9LU0e;5u; z6>=B_5)-yRU=RjyxSfIWC_?5?#H|m$d2LUefeK;;xey)2M}dsWp~m)ScLnXPaI5~x zg%Gvk;w13+Q8#YKdP=&!&gYps?zpa1#^8&6Sf9 z{^7*N?9t%INkQ%qYe}9j4huA!HQSHaAC}1+HCSV%AZL_b{^J&srOJjYB1!FBPH@)(MRDAYtLePV-pgJ#S*{vx zA-D%!l6h)gK<8a1#|pPgaZQ2@+xArMqFE~ty!_7-mmSYAaqtk)Wo*RDSL{k3y_gzd-h85{^2s1u0u1RU0Ax!K# z_9HHhtk}6RuWmmvPXTqrd`BpDo)7&3m=pZ3-=Z<^ImEjhGYMW(8z~w_+K(G8jga-j198MXKx;(Jvz)g9;0rb5T$(Q^jn5Q^AU`c!wt3 zAmwjER^dMRBmofqGNdRO6u?JvIX#Hkg(oU?W<|t76Od1wos!fD4loX7MgW(@Z$=qz zq@*%y*-&vt%x@&-;{%)~#4Y?X-o4vBDu@b0r59RDVCmAjV`C%gzNTHQPm#kBpF6yD zq)g1t0x>7&a=#ML;{nQAt8kgH1sWxu)a?83W}0(47g&5YBD(?5}tSrOlKin zSz5kS8pnKoDa^wR|5}^WH8)B4R}V=&{b~;pD<2AQM8$YlqH!GRYDy0=07LX4SX9ci zttL}cEME^LvXuarW-eB)Az4(8ciD9{GCj4je43^%3V=i0@5Yu@+l_BLiH4(IFeFZ_ z7w2pqUq=&9EQ_LUv?EkA(p4jIoQT>~KQa@u?)PRuecIbg41X+Qsjo3|g zr`D#i&jZ(w^`TwsFAC@e0YTSDnWh*gro6%O7X>`c5ohobiIaHx+z}bmM}hHb-5Q7p z=;jjSn&ZUcfNt=5WjKa}`iE4}rda@z5fWs7{IsdM;~)fj>2(~Gy3zODT$+di2_7(X zjTR)DI(ixD*hYD1|19Xb~RGA^b!xh@7Uwva^<&3*1|`VO@5xAq1`-9b$2-q49nAJz`NwYCmHa;&m<@p1WKdAGfv@A0wf(ORSedmw#1IPhv|R4q*SLD}5% zqcs)=EWomqv-Yu+{fpe4W93lcez>}(g4nq}3b-KC+4{&+%@Xmsb|fclBa4G|rX&?$ zJ0qb#d$f0)_F4&rG?oZ`Y{=x;n1_VHt4hWl?C-jrL@oDnE|+MvdlRSU{o9caf0Wd! z(T@s_;1ZL`Fat3LQsraA`RrZ;^OsjJFx#nX?Sl{XXEL5A;JL};&^>a3zdqY#fYZ;n zN5!V0!W{}vn7BnnK7S=6IGe{4JOal|SLDv%0E&n^T}Oe1!U2!u^gxh?0Lwg|kNS$6 zdO!wPr@&H)`9&mrUFu+CDlaE^oOZULA;(cv>aHoa&tkMghwLNS#h+$zWnif<7LUhb zMRA3HZf*%%Qye~Nqm(W7?OFh#u1Q>CGa8x;J;<=uwxl~Atp&tFcDg$zR~}{UL5}c; za-})AeAQ?xFT+U9P=-$+j^f7hkkZ`>To1j`l@17@_Wra)L~&pMT-a&qQ+5C=MlxfW zs)}XlrATnXQ+e;#;pGVGI;Qt4QK{2!f!l0ZlSO#7xW7nxS>*cmN#nsro$O(t=>s*q zJYjxR#UC%;pfW|ppPd*%u(R*n^h>5^n|8Lq$CL5}8%69}q&asUbM+}Vzu-6WbEd(& zS=JJE%p}68+HlKdh~;M6mR`95x6p56j-K`f?%Bg)%3+S%Y4ajA+=OE{201&LQ0K9C zZpjH}C+=Fb_}+gbmKXRaHLlcjs{Ubdy!Wk-c%Qn}K3G_g&q{c=TP74%@kLZOUNh+1xmtr^c@Fj|6M` zSJtXC(+pu>r<+D2nTy=#@?l>j=kayfKeE<^x}zHqZ09DMDB$BRTO0&&|)$CK|vI7$w!!G!3&Pn9;I0wdu*@`zvphV z<*om*Wz}!Z17#qK5C}dqMrc{XvVXvZ$Dmn&nS{nD4q!u zuRT$)3DFLhjIj|g8EW$R53>dvX8YY&qGO`cO<(Lux^2l^>pCWSCJ5EtoU;WZg3Hhi z!yyVNZm1~qv@@8*^R)t{p>?Lp2_tjHW(ycKoaSsY}86LOm% z{>%-zJbU629dop**D4D9xv1-A3XW*0KIXA{V4NlQ3qf&Y+R3rmn5OkS+TV~ziXe&| z!@q5(p^SY~Z{7)v67M89LU{1&ts9i=J7|_hekWpSbjqQ3{$^z{51M1sr}0rRiyB|M z4z_*r6Nk%e>G|Sp4-XGnNQ7?rezazN1ODIT;|phwqak3&`4<=wX(HgcC zhkYg*{;$`@gzAy3cr#%qsS!Xeb&fdhVG&Tm*s*HF5|}$&om)wyOwj@5j8ThY)*fMN zDkJ(dq5_FbS|*Bz!wd(OIKR&^8L=gDMM^A9n4iLxs2#b%j>ANo1_KV$kugvZiFenA zMr?G|Ri~!X*f>p!-hGB3h@}cuA{jBl1@h(X_SbUu4ckvwdoiU&?>yM3%!o`_(ke+a z%oLFf%L1>Z()A=$0L#~hM@OcW0IyW^PEpM?@3?@UPn6oK1uPWTe)kXNJPy>d87hKP z&SuK1Xg0Fw`~r9T))D)pRPfP!4QMj51 zG;_A0yE7xsPf=BS&6`mUTKC*rJCKr*Q7zRD=Yt+?;|!au!Qo)$)h z&5dM|o7K>mW!gy2AefDG!~8OMcVzr%Z0XjW=+5S|k%9a1I(_pMu-jwB7!HFwckG7w zO)`Iz&bEr4-F|QKEnl+oa7E3oEjS4MWbNgF_m3&(*OacWr^Oz!Rbpk{*Es+ENG1vr zw+ul50ku;B0ipftk#sUMwl=2!>&W=m9%!1fwrgydU4PV&+V&To*PO%KM9)^vmx|y~ znuTK;M6|3Z6bX+>yWr35d;Ih_YWiW$n)+)h1z^wS-qLLFnh<{LVp6V#Qz$wd4$A%_ zgB&J);_>R%Rk~U{4aEn33A2}Zd(b>ka)&3}DnfV|K5z64d>>rG-UfL_AYBkYZ=~F{ zT(17!0#glz;SMFyGF{!%bO3{_O_|g}8%oqI0=hrmifoLJdJ`8VjSvVKzeG}K(Yj9K zj`V_ll^gnNX=4^@4GIpm(D@t$$nhONj-YGXf(Ew{dabcPGeLqn4N;B5GwDhBaiX|G z8gnJIzgi%_$u0d(GI)6bT!^NIBx`ZCxC=ZfAX({EjVFMa<1=0XJ2f2Z) z3Kkll$%|C51*Uf(ej#J>_9#)^Zw(GI&)OSTK*JzgKAuR_U*ai_wbGa2OK+TDml54WB*C4Gcq|ht=cHIgU zHdH|#2?B@Mbn6AD#Ii}&#Q8AMaWP;Dj!uZV#IK-{tRGhT>56jVAUr)ep!T&ykZu$c zztdL|qO;J)=!B)}e=m8@Ef)US;~5;g7CT33lyKqv{WtiahyIpq z0N<`BlQQ8-QJy+q*-?#0a&++fZdhAPoO+$mM!(@QZlr}tAB-cKVrPiVC{*5nOBs=g zNBW8D3cqUitx>!5npM)9TvOcg7T;SB*G5Q#zJ6Wt%bJitTe&l(<5lSF0^82OmKc-& zwC68(dG1Sd(~@G^3aRo-Bah|q3*X!JjalbuEvGdceIb{@#GEy4TR-izq2uw@{8=-e z{RsLzf9h_FUx|_GKX92b5kSNS$<EH@v(5M^xe_GZJbz&P9N#weVwUaqKWSH}BS4c{e$+qm^o5VTrs@?EJ>ORPhIHJ0S@0*GjA@5RHHQp*B? zta|5WEzZD)|HRq6I6LMQgH~E;CR;vaRDGF)h>VaO*$Cs%PHLjNhA%2(I~gM@Z~SJy zsJWn-^ygc|?@^>3GZvvH1~GR7szzrPL#lQsVx%?aOi%{WFHN9@&L@goTtCM_HJsmj zjQmTdnZD6q9fBnLT-ug6?g&YMU`)Zt{javJIx33x3oo56T?$AeC0(lm(hZ7qmvo0T zNY~O5N((Bv!beC-xJsvhfGpBTmw?p%M*M#IxySuu=Irb|&+MJ|%zK}E@0s^;LuT1MBUAk1!wYiOcQjae#I!_yP4V%2gwpp>XDe#6?FZp4O?JWd+(eR-Nieya7_*RbTa-qJ5)+%U?QSoFmge8#}_ycGf? zT21J?MQo}aQqD$Y_|FJE5x5v?pkMJ3VIOz2&1A3nezowQ@99h=4&q0%j^#PwOkB~m zk&GV+zXvueYFWMrA~8{KdDp8bob=r~6M}Z-x-y>VFs{1d{EEfxB$=4pcVSLC%D0J1 z1jiI`6aDnv<88op?`H2Zhvdk}FclS=AC8u6ELp86R(~4ecW@FPr-_=Aq7l^1uuRbR z%vvhpdbo9(gzg6P3NW%a%C&>P6|3kX6?M zH<2})Pr=Sl80y?=xa9fP(27pBp5JM=Z?Ll6jgh^}MAN|c(xsxChnQPClOeq~TwL#_ zWv*BCmW9pGv&M^&?{68K*tKZonfJ{di>T@G5LIqZo5ScD9YVTzIcu6oEybd~WmXBr zwlC9sQXC|{&{5M?Eost`JfAp6|5M4-HmR!30R~$DhExAx_z#mc-CbNgE=M&dsmeKw zk6i9iYscPvH-A2+EqSyeh{It_*_h5Jgw>IGS{7P*;jab}w*2s@(sOI<7Omt`xU*UL z5GVUE8w>7(vReg_+0Ac-g_ye_l@JL#Eb)dg)(=c#p5C)=A1X$%Z-QC&=$EqkcUM0* z+w|2jD>{q%VJ~%>T~Hg&jicn8xk;L4=|;^~ZrrRA)P={qO$oeJ>VBpz>h{$7 zp7grM$dJI~)~ZUTj*!#5v3{P$y;`2PZX^sf>L;545s1pgm#Ma4J(Ihhzh-TjI=oV}bZtlfdE%nxQ&$Dyerblq`5w{31a8 z4D0x8CoBa4jv@CD*$Oj!IV;1xtkO5WaB-Be%C>QIA8(SBbYSRBu#_Eg?jmvUlw^7Y zi-WLO^;qk zS95sd{kYESd+lyoV+H)o+HJN9N?CpD?)%bl1+vj9v3-n!^e!A00$hWX(XT?qRYb+a z*T&P-utZsvHX}7enlwUY2M)4A{Do=pcsYWz!fteP!E7)Guo7%z@!gd0Tqd}=!~>5H z`-{XW9?hsvOJdEkDTsVd*oF)AfH1MAKWe;pt3hTnEED+Cim6*L^)V;K=^C*N;= znWwmJQp^5Eu{fmatg*O7^pQqy)shtlH(Z5c`mR7-;f7$QL0!TSPx3Lr6yu(|qGr}} zDz+QX21Z%b6lt>kfMu8hMH7>9z-Gc}aV2b=R#}95++)(r25L9&#dEMwv=f}%gG)S~ zw!eS@Z{XUp?tfi;)`frnl>5DaLWOzBdN>#S?y4AMR^p+>3)Uf7IlUPt2E+9W7vH;C zxx3Sody_teE4*-QwkjJaJoi*x%+m-d6SsL}#cP#Fq;D`Sy~h2Bai7)udYhQ~g41nFXpYtC z;Vq?S*gT||e!Ix+6_<^w?JeY#LCw?VyIl)o0?-KTh=|9=^vH{EZ{9#7h)D7EnOAR1 z*j}H71%LL^r%`-O9q@4f6@I(5(!6$Y#es_FRi8@PY5~^_Z@l#4dnahxmcrqSoN6wl zx#fin2@5v

WwF#|k`pqc}k;6bg&qXWo>7xdeEZc}9+cOESqP_6Mq| zsyekHH3&y>_92sb+$V>*9s}c+4^=0I-4KCroL=PqTq{+#)%s(r4`Z0wWcqI8P{u&% zfV>M+_hT(-uJiC|<4Aud$Ir5Y8N(v4^YktR##LD9Bw5R<`@uuhf4c+=k1+GbP7!Iey#T%yTel*6f?_y!L-PDhhKTM>^m7rKbu)QdEcA|9Aq zq*AIH*;6+2N2BTLImsuWZ&9}ckX7UlJhR<2heILv<)jpFhzZE4-!s|o3g0F-#n}Bk zQ-r4(o@_d>F*AAIn!P{cF(~f8;#~Nl(6n=CkJKNJj}XJ!=k7sGYp-){rK?z(@&<*7 zCup_4p<@o@fNo3JQ~1wE3xh_-2Bld7?)Xrlu1KK_LwqW6T8fY``?*H9uef~VL>kvW zBVo+_fR_WYVfl73H(X1u2koFe(n~}0v>7rP;*LsQ-0Jee}$hm)4?dod{RyE8<;X+;e{77?>#b zwr5F!ADRWYVun3k+_JfIvs#-uFFGJtuTJySYEe?|s(oCN29{ZrFFeISdk`_bR;C|% zo2=mj@3e!(;kcQx^%F?OrXwzo>wBTonG_0t?1kjKJ-kDF;p^br(pAtyg74I(MckBm zTp3SGop!}4BpiybMv>_@_Rw|xlMEx18Q>JQsno(vgNz-2M!epLUTXV>gYksIUe$t_ zrC1(*^VGiQV}n(CJny|6m304e*2BzJ9$L*qre*oMSP~m2RgWRoDdjP-#ZcmMD11@D z&j?;qFPJnK29GDe#Jx)=F+&{QYlhCA7K+7B$mG}jB?@GKd4O-bEBHtXV+wmhoE+Li z7VBs2Etvx?BdolqD|T%(T#=GLHK2JV311+CJV}}_`TL@TKqC3`+N3_3%ymVByh<-` zh5^oKvj?Sygz4WVle6FXZO-GrJ#9-}seDS;c+-Y4SHm4gsssG)$!O~O?8Mz|7~o8zEXoV=E^?(k5__PlpxRIz;ZAu0Em5kag(92{YbR~vWJ+am@g zK1QT?>Q<~?sT@@Iv1JdheUiah5NOb0FJXT%`PmZTh_JudeR`8r+4{1?;vt~Uwpm-su5Bkiegyk?4VLbQymFCV4B4t9Q5>C{+L$kg1#i69p;NYY{zeMUjgf@I^VgvcfQ6O@W^i;U1E@W%z zjkL`u#d>U8(X&#nk4tMk9EmG0pM|zc2TWB?d2L;Lz`#eHo!XtgTAJo8piQuBA;HJB$s zuG-7O;W!_YucGKi2x92P3=Px-5xT2^z5$j!m8z>fZUGTcjc8rJAHp};Hah7uXem#$ zL&}CjaCUB+>Lqa{a^3aX6V}uxA$Rbi;7wvy=&u9^g)Zmwd?f$0Shl)<_0ZKuH*(6c=V2E zm;_l*m%&=Tk5Au1_|`kDR3=Iw_PY^*r;_Izy`84tXvO`?k9=mox(o!I&K#ZF1d9dF z&BNXrpPVO3A`89v+peTZ*cyMrjARXG_A{XB6w!K|ytCl$)fr3q)wnD&anLX|#eDL$ zum4dJ-uD3y=CyY+C0S%PhiVWF6)n!D+KwrtmNiBM>ly_7mDX8|*(UtE>yk3q^EJ_n zQ0%L=`H%m)K?+76c1UWfprMmv{3w6mg5rvkjRf1pu<`((u8i|DtOS0z{Dc6}mSI*VWp?_=oyNCGcfakvaxWMF4dIf=lSnO$gc$K=Ct%yA0h>fzgo!T6VxG z!vK)v58y6vL%79vE`psbT_+N%U%1)?w)T+R5{7Klqc+?sJDg|nO z|e7js065qjNb&kasMUwTUrB^3pF?Jo9kWtf4Tn56ri%8hSI-TrlJ4dl|KS& zR6MHQ|Bd%f{xvGU)ITa3RZadz>!kkY0sT{3YN}uX&)<*8pA?h_JjaSzKfe7BUMBfu literal 0 HcmV?d00001 diff --git a/docs/inspannings-monitor-02-functionele-specificatie-mvp-v06.docx b/docs/inspannings-monitor-02-functionele-specificatie-mvp-v06.docx new file mode 100644 index 0000000000000000000000000000000000000000..2a15297a1e52bbff65093630f41fd363918c5cb5 GIT binary patch literal 41048 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 literal 0 HcmV?d00001 diff --git a/docs/inspannings-monitor-03-privacy-security-safety-baseline-v02.docx b/docs/inspannings-monitor-03-privacy-security-safety-baseline-v02.docx new file mode 100644 index 0000000000000000000000000000000000000000..a787cfb84e4ee06e6bfa3a3b4e7f4027f2dd24a4 GIT binary patch literal 41520 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 BBX0lz literal 0 HcmV?d00001 diff --git a/docs/inspannings-monitor-04-roadmap-wellness-naar-medisch-v02.docx b/docs/inspannings-monitor-04-roadmap-wellness-naar-medisch-v02.docx new file mode 100644 index 0000000000000000000000000000000000000000..04ebb4b0e20c73fff90bb54c7d2722e50e68d199 GIT binary patch literal 40018 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 literal 0 HcmV?d00001 diff --git a/energypace-specificatie-verbeteradvies-2026-04-17.docx b/energypace-specificatie-verbeteradvies-2026-04-17.docx new file mode 100644 index 0000000000000000000000000000000000000000..a0c31370fa8d54437a234c70405f66a3f057fa6d GIT binary patch literal 50913 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 z%0D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 z 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 ZZ>cB)0UUp?p#W4sE^r*v_rHGn{{X6>nP~t3 literal 0 HcmV?d00001 diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..8322747 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,5 @@ +import nextVitals from "eslint-config-next/core-web-vitals"; + +const eslintConfig = [...nextVitals]; + +export default eslintConfig; diff --git a/lib/auth/messages.ts b/lib/auth/messages.ts new file mode 100644 index 0000000..fcfe3e4 --- /dev/null +++ b/lib/auth/messages.ts @@ -0,0 +1,71 @@ +export type AuthNoticeTone = "error" | "success" | "info"; + +export type AuthNotice = { + tone: AuthNoticeTone; + text: string; +}; + +const errorMessages: Record = { + "auth-not-configured": { + tone: "error", + text: "Supabase is nog niet geconfigureerd. Voeg eerst je URL en publishable key toe.", + }, + "invalid-credentials": { + tone: "error", + text: "De combinatie van e-mailadres en wachtwoord klopt niet.", + }, + "email-not-confirmed": { + tone: "error", + text: "Bevestig eerst je e-mailadres via de link in je inbox.", + }, + "missing-fields": { + tone: "error", + text: "Vul zowel je e-mailadres als je wachtwoord in.", + }, + "signup-failed": { + tone: "error", + text: "Je account kon niet worden aangemaakt. Probeer het opnieuw.", + }, + "signup-rate-limited": { + tone: "error", + text: "Er zijn nu te veel verificatie-e-mails verstuurd. Wacht even en probeer het daarna opnieuw.", + }, + "login-failed": { + tone: "error", + text: "Inloggen is niet gelukt. Probeer het opnieuw.", + }, + "verification-failed": { + tone: "error", + text: "De verificatielink is ongeldig of verlopen. Vraag zo nodig een nieuwe aan.", + }, +}; + +const statusMessages: Record = { + "check-email": { + tone: "success", + text: "Controleer je e-mail en activeer je account via de verificatielink.", + }, + "signed-out": { + tone: "info", + text: "Je bent uitgelogd.", + }, + verified: { + tone: "success", + text: "Je e-mailadres is bevestigd. Welkom terug.", + }, +}; + +export function getAuthNotice( + error?: string | null, + status?: string | null, +): AuthNotice | null { + if (error && errorMessages[error]) { + return errorMessages[error]; + } + + if (status && statusMessages[status]) { + return statusMessages[status]; + } + + return null; +} diff --git a/lib/auth/navigation.ts b/lib/auth/navigation.ts new file mode 100644 index 0000000..c371d4d --- /dev/null +++ b/lib/auth/navigation.ts @@ -0,0 +1,41 @@ +const DEFAULT_NEXT_PATH = "/dashboard"; + +export function sanitizeNextPath(candidate?: string | null): string { + if (!candidate || !candidate.startsWith("/") || candidate.startsWith("//")) { + return DEFAULT_NEXT_PATH; + } + + return candidate; +} + +export function buildPathWithQuery( + pathname: string, + params: Record, +): string { + const search = new URLSearchParams(); + + for (const [key, value] of Object.entries(params)) { + if (value) { + search.set(key, value); + } + } + + const query = search.toString(); + return query ? `${pathname}?${query}` : pathname; +} + +export function getRequestOrigin(headers: Pick): string { + const origin = headers.get("origin"); + if (origin) { + return origin; + } + + const protocol = headers.get("x-forwarded-proto") ?? "http"; + const host = headers.get("x-forwarded-host") ?? headers.get("host"); + + if (host) { + return `${protocol}://${host}`; + } + + return "http://localhost:3000"; +} diff --git a/lib/auth/session.ts b/lib/auth/session.ts new file mode 100644 index 0000000..9fa6605 --- /dev/null +++ b/lib/auth/session.ts @@ -0,0 +1,64 @@ +import { createClient } from "@/lib/supabase/server"; +import { hasSupabaseEnv } from "@/lib/supabase/config"; + +type ClaimsShape = { + sub?: string; + email?: string; +}; + +export type AuthenticatedUser = { + id: string; + email: string | null; +}; + +export type AuthState = { + isConfigured: boolean; + isAuthenticated: boolean; + userId: string | null; + email: string | null; +}; + +export async function getAuthenticatedUser(): Promise { + if (!hasSupabaseEnv()) { + return null; + } + + const supabase = await createClient(); + const { data } = await supabase.auth.getClaims(); + + if (!data?.claims) { + return null; + } + + const claims = data.claims as ClaimsShape; + const userId = typeof claims.sub === "string" ? claims.sub : null; + + if (!userId) { + return null; + } + + return { + id: userId, + email: typeof claims.email === "string" ? claims.email : null, + }; +} + +export async function getAuthState(): Promise { + if (!hasSupabaseEnv()) { + return { + isConfigured: false, + isAuthenticated: false, + userId: null, + email: null, + }; + } + + const authenticatedUser = await getAuthenticatedUser(); + + return { + isConfigured: true, + isAuthenticated: Boolean(authenticatedUser), + userId: authenticatedUser?.id ?? null, + email: authenticatedUser?.email ?? null, + }; +} diff --git a/lib/onboarding/options.ts b/lib/onboarding/options.ts new file mode 100644 index 0000000..5060695 --- /dev/null +++ b/lib/onboarding/options.ts @@ -0,0 +1,28 @@ +export const ONBOARDING_TIMEZONE_OPTIONS = [ + { + value: "Europe/Amsterdam", + label: "Europa/Amsterdam", + }, + { + value: "Europe/Brussels", + label: "Europa/Brussel", + }, + { + value: "Europe/Berlin", + label: "Europa/Berlijn", + }, + { + value: "UTC", + label: "UTC", + }, +] as const; + +const ONBOARDING_TIMEZONE_SET = new Set( + ONBOARDING_TIMEZONE_OPTIONS.map((option) => option.value), +); + +export function isSupportedOnboardingTimezone(value: string) { + return ONBOARDING_TIMEZONE_SET.has( + value as (typeof ONBOARDING_TIMEZONE_OPTIONS)[number]["value"], + ); +} diff --git a/lib/profile/service.ts b/lib/profile/service.ts new file mode 100644 index 0000000..567128a --- /dev/null +++ b/lib/profile/service.ts @@ -0,0 +1,385 @@ +import { getAuthenticatedUser } from "@/lib/auth/session"; +import { isSupportedOnboardingTimezone } from "@/lib/onboarding/options"; +import { createClient } from "@/lib/supabase/server"; +import type { + OnboardingSubmission, + ProfileBundle, + ProfileRecord, + SettingsSubmission, + UserSettingsRecord, +} from "@/lib/profile/types"; + +type SupabaseServerClient = Awaited>; + +type ProfileRow = { + id: string; + email: string | null; + display_name: string | null; + locale: string; + timezone: string; + onboarding_seen: boolean; + onboarding_completed: boolean; + created_at: string; + updated_at: string; +}; + +type UserSettingsRow = { + profile_id: string; + morning_reminder_enabled: boolean; + morning_reminder_time: string | null; + reflection_reminder_enabled: boolean; + show_energy_points: boolean; + created_at: string; + updated_at: string; +}; + +type ProfileInsert = { + id: string; + email: string | null; + display_name: string | null; + locale: string; + timezone: string; + onboarding_seen: boolean; + onboarding_completed: boolean; +}; + +type UserSettingsInsert = { + profile_id: string; + morning_reminder_enabled: boolean; + morning_reminder_time: string | null; + reflection_reminder_enabled: boolean; + show_energy_points: boolean; +}; + +const PROFILE_COLUMNS = + "id, email, display_name, locale, timezone, onboarding_seen, onboarding_completed, created_at, updated_at"; +const USER_SETTINGS_COLUMNS = + "profile_id, morning_reminder_enabled, morning_reminder_time, reflection_reminder_enabled, show_energy_points, created_at, updated_at"; + +const DEFAULT_LOCALE = "nl-NL"; +const DEFAULT_TIMEZONE = "Europe/Amsterdam"; +const SUPPORTED_LOCALES = new Set([DEFAULT_LOCALE]); + +function mapProfileRow(row: ProfileRow): ProfileRecord { + return { + id: row.id, + email: row.email, + displayName: row.display_name, + locale: row.locale, + timezone: row.timezone, + onboardingSeen: row.onboarding_seen, + onboardingCompleted: row.onboarding_completed, + createdAt: row.created_at, + updatedAt: row.updated_at, + }; +} + +function mapUserSettingsRow(row: UserSettingsRow): UserSettingsRecord { + return { + profileId: row.profile_id, + morningReminderEnabled: row.morning_reminder_enabled, + morningReminderTime: row.morning_reminder_time, + reflectionReminderEnabled: row.reflection_reminder_enabled, + showEnergyPoints: row.show_energy_points, + createdAt: row.created_at, + updatedAt: row.updated_at, + }; +} + +export function buildDefaultProfileFromClaims(user: { + id: string; + email: string | null; +}): ProfileInsert { + return { + id: user.id, + email: user.email, + display_name: null, + locale: DEFAULT_LOCALE, + timezone: DEFAULT_TIMEZONE, + onboarding_seen: false, + onboarding_completed: false, + }; +} + +export function buildDefaultSettings(profileId: string): UserSettingsInsert { + return { + profile_id: profileId, + morning_reminder_enabled: false, + morning_reminder_time: null, + reflection_reminder_enabled: false, + show_energy_points: true, + }; +} + +function normalizeDisplayName(value: string | null) { + const trimmedValue = value?.trim() ?? ""; + return trimmedValue ? trimmedValue : null; +} + +function normalizeReminderTime(value: string | null, enabled: boolean) { + if (!enabled) { + return null; + } + + const trimmedValue = value?.trim() ?? ""; + return trimmedValue || "08:30"; +} + +function normalizeLocale(value: string) { + return SUPPORTED_LOCALES.has(value) ? value : DEFAULT_LOCALE; +} + +function resolveTimezone(value: string) { + return isSupportedOnboardingTimezone(value) ? value : DEFAULT_TIMEZONE; +} + +async function readProfileRow( + supabase: SupabaseServerClient, + userId: string, +): Promise { + const { data, error } = await supabase + .from("profiles") + .select(PROFILE_COLUMNS) + .eq("id", userId) + .maybeSingle(); + + if (error) { + throw new Error(`Profiel kon niet worden geladen: ${error.message}`); + } + + return data; +} + +async function readUserSettingsRow( + supabase: SupabaseServerClient, + userId: string, +): Promise { + const { data, error } = await supabase + .from("user_settings") + .select(USER_SETTINGS_COLUMNS) + .eq("profile_id", userId) + .maybeSingle(); + + if (error) { + throw new Error(`Instellingen konden niet worden geladen: ${error.message}`); + } + + return data; +} + +async function insertMissingProfile( + supabase: SupabaseServerClient, + user: { id: string; email: string | null }, +) { + const { error } = await supabase.from("profiles").upsert( + buildDefaultProfileFromClaims(user), + { + onConflict: "id", + ignoreDuplicates: true, + }, + ); + + if (error) { + throw new Error(`Profiel kon niet worden aangemaakt: ${error.message}`); + } +} + +async function syncProfileEmailIfNeeded( + supabase: SupabaseServerClient, + profile: ProfileRow, + email: string | null, +): Promise { + if (!email || profile.email === email) { + return profile; + } + + const { data, error } = await supabase + .from("profiles") + .update({ email }) + .eq("id", profile.id) + .select(PROFILE_COLUMNS) + .single(); + + if (error) { + throw new Error(`Profiel-e-mailadres kon niet worden bijgewerkt: ${error.message}`); + } + + return data; +} + +async function insertMissingUserSettings( + supabase: SupabaseServerClient, + userId: string, +) { + const { error } = await supabase.from("user_settings").upsert( + buildDefaultSettings(userId), + { + onConflict: "profile_id", + ignoreDuplicates: true, + }, + ); + + if (error) { + throw new Error(`Instellingen konden niet worden aangemaakt: ${error.message}`); + } +} + +export async function markOnboardingSeenForCurrentUser() { + const user = await getAuthenticatedUser(); + + if (!user) { + throw new Error("Er is geen ingelogde gebruiker beschikbaar."); + } + + const supabase = await createClient(); + const { error } = await supabase + .from("profiles") + .update({ onboarding_seen: true, onboarding_completed: false }) + .eq("id", user.id); + + if (error) { + throw new Error(`Onboardingstatus kon niet worden bijgewerkt: ${error.message}`); + } +} + +export async function completeOnboardingForCurrentUser( + submission: OnboardingSubmission, +) { + const user = await getAuthenticatedUser(); + + if (!user) { + throw new Error("Er is geen ingelogde gebruiker beschikbaar."); + } + + const timezone = resolveTimezone(submission.timezone); + + const supabase = await createClient(); + const displayName = normalizeDisplayName(submission.displayName); + const morningReminderTime = normalizeReminderTime( + submission.morningReminderTime, + submission.morningReminderEnabled, + ); + + const { error: profileError } = await supabase + .from("profiles") + .update({ + display_name: displayName, + timezone, + onboarding_seen: true, + onboarding_completed: true, + }) + .eq("id", user.id); + + if (profileError) { + throw new Error(`Profiel kon niet worden bijgewerkt: ${profileError.message}`); + } + + const { error: settingsError } = await supabase + .from("user_settings") + .update({ + morning_reminder_enabled: submission.morningReminderEnabled, + morning_reminder_time: morningReminderTime, + reflection_reminder_enabled: submission.reflectionReminderEnabled, + show_energy_points: submission.showEnergyPoints, + }) + .eq("profile_id", user.id); + + if (settingsError) { + throw new Error(`Instellingen konden niet worden bijgewerkt: ${settingsError.message}`); + } + + return ensureProfileBundleForCurrentUser(); +} + +export async function saveSettingsForCurrentUser( + submission: SettingsSubmission, +) { + const user = await getAuthenticatedUser(); + + if (!user) { + throw new Error("Er is geen ingelogde gebruiker beschikbaar."); + } + + await ensureProfileBundleForCurrentUser(); + + const supabase = await createClient(); + const locale = normalizeLocale(submission.locale); + const timezone = resolveTimezone(submission.timezone); + const morningReminderTime = normalizeReminderTime( + submission.morningReminderTime, + submission.morningReminderEnabled, + ); + + const { error: profileError } = await supabase + .from("profiles") + .update({ + locale, + timezone, + }) + .eq("id", user.id); + + if (profileError) { + throw new Error(`Profielinstellingen konden niet worden bijgewerkt: ${profileError.message}`); + } + + const { error: settingsError } = await supabase + .from("user_settings") + .update({ + morning_reminder_enabled: submission.morningReminderEnabled, + morning_reminder_time: morningReminderTime, + reflection_reminder_enabled: submission.reflectionReminderEnabled, + show_energy_points: submission.showEnergyPoints, + }) + .eq("profile_id", user.id); + + if (settingsError) { + throw new Error(`Gebruikersinstellingen konden niet worden bijgewerkt: ${settingsError.message}`); + } + + return ensureProfileBundleForCurrentUser(); +} + +export async function ensureProfileBundleForCurrentUser(): Promise { + const user = await getAuthenticatedUser(); + + if (!user) { + return null; + } + + const supabase = await createClient(); + + // We bootstrap records app-side so the first protected page load is enough + // to give every authenticated user a minimal profile and settings basis. + let profileRow = await readProfileRow(supabase, user.id); + + if (!profileRow) { + await insertMissingProfile(supabase, user); + profileRow = await readProfileRow(supabase, user.id); + } + + if (!profileRow) { + throw new Error("Profielrecord ontbreekt na bootstrap."); + } + + profileRow = await syncProfileEmailIfNeeded(supabase, profileRow, user.email); + + let userSettingsRow = await readUserSettingsRow(supabase, user.id); + + if (!userSettingsRow) { + await insertMissingUserSettings(supabase, user.id); + userSettingsRow = await readUserSettingsRow(supabase, user.id); + } + + if (!userSettingsRow) { + throw new Error("Settingsrecord ontbreekt na bootstrap."); + } + + return { + profile: mapProfileRow(profileRow), + settings: mapUserSettingsRow(userSettingsRow), + }; +} + +export async function getProfileBundleForCurrentUser(): Promise { + return ensureProfileBundleForCurrentUser(); +} diff --git a/lib/profile/types.ts b/lib/profile/types.ts new file mode 100644 index 0000000..6549079 --- /dev/null +++ b/lib/profile/types.ts @@ -0,0 +1,44 @@ +export type ProfileRecord = { + id: string; + email: string | null; + displayName: string | null; + locale: string; + timezone: string; + onboardingSeen: boolean; + onboardingCompleted: boolean; + createdAt: string; + updatedAt: string; +}; + +export type UserSettingsRecord = { + profileId: string; + morningReminderEnabled: boolean; + morningReminderTime: string | null; + reflectionReminderEnabled: boolean; + showEnergyPoints: boolean; + createdAt: string; + updatedAt: string; +}; + +export type ProfileBundle = { + profile: ProfileRecord; + settings: UserSettingsRecord; +}; + +export type OnboardingSubmission = { + displayName: string | null; + timezone: string; + morningReminderEnabled: boolean; + morningReminderTime: string | null; + reflectionReminderEnabled: boolean; + showEnergyPoints: boolean; +}; + +export type SettingsSubmission = { + locale: string; + timezone: string; + morningReminderEnabled: boolean; + morningReminderTime: string | null; + reflectionReminderEnabled: boolean; + showEnergyPoints: boolean; +}; diff --git a/lib/supabase/client.ts b/lib/supabase/client.ts new file mode 100644 index 0000000..d1b4aa7 --- /dev/null +++ b/lib/supabase/client.ts @@ -0,0 +1,15 @@ +"use client"; + +import { createBrowserClient } from "@supabase/ssr"; +import { getSupabaseEnv } from "@/lib/supabase/config"; + +let browserClient: ReturnType | undefined; + +export function createClient() { + if (!browserClient) { + const { url, publishableKey } = getSupabaseEnv(); + browserClient = createBrowserClient(url, publishableKey); + } + + return browserClient; +} diff --git a/lib/supabase/config.ts b/lib/supabase/config.ts new file mode 100644 index 0000000..cdeb76d --- /dev/null +++ b/lib/supabase/config.ts @@ -0,0 +1,22 @@ +export function hasSupabaseEnv(): boolean { + return Boolean( + process.env.NEXT_PUBLIC_SUPABASE_URL && + process.env.NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY, + ); +} + +export function getSupabaseEnv() { + const url = process.env.NEXT_PUBLIC_SUPABASE_URL; + const publishableKey = process.env.NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY; + + if (!url || !publishableKey) { + throw new Error( + "Supabase configuratie ontbreekt. Voeg NEXT_PUBLIC_SUPABASE_URL en NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY toe.", + ); + } + + return { + url, + publishableKey, + }; +} diff --git a/lib/supabase/proxy.ts b/lib/supabase/proxy.ts new file mode 100644 index 0000000..de80b4e --- /dev/null +++ b/lib/supabase/proxy.ts @@ -0,0 +1,40 @@ +import { createServerClient } from "@supabase/ssr"; +import { NextResponse, type NextRequest } from "next/server"; +import { getSupabaseEnv, hasSupabaseEnv } from "@/lib/supabase/config"; + +export async function updateSession(request: NextRequest) { + let response = NextResponse.next({ + request, + }); + + if (!hasSupabaseEnv()) { + return response; + } + + const { url, publishableKey } = getSupabaseEnv(); + + const supabase = createServerClient(url, publishableKey, { + cookies: { + getAll() { + return request.cookies.getAll(); + }, + setAll(cookiesToSet) { + cookiesToSet.forEach(({ name, value }) => { + request.cookies.set(name, value); + }); + + response = NextResponse.next({ + request, + }); + + cookiesToSet.forEach(({ name, value, options }) => { + response.cookies.set(name, value, options); + }); + }, + }, + }); + + await supabase.auth.getClaims(); + + return response; +} diff --git a/lib/supabase/server.ts b/lib/supabase/server.ts new file mode 100644 index 0000000..e66eee3 --- /dev/null +++ b/lib/supabase/server.ts @@ -0,0 +1,26 @@ +import { createServerClient } from "@supabase/ssr"; +import { cookies } from "next/headers"; +import { getSupabaseEnv } from "@/lib/supabase/config"; + +export async function createClient() { + const cookieStore = await cookies(); + const { url, publishableKey } = getSupabaseEnv(); + + return createServerClient(url, publishableKey, { + cookies: { + getAll() { + return cookieStore.getAll(); + }, + setAll(cookiesToSet) { + try { + cookiesToSet.forEach(({ name, value, options }) => + cookieStore.set(name, value, options), + ); + } catch { + // Server Components cannot always write cookies directly. + // The proxy keeps the session in sync for those cases. + } + }, + }, + }); +} diff --git a/lib/utils.ts b/lib/utils.ts new file mode 100644 index 0000000..bd0c391 --- /dev/null +++ b/lib/utils.ts @@ -0,0 +1,6 @@ +import { clsx, type ClassValue } from "clsx" +import { twMerge } from "tailwind-merge" + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} diff --git a/next.config.ts b/next.config.ts new file mode 100644 index 0000000..2f6491c --- /dev/null +++ b/next.config.ts @@ -0,0 +1,7 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + reactStrictMode: true, +}; + +export default nextConfig; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..a9c33d8 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,10056 @@ +{ + "name": "inspannings-monitor", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "inspannings-monitor", + "version": "0.1.0", + "dependencies": { + "@base-ui/react": "^1.4.0", + "@supabase/ssr": "^0.10.2", + "@supabase/supabase-js": "^2.103.3", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "lucide-react": "^1.8.0", + "next": "16.2.0", + "react": "19.2.0", + "react-dom": "19.2.0", + "shadcn": "^4.3.0", + "tailwind-merge": "^3.5.0", + "tw-animate-css": "^1.4.0" + }, + "devDependencies": { + "@tailwindcss/postcss": "latest", + "@types/node": "latest", + "@types/react": "latest", + "@types/react-dom": "latest", + "eslint": "latest", + "eslint-config-next": "16.2.0", + "postcss": "latest", + "tailwindcss": "latest", + "typescript": "latest" + }, + "engines": { + "node": ">=20.9.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", + "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", + "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@base-ui/react": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@base-ui/react/-/react-1.4.0.tgz", + "integrity": "sha512-QcqdVbr/+ba2/RAKJIV1PV6S02Q5+r6a4Eym8ndBw+ZbBILkkmQAyRxXCg/pArrHnkrGeU8goe26aw0h6eE8pg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.29.2", + "@base-ui/utils": "0.2.7", + "@floating-ui/react-dom": "^2.1.8", + "@floating-ui/utils": "^0.2.11", + "use-sync-external-store": "^1.6.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@date-fns/tz": "^1.2.0", + "@types/react": "^17 || ^18 || ^19", + "date-fns": "^4.0.0", + "react": "^17 || ^18 || ^19", + "react-dom": "^17 || ^18 || ^19" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@base-ui/utils": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@base-ui/utils/-/utils-0.2.7.tgz", + "integrity": "sha512-nXYKhiL/0JafyJE8PfcflipGftOftlIwKd72rU15iZ1M5yqgg5J9P8NHU71GReDuXco5MJA/eVQqUT5WRqX9sA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.29.2", + "@floating-ui/utils": "^0.2.11", + "reselect": "^5.1.1", + "use-sync-external-store": "^1.6.0" + }, + "peerDependencies": { + "@types/react": "^17 || ^18 || ^19", + "react": "^17 || ^18 || ^19", + "react-dom": "^17 || ^18 || ^19" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@date-fns/tz": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@date-fns/tz/-/tz-1.4.1.tgz", + "integrity": "sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA==", + "license": "MIT", + "peer": true + }, + "node_modules/@dotenvx/dotenvx": { + "version": "1.61.1", + "resolved": "https://registry.npmjs.org/@dotenvx/dotenvx/-/dotenvx-1.61.1.tgz", + "integrity": "sha512-2OUX4KDKvQA6oa7oESG8eNcV4K/2C5jgrbxUcT0VoH9Zelg6dT+rDYew4w2GmXRV3db0tUaM4QZG3MyJL3fU5Q==", + "license": "BSD-3-Clause", + "dependencies": { + "commander": "^11.1.0", + "dotenv": "^17.2.1", + "eciesjs": "^0.4.10", + "execa": "^5.1.1", + "fdir": "^6.2.0", + "ignore": "^5.3.0", + "object-treeify": "1.1.33", + "picomatch": "^4.0.4", + "which": "^4.0.0", + "yocto-spinner": "^1.1.0" + }, + "bin": { + "dotenvx": "src/cli/dotenvx.js" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/isexe": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", + "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/@dotenvx/dotenvx/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/@ecies/ciphers": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@ecies/ciphers/-/ciphers-0.2.6.tgz", + "integrity": "sha512-patgsRPKGkhhoBjETV4XxD0En4ui5fbX0hzayqI3M8tvNMGUoUvmyYAIWwlxBc1KX5cturfqByYdj5bYGRpN9g==", + "license": "MIT", + "engines": { + "bun": ">=1", + "deno": ">=2.7.10", + "node": ">=16" + }, + "peerDependencies": { + "@noble/ciphers": "^1.0.0" + } + }, + "node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.5" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.14.0", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.5", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.5.tgz", + "integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.6.tgz", + "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.5", + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.8.tgz", + "integrity": "sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.6" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.11.tgz", + "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==", + "license": "MIT" + }, + "node_modules/@hono/node-server": { + "version": "1.19.14", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.14.tgz", + "integrity": "sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==", + "license": "MIT", + "engines": { + "node": ">=18.14.1" + }, + "peerDependencies": { + "hono": "^4" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@img/colour": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.7.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@inquirer/ansi": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.5.tgz", + "integrity": "sha512-doc2sWgJpbFQ64UflSVd17ibMGDuxO1yKgOgLMwavzESnXjFWJqUeG8saYosqKpHp4kWiM5x1nXvEjbpx90gzw==", + "license": "MIT", + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + } + }, + "node_modules/@inquirer/confirm": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.0.11.tgz", + "integrity": "sha512-pTpHjg0iEIRMYV/7oCZUMf27/383E6Wyhfc/MY+AVQGEoUobffIYWOK9YLP2XFRGz/9i6WlTQh1CkFVIo2Y7XA==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.8", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "11.1.8", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.1.8.tgz", + "integrity": "sha512-/u+yJk2pOKNDOh1ZgdUH2RQaRx6OOH4I0uwL95qPvTFTIL38YBsuSC4r1yXBB3Q6JvNqFFc202gk0Ew79rrcjA==", + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^2.0.5", + "@inquirer/figures": "^2.0.5", + "@inquirer/type": "^4.0.5", + "cli-width": "^4.1.0", + "fast-wrap-ansi": "^0.2.0", + "mute-stream": "^3.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/figures": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.5.tgz", + "integrity": "sha512-NsSs4kzfm12lNetHwAn3GEuH317IzpwrMCbOuMIVytpjnJ90YYHNwdRgYGuKmVxwuIqSgqk3M5qqQt1cDk0tGQ==", + "license": "MIT", + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + } + }, + "node_modules/@inquirer/type": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.0.5.tgz", + "integrity": "sha512-aetVUNeKNc/VriqXlw1NRSW0zhMBB0W4bNbWRJgzRl/3d0QNDQFfk0GO5SDdtjMZVg6o8ZKEiadd7SCCzoOn5Q==", + "license": "MIT", + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.29.0.tgz", + "integrity": "sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==", + "license": "MIT", + "dependencies": { + "@hono/node-server": "^1.19.9", + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.5", + "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", + "express": "^5.2.1", + "express-rate-limit": "^8.2.1", + "hono": "^4.11.4", + "jose": "^6.1.3", + "json-schema-typed": "^8.0.2", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.25 || ^4.0", + "zod-to-json-schema": "^3.25.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@cfworker/json-schema": "^4.1.1", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "@cfworker/json-schema": { + "optional": true + }, + "zod": { + "optional": false + } + } + }, + "node_modules/@modelcontextprotocol/sdk/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@modelcontextprotocol/sdk/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/@mswjs/interceptors": { + "version": "0.41.3", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.41.3.tgz", + "integrity": "sha512-cXu86tF4VQVfwz8W1SPbhoRyHJkti6mjH/XJIxp40jhO4j2k1m4KYrEykxqWPkFF3vrK4rgQppBh//AwyGSXPA==", + "license": "MIT", + "dependencies": { + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "strict-event-emitter": "^0.5.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@mswjs/interceptors/node_modules/@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "license": "MIT" + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@next/env": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@next/env/-/env-16.2.0.tgz", + "integrity": "sha512-OZIbODWWAi0epQRCRjNe1VO45LOFBzgiyqmTLzIqWq6u1wrxKnAyz1HH6tgY/Mc81YzIjRPoYsPAEr4QV4l9TA==", + "license": "MIT" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-16.2.0.tgz", + "integrity": "sha512-3D3pEMcGKfENC9Pzlkr67GOm+205+5hRdYPZvHuNIy5sr9k0ybSU8g+sxOO/R/RLEh/gWZ3UlY+5LmEyZ1xgXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "3.3.1" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.2.0.tgz", + "integrity": "sha512-/JZsqKzKt01IFoiLLAzlNqys7qk2F3JkcUhj50zuRhKDQkZNOz9E5N6wAQWprXdsvjRP4lTFj+/+36NSv5AwhQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.2.0.tgz", + "integrity": "sha512-/hV8erWq4SNlVgglUiW5UmQ5Hwy5EW/AbbXlJCn6zkfKxTy/E/U3V8U1Ocm2YCTUoFgQdoMxRyRMOW5jYy4ygg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.2.0.tgz", + "integrity": "sha512-GkjL/Q7MWOwqWR9zoxu1TIHzkOI2l2BHCf7FzeQG87zPgs+6WDh+oC9Sw9ARuuL/FUk6JNCgKRkA6rEQYadUaw==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.2.0.tgz", + "integrity": "sha512-1ffhC6KY5qWLg5miMlKJp3dZbXelEfjuXt1qcp5WzSCQy36CV3y+JT7OC1WSFKizGQCDOcQbfkH/IjZP3cdRNA==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.2.0.tgz", + "integrity": "sha512-FmbDcZQ8yJRq93EJSL6xaE0KK/Rslraf8fj1uViGxg7K4CKBCRYSubILJPEhjSgZurpcPQq12QNOJQ0DRJl6Hg==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.2.0.tgz", + "integrity": "sha512-HzjIHVkmGAwRbh/vzvoBWWEbb8BBZPxBvVbDQDvzHSf3D8RP/4vjw7MNLDXFF9Q1WEzeQyEj2zdxBtVAHu5Oyw==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.2.0.tgz", + "integrity": "sha512-UMiFNQf5H7+1ZsZPxEsA064WEuFbRNq/kEXyepbCnSErp4f5iut75dBA8UeerFIG3vDaQNOfCpevnERPp2V+nA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.2.0.tgz", + "integrity": "sha512-DRrNJKW+/eimrZgdhVN1uvkN1OI4j6Lpefwr44jKQ0YQzztlmOBUUzHuV5GxOMPK3nmodAYElUVCY8ZXo/IWeA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@noble/ciphers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/@open-draft/deferred-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-3.0.0.tgz", + "integrity": "sha512-XW375UK8/9SqUVNVa6M0yEy8+iTi4QN5VZ7aZuRFQmy76LRwI9wy5F4YIBU6T+eTe2/DNDo8tqu8RHlwLHM6RA==", + "license": "MIT" + }, + "node_modules/@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "license": "MIT", + "dependencies": { + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" + } + }, + "node_modules/@open-draft/until": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", + "license": "MIT" + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "license": "MIT" + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@supabase/auth-js": { + "version": "2.103.3", + "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.103.3.tgz", + "integrity": "sha512-SMDJ4vg5jLXNEHdhN4J4ujSb203WangbDw1n3VaARH0ZqM51E6lJnoUAHlpQU9N7SzP0hfgghA9IvT8c7tGRfg==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/functions-js": { + "version": "2.103.3", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.103.3.tgz", + "integrity": "sha512-A2ZHi95GIRRlN9LGOSa/zGEIPg9taR1giDI9Gkfkgrcz0YmKV8ShiAplIrKsHQFdkzKxtsO3maJF0efL+i31mg==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/phoenix": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@supabase/phoenix/-/phoenix-0.4.0.tgz", + "integrity": "sha512-RHSx8bHS02xwfHdAbX5Lpbo6PXbgyf7lTaXTlwtFDPwOIw64NnVRwFAXGojHhjtVYI+PEPNSWwkL90f4agN3bw==", + "license": "MIT" + }, + "node_modules/@supabase/postgrest-js": { + "version": "2.103.3", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.103.3.tgz", + "integrity": "sha512-S0k/9FJVXDeejNfQLCJwRlm4IH8Wet/HEEdBTBpX6/G2o1eU/6CjQop/hJPZIwlQkI6D/zbHH8KymuCsBgy6jA==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/realtime-js": { + "version": "2.103.3", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.103.3.tgz", + "integrity": "sha512-fUvKtSXMUk1BkApVwAurWtHF4Vzbb0UB9aC/fQXrRBek7Ta3Kaora+wHf/fGwFNQs7uRz+mvjIVpzLfpR32VXA==", + "license": "MIT", + "dependencies": { + "@supabase/phoenix": "^0.4.0", + "@types/ws": "^8.18.1", + "tslib": "2.8.1", + "ws": "^8.18.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/ssr": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@supabase/ssr/-/ssr-0.10.2.tgz", + "integrity": "sha512-JFbchN63CXLFHJRNT7udec4/RoD9PmXkSGko3QSO6vUuqGBtSzdmxR7FPfQNr7SuFd65I7Xv46q66ALjEN1cgQ==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.2" + }, + "peerDependencies": { + "@supabase/supabase-js": "^2.102.1" + } + }, + "node_modules/@supabase/storage-js": { + "version": "2.103.3", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.103.3.tgz", + "integrity": "sha512-5bAIEubrw5keHcdKR2RTois0O1M2Ilx4UYuzOzc07G6mLGCPS/8t1nbC6Vq451pnxR3sK+rmtFHWb9CY/OPjAw==", + "license": "MIT", + "dependencies": { + "iceberg-js": "^0.8.1", + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/supabase-js": { + "version": "2.103.3", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.103.3.tgz", + "integrity": "sha512-DuPiAz5pIJsTAQCt7B6bDZrnLzlq9+/5bta/GWTsgpLn6AkuZQcmYsQHYplv4skQ8U2raKY5HASQOu4KtYq9Qw==", + "license": "MIT", + "dependencies": { + "@supabase/auth-js": "2.103.3", + "@supabase/functions-js": "2.103.3", + "@supabase/postgrest-js": "2.103.3", + "@supabase/realtime-js": "2.103.3", + "@supabase/storage-js": "2.103.3" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.2.tgz", + "integrity": "sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.19.0", + "jiti": "^2.6.1", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.2.2" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.2.2.tgz", + "integrity": "sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.2.2", + "@tailwindcss/oxide-darwin-arm64": "4.2.2", + "@tailwindcss/oxide-darwin-x64": "4.2.2", + "@tailwindcss/oxide-freebsd-x64": "4.2.2", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.2", + "@tailwindcss/oxide-linux-arm64-gnu": "4.2.2", + "@tailwindcss/oxide-linux-arm64-musl": "4.2.2", + "@tailwindcss/oxide-linux-x64-gnu": "4.2.2", + "@tailwindcss/oxide-linux-x64-musl": "4.2.2", + "@tailwindcss/oxide-wasm32-wasi": "4.2.2", + "@tailwindcss/oxide-win32-arm64-msvc": "4.2.2", + "@tailwindcss/oxide-win32-x64-msvc": "4.2.2" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.2.tgz", + "integrity": "sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.2.tgz", + "integrity": "sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.2.tgz", + "integrity": "sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.2.tgz", + "integrity": "sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.2.tgz", + "integrity": "sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.2.tgz", + "integrity": "sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.2.tgz", + "integrity": "sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.2.tgz", + "integrity": "sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.2.tgz", + "integrity": "sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.2.tgz", + "integrity": "sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.8.1", + "@emnapi/runtime": "^1.8.1", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.1", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.2.tgz", + "integrity": "sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.2.tgz", + "integrity": "sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/postcss": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.2.2.tgz", + "integrity": "sha512-n4goKQbW8RVXIbNKRB/45LzyUqN451deQK0nzIeauVEqjlI49slUlgKYJM2QyUzap/PcpnS7kzSUmPb1sCRvYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.2.2", + "@tailwindcss/oxide": "4.2.2", + "postcss": "^8.5.6", + "tailwindcss": "4.2.2" + } + }, + "node_modules/@ts-morph/common": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.27.0.tgz", + "integrity": "sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==", + "license": "MIT", + "dependencies": { + "fast-glob": "^3.3.3", + "minimatch": "^10.0.1", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@ts-morph/common/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@ts-morph/common/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@ts-morph/common/node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/@ts-morph/common/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@ts-morph/common/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz", + "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.19.0" + } + }, + "node_modules/@types/react": { + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@types/set-cookie-parser": { + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.10.tgz", + "integrity": "sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/statuses": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.6.tgz", + "integrity": "sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==", + "license": "MIT" + }, + "node_modules/@types/validate-npm-package-name": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/validate-npm-package-name/-/validate-npm-package-name-4.0.2.tgz", + "integrity": "sha512-lrpDziQipxCEeK5kWxvljWYhUvOiB2A9izZd9B2AFarYAkqZshb4lPbRs7zKEic6eGtH8V/2qJW+dPp9OtF6bw==", + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.2.tgz", + "integrity": "sha512-aC2qc5thQahutKjP+cl8cgN9DWe3ZUqVko30CMSZHnFEHyhOYoZSzkGtAI2mcwZ38xeImDucI4dnqsHiOYuuCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.58.2", + "@typescript-eslint/type-utils": "8.58.2", + "@typescript-eslint/utils": "8.58.2", + "@typescript-eslint/visitor-keys": "8.58.2", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.58.2", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.58.2.tgz", + "integrity": "sha512-/Zb/xaIDfxeJnvishjGdcR4jmr7S+bda8PKNhRGdljDM+elXhlvN0FyPSsMnLmJUrVG9aPO6dof80wjMawsASg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.58.2", + "@typescript-eslint/types": "8.58.2", + "@typescript-eslint/typescript-estree": "8.58.2", + "@typescript-eslint/visitor-keys": "8.58.2", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.2.tgz", + "integrity": "sha512-Cq6UfpZZk15+r87BkIh5rDpi38W4b+Sjnb8wQCPPDDweS/LRCFjCyViEbzHk5Ck3f2QDfgmlxqSa7S7clDtlfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.58.2", + "@typescript-eslint/types": "^8.58.2", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.2.tgz", + "integrity": "sha512-SgmyvDPexWETQek+qzZnrG6844IaO02UVyOLhI4wpo82dpZJY9+6YZCKAMFzXb7qhx37mFK1QcPQ18tud+vo6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.58.2", + "@typescript-eslint/visitor-keys": "8.58.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.2.tgz", + "integrity": "sha512-3SR+RukipDvkkKp/d0jP0dyzuls3DbGmwDpVEc5wqk5f38KFThakqAAO0XMirWAE+kT00oTauTbzMFGPoAzB0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.2.tgz", + "integrity": "sha512-Z7EloNR/B389FvabdGeTo2XMs4W9TjtPiO9DAsmT0yom0bwlPyRjkJ1uCdW1DvrrrYP50AJZ9Xc3sByZA9+dcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.58.2", + "@typescript-eslint/typescript-estree": "8.58.2", + "@typescript-eslint/utils": "8.58.2", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.2.tgz", + "integrity": "sha512-9TukXyATBQf/Jq9AMQXfvurk+G5R2MwfqQGDR2GzGz28HvY/lXNKGhkY+6IOubwcquikWk5cjlgPvD2uAA7htQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.2.tgz", + "integrity": "sha512-ELGuoofuhhoCvNbQjFFiobFcGgcDCEm0ThWdmO4Z0UzLqPXS3KFvnEZ+SHewwOYHjM09tkzOWXNTv9u6Gqtyuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.58.2", + "@typescript-eslint/tsconfig-utils": "8.58.2", + "@typescript-eslint/types": "8.58.2", + "@typescript-eslint/visitor-keys": "8.58.2", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.2.tgz", + "integrity": "sha512-QZfjHNEzPY8+l0+fIXMvuQ2sJlplB4zgDZvA+NmvZsZv3EQwOcc1DuIU1VJUTWZ/RKouBMhDyNaBMx4sWvrzRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.58.2", + "@typescript-eslint/types": "8.58.2", + "@typescript-eslint/typescript-estree": "8.58.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.2.tgz", + "integrity": "sha512-f1WO2Lx8a9t8DARmcWAUPJbu0G20bJlj8L4z72K00TMeJAoyLr/tHhI/pzYBLrR4dXWkcxO1cWYZEOX8DKHTqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.58.2", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.3.tgz", + "integrity": "sha512-zBQouZixDTbo3jMGqHKyePxYxr1e5W8UdTmBQ7sNtaA9M2bE32daxxPLS/jojhKOHxQ7LWwPjfiwf/fhaJWzlg==", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.19.tgz", + "integrity": "sha512-qCkNLi2sfBOn8XhZQ0FXsT1Ki/Yo5P90hrkRamVFRS7/KV9hpfA4HkoWNU152+8w0zPjnxo5psx5NL3PSGgv5g==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001788", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001788.tgz", + "integrity": "sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/code-block-writer": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz", + "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==", + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/commander": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", + "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", + "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cosmiconfig": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz", + "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==", + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", + "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", + "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "devOptional": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/diff": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", + "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dotenv": { + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.2.tgz", + "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eciesjs": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/eciesjs/-/eciesjs-0.4.18.tgz", + "integrity": "sha512-wG99Zcfcys9fZux7Cft8BAX/YrOJLJSZ3jyYPfhZHqN2E+Ffx+QXBDsv3gubEgPtV6dTzJMSQUwk1H98/t/0wQ==", + "license": "MIT", + "dependencies": { + "@ecies/ciphers": "^0.2.5", + "@noble/ciphers": "^1.3.0", + "@noble/curves": "^1.9.7", + "@noble/hashes": "^1.8.0" + }, + "engines": { + "bun": ">=1", + "deno": ">=2", + "node": ">=16" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.340", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.340.tgz", + "integrity": "sha512-908qahOGocRMinT2nM3ajCEM99H4iPdv84eagPP3FfZy/1ZGeOy2CZYzjhms81ckOPCXPlW7LkY4XpxD8r1DrA==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.2.tgz", + "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.3.2.tgz", + "integrity": "sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.2", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.1.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.3.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.5", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.2", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "9.39.4", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.5", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-next": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-16.2.0.tgz", + "integrity": "sha512-LlVJrWnjIkgQRECjIOELyAtrWFqzn326ARS5ap7swc1YKL4wkry6/gszn6wi5ZDWKxKe7fanxArvhqMoAzbL7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@next/eslint-plugin-next": "16.2.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-jsx-a11y": "^6.10.0", + "eslint-plugin-react": "^7.37.0", + "eslint-plugin-react-hooks": "^7.0.0", + "globals": "16.4.0", + "typescript-eslint": "^8.46.0" + }, + "peerDependencies": { + "eslint": ">=9.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.10.tgz", + "integrity": "sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.16.1", + "resolve": "^2.0.0-next.6" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", + "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.4.0", + "get-tsconfig": "^4.10.0", + "is-bun-module": "^2.0.0", + "stable-hash": "^0.0.5", + "tinyglobby": "^0.2.13", + "unrs-resolver": "^1.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.1.1.tgz", + "integrity": "sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventsource": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", + "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", + "license": "MIT", + "dependencies": { + "eventsource-parser": "^3.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/eventsource-parser": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.7.tgz", + "integrity": "sha512-zwxwiQqexizSXFZV13zMiEtW1E3lv7RlUv+1f5FBiR4x7wFhEjm3aFTyYkZQWzyN08WnPdox015GoRH5D/E5YA==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/execa": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", + "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==", + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express-rate-limit": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.2.tgz", + "integrity": "sha512-77VmFeJkO0/rvimEDuUC5H30oqUC4EyOhyGccfqoLebB0oiEYfM7nwPrsDsBL1gsTpwfzX8SFy2MT3TDyRq+bg==", + "license": "MIT", + "dependencies": { + "ip-address": "10.1.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": ">= 4.11" + } + }, + "node_modules/express/node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-string-truncated-width": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", + "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==", + "license": "MIT" + }, + "node_modules/fast-string-width": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", + "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", + "license": "MIT", + "dependencies": { + "fast-string-truncated-width": "^3.0.2" + } + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fast-wrap-ansi": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.0.tgz", + "integrity": "sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==", + "license": "MIT", + "dependencies": { + "fast-string-width": "^3.0.2" + } + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fs-extra": { + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", + "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fuzzysort": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fuzzysort/-/fuzzysort-3.1.0.tgz", + "integrity": "sha512-sR9BNCjBg6LNgwvxlBd0sBABvQitkLzoVY9MYYROQVX/FvfJ4Mai9LsGhDgd8qYdds0bY77VzYd5iuB+v5rwQQ==", + "license": "MIT" + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", + "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-own-enumerable-keys/-/get-own-enumerable-keys-1.0.0.tgz", + "integrity": "sha512-PKsK2FSrQCyxcGHsGrLDcK0lx+0Ke+6e8KFFozA9/fIQLhQzPaRvJFdcz7+Axg3jUH/Mq+NI4xa5u/UT2tQskA==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz", + "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "16.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz", + "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphql": { + "version": "16.13.2", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.13.2.tgz", + "integrity": "sha512-5bJ+nf/UCpAjHM8i06fl7eLyVC9iuNAjm9qzkiu2ZGhM0VscSvS6WDPfAwkdkBuoXGM9FJSbKl6wylMwP9Ktig==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/headers-polyfill": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-5.0.1.tgz", + "integrity": "sha512-1TJ6Fih/b8h5TIcv+1+Hw0PDQWJTKDKzFZzcKOiW1wJza3XoAQlkCuXLbymPYB8+ZQyw8mHvdw560e8zVFIWyA==", + "license": "MIT", + "dependencies": { + "@types/set-cookie-parser": "^2.4.10", + "set-cookie-parser": "^3.0.1" + } + }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/hono": { + "version": "4.12.14", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.14.tgz", + "integrity": "sha512-am5zfg3yu6sqn5yjKBNqhnTX7Cv+m00ox+7jbaKkrLMRJ4rAdldd1xPd/JzbBWspqaQv6RSTrgFN95EsfhC+7w==", + "license": "MIT", + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/iceberg-js": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.8.1.tgz", + "integrity": "sha512-1dhVQZXhcHje7798IVM+xoo/1ZdVfzOMIc8/rgVSijRK38EDqOJoGula9N/8ZI5RD8QTxNQtK/Gozpr+qUqRRA==", + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" + } + }, + "node_modules/is-bun-module/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-in-ssh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz", + "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-node-process": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", + "license": "MIT" + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-3.0.0.tgz", + "integrity": "sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-3.1.0.tgz", + "integrity": "sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/jose": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.2.tgz", + "integrity": "sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-typed": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz", + "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==", + "license": "BSD-2-Clause" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lucide-react": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.8.0.tgz", + "integrity": "sha512-WuvlsjngSk7TnTBJ1hsCy3ql9V9VOdcPkd3PKcSmM34vJD8KG6molxz7m7zbYFgICwsanQWmJ13JlYs4Zp7Arw==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/msw": { + "version": "2.13.4", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.13.4.tgz", + "integrity": "sha512-fPlKBeFe+8rpcyR3umUmmHuNwu6gc6T3STvkgEa9WDX/HEgal9wDeflpCUAIRtmvaLZM2igfI5y1bZ9G5J26KA==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@inquirer/confirm": "^6.0.11", + "@mswjs/interceptors": "^0.41.3", + "@open-draft/deferred-promise": "^3.0.0", + "@types/statuses": "^2.0.6", + "cookie": "^1.1.1", + "graphql": "^16.13.2", + "headers-polyfill": "^5.0.1", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "path-to-regexp": "^6.3.0", + "picocolors": "^1.1.1", + "rettime": "^0.11.7", + "statuses": "^2.0.2", + "strict-event-emitter": "^0.5.1", + "tough-cookie": "^6.0.1", + "type-fest": "^5.5.0", + "until-async": "^3.0.2", + "yargs": "^17.7.2" + }, + "bin": { + "msw": "cli/index.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mswjs" + }, + "peerDependencies": { + "typescript": ">= 4.8.x" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/mute-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz", + "integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/next": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/next/-/next-16.2.0.tgz", + "integrity": "sha512-NLBVrJy1pbV1Yn00L5sU4vFyAHt5XuSjzrNyFnxo6Com0M0KrL6hHM5B99dbqXb2bE9pm4Ow3Zl1xp6HVY9edQ==", + "license": "MIT", + "dependencies": { + "@next/env": "16.2.0", + "@swc/helpers": "0.5.15", + "baseline-browser-mapping": "^2.9.19", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.4.31", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=20.9.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "16.2.0", + "@next/swc-darwin-x64": "16.2.0", + "@next/swc-linux-arm64-gnu": "16.2.0", + "@next/swc-linux-arm64-musl": "16.2.0", + "@next/swc-linux-x64-gnu": "16.2.0", + "@next/swc-linux-x64-musl": "16.2.0", + "@next/swc-win32-arm64-msvc": "16.2.0", + "@next/swc-win32-x64-msvc": "16.2.0", + "sharp": "^0.34.5" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.51.1", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-exports-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz", + "integrity": "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array.prototype.flatmap": "^1.3.3", + "es-errors": "^1.3.0", + "object.entries": "^1.1.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-releases": { + "version": "2.0.37", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", + "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", + "license": "MIT" + }, + "node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-treeify": { + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz", + "integrity": "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/open/-/open-11.0.0.tgz", + "integrity": "sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==", + "license": "MIT", + "dependencies": { + "default-browser": "^5.4.0", + "define-lazy-prop": "^3.0.0", + "is-in-ssh": "^1.0.0", + "is-inside-container": "^1.0.0", + "powershell-utils": "^0.1.0", + "wsl-utils": "^0.3.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz", + "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^5.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.2", + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/outvariant": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", + "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", + "license": "MIT" + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkce-challenge": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", + "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==", + "license": "MIT", + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.10.tgz", + "integrity": "sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/powershell-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.1.0.tgz", + "integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-ms": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", + "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", + "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/react": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", + "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", + "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/recast": { + "version": "0.23.11", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz", + "integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==", + "license": "MIT", + "dependencies": { + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "2.0.0-next.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz", + "integrity": "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "node-exports-info": "^1.6.0", + "object-keys": "^1.1.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rettime": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/rettime/-/rettime-0.11.7.tgz", + "integrity": "sha512-DoAm1WjR1eH7z8sHPtvvUMIZh4/CSKkGCz6CxPqOrEAnOGtOuHSnSE9OC+razqxKuf4ub7pAYyl/vZV0vGs5tg==", + "license": "MIT" + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/router/node_modules/path-to-regexp": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/set-cookie-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-3.1.0.tgz", + "integrity": "sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==", + "license": "MIT" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shadcn": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/shadcn/-/shadcn-4.3.0.tgz", + "integrity": "sha512-7vhnBh2LVLyxOd1ZQWwXv7OATCnQcxdqc8FbZdNigZriNOwDsHklQmPpvPt1jcrFK5mzMI+cyuAYv8WzERx2Og==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/parser": "^7.28.0", + "@babel/plugin-transform-typescript": "^7.28.0", + "@babel/preset-typescript": "^7.27.1", + "@dotenvx/dotenvx": "^1.48.4", + "@modelcontextprotocol/sdk": "^1.26.0", + "@types/validate-npm-package-name": "^4.0.2", + "browserslist": "^4.26.2", + "commander": "^14.0.0", + "cosmiconfig": "^9.0.0", + "dedent": "^1.6.0", + "deepmerge": "^4.3.1", + "diff": "^8.0.2", + "execa": "^9.6.0", + "fast-glob": "^3.3.3", + "fs-extra": "^11.3.1", + "fuzzysort": "^3.1.0", + "https-proxy-agent": "^7.0.6", + "kleur": "^4.1.5", + "msw": "^2.10.4", + "node-fetch": "^3.3.2", + "open": "^11.0.0", + "ora": "^8.2.0", + "postcss": "^8.5.6", + "postcss-selector-parser": "^7.1.0", + "prompts": "^2.4.2", + "recast": "^0.23.11", + "stringify-object": "^5.0.0", + "tailwind-merge": "^3.0.1", + "ts-morph": "^26.0.0", + "tsconfig-paths": "^4.2.0", + "validate-npm-package-name": "^7.0.1", + "zod": "^3.24.1", + "zod-to-json-schema": "^3.24.6" + }, + "bin": { + "shadcn": "dist/index.js" + } + }, + "node_modules/shadcn/node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/shadcn/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/shadcn/node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "license": "MIT", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/shadcn/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/sharp": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", + "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.2", + "semver": "^7.7.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.5", + "@img/sharp-darwin-x64": "0.34.5", + "@img/sharp-libvips-darwin-arm64": "1.2.4", + "@img/sharp-libvips-darwin-x64": "1.2.4", + "@img/sharp-libvips-linux-arm": "1.2.4", + "@img/sharp-libvips-linux-arm64": "1.2.4", + "@img/sharp-libvips-linux-ppc64": "1.2.4", + "@img/sharp-libvips-linux-riscv64": "1.2.4", + "@img/sharp-libvips-linux-s390x": "1.2.4", + "@img/sharp-libvips-linux-x64": "1.2.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", + "@img/sharp-linux-arm": "0.34.5", + "@img/sharp-linux-arm64": "0.34.5", + "@img/sharp-linux-ppc64": "0.34.5", + "@img/sharp-linux-riscv64": "0.34.5", + "@img/sharp-linux-s390x": "0.34.5", + "@img/sharp-linux-x64": "0.34.5", + "@img/sharp-linuxmusl-arm64": "0.34.5", + "@img/sharp-linuxmusl-x64": "0.34.5", + "@img/sharp-wasm32": "0.34.5", + "@img/sharp-win32-arm64": "0.34.5", + "@img/sharp-win32-ia32": "0.34.5", + "@img/sharp-win32-x64": "0.34.5" + } + }, + "node_modules/sharp/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stable-hash": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", + "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", + "dev": true, + "license": "MIT" + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stdin-discarder": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", + "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/strict-event-emitter": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", + "license": "MIT" + }, + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-5.0.0.tgz", + "integrity": "sha512-zaJYxz2FtcMb4f+g60KsRNFOpVMUyuJgA51Zi5Z1DOTC3S59+OQiVOzE9GZt0x72uBGWKsQIuBKeF9iusmKFsg==", + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-keys": "^1.0.0", + "is-obj": "^3.0.0", + "is-regexp": "^3.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/yeoman/stringify-object?sponsor=1" + } + }, + "node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "license": "MIT", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tagged-tag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz", + "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tailwind-merge": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.5.0.tgz", + "integrity": "sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.2.tgz", + "integrity": "sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", + "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tldts": { + "version": "7.0.28", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.28.tgz", + "integrity": "sha512-+Zg3vWhRUv8B1maGSTFdev9mjoo8Etn2Ayfs4cnjlD3CsGkxXX4QyW3j2WJ0wdjYcYmy7Lx2RDsZMhgCWafKIw==", + "license": "MIT", + "dependencies": { + "tldts-core": "^7.0.28" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "7.0.28", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.28.tgz", + "integrity": "sha512-7W5Efjhsc3chVdFhqtaU0KtK32J37Zcr9RKtID54nG+tIpcY79CQK/veYPODxtD/LJ4Lue66jvrQzIX2Z2/pUQ==", + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.1.tgz", + "integrity": "sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==", + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^7.0.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-morph": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-26.0.0.tgz", + "integrity": "sha512-ztMO++owQnz8c/gIENcM9XfCEzgoGphTv+nKpYNM1bgsdOVC/jRZuEBf6N+mLLDNg68Kl+GgUZfOySaRiG1/Ug==", + "license": "MIT", + "dependencies": { + "@ts-morph/common": "~0.27.0", + "code-block-writer": "^13.0.3" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tw-animate-css": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.4.0.tgz", + "integrity": "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Wombosvideo" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.6.0.tgz", + "integrity": "sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==", + "license": "(MIT OR CC0-1.0)", + "dependencies": { + "tagged-tag": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.58.2.tgz", + "integrity": "sha512-V8iSng9mRbdZjl54VJ9NKr6ZB+dW0J3TzRXRGcSbLIej9jV86ZRtlYeTKDR/QLxXykocJ5icNzbsl2+5TzIvcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.58.2", + "@typescript-eslint/parser": "8.58.2", + "@typescript-eslint/typescript-estree": "8.58.2", + "@typescript-eslint/utils": "8.58.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "7.19.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz", + "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==", + "license": "MIT" + }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, + "node_modules/until-async": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/until-async/-/until-async-3.0.2.tgz", + "integrity": "sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/kettanaito" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/validate-npm-package-name": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-7.0.2.tgz", + "integrity": "sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", + "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/wsl-utils": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.1.tgz", + "integrity": "sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==", + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0", + "powershell-utils": "^0.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yocto-spinner": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/yocto-spinner/-/yocto-spinner-1.1.0.tgz", + "integrity": "sha512-/BY0AUXnS7IKO354uLLA2eRcWiqDifEbd6unXCsOxkFDAkhgUL3PH9X2bFoaU0YchnDXsF+iKleeTLJGckbXfA==", + "license": "MIT", + "dependencies": { + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": ">=18.19" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", + "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.25.2", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz", + "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==", + "license": "ISC", + "peerDependencies": { + "zod": "^3.25.28 || ^4" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..de51b45 --- /dev/null +++ b/package.json @@ -0,0 +1,39 @@ +{ + "name": "inspannings-monitor", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build --webpack", + "start": "next start", + "lint": "eslint ." + }, + "dependencies": { + "@base-ui/react": "^1.4.0", + "@supabase/ssr": "^0.10.2", + "@supabase/supabase-js": "^2.103.3", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "lucide-react": "^1.8.0", + "next": "16.2.0", + "react": "19.2.0", + "react-dom": "19.2.0", + "shadcn": "^4.3.0", + "tailwind-merge": "^3.5.0", + "tw-animate-css": "^1.4.0" + }, + "devDependencies": { + "@tailwindcss/postcss": "latest", + "@types/node": "latest", + "@types/react": "latest", + "@types/react-dom": "latest", + "eslint": "latest", + "eslint-config-next": "16.2.0", + "postcss": "latest", + "tailwindcss": "latest", + "typescript": "latest" + }, + "engines": { + "node": ">=20.9.0" + } +} diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 0000000..61e3684 --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,7 @@ +const config = { + plugins: { + "@tailwindcss/postcss": {}, + }, +}; + +export default config; diff --git a/proxy.ts b/proxy.ts new file mode 100644 index 0000000..62409f2 --- /dev/null +++ b/proxy.ts @@ -0,0 +1,12 @@ +import { type NextRequest } from "next/server"; +import { updateSession } from "@/lib/supabase/proxy"; + +export async function proxy(request: NextRequest) { + return updateSession(request); +} + +export const config = { + matcher: [ + "/((?!_next/static|_next/image|favicon.ico|.*\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)", + ], +}; diff --git a/supabase/.temp/cli-latest b/supabase/.temp/cli-latest new file mode 100644 index 0000000..0455888 --- /dev/null +++ b/supabase/.temp/cli-latest @@ -0,0 +1 @@ +v2.90.0 \ No newline at end of file diff --git a/supabase/.temp/gotrue-version b/supabase/.temp/gotrue-version new file mode 100644 index 0000000..5bbfd4d --- /dev/null +++ b/supabase/.temp/gotrue-version @@ -0,0 +1 @@ +v2.188.1 \ No newline at end of file diff --git a/supabase/.temp/linked-project.json b/supabase/.temp/linked-project.json new file mode 100644 index 0000000..f81756c --- /dev/null +++ b/supabase/.temp/linked-project.json @@ -0,0 +1 @@ +{"ref":"yntzfgnkrwjlnbaxxkkc","name":"madhura68's Project","organization_id":"muclgkbblfugxcxrrjaj","organization_slug":"muclgkbblfugxcxrrjaj"} \ No newline at end of file diff --git a/supabase/.temp/pooler-url b/supabase/.temp/pooler-url new file mode 100644 index 0000000..5f81d63 --- /dev/null +++ b/supabase/.temp/pooler-url @@ -0,0 +1 @@ +postgresql://postgres.yntzfgnkrwjlnbaxxkkc@aws-0-eu-west-1.pooler.supabase.com:5432/postgres \ No newline at end of file diff --git a/supabase/.temp/postgres-version b/supabase/.temp/postgres-version new file mode 100644 index 0000000..fc1481f --- /dev/null +++ b/supabase/.temp/postgres-version @@ -0,0 +1 @@ +17.6.1.104 \ No newline at end of file diff --git a/supabase/.temp/project-ref b/supabase/.temp/project-ref new file mode 100644 index 0000000..41c56cd --- /dev/null +++ b/supabase/.temp/project-ref @@ -0,0 +1 @@ +yntzfgnkrwjlnbaxxkkc \ No newline at end of file diff --git a/supabase/.temp/rest-version b/supabase/.temp/rest-version new file mode 100644 index 0000000..908947a --- /dev/null +++ b/supabase/.temp/rest-version @@ -0,0 +1 @@ +v14.5 \ No newline at end of file diff --git a/supabase/.temp/storage-migration b/supabase/.temp/storage-migration new file mode 100644 index 0000000..2494908 --- /dev/null +++ b/supabase/.temp/storage-migration @@ -0,0 +1 @@ +operation-ergonomics \ No newline at end of file diff --git a/supabase/.temp/storage-version b/supabase/.temp/storage-version new file mode 100644 index 0000000..14186a2 --- /dev/null +++ b/supabase/.temp/storage-version @@ -0,0 +1 @@ +v1.48.20 \ No newline at end of file diff --git a/supabase/migrations/20260418_add_onboarding_seen_to_profiles.sql b/supabase/migrations/20260418_add_onboarding_seen_to_profiles.sql new file mode 100644 index 0000000..1fb5b10 --- /dev/null +++ b/supabase/migrations/20260418_add_onboarding_seen_to_profiles.sql @@ -0,0 +1,7 @@ +alter table public.profiles +add column if not exists onboarding_seen boolean not null default false; + +update public.profiles +set onboarding_seen = true +where onboarding_completed = true + and onboarding_seen = false; diff --git a/supabase/migrations/20260418_create_profiles_and_user_settings.sql b/supabase/migrations/20260418_create_profiles_and_user_settings.sql new file mode 100644 index 0000000..30dd918 --- /dev/null +++ b/supabase/migrations/20260418_create_profiles_and_user_settings.sql @@ -0,0 +1,93 @@ +create or replace function public.set_updated_at() +returns trigger +language plpgsql +as $$ +begin + new.updated_at = timezone('utc', now()); + return new; +end; +$$; + +create table if not exists public.profiles ( + id uuid primary key references auth.users (id) on delete cascade, + email text, + display_name text, + locale text not null default 'nl-NL', + timezone text not null default 'Europe/Amsterdam', + onboarding_completed boolean not null default false, + created_at timestamptz not null default timezone('utc', now()), + updated_at timestamptz not null default timezone('utc', now()) +); + +create table if not exists public.user_settings ( + profile_id uuid primary key references public.profiles (id) on delete cascade, + morning_reminder_enabled boolean not null default false, + morning_reminder_time time, + reflection_reminder_enabled boolean not null default false, + show_energy_points boolean not null default true, + created_at timestamptz not null default timezone('utc', now()), + updated_at timestamptz not null default timezone('utc', now()) +); + +grant usage on schema public to authenticated; +grant select, insert, update on table public.profiles to authenticated; +grant select, insert, update on table public.user_settings to authenticated; + +alter table public.profiles enable row level security; +alter table public.user_settings enable row level security; + +drop trigger if exists set_profiles_updated_at on public.profiles; +create trigger set_profiles_updated_at +before update on public.profiles +for each row +execute function public.set_updated_at(); + +drop trigger if exists set_user_settings_updated_at on public.user_settings; +create trigger set_user_settings_updated_at +before update on public.user_settings +for each row +execute function public.set_updated_at(); + +drop policy if exists "profiles_select_own" on public.profiles; +create policy "profiles_select_own" +on public.profiles +for select +to authenticated +using ((select auth.uid()) = id); + +drop policy if exists "profiles_insert_own" on public.profiles; +create policy "profiles_insert_own" +on public.profiles +for insert +to authenticated +with check ((select auth.uid()) = id); + +drop policy if exists "profiles_update_own" on public.profiles; +create policy "profiles_update_own" +on public.profiles +for update +to authenticated +using ((select auth.uid()) = id) +with check ((select auth.uid()) = id); + +drop policy if exists "user_settings_select_own" on public.user_settings; +create policy "user_settings_select_own" +on public.user_settings +for select +to authenticated +using ((select auth.uid()) = profile_id); + +drop policy if exists "user_settings_insert_own" on public.user_settings; +create policy "user_settings_insert_own" +on public.user_settings +for insert +to authenticated +with check ((select auth.uid()) = profile_id); + +drop policy if exists "user_settings_update_own" on public.user_settings; +create policy "user_settings_update_own" +on public.user_settings +for update +to authenticated +using ((select auth.uid()) = profile_id) +with check ((select auth.uid()) = profile_id); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..3f0b70d --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,41 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": false, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": [ + "./*" + ] + } + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] +}