Openstatus www.openstatus.dev

🔥 rum (#787)

* 🔥 rum

* 🔥 rum

authored by

Thibault Le Ouay and committed by
GitHub
cc2985d4 8d83715a

+577 -181
+31
apps/docs/rum/overview.mdx
··· 18 18 - **LCP**: Largest Contentful Paint 19 19 - **CLS**: Cumulative Layout Shift 20 20 - **INP**: Interaction to Next Paint 21 + 22 + ## Get started 🚀 23 + 24 + We currently only support NextJS applications, other frameworks are coming soon. 25 + 26 + To get started, you need to install our package in your application. 27 + 28 + ```bash 29 + pnpm add @openstatus/next-monitoring -E 30 + ``` 31 + 32 + Then, you need to add the following snippet to your `layout.tsx` file: 33 + 34 + ```tsx 35 + import { OpenStatusProvider } from "@openstatus/next-monitoring"; 36 + 37 + export default function RootLayout({ 38 + children, 39 + }: Readonly<{ 40 + children: React.ReactNode; 41 + }>) { 42 + return ( 43 + <html lang="en"> 44 + <body className={inter.className}> 45 + <OpenStatusProvider dsn="YOUR_DSN" /> 46 + {children} 47 + </body> 48 + </html> 49 + ); 50 + } 51 + ```
+24
apps/web/src/app/app/[workspaceSlug]/(dashboard)/rum/(overview)/_components/MetricCard.tsx
··· 1 + import { Card } from "@tremor/react"; 2 + 3 + import { api } from "@/trpc/server"; 4 + 5 + export const RUMMetricCard = async ({ 6 + event, 7 + }: { 8 + event: "CLS" | "FCP" | "FID" | "INP" | "LCP" | "TTFB"; 9 + }) => { 10 + const data = await api.rumRouter.GetEventMetricsForWorkspace.query({ 11 + event: event, 12 + }); 13 + console.log(data); 14 + return ( 15 + <Card> 16 + <p className="text-tremor-default text-tremor-content dark:text-dark-tremor-content"> 17 + {event} 18 + </p> 19 + <p className="text-tremor-content-strong dark:text-dark-tremor-content-strong text-3xl font-semibold"> 20 + {data.median} 21 + </p> 22 + </Card> 23 + ); 24 + };
+20
apps/web/src/app/app/[workspaceSlug]/(dashboard)/rum/layout.tsx
··· 1 + import * as React from "react"; 2 + 3 + import { Header } from "@/components/dashboard/header"; 4 + import AppPageLayout from "@/components/layout/app-page-layout"; 5 + 6 + export default async function Layout({ 7 + children, 8 + }: { 9 + children: React.ReactNode; 10 + }) { 11 + return ( 12 + <AppPageLayout withHelpCallout> 13 + <Header 14 + title="Real User Monitoring" 15 + description="Get speed insights for your application." 16 + /> 17 + {children} 18 + </AppPageLayout> 19 + ); 20 + }
+11
apps/web/src/app/app/[workspaceSlug]/(dashboard)/rum/loading.tsx
··· 1 + import { DataTableSkeleton } from "@/components/data-table/data-table-skeleton"; 2 + import { DataTableToolbarSkeleton } from "@/components/data-table/data-table-toolbar-skeleton"; 3 + 4 + export default function Loading() { 5 + return ( 6 + <div className="space-y-4"> 7 + <DataTableToolbarSkeleton /> 8 + <DataTableSkeleton /> 9 + </div> 10 + ); 11 + }
+28
apps/web/src/app/app/[workspaceSlug]/(dashboard)/rum/page.tsx
··· 1 + import * as React from "react"; 2 + import { notFound } from "next/navigation"; 3 + 4 + import { api } from "@/trpc/server"; 5 + import { RUMMetricCard } from "./(overview)/_components/MetricCard"; 6 + 7 + export const dynamic = "force-dynamic"; 8 + 9 + export default async function RUMPage() { 10 + const workspace = await api.workspace.getWorkspace.query(); 11 + 12 + if (!workspace) { 13 + return notFound(); 14 + } 15 + if (workspace.dsn === null) { 16 + return <>The feature is currently in beta and will be released soon.</>; 17 + } 18 + return ( 19 + <div className="grid grid-cols-1 gap-2 md:grid-cols-4"> 20 + <RUMMetricCard event="CLS" /> 21 + <RUMMetricCard event="FCP" /> 22 + <RUMMetricCard event="FID" /> 23 + <RUMMetricCard event="INP" /> 24 + <RUMMetricCard event="LCP" /> 25 + <RUMMetricCard event="TTFB" /> 26 + </div> 27 + ); 28 + }
+2 -2
apps/web/src/components/data-table/monitor/columns.tsx
··· 70 70 if (!Array.isArray(value)) return true; 71 71 // REMINDER: if one value is found, return true 72 72 // we could consider restricting it to all the values have to be found 73 - return value.some( 74 - (item) => row.original.tags?.some((tag) => tag.name === item), 73 + return value.some((item) => 74 + row.original.tags?.some((tag) => tag.name === item), 75 75 ); 76 76 }, 77 77 },
+2 -2
apps/web/src/components/status-update/events.tsx
··· 32 32 open || !collabsible 33 33 ? sortedArray 34 34 : sortedArray.length > 0 35 - ? [sortedArray[0]] 36 - : []; 35 + ? [sortedArray[0]] 36 + : []; 37 37 // 38 38 39 39 return (
+8
apps/web/src/config/pages.ts
··· 177 177 children: notificationsPagesConfig, 178 178 }, 179 179 { 180 + title: "Real User Monitoring", 181 + description: "Where you can see all the notifications.", 182 + href: "/rum", 183 + icon: "bell", 184 + segment: "rum", 185 + children: notificationsPagesConfig, 186 + }, 187 + { 180 188 title: "Settings", 181 189 description: "Your workspace settings", 182 190 href: "/settings/general",
+6
apps/web/src/env.ts
··· 22 22 GCP_PRIVATE_KEY: z.string(), 23 23 CRON_SECRET: z.string(), 24 24 EXTERNAL_API_URL: z.string().url(), 25 + CLICKHOUSE_URL: z.string(), 26 + CLICKHOUSE_USERNAME: z.string(), 27 + CLICKHOUSE_PASSWORD: z.string(), 25 28 }, 26 29 client: { 27 30 NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: z.string().min(1), ··· 62 65 GCP_PRIVATE_KEY: process.env.GCP_PRIVATE_KEY, 63 66 CRON_SECRET: process.env.CRON_SECRET, 64 67 EXTERNAL_API_URL: process.env.EXTERNAL_API_URL, 68 + CLICKHOUSE_URL: process.env.CLICKHOUSE_URL, 69 + CLICKHOUSE_USERNAME: process.env.CLICKHOUSE_USERNAME, 70 + CLICKHOUSE_PASSWORD: process.env.CLICKHOUSE_PASSWORD, 65 71 }, 66 72 skipValidation: true, 67 73 });
+1 -1
apps/web/src/trpc/shared.ts
··· 10 10 return `http://localhost:3000`; 11 11 }; 12 12 13 - const lambdas = ["clerkRouter", "stripeRouter"]; 13 + const lambdas = ["clerkRouter", "stripeRouter", "rumRouter"]; 14 14 15 15 export const endingLink = (opts?: { 16 16 headers?: HTTPHeaders | (() => HTTPHeaders);
+4 -4
package.json
··· 11 11 "test": "turbo run test" 12 12 }, 13 13 "devDependencies": { 14 - "@ianvs/prettier-plugin-sort-imports": "4.1.0", 14 + "@ianvs/prettier-plugin-sort-imports": "4.2.1", 15 15 "@openstatus/eslint-config": "workspace:*", 16 16 "@turbo/gen": "1.10.12", 17 17 "eslint": "8.50.0", 18 - "prettier": "3.0.3", 19 - "prettier-plugin-tailwindcss": "0.5.4", 18 + "prettier": "3.2.5", 19 + "prettier-plugin-tailwindcss": "0.5.14", 20 20 "turbo": "1.10.12", 21 21 "typescript": "5.4.5" 22 22 }, 23 - "packageManager": "pnpm@9.0.5", 23 + "packageManager": "pnpm@9.0.6", 24 24 "name": "openstatus", 25 25 "workspaces": [ 26 26 "apps/*",
+6 -4
packages/api/package.json
··· 17 17 "@t3-oss/env-core": "0.7.0", 18 18 "@trpc/client": "10.45.1", 19 19 "@trpc/server": "10.45.1", 20 + "nanoid": "5.0.7", 21 + "nanoid-dictionary": "5.0.0-beta.1", 22 + "next": "14.2.1", 20 23 "random-word-slugs": "0.1.7", 21 24 "stripe": "13.8.0", 22 25 "superjson": "1.13.3", 23 - "zod": "3.22.4", 24 - "next": "14.2.1" 26 + "zod": "3.22.4" 25 27 }, 26 28 "devDependencies": { 27 29 "@openstatus/tsconfig": "workspace:*", 28 - "typescript": "5.4.5", 29 - "bun-types": "1.0.8" 30 + "bun-types": "1.0.8", 31 + "typescript": "5.4.5" 30 32 }, 31 33 "keywords": [], 32 34 "author": "",
+2 -2
packages/api/src/lambda.ts
··· 1 1 import { clerkRouter } from "./router/clerk/webhook"; 2 + import { rumRouter } from "./router/rum"; 2 3 import { stripeRouter } from "./router/stripe"; 3 4 import { createTRPCRouter } from "./trpc"; 4 5 ··· 6 7 export const lambdaRouter = createTRPCRouter({ 7 8 clerkRouter: clerkRouter, 8 9 stripeRouter: stripeRouter, 9 - // TODO: Add open api router 10 - // See trpc-openapi 10 + rumRouter: rumRouter, 11 11 }); 12 12 13 13 export { stripe } from "./router/stripe/shared";
+7 -3
packages/api/src/router/clerk/webhook.ts
··· 1 - import { generateSlug } from "random-word-slugs"; 1 + import { customAlphabet } from "nanoid"; 2 + import { alphanumeric } from "nanoid-dictionary"; 3 + import * as randomWordSlugs from "random-word-slugs"; 2 4 import * as z from "zod"; 3 5 4 6 import { analytics, trackAnalytics } from "@openstatus/analytics"; ··· 40 42 let slug: string | undefined = undefined; 41 43 42 44 while (!slug) { 43 - slug = generateSlug(2); 45 + slug = randomWordSlugs.generateSlug(2); 44 46 const slugAlreadyExists = await opts.ctx.db 45 47 .select() 46 48 .from(workspace) ··· 51 53 slug = undefined; 52 54 } 53 55 } 56 + const lowercaseRandomString = customAlphabet(alphanumeric, 10); 54 57 58 + const dsn = `os_rum_${lowercaseRandomString}`; 55 59 const workspaceResult = await opts.ctx.db 56 60 .insert(workspace) 57 - .values({ slug, name: "" }) 61 + .values({ slug, name: "", dsn }) 58 62 .returning({ id: workspace.id }) 59 63 .get(); 60 64 await opts.ctx.db
+40
packages/api/src/router/rum/index.ts
··· 1 + import { z } from "zod"; 2 + 3 + import { createTRPCRouter, protectedProcedure } from "../../trpc"; 4 + 5 + const event = z.enum(["CLS", "FCP", "FID", "INP", "LCP", "TTFB"]); 6 + 7 + export const rumRouter = createTRPCRouter({ 8 + GetEventMetricsForWorkspace: protectedProcedure 9 + .input( 10 + z.object({ 11 + event: event, 12 + }), 13 + ) 14 + .query(async (opts) => { 15 + try { 16 + const data = await opts.ctx.clickhouseClient.query({ 17 + query: `select 18 + event_name, 19 + quantile(0.5)(value) as median 20 + from 21 + cwv 22 + where 23 + dsn = '${opts.ctx.workspace.dsn}' 24 + and event_name = '${opts.input.event}' 25 + group by 26 + event_name 27 + `, 28 + format: "JSONEachRow", 29 + }); 30 + const result = await data.json(); 31 + const schema = z.array( 32 + z.object({ event_name: z.string(), median: z.number() }), 33 + ); 34 + return schema.parse(result)[0]; 35 + } catch (e) { 36 + console.error(e); 37 + throw e; 38 + } 39 + }), 40 + });
+2 -1
packages/api/src/trpc.ts
··· 8 8 import superjson from "superjson"; 9 9 import { ZodError } from "zod"; 10 10 11 - import { db, eq, schema } from "@openstatus/db"; 11 + import { clickhouseClient, db, eq, schema } from "@openstatus/db"; 12 12 import type { User, Workspace } from "@openstatus/db/src/schema"; 13 13 14 14 /** ··· 40 40 return { 41 41 ...opts, 42 42 db, 43 + clickhouseClient, 43 44 }; 44 45 }; 45 46
+6
packages/db/env.mjs
··· 5 5 server: { 6 6 DATABASE_URL: z.string().min(1), 7 7 DATABASE_AUTH_TOKEN: z.string().min(1), 8 + CLICKHOUSE_URL: z.string(), 9 + CLICKHOUSE_USERNAME: z.string(), 10 + CLICKHOUSE_PASSWORD: z.string(), 8 11 }, 9 12 runtimeEnv: { 10 13 DATABASE_URL: ··· 13 16 ? "http://127.0.0.1:8080" 14 17 : process.env.DATABASE_URL, 15 18 DATABASE_AUTH_TOKEN: process.env.DATABASE_AUTH_TOKEN, 19 + CLICKHOUSE_URL: process.env.CLICKHOUSE_URL, 20 + CLICKHOUSE_USERNAME: process.env.CLICKHOUSE_USERNAME, 21 + CLICKHOUSE_PASSWORD: process.env.CLICKHOUSE_PASSWORD, 16 22 }, 17 23 skipValidation: true, 18 24 });
+3 -2
packages/db/package.json
··· 12 12 "dev": "turso dev --db-file openstatus.db" 13 13 }, 14 14 "dependencies": { 15 + "@clickhouse/client-web": "1.0.1", 15 16 "@libsql/client": "0.6.0", 16 17 "@t3-oss/env-core": "0.7.0", 17 18 "dotenv": "16.3.1", 18 - "drizzle-orm": "0.30.7", 19 + "drizzle-orm": "0.30.9", 19 20 "drizzle-zod": "0.5.1", 20 21 "zod": "3.22.4" 21 22 }, ··· 25 26 "@types/node": "20.8.0", 26 27 "better-sqlite3": "9.4.1", 27 28 "bufferutil": "4.0.7", 28 - "drizzle-kit": "0.20.14", 29 + "drizzle-kit": "0.20.17", 29 30 "encoding": "0.1.13", 30 31 "typescript": "5.4.5", 31 32 "utf-8-validate": "6.0.3"
+12 -10
packages/db/src/clickhouse/client.ts
··· 1 - // import { createClient } from "@clickhouse/client-web"; 1 + import { createClient } from "@clickhouse/client-web"; 2 2 3 - // import { env } from "../../env.mjs"; 3 + import { env } from "../../env.mjs"; 4 4 5 - // const clickhouseClient = createClient({ 6 - // url: env.CLICKHOUSE_URL, 7 - // username: env.CLICKHOUSE_USERNAME, 8 - // password: env.CLICKHOUSE_PASSWORD, 9 - // database: "default", 10 - // /* configuration */ 11 - // }); 5 + // This client can only be used in node.js environment 12 6 13 - // export { clickhouseClient }; 7 + const clickhouseClient = createClient({ 8 + host: env.CLICKHOUSE_URL, 9 + username: env.CLICKHOUSE_USERNAME, 10 + password: env.CLICKHOUSE_PASSWORD, 11 + database: "default", 12 + /* configuration */ 13 + }); 14 + 15 + export { clickhouseClient };
+1 -1
packages/db/src/index.ts
··· 1 1 export * as schema from "./schema"; 2 2 export * from "drizzle-orm"; 3 3 export * from "./db"; 4 - // export * from "./clickhouse/client"; 4 + export * from "./clickhouse/client";
+2 -2
packages/tracker/src/tracker.ts
··· 162 162 const status = incidents.length 163 163 ? Status.Incident 164 164 : isMissingData 165 - ? Status.Unknown 166 - : this.calculateUptimeStatus([props]); 165 + ? Status.Unknown 166 + : this.calculateUptimeStatus([props]); 167 167 168 168 const variant = statusDetails[status].variant; 169 169 const label = statusDetails[status].short;
+359 -147
pnpm-lock.yaml
··· 9 9 .: 10 10 devDependencies: 11 11 '@ianvs/prettier-plugin-sort-imports': 12 - specifier: 4.1.0 13 - version: 4.1.0(prettier@3.0.3) 12 + specifier: 4.2.1 13 + version: 4.2.1(prettier@3.2.5) 14 14 '@openstatus/eslint-config': 15 15 specifier: workspace:* 16 16 version: link:packages/config/eslint ··· 21 21 specifier: 8.50.0 22 22 version: 8.50.0 23 23 prettier: 24 - specifier: 3.0.3 25 - version: 3.0.3 24 + specifier: 3.2.5 25 + version: 3.2.5 26 26 prettier-plugin-tailwindcss: 27 - specifier: 0.5.4 28 - version: 0.5.4(@ianvs/prettier-plugin-sort-imports@4.1.0(prettier@3.0.3))(prettier@3.0.3) 27 + specifier: 0.5.14 28 + version: 0.5.14(@ianvs/prettier-plugin-sort-imports@4.2.1(prettier@3.2.5))(prettier@3.2.5) 29 29 turbo: 30 30 specifier: 1.10.12 31 31 version: 1.10.12 ··· 229 229 dependencies: 230 230 '@clerk/nextjs': 231 231 specifier: 4.29.9 232 - version: 4.29.9(next@14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 232 + version: 4.29.9(next@14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 233 233 '@google-cloud/tasks': 234 234 specifier: 5.0.0 235 235 version: 5.0.0(encoding@0.1.13) ··· 256 256 version: link:../../packages/emails 257 257 '@openstatus/next-monitoring': 258 258 specifier: 0.0.2 259 - version: 0.0.2(next@14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) 259 + version: 0.0.2(next@14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) 260 260 '@openstatus/notification-discord': 261 261 specifier: workspace:* 262 262 version: link:../../packages/notifications/discord ··· 292 292 version: 7.100.1 293 293 '@sentry/nextjs': 294 294 specifier: 7.100.1 295 - version: 7.100.1(encoding@0.1.13)(next@14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) 295 + version: 7.100.1(encoding@0.1.13)(next@14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) 296 296 '@stripe/stripe-js': 297 297 specifier: 2.1.6 298 298 version: 2.1.6 ··· 316 316 version: 10.45.1(@trpc/server@10.45.1) 317 317 '@trpc/next': 318 318 specifier: 10.45.1 319 - version: 10.45.1(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@trpc/client@10.45.1(@trpc/server@10.45.1))(@trpc/react-query@10.45.1(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@trpc/client@10.45.1(@trpc/server@10.45.1))(@trpc/server@10.45.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@trpc/server@10.45.1)(next@14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 319 + version: 10.45.1(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@trpc/client@10.45.1(@trpc/server@10.45.1))(@trpc/react-query@10.45.1(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@trpc/client@10.45.1(@trpc/server@10.45.1))(@trpc/server@10.45.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@trpc/server@10.45.1)(next@14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 320 320 '@trpc/react-query': 321 321 specifier: 10.45.1 322 322 version: 10.45.1(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@trpc/client@10.45.1(@trpc/server@10.45.1))(@trpc/server@10.45.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) ··· 370 370 version: 5.0.1 371 371 next: 372 372 specifier: 14.2.1 373 - version: 14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 373 + version: 14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 374 374 next-contentlayer: 375 375 specifier: 0.3.4 376 - version: 0.3.4(contentlayer@0.3.4(esbuild@0.19.12))(esbuild@0.19.12)(next@14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 376 + version: 0.3.4(contentlayer@0.3.4(esbuild@0.19.12))(esbuild@0.19.12)(next@14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 377 377 next-plausible: 378 378 specifier: 3.12.0 379 - version: 3.12.0(next@14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 379 + version: 3.12.0(next@14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 380 380 next-themes: 381 381 specifier: 0.2.1 382 - version: 0.2.1(next@14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 382 + version: 0.2.1(next@14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 383 383 react: 384 384 specifier: 18.2.0 385 385 version: 18.2.0 ··· 513 513 dependencies: 514 514 '@clerk/nextjs': 515 515 specifier: 4.29.9 516 - version: 4.29.9(next@14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 516 + version: 4.29.9(next@14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 517 517 '@openstatus/analytics': 518 518 specifier: workspace:* 519 519 version: link:../analytics ··· 541 541 '@trpc/server': 542 542 specifier: 10.45.1 543 543 version: 10.45.1 544 + nanoid: 545 + specifier: 5.0.7 546 + version: 5.0.7 547 + nanoid-dictionary: 548 + specifier: 5.0.0-beta.1 549 + version: 5.0.0-beta.1 544 550 next: 545 551 specifier: 14.2.1 546 - version: 14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 552 + version: 14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 547 553 random-word-slugs: 548 554 specifier: 0.1.7 549 555 version: 0.1.7 ··· 618 624 619 625 packages/db: 620 626 dependencies: 627 + '@clickhouse/client-web': 628 + specifier: 1.0.1 629 + version: 1.0.1 621 630 '@libsql/client': 622 631 specifier: 0.6.0 623 632 version: 0.6.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) ··· 628 637 specifier: 16.3.1 629 638 version: 16.3.1 630 639 drizzle-orm: 631 - specifier: 0.30.7 632 - version: 0.30.7(@cloudflare/workers-types@4.20240405.0)(@libsql/client@0.6.0(bufferutil@4.0.7)(utf-8-validate@6.0.3))(@opentelemetry/api@1.4.1)(@types/react@18.2.64)(better-sqlite3@9.4.1)(bun-types@1.0.11)(react@18.2.0) 640 + specifier: 0.30.9 641 + version: 0.30.9(@cloudflare/workers-types@4.20240405.0)(@libsql/client@0.6.0(bufferutil@4.0.7)(utf-8-validate@6.0.3))(@opentelemetry/api@1.4.1)(@types/react@18.2.64)(better-sqlite3@9.4.1)(bun-types@1.0.11)(react@18.2.0) 633 642 drizzle-zod: 634 643 specifier: 0.5.1 635 - version: 0.5.1(drizzle-orm@0.30.7(@cloudflare/workers-types@4.20240405.0)(@libsql/client@0.6.0(bufferutil@4.0.7)(utf-8-validate@6.0.3))(@opentelemetry/api@1.4.1)(@types/react@18.2.64)(better-sqlite3@9.4.1)(bun-types@1.0.11)(react@18.2.0))(zod@3.22.4) 644 + version: 0.5.1(drizzle-orm@0.30.9(@cloudflare/workers-types@4.20240405.0)(@libsql/client@0.6.0(bufferutil@4.0.7)(utf-8-validate@6.0.3))(@opentelemetry/api@1.4.1)(@types/react@18.2.64)(better-sqlite3@9.4.1)(bun-types@1.0.11)(react@18.2.0))(zod@3.22.4) 636 645 zod: 637 646 specifier: 3.22.4 638 647 version: 3.22.4 ··· 653 662 specifier: 4.0.7 654 663 version: 4.0.7 655 664 drizzle-kit: 656 - specifier: 0.20.14 657 - version: 0.20.14 665 + specifier: 0.20.17 666 + version: 0.20.17 658 667 encoding: 659 668 specifier: 0.1.13 660 669 version: 0.1.13 ··· 731 740 version: 18.2.21 732 741 next: 733 742 specifier: 14.2.1 734 - version: 14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 743 + version: 14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 735 744 typescript: 736 745 specifier: 5.4.5 737 746 version: 5.4.5 ··· 777 786 version: 18.2.21 778 787 next: 779 788 specifier: 14.2.1 780 - version: 14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 789 + version: 14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 781 790 typescript: 782 791 specifier: 5.4.5 783 792 version: 5.4.5 ··· 802 811 version: 18.2.21 803 812 next: 804 813 specifier: 14.2.1 805 - version: 14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 814 + version: 14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 806 815 typescript: 807 816 specifier: 5.4.5 808 817 version: 5.4.5 ··· 839 848 version: 18.2.21 840 849 next: 841 850 specifier: 14.2.1 842 - version: 14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 851 + version: 14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 843 852 typescript: 844 853 specifier: 5.4.5 845 854 version: 5.4.5 ··· 1013 1022 version: 3.3.0 1014 1023 next-themes: 1015 1024 specifier: 0.2.1 1016 - version: 0.2.1(next@14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 1025 + version: 0.2.1(next@14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 1017 1026 react: 1018 1027 specifier: 18.2.0 1019 1028 version: 18.2.0 ··· 1306 1315 resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} 1307 1316 engines: {node: '>=6.9.0'} 1308 1317 1309 - '@babel/compat-data@7.23.2': 1310 - resolution: {integrity: sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==} 1318 + '@babel/code-frame@7.24.2': 1319 + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} 1320 + engines: {node: '>=6.9.0'} 1321 + 1322 + '@babel/compat-data@7.24.4': 1323 + resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} 1311 1324 engines: {node: '>=6.9.0'} 1312 1325 1313 - '@babel/core@7.23.2': 1314 - resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} 1326 + '@babel/core@7.24.4': 1327 + resolution: {integrity: sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==} 1315 1328 engines: {node: '>=6.9.0'} 1316 1329 1317 - '@babel/generator@7.23.0': 1318 - resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} 1330 + '@babel/generator@7.24.4': 1331 + resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} 1319 1332 engines: {node: '>=6.9.0'} 1320 1333 1321 - '@babel/helper-compilation-targets@7.22.15': 1322 - resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} 1334 + '@babel/helper-compilation-targets@7.23.6': 1335 + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} 1323 1336 engines: {node: '>=6.9.0'} 1324 1337 1325 1338 '@babel/helper-environment-visitor@7.22.20': ··· 1338 1351 resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} 1339 1352 engines: {node: '>=6.9.0'} 1340 1353 1341 - '@babel/helper-module-transforms@7.23.0': 1342 - resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} 1354 + '@babel/helper-module-transforms@7.23.3': 1355 + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} 1343 1356 engines: {node: '>=6.9.0'} 1344 1357 peerDependencies: 1345 1358 '@babel/core': ^7.0.0 ··· 1352 1365 resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} 1353 1366 engines: {node: '>=6.9.0'} 1354 1367 1355 - '@babel/helper-string-parser@7.22.5': 1356 - resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} 1368 + '@babel/helper-string-parser@7.24.1': 1369 + resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} 1357 1370 engines: {node: '>=6.9.0'} 1358 1371 1359 1372 '@babel/helper-validator-identifier@7.22.20': 1360 1373 resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} 1361 1374 engines: {node: '>=6.9.0'} 1362 1375 1363 - '@babel/helper-validator-option@7.22.15': 1364 - resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} 1376 + '@babel/helper-validator-option@7.23.5': 1377 + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} 1365 1378 engines: {node: '>=6.9.0'} 1366 1379 1367 - '@babel/helpers@7.23.2': 1368 - resolution: {integrity: sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==} 1380 + '@babel/helpers@7.24.4': 1381 + resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==} 1369 1382 engines: {node: '>=6.9.0'} 1370 1383 1371 1384 '@babel/highlight@7.22.20': 1372 1385 resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} 1373 1386 engines: {node: '>=6.9.0'} 1374 1387 1375 - '@babel/parser@7.23.0': 1376 - resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} 1388 + '@babel/highlight@7.24.2': 1389 + resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} 1390 + engines: {node: '>=6.9.0'} 1391 + 1392 + '@babel/parser@7.24.4': 1393 + resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} 1377 1394 engines: {node: '>=6.0.0'} 1378 1395 hasBin: true 1379 1396 ··· 1389 1406 resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} 1390 1407 engines: {node: '>=6.9.0'} 1391 1408 1392 - '@babel/traverse@7.23.2': 1393 - resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} 1409 + '@babel/template@7.24.0': 1410 + resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} 1411 + engines: {node: '>=6.9.0'} 1412 + 1413 + '@babel/traverse@7.24.1': 1414 + resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} 1394 1415 engines: {node: '>=6.9.0'} 1395 1416 1396 - '@babel/types@7.23.0': 1397 - resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} 1417 + '@babel/types@7.24.0': 1418 + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} 1398 1419 engines: {node: '>=6.9.0'} 1399 1420 1400 1421 '@biomejs/biome@1.6.3': ··· 1490 1511 '@clickhouse/client-common@0.3.0': 1491 1512 resolution: {integrity: sha512-LcfJfyMglUTbGuDN/s6e/R3LwtbQXpv6juIJID+tVXxcGzPijhDB+XXQpqbprunqnm48vHmLfCB6/68Pgp5qvg==} 1492 1513 1514 + '@clickhouse/client-common@1.0.1': 1515 + resolution: {integrity: sha512-3L6e0foP6VOktScoi6XWMjJyOpKCWgLUYgPVxP2c7gm6Kotq+iRmmmXtXTSg7B7uozcLZycTtPfIw2d80SYsYw==} 1516 + 1493 1517 '@clickhouse/client-web@0.3.0': 1494 1518 resolution: {integrity: sha512-zx/oJ2M+YIMTiTNdRAACpJGKqlJ47LE9Y4DzyZgki37q3QYoCCXOzGk5Jpq9MFFHwYW+9OMx9RIk80VvuSx4mw==} 1519 + 1520 + '@clickhouse/client-web@1.0.1': 1521 + resolution: {integrity: sha512-gKmfOxJ3+6kFtlmQaBd0sOz8t8lAiJcBfR9sx1Cmk4M38T5xxza7ZWhyGs3O6I7nJkU60RuM1MY8Woct6vMtRg==} 1495 1522 1496 1523 '@cloudflare/kv-asset-handler@0.3.1': 1497 1524 resolution: {integrity: sha512-lKN2XCfKCmpKb86a1tl4GIwsJYDy9TGuwjhDELLmpKygQhw8X2xR4dusgpC5Tg7q1pB96Eb0rBo81kxSILQMwA==} ··· 1605 1632 '@cspotcode/source-map-support@0.8.1': 1606 1633 resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 1607 1634 engines: {node: '>=12'} 1608 - 1609 - '@drizzle-team/studio@0.0.39': 1610 - resolution: {integrity: sha512-c5Hkm7MmQC2n5qAsKShjQrHoqlfGslB8+qWzsGGZ+2dHMRTNG60UuzalF0h0rvBax5uzPXuGkYLGaQ+TUX3yMw==} 1611 1635 1612 1636 '@effect-ts/core@0.60.5': 1613 1637 resolution: {integrity: sha512-qi1WrtJA90XLMnj2hnUszW9Sx4dXP03ZJtCc5DiUBIOhF4Vw7plfb65/bdBySPoC9s7zy995TdUX1XBSxUkl5w==} ··· 2281 2305 peerDependencies: 2282 2306 tailwindcss: ^3.0 2283 2307 2308 + '@hono/node-server@1.11.1': 2309 + resolution: {integrity: sha512-GW1Iomhmm1o4Z+X57xGby8A35Cu9UZLL7pSMdqDBkD99U5cywff8F+8hLk5aBTzNubnsFAvWQ/fZjNwPsEn9lA==} 2310 + engines: {node: '>=18.14.1'} 2311 + 2284 2312 '@hono/sentry@1.0.0': 2285 2313 resolution: {integrity: sha512-GbPxgpGuasM2zRCSaA77MPWu4KDcuk/EMf7JJykjCvnOTbjmtr7FovNxsvg7xlXCIjZDgLmqBaoJMi3AxbeIAA==} 2286 2314 peerDependencies: ··· 2321 2349 '@humanwhocodes/object-schema@2.0.1': 2322 2350 resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} 2323 2351 2324 - '@ianvs/prettier-plugin-sort-imports@4.1.0': 2325 - resolution: {integrity: sha512-IAXeTLU24k6mRPa6mFbW1qZJ/j0m3OeH44wyijWyr+YqqdNtBnfHxAntOAATS9iDfrT01NesKGsdzqnXdDQa/A==} 2352 + '@ianvs/prettier-plugin-sort-imports@4.2.1': 2353 + resolution: {integrity: sha512-NKN1LVFWUDGDGr3vt+6Ey3qPeN/163uR1pOPAlkWpgvAqgxQ6kSdUf1F0it8aHUtKRUzEGcK38Wxd07O61d7+Q==} 2326 2354 peerDependencies: 2327 - '@vue/compiler-sfc': '>=3.0.0' 2355 + '@vue/compiler-sfc': 2.7.x || 3.x 2328 2356 prettier: 2 || 3 2329 2357 peerDependenciesMeta: 2330 2358 '@vue/compiler-sfc': ··· 2357 2385 resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 2358 2386 engines: {node: '>=6.0.0'} 2359 2387 2388 + '@jridgewell/gen-mapping@0.3.5': 2389 + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} 2390 + engines: {node: '>=6.0.0'} 2391 + 2360 2392 '@jridgewell/resolve-uri@3.1.1': 2361 2393 resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 2362 2394 engines: {node: '>=6.0.0'} ··· 2365 2397 resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 2366 2398 engines: {node: '>=6.0.0'} 2367 2399 2400 + '@jridgewell/set-array@1.2.1': 2401 + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 2402 + engines: {node: '>=6.0.0'} 2403 + 2368 2404 '@jridgewell/sourcemap-codec@1.4.15': 2369 2405 resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 2370 2406 2371 2407 '@jridgewell/trace-mapping@0.3.20': 2372 2408 resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} 2409 + 2410 + '@jridgewell/trace-mapping@0.3.25': 2411 + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 2373 2412 2374 2413 '@jridgewell/trace-mapping@0.3.9': 2375 2414 resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} ··· 4477 4516 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 4478 4517 hasBin: true 4479 4518 4519 + browserslist@4.23.0: 4520 + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} 4521 + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 4522 + hasBin: true 4523 + 4480 4524 buffer-equal-constant-time@1.0.1: 4481 4525 resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} 4482 4526 ··· 4551 4595 4552 4596 caniuse-lite@1.0.30001585: 4553 4597 resolution: {integrity: sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==} 4598 + 4599 + caniuse-lite@1.0.30001612: 4600 + resolution: {integrity: sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==} 4554 4601 4555 4602 capnp-ts@0.7.0: 4556 4603 resolution: {integrity: sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==} ··· 5043 5090 resolution: {integrity: sha512-vyJTp8+mC+G+5dfgsY+r3ckxlz+QMX40VjPQsZc5gxVAxLmi64TBoVkP54A/pRAXMXsbu2GMMBrZPxNv23waMg==} 5044 5091 engines: {node: '>=0.4.0'} 5045 5092 5046 - drizzle-kit@0.20.14: 5047 - resolution: {integrity: sha512-0fHv3YIEaUcSVPSGyaaBfOi9bmpajjhbJNdPsRMIUvYdLVxBu9eGjH8mRc3Qk7HVmEidFc/lhG1YyJhoXrn5yA==} 5093 + drizzle-kit@0.20.17: 5094 + resolution: {integrity: sha512-mLVDS4nXmO09wFVlzGrdshWnAL+U9eQGC5zRs6hTN6Q9arwQGWU2XnZ17I8BM8Quau8CQRx3Ms6VPgRWJFVp7Q==} 5048 5095 hasBin: true 5049 5096 5050 5097 drizzle-orm@0.30.7: ··· 5127 5174 sqlite3: 5128 5175 optional: true 5129 5176 5177 + drizzle-orm@0.30.9: 5178 + resolution: {integrity: sha512-VOiCFsexErmgqvNCOmbzmqDCZzZsHoz6SkWAjTFxsTr1AllKDbDJ2+GgedLXsXMDgpg/ljDG1zItIFeZtiO2LA==} 5179 + peerDependencies: 5180 + '@aws-sdk/client-rds-data': '>=3' 5181 + '@cloudflare/workers-types': '>=3' 5182 + '@electric-sql/pglite': '>=0.1.1' 5183 + '@libsql/client': '*' 5184 + '@neondatabase/serverless': '>=0.1' 5185 + '@op-engineering/op-sqlite': '>=2' 5186 + '@opentelemetry/api': ^1.4.1 5187 + '@planetscale/database': '>=1' 5188 + '@types/better-sqlite3': '*' 5189 + '@types/pg': '*' 5190 + '@types/react': '>=18' 5191 + '@types/sql.js': '*' 5192 + '@vercel/postgres': '>=0.8.0' 5193 + '@xata.io/client': '*' 5194 + better-sqlite3: '>=7' 5195 + bun-types: '*' 5196 + expo-sqlite: '>=13.2.0' 5197 + knex: '*' 5198 + kysely: '*' 5199 + mysql2: '>=2' 5200 + pg: '>=8' 5201 + postgres: '>=3' 5202 + react: '>=18' 5203 + sql.js: '>=1' 5204 + sqlite3: '>=5' 5205 + peerDependenciesMeta: 5206 + '@aws-sdk/client-rds-data': 5207 + optional: true 5208 + '@cloudflare/workers-types': 5209 + optional: true 5210 + '@electric-sql/pglite': 5211 + optional: true 5212 + '@libsql/client': 5213 + optional: true 5214 + '@neondatabase/serverless': 5215 + optional: true 5216 + '@op-engineering/op-sqlite': 5217 + optional: true 5218 + '@opentelemetry/api': 5219 + optional: true 5220 + '@planetscale/database': 5221 + optional: true 5222 + '@types/better-sqlite3': 5223 + optional: true 5224 + '@types/pg': 5225 + optional: true 5226 + '@types/react': 5227 + optional: true 5228 + '@types/sql.js': 5229 + optional: true 5230 + '@vercel/postgres': 5231 + optional: true 5232 + '@xata.io/client': 5233 + optional: true 5234 + better-sqlite3: 5235 + optional: true 5236 + bun-types: 5237 + optional: true 5238 + expo-sqlite: 5239 + optional: true 5240 + knex: 5241 + optional: true 5242 + kysely: 5243 + optional: true 5244 + mysql2: 5245 + optional: true 5246 + pg: 5247 + optional: true 5248 + postgres: 5249 + optional: true 5250 + react: 5251 + optional: true 5252 + sql.js: 5253 + optional: true 5254 + sqlite3: 5255 + optional: true 5256 + 5130 5257 drizzle-zod@0.5.1: 5131 5258 resolution: {integrity: sha512-C/8bvzUH/zSnVfwdSibOgFjLhtDtbKYmkbPbUCq46QZyZCH6kODIMSOgZ8R7rVjoI+tCj3k06MRJMDqsIeoS4A==} 5132 5259 peerDependencies: ··· 5149 5276 5150 5277 electron-to-chromium@1.4.563: 5151 5278 resolution: {integrity: sha512-dg5gj5qOgfZNkPNeyKBZQAQitIQ/xwfIDmEQJHCbXaD9ebTZxwJXUsDYcBlAvZGZLi+/354l35J1wkmP6CqYaw==} 5279 + 5280 + electron-to-chromium@1.4.750: 5281 + resolution: {integrity: sha512-9ItEpeu15hW5m8jKdriL+BQrgwDTXEL9pn4SkillWFu73ZNNNQ2BKKLS+ZHv2vC9UkNhosAeyfxOf/5OSeTCPA==} 5152 5282 5153 5283 emitter-component@1.1.2: 5154 5284 resolution: {integrity: sha512-QdXO3nXOzZB4pAjM0n6ZE+R9/+kPpECA/XSELIcc54NeYVnBqIk+4DFiBgK+8QbV3mdvTG6nedl7dTYgO+5wDw==} ··· 6768 6898 mz@2.7.0: 6769 6899 resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 6770 6900 6901 + nanoid-dictionary@5.0.0-beta.1: 6902 + resolution: {integrity: sha512-xBkL9zzkNjzJ/UnmWyiOUDVX/COoi05eS0oU28RYKFFQhdnzO5dTOPbVZ/fCFgIOGr1zNinDHJ68mm/KQfcgcw==} 6903 + 6771 6904 nanoid@3.3.6: 6772 6905 resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 6773 6906 engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} ··· 6780 6913 6781 6914 nanoid@5.0.2: 6782 6915 resolution: {integrity: sha512-2ustYUX1R2rL/Br5B/FMhi8d5/QzvkJ912rBYxskcpu0myTHzSZfTr1LAS2Sm7jxRUObRrSBFoyzwAhL49aVSg==} 6916 + engines: {node: ^18 || >=20} 6917 + hasBin: true 6918 + 6919 + nanoid@5.0.7: 6920 + resolution: {integrity: sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==} 6783 6921 engines: {node: ^18 || >=20} 6784 6922 hasBin: true 6785 6923 ··· 6883 7021 6884 7022 node-releases@2.0.13: 6885 7023 resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} 7024 + 7025 + node-releases@2.0.14: 7026 + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} 6886 7027 6887 7028 nopt@6.0.0: 6888 7029 resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} ··· 7194 7335 resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 7195 7336 engines: {node: '>= 0.8.0'} 7196 7337 7197 - prettier-plugin-tailwindcss@0.5.4: 7198 - resolution: {integrity: sha512-QZzzB1bID6qPsKHTeA9qPo1APmmxfFrA5DD3LQ+vbTmAnY40eJI7t9Q1ocqel2EKMWNPLJqdTDWZj1hKYgqSgg==} 7338 + prettier-plugin-tailwindcss@0.5.14: 7339 + resolution: {integrity: sha512-Puaz+wPUAhFp8Lo9HuciYKM2Y2XExESjeT+9NQoVFXZsPPnc9VYss2SpxdQ6vbatmt8/4+SN0oe0I1cPDABg9Q==} 7199 7340 engines: {node: '>=14.21.3'} 7200 7341 peerDependencies: 7201 7342 '@ianvs/prettier-plugin-sort-imports': '*' 7202 7343 '@prettier/plugin-pug': '*' 7203 7344 '@shopify/prettier-plugin-liquid': '*' 7204 - '@shufo/prettier-plugin-blade': '*' 7205 7345 '@trivago/prettier-plugin-sort-imports': '*' 7346 + '@zackad/prettier-plugin-twig-melody': '*' 7206 7347 prettier: ^3.0 7207 7348 prettier-plugin-astro: '*' 7208 7349 prettier-plugin-css-order: '*' ··· 7211 7352 prettier-plugin-marko: '*' 7212 7353 prettier-plugin-organize-attributes: '*' 7213 7354 prettier-plugin-organize-imports: '*' 7355 + prettier-plugin-sort-imports: '*' 7214 7356 prettier-plugin-style-order: '*' 7215 7357 prettier-plugin-svelte: '*' 7216 - prettier-plugin-twig-melody: '*' 7217 7358 peerDependenciesMeta: 7218 7359 '@ianvs/prettier-plugin-sort-imports': 7219 7360 optional: true 7220 7361 '@prettier/plugin-pug': 7221 7362 optional: true 7222 7363 '@shopify/prettier-plugin-liquid': 7223 - optional: true 7224 - '@shufo/prettier-plugin-blade': 7225 7364 optional: true 7226 7365 '@trivago/prettier-plugin-sort-imports': 7227 7366 optional: true 7367 + '@zackad/prettier-plugin-twig-melody': 7368 + optional: true 7228 7369 prettier-plugin-astro: 7229 7370 optional: true 7230 7371 prettier-plugin-css-order: ··· 7239 7380 optional: true 7240 7381 prettier-plugin-organize-imports: 7241 7382 optional: true 7383 + prettier-plugin-sort-imports: 7384 + optional: true 7242 7385 prettier-plugin-style-order: 7243 7386 optional: true 7244 7387 prettier-plugin-svelte: 7245 - optional: true 7246 - prettier-plugin-twig-melody: 7247 7388 optional: true 7248 7389 7249 - prettier@3.0.3: 7250 - resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} 7390 + prettier@3.2.5: 7391 + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} 7251 7392 engines: {node: '>=14'} 7252 7393 hasBin: true 7253 7394 ··· 9275 9416 '@babel/highlight': 7.22.20 9276 9417 chalk: 2.4.2 9277 9418 9278 - '@babel/compat-data@7.23.2': {} 9419 + '@babel/code-frame@7.24.2': 9420 + dependencies: 9421 + '@babel/highlight': 7.24.2 9422 + picocolors: 1.0.0 9279 9423 9280 - '@babel/core@7.23.2': 9424 + '@babel/compat-data@7.24.4': {} 9425 + 9426 + '@babel/core@7.24.4': 9281 9427 dependencies: 9282 9428 '@ampproject/remapping': 2.2.1 9283 - '@babel/code-frame': 7.22.13 9284 - '@babel/generator': 7.23.0 9285 - '@babel/helper-compilation-targets': 7.22.15 9286 - '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) 9287 - '@babel/helpers': 7.23.2 9288 - '@babel/parser': 7.23.0 9289 - '@babel/template': 7.22.15 9290 - '@babel/traverse': 7.23.2 9291 - '@babel/types': 7.23.0 9429 + '@babel/code-frame': 7.24.2 9430 + '@babel/generator': 7.24.4 9431 + '@babel/helper-compilation-targets': 7.23.6 9432 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) 9433 + '@babel/helpers': 7.24.4 9434 + '@babel/parser': 7.24.4 9435 + '@babel/template': 7.24.0 9436 + '@babel/traverse': 7.24.1 9437 + '@babel/types': 7.24.0 9292 9438 convert-source-map: 2.0.0 9293 9439 debug: 4.3.4 9294 9440 gensync: 1.0.0-beta.2 ··· 9297 9443 transitivePeerDependencies: 9298 9444 - supports-color 9299 9445 9300 - '@babel/generator@7.23.0': 9446 + '@babel/generator@7.24.4': 9301 9447 dependencies: 9302 - '@babel/types': 7.23.0 9303 - '@jridgewell/gen-mapping': 0.3.3 9304 - '@jridgewell/trace-mapping': 0.3.20 9448 + '@babel/types': 7.24.0 9449 + '@jridgewell/gen-mapping': 0.3.5 9450 + '@jridgewell/trace-mapping': 0.3.25 9305 9451 jsesc: 2.5.2 9306 9452 9307 - '@babel/helper-compilation-targets@7.22.15': 9453 + '@babel/helper-compilation-targets@7.23.6': 9308 9454 dependencies: 9309 - '@babel/compat-data': 7.23.2 9310 - '@babel/helper-validator-option': 7.22.15 9311 - browserslist: 4.22.1 9455 + '@babel/compat-data': 7.24.4 9456 + '@babel/helper-validator-option': 7.23.5 9457 + browserslist: 4.23.0 9312 9458 lru-cache: 5.1.1 9313 9459 semver: 6.3.1 9314 9460 ··· 9317 9463 '@babel/helper-function-name@7.23.0': 9318 9464 dependencies: 9319 9465 '@babel/template': 7.22.15 9320 - '@babel/types': 7.23.0 9466 + '@babel/types': 7.24.0 9321 9467 9322 9468 '@babel/helper-hoist-variables@7.22.5': 9323 9469 dependencies: 9324 - '@babel/types': 7.23.0 9470 + '@babel/types': 7.24.0 9325 9471 9326 9472 '@babel/helper-module-imports@7.22.15': 9327 9473 dependencies: 9328 - '@babel/types': 7.23.0 9474 + '@babel/types': 7.24.0 9329 9475 9330 - '@babel/helper-module-transforms@7.23.0(@babel/core@7.23.2)': 9476 + '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4)': 9331 9477 dependencies: 9332 - '@babel/core': 7.23.2 9478 + '@babel/core': 7.24.4 9333 9479 '@babel/helper-environment-visitor': 7.22.20 9334 9480 '@babel/helper-module-imports': 7.22.15 9335 9481 '@babel/helper-simple-access': 7.22.5 ··· 9338 9484 9339 9485 '@babel/helper-simple-access@7.22.5': 9340 9486 dependencies: 9341 - '@babel/types': 7.23.0 9487 + '@babel/types': 7.24.0 9342 9488 9343 9489 '@babel/helper-split-export-declaration@7.22.6': 9344 9490 dependencies: 9345 - '@babel/types': 7.23.0 9491 + '@babel/types': 7.24.0 9346 9492 9347 - '@babel/helper-string-parser@7.22.5': {} 9493 + '@babel/helper-string-parser@7.24.1': {} 9348 9494 9349 9495 '@babel/helper-validator-identifier@7.22.20': {} 9350 9496 9351 - '@babel/helper-validator-option@7.22.15': {} 9497 + '@babel/helper-validator-option@7.23.5': {} 9352 9498 9353 - '@babel/helpers@7.23.2': 9499 + '@babel/helpers@7.24.4': 9354 9500 dependencies: 9355 - '@babel/template': 7.22.15 9356 - '@babel/traverse': 7.23.2 9357 - '@babel/types': 7.23.0 9501 + '@babel/template': 7.24.0 9502 + '@babel/traverse': 7.24.1 9503 + '@babel/types': 7.24.0 9358 9504 transitivePeerDependencies: 9359 9505 - supports-color 9360 9506 ··· 9364 9510 chalk: 2.4.2 9365 9511 js-tokens: 4.0.0 9366 9512 9367 - '@babel/parser@7.23.0': 9513 + '@babel/highlight@7.24.2': 9514 + dependencies: 9515 + '@babel/helper-validator-identifier': 7.22.20 9516 + chalk: 2.4.2 9517 + js-tokens: 4.0.0 9518 + picocolors: 1.0.0 9519 + 9520 + '@babel/parser@7.24.4': 9368 9521 dependencies: 9369 - '@babel/types': 7.23.0 9522 + '@babel/types': 7.24.0 9370 9523 9371 9524 '@babel/runtime-corejs3@7.23.2': 9372 9525 dependencies: ··· 9379 9532 9380 9533 '@babel/template@7.22.15': 9381 9534 dependencies: 9382 - '@babel/code-frame': 7.22.13 9383 - '@babel/parser': 7.23.0 9384 - '@babel/types': 7.23.0 9535 + '@babel/code-frame': 7.24.2 9536 + '@babel/parser': 7.24.4 9537 + '@babel/types': 7.24.0 9385 9538 9386 - '@babel/traverse@7.23.2': 9539 + '@babel/template@7.24.0': 9387 9540 dependencies: 9388 - '@babel/code-frame': 7.22.13 9389 - '@babel/generator': 7.23.0 9541 + '@babel/code-frame': 7.24.2 9542 + '@babel/parser': 7.24.4 9543 + '@babel/types': 7.24.0 9544 + 9545 + '@babel/traverse@7.24.1': 9546 + dependencies: 9547 + '@babel/code-frame': 7.24.2 9548 + '@babel/generator': 7.24.4 9390 9549 '@babel/helper-environment-visitor': 7.22.20 9391 9550 '@babel/helper-function-name': 7.23.0 9392 9551 '@babel/helper-hoist-variables': 7.22.5 9393 9552 '@babel/helper-split-export-declaration': 7.22.6 9394 - '@babel/parser': 7.23.0 9395 - '@babel/types': 7.23.0 9553 + '@babel/parser': 7.24.4 9554 + '@babel/types': 7.24.0 9396 9555 debug: 4.3.4 9397 9556 globals: 11.12.0 9398 9557 transitivePeerDependencies: 9399 9558 - supports-color 9400 9559 9401 - '@babel/types@7.23.0': 9560 + '@babel/types@7.24.0': 9402 9561 dependencies: 9403 - '@babel/helper-string-parser': 7.22.5 9562 + '@babel/helper-string-parser': 7.24.1 9404 9563 '@babel/helper-validator-identifier': 7.22.20 9405 9564 to-fast-properties: 2.0.0 9406 9565 ··· 9478 9637 transitivePeerDependencies: 9479 9638 - react 9480 9639 9481 - '@clerk/nextjs@4.29.9(next@14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': 9640 + '@clerk/nextjs@4.29.9(next@14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': 9482 9641 dependencies: 9483 9642 '@clerk/backend': 0.38.3(react@18.2.0) 9484 9643 '@clerk/clerk-react': 4.30.7(react@18.2.0) 9485 9644 '@clerk/clerk-sdk-node': 4.13.11(react@18.2.0) 9486 9645 '@clerk/shared': 1.3.3(react@18.2.0) 9487 9646 '@clerk/types': 3.62.1 9488 - next: 14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 9647 + next: 14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 9489 9648 path-to-regexp: 6.2.1 9490 9649 react: 18.2.0 9491 9650 react-dom: 18.2.0(react@18.2.0) ··· 9505 9664 9506 9665 '@clickhouse/client-common@0.3.0': {} 9507 9666 9667 + '@clickhouse/client-common@1.0.1': {} 9668 + 9508 9669 '@clickhouse/client-web@0.3.0': 9509 9670 dependencies: 9510 9671 '@clickhouse/client-common': 0.3.0 9672 + 9673 + '@clickhouse/client-web@1.0.1': 9674 + dependencies: 9675 + '@clickhouse/client-common': 1.0.1 9511 9676 9512 9677 '@cloudflare/kv-asset-handler@0.3.1': 9513 9678 dependencies: ··· 9658 9823 '@cspotcode/source-map-support@0.8.1': 9659 9824 dependencies: 9660 9825 '@jridgewell/trace-mapping': 0.3.9 9661 - 9662 - '@drizzle-team/studio@0.0.39': 9663 - dependencies: 9664 - superjson: 2.2.1 9665 9826 9666 9827 '@effect-ts/core@0.60.5': 9667 9828 dependencies: ··· 10085 10246 dependencies: 10086 10247 tailwindcss: 3.3.2(ts-node@10.9.1(@types/node@20.8.0)(typescript@5.4.5)) 10087 10248 10249 + '@hono/node-server@1.11.1': {} 10250 + 10088 10251 '@hono/sentry@1.0.0(hono@4.0.0)': 10089 10252 dependencies: 10090 10253 hono: 4.0.0 ··· 10133 10296 10134 10297 '@humanwhocodes/object-schema@2.0.1': {} 10135 10298 10136 - '@ianvs/prettier-plugin-sort-imports@4.1.0(prettier@3.0.3)': 10299 + '@ianvs/prettier-plugin-sort-imports@4.2.1(prettier@3.2.5)': 10137 10300 dependencies: 10138 - '@babel/core': 7.23.2 10139 - '@babel/generator': 7.23.0 10140 - '@babel/parser': 7.23.0 10141 - '@babel/traverse': 7.23.2 10142 - '@babel/types': 7.23.0 10143 - prettier: 3.0.3 10301 + '@babel/core': 7.24.4 10302 + '@babel/generator': 7.24.4 10303 + '@babel/parser': 7.24.4 10304 + '@babel/traverse': 7.24.1 10305 + '@babel/types': 7.24.0 10306 + prettier: 3.2.5 10144 10307 semver: 7.5.4 10145 10308 transitivePeerDependencies: 10146 10309 - supports-color ··· 10195 10358 '@jridgewell/sourcemap-codec': 1.4.15 10196 10359 '@jridgewell/trace-mapping': 0.3.20 10197 10360 10361 + '@jridgewell/gen-mapping@0.3.5': 10362 + dependencies: 10363 + '@jridgewell/set-array': 1.2.1 10364 + '@jridgewell/sourcemap-codec': 1.4.15 10365 + '@jridgewell/trace-mapping': 0.3.25 10366 + 10198 10367 '@jridgewell/resolve-uri@3.1.1': {} 10199 10368 10200 10369 '@jridgewell/set-array@1.1.2': {} 10370 + 10371 + '@jridgewell/set-array@1.2.1': {} 10201 10372 10202 10373 '@jridgewell/sourcemap-codec@1.4.15': {} 10203 10374 10204 10375 '@jridgewell/trace-mapping@0.3.20': 10376 + dependencies: 10377 + '@jridgewell/resolve-uri': 3.1.1 10378 + '@jridgewell/sourcemap-codec': 1.4.15 10379 + 10380 + '@jridgewell/trace-mapping@0.3.25': 10205 10381 dependencies: 10206 10382 '@jridgewell/resolve-uri': 3.1.1 10207 10383 '@jridgewell/sourcemap-codec': 1.4.15 ··· 10449 10625 10450 10626 '@one-ini/wasm@0.1.1': {} 10451 10627 10452 - '@openstatus/next-monitoring@0.0.2(next@14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)': 10628 + '@openstatus/next-monitoring@0.0.2(next@14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)': 10453 10629 dependencies: 10454 - next: 14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 10630 + next: 14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 10455 10631 react: 18.2.0 10456 10632 10457 10633 '@opentelemetry/api-logs@0.39.1': ··· 11576 11752 localforage: 1.10.0 11577 11753 tslib: 2.6.2 11578 11754 11579 - '@sentry/nextjs@7.100.1(encoding@0.1.13)(next@14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)': 11755 + '@sentry/nextjs@7.100.1(encoding@0.1.13)(next@14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)': 11580 11756 dependencies: 11581 11757 '@rollup/plugin-commonjs': 24.0.0(rollup@2.78.0) 11582 11758 '@sentry/core': 7.100.1 ··· 11588 11764 '@sentry/vercel-edge': 7.100.1 11589 11765 '@sentry/webpack-plugin': 1.21.0(encoding@0.1.13) 11590 11766 chalk: 3.0.0 11591 - next: 14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 11767 + next: 14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 11592 11768 react: 18.2.0 11593 11769 resolve: 1.22.8 11594 11770 rollup: 2.78.0 ··· 12074 12250 dependencies: 12075 12251 '@trpc/server': 10.45.1 12076 12252 12077 - '@trpc/next@10.45.1(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@trpc/client@10.45.1(@trpc/server@10.45.1))(@trpc/react-query@10.45.1(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@trpc/client@10.45.1(@trpc/server@10.45.1))(@trpc/server@10.45.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@trpc/server@10.45.1)(next@14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': 12253 + '@trpc/next@10.45.1(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@trpc/client@10.45.1(@trpc/server@10.45.1))(@trpc/react-query@10.45.1(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@trpc/client@10.45.1(@trpc/server@10.45.1))(@trpc/server@10.45.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@trpc/server@10.45.1)(next@14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': 12078 12254 dependencies: 12079 12255 '@tanstack/react-query': 4.36.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 12080 12256 '@trpc/client': 10.45.1(@trpc/server@10.45.1) 12081 12257 '@trpc/react-query': 10.45.1(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@trpc/client@10.45.1(@trpc/server@10.45.1))(@trpc/server@10.45.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 12082 12258 '@trpc/server': 10.45.1 12083 - next: 14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 12259 + next: 14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 12084 12260 react: 18.2.0 12085 12261 react-dom: 18.2.0(react@18.2.0) 12086 12262 ··· 12749 12925 node-releases: 2.0.13 12750 12926 update-browserslist-db: 1.0.13(browserslist@4.22.1) 12751 12927 12928 + browserslist@4.23.0: 12929 + dependencies: 12930 + caniuse-lite: 1.0.30001612 12931 + electron-to-chromium: 1.4.750 12932 + node-releases: 2.0.14 12933 + update-browserslist-db: 1.0.13(browserslist@4.23.0) 12934 + 12752 12935 buffer-equal-constant-time@1.0.1: {} 12753 12936 12754 12937 buffer-from@1.1.2: {} ··· 12816 12999 caniuse-lite@1.0.30001551: {} 12817 13000 12818 13001 caniuse-lite@1.0.30001585: {} 13002 + 13003 + caniuse-lite@1.0.30001612: {} 12819 13004 12820 13005 capnp-ts@0.7.0: 12821 13006 dependencies: ··· 13296 13481 dependencies: 13297 13482 wordwrap: 1.0.0 13298 13483 13299 - drizzle-kit@0.20.14: 13484 + drizzle-kit@0.20.17: 13300 13485 dependencies: 13301 - '@drizzle-team/studio': 0.0.39 13302 13486 '@esbuild-kit/esm-loader': 2.6.5 13487 + '@hono/node-server': 1.11.1 13488 + '@hono/zod-validator': 0.2.1(hono@4.2.2)(zod@3.22.4) 13303 13489 camelcase: 7.0.1 13304 13490 chalk: 5.3.0 13305 13491 commander: 9.5.0 ··· 13308 13494 esbuild-register: 3.5.0(esbuild@0.19.12) 13309 13495 glob: 8.1.0 13310 13496 hanji: 0.0.5 13497 + hono: 4.2.2 13311 13498 json-diff: 0.9.0 13312 13499 minimatch: 7.4.6 13313 13500 semver: 7.5.4 13501 + superjson: 2.2.1 13314 13502 zod: 3.22.4 13315 13503 transitivePeerDependencies: 13316 13504 - supports-color ··· 13335 13523 bun-types: 1.0.11 13336 13524 react: 18.2.0 13337 13525 13338 - drizzle-zod@0.5.1(drizzle-orm@0.30.7(@cloudflare/workers-types@4.20240405.0)(@libsql/client@0.6.0(bufferutil@4.0.7)(utf-8-validate@6.0.3))(@opentelemetry/api@1.4.1)(@types/react@18.2.64)(better-sqlite3@9.4.1)(bun-types@1.0.11)(react@18.2.0))(zod@3.22.4): 13526 + drizzle-orm@0.30.9(@cloudflare/workers-types@4.20240405.0)(@libsql/client@0.6.0(bufferutil@4.0.7)(utf-8-validate@6.0.3))(@opentelemetry/api@1.4.1)(@types/react@18.2.64)(better-sqlite3@9.4.1)(bun-types@1.0.11)(react@18.2.0): 13527 + optionalDependencies: 13528 + '@cloudflare/workers-types': 4.20240405.0 13529 + '@libsql/client': 0.6.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) 13530 + '@opentelemetry/api': 1.4.1 13531 + '@types/react': 18.2.64 13532 + better-sqlite3: 9.4.1 13533 + bun-types: 1.0.11 13534 + react: 18.2.0 13535 + 13536 + drizzle-zod@0.5.1(drizzle-orm@0.30.9(@cloudflare/workers-types@4.20240405.0)(@libsql/client@0.6.0(bufferutil@4.0.7)(utf-8-validate@6.0.3))(@opentelemetry/api@1.4.1)(@types/react@18.2.64)(better-sqlite3@9.4.1)(bun-types@1.0.11)(react@18.2.0))(zod@3.22.4): 13339 13537 dependencies: 13340 - drizzle-orm: 0.30.7(@cloudflare/workers-types@4.20240405.0)(@libsql/client@0.6.0(bufferutil@4.0.7)(utf-8-validate@6.0.3))(@opentelemetry/api@1.4.1)(@types/react@18.2.64)(better-sqlite3@9.4.1)(bun-types@1.0.11)(react@18.2.0) 13538 + drizzle-orm: 0.30.9(@cloudflare/workers-types@4.20240405.0)(@libsql/client@0.6.0(bufferutil@4.0.7)(utf-8-validate@6.0.3))(@opentelemetry/api@1.4.1)(@types/react@18.2.64)(better-sqlite3@9.4.1)(bun-types@1.0.11)(react@18.2.0) 13341 13539 zod: 3.22.4 13342 13540 13343 13541 duplexify@4.1.2: ··· 13361 13559 semver: 7.5.4 13362 13560 13363 13561 electron-to-chromium@1.4.563: {} 13562 + 13563 + electron-to-chromium@1.4.750: {} 13364 13564 13365 13565 emitter-component@1.1.2: {} 13366 13566 ··· 15705 15905 object-assign: 4.1.1 15706 15906 thenify-all: 1.6.0 15707 15907 15908 + nanoid-dictionary@5.0.0-beta.1: {} 15909 + 15708 15910 nanoid@3.3.6: {} 15709 15911 15710 15912 nanoid@5.0.1: {} 15711 15913 15712 15914 nanoid@5.0.2: {} 15915 + 15916 + nanoid@5.0.7: {} 15713 15917 15714 15918 napi-build-utils@1.0.2: {} 15715 15919 ··· 15719 15923 15720 15924 netmask@2.0.2: {} 15721 15925 15722 - next-contentlayer@0.3.4(contentlayer@0.3.4(esbuild@0.19.12))(esbuild@0.19.12)(next@14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0): 15926 + next-contentlayer@0.3.4(contentlayer@0.3.4(esbuild@0.19.12))(esbuild@0.19.12)(next@14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0): 15723 15927 dependencies: 15724 15928 '@contentlayer/core': 0.3.4(esbuild@0.19.12) 15725 15929 '@contentlayer/utils': 0.3.4 15726 15930 contentlayer: 0.3.4(esbuild@0.19.12) 15727 - next: 14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 15931 + next: 14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 15728 15932 react: 18.2.0 15729 15933 react-dom: 18.2.0(react@18.2.0) 15730 15934 transitivePeerDependencies: ··· 15733 15937 - markdown-wasm 15734 15938 - supports-color 15735 15939 15736 - next-plausible@3.12.0(next@14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0): 15940 + next-plausible@3.12.0(next@14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0): 15737 15941 dependencies: 15738 - next: 14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 15942 + next: 14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 15739 15943 react: 18.2.0 15740 15944 react-dom: 18.2.0(react@18.2.0) 15741 15945 15742 - next-themes@0.2.1(next@14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0): 15946 + next-themes@0.2.1(next@14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0): 15743 15947 dependencies: 15744 - next: 14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 15948 + next: 14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) 15745 15949 react: 18.2.0 15746 15950 react-dom: 18.2.0(react@18.2.0) 15747 15951 15748 15952 next-tick@1.1.0: {} 15749 15953 15750 - next@14.2.1(@babel/core@7.23.2)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): 15954 + next@14.2.1(@babel/core@7.24.4)(@opentelemetry/api@1.4.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): 15751 15955 dependencies: 15752 15956 '@next/env': 14.2.1 15753 15957 '@swc/helpers': 0.5.5 ··· 15757 15961 postcss: 8.4.31 15758 15962 react: 18.2.0 15759 15963 react-dom: 18.2.0(react@18.2.0) 15760 - styled-jsx: 5.1.1(@babel/core@7.23.2)(react@18.2.0) 15964 + styled-jsx: 5.1.1(@babel/core@7.24.4)(react@18.2.0) 15761 15965 optionalDependencies: 15762 15966 '@next/swc-darwin-arm64': 14.2.1 15763 15967 '@next/swc-darwin-x64': 14.2.1 ··· 15822 16026 15823 16027 node-releases@2.0.13: {} 15824 16028 16029 + node-releases@2.0.14: {} 16030 + 15825 16031 nopt@6.0.0: 15826 16032 dependencies: 15827 16033 abbrev: 1.1.1 ··· 16169 16375 16170 16376 prelude-ls@1.2.1: {} 16171 16377 16172 - prettier-plugin-tailwindcss@0.5.4(@ianvs/prettier-plugin-sort-imports@4.1.0(prettier@3.0.3))(prettier@3.0.3): 16378 + prettier-plugin-tailwindcss@0.5.14(@ianvs/prettier-plugin-sort-imports@4.2.1(prettier@3.2.5))(prettier@3.2.5): 16173 16379 dependencies: 16174 - prettier: 3.0.3 16380 + prettier: 3.2.5 16175 16381 optionalDependencies: 16176 - '@ianvs/prettier-plugin-sort-imports': 4.1.0(prettier@3.0.3) 16382 + '@ianvs/prettier-plugin-sort-imports': 4.2.1(prettier@3.2.5) 16177 16383 16178 - prettier@3.0.3: {} 16384 + prettier@3.2.5: {} 16179 16385 16180 16386 pretty-format@29.7.0: 16181 16387 dependencies: ··· 17003 17209 dependencies: 17004 17210 inline-style-parser: 0.1.1 17005 17211 17006 - styled-jsx@5.1.1(@babel/core@7.23.2)(react@18.2.0): 17212 + styled-jsx@5.1.1(@babel/core@7.24.4)(react@18.2.0): 17007 17213 dependencies: 17008 17214 client-only: 0.0.1 17009 17215 react: 18.2.0 17010 17216 optionalDependencies: 17011 - '@babel/core': 7.23.2 17217 + '@babel/core': 7.24.4 17012 17218 17013 17219 sucrase@3.34.0: 17014 17220 dependencies: ··· 17546 17752 update-browserslist-db@1.0.13(browserslist@4.22.1): 17547 17753 dependencies: 17548 17754 browserslist: 4.22.1 17755 + escalade: 3.1.1 17756 + picocolors: 1.0.0 17757 + 17758 + update-browserslist-db@1.0.13(browserslist@4.23.0): 17759 + dependencies: 17760 + browserslist: 4.23.0 17549 17761 escalade: 3.1.1 17550 17762 picocolors: 1.0.0 17551 17763