Openstatus www.openstatus.dev

Feat/cron ping self monitor (#5)

* chore: create pipes and datasource

* chore: update cron and ping

* fix: metadata

* fix: cronjob

* wip: small fixes and updates

* fix: monitor position

* chore: extend tiny schema and improve cron

* chore: small adjustments

authored by

Maximilian Kaske and committed by
GitHub
842b06fa c6f8e4da

+855 -125
+3
.gitignore
··· 34 34 35 35 # vercel 36 36 .vercel 37 + 38 + # packages 39 + dist
+3
apps/web/package.json
··· 11 11 "dependencies": { 12 12 "@clerk/nextjs": "^4.21.3", 13 13 "@openstatus/db": "workspace:^", 14 + "@openstatus/tinybird": "workspace:*", 15 + "@openstatus/upstash": "workspace:*", 14 16 "@radix-ui/react-slot": "^1.0.2", 15 17 "@radix-ui/react-toast": "^1.1.4", 16 18 "@t3-oss/env-nextjs": "0.4.1", 17 19 "@upstash/redis": "^1.21.0", 18 20 "class-variance-authority": "^0.6.0", 19 21 "clsx": "^1.2.1", 22 + "date-fns": "^2.30.0", 20 23 "lucide-react": "^0.244.0", 21 24 "next": "13.4.6", 22 25 "next-plausible": "3.7.2",
+1 -1
apps/web/src/app/_components/background.tsx
··· 11 11 useMouseMove(); 12 12 return ( 13 13 <> 14 - <div className="absolute inset-0 z-[-1]"> 14 + <div className="fixed w-full h-full"> 15 15 <div className="absolute inset-0 z-[-1] bg-muted-foreground/20" /> 16 16 <div className="absolute left-[--x] top-[--y] z-[-1] h-56 w-56 rounded-full -translate-y-1/2 -translate-x-1/2 bg-gradient-radial from-muted-foreground/80 from-0% to-transparent to-90% blur-md" /> 17 17 <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%">
+41
apps/web/src/app/_components/status-container.tsx
··· 1 + import { Badge } from "@/components/ui/badge"; 2 + import { cn } from "@/lib/utils"; 3 + import { formatDistance } from "date-fns"; 4 + 5 + // TODO: consistency in wording 6 + export function StatusContainer({ 7 + events, 8 + }: { 9 + // FIXME: should be return type 10 + events: { id: string; timestamp: number; statusCode: number }[]; 11 + }) { 12 + return ( 13 + // OVERFLOW-HIDDEN 14 + <div className="relative border border-border rounded-lg backdrop-blur-[2px] p-4 mx-auto max-h-28 overflow-hidden"> 15 + <div className="absolute inset-0 bg-gradient-to-b from-background from-0% via-transparent via-50% to-background to-100%" /> 16 + <ul className="grid gap-2 text-xs text-muted-foreground"> 17 + {events.map(({ timestamp, statusCode }) => { 18 + return ( 19 + <li key={timestamp} className="flex items-center justify-between"> 20 + <p className="font-light"> 21 + {formatDistance(new Date(timestamp), new Date(), { 22 + addSuffix: true, 23 + includeSeconds: true, 24 + })} 25 + </p> 26 + <Badge variant="outline" className="text-xs ml-1 py-0.5 px-2"> 27 + {statusCode} 28 + <div 29 + className={cn( 30 + "rounded-full bg-foreground h-1.5 w-1.5 ml-1", 31 + statusCode === 200 ? "bg-green-500" : "bg-red-500" 32 + )} 33 + /> 34 + </Badge> 35 + </li> 36 + ); 37 + })} 38 + </ul> 39 + </div> 40 + ); 41 + }
+23
apps/web/src/app/_mocks/response-list.json
··· 1 + [ 2 + { 3 + "id": "openstatus", 4 + "timestamp": 1687718354031, 5 + "statusCode": 200, 6 + "latency": 221, 7 + "url": "http://localhost:3000/api/v0/ping" 8 + }, 9 + { 10 + "id": "openstatus", 11 + "timestamp": 1687718326838, 12 + "statusCode": 500, 13 + "latency": 660, 14 + "url": "http://localhost:3000/api/v0/ping" 15 + }, 16 + { 17 + "id": "openstatus", 18 + "timestamp": 1687718289489, 19 + "statusCode": 500, 20 + "latency": 332, 21 + "url": "http://localhost:3000/api/v0/ping" 22 + } 23 + ]
+2 -3
apps/web/src/app/api/og/route.tsx
··· 35 35 tw="flex w-full h-full absolute inset-0" 36 36 // not every css variable is supported 37 37 style={{ 38 - backgroundImage: "radial-gradient(#94a3b8 10%, transparent 10%)", 39 - backgroundPosition: "0px 0px, 6px 6px", 40 - backgroundSize: "12px 12px", 38 + backgroundImage: "radial-gradient(#cbd5e1 10%, transparent 10%)", 39 + backgroundSize: "32px 32px", 41 40 filter: "blur(1px)", // to be discussed... couldn't put it inside the content container 42 41 }} 43 42 ></div>
+48
apps/web/src/app/api/v0/cron/route.ts
··· 1 + import { env } from "@/env.mjs"; 2 + import { Tinybird, publishPingResponse } from "@openstatus/tinybird"; 3 + 4 + // TODO: create one route per region 5 + export const preferredRegion = ["fra1"]; 6 + export const runtime = "edge"; 7 + 8 + const DEFAULT_URL = 9 + process.env.NODE_ENV === "development" 10 + ? "http://localhost:3000" 11 + : process.env.VERCEL_URL; 12 + 13 + const tb = new Tinybird({ token: env.TINY_BIRD_API_KEY }); 14 + 15 + // TODO: create a package for monitor 16 + async function monitor( 17 + res: Response, 18 + { latency, url }: { latency: number; url: string } 19 + ) { 20 + return await publishPingResponse(tb)({ 21 + id: "openstatus", 22 + timestamp: Date.now(), 23 + statusCode: res.status, 24 + latency, 25 + url, 26 + // TODO: add region, res 27 + }); 28 + } 29 + 30 + // TODO: auth middleware for user API check (unkey) 31 + export async function GET(req: Request) { 32 + try { 33 + const { searchParams } = new URL(req.url); 34 + const hasUrl = searchParams.has("url"); 35 + const url = hasUrl ? searchParams.get("url") : `${DEFAULT_URL}/api/v0/ping`; 36 + 37 + const startTime = Date.now(); 38 + const res = await fetch(url, { cache: "no-store" }); 39 + const endTime = Date.now(); 40 + const latency = endTime - startTime; 41 + 42 + await monitor(res, { latency, url }); 43 + 44 + return new Response("OK", { status: 200 }); 45 + } catch (e) { 46 + return new Response("Error", { status: 500 }); 47 + } 48 + }
+17
apps/web/src/app/api/v0/ping/route.ts
··· 1 + import { Redis } from "@openstatus/upstash"; 2 + 3 + const redis = Redis.fromEnv(); 4 + 5 + export async function GET(req: Request) { 6 + const RANDOM = Math.random() > 0.9; 7 + try { 8 + // TODO: connect tinybird, upstash and planetscale 9 + await redis.ping(); 10 + if (RANDOM) { 11 + throw new Error("Arg"); 12 + } 13 + return new Response("OK", { status: 200 }); 14 + } catch { 15 + return new Response("Error", { status: 500 }); 16 + } 17 + }
+10 -6
apps/web/src/app/layout.tsx
··· 14 14 variable: "--font-calsans", 15 15 }); 16 16 17 + const TITLE = "OpenStatus"; 18 + const DESCRIPTION = 19 + "Open-Source alternative to your current monitoring service with beautiful status page"; 20 + 17 21 export const metadata: Metadata = { 18 - title: "openstatus.dev", 19 - description: "An Open Source Alternative for your next Status Page.", 22 + title: TITLE, 23 + description: DESCRIPTION, 20 24 metadataBase: new URL("https://openstatus.dev"), 21 25 twitter: { 22 26 images: [`/api/og`], 23 27 card: "summary_large_image", 24 - title: "openstatus.dev", 25 - description: "An Open Source Alternative for your next Status Page.", 28 + title: TITLE, 29 + description: DESCRIPTION, 26 30 }, 27 31 openGraph: { 28 32 type: "website", 29 33 images: [`/api/og`], 30 - title: "openstatus.dev", 31 - description: "An Open Source Alternative for your next Status Page.", 34 + title: TITLE, 35 + description: DESCRIPTION, 32 36 }, 33 37 }; 34 38
+16 -9
apps/web/src/app/page.tsx
··· 1 1 import { Badge } from "@/components/ui/badge"; 2 - 3 - import { Metadata } from "next"; 4 2 import { HeroForm } from "./_components/hero-form"; 3 + import { Tinybird, getResponseList } from "@openstatus/tinybird"; 4 + import { env } from "@/env.mjs"; 5 + import { StatusContainer } from "./_components/status-container"; 6 + import MOCK from "@/app/_mocks/response-list.json"; 5 7 6 - export const metadata: Metadata = { 7 - title: "Open-source monitoring service", 8 - description: 9 - "OpenStatus is an open source alternative to your current monitoring service with beautiful status page", 10 - }; 8 + const tb = new Tinybird({ token: env.TINY_BIRD_API_KEY }); 11 9 12 - export default function Page() { 10 + export default async function Page() { 11 + // REMINDER: to be removed 12 + let data = MOCK; 13 + if (process.env.NODE_ENV !== "development") { 14 + const res = await getResponseList(tb)({}); 15 + data = res.data; 16 + } 13 17 return ( 14 18 <main className="min-h-screen w-full flex flex-col p-4 md:p-8 space-y-6"> 15 - <div className="flex-1 flex flex-col justify-center"> 19 + <div className="flex-1 flex flex-col justify-center items-center gap-8"> 16 20 <div className="mx-auto max-w-xl text-center"> 17 21 <div className="rounded-lg border border-border backdrop-blur-[2px] p-8"> 18 22 <Badge>Coming Soon</Badge> ··· 25 29 </p> 26 30 <HeroForm /> 27 31 </div> 32 + </div> 33 + <div className="md:fixed bottom-8 right-8 max-w-max z-10"> 34 + <StatusContainer events={data} /> 28 35 </div> 29 36 </div> 30 37 <footer className="text-center text-sm text-muted-foreground mx-auto rounded-full px-4 py-2 border border-border backdrop-blur-[2px]">
+2
apps/web/src/hooks/use-mouse-move.tsx
··· 13 13 const targetX = e.clientX; 14 14 const targetY = e.clientY; 15 15 16 + // TODO: make it move around cursor so you feal like its floating around it 17 + // the animation requires tranformX and transformY on the HTML Element 16 18 body.style.setProperty("--x", `${targetX}px`); 17 19 body.style.setProperty("--y", `${targetY}px`); 18 20 }
+1 -1
apps/web/src/middleware.ts
··· 1 1 import { authMiddleware } from "@clerk/nextjs"; 2 2 3 3 export default authMiddleware({ 4 - publicRoutes: ["/", "/api/og"], 4 + publicRoutes: ["/", "/api/og", "/api/v0/ping", "/api/v0/cron"], // TODO: later "/api/v0/*" 5 5 }); 6 6 7 7 export const config = {
+8
apps/web/vercel.json
··· 1 + { 2 + "crons": [ 3 + { 4 + "path": "/api/v0/cron", 5 + "schedule": "*/10 * * * *" 6 + } 7 + ] 8 + }
+24
packages/tinybird/package.json
··· 1 + { 2 + "name": "@openstatus/tinybird", 3 + "version": "0.0.0", 4 + "main": "dist/index.mjs", 5 + "types": "dist/index.d.ts", 6 + "license": "MIT", 7 + "scripts": { 8 + "build": "tsup", 9 + "dev": "tsup --watch" 10 + }, 11 + "dependencies": { 12 + "@chronark/zod-bird": "^0.1.1", 13 + "zod": "^3.21.4" 14 + }, 15 + "devDependencies": { 16 + "@types/node": "20.3.1", 17 + "tsup": "^7.0.0", 18 + "typescript": "^5.1.0", 19 + "tsconfig": "workspace:*" 20 + }, 21 + "publishConfig": { 22 + "access": "public" 23 + } 24 + }
+43
packages/tinybird/src/client.ts
··· 1 + import * as z from "zod"; 2 + import type { Tinybird } from "@chronark/zod-bird"; 3 + 4 + // REMINDER: 5 + // const tb = new Tinybird({ token: process.env.TINYBIRD_TOKEN! }); 6 + 7 + // TODO: think of a better name `publishHttpResponse` 8 + export function publishPingResponse(tb: Tinybird) { 9 + return tb.buildIngestEndpoint({ 10 + datasource: "ping_response__v0", 11 + event: z.object({ 12 + id: z.string(), 13 + timestamp: z.number().int(), 14 + statusCode: z.number().int(), 15 + latency: z.number().int(), // in ms 16 + url: z.string(), 17 + metadata: z.string().optional().default(""), // TODO: object + stringify json 18 + }), 19 + }); 20 + } 21 + 22 + export function getResponseList(tb: Tinybird) { 23 + return tb.buildPipe({ 24 + pipe: "response_list__v0", 25 + parameters: z.object({ 26 + siteId: z.string().default("openstatus"), // REMINDER: remove default once alpha 27 + start: z.number().int().default(0), // always start from a date 28 + end: z.number().int().optional(), 29 + limit: z.number().int().optional().default(50), // used for pagination 30 + }), 31 + data: z.object({ 32 + id: z.string(), 33 + timestamp: z.number().int(), // .transform(t => new Date(t)) 34 + statusCode: z.number().int(), 35 + latency: z.number().int(), 36 + url: z.string(), 37 + // metadata: z.string().transform((m) => JSON.parse(m)) 38 + }), 39 + opts: { 40 + revalidate: 5 * 60, // 5 minutes cache validation 41 + }, 42 + }); 43 + }
+2
packages/tinybird/src/index.ts
··· 1 + export * from "./client"; 2 + export * from "@chronark/zod-bird";
+7
packages/tinybird/tsconfig.json
··· 1 + { 2 + "extends": "tsconfig/base.json", 3 + "exclude": ["dist"], 4 + "compilerOptions": { 5 + "outDir": "dist" 6 + } 7 + }
+11
packages/tinybird/tsup.config.ts
··· 1 + import { defineConfig } from "tsup"; 2 + 3 + export default defineConfig({ 4 + entry: ["src/index.ts"], 5 + splitting: false, 6 + sourcemap: true, 7 + clean: true, 8 + dts: "src/index.ts", 9 + format: ["esm"], 10 + // watch if NODE_ENV === "development" 11 + });
+26
packages/upstash/package.json
··· 1 + { 2 + "name": "@openstatus/upstash", 3 + "version": "0.0.0", 4 + "main": "dist/index.mjs", 5 + "types": "dist/index.d.ts", 6 + "license": "MIT", 7 + "scripts": { 8 + "build": "tsup", 9 + "dev": "tsup --watch" 10 + }, 11 + "dependencies": { 12 + "@upstash/kafka": "^1.3.3", 13 + "@upstash/qstash": "^0.3.6", 14 + "@upstash/ratelimit": "^0.4.3", 15 + "@upstash/redis": "^1.21.0" 16 + }, 17 + "devDependencies": { 18 + "@types/node": "20.3.1", 19 + "tsconfig": "workspace:*", 20 + "tsup": "^7.0.0", 21 + "typescript": "^5.1.0" 22 + }, 23 + "publishConfig": { 24 + "access": "public" 25 + } 26 + }
+2
packages/upstash/src/index.ts
··· 1 + export * from "./redis/client"; 2 + export * from "@upstash/redis";
+4
packages/upstash/src/redis/client.ts
··· 1 + import { Redis } from "@upstash/redis"; 2 + 3 + // TO BE TESTED 4 + export const redis = Redis.fromEnv();
+7
packages/upstash/tsconfig.json
··· 1 + { 2 + "extends": "tsconfig/base.json", 3 + "exclude": ["dist"], 4 + "compilerOptions": { 5 + "outDir": "dist" 6 + } 7 + }
+11
packages/upstash/tsup.config.ts
··· 1 + import { defineConfig } from "tsup"; 2 + 3 + export default defineConfig({ 4 + entry: ["src/index.ts"], 5 + splitting: false, 6 + sourcemap: true, 7 + clean: true, 8 + dts: "src/index.ts", 9 + format: ["esm"], 10 + // watch if NODE_ENV === "development" 11 + });
+540 -104
pnpm-lock.yaml
··· 22 22 version: 2.8.8 23 23 turbo: 24 24 specifier: latest 25 - version: 1.10.5 25 + version: 1.10.3 26 26 typescript: 27 27 specifier: 5.1.3 28 28 version: 5.1.3 ··· 69 69 '@openstatus/db': 70 70 specifier: workspace:^ 71 71 version: link:../../packages/db 72 + '@openstatus/tinybird': 73 + specifier: workspace:* 74 + version: link:../../packages/tinybird 75 + '@openstatus/upstash': 76 + specifier: workspace:* 77 + version: link:../../packages/upstash 72 78 '@radix-ui/react-slot': 73 79 specifier: ^1.0.2 74 80 version: 1.0.2(@types/react@18.2.12)(react@18.2.0) ··· 87 93 clsx: 88 94 specifier: ^1.2.1 89 95 version: 1.2.1 96 + date-fns: 97 + specifier: ^2.30.0 98 + version: 2.30.0 90 99 lucide-react: 91 100 specifier: ^0.244.0 92 101 version: 0.244.0(react@18.2.0) ··· 211 220 specifier: 5.1.3 212 221 version: 5.1.3 213 222 223 + packages/tinybird: 224 + dependencies: 225 + '@chronark/zod-bird': 226 + specifier: ^0.1.1 227 + version: 0.1.1 228 + zod: 229 + specifier: ^3.21.4 230 + version: 3.21.4 231 + devDependencies: 232 + '@types/node': 233 + specifier: 20.3.1 234 + version: 20.3.1 235 + tsconfig: 236 + specifier: workspace:* 237 + version: link:../tsconfig 238 + tsup: 239 + specifier: ^7.0.0 240 + version: 7.0.0(typescript@5.1.3) 241 + typescript: 242 + specifier: ^5.1.0 243 + version: 5.1.3 244 + 214 245 packages/tsconfig: {} 215 246 216 247 packages/ui: ··· 237 268 specifier: 5.1.3 238 269 version: 5.1.3 239 270 271 + packages/upstash: 272 + dependencies: 273 + '@upstash/kafka': 274 + specifier: ^1.3.3 275 + version: 1.3.3 276 + '@upstash/qstash': 277 + specifier: ^0.3.6 278 + version: 0.3.6 279 + '@upstash/ratelimit': 280 + specifier: ^0.4.3 281 + version: 0.4.3 282 + '@upstash/redis': 283 + specifier: ^1.21.0 284 + version: 1.21.0 285 + devDependencies: 286 + '@types/node': 287 + specifier: 20.3.1 288 + version: 20.3.1 289 + tsconfig: 290 + specifier: workspace:* 291 + version: link:../tsconfig 292 + tsup: 293 + specifier: ^7.0.0 294 + version: 7.0.0(typescript@5.1.3) 295 + typescript: 296 + specifier: ^5.1.0 297 + version: 5.1.3 298 + 240 299 packages: 241 300 242 301 /@alloc/quick-lru@5.2.0: ··· 256 315 engines: {node: '>=6.9.0'} 257 316 dependencies: 258 317 regenerator-runtime: 0.13.11 318 + dev: false 319 + 320 + /@chronark/zod-bird@0.1.1: 321 + resolution: {integrity: sha512-6UD9yhNIsvIP0FUqNuZ+bByQLc0IY2eQpeQn55CsqvZziGKQuPGqJzyq6o283fDgkKXTbXmQ7zC/LDBX6yrBhA==} 322 + dependencies: 323 + zod: 3.21.4 259 324 dev: false 260 325 261 326 /@clerk/backend@0.23.1: ··· 343 408 '@jridgewell/trace-mapping': 0.3.9 344 409 dev: true 345 410 411 + /@deno/shim-crypto@0.3.1: 412 + resolution: {integrity: sha512-ed4pNnfur6UbASEgF34gVxR9p7Mc3qF+Ygbmjiil8ws5IhNFhPDFy5vE5hQAUA9JmVsSxXPcVLM5Rf8LOZqQ5Q==} 413 + dev: false 414 + 346 415 /@esbuild-kit/core-utils@3.1.0: 347 416 resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} 348 417 dependencies: ··· 366 435 dev: true 367 436 optional: true 368 437 369 - /@esbuild/android-arm64@0.18.7: 370 - resolution: {integrity: sha512-o0VVztxJPkfDYbaU1tA1G1iwKiBh6Zt3bX5OdHDoITMFdRg+Mgdt3nHXMEtNlIjYA/Xn6hmlOYDHjJfQUduPuw==} 438 + /@esbuild/android-arm64@0.18.10: 439 + resolution: {integrity: sha512-ynm4naLbNbK0ajf9LUWtQB+6Vfg1Z/AplArqr4tGebC00Z6m9Y91OVIcjDa461wGcZwcaHYaZAab4yJxfhisTQ==} 440 + engines: {node: '>=12'} 441 + cpu: [arm64] 442 + os: [android] 443 + requiresBuild: true 444 + dev: true 445 + optional: true 446 + 447 + /@esbuild/android-arm64@0.18.5: 448 + resolution: {integrity: sha512-410IPUj7ZOxZ2dwK0B7o7Nibu7YEyaLBvYOfYBpuA1TpY0fOkDM5r4bwn+hT8Uma06DBI4RnYNN09fn55PYInQ==} 371 449 engines: {node: '>=12'} 372 450 cpu: [arm64] 373 451 os: [android] ··· 384 462 dev: true 385 463 optional: true 386 464 387 - /@esbuild/android-arm@0.18.7: 388 - resolution: {integrity: sha512-nDQ7AC5WVKOqxaip/E5YbaRgnilBMsoGKjoGLCeCOYNePaBCBDwJsLfa2fn3FEtktiLaAF990W592avsHjJ/Vg==} 465 + /@esbuild/android-arm@0.18.10: 466 + resolution: {integrity: sha512-3KClmVNd+Fku82uZJz5C4Rx8m1PPmWUFz5Zkw8jkpZPOmsq+EG1TTOtw1OXkHuX3WczOFQigrtf60B1ijKwNsg==} 467 + engines: {node: '>=12'} 468 + cpu: [arm] 469 + os: [android] 470 + requiresBuild: true 471 + dev: true 472 + optional: true 473 + 474 + /@esbuild/android-arm@0.18.5: 475 + resolution: {integrity: sha512-+8GXQzuASxGg/rb47Z5zJe3vjOfL7RRce/DILuk6kbB/8HO0p3CPo72CbR349P2K8YP1h5NvNqU+2GDRbNJylw==} 389 476 engines: {node: '>=12'} 390 477 cpu: [arm] 391 478 os: [android] ··· 402 489 dev: true 403 490 optional: true 404 491 405 - /@esbuild/android-x64@0.18.7: 406 - resolution: {integrity: sha512-ga8Dtpb01GorCi1dk3jEwDk3AK/3F+cR5P+//Tl0ERL2K2pK/J1f3t8hcJ+RRt3UYBV/uTL9GEnx7touX0KRPQ==} 492 + /@esbuild/android-x64@0.18.10: 493 + resolution: {integrity: sha512-vFfXj8P9Yfjh54yqUDEHKzqzYuEfPyAOl3z7R9hjkwt+NCvbn9VMxX+IILnAfdImRBfYVItgSUsqGKhJFnBwZw==} 494 + engines: {node: '>=12'} 495 + cpu: [x64] 496 + os: [android] 497 + requiresBuild: true 498 + dev: true 499 + optional: true 500 + 501 + /@esbuild/android-x64@0.18.5: 502 + resolution: {integrity: sha512-+fdfceCYwcz9OReheSWYOGaAAt03n0BnG5/UW9tyGyo15PjSOF14ylxfjvz+0atDx0S/RxyezMsH/mbnWhnC8w==} 407 503 engines: {node: '>=12'} 408 504 cpu: [x64] 409 505 os: [android] ··· 420 516 dev: true 421 517 optional: true 422 518 423 - /@esbuild/darwin-arm64@0.18.7: 424 - resolution: {integrity: sha512-FVDOdfgyGOOISpd0b+UtA6YNbu5+RzZu7kDztjVsA/iZhGnyxbCR/vZ+B2j5yxbMZ9j3iz5uFiHIq1sl6nrZ0Q==} 519 + /@esbuild/darwin-arm64@0.18.10: 520 + resolution: {integrity: sha512-k2OJQ7ZxE6sVc91+MQeZH9gFeDAH2uIYALPAwTjTCvcPy9Dzrf7V7gFUQPYkn09zloWhQ+nvxWHia2x2ZLR0sQ==} 521 + engines: {node: '>=12'} 522 + cpu: [arm64] 523 + os: [darwin] 524 + requiresBuild: true 525 + dev: true 526 + optional: true 527 + 528 + /@esbuild/darwin-arm64@0.18.5: 529 + resolution: {integrity: sha512-L7noeTaus5xEtgd5J7u/lGrZfSiYkvZb0gOD7rvKTuuWbdGM4bunz5DUFsWBbEIlloslpOO5PDy4Hnd6mZT20A==} 425 530 engines: {node: '>=12'} 426 531 cpu: [arm64] 427 532 os: [darwin] ··· 438 543 dev: true 439 544 optional: true 440 545 441 - /@esbuild/darwin-x64@0.18.7: 442 - resolution: {integrity: sha512-w7aeD1UjDFXqyrZQLBIPYGmLR+gJsl+7QSwmSz+nVrCZOB7cyWEkIjCF8s4inUD3ja3WtKUIqzX5S4qDnU5q7Q==} 546 + /@esbuild/darwin-x64@0.18.10: 547 + resolution: {integrity: sha512-tnz/mdZk1L1Z3WpGjin/L2bKTe8/AKZpI8fcCLtH+gq8WXWsCNJSxlesAObV4qbtTl6pG5vmqFXfWUQ5hV8PAQ==} 548 + engines: {node: '>=12'} 549 + cpu: [x64] 550 + os: [darwin] 551 + requiresBuild: true 552 + dev: true 553 + optional: true 554 + 555 + /@esbuild/darwin-x64@0.18.5: 556 + resolution: {integrity: sha512-eA39B8SxbxRdSSILD4AsePzvJiVao6ZaYrcTOJqg89jnnMEGR/EAh+ehV7E4GOx4WXQoWeJRP1P9JQSzIrROeg==} 443 557 engines: {node: '>=12'} 444 558 cpu: [x64] 445 559 os: [darwin] ··· 456 570 dev: true 457 571 optional: true 458 572 459 - /@esbuild/freebsd-arm64@0.18.7: 460 - resolution: {integrity: sha512-wKyySDdoKVOPn9eDci/b3eP3EJVAVXC3b2CiaHphhCKfh4n5pWLwj7Ue96anK1HnpcZ0Uti8Sw9xq3Im0earHA==} 573 + /@esbuild/freebsd-arm64@0.18.10: 574 + resolution: {integrity: sha512-QJluV0LwBrbHnYYwSKC+K8RGz0g/EyhpQH1IxdoFT0nM7PfgjE+aS8wxq/KFEsU0JkL7U/EEKd3O8xVBxXb2aA==} 575 + engines: {node: '>=12'} 576 + cpu: [arm64] 577 + os: [freebsd] 578 + requiresBuild: true 579 + dev: true 580 + optional: true 581 + 582 + /@esbuild/freebsd-arm64@0.18.5: 583 + resolution: {integrity: sha512-Eg1UnkTZHfsphgcy1Wj/McNModSO/F+kqtWqvtvEZc9BAgvdwxAt11BESgBczU+Gti0G2dLvHs0Sfb3gavwhGg==} 461 584 engines: {node: '>=12'} 462 585 cpu: [arm64] 463 586 os: [freebsd] ··· 474 597 dev: true 475 598 optional: true 476 599 477 - /@esbuild/freebsd-x64@0.18.7: 478 - resolution: {integrity: sha512-rbfjbgSvzWRjQMKIntogK1d2oIAiA/ZVayXfK1WjcIIMQYLg74sAoT8CZBj30+bwn13YR0t6lgIxA1mJaS2Lhw==} 600 + /@esbuild/freebsd-x64@0.18.10: 601 + resolution: {integrity: sha512-Hi/ycUkS6KTw+U9G5PK5NoK7CZboicaKUSVs0FSiPNtuCTzK6HNM4DIgniH7hFaeuszDS9T4dhAHWiLSt/Y5Ng==} 602 + engines: {node: '>=12'} 603 + cpu: [x64] 604 + os: [freebsd] 605 + requiresBuild: true 606 + dev: true 607 + optional: true 608 + 609 + /@esbuild/freebsd-x64@0.18.5: 610 + resolution: {integrity: sha512-GNTMSJ55gl7Tf5VUqVRkMJhRGzH6vI9vFBfZCj4Zjm7RgfXCWxLnTyjMgZZKT8pOzW40KD2KlrGbqwnnJWyGWw==} 479 611 engines: {node: '>=12'} 480 612 cpu: [x64] 481 613 os: [freebsd] ··· 492 624 dev: true 493 625 optional: true 494 626 495 - /@esbuild/linux-arm64@0.18.7: 496 - resolution: {integrity: sha512-cwfxKYroaD5BZ42NsfxdVU1issD2NxcuJHlCNsN5LtWq+kZMpwmIVDCJxKlgLIG7zH/4yq8lTuZJurxq058GsA==} 627 + /@esbuild/linux-arm64@0.18.10: 628 + resolution: {integrity: sha512-Nz6XcfRBOO7jSrVpKAyEyFOPGhySPNlgumSDhWAspdQQ11ub/7/NZDMhWDFReE9QH/SsCOCLQbdj0atAk/HMOQ==} 629 + engines: {node: '>=12'} 630 + cpu: [arm64] 631 + os: [linux] 632 + requiresBuild: true 633 + dev: true 634 + optional: true 635 + 636 + /@esbuild/linux-arm64@0.18.5: 637 + resolution: {integrity: sha512-r08LmhqyPRj6FtuNPBTu8BliKh6h+oNEhMkWmmR/aWs4DWjDOivyDfLGznPdgtSThL23fk1QgSBUEbuCIzjA2A==} 497 638 engines: {node: '>=12'} 498 639 cpu: [arm64] 499 640 os: [linux] ··· 510 651 dev: true 511 652 optional: true 512 653 513 - /@esbuild/linux-arm@0.18.7: 514 - resolution: {integrity: sha512-GpUBqqJnQ+7qdb7NqKNVj7TgD2JnLrEdzPtatPow77Me/EQ01GE1tHKZLePqhf5thdLDb5Se2Kcf4D9WTbSjmw==} 654 + /@esbuild/linux-arm@0.18.10: 655 + resolution: {integrity: sha512-HfFoxY172tVHPIvJy+FHxzB4l8xU7e5cxmNS11cQ2jt4JWAukn/7LXaPdZid41UyTweqa4P/1zs201gRGCTwHw==} 656 + engines: {node: '>=12'} 657 + cpu: [arm] 658 + os: [linux] 659 + requiresBuild: true 660 + dev: true 661 + optional: true 662 + 663 + /@esbuild/linux-arm@0.18.5: 664 + resolution: {integrity: sha512-6R+vEIyfEvp+gOWKSc+m6hdnhWKQYzicqONQYiDGT6qepc6OGsLEZcyFwoz6BvFx5j233CBWMcJ69eXFrwXw9A==} 515 665 engines: {node: '>=12'} 516 666 cpu: [arm] 517 667 os: [linux] ··· 528 678 dev: true 529 679 optional: true 530 680 531 - /@esbuild/linux-ia32@0.18.7: 532 - resolution: {integrity: sha512-SsvsGStwbArBcB/XNh+2MvUtgOLp0CR6Hn1PBWcdApCuAaMibHCDyzHS06+u/YOD1UpeXFHJZphix61HeVMH/w==} 681 + /@esbuild/linux-ia32@0.18.10: 682 + resolution: {integrity: sha512-otMdmSmkMe+pmiP/bZBjfphyAsTsngyT9RCYwoFzqrveAbux9nYitDTpdgToG0Z0U55+PnH654gCH2GQ1aB6Yw==} 683 + engines: {node: '>=12'} 684 + cpu: [ia32] 685 + os: [linux] 686 + requiresBuild: true 687 + dev: true 688 + optional: true 689 + 690 + /@esbuild/linux-ia32@0.18.5: 691 + resolution: {integrity: sha512-ph6M9iEMc6BHgv2XuIE8qeQrQCH+2l116c8L9ysmmXYwpNXa3E7JNIu/O7hI0I9qDvh1P19AGbIh+/y0GAZijA==} 533 692 engines: {node: '>=12'} 534 693 cpu: [ia32] 535 694 os: [linux] ··· 546 705 dev: true 547 706 optional: true 548 707 549 - /@esbuild/linux-loong64@0.18.7: 550 - resolution: {integrity: sha512-WOqQ0eaWGE/e9vmbxFT2exbWuXxHuG8ld0fN7oX5f0v7W6oveUIF4DLJYVae93t1+Icv5R0NBo8wv/o4hEvxBQ==} 708 + /@esbuild/linux-loong64@0.18.10: 709 + resolution: {integrity: sha512-t8tjFuON1koxskzQ4VFoh0T5UDUMiLYjwf9Wktd0tx8AoK6xgU+5ubKOpWpcnhEQ2tESS5u0v6QuN8PX/ftwcQ==} 710 + engines: {node: '>=12'} 711 + cpu: [loong64] 712 + os: [linux] 713 + requiresBuild: true 714 + dev: true 715 + optional: true 716 + 717 + /@esbuild/linux-loong64@0.18.5: 718 + resolution: {integrity: sha512-s6Nup5FMQ8R8OKJG2rSxtV40s8LRdfC73XGHGaFlGiC+2SeCyq4dl3MMfLdzLowYzyDjfc4GRrXWUNMX3kNxYA==} 551 719 engines: {node: '>=12'} 552 720 cpu: [loong64] 553 721 os: [linux] ··· 564 732 dev: true 565 733 optional: true 566 734 567 - /@esbuild/linux-mips64el@0.18.7: 568 - resolution: {integrity: sha512-/dKQ3OLr2Tmj0kuf4ZJioD+qnADUEJSBaiuDbk8v5602HnNNBSGHPrEB6S8PSb8y8jWsX9MMnxqk5KpLTf86OQ==} 735 + /@esbuild/linux-mips64el@0.18.10: 736 + resolution: {integrity: sha512-+dUkcVzcfEJHz3HEnVpIJu8z8Wdn2n/nWMWdl6FVPFGJAVySO4g3+XPzNKFytVFwf8hPVDwYXzVcu8GMFqsqZw==} 737 + engines: {node: '>=12'} 738 + cpu: [mips64el] 739 + os: [linux] 740 + requiresBuild: true 741 + dev: true 742 + optional: true 743 + 744 + /@esbuild/linux-mips64el@0.18.5: 745 + resolution: {integrity: sha512-DxW4nNDIGbivZxnJD01C5PlwKPpin8YgSwWtToCy4w4lNigT7Iaf5A+wcPT2laibdgbcgPKpPOXUg6RFGTt8xA==} 569 746 engines: {node: '>=12'} 570 747 cpu: [mips64el] 571 748 os: [linux] ··· 582 759 dev: true 583 760 optional: true 584 761 585 - /@esbuild/linux-ppc64@0.18.7: 586 - resolution: {integrity: sha512-x/k1+daIqiGJt0Yhr5llFJ/zkRg1XAqcS2ntAYzS3pHogO8oIyc+LjsINgVyFCeFMFUZ9Ae9W5z2Ib05bMum3g==} 762 + /@esbuild/linux-ppc64@0.18.10: 763 + resolution: {integrity: sha512-sO3PjjxEGy+PY2qkGe2gwJbXdZN9wAYpVBZWFD0AwAoKuXRkWK0/zaMQ5ekUFJDRDCRm8x5U0Axaub7ynH/wVg==} 764 + engines: {node: '>=12'} 765 + cpu: [ppc64] 766 + os: [linux] 767 + requiresBuild: true 768 + dev: true 769 + optional: true 770 + 771 + /@esbuild/linux-ppc64@0.18.5: 772 + resolution: {integrity: sha512-BksOs2uYTafS+u75QiN4RoLbEMNjE192adJCBalncI3E2PWyR2i1kEs9rEghHK7pw0SD0uWgV9otRmV7G5b2lQ==} 587 773 engines: {node: '>=12'} 588 774 cpu: [ppc64] 589 775 os: [linux] ··· 600 786 dev: true 601 787 optional: true 602 788 603 - /@esbuild/linux-riscv64@0.18.7: 604 - resolution: {integrity: sha512-LegTDzK9gL/sTkiZUGYLigTISwppZJvQL3MRmFgXgHrj3IzdWkPgMwEtOItK3YiFzhBSSNyKA0mSKEg4UuK8JQ==} 789 + /@esbuild/linux-riscv64@0.18.10: 790 + resolution: {integrity: sha512-JDtdbJg3yjDeXLv4lZYE1kiTnxv73/8cbPHY9T/dUKi8rYOM/k5b3W4UJLMUksuQ6nTm5c89W1nADsql6FW75A==} 791 + engines: {node: '>=12'} 792 + cpu: [riscv64] 793 + os: [linux] 794 + requiresBuild: true 795 + dev: true 796 + optional: true 797 + 798 + /@esbuild/linux-riscv64@0.18.5: 799 + resolution: {integrity: sha512-mGv8BOJXsV7bZyjyMdeDs55CDXZ5vrY3oKa58DNRz2vPn54dREyj4BhhyWuqSuzSURJhFg7pM/1fI2vnAHGkHw==} 605 800 engines: {node: '>=12'} 606 801 cpu: [riscv64] 607 802 os: [linux] ··· 618 813 dev: true 619 814 optional: true 620 815 621 - /@esbuild/linux-s390x@0.18.7: 622 - resolution: {integrity: sha512-fjBl45O8ivc3Nl14hdGpbHoVtdHnYGsLpwnlv2rNyb5NOsgY3Y8EhVe/fqR9ndHgO4eL68knKxkrRveEJq+v1g==} 816 + /@esbuild/linux-s390x@0.18.10: 817 + resolution: {integrity: sha512-NLuSKcp8WckjD2a7z5kzLiCywFwBTMlIxDNuud1AUGVuwBBJSkuubp6cNjJ0p5c6CZaA3QqUGwjHJBiG1SoOFw==} 818 + engines: {node: '>=12'} 819 + cpu: [s390x] 820 + os: [linux] 821 + requiresBuild: true 822 + dev: true 823 + optional: true 824 + 825 + /@esbuild/linux-s390x@0.18.5: 826 + resolution: {integrity: sha512-m4uIYyrl5znGnNHgiM/Zsw6I9Se513NqdTxeUxZ66/VDWbuUp8ACe1KOSpwF4NNxfYy6Q3W8beZsIdF4F85q8Q==} 623 827 engines: {node: '>=12'} 624 828 cpu: [s390x] 625 829 os: [linux] ··· 636 840 dev: true 637 841 optional: true 638 842 639 - /@esbuild/linux-x64@0.18.7: 640 - resolution: {integrity: sha512-apYLJsg3wd3hW8nEt7H++8c8rTDvwXxX7h7YeI89g1RDPCT2QSXTO/xT1BCvFa/BFFoau+yvepQg2o5556FIWQ==} 843 + /@esbuild/linux-x64@0.18.10: 844 + resolution: {integrity: sha512-wj2KRsCsFusli+6yFgNO/zmmLslislAWryJnodteRmGej7ZzinIbMdsyp13rVGde88zxJd5vercNYK9kuvlZaQ==} 845 + engines: {node: '>=12'} 846 + cpu: [x64] 847 + os: [linux] 848 + requiresBuild: true 849 + dev: true 850 + optional: true 851 + 852 + /@esbuild/linux-x64@0.18.5: 853 + resolution: {integrity: sha512-R1C7X30YjXmOZYOzx4dJ/QvRNfrkK/sDCFfcGNhlHFX6B/iodJdk81h7EhnKVUQy+3BaARxF7udd91iSSzMlbQ==} 641 854 engines: {node: '>=12'} 642 855 cpu: [x64] 643 856 os: [linux] ··· 654 867 dev: true 655 868 optional: true 656 869 657 - /@esbuild/netbsd-x64@0.18.7: 658 - resolution: {integrity: sha512-f82sUnrzdoW4MiiCDn1G3RSsPH8+no+okDhkHgGTGa+5F5wZCyxdXxzR6ctsiimvyPn9FIu9Zs+MesVsBRwyTw==} 870 + /@esbuild/netbsd-x64@0.18.10: 871 + resolution: {integrity: sha512-pQ9QqxEPI3cVRZyUtCoZxhZK3If+7RzR8L2yz2+TDzdygofIPOJFaAPkEJ5rYIbUO101RaiYxfdOBahYexLk5A==} 872 + engines: {node: '>=12'} 873 + cpu: [x64] 874 + os: [netbsd] 875 + requiresBuild: true 876 + dev: true 877 + optional: true 878 + 879 + /@esbuild/netbsd-x64@0.18.5: 880 + resolution: {integrity: sha512-MABnKzjMcXjO0NEYyexOhqjcrgM6dE8BXnm+lctm2x2aPpYg5iL0Ew3aABSTZyp9dS3Z4VzFu5PPoOYEw8akTQ==} 659 881 engines: {node: '>=12'} 660 882 cpu: [x64] 661 883 os: [netbsd] ··· 672 894 dev: true 673 895 optional: true 674 896 675 - /@esbuild/openbsd-x64@0.18.7: 676 - resolution: {integrity: sha512-1TNDfpFYhIloHeqSRbJFjHFMYtTJWgqI2+S9uCLVCWrADLl5tCe8vQKDfkM7Afz/lZyqi6qEX/Eg2KA5S7FcNQ==} 897 + /@esbuild/openbsd-x64@0.18.10: 898 + resolution: {integrity: sha512-k8GTIIW9I8pEEfoOUm32TpPMgSg06JhL5DO+ql66aLTkOQUs0TxCA67Wi7pv6z8iF8STCGcNbm3UWFHLuci+ag==} 899 + engines: {node: '>=12'} 900 + cpu: [x64] 901 + os: [openbsd] 902 + requiresBuild: true 903 + dev: true 904 + optional: true 905 + 906 + /@esbuild/openbsd-x64@0.18.5: 907 + resolution: {integrity: sha512-aU7R0tLIUMaQuAgBjKrq02Z98rcY9Pxk76hynSqcGeld2C/ro1uBbS2i9rh7vdwBAY0rG08Og4wnDnlx5rU+fQ==} 677 908 engines: {node: '>=12'} 678 909 cpu: [x64] 679 910 os: [openbsd] ··· 690 921 dev: true 691 922 optional: true 692 923 693 - /@esbuild/sunos-x64@0.18.7: 694 - resolution: {integrity: sha512-lBhsHaM6EYCmzQCj+xeFev+dgqTgpSRqF7qXrxp5V4waFuidTBbWgqSXY5rsLRNLOyMMCh1cA+RqF8UL30oOJQ==} 924 + /@esbuild/sunos-x64@0.18.10: 925 + resolution: {integrity: sha512-vIGYJIdEI6d4JBucAx8py792G8J0GP40qSH+EvSt80A4zvGd6jph+5t1g+eEXcS2aRpgZw6CrssNCFZxTdEsxw==} 926 + engines: {node: '>=12'} 927 + cpu: [x64] 928 + os: [sunos] 929 + requiresBuild: true 930 + dev: true 931 + optional: true 932 + 933 + /@esbuild/sunos-x64@0.18.5: 934 + resolution: {integrity: sha512-ngm3fVv2VxufI8zH/Phk0mYkgvFjFGnS+l7uxxd20mmeLTNI/8OXDJpNqTUbvzJh3tqhI/Gof0N2+5xJbqEaxA==} 695 935 engines: {node: '>=12'} 696 936 cpu: [x64] 697 937 os: [sunos] ··· 708 948 dev: true 709 949 optional: true 710 950 711 - /@esbuild/win32-arm64@0.18.7: 712 - resolution: {integrity: sha512-p9ipv7rPKitXAAeufg5BzmyYZHZtFfrLGUX15+AxpTQqSZDAZd2wIusaOW5oONTf8RB53ujIqQw7W0QnZMuiUw==} 951 + /@esbuild/win32-arm64@0.18.10: 952 + resolution: {integrity: sha512-kRhNcMZFGMW+ZHCarAM1ypr8OZs0k688ViUCetVCef9p3enFxzWeBg9h/575Y0nsFu0ZItluCVF5gMR2pwOEpA==} 953 + engines: {node: '>=12'} 954 + cpu: [arm64] 955 + os: [win32] 956 + requiresBuild: true 957 + dev: true 958 + optional: true 959 + 960 + /@esbuild/win32-arm64@0.18.5: 961 + resolution: {integrity: sha512-XqpS89+MGLzR8YtQQkBYsLCfAv1ySflMb+FEH99rOp6kOPv/ORO+ujEB5ICDBZZbvYqB75uFrNELo1BVEQbS3g==} 713 962 engines: {node: '>=12'} 714 963 cpu: [arm64] 715 964 os: [win32] ··· 726 975 dev: true 727 976 optional: true 728 977 729 - /@esbuild/win32-ia32@0.18.7: 730 - resolution: {integrity: sha512-WmNxuE+j1wUT2rK+e1Oakx3zobS1rPpQudPytGM4nxXEGv0gpXEvnZnrykRwriNFbGVCwFJoE4txayjW76LsCw==} 978 + /@esbuild/win32-ia32@0.18.10: 979 + resolution: {integrity: sha512-AR9PX1whYaYh9p0EOaKna0h48F/A101Mt/ag72+kMkkBZXPQ7cjbz2syXI/HI3OlBdUytSdHneljfjvUoqwqiQ==} 980 + engines: {node: '>=12'} 981 + cpu: [ia32] 982 + os: [win32] 983 + requiresBuild: true 984 + dev: true 985 + optional: true 986 + 987 + /@esbuild/win32-ia32@0.18.5: 988 + resolution: {integrity: sha512-V3xj/nb9uie0I4mn1f8nPZSgHldtNJrqTKYjTyMPMBnHbMYF5Loz8ZHsp7+La8kI6NxIF1ClQ9XBV+G3RtSkww==} 731 989 engines: {node: '>=12'} 732 990 cpu: [ia32] 733 991 os: [win32] ··· 744 1002 dev: true 745 1003 optional: true 746 1004 747 - /@esbuild/win32-x64@0.18.7: 748 - resolution: {integrity: sha512-6RENfAwwL6dxQk/V1PxO/ejYRiOUVUaHi99hP3Dso/38jfNKFzU6YSSR/haJGNV/2wAHIgBMROQodna0IejAuA==} 1005 + /@esbuild/win32-x64@0.18.10: 1006 + resolution: {integrity: sha512-5sTkYhAGHNRr6bVf4RM0PsscqVr6/DBYdrlMh168oph3usid3lKHcHEEHmr34iZ9GHeeg2juFOxtpl6XyC3tpw==} 1007 + engines: {node: '>=12'} 1008 + cpu: [x64] 1009 + os: [win32] 1010 + requiresBuild: true 1011 + dev: true 1012 + optional: true 1013 + 1014 + /@esbuild/win32-x64@0.18.5: 1015 + resolution: {integrity: sha512-gMxWvQeTQWDpa8ExPP41al+Ho7HyK24h7y41JdGKqE24KzXXQPxESUtrCoIES+HwF+OGq2smtibU9UvZ8WH3JQ==} 749 1016 engines: {node: '>=12'} 750 1017 cpu: [x64] 751 1018 os: [win32] ··· 1627 1894 eslint-visitor-keys: 3.4.1 1628 1895 dev: false 1629 1896 1897 + /@upstash/core-analytics@0.0.6: 1898 + resolution: {integrity: sha512-cpPSR0XJAJs4Ddz9nq3tINlPS5aLfWVCqhhtHnXt4p7qr5+/Znlt1Es736poB/9rnl1hAHrOsOvVj46NEXcVqA==} 1899 + engines: {node: '>=16.0.0'} 1900 + dependencies: 1901 + '@upstash/redis': 1.21.0 1902 + transitivePeerDependencies: 1903 + - encoding 1904 + dev: false 1905 + 1906 + /@upstash/kafka@1.3.3: 1907 + resolution: {integrity: sha512-CIr657FZuK+IMuwcxkj3oCB6xKO+LMlHd4BL4J/Lwbpj6+5YHO+5ZcpdMIQhbcemthJcRtE0gDUfZEnrfb3Rjg==} 1908 + engines: {node: '>=10'} 1909 + dependencies: 1910 + isomorphic-fetch: 3.0.0 1911 + transitivePeerDependencies: 1912 + - encoding 1913 + dev: false 1914 + 1915 + /@upstash/qstash@0.3.6: 1916 + resolution: {integrity: sha512-NKN4jbPhB5lfHoSIaU7AuQ3F+yGS20e/FBRiUuPetcKoi354wHhKj9AJFfkFT5SSeLq0XEsXRNynm8gqCS4HjQ==} 1917 + dependencies: 1918 + '@deno/shim-crypto': 0.3.1 1919 + dev: false 1920 + 1921 + /@upstash/ratelimit@0.4.3: 1922 + resolution: {integrity: sha512-Dsp9Mw09Flg28JRklKgFiCXqr3bqv8bbG0kgpUYoHjcgPPolFFyaYOj/I2HExvYLZiogl77NUavBoNvMOK0zUQ==} 1923 + dependencies: 1924 + '@upstash/core-analytics': 0.0.6 1925 + transitivePeerDependencies: 1926 + - encoding 1927 + dev: false 1928 + 1630 1929 /@upstash/redis@1.21.0: 1631 1930 resolution: {integrity: sha512-c6M+cl0LOgGK/7Gp6ooMkIZ1IDAJs8zFR+REPkoSkAq38o7CWFX5FYwYEqGZ6wJpUGBuEOr/7hTmippXGgL25A==} 1632 1931 dependencies: ··· 1887 2186 hasBin: true 1888 2187 dependencies: 1889 2188 caniuse-lite: 1.0.30001503 1890 - electron-to-chromium: 1.4.434 2189 + electron-to-chromium: 1.4.433 1891 2190 node-releases: 2.0.12 1892 2191 update-browserslist-db: 1.0.11(browserslist@4.21.9) 1893 2192 dev: true ··· 1916 2215 run-applescript: 5.0.0 1917 2216 dev: false 1918 2217 2218 + /bundle-require@4.0.1(esbuild@0.18.5): 2219 + resolution: {integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==} 2220 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2221 + peerDependencies: 2222 + esbuild: '>=0.17' 2223 + dependencies: 2224 + esbuild: 0.18.5 2225 + load-tsconfig: 0.2.5 2226 + dev: true 2227 + 1919 2228 /busboy@1.6.0: 1920 2229 resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 1921 2230 engines: {node: '>=10.16.0'} ··· 1923 2232 streamsearch: 1.1.0 1924 2233 dev: false 1925 2234 2235 + /cac@6.7.14: 2236 + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 2237 + engines: {node: '>=8'} 2238 + dev: true 2239 + 1926 2240 /call-bind@1.0.2: 1927 2241 resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 1928 2242 dependencies: ··· 2201 2515 2202 2516 /damerau-levenshtein@1.0.8: 2203 2517 resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} 2518 + dev: false 2519 + 2520 + /date-fns@2.30.0: 2521 + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} 2522 + engines: {node: '>=0.11'} 2523 + dependencies: 2524 + '@babel/runtime': 7.22.5 2204 2525 dev: false 2205 2526 2206 2527 /debug@3.2.7: ··· 2395 2716 camelcase: 7.0.1 2396 2717 chalk: 5.2.0 2397 2718 commander: 9.5.0 2398 - esbuild: 0.18.7 2399 - esbuild-register: 3.4.2(esbuild@0.18.7) 2719 + esbuild: 0.18.10 2720 + esbuild-register: 3.4.2(esbuild@0.18.10) 2400 2721 glob: 8.1.0 2401 2722 hanji: 0.0.5 2402 2723 json-diff: 0.9.0 ··· 2481 2802 sigmund: 1.0.1 2482 2803 dev: false 2483 2804 2484 - /electron-to-chromium@1.4.434: 2485 - resolution: {integrity: sha512-5Gvm09UZTQRaWrimRtWRO5rvaX6Kpk5WHAPKDa7A4Gj6NIPuJ8w8WNpnxCXdd+CJJt6RBU6tUw0KyULoW6XuHw==} 2805 + /electron-to-chromium@1.4.433: 2806 + resolution: {integrity: sha512-MGO1k0w1RgrfdbLVwmXcDhHHuxCn2qRgR7dYsJvWFKDttvYPx6FNzCGG0c/fBBvzK2LDh3UV7Tt9awnHnvAAUQ==} 2486 2807 dev: true 2487 2808 2488 2809 /emoji-regex@8.0.0: ··· 2604 2925 es6-symbol: 3.1.3 2605 2926 dev: true 2606 2927 2607 - /esbuild-register@3.4.2(esbuild@0.18.7): 2928 + /esbuild-register@3.4.2(esbuild@0.18.10): 2608 2929 resolution: {integrity: sha512-kG/XyTDyz6+YDuyfB9ZoSIOOmgyFCH+xPRtsCa8W85HLRV5Csp+o3jWVbOSHgSLfyLc5DmP+KFDNwty4mEjC+Q==} 2609 2930 peerDependencies: 2610 2931 esbuild: '>=0.12 <1' 2611 2932 dependencies: 2612 2933 debug: 4.3.4 2613 - esbuild: 0.18.7 2934 + esbuild: 0.18.10 2614 2935 transitivePeerDependencies: 2615 2936 - supports-color 2616 2937 dev: true ··· 2645 2966 '@esbuild/win32-x64': 0.17.19 2646 2967 dev: true 2647 2968 2648 - /esbuild@0.18.7: 2649 - resolution: {integrity: sha512-46V0EFvQ/urmruUCChD1e0SZJWM0Ulny5F+uf5QkBry97HfvgvZTnjpTrwmw0+CGRhqTh9zpFeB+W8WGIEXOAQ==} 2969 + /esbuild@0.18.10: 2970 + resolution: {integrity: sha512-33WKo67auOXzZHBY/9DTJRo7kIvfU12S+D4sp2wIz39N88MDIaCGyCwbW01RR70pK6Iya0I74lHEpyLfFqOHPA==} 2650 2971 engines: {node: '>=12'} 2651 2972 hasBin: true 2652 2973 requiresBuild: true 2653 2974 optionalDependencies: 2654 - '@esbuild/android-arm': 0.18.7 2655 - '@esbuild/android-arm64': 0.18.7 2656 - '@esbuild/android-x64': 0.18.7 2657 - '@esbuild/darwin-arm64': 0.18.7 2658 - '@esbuild/darwin-x64': 0.18.7 2659 - '@esbuild/freebsd-arm64': 0.18.7 2660 - '@esbuild/freebsd-x64': 0.18.7 2661 - '@esbuild/linux-arm': 0.18.7 2662 - '@esbuild/linux-arm64': 0.18.7 2663 - '@esbuild/linux-ia32': 0.18.7 2664 - '@esbuild/linux-loong64': 0.18.7 2665 - '@esbuild/linux-mips64el': 0.18.7 2666 - '@esbuild/linux-ppc64': 0.18.7 2667 - '@esbuild/linux-riscv64': 0.18.7 2668 - '@esbuild/linux-s390x': 0.18.7 2669 - '@esbuild/linux-x64': 0.18.7 2670 - '@esbuild/netbsd-x64': 0.18.7 2671 - '@esbuild/openbsd-x64': 0.18.7 2672 - '@esbuild/sunos-x64': 0.18.7 2673 - '@esbuild/win32-arm64': 0.18.7 2674 - '@esbuild/win32-ia32': 0.18.7 2675 - '@esbuild/win32-x64': 0.18.7 2975 + '@esbuild/android-arm': 0.18.10 2976 + '@esbuild/android-arm64': 0.18.10 2977 + '@esbuild/android-x64': 0.18.10 2978 + '@esbuild/darwin-arm64': 0.18.10 2979 + '@esbuild/darwin-x64': 0.18.10 2980 + '@esbuild/freebsd-arm64': 0.18.10 2981 + '@esbuild/freebsd-x64': 0.18.10 2982 + '@esbuild/linux-arm': 0.18.10 2983 + '@esbuild/linux-arm64': 0.18.10 2984 + '@esbuild/linux-ia32': 0.18.10 2985 + '@esbuild/linux-loong64': 0.18.10 2986 + '@esbuild/linux-mips64el': 0.18.10 2987 + '@esbuild/linux-ppc64': 0.18.10 2988 + '@esbuild/linux-riscv64': 0.18.10 2989 + '@esbuild/linux-s390x': 0.18.10 2990 + '@esbuild/linux-x64': 0.18.10 2991 + '@esbuild/netbsd-x64': 0.18.10 2992 + '@esbuild/openbsd-x64': 0.18.10 2993 + '@esbuild/sunos-x64': 0.18.10 2994 + '@esbuild/win32-arm64': 0.18.10 2995 + '@esbuild/win32-ia32': 0.18.10 2996 + '@esbuild/win32-x64': 0.18.10 2997 + dev: true 2998 + 2999 + /esbuild@0.18.5: 3000 + resolution: {integrity: sha512-ztF1Z53Mc8ijEo1ZWFduHZXIqRWufo76JHm1ikvhGjIzO1mj84LdKXSGmRzahfgvWSwky48MkT+o5yUIkQtDPA==} 3001 + engines: {node: '>=12'} 3002 + hasBin: true 3003 + requiresBuild: true 3004 + optionalDependencies: 3005 + '@esbuild/android-arm': 0.18.5 3006 + '@esbuild/android-arm64': 0.18.5 3007 + '@esbuild/android-x64': 0.18.5 3008 + '@esbuild/darwin-arm64': 0.18.5 3009 + '@esbuild/darwin-x64': 0.18.5 3010 + '@esbuild/freebsd-arm64': 0.18.5 3011 + '@esbuild/freebsd-x64': 0.18.5 3012 + '@esbuild/linux-arm': 0.18.5 3013 + '@esbuild/linux-arm64': 0.18.5 3014 + '@esbuild/linux-ia32': 0.18.5 3015 + '@esbuild/linux-loong64': 0.18.5 3016 + '@esbuild/linux-mips64el': 0.18.5 3017 + '@esbuild/linux-ppc64': 0.18.5 3018 + '@esbuild/linux-riscv64': 0.18.5 3019 + '@esbuild/linux-s390x': 0.18.5 3020 + '@esbuild/linux-x64': 0.18.5 3021 + '@esbuild/netbsd-x64': 0.18.5 3022 + '@esbuild/openbsd-x64': 0.18.5 3023 + '@esbuild/sunos-x64': 0.18.5 3024 + '@esbuild/win32-arm64': 0.18.5 3025 + '@esbuild/win32-ia32': 0.18.5 3026 + '@esbuild/win32-x64': 0.18.5 2676 3027 dev: true 2677 3028 2678 3029 /escalade@3.1.1: ··· 3014 3365 onetime: 5.1.2 3015 3366 signal-exit: 3.0.7 3016 3367 strip-final-newline: 2.0.0 3017 - dev: false 3018 3368 3019 3369 /execa@7.1.1: 3020 3370 resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} ··· 3199 3549 /get-stream@6.0.1: 3200 3550 resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 3201 3551 engines: {node: '>=10'} 3202 - dev: false 3203 3552 3204 3553 /get-symbol-description@1.0.0: 3205 3554 resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} ··· 3308 3657 ignore: 5.2.4 3309 3658 merge2: 1.4.1 3310 3659 slash: 3.0.0 3311 - dev: false 3312 3660 3313 3661 /globby@13.1.4: 3314 3662 resolution: {integrity: sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==} ··· 3433 3781 /human-signals@2.1.0: 3434 3782 resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 3435 3783 engines: {node: '>=10.17.0'} 3436 - dev: false 3437 3784 3438 3785 /human-signals@4.3.1: 3439 3786 resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} ··· 3678 4025 /is-stream@2.0.1: 3679 4026 resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 3680 4027 engines: {node: '>=8'} 3681 - dev: false 3682 4028 3683 4029 /is-stream@3.0.0: 3684 4030 resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} ··· 3760 4106 resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} 3761 4107 hasBin: true 3762 4108 4109 + /joycon@3.1.1: 4110 + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} 4111 + engines: {node: '>=10'} 4112 + dev: true 4113 + 3763 4114 /js-beautify@1.14.8: 3764 4115 resolution: {integrity: sha512-4S7HFeI9YfRvRgKnEweohs0tgJj28InHVIj4Nl8Htf96Y6pHg3+tJrmo4ucAM9f7l4SHbFI3IvFAZ2a1eQPbyg==} 3765 4116 engines: {node: '>=12'} ··· 3858 4209 /lines-and-columns@1.2.4: 3859 4210 resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 3860 4211 4212 + /load-tsconfig@0.2.5: 4213 + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} 4214 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 4215 + dev: true 4216 + 3861 4217 /locate-path@6.0.0: 3862 4218 resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 3863 4219 engines: {node: '>=10'} ··· 3870 4226 3871 4227 /lodash.merge@4.6.2: 3872 4228 resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 4229 + 4230 + /lodash.sortby@4.7.0: 4231 + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} 4232 + dev: true 3873 4233 3874 4234 /lodash.throttle@4.1.1: 3875 4235 resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} ··· 3959 4319 3960 4320 /merge-stream@2.0.0: 3961 4321 resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 3962 - dev: false 3963 4322 3964 4323 /merge2@1.4.1: 3965 4324 resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} ··· 4193 4552 engines: {node: '>=8'} 4194 4553 dependencies: 4195 4554 path-key: 3.1.1 4196 - dev: false 4197 4555 4198 4556 /npm-run-path@5.1.0: 4199 4557 resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} ··· 4643 5001 resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 4644 5002 engines: {node: '>=4'} 4645 5003 5004 + /resolve-from@5.0.0: 5005 + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 5006 + engines: {node: '>=8'} 5007 + dev: true 5008 + 4646 5009 /resolve-pkg-maps@1.0.0: 4647 5010 resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 4648 5011 ··· 4680 5043 hasBin: true 4681 5044 dependencies: 4682 5045 glob: 7.2.3 5046 + 5047 + /rollup@3.25.1: 5048 + resolution: {integrity: sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ==} 5049 + engines: {node: '>=14.18.0', npm: '>=8.0.0'} 5050 + hasBin: true 5051 + optionalDependencies: 5052 + fsevents: 2.3.2 5053 + dev: true 4683 5054 4684 5055 /run-applescript@5.0.0: 4685 5056 resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} ··· 4845 5216 /source-map@0.6.1: 4846 5217 resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 4847 5218 engines: {node: '>=0.10.0'} 5219 + dev: true 5220 + 5221 + /source-map@0.8.0-beta.0: 5222 + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} 5223 + engines: {node: '>= 8'} 5224 + dependencies: 5225 + whatwg-url: 7.1.0 4848 5226 dev: true 4849 5227 4850 5228 /streamsearch@1.1.0: ··· 4919 5297 /strip-final-newline@2.0.0: 4920 5298 resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 4921 5299 engines: {node: '>=6'} 4922 - dev: false 4923 5300 4924 5301 /strip-final-newline@3.0.0: 4925 5302 resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} ··· 5123 5500 resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 5124 5501 dev: false 5125 5502 5503 + /tr46@1.0.1: 5504 + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} 5505 + dependencies: 5506 + punycode: 2.3.0 5507 + dev: true 5508 + 5509 + /tree-kill@1.2.2: 5510 + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 5511 + hasBin: true 5512 + dev: true 5513 + 5126 5514 /ts-interface-checker@0.1.13: 5127 5515 resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 5128 5516 ··· 5176 5564 /tslib@2.5.3: 5177 5565 resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} 5178 5566 5567 + /tsup@7.0.0(typescript@5.1.3): 5568 + resolution: {integrity: sha512-yYARDRkPq07mO3YUXTvF12ISwWQG57Odve8aFEgLdHyeGungxuKxb19yf9G0W8y59SZFkLnRj1gkoVk1gd5fbQ==} 5569 + engines: {node: '>=16.14'} 5570 + hasBin: true 5571 + peerDependencies: 5572 + '@swc/core': ^1 5573 + postcss: ^8.4.12 5574 + typescript: '>=4.1.0' 5575 + peerDependenciesMeta: 5576 + '@swc/core': 5577 + optional: true 5578 + postcss: 5579 + optional: true 5580 + typescript: 5581 + optional: true 5582 + dependencies: 5583 + bundle-require: 4.0.1(esbuild@0.18.5) 5584 + cac: 6.7.14 5585 + chokidar: 3.5.3 5586 + debug: 4.3.4 5587 + esbuild: 0.18.5 5588 + execa: 5.1.1 5589 + globby: 11.1.0 5590 + joycon: 3.1.1 5591 + postcss-load-config: 4.0.1(postcss@8.4.24) 5592 + resolve-from: 5.0.0 5593 + rollup: 3.25.1 5594 + source-map: 0.8.0-beta.0 5595 + sucrase: 3.32.0 5596 + tree-kill: 1.2.2 5597 + typescript: 5.1.3 5598 + transitivePeerDependencies: 5599 + - supports-color 5600 + - ts-node 5601 + dev: true 5602 + 5179 5603 /tsutils@3.21.0(typescript@5.1.3): 5180 5604 resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 5181 5605 engines: {node: '>= 6'} ··· 5186 5610 typescript: 5.1.3 5187 5611 dev: false 5188 5612 5189 - /turbo-darwin-64@1.10.5: 5190 - resolution: {integrity: sha512-fIHu+fcW7upaZEfeneoRbZjdrcsj/NxUg7IjZZmlCjgbS9Ofl8RhRid5A1L31AUK3kkqRxzagHc4WZ5x4quBgg==} 5613 + /turbo-darwin-64@1.10.3: 5614 + resolution: {integrity: sha512-IIB9IomJGyD3EdpSscm7Ip1xVWtYb7D0x7oH3vad3gjFcjHJzDz9xZ/iw/qItFEW+wGFcLSRPd+1BNnuLM8AsA==} 5191 5615 cpu: [x64] 5192 5616 os: [darwin] 5193 5617 requiresBuild: true 5194 5618 dev: true 5195 5619 optional: true 5196 5620 5197 - /turbo-darwin-arm64@1.10.5: 5198 - resolution: {integrity: sha512-uv0sDWizuxVvdSjaKvWdPdX4aZ8IZeYJwTJRZwLNRxZV56/1LZD65gyQIqsSNVRHuXI199yahmB+7PMJNpZFdw==} 5621 + /turbo-darwin-arm64@1.10.3: 5622 + resolution: {integrity: sha512-SBNmOZU9YEB0eyNIxeeQ+Wi0Ufd+nprEVp41rgUSRXEIpXjsDjyBnKnF+sQQj3+FLb4yyi/yZQckB+55qXWEsw==} 5199 5623 cpu: [arm64] 5200 5624 os: [darwin] 5201 5625 requiresBuild: true 5202 5626 dev: true 5203 5627 optional: true 5204 5628 5205 - /turbo-linux-64@1.10.5: 5206 - resolution: {integrity: sha512-hI0rErgwxNmuBCNGldhJkjSbb+mT+vjfmBVKcMI/bnBmu/KU7irCrKMe5Vas280teqBrC33GgVfXndJo2cJ1DA==} 5629 + /turbo-linux-64@1.10.3: 5630 + resolution: {integrity: sha512-kvAisGKE7xHJdyMxZLvg53zvHxjqPK1UVj4757PQqtx9dnjYHSc8epmivE6niPgDHon5YqImzArCjVZJYpIGHQ==} 5207 5631 cpu: [x64] 5208 5632 os: [linux] 5209 5633 requiresBuild: true 5210 5634 dev: true 5211 5635 optional: true 5212 5636 5213 - /turbo-linux-arm64@1.10.5: 5214 - resolution: {integrity: sha512-JAygWZjTuD6e7w0KSGzy7UxYqeLIpGfZDne+4MGRc8I5VeWZ6i0HWTqhhIu2/A8AuklYcoj8LkOZxCnMOF3odQ==} 5637 + /turbo-linux-arm64@1.10.3: 5638 + resolution: {integrity: sha512-Qgaqln0IYRgyL0SowJOi+PNxejv1I2xhzXOI+D+z4YHbgSx87ox1IsALYBlK8VRVYY8VCXl+PN12r1ioV09j7A==} 5215 5639 cpu: [arm64] 5216 5640 os: [linux] 5217 5641 requiresBuild: true 5218 5642 dev: true 5219 5643 optional: true 5220 5644 5221 - /turbo-windows-64@1.10.5: 5222 - resolution: {integrity: sha512-6w2GOKmlWEAl6QkC4c2j2ZLTwB+RK6oIDRT2KqF1m07KkY6pebEzbPZLHuP08QV+SE0t+prAn+kn7hkHYkwM+Q==} 5645 + /turbo-windows-64@1.10.3: 5646 + resolution: {integrity: sha512-rbH9wManURNN8mBnN/ZdkpUuTvyVVEMiUwFUX4GVE5qmV15iHtZfDLUSGGCP2UFBazHcpNHG1OJzgc55GFFrUw==} 5223 5647 cpu: [x64] 5224 5648 os: [win32] 5225 5649 requiresBuild: true 5226 5650 dev: true 5227 5651 optional: true 5228 5652 5229 - /turbo-windows-arm64@1.10.5: 5230 - resolution: {integrity: sha512-3eeHRJPU+5zWa/iiikoBoPlNd74Y+L9lrG6ZsDZdzUYxNRTMrZbto1Bu1UF77t10TXeT9BsZRXjquKqrA7R7tg==} 5653 + /turbo-windows-arm64@1.10.3: 5654 + resolution: {integrity: sha512-ThlkqxhcGZX39CaTjsHqJnqVe+WImjX13pmjnpChz6q5HHbeRxaJSFzgrHIOt0sUUVx90W/WrNRyoIt/aafniw==} 5231 5655 cpu: [arm64] 5232 5656 os: [win32] 5233 5657 requiresBuild: true 5234 5658 dev: true 5235 5659 optional: true 5236 5660 5237 - /turbo@1.10.5: 5238 - resolution: {integrity: sha512-4yxHTrlugJhef4eXuyrPJtrgUZWlbcwmSb8iZL/5UzNjCmx+anOm1nfW2XFrZFKy4v0+/fUlqw8LkTgGVsOKaQ==} 5661 + /turbo@1.10.3: 5662 + resolution: {integrity: sha512-U4gKCWcKgLcCjQd4Pl8KJdfEKumpyWbzRu75A6FCj6Ctea1PIm58W6Ltw1QXKqHrl2pF9e1raAskf/h6dlrPCA==} 5239 5663 hasBin: true 5240 5664 requiresBuild: true 5241 5665 optionalDependencies: 5242 - turbo-darwin-64: 1.10.5 5243 - turbo-darwin-arm64: 1.10.5 5244 - turbo-linux-64: 1.10.5 5245 - turbo-linux-arm64: 1.10.5 5246 - turbo-windows-64: 1.10.5 5247 - turbo-windows-arm64: 1.10.5 5666 + turbo-darwin-64: 1.10.3 5667 + turbo-darwin-arm64: 1.10.3 5668 + turbo-linux-64: 1.10.3 5669 + turbo-linux-arm64: 1.10.3 5670 + turbo-windows-64: 1.10.3 5671 + turbo-windows-arm64: 1.10.3 5248 5672 dev: true 5249 5673 5250 5674 /type-check@0.4.0: ··· 5390 5814 resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 5391 5815 dev: false 5392 5816 5817 + /webidl-conversions@4.0.2: 5818 + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} 5819 + dev: true 5820 + 5393 5821 /whatwg-fetch@3.6.2: 5394 5822 resolution: {integrity: sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==} 5395 5823 dev: false ··· 5400 5828 tr46: 0.0.3 5401 5829 webidl-conversions: 3.0.1 5402 5830 dev: false 5831 + 5832 + /whatwg-url@7.1.0: 5833 + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} 5834 + dependencies: 5835 + lodash.sortby: 4.7.0 5836 + tr46: 1.0.1 5837 + webidl-conversions: 4.0.2 5838 + dev: true 5403 5839 5404 5840 /which-boxed-primitive@1.0.2: 5405 5841 resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
+3 -1
turbo.json
··· 15 15 "NEXT_PUBLIC_CLERK_SIGN_IN_URL", 16 16 "NEXT_PUBLIC_CLERK_SIGN_UP_URL", 17 17 "NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL", 18 - "NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL" 18 + "NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL", 19 + "NODE_ENV", 20 + "VERCEL_URL" 19 21 ], 20 22 "outputs": [".next/**", "!.next/cache/**"] 21 23 },