From cc2985d4783148a181df86eba07e2cbc30dadb3e Mon Sep 17 00:00:00 2001 From: Thibault Le Ouay Date: Sat, 27 Apr 2024 13:32:59 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A5=20rum=20(#787)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🔥 rum * 🔥 rum --- apps/docs/rum/overview.mdx | 31 ++ .../rum/(overview)/_components/MetricCard.tsx | 24 + .../(dashboard)/rum/layout.tsx | 20 + .../(dashboard)/rum/loading.tsx | 11 + .../[workspaceSlug]/(dashboard)/rum/page.tsx | 28 + .../components/data-table/monitor/columns.tsx | 4 +- .../src/components/status-update/events.tsx | 4 +- apps/web/src/config/pages.ts | 8 + apps/web/src/env.ts | 6 + apps/web/src/trpc/shared.ts | 2 +- package.json | 8 +- packages/api/package.json | 10 +- packages/api/src/lambda.ts | 4 +- packages/api/src/router/clerk/webhook.ts | 10 +- packages/api/src/router/rum/index.ts | 40 ++ packages/api/src/trpc.ts | 3 +- packages/db/env.mjs | 6 + packages/db/package.json | 5 +- packages/db/src/clickhouse/client.ts | 22 +- packages/db/src/index.ts | 2 +- packages/tracker/src/tracker.ts | 4 +- pnpm-lock.yaml | 506 +++++++++++++----- 22 files changed, 577 insertions(+), 181 deletions(-) create mode 100644 apps/web/src/app/app/[workspaceSlug]/(dashboard)/rum/(overview)/_components/MetricCard.tsx create mode 100644 apps/web/src/app/app/[workspaceSlug]/(dashboard)/rum/layout.tsx create mode 100644 apps/web/src/app/app/[workspaceSlug]/(dashboard)/rum/loading.tsx create mode 100644 apps/web/src/app/app/[workspaceSlug]/(dashboard)/rum/page.tsx create mode 100644 packages/api/src/router/rum/index.ts diff --git a/apps/docs/rum/overview.mdx b/apps/docs/rum/overview.mdx index 976bef7d..4de5b647 100644 --- a/apps/docs/rum/overview.mdx +++ b/apps/docs/rum/overview.mdx @@ -18,3 +18,34 @@ We are currently tracking the following metrics: - **LCP**: Largest Contentful Paint - **CLS**: Cumulative Layout Shift - **INP**: Interaction to Next Paint + +## Get started 🚀 + +We currently only support NextJS applications, other frameworks are coming soon. + +To get started, you need to install our package in your application. + +```bash +pnpm add @openstatus/next-monitoring -E +``` + +Then, you need to add the following snippet to your `layout.tsx` file: + +```tsx +import { OpenStatusProvider } from "@openstatus/next-monitoring"; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + + {children} + + + ); +} +``` diff --git a/apps/web/src/app/app/[workspaceSlug]/(dashboard)/rum/(overview)/_components/MetricCard.tsx b/apps/web/src/app/app/[workspaceSlug]/(dashboard)/rum/(overview)/_components/MetricCard.tsx new file mode 100644 index 00000000..a9a70a3f --- /dev/null +++ b/apps/web/src/app/app/[workspaceSlug]/(dashboard)/rum/(overview)/_components/MetricCard.tsx @@ -0,0 +1,24 @@ +import { Card } from "@tremor/react"; + +import { api } from "@/trpc/server"; + +export const RUMMetricCard = async ({ + event, +}: { + event: "CLS" | "FCP" | "FID" | "INP" | "LCP" | "TTFB"; +}) => { + const data = await api.rumRouter.GetEventMetricsForWorkspace.query({ + event: event, + }); + console.log(data); + return ( + +

+ {event} +

+

+ {data.median} +

+
+ ); +}; diff --git a/apps/web/src/app/app/[workspaceSlug]/(dashboard)/rum/layout.tsx b/apps/web/src/app/app/[workspaceSlug]/(dashboard)/rum/layout.tsx new file mode 100644 index 00000000..2b0b362d --- /dev/null +++ b/apps/web/src/app/app/[workspaceSlug]/(dashboard)/rum/layout.tsx @@ -0,0 +1,20 @@ +import * as React from "react"; + +import { Header } from "@/components/dashboard/header"; +import AppPageLayout from "@/components/layout/app-page-layout"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + +
+ {children} + + ); +} diff --git a/apps/web/src/app/app/[workspaceSlug]/(dashboard)/rum/loading.tsx b/apps/web/src/app/app/[workspaceSlug]/(dashboard)/rum/loading.tsx new file mode 100644 index 00000000..50c068b8 --- /dev/null +++ b/apps/web/src/app/app/[workspaceSlug]/(dashboard)/rum/loading.tsx @@ -0,0 +1,11 @@ +import { DataTableSkeleton } from "@/components/data-table/data-table-skeleton"; +import { DataTableToolbarSkeleton } from "@/components/data-table/data-table-toolbar-skeleton"; + +export default function Loading() { + return ( +
+ + +
+ ); +} diff --git a/apps/web/src/app/app/[workspaceSlug]/(dashboard)/rum/page.tsx b/apps/web/src/app/app/[workspaceSlug]/(dashboard)/rum/page.tsx new file mode 100644 index 00000000..57707d32 --- /dev/null +++ b/apps/web/src/app/app/[workspaceSlug]/(dashboard)/rum/page.tsx @@ -0,0 +1,28 @@ +import * as React from "react"; +import { notFound } from "next/navigation"; + +import { api } from "@/trpc/server"; +import { RUMMetricCard } from "./(overview)/_components/MetricCard"; + +export const dynamic = "force-dynamic"; + +export default async function RUMPage() { + const workspace = await api.workspace.getWorkspace.query(); + + if (!workspace) { + return notFound(); + } + if (workspace.dsn === null) { + return <>The feature is currently in beta and will be released soon.; + } + return ( +
+ + + + + + +
+ ); +} diff --git a/apps/web/src/components/data-table/monitor/columns.tsx b/apps/web/src/components/data-table/monitor/columns.tsx index c1e94114..64dc7e6a 100644 --- a/apps/web/src/components/data-table/monitor/columns.tsx +++ b/apps/web/src/components/data-table/monitor/columns.tsx @@ -70,8 +70,8 @@ export const columns: ColumnDef<{ if (!Array.isArray(value)) return true; // REMINDER: if one value is found, return true // we could consider restricting it to all the values have to be found - return value.some( - (item) => row.original.tags?.some((tag) => tag.name === item), + return value.some((item) => + row.original.tags?.some((tag) => tag.name === item), ); }, }, diff --git a/apps/web/src/components/status-update/events.tsx b/apps/web/src/components/status-update/events.tsx index d3021922..0083019a 100644 --- a/apps/web/src/components/status-update/events.tsx +++ b/apps/web/src/components/status-update/events.tsx @@ -32,8 +32,8 @@ export function Events({ open || !collabsible ? sortedArray : sortedArray.length > 0 - ? [sortedArray[0]] - : []; + ? [sortedArray[0]] + : []; // return ( diff --git a/apps/web/src/config/pages.ts b/apps/web/src/config/pages.ts index a50c809c..1b4e7a8c 100644 --- a/apps/web/src/config/pages.ts +++ b/apps/web/src/config/pages.ts @@ -176,6 +176,14 @@ export const pagesConfig = [ segment: "notifications", children: notificationsPagesConfig, }, + { + title: "Real User Monitoring", + description: "Where you can see all the notifications.", + href: "/rum", + icon: "bell", + segment: "rum", + children: notificationsPagesConfig, + }, { title: "Settings", description: "Your workspace settings", diff --git a/apps/web/src/env.ts b/apps/web/src/env.ts index f9e908e1..6a7f9af8 100644 --- a/apps/web/src/env.ts +++ b/apps/web/src/env.ts @@ -22,6 +22,9 @@ export const env = createEnv({ GCP_PRIVATE_KEY: z.string(), CRON_SECRET: z.string(), EXTERNAL_API_URL: z.string().url(), + CLICKHOUSE_URL: z.string(), + CLICKHOUSE_USERNAME: z.string(), + CLICKHOUSE_PASSWORD: z.string(), }, client: { NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: z.string().min(1), @@ -62,6 +65,9 @@ export const env = createEnv({ GCP_PRIVATE_KEY: process.env.GCP_PRIVATE_KEY, CRON_SECRET: process.env.CRON_SECRET, EXTERNAL_API_URL: process.env.EXTERNAL_API_URL, + CLICKHOUSE_URL: process.env.CLICKHOUSE_URL, + CLICKHOUSE_USERNAME: process.env.CLICKHOUSE_USERNAME, + CLICKHOUSE_PASSWORD: process.env.CLICKHOUSE_PASSWORD, }, skipValidation: true, }); diff --git a/apps/web/src/trpc/shared.ts b/apps/web/src/trpc/shared.ts index 32ae05bf..6bed7dd2 100644 --- a/apps/web/src/trpc/shared.ts +++ b/apps/web/src/trpc/shared.ts @@ -10,7 +10,7 @@ const getBaseUrl = () => { return `http://localhost:3000`; }; -const lambdas = ["clerkRouter", "stripeRouter"]; +const lambdas = ["clerkRouter", "stripeRouter", "rumRouter"]; export const endingLink = (opts?: { headers?: HTTPHeaders | (() => HTTPHeaders); diff --git a/package.json b/package.json index 616355fa..f785f618 100644 --- a/package.json +++ b/package.json @@ -11,16 +11,16 @@ "test": "turbo run test" }, "devDependencies": { - "@ianvs/prettier-plugin-sort-imports": "4.1.0", + "@ianvs/prettier-plugin-sort-imports": "4.2.1", "@openstatus/eslint-config": "workspace:*", "@turbo/gen": "1.10.12", "eslint": "8.50.0", - "prettier": "3.0.3", - "prettier-plugin-tailwindcss": "0.5.4", + "prettier": "3.2.5", + "prettier-plugin-tailwindcss": "0.5.14", "turbo": "1.10.12", "typescript": "5.4.5" }, - "packageManager": "pnpm@9.0.5", + "packageManager": "pnpm@9.0.6", "name": "openstatus", "workspaces": [ "apps/*", diff --git a/packages/api/package.json b/packages/api/package.json index 52a220b5..3a4bbb86 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -17,16 +17,18 @@ "@t3-oss/env-core": "0.7.0", "@trpc/client": "10.45.1", "@trpc/server": "10.45.1", + "nanoid": "5.0.7", + "nanoid-dictionary": "5.0.0-beta.1", + "next": "14.2.1", "random-word-slugs": "0.1.7", "stripe": "13.8.0", "superjson": "1.13.3", - "zod": "3.22.4", - "next": "14.2.1" + "zod": "3.22.4" }, "devDependencies": { "@openstatus/tsconfig": "workspace:*", - "typescript": "5.4.5", - "bun-types": "1.0.8" + "bun-types": "1.0.8", + "typescript": "5.4.5" }, "keywords": [], "author": "", diff --git a/packages/api/src/lambda.ts b/packages/api/src/lambda.ts index d479d2f3..71189073 100644 --- a/packages/api/src/lambda.ts +++ b/packages/api/src/lambda.ts @@ -1,4 +1,5 @@ import { clerkRouter } from "./router/clerk/webhook"; +import { rumRouter } from "./router/rum"; import { stripeRouter } from "./router/stripe"; import { createTRPCRouter } from "./trpc"; @@ -6,8 +7,7 @@ import { createTRPCRouter } from "./trpc"; export const lambdaRouter = createTRPCRouter({ clerkRouter: clerkRouter, stripeRouter: stripeRouter, - // TODO: Add open api router - // See trpc-openapi + rumRouter: rumRouter, }); export { stripe } from "./router/stripe/shared"; diff --git a/packages/api/src/router/clerk/webhook.ts b/packages/api/src/router/clerk/webhook.ts index 148174c0..b09c6e81 100644 --- a/packages/api/src/router/clerk/webhook.ts +++ b/packages/api/src/router/clerk/webhook.ts @@ -1,4 +1,6 @@ -import { generateSlug } from "random-word-slugs"; +import { customAlphabet } from "nanoid"; +import { alphanumeric } from "nanoid-dictionary"; +import * as randomWordSlugs from "random-word-slugs"; import * as z from "zod"; import { analytics, trackAnalytics } from "@openstatus/analytics"; @@ -40,7 +42,7 @@ export const webhookRouter = createTRPCRouter({ let slug: string | undefined = undefined; while (!slug) { - slug = generateSlug(2); + slug = randomWordSlugs.generateSlug(2); const slugAlreadyExists = await opts.ctx.db .select() .from(workspace) @@ -51,10 +53,12 @@ export const webhookRouter = createTRPCRouter({ slug = undefined; } } + const lowercaseRandomString = customAlphabet(alphanumeric, 10); + const dsn = `os_rum_${lowercaseRandomString}`; const workspaceResult = await opts.ctx.db .insert(workspace) - .values({ slug, name: "" }) + .values({ slug, name: "", dsn }) .returning({ id: workspace.id }) .get(); await opts.ctx.db diff --git a/packages/api/src/router/rum/index.ts b/packages/api/src/router/rum/index.ts new file mode 100644 index 00000000..a9a6e912 --- /dev/null +++ b/packages/api/src/router/rum/index.ts @@ -0,0 +1,40 @@ +import { z } from "zod"; + +import { createTRPCRouter, protectedProcedure } from "../../trpc"; + +const event = z.enum(["CLS", "FCP", "FID", "INP", "LCP", "TTFB"]); + +export const rumRouter = createTRPCRouter({ + GetEventMetricsForWorkspace: protectedProcedure + .input( + z.object({ + event: event, + }), + ) + .query(async (opts) => { + try { + const data = await opts.ctx.clickhouseClient.query({ + query: `select + event_name, + quantile(0.5)(value) as median + from + cwv + where + dsn = '${opts.ctx.workspace.dsn}' + and event_name = '${opts.input.event}' + group by + event_name +`, + format: "JSONEachRow", + }); + const result = await data.json(); + const schema = z.array( + z.object({ event_name: z.string(), median: z.number() }), + ); + return schema.parse(result)[0]; + } catch (e) { + console.error(e); + throw e; + } + }), +}); diff --git a/packages/api/src/trpc.ts b/packages/api/src/trpc.ts index 5ae3f9f3..074b5fec 100644 --- a/packages/api/src/trpc.ts +++ b/packages/api/src/trpc.ts @@ -8,7 +8,7 @@ import { inferAsyncReturnType, initTRPC, TRPCError } from "@trpc/server"; import superjson from "superjson"; import { ZodError } from "zod"; -import { db, eq, schema } from "@openstatus/db"; +import { clickhouseClient, db, eq, schema } from "@openstatus/db"; import type { User, Workspace } from "@openstatus/db/src/schema"; /** @@ -40,6 +40,7 @@ export const createInnerTRPCContext = (opts: CreateContextOptions) => { return { ...opts, db, + clickhouseClient, }; }; diff --git a/packages/db/env.mjs b/packages/db/env.mjs index 769471e6..2c6f3728 100644 --- a/packages/db/env.mjs +++ b/packages/db/env.mjs @@ -5,6 +5,9 @@ export const env = createEnv({ server: { DATABASE_URL: z.string().min(1), DATABASE_AUTH_TOKEN: z.string().min(1), + CLICKHOUSE_URL: z.string(), + CLICKHOUSE_USERNAME: z.string(), + CLICKHOUSE_PASSWORD: z.string(), }, runtimeEnv: { DATABASE_URL: @@ -13,6 +16,9 @@ export const env = createEnv({ ? "http://127.0.0.1:8080" : process.env.DATABASE_URL, DATABASE_AUTH_TOKEN: process.env.DATABASE_AUTH_TOKEN, + CLICKHOUSE_URL: process.env.CLICKHOUSE_URL, + CLICKHOUSE_USERNAME: process.env.CLICKHOUSE_USERNAME, + CLICKHOUSE_PASSWORD: process.env.CLICKHOUSE_PASSWORD, }, skipValidation: true, }); diff --git a/packages/db/package.json b/packages/db/package.json index c93da528..e3e14e17 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -12,10 +12,11 @@ "dev": "turso dev --db-file openstatus.db" }, "dependencies": { + "@clickhouse/client-web": "1.0.1", "@libsql/client": "0.6.0", "@t3-oss/env-core": "0.7.0", "dotenv": "16.3.1", - "drizzle-orm": "0.30.7", + "drizzle-orm": "0.30.9", "drizzle-zod": "0.5.1", "zod": "3.22.4" }, @@ -25,7 +26,7 @@ "@types/node": "20.8.0", "better-sqlite3": "9.4.1", "bufferutil": "4.0.7", - "drizzle-kit": "0.20.14", + "drizzle-kit": "0.20.17", "encoding": "0.1.13", "typescript": "5.4.5", "utf-8-validate": "6.0.3" diff --git a/packages/db/src/clickhouse/client.ts b/packages/db/src/clickhouse/client.ts index 5f7dac66..ee2066bc 100644 --- a/packages/db/src/clickhouse/client.ts +++ b/packages/db/src/clickhouse/client.ts @@ -1,13 +1,15 @@ -// import { createClient } from "@clickhouse/client-web"; +import { createClient } from "@clickhouse/client-web"; -// import { env } from "../../env.mjs"; +import { env } from "../../env.mjs"; -// const clickhouseClient = createClient({ -// url: env.CLICKHOUSE_URL, -// username: env.CLICKHOUSE_USERNAME, -// password: env.CLICKHOUSE_PASSWORD, -// database: "default", -// /* configuration */ -// }); +// This client can only be used in node.js environment -// export { clickhouseClient }; +const clickhouseClient = createClient({ + host: env.CLICKHOUSE_URL, + username: env.CLICKHOUSE_USERNAME, + password: env.CLICKHOUSE_PASSWORD, + database: "default", + /* configuration */ +}); + +export { clickhouseClient }; diff --git a/packages/db/src/index.ts b/packages/db/src/index.ts index 7a41e7c0..75bca223 100644 --- a/packages/db/src/index.ts +++ b/packages/db/src/index.ts @@ -1,4 +1,4 @@ export * as schema from "./schema"; export * from "drizzle-orm"; export * from "./db"; -// export * from "./clickhouse/client"; +export * from "./clickhouse/client"; diff --git a/packages/tracker/src/tracker.ts b/packages/tracker/src/tracker.ts index a9174b32..7eb32538 100644 --- a/packages/tracker/src/tracker.ts +++ b/packages/tracker/src/tracker.ts @@ -162,8 +162,8 @@ export class Tracker { const status = incidents.length ? Status.Incident : isMissingData - ? Status.Unknown - : this.calculateUptimeStatus([props]); + ? Status.Unknown + : this.calculateUptimeStatus([props]); const variant = statusDetails[status].variant; const label = statusDetails[status].short; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d887edc5..8ba57838 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: devDependencies: '@ianvs/prettier-plugin-sort-imports': - specifier: 4.1.0 - version: 4.1.0(prettier@3.0.3) + specifier: 4.2.1 + version: 4.2.1(prettier@3.2.5) '@openstatus/eslint-config': specifier: workspace:* version: link:packages/config/eslint @@ -21,11 +21,11 @@ importers: specifier: 8.50.0 version: 8.50.0 prettier: - specifier: 3.0.3 - version: 3.0.3 + specifier: 3.2.5 + version: 3.2.5 prettier-plugin-tailwindcss: - specifier: 0.5.4 - version: 0.5.4(@ianvs/prettier-plugin-sort-imports@4.1.0(prettier@3.0.3))(prettier@3.0.3) + specifier: 0.5.14 + version: 0.5.14(@ianvs/prettier-plugin-sort-imports@4.2.1(prettier@3.2.5))(prettier@3.2.5) turbo: specifier: 1.10.12 version: 1.10.12 @@ -229,7 +229,7 @@ importers: dependencies: '@clerk/nextjs': specifier: 4.29.9 - 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) + 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) '@google-cloud/tasks': specifier: 5.0.0 version: 5.0.0(encoding@0.1.13) @@ -256,7 +256,7 @@ importers: version: link:../../packages/emails '@openstatus/next-monitoring': specifier: 0.0.2 - 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) + 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) '@openstatus/notification-discord': specifier: workspace:* version: link:../../packages/notifications/discord @@ -292,7 +292,7 @@ importers: version: 7.100.1 '@sentry/nextjs': specifier: 7.100.1 - 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) + 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) '@stripe/stripe-js': specifier: 2.1.6 version: 2.1.6 @@ -316,7 +316,7 @@ importers: version: 10.45.1(@trpc/server@10.45.1) '@trpc/next': specifier: 10.45.1 - 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) + 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) '@trpc/react-query': specifier: 10.45.1 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,16 +370,16 @@ importers: version: 5.0.1 next: specifier: 14.2.1 - 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) + 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) next-contentlayer: specifier: 0.3.4 - 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) + 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) next-plausible: specifier: 3.12.0 - 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) + 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) next-themes: specifier: 0.2.1 - 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) + 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) react: specifier: 18.2.0 version: 18.2.0 @@ -513,7 +513,7 @@ importers: dependencies: '@clerk/nextjs': specifier: 4.29.9 - 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) + 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) '@openstatus/analytics': specifier: workspace:* version: link:../analytics @@ -541,9 +541,15 @@ importers: '@trpc/server': specifier: 10.45.1 version: 10.45.1 + nanoid: + specifier: 5.0.7 + version: 5.0.7 + nanoid-dictionary: + specifier: 5.0.0-beta.1 + version: 5.0.0-beta.1 next: specifier: 14.2.1 - 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) + 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) random-word-slugs: specifier: 0.1.7 version: 0.1.7 @@ -618,6 +624,9 @@ importers: packages/db: dependencies: + '@clickhouse/client-web': + specifier: 1.0.1 + version: 1.0.1 '@libsql/client': specifier: 0.6.0 version: 0.6.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) @@ -628,11 +637,11 @@ importers: specifier: 16.3.1 version: 16.3.1 drizzle-orm: - specifier: 0.30.7 - 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) + specifier: 0.30.9 + 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) drizzle-zod: specifier: 0.5.1 - 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) + 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) zod: specifier: 3.22.4 version: 3.22.4 @@ -653,8 +662,8 @@ importers: specifier: 4.0.7 version: 4.0.7 drizzle-kit: - specifier: 0.20.14 - version: 0.20.14 + specifier: 0.20.17 + version: 0.20.17 encoding: specifier: 0.1.13 version: 0.1.13 @@ -731,7 +740,7 @@ importers: version: 18.2.21 next: specifier: 14.2.1 - 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) + 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) typescript: specifier: 5.4.5 version: 5.4.5 @@ -777,7 +786,7 @@ importers: version: 18.2.21 next: specifier: 14.2.1 - 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) + 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) typescript: specifier: 5.4.5 version: 5.4.5 @@ -802,7 +811,7 @@ importers: version: 18.2.21 next: specifier: 14.2.1 - 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) + 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) typescript: specifier: 5.4.5 version: 5.4.5 @@ -839,7 +848,7 @@ importers: version: 18.2.21 next: specifier: 14.2.1 - 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) + 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) typescript: specifier: 5.4.5 version: 5.4.5 @@ -1013,7 +1022,7 @@ importers: version: 3.3.0 next-themes: specifier: 0.2.1 - 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) + 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) react: specifier: 18.2.0 version: 18.2.0 @@ -1306,20 +1315,24 @@ packages: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.23.2': - resolution: {integrity: sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==} + '@babel/code-frame@7.24.2': + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.24.4': + resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} engines: {node: '>=6.9.0'} - '@babel/core@7.23.2': - resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} + '@babel/core@7.24.4': + resolution: {integrity: sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==} engines: {node: '>=6.9.0'} - '@babel/generator@7.23.0': - resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} + '@babel/generator@7.24.4': + resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.22.15': - resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} + '@babel/helper-compilation-targets@7.23.6': + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} '@babel/helper-environment-visitor@7.22.20': @@ -1338,8 +1351,8 @@ packages: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.23.0': - resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} + '@babel/helper-module-transforms@7.23.3': + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1352,28 +1365,32 @@ packages: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.22.5': - resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} + '@babel/helper-string-parser@7.24.1': + resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} engines: {node: '>=6.9.0'} '@babel/helper-validator-identifier@7.22.20': resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.22.15': - resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} + '@babel/helper-validator-option@7.23.5': + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.23.2': - resolution: {integrity: sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==} + '@babel/helpers@7.24.4': + resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==} engines: {node: '>=6.9.0'} '@babel/highlight@7.22.20': resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} engines: {node: '>=6.9.0'} - '@babel/parser@7.23.0': - resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} + '@babel/highlight@7.24.2': + resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.24.4': + resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} engines: {node: '>=6.0.0'} hasBin: true @@ -1389,12 +1406,16 @@ packages: resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.23.2': - resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} + '@babel/template@7.24.0': + resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} engines: {node: '>=6.9.0'} - '@babel/types@7.23.0': - resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} + '@babel/traverse@7.24.1': + resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.24.0': + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} engines: {node: '>=6.9.0'} '@biomejs/biome@1.6.3': @@ -1490,9 +1511,15 @@ packages: '@clickhouse/client-common@0.3.0': resolution: {integrity: sha512-LcfJfyMglUTbGuDN/s6e/R3LwtbQXpv6juIJID+tVXxcGzPijhDB+XXQpqbprunqnm48vHmLfCB6/68Pgp5qvg==} + '@clickhouse/client-common@1.0.1': + resolution: {integrity: sha512-3L6e0foP6VOktScoi6XWMjJyOpKCWgLUYgPVxP2c7gm6Kotq+iRmmmXtXTSg7B7uozcLZycTtPfIw2d80SYsYw==} + '@clickhouse/client-web@0.3.0': resolution: {integrity: sha512-zx/oJ2M+YIMTiTNdRAACpJGKqlJ47LE9Y4DzyZgki37q3QYoCCXOzGk5Jpq9MFFHwYW+9OMx9RIk80VvuSx4mw==} + '@clickhouse/client-web@1.0.1': + resolution: {integrity: sha512-gKmfOxJ3+6kFtlmQaBd0sOz8t8lAiJcBfR9sx1Cmk4M38T5xxza7ZWhyGs3O6I7nJkU60RuM1MY8Woct6vMtRg==} + '@cloudflare/kv-asset-handler@0.3.1': resolution: {integrity: sha512-lKN2XCfKCmpKb86a1tl4GIwsJYDy9TGuwjhDELLmpKygQhw8X2xR4dusgpC5Tg7q1pB96Eb0rBo81kxSILQMwA==} @@ -1606,9 +1633,6 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - '@drizzle-team/studio@0.0.39': - resolution: {integrity: sha512-c5Hkm7MmQC2n5qAsKShjQrHoqlfGslB8+qWzsGGZ+2dHMRTNG60UuzalF0h0rvBax5uzPXuGkYLGaQ+TUX3yMw==} - '@effect-ts/core@0.60.5': resolution: {integrity: sha512-qi1WrtJA90XLMnj2hnUszW9Sx4dXP03ZJtCc5DiUBIOhF4Vw7plfb65/bdBySPoC9s7zy995TdUX1XBSxUkl5w==} @@ -2281,6 +2305,10 @@ packages: peerDependencies: tailwindcss: ^3.0 + '@hono/node-server@1.11.1': + resolution: {integrity: sha512-GW1Iomhmm1o4Z+X57xGby8A35Cu9UZLL7pSMdqDBkD99U5cywff8F+8hLk5aBTzNubnsFAvWQ/fZjNwPsEn9lA==} + engines: {node: '>=18.14.1'} + '@hono/sentry@1.0.0': resolution: {integrity: sha512-GbPxgpGuasM2zRCSaA77MPWu4KDcuk/EMf7JJykjCvnOTbjmtr7FovNxsvg7xlXCIjZDgLmqBaoJMi3AxbeIAA==} peerDependencies: @@ -2321,10 +2349,10 @@ packages: '@humanwhocodes/object-schema@2.0.1': resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} - '@ianvs/prettier-plugin-sort-imports@4.1.0': - resolution: {integrity: sha512-IAXeTLU24k6mRPa6mFbW1qZJ/j0m3OeH44wyijWyr+YqqdNtBnfHxAntOAATS9iDfrT01NesKGsdzqnXdDQa/A==} + '@ianvs/prettier-plugin-sort-imports@4.2.1': + resolution: {integrity: sha512-NKN1LVFWUDGDGr3vt+6Ey3qPeN/163uR1pOPAlkWpgvAqgxQ6kSdUf1F0it8aHUtKRUzEGcK38Wxd07O61d7+Q==} peerDependencies: - '@vue/compiler-sfc': '>=3.0.0' + '@vue/compiler-sfc': 2.7.x || 3.x prettier: 2 || 3 peerDependenciesMeta: '@vue/compiler-sfc': @@ -2357,6 +2385,10 @@ packages: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + '@jridgewell/resolve-uri@3.1.1': resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} @@ -2365,12 +2397,19 @@ packages: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + '@jridgewell/sourcemap-codec@1.4.15': resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} '@jridgewell/trace-mapping@0.3.20': resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -4477,6 +4516,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + buffer-equal-constant-time@1.0.1: resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} @@ -4552,6 +4596,9 @@ packages: caniuse-lite@1.0.30001585: resolution: {integrity: sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==} + caniuse-lite@1.0.30001612: + resolution: {integrity: sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==} + capnp-ts@0.7.0: resolution: {integrity: sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==} @@ -5043,8 +5090,8 @@ packages: resolution: {integrity: sha512-vyJTp8+mC+G+5dfgsY+r3ckxlz+QMX40VjPQsZc5gxVAxLmi64TBoVkP54A/pRAXMXsbu2GMMBrZPxNv23waMg==} engines: {node: '>=0.4.0'} - drizzle-kit@0.20.14: - resolution: {integrity: sha512-0fHv3YIEaUcSVPSGyaaBfOi9bmpajjhbJNdPsRMIUvYdLVxBu9eGjH8mRc3Qk7HVmEidFc/lhG1YyJhoXrn5yA==} + drizzle-kit@0.20.17: + resolution: {integrity: sha512-mLVDS4nXmO09wFVlzGrdshWnAL+U9eQGC5zRs6hTN6Q9arwQGWU2XnZ17I8BM8Quau8CQRx3Ms6VPgRWJFVp7Q==} hasBin: true drizzle-orm@0.30.7: @@ -5127,6 +5174,86 @@ packages: sqlite3: optional: true + drizzle-orm@0.30.9: + resolution: {integrity: sha512-VOiCFsexErmgqvNCOmbzmqDCZzZsHoz6SkWAjTFxsTr1AllKDbDJ2+GgedLXsXMDgpg/ljDG1zItIFeZtiO2LA==} + peerDependencies: + '@aws-sdk/client-rds-data': '>=3' + '@cloudflare/workers-types': '>=3' + '@electric-sql/pglite': '>=0.1.1' + '@libsql/client': '*' + '@neondatabase/serverless': '>=0.1' + '@op-engineering/op-sqlite': '>=2' + '@opentelemetry/api': ^1.4.1 + '@planetscale/database': '>=1' + '@types/better-sqlite3': '*' + '@types/pg': '*' + '@types/react': '>=18' + '@types/sql.js': '*' + '@vercel/postgres': '>=0.8.0' + '@xata.io/client': '*' + better-sqlite3: '>=7' + bun-types: '*' + expo-sqlite: '>=13.2.0' + knex: '*' + kysely: '*' + mysql2: '>=2' + pg: '>=8' + postgres: '>=3' + react: '>=18' + sql.js: '>=1' + sqlite3: '>=5' + peerDependenciesMeta: + '@aws-sdk/client-rds-data': + optional: true + '@cloudflare/workers-types': + optional: true + '@electric-sql/pglite': + optional: true + '@libsql/client': + optional: true + '@neondatabase/serverless': + optional: true + '@op-engineering/op-sqlite': + optional: true + '@opentelemetry/api': + optional: true + '@planetscale/database': + optional: true + '@types/better-sqlite3': + optional: true + '@types/pg': + optional: true + '@types/react': + optional: true + '@types/sql.js': + optional: true + '@vercel/postgres': + optional: true + '@xata.io/client': + optional: true + better-sqlite3: + optional: true + bun-types: + optional: true + expo-sqlite: + optional: true + knex: + optional: true + kysely: + optional: true + mysql2: + optional: true + pg: + optional: true + postgres: + optional: true + react: + optional: true + sql.js: + optional: true + sqlite3: + optional: true + drizzle-zod@0.5.1: resolution: {integrity: sha512-C/8bvzUH/zSnVfwdSibOgFjLhtDtbKYmkbPbUCq46QZyZCH6kODIMSOgZ8R7rVjoI+tCj3k06MRJMDqsIeoS4A==} peerDependencies: @@ -5150,6 +5277,9 @@ packages: electron-to-chromium@1.4.563: resolution: {integrity: sha512-dg5gj5qOgfZNkPNeyKBZQAQitIQ/xwfIDmEQJHCbXaD9ebTZxwJXUsDYcBlAvZGZLi+/354l35J1wkmP6CqYaw==} + electron-to-chromium@1.4.750: + resolution: {integrity: sha512-9ItEpeu15hW5m8jKdriL+BQrgwDTXEL9pn4SkillWFu73ZNNNQ2BKKLS+ZHv2vC9UkNhosAeyfxOf/5OSeTCPA==} + emitter-component@1.1.2: resolution: {integrity: sha512-QdXO3nXOzZB4pAjM0n6ZE+R9/+kPpECA/XSELIcc54NeYVnBqIk+4DFiBgK+8QbV3mdvTG6nedl7dTYgO+5wDw==} @@ -6768,6 +6898,9 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + nanoid-dictionary@5.0.0-beta.1: + resolution: {integrity: sha512-xBkL9zzkNjzJ/UnmWyiOUDVX/COoi05eS0oU28RYKFFQhdnzO5dTOPbVZ/fCFgIOGr1zNinDHJ68mm/KQfcgcw==} + nanoid@3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -6783,6 +6916,11 @@ packages: engines: {node: ^18 || >=20} hasBin: true + nanoid@5.0.7: + resolution: {integrity: sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==} + engines: {node: ^18 || >=20} + hasBin: true + napi-build-utils@1.0.2: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} @@ -6884,6 +7022,9 @@ packages: node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + nopt@6.0.0: resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -7194,15 +7335,15 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-plugin-tailwindcss@0.5.4: - resolution: {integrity: sha512-QZzzB1bID6qPsKHTeA9qPo1APmmxfFrA5DD3LQ+vbTmAnY40eJI7t9Q1ocqel2EKMWNPLJqdTDWZj1hKYgqSgg==} + prettier-plugin-tailwindcss@0.5.14: + resolution: {integrity: sha512-Puaz+wPUAhFp8Lo9HuciYKM2Y2XExESjeT+9NQoVFXZsPPnc9VYss2SpxdQ6vbatmt8/4+SN0oe0I1cPDABg9Q==} engines: {node: '>=14.21.3'} peerDependencies: '@ianvs/prettier-plugin-sort-imports': '*' '@prettier/plugin-pug': '*' '@shopify/prettier-plugin-liquid': '*' - '@shufo/prettier-plugin-blade': '*' '@trivago/prettier-plugin-sort-imports': '*' + '@zackad/prettier-plugin-twig-melody': '*' prettier: ^3.0 prettier-plugin-astro: '*' prettier-plugin-css-order: '*' @@ -7211,9 +7352,9 @@ packages: prettier-plugin-marko: '*' prettier-plugin-organize-attributes: '*' prettier-plugin-organize-imports: '*' + prettier-plugin-sort-imports: '*' prettier-plugin-style-order: '*' prettier-plugin-svelte: '*' - prettier-plugin-twig-melody: '*' peerDependenciesMeta: '@ianvs/prettier-plugin-sort-imports': optional: true @@ -7221,10 +7362,10 @@ packages: optional: true '@shopify/prettier-plugin-liquid': optional: true - '@shufo/prettier-plugin-blade': - optional: true '@trivago/prettier-plugin-sort-imports': optional: true + '@zackad/prettier-plugin-twig-melody': + optional: true prettier-plugin-astro: optional: true prettier-plugin-css-order: @@ -7239,15 +7380,15 @@ packages: optional: true prettier-plugin-organize-imports: optional: true + prettier-plugin-sort-imports: + optional: true prettier-plugin-style-order: optional: true prettier-plugin-svelte: optional: true - prettier-plugin-twig-melody: - optional: true - prettier@3.0.3: - resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} + prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} engines: {node: '>=14'} hasBin: true @@ -9275,20 +9416,25 @@ snapshots: '@babel/highlight': 7.22.20 chalk: 2.4.2 - '@babel/compat-data@7.23.2': {} + '@babel/code-frame@7.24.2': + dependencies: + '@babel/highlight': 7.24.2 + picocolors: 1.0.0 + + '@babel/compat-data@7.24.4': {} - '@babel/core@7.23.2': + '@babel/core@7.24.4': dependencies: '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.23.0 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) - '@babel/helpers': 7.23.2 - '@babel/parser': 7.23.0 - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.2 - '@babel/types': 7.23.0 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.4 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) + '@babel/helpers': 7.24.4 + '@babel/parser': 7.24.4 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -9297,18 +9443,18 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.23.0': + '@babel/generator@7.24.4': dependencies: - '@babel/types': 7.23.0 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 + '@babel/types': 7.24.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - '@babel/helper-compilation-targets@7.22.15': + '@babel/helper-compilation-targets@7.23.6': dependencies: - '@babel/compat-data': 7.23.2 - '@babel/helper-validator-option': 7.22.15 - browserslist: 4.22.1 + '@babel/compat-data': 7.24.4 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.23.0 lru-cache: 5.1.1 semver: 6.3.1 @@ -9317,19 +9463,19 @@ snapshots: '@babel/helper-function-name@7.23.0': dependencies: '@babel/template': 7.22.15 - '@babel/types': 7.23.0 + '@babel/types': 7.24.0 '@babel/helper-hoist-variables@7.22.5': dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.24.0 '@babel/helper-module-imports@7.22.15': dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.24.0 - '@babel/helper-module-transforms@7.23.0(@babel/core@7.23.2)': + '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4)': dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.24.4 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 @@ -9338,23 +9484,23 @@ snapshots: '@babel/helper-simple-access@7.22.5': dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.24.0 '@babel/helper-split-export-declaration@7.22.6': dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.24.0 - '@babel/helper-string-parser@7.22.5': {} + '@babel/helper-string-parser@7.24.1': {} '@babel/helper-validator-identifier@7.22.20': {} - '@babel/helper-validator-option@7.22.15': {} + '@babel/helper-validator-option@7.23.5': {} - '@babel/helpers@7.23.2': + '@babel/helpers@7.24.4': dependencies: - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.2 - '@babel/types': 7.23.0 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 transitivePeerDependencies: - supports-color @@ -9364,9 +9510,16 @@ snapshots: chalk: 2.4.2 js-tokens: 4.0.0 - '@babel/parser@7.23.0': + '@babel/highlight@7.24.2': + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.0 + + '@babel/parser@7.24.4': dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.24.0 '@babel/runtime-corejs3@7.23.2': dependencies: @@ -9379,28 +9532,34 @@ snapshots: '@babel/template@7.22.15': dependencies: - '@babel/code-frame': 7.22.13 - '@babel/parser': 7.23.0 - '@babel/types': 7.23.0 + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.4 + '@babel/types': 7.24.0 - '@babel/traverse@7.23.2': + '@babel/template@7.24.0': dependencies: - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.23.0 + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.4 + '@babel/types': 7.24.0 + + '@babel/traverse@7.24.1': + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.4 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.0 - '@babel/types': 7.23.0 + '@babel/parser': 7.24.4 + '@babel/types': 7.24.0 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.23.0': + '@babel/types@7.24.0': dependencies: - '@babel/helper-string-parser': 7.22.5 + '@babel/helper-string-parser': 7.24.1 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 @@ -9478,14 +9637,14 @@ snapshots: transitivePeerDependencies: - react - '@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)': + '@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)': dependencies: '@clerk/backend': 0.38.3(react@18.2.0) '@clerk/clerk-react': 4.30.7(react@18.2.0) '@clerk/clerk-sdk-node': 4.13.11(react@18.2.0) '@clerk/shared': 1.3.3(react@18.2.0) '@clerk/types': 3.62.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) + 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) path-to-regexp: 6.2.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -9505,10 +9664,16 @@ snapshots: '@clickhouse/client-common@0.3.0': {} + '@clickhouse/client-common@1.0.1': {} + '@clickhouse/client-web@0.3.0': dependencies: '@clickhouse/client-common': 0.3.0 + '@clickhouse/client-web@1.0.1': + dependencies: + '@clickhouse/client-common': 1.0.1 + '@cloudflare/kv-asset-handler@0.3.1': dependencies: mime: 3.0.0 @@ -9659,10 +9824,6 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@drizzle-team/studio@0.0.39': - dependencies: - superjson: 2.2.1 - '@effect-ts/core@0.60.5': dependencies: '@effect-ts/system': 0.57.5 @@ -10085,6 +10246,8 @@ snapshots: dependencies: tailwindcss: 3.3.2(ts-node@10.9.1(@types/node@20.8.0)(typescript@5.4.5)) + '@hono/node-server@1.11.1': {} + '@hono/sentry@1.0.0(hono@4.0.0)': dependencies: hono: 4.0.0 @@ -10133,14 +10296,14 @@ snapshots: '@humanwhocodes/object-schema@2.0.1': {} - '@ianvs/prettier-plugin-sort-imports@4.1.0(prettier@3.0.3)': + '@ianvs/prettier-plugin-sort-imports@4.2.1(prettier@3.2.5)': dependencies: - '@babel/core': 7.23.2 - '@babel/generator': 7.23.0 - '@babel/parser': 7.23.0 - '@babel/traverse': 7.23.2 - '@babel/types': 7.23.0 - prettier: 3.0.3 + '@babel/core': 7.24.4 + '@babel/generator': 7.24.4 + '@babel/parser': 7.24.4 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + prettier: 3.2.5 semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -10195,10 +10358,18 @@ snapshots: '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/resolve-uri@3.1.1': {} '@jridgewell/set-array@1.1.2': {} + '@jridgewell/set-array@1.2.1': {} + '@jridgewell/sourcemap-codec@1.4.15': {} '@jridgewell/trace-mapping@0.3.20': @@ -10206,6 +10377,11 @@ snapshots: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.1 @@ -10449,9 +10625,9 @@ snapshots: '@one-ini/wasm@0.1.1': {} - '@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)': + '@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)': dependencies: - 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) + 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 '@opentelemetry/api-logs@0.39.1': @@ -11576,7 +11752,7 @@ snapshots: localforage: 1.10.0 tslib: 2.6.2 - '@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)': + '@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)': dependencies: '@rollup/plugin-commonjs': 24.0.0(rollup@2.78.0) '@sentry/core': 7.100.1 @@ -11588,7 +11764,7 @@ snapshots: '@sentry/vercel-edge': 7.100.1 '@sentry/webpack-plugin': 1.21.0(encoding@0.1.13) chalk: 3.0.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) + 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 resolve: 1.22.8 rollup: 2.78.0 @@ -12074,13 +12250,13 @@ snapshots: dependencies: '@trpc/server': 10.45.1 - '@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)': + '@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)': dependencies: '@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) + 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 react-dom: 18.2.0(react@18.2.0) @@ -12749,6 +12925,13 @@ snapshots: node-releases: 2.0.13 update-browserslist-db: 1.0.13(browserslist@4.22.1) + browserslist@4.23.0: + dependencies: + caniuse-lite: 1.0.30001612 + electron-to-chromium: 1.4.750 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) + buffer-equal-constant-time@1.0.1: {} buffer-from@1.1.2: {} @@ -12817,6 +13000,8 @@ snapshots: caniuse-lite@1.0.30001585: {} + caniuse-lite@1.0.30001612: {} + capnp-ts@0.7.0: dependencies: debug: 4.3.4 @@ -13296,10 +13481,11 @@ snapshots: dependencies: wordwrap: 1.0.0 - drizzle-kit@0.20.14: + drizzle-kit@0.20.17: dependencies: - '@drizzle-team/studio': 0.0.39 '@esbuild-kit/esm-loader': 2.6.5 + '@hono/node-server': 1.11.1 + '@hono/zod-validator': 0.2.1(hono@4.2.2)(zod@3.22.4) camelcase: 7.0.1 chalk: 5.3.0 commander: 9.5.0 @@ -13308,9 +13494,11 @@ snapshots: esbuild-register: 3.5.0(esbuild@0.19.12) glob: 8.1.0 hanji: 0.0.5 + hono: 4.2.2 json-diff: 0.9.0 minimatch: 7.4.6 semver: 7.5.4 + superjson: 2.2.1 zod: 3.22.4 transitivePeerDependencies: - supports-color @@ -13335,9 +13523,19 @@ snapshots: bun-types: 1.0.11 react: 18.2.0 - 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): + 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): + optionalDependencies: + '@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 + + 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): dependencies: - 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) + 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 duplexify@4.1.2: @@ -13362,6 +13560,8 @@ snapshots: electron-to-chromium@1.4.563: {} + electron-to-chromium@1.4.750: {} + emitter-component@1.1.2: {} emoji-regex@8.0.0: {} @@ -15705,12 +15905,16 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 + nanoid-dictionary@5.0.0-beta.1: {} + nanoid@3.3.6: {} nanoid@5.0.1: {} nanoid@5.0.2: {} + nanoid@5.0.7: {} + napi-build-utils@1.0.2: {} natural-compare@1.4.0: {} @@ -15719,12 +15923,12 @@ snapshots: netmask@2.0.2: {} - 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): + 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): dependencies: '@contentlayer/core': 0.3.4(esbuild@0.19.12) '@contentlayer/utils': 0.3.4 contentlayer: 0.3.4(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) + 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 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: @@ -15733,21 +15937,21 @@ snapshots: - markdown-wasm - supports-color - 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): + 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): dependencies: - 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) + 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 react-dom: 18.2.0(react@18.2.0) - 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): + 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): dependencies: - 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) + 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 react-dom: 18.2.0(react@18.2.0) next-tick@1.1.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): + 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): dependencies: '@next/env': 14.2.1 '@swc/helpers': 0.5.5 @@ -15757,7 +15961,7 @@ snapshots: postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.23.2)(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.24.4)(react@18.2.0) optionalDependencies: '@next/swc-darwin-arm64': 14.2.1 '@next/swc-darwin-x64': 14.2.1 @@ -15822,6 +16026,8 @@ snapshots: node-releases@2.0.13: {} + node-releases@2.0.14: {} + nopt@6.0.0: dependencies: abbrev: 1.1.1 @@ -16169,13 +16375,13 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-tailwindcss@0.5.4(@ianvs/prettier-plugin-sort-imports@4.1.0(prettier@3.0.3))(prettier@3.0.3): + prettier-plugin-tailwindcss@0.5.14(@ianvs/prettier-plugin-sort-imports@4.2.1(prettier@3.2.5))(prettier@3.2.5): dependencies: - prettier: 3.0.3 + prettier: 3.2.5 optionalDependencies: - '@ianvs/prettier-plugin-sort-imports': 4.1.0(prettier@3.0.3) + '@ianvs/prettier-plugin-sort-imports': 4.2.1(prettier@3.2.5) - prettier@3.0.3: {} + prettier@3.2.5: {} pretty-format@29.7.0: dependencies: @@ -17003,12 +17209,12 @@ snapshots: dependencies: inline-style-parser: 0.1.1 - styled-jsx@5.1.1(@babel/core@7.23.2)(react@18.2.0): + styled-jsx@5.1.1(@babel/core@7.24.4)(react@18.2.0): dependencies: client-only: 0.0.1 react: 18.2.0 optionalDependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.24.4 sucrase@3.34.0: dependencies: @@ -17549,6 +17755,12 @@ snapshots: escalade: 3.1.1 picocolors: 1.0.0 + update-browserslist-db@1.0.13(browserslist@4.23.0): + dependencies: + browserslist: 4.23.0 + escalade: 3.1.1 + picocolors: 1.0.0 + update-check@1.5.4: dependencies: registry-auth-token: 3.3.2 -- 2.51.2