Openstatus www.openstatus.dev

Improve logger (#1471)

* sentry+logger test

* 🤗

* 🔥

* ci: apply automated fixes

* restore

* improve logging

* ci: apply automated fixes

* format

* update log

* improvel ogging

* pnpm log

* ci: apply automated fixes

* push

* update logger

* ci: apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

authored by

Thibault Le Ouay
autofix-ci[bot]
and committed by
GitHub
f3e7cf88 23ad67e8

+428 -259
+2
.github/workflows/api-preview.yml
··· 49 49 UPSTASH_REDIS_REST_URL=test 50 50 UPSTASH_REDIS_REST_TOKEN=test 51 51 GCP_PROJECT_ID=test 52 + NEXT_PUBLIC_OPENPANEL_CLIENT_ID=test 53 + OPENPANEL_CLIENT_SECRET=test 52 54 53 55 - name: Clean up GitHub environment 54 56 uses: strumwolf/delete-deployment-environment@v2
+2
apps/server/package.json
··· 15 15 "@hono/sentry": "1.2.0", 16 16 "@hono/zod-openapi": "0.15.1", 17 17 "@hono/zod-validator": "0.2.2", 18 + "@logtape/logtape": "1.1.2", 19 + "@logtape/sentry": "1.1.2", 18 20 "@openstatus/analytics": "workspace:*", 19 21 "@openstatus/assertions": "workspace:*", 20 22 "@openstatus/db": "workspace:*",
+57 -2
apps/server/src/index.ts
··· 1 + import { AsyncLocalStorage } from "node:async_hooks"; 2 + 1 3 import { sentry } from "@hono/sentry"; 4 + import { 5 + configureSync, 6 + getConsoleSink, 7 + getLogger, 8 + jsonLinesFormatter, 9 + withContext, 10 + } from "@logtape/logtape"; 2 11 import { Hono } from "hono"; 3 12 import { showRoutes } from "hono/dev"; 4 - import { logger } from "hono/logger"; 5 13 6 14 import { prettyJSON } from "hono/pretty-json"; 7 15 import { requestId } from "hono/request-id"; ··· 10 18 import { publicRoute } from "./routes/public"; 11 19 import { api } from "./routes/v1"; 12 20 21 + configureSync({ 22 + sinks: { 23 + console: getConsoleSink({ formatter: jsonLinesFormatter }), 24 + }, 25 + loggers: [ 26 + { 27 + category: "api-server", 28 + lowestLevel: "debug", 29 + sinks: ["console"], 30 + }, 31 + ], 32 + contextLocalStorage: new AsyncLocalStorage(), 33 + }); 34 + 35 + const logger = getLogger("api-server"); 36 + 13 37 export const app = new Hono({ strict: false }); 14 38 15 39 /** ··· 17 41 */ 18 42 app.use("*", sentry({ dsn: process.env.SENTRY_DSN })); 19 43 app.use("*", requestId()); 20 - app.use("*", logger()); 44 + // app.use("*", logger()); 21 45 app.use("*", prettyJSON()); 46 + 47 + app.use("*", async (c, next) => { 48 + const requestId = c.get("requestId"); 49 + const startTime = Date.now(); 50 + 51 + await withContext( 52 + { 53 + requestId, 54 + method: c.req.method, 55 + url: c.req.url, 56 + userAgent: c.req.header("User-Agent"), 57 + // ipAddress: c.req.header("CF-Connecting-IP") || c.req.header("X-Forwarded-For") 58 + }, 59 + async () => { 60 + logger.info("Request started", { 61 + method: c.req.method, 62 + url: c.req.url, 63 + requestId, 64 + }); 65 + 66 + await next(); 67 + 68 + const duration = Date.now() - startTime; 69 + logger.info("Request completed", { 70 + status: c.res.status, 71 + duration, 72 + requestId, 73 + }); 74 + }, 75 + ); 76 + }); 22 77 23 78 app.onError(handleError); 24 79
+13
apps/server/src/libs/errors/utils.ts
··· 11 11 } from "@openstatus/error"; 12 12 13 13 import { z } from "@hono/zod-openapi"; 14 + import { getLogger } from "@logtape/logtape"; 14 15 import { ZodError } from "zod"; 15 16 17 + const logger = getLogger("api-server"); 16 18 export class OpenStatusApiError extends HTTPException { 17 19 public readonly code: ErrorCode; 18 20 ··· 81 83 { status: err.status }, 82 84 ); 83 85 } 86 + 87 + logger.error("Request error", { 88 + error: { 89 + name: err.name, 90 + message: err.message, 91 + stack: err.stack, 92 + }, 93 + method: c.req.method, 94 + url: c.req.url, 95 + }); 96 + c.get("sentry").captureException(err); 84 97 85 98 return c.json<ErrorSchema>( 86 99 {
+1 -1
apps/workflows/fly.toml
··· 32 32 33 33 [[http_service.checks]] 34 34 grace_period = "10s" 35 - interval = "15s" 35 + interval = "1m" 36 36 method = "GET" 37 37 timeout = "5s" 38 38 path = "/ping"
+2
apps/workflows/package.json
··· 9 9 "@google-cloud/tasks": "4.0.1", 10 10 "@hono/sentry": "1.2.2", 11 11 "@libsql/client": "0.15.15", 12 + "@logtape/logtape": "1.1.2", 13 + "@logtape/sentry": "1.1.2", 12 14 "@openstatus/db": "workspace:*", 13 15 "@openstatus/emails": "workspace:*", 14 16 "@openstatus/notification-discord": "workspace:*",
+12 -9
apps/workflows/src/checker/index.ts
··· 8 8 selectMonitorSchema, 9 9 } from "@openstatus/db/src/schema/monitors/validation"; 10 10 11 + import { getLogger } from "@logtape/logtape"; 11 12 import { monitorRegions } from "@openstatus/db/src/schema/constants"; 12 13 import { Tinybird } from "@openstatus/tinybird"; 13 14 import { env } from "../env"; ··· 33 34 event: payloadSchema, 34 35 }); 35 36 37 + const logger = getLogger(["workflow"]); 38 + 36 39 checkerRoute.post("/updateStatus", async (c) => { 37 40 const auth = c.req.header("Authorization"); 38 41 if (auth !== `Basic ${env().CRON_SECRET}`) { 39 - console.error("Unauthorized"); 42 + logger.error("Unauthorized"); 40 43 return c.text("Unauthorized", 401); 41 44 } 42 45 ··· 57 60 latency, 58 61 } = result.data; 59 62 60 - console.log(`📝 update monitor status ${JSON.stringify(result.data)}`); 63 + logger.info(`📝 update monitor status ${JSON.stringify(result.data)}`); 61 64 62 65 // First we upsert the monitor status 63 66 await upsertMonitorStatus({ ··· 145 148 break; 146 149 } 147 150 148 - console.log(`🔄 update monitorStatus ${monitor.id} status: ACTIVE`); 151 + logger.info(`🔄 update monitorStatus ${monitor.id} status: ACTIVE`); 149 152 await db 150 153 .update(schema.monitor) 151 154 .set({ status: "active" }) ··· 173 176 // incident is already resolved 174 177 break; 175 178 } 176 - console.log(`🤓 recovering incident ${incident.id}`); 179 + logger.info(`🤓 recovering incident ${incident.id}`); 177 180 178 181 await db 179 182 .update(incidentTable) ··· 210 213 // already degraded let's return early 211 214 break; 212 215 } 213 - console.log(`🔄 update monitorStatus ${monitor.id} status: DEGRADED`); 216 + logger.info(`🔄 update monitorStatus ${monitor.id} status: DEGRADED`); 214 217 215 218 await db 216 219 .update(schema.monitor) ··· 235 238 break; 236 239 } 237 240 238 - console.log(`🔄 update monitorStatus ${monitor.id} status: ERROR`); 241 + logger.info(`🔄 update monitorStatus ${monitor.id} status: ERROR`); 239 242 240 243 await db 241 244 .update(schema.monitor) ··· 255 258 ) 256 259 .get(); 257 260 if (incident) { 258 - console.log("we are already in incident"); 261 + logger.info("we are already in incident"); 259 262 break; 260 263 } 261 264 const [newIncident] = await db ··· 294 297 .set({ status: "error" }) 295 298 .where(eq(schema.monitor.id, monitor.id)); 296 299 } catch { 297 - console.log("incident was already created"); 300 + logger.warning("incident was already created"); 298 301 } 299 302 300 303 break; 301 304 default: 302 - console.log("should not happen"); 305 + logger.error("should not happen"); 303 306 break; 304 307 } 305 308 }
+76 -8
apps/workflows/src/index.ts
··· 1 + import { AsyncLocalStorage } from "node:async_hooks"; 2 + // import * as Sentry from "@sentry/node"; 1 3 import { sentry } from "@hono/sentry"; 4 + import { 5 + configureSync, 6 + getConsoleSink, 7 + getLogger, 8 + jsonLinesFormatter, 9 + withContext, 10 + } from "@logtape/logtape"; 11 + // import { getSentrySink } from "@logtape/sentry"; 2 12 import { Hono } from "hono"; 3 13 import { showRoutes } from "hono/dev"; 4 - import { logger } from "hono/logger"; 14 + import { requestId } from "hono/request-id"; 15 + // import { logger } from "hono/logger"; 5 16 import { checkerRoute } from "./checker"; 6 17 import { cronRouter } from "./cron"; 7 18 import { env } from "./env"; 8 19 9 20 const { NODE_ENV, PORT } = env(); 10 21 11 - const app = new Hono({ strict: false }) // Add an onError hook to report unhandled exceptions to Sentry. 12 - .onError((err, c) => { 13 - // Report _all_ unhandled errors. 14 - c.get("sentry").captureException(err); 15 - return c.text("Internal Server Error", 500); 16 - }); 22 + configureSync({ 23 + sinks: { 24 + console: getConsoleSink({ formatter: jsonLinesFormatter }), 25 + // sentry: getSentrySink(), 26 + }, 27 + loggers: [ 28 + { 29 + category: "workflow", 30 + lowestLevel: "debug", 31 + sinks: ["console"], 32 + }, 33 + ], 34 + contextLocalStorage: new AsyncLocalStorage(), 35 + }); 36 + 37 + const logger = getLogger(["workflow"]); 38 + const app = new Hono({ strict: false }); 39 + 40 + app.use("*", requestId()); 17 41 18 42 app.use("*", sentry({ dsn: env().SENTRY_DSN })); 19 43 20 - app.use("/*", logger()); 44 + app.use("*", async (c, next) => { 45 + const requestId = c.get("requestId"); 46 + const startTime = Date.now(); 47 + 48 + await withContext( 49 + { 50 + requestId, 51 + method: c.req.method, 52 + url: c.req.url, 53 + userAgent: c.req.header("User-Agent"), 54 + // ipAddress: c.req.header("CF-Connecting-IP") || c.req.header("X-Forwarded-For") 55 + }, 56 + async () => { 57 + logger.info("Request started", { 58 + method: c.req.method, 59 + url: c.req.url, 60 + requestId, 61 + }); 62 + 63 + await next(); 64 + 65 + const duration = Date.now() - startTime; 66 + logger.info("Request completed", { 67 + status: c.res.status, 68 + duration, 69 + requestId, 70 + }); 71 + }, 72 + ); 73 + }); 74 + 75 + app.onError((err, c) => { 76 + logger.error("Request error", { 77 + error: { 78 + name: err.name, 79 + message: err.message, 80 + stack: err.stack, 81 + }, 82 + method: c.req.method, 83 + url: c.req.url, 84 + }); 85 + c.get("sentry").captureException(err); 86 + 87 + return c.json({ error: "Internal server error" }, 500); 88 + }); 21 89 22 90 app.get("/", (c) => c.text("workflows", 200)); 23 91
+3 -3
packages/emails/package.json
··· 11 11 "license": "ISC", 12 12 "dependencies": { 13 13 "@react-email/button": "0.1.0", 14 - "@react-email/components": "0.1.1", 14 + "@react-email/components": "0.5.7", 15 15 "@react-email/head": "0.0.12", 16 16 "@react-email/html": "0.0.11", 17 - "@react-email/render": "1.1.3", 17 + "@react-email/render": "1.4.0", 18 18 "@react-email/tailwind": "1.0.5", 19 19 "@t3-oss/env-core": "0.7.1", 20 - "react-email": "4.0.17", 20 + "react-email": "4.3.1", 21 21 "resend": "4.6.0", 22 22 "zod": "3.24.2" 23 23 },
+2 -2
packages/notifications/email/package.json
··· 9 9 "@openstatus/regions": "workspace:*", 10 10 "@openstatus/tinybird": "workspace:*", 11 11 "@openstatus/utils": "workspace:*", 12 - "@react-email/components": "0.0.36", 13 - "@react-email/render": "1.0.6", 12 + "@react-email/components": "0.5.7", 13 + "@react-email/render": "1.4.0", 14 14 "@t3-oss/env-core": "0.7.0", 15 15 "resend": "4.0.1", 16 16 "zod": "3.24.2"
+258 -234
pnpm-lock.yaml
··· 205 205 version: 11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2) 206 206 '@trpc/next': 207 207 specifier: 11.4.4 208 - version: 11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(next@15.5.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2) 208 + version: 11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(next@15.5.3(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2) 209 209 '@trpc/react-query': 210 210 specifier: 11.4.4 211 211 version: 11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2) ··· 431 431 '@hono/zod-validator': 432 432 specifier: 0.2.2 433 433 version: 0.2.2(hono@4.5.3)(zod@3.24.2) 434 + '@logtape/logtape': 435 + specifier: 1.1.2 436 + version: 1.1.2 437 + '@logtape/sentry': 438 + specifier: 1.1.2 439 + version: 1.1.2(@logtape/logtape@1.1.2) 434 440 '@openstatus/analytics': 435 441 specifier: workspace:* 436 442 version: link:../../packages/analytics ··· 659 665 version: 1.2.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 660 666 '@sentry/nextjs': 661 667 specifier: 8.46.0 662 - version: 8.46.0(@opentelemetry/core@1.30.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.56.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(webpack@5.97.1) 668 + version: 8.46.0(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.3(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(webpack@5.97.1) 663 669 '@stripe/stripe-js': 664 670 specifier: 2.1.6 665 671 version: 2.1.6 ··· 674 680 version: 11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2) 675 681 '@trpc/next': 676 682 specifier: 11.4.4 677 - version: 11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(next@15.5.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2) 683 + version: 11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(next@15.5.3(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2) 678 684 '@trpc/react-query': 679 685 specifier: 11.4.4 680 686 version: 11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2) ··· 885 891 version: 1.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 886 892 '@sentry/nextjs': 887 893 specifier: 8.46.0 888 - version: 8.46.0(@opentelemetry/core@1.30.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.56.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.3(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(webpack@5.97.1(esbuild@0.21.5)) 894 + version: 8.46.0(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.3(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(webpack@5.97.1(esbuild@0.21.5)) 889 895 '@stripe/stripe-js': 890 896 specifier: 2.1.6 891 897 version: 2.1.6 ··· 1094 1100 '@libsql/client': 1095 1101 specifier: 0.15.15 1096 1102 version: 0.15.15(bufferutil@4.0.8)(utf-8-validate@6.0.5) 1103 + '@logtape/logtape': 1104 + specifier: 1.1.2 1105 + version: 1.1.2 1106 + '@logtape/sentry': 1107 + specifier: 1.1.2 1108 + version: 1.1.2(@logtape/logtape@1.1.2) 1097 1109 '@openstatus/db': 1098 1110 specifier: workspace:* 1099 1111 version: link:../../packages/db ··· 1141 1153 version: 2.6.2 1142 1154 drizzle-orm: 1143 1155 specifier: 0.44.4 1144 - version: 0.44.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.15.15(bufferutil@4.0.8)(utf-8-validate@6.0.5))(@opentelemetry/api@1.9.0)(@types/pg@8.11.10)(better-sqlite3@11.7.0)(bun-types@1.3.0(@types/react@19.2.2)) 1156 + version: 0.44.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.15.15(bufferutil@4.0.8)(utf-8-validate@6.0.5))(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(better-sqlite3@11.7.0)(bun-types@1.3.0(@types/react@19.2.2)) 1145 1157 hono: 1146 1158 specifier: 4.5.3 1147 1159 version: 4.5.3 ··· 1298 1310 version: 0.7.1(typescript@5.7.2)(zod@3.24.2) 1299 1311 drizzle-orm: 1300 1312 specifier: 0.44.4 1301 - version: 0.44.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.15.15(bufferutil@4.0.8)(utf-8-validate@6.0.5))(@opentelemetry/api@1.9.0)(@types/pg@8.11.10)(better-sqlite3@11.7.0)(bun-types@1.3.0(@types/react@19.2.2)) 1313 + version: 0.44.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.15.15(bufferutil@4.0.8)(utf-8-validate@6.0.5))(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(better-sqlite3@11.7.0)(bun-types@1.3.0(@types/react@19.2.2)) 1302 1314 drizzle-zod: 1303 1315 specifier: 0.5.1 1304 - version: 0.5.1(drizzle-orm@0.44.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.15.15(bufferutil@4.0.8)(utf-8-validate@6.0.5))(@opentelemetry/api@1.9.0)(@types/pg@8.11.10)(better-sqlite3@11.7.0)(bun-types@1.3.0(@types/react@19.2.2)))(zod@3.24.2) 1316 + version: 0.5.1(drizzle-orm@0.44.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.15.15(bufferutil@4.0.8)(utf-8-validate@6.0.5))(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(better-sqlite3@11.7.0)(bun-types@1.3.0(@types/react@19.2.2)))(zod@3.24.2) 1305 1317 zod: 1306 1318 specifier: 3.24.2 1307 1319 version: 3.24.2 ··· 1328 1340 specifier: 0.1.0 1329 1341 version: 0.1.0(react@19.2.0) 1330 1342 '@react-email/components': 1331 - specifier: 0.1.1 1332 - version: 0.1.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 1343 + specifier: 0.5.7 1344 + version: 0.5.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 1333 1345 '@react-email/head': 1334 1346 specifier: 0.0.12 1335 1347 version: 0.0.12(react@19.2.0) ··· 1337 1349 specifier: 0.0.11 1338 1350 version: 0.0.11(react@19.2.0) 1339 1351 '@react-email/render': 1340 - specifier: 1.1.3 1341 - version: 1.1.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 1352 + specifier: 1.4.0 1353 + version: 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 1342 1354 '@react-email/tailwind': 1343 1355 specifier: 1.0.5 1344 1356 version: 1.0.5(react@19.2.0) ··· 1346 1358 specifier: 0.7.1 1347 1359 version: 0.7.1(typescript@5.7.2)(zod@3.24.2) 1348 1360 react-email: 1349 - specifier: 4.0.17 1350 - version: 4.0.17(@opentelemetry/api@1.9.0)(bufferutil@4.0.8)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) 1361 + specifier: 4.3.1 1362 + version: 4.3.1(bufferutil@4.0.8)(utf-8-validate@6.0.5) 1351 1363 resend: 1352 1364 specifier: 4.6.0 1353 1365 version: 4.6.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) ··· 1452 1464 specifier: workspace:* 1453 1465 version: link:../../utils 1454 1466 '@react-email/components': 1455 - specifier: 0.0.36 1456 - version: 0.0.36(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 1467 + specifier: 0.5.7 1468 + version: 0.5.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 1457 1469 '@react-email/render': 1458 - specifier: 1.0.6 1459 - version: 1.0.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 1470 + specifier: 1.4.0 1471 + version: 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 1460 1472 '@t3-oss/env-core': 1461 1473 specifier: 0.7.0 1462 1474 version: 0.7.0(typescript@5.7.2)(zod@3.24.2) ··· 3733 3745 cpu: [x64] 3734 3746 os: [win32] 3735 3747 3748 + '@logtape/logtape@1.1.2': 3749 + resolution: {integrity: sha512-4QXa/5cwt3+cx01C1xm8iqvEXxNZMDTTbT5AFGZnwPkn2WDAyA6UP2khWBZ7FctMnvQqW3fnJ96kgBJ4ahorHw==} 3750 + 3751 + '@logtape/sentry@1.1.2': 3752 + resolution: {integrity: sha512-Hmt1traui55R6BvDh8Ug4yXUJVJst9guW3TyA5CyFjGUIvgxmV9uukN6q0rMVfjB1YGxMUPrRYI8ddtYu5RJDg==} 3753 + peerDependencies: 3754 + '@logtape/logtape': ^1.1.2 3755 + 3736 3756 '@mapbox/hast-util-table-cell-style@0.2.0': 3737 3757 resolution: {integrity: sha512-gqaTIGC8My3LVSnU38IwjHVKJC94HSonjvFHDk8/aSrApL8v4uWgm8zJkK7MJIIbHuNOr/+Mv2KkQKcxs6LEZA==} 3738 3758 engines: {node: '>=12'} ··· 3861 3881 '@openpanel/web@1.0.1': 3862 3882 resolution: {integrity: sha512-cVZ7Kr9SicczJ/RDIfEtZs8+1iGDzwkabVA/j3NqSl8VSucsC8m1+LVbjmCDzCJNnK4yVn6tEcc9PJRi2rtllw==} 3863 3883 3884 + '@opentelemetry/api-logs@0.204.0': 3885 + resolution: {integrity: sha512-DqxY8yoAaiBPivoJD4UtgrMS8gEmzZ5lnaxzPojzLVHBGqPxgWm4zcuvcUHZiqQ6kRX2Klel2r9y8cA2HAtqpw==} 3886 + engines: {node: '>=8.0.0'} 3887 + 3864 3888 '@opentelemetry/api-logs@0.52.1': 3865 3889 resolution: {integrity: sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==} 3866 3890 engines: {node: '>=14'} ··· 3891 3915 peerDependencies: 3892 3916 '@opentelemetry/api': '>=1.0.0 <1.10.0' 3893 3917 3918 + '@opentelemetry/core@2.2.0': 3919 + resolution: {integrity: sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==} 3920 + engines: {node: ^18.19.0 || >=20.6.0} 3921 + peerDependencies: 3922 + '@opentelemetry/api': '>=1.0.0 <1.10.0' 3923 + 3894 3924 '@opentelemetry/instrumentation-amqplib@0.45.0': 3895 3925 resolution: {integrity: sha512-SlKLsOS65NGMIBG1Lh/hLrMDU9WzTUF25apnV6ZmWZB1bBmUwan7qrwwrTu1cL5LzJWCXOdZPuTaxP7pC9qxnQ==} 3896 3926 engines: {node: '>=14'} ··· 4035 4065 peerDependencies: 4036 4066 '@opentelemetry/api': ^1.7.0 4037 4067 4068 + '@opentelemetry/instrumentation@0.204.0': 4069 + resolution: {integrity: sha512-vV5+WSxktzoMP8JoYWKeopChy6G3HKk4UQ2hESCRDUUTZqQ3+nM3u8noVG0LmNfRWwcFBnbZ71GKC7vaYYdJ1g==} 4070 + engines: {node: ^18.19.0 || >=20.6.0} 4071 + peerDependencies: 4072 + '@opentelemetry/api': ^1.3.0 4073 + 4038 4074 '@opentelemetry/instrumentation@0.52.1': 4039 4075 resolution: {integrity: sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==} 4040 4076 engines: {node: '>=14'} ··· 4057 4093 peerDependencies: 4058 4094 '@opentelemetry/api': '>=1.0.0 <1.10.0' 4059 4095 4096 + '@opentelemetry/resources@2.2.0': 4097 + resolution: {integrity: sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==} 4098 + engines: {node: ^18.19.0 || >=20.6.0} 4099 + peerDependencies: 4100 + '@opentelemetry/api': '>=1.3.0 <1.10.0' 4101 + 4060 4102 '@opentelemetry/sdk-trace-base@1.30.0': 4061 4103 resolution: {integrity: sha512-RKQDaDIkV7PwizmHw+rE/FgfB2a6MBx+AEVVlAHXRG1YYxLiBpPX2KhmoB99R5vA4b72iJrjle68NDWnbrE9Dg==} 4062 4104 engines: {node: '>=14'} 4063 4105 peerDependencies: 4064 4106 '@opentelemetry/api': '>=1.0.0 <1.10.0' 4065 4107 4108 + '@opentelemetry/sdk-trace-base@2.2.0': 4109 + resolution: {integrity: sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==} 4110 + engines: {node: ^18.19.0 || >=20.6.0} 4111 + peerDependencies: 4112 + '@opentelemetry/api': '>=1.3.0 <1.10.0' 4113 + 4066 4114 '@opentelemetry/semantic-conventions@1.27.0': 4067 4115 resolution: {integrity: sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==} 4068 4116 engines: {node: '>=14'} 4069 4117 4070 4118 '@opentelemetry/semantic-conventions@1.28.0': 4071 4119 resolution: {integrity: sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==} 4120 + engines: {node: '>=14'} 4121 + 4122 + '@opentelemetry/semantic-conventions@1.37.0': 4123 + resolution: {integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==} 4072 4124 engines: {node: '>=14'} 4073 4125 4074 4126 '@opentelemetry/sql-common@0.40.1': ··· 5356 5408 '@radix-ui/rect@1.1.1': 5357 5409 resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} 5358 5410 5359 - '@react-email/body@0.0.11': 5360 - resolution: {integrity: sha512-ZSD2SxVSgUjHGrB0Wi+4tu3MEpB4fYSbezsFNEJk2xCWDBkFiOeEsjTmR5dvi+CxTK691hQTQlHv0XWuP7ENTg==} 5361 - peerDependencies: 5362 - react: ^18.0 || ^19.0 || ^19.0.0-rc 5363 - 5364 - '@react-email/button@0.0.19': 5365 - resolution: {integrity: sha512-HYHrhyVGt7rdM/ls6FuuD6XE7fa7bjZTJqB2byn6/oGsfiEZaogY77OtoLL/mrQHjHjZiJadtAMSik9XLcm7+A==} 5366 - engines: {node: '>=18.0.0'} 5411 + '@react-email/body@0.1.0': 5412 + resolution: {integrity: sha512-o1bcSAmDYNNHECbkeyceCVPGmVsYvT+O3sSO/Ct7apKUu3JphTi31hu+0Nwqr/pgV5QFqdoT5vdS3SW5DJFHgQ==} 5367 5413 peerDependencies: 5368 5414 react: ^18.0 || ^19.0 || ^19.0.0-rc 5369 5415 ··· 5373 5419 peerDependencies: 5374 5420 react: ^18.0 || ^19.0 || ^19.0.0-rc 5375 5421 5376 - '@react-email/code-block@0.0.12': 5377 - resolution: {integrity: sha512-Faw3Ij9+/Qwq6moWaeHnV8Hn7ekc/EqyAzPi6yUar21dhcqYugCC4Da1x4d9nA9zC0H9KU3lYVJczh8D3cA+Eg==} 5422 + '@react-email/button@0.2.0': 5423 + resolution: {integrity: sha512-8i+v6cMxr2emz4ihCrRiYJPp2/sdYsNNsBzXStlcA+/B9Umpm5Jj3WJKYpgTPM+aeyiqlG/MMI1AucnBm4f1oQ==} 5378 5424 engines: {node: '>=18.0.0'} 5379 5425 peerDependencies: 5380 5426 react: ^18.0 || ^19.0 || ^19.0.0-rc ··· 5397 5443 peerDependencies: 5398 5444 react: ^18.0 || ^19.0 || ^19.0.0-rc 5399 5445 5400 - '@react-email/components@0.0.36': 5401 - resolution: {integrity: sha512-VMh+OQplAnG8JMLlJjdnjt+ThJZ+JVkp0q2YMS2NEz+T88N22bLD2p7DZO0QgtNaKgumOhJI/0a2Q7VzCrwu5g==} 5402 - engines: {node: '>=18.0.0'} 5403 - peerDependencies: 5404 - react: ^18.0 || ^19.0 || ^19.0.0-rc 5405 - 5406 - '@react-email/components@0.1.1': 5407 - resolution: {integrity: sha512-NyPuoqd1o77HL4+58pBrpk3e5/0UZLNU11/OBnE59F2MCZ8IaZX+55Ce+HR5itKTMdqlgfncz7sGA1TDITo41g==} 5446 + '@react-email/components@0.5.7': 5447 + resolution: {integrity: sha512-ECyVoyDcev2FSQ7C0buXaIJ0+6MRDXNUbCOZwBRrlLdCCRjap2b4+MHrYSTXFzo5kqfjjRoyo/2PbJXFQni67g==} 5408 5448 engines: {node: '>=18.0.0'} 5409 5449 peerDependencies: 5410 5450 react: ^18.0 || ^19.0 || ^19.0.0-rc ··· 5456 5496 peerDependencies: 5457 5497 react: ^18.0 || ^19.0 || ^19.0.0-rc 5458 5498 5459 - '@react-email/markdown@0.0.14': 5460 - resolution: {integrity: sha512-5IsobCyPkb4XwnQO8uFfGcNOxnsg3311GRXhJ3uKv51P7Jxme4ycC/MITnwIZ10w2zx7HIyTiqVzTj4XbuIHbg==} 5461 - engines: {node: '>=18.0.0'} 5462 - peerDependencies: 5463 - react: ^18.0 || ^19.0 || ^19.0.0-rc 5464 - 5465 - '@react-email/markdown@0.0.15': 5466 - resolution: {integrity: sha512-UQA9pVm5sbflgtg3EX3FquUP4aMBzmLReLbGJ6DZQZnAskBF36aI56cRykDq1o+1jT+CKIK1CducPYziaXliag==} 5467 - engines: {node: '>=18.0.0'} 5468 - peerDependencies: 5469 - react: ^18.0 || ^19.0 || ^19.0.0-rc 5470 - 5471 - '@react-email/preview@0.0.12': 5472 - resolution: {integrity: sha512-g/H5fa9PQPDK6WUEG7iTlC19sAktI23qyoiJtMLqQiXFCfWeQMhqjLGKeLSKkfzszqmfJCjZtpSiKtBoOdxp3Q==} 5499 + '@react-email/markdown@0.0.16': 5500 + resolution: {integrity: sha512-KSUHmoBMYhvc6iGwlIDkm0DRGbGQ824iNjLMCJsBVUoKHGQYs7F/N3b1tnS1YzRUX+GwHIexSsHuIUEi1m+8OQ==} 5473 5501 engines: {node: '>=18.0.0'} 5474 5502 peerDependencies: 5475 5503 react: ^18.0 || ^19.0 || ^19.0.0-rc ··· 5487 5515 react: ^18.0 || ^19.0 || ^19.0.0-rc 5488 5516 react-dom: ^18.0 || ^19.0 || ^19.0.0-rc 5489 5517 5490 - '@react-email/render@1.0.6': 5491 - resolution: {integrity: sha512-zNueW5Wn/4jNC1c5LFgXzbUdv5Lhms+FWjOvWAhal7gx5YVf0q6dPJ0dnR70+ifo59gcMLwCZEaTS9EEuUhKvQ==} 5492 - engines: {node: '>=18.0.0'} 5493 - peerDependencies: 5494 - react: ^18.0 || ^19.0 || ^19.0.0-rc 5495 - react-dom: ^18.0 || ^19.0 || ^19.0.0-rc 5496 - 5497 5518 '@react-email/render@1.1.2': 5498 5519 resolution: {integrity: sha512-RnRehYN3v9gVlNMehHPHhyp2RQo7+pSkHDtXPvg3s0GbzM9SQMW4Qrf8GRNvtpLC4gsI+Wt0VatNRUFqjvevbw==} 5499 5520 engines: {node: '>=18.0.0'} ··· 5501 5522 react: ^18.0 || ^19.0 || ^19.0.0-rc 5502 5523 react-dom: ^18.0 || ^19.0 || ^19.0.0-rc 5503 5524 5504 - '@react-email/render@1.1.3': 5505 - resolution: {integrity: sha512-TjjF1tdTmOqYEIWWg9wMx5q9JbQRbWmnG7owQbSGEHkNfc/c/vBu7hjfrki907lgQEAkYac9KPTyIjOKhvhJCg==} 5525 + '@react-email/render@1.4.0': 5526 + resolution: {integrity: sha512-ZtJ3noggIvW1ZAryoui95KJENKdCzLmN5F7hyZY1F/17B1vwzuxHB7YkuCg0QqHjDivc5axqYEYdIOw4JIQdUw==} 5506 5527 engines: {node: '>=18.0.0'} 5507 5528 peerDependencies: 5508 5529 react: ^18.0 || ^19.0 || ^19.0.0-rc ··· 5520 5541 peerDependencies: 5521 5542 react: ^18.0 || ^19.0 || ^19.0.0-rc 5522 5543 5523 - '@react-email/tailwind@1.0.4': 5524 - resolution: {integrity: sha512-tJdcusncdqgvTUYZIuhNC6LYTfL9vNTSQpwWdTCQhQ1lsrNCEE4OKCSdzSV3S9F32pi0i0xQ+YPJHKIzGjdTSA==} 5525 - engines: {node: '>=18.0.0'} 5526 - peerDependencies: 5527 - react: ^18.0 || ^19.0 || ^19.0.0-rc 5528 - 5529 5544 '@react-email/tailwind@1.0.5': 5530 5545 resolution: {integrity: sha512-BH00cZSeFfP9HiDASl+sPHi7Hh77W5nzDgdnxtsVr/m3uQD9g180UwxcE3PhOfx0vRdLzQUU8PtmvvDfbztKQg==} 5531 5546 engines: {node: '>=18.0.0'} 5532 5547 peerDependencies: 5533 5548 react: ^18.0 || ^19.0 || ^19.0.0-rc 5534 5549 5535 - '@react-email/text@0.1.1': 5536 - resolution: {integrity: sha512-Zo9tSEzkO3fODLVH1yVhzVCiwETfeEL5wU93jXKWo2DHoMuiZ9Iabaso3T0D0UjhrCB1PBMeq2YiejqeToTyIQ==} 5550 + '@react-email/tailwind@1.2.2': 5551 + resolution: {integrity: sha512-heO9Khaqxm6Ulm6p7HQ9h01oiiLRrZuuEQuYds/O7Iyp3c58sMVHZGIxiRXO/kSs857NZQycpjewEVKF3jhNTw==} 5537 5552 engines: {node: '>=18.0.0'} 5538 5553 peerDependencies: 5539 5554 react: ^18.0 || ^19.0 || ^19.0.0-rc ··· 5776 5791 '@sentry/core@8.9.2': 5777 5792 resolution: {integrity: sha512-ixm8NISFlPlEo3FjSaqmq4nnd13BRHoafwJ5MG+okCz6BKGZ1SexEggP42/QpGvDprUUHnfncG6WUMgcarr1zA==} 5778 5793 engines: {node: '>=14.18'} 5794 + 5795 + '@sentry/core@9.46.0': 5796 + resolution: {integrity: sha512-it7JMFqxVproAgEtbLgCVBYtQ9fIb+Bu0JD+cEplTN/Ukpe6GaolyYib5geZqslVxhp2sQgT+58aGvfd/k0N8Q==} 5797 + engines: {node: '>=18'} 5779 5798 5780 5799 '@sentry/nextjs@8.46.0': 5781 5800 resolution: {integrity: sha512-d3FH1tlMeXTiJ3L3N0M/KyZUBLP7vFG7t2HsPIyRqBI1PUFaXupS0htcqNcDg2zssbrECNv5YWSgSMbW4HMt3g==} ··· 6571 6590 '@types/pg-pool@2.0.6': 6572 6591 resolution: {integrity: sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==} 6573 6592 6574 - '@types/pg@8.11.10': 6575 - resolution: {integrity: sha512-LczQUW4dbOQzsH2RQ5qoeJ6qJPdrcM/DcMLoqWQkMLMsq83J5lAX3LXjdkWdpscFy67JSOWDnh7Ny/sPFykmkg==} 6593 + '@types/pg@8.15.5': 6594 + resolution: {integrity: sha512-LF7lF6zWEKxuT3/OR8wAZGzkg4ENGXFNyiV/JeOt9z5B+0ZVwbql9McqX5c/WStFq1GaGso7H1AzP/qSzmlCKQ==} 6576 6595 6577 6596 '@types/pg@8.6.1': 6578 6597 resolution: {integrity: sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==} ··· 7202 7221 resolution: {integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==} 7203 7222 engines: {node: '>=8'} 7204 7223 7224 + citty@0.1.6: 7225 + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} 7226 + 7205 7227 cjs-module-lexer@1.4.1: 7206 7228 resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} 7207 7229 ··· 7348 7370 confbox@0.1.8: 7349 7371 resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} 7350 7372 7373 + confbox@0.2.2: 7374 + resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} 7375 + 7351 7376 config-chain@1.1.13: 7352 7377 resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} 7353 7378 7379 + consola@3.4.2: 7380 + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} 7381 + engines: {node: ^14.18.0 || >=16.10.0} 7382 + 7354 7383 constant-case@2.0.0: 7355 7384 resolution: {integrity: sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==} 7356 7385 ··· 8040 8069 expressive-code@0.41.2: 8041 8070 resolution: {integrity: sha512-aLZiZaqorRtNExtGpUjK9zFH9aTpWeoTXMyLo4b4IcuXfPqtLPPxhRm/QlPb8QqIcMMXnSiGRHSFpQfX0m7HJw==} 8042 8071 8072 + exsolve@1.0.7: 8073 + resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} 8074 + 8043 8075 extend-shallow@2.0.1: 8044 8076 resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} 8045 8077 engines: {node: '>=0.10.0'} ··· 8553 8585 import-in-the-middle@1.12.0: 8554 8586 resolution: {integrity: sha512-yAgSE7GmtRcu4ZUSFX/4v69UGXwugFFSdIQJ14LHPOPPQrWv8Y7O9PHsw8Ovk7bKCLe4sjXMbZFqGFcLHpZ89w==} 8555 8587 8588 + import-in-the-middle@1.15.0: 8589 + resolution: {integrity: sha512-bpQy+CrsRmYmoPMAE/0G33iwRqwW4ouqdRg8jgbH3aKuCtOc8lxgmYXg2dMM92CRiGP660EtBcymH/eVUpCSaA==} 8590 + 8556 8591 import-meta-resolve@4.1.0: 8557 8592 resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} 8558 8593 ··· 9127 9162 markdown-table@3.0.3: 9128 9163 resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} 9129 9164 9130 - marked@7.0.4: 9131 - resolution: {integrity: sha512-t8eP0dXRJMtMvBojtkcsA7n48BkauktUKzfkPSCq85ZMTJ0v76Rke4DYz01omYpPTUh4p/f7HePgRo3ebG8+QQ==} 9132 - engines: {node: '>= 16'} 9165 + marked@15.0.12: 9166 + resolution: {integrity: sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==} 9167 + engines: {node: '>= 18'} 9133 9168 hasBin: true 9134 9169 9135 9170 math-intrinsics@1.1.0: 9136 9171 resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} 9137 9172 engines: {node: '>= 0.4'} 9138 - 9139 - md-to-react-email@5.0.5: 9140 - resolution: {integrity: sha512-OvAXqwq57uOk+WZqFFNCMZz8yDp8BD3WazW1wAKHUrPbbdr89K9DWS6JXY09vd9xNdPNeurI8DU/X4flcfaD8A==} 9141 - peerDependencies: 9142 - react: ^18.0 || ^19.0 9143 9173 9144 9174 mdast-util-definitions@5.1.2: 9145 9175 resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} ··· 9561 9591 9562 9592 module-details-from-path@1.0.3: 9563 9593 resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==} 9594 + 9595 + module-details-from-path@1.0.4: 9596 + resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==} 9564 9597 9565 9598 mri@1.2.0: 9566 9599 resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} ··· 9805 9838 react-router-dom: 9806 9839 optional: true 9807 9840 9841 + nypm@0.6.0: 9842 + resolution: {integrity: sha512-mn8wBFV9G9+UFHIrq+pZ2r2zL4aPau/by3kJb3cM7+5tQHMt6HGQB8FDIeKFYp8o0D2pnH6nVsO88N4AmUxIWg==} 9843 + engines: {node: ^14.16.0 || >=16.10.0} 9844 + hasBin: true 9845 + 9808 9846 oauth4webapi@3.5.3: 9809 9847 resolution: {integrity: sha512-2bnHosmBLAQpXNBLOvaJMyMkr4Yya5ohE5Q9jqyxiN+aa7GFCzvDN1RRRMrp0NkfqRR2MTaQNkcSUCCjILD9oQ==} 9810 9848 ··· 9826 9864 object-values@1.0.0: 9827 9865 resolution: {integrity: sha512-+8hwcz/JnQ9EpLIXzN0Rs7DLsBpJNT/xYehtB/jU93tHYr5BFEO8E+JGQNOSqE7opVzz5cGksKFHt7uUJVLSjQ==} 9828 9866 engines: {node: '>=0.10.0'} 9829 - 9830 - obuf@1.1.2: 9831 - resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} 9832 9867 9833 9868 ofetch@1.4.1: 9834 9869 resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} ··· 10040 10075 resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} 10041 10076 engines: {node: '>=4.0.0'} 10042 10077 10043 - pg-numeric@1.0.2: 10044 - resolution: {integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==} 10045 - engines: {node: '>=4'} 10046 - 10047 10078 pg-protocol@1.10.3: 10048 10079 resolution: {integrity: sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==} 10049 10080 10050 10081 pg-types@2.2.0: 10051 10082 resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} 10052 10083 engines: {node: '>=4'} 10053 - 10054 - pg-types@4.0.2: 10055 - resolution: {integrity: sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==} 10056 - engines: {node: '>=10'} 10057 10084 10058 10085 phenomenon@1.6.0: 10059 10086 resolution: {integrity: sha512-7h9/fjPD3qNlgggzm88cY58l9sudZ6Ey+UmZsizfhtawO6E3srZQXywaNm2lBwT72TbpHYRPy7ytIHeBUD/G0A==} ··· 10086 10113 10087 10114 pkg-types@1.3.1: 10088 10115 resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} 10116 + 10117 + pkg-types@2.3.0: 10118 + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} 10089 10119 10090 10120 playwright-core@1.46.0: 10091 10121 resolution: {integrity: sha512-9Y/d5UIwuJk8t3+lhmMSAJyNP1BUC/DqP3cQJDQQL/oWqAiuPTLgy7Q5dzglmTLwcBRdetzgNM/gni7ckfTr6A==} ··· 10143 10173 resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} 10144 10174 engines: {node: '>=4'} 10145 10175 10146 - postgres-array@3.0.4: 10147 - resolution: {integrity: sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ==} 10148 - engines: {node: '>=12'} 10149 - 10150 10176 postgres-bytea@1.0.0: 10151 10177 resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} 10152 10178 engines: {node: '>=0.10.0'} 10153 10179 10154 - postgres-bytea@3.0.0: 10155 - resolution: {integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==} 10156 - engines: {node: '>= 6'} 10157 - 10158 10180 postgres-date@1.0.7: 10159 10181 resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} 10160 10182 engines: {node: '>=0.10.0'} 10161 10183 10162 - postgres-date@2.1.0: 10163 - resolution: {integrity: sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==} 10164 - engines: {node: '>=12'} 10165 - 10166 10184 postgres-interval@1.2.0: 10167 10185 resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} 10168 10186 engines: {node: '>=0.10.0'} 10169 10187 10170 - postgres-interval@3.0.0: 10171 - resolution: {integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==} 10172 - engines: {node: '>=12'} 10173 - 10174 - postgres-range@1.1.4: 10175 - resolution: {integrity: sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==} 10176 - 10177 10188 preact-render-to-string@6.5.11: 10178 10189 resolution: {integrity: sha512-ubnauqoGczeGISiOh6RjX0/cdaF8v/oDXIjO85XALCQjwQP+SB4RDXXtvZ6yTYSjG+PC1QRP2AhPgCEsM2EvUw==} 10179 10190 peerDependencies: ··· 10190 10201 prettier@2.8.7: 10191 10202 resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} 10192 10203 engines: {node: '>=10.13.0'} 10193 - hasBin: true 10194 - 10195 - prettier@3.5.3: 10196 - resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} 10197 - engines: {node: '>=14'} 10198 10204 hasBin: true 10199 10205 10200 10206 prettier@3.6.2: ··· 10311 10317 peerDependencies: 10312 10318 react: ^19.2.0 10313 10319 10314 - react-email@4.0.17: 10315 - resolution: {integrity: sha512-Wppdxgio/QKNe3piccIhk6jvgiLwfOTAwud5t/NlWL8wepsirgXo09OyZCz62Qb9flFNBw+Hz5ahOkpk3JaizQ==} 10320 + react-email@4.3.1: 10321 + resolution: {integrity: sha512-GBgI7fl0fXVFVQ4zlXG+x14egDNX1WVlOrAXKMyc1h9xeTnIAt/u3g1liU4v+7Yv3yprMSkZ1mIO3YPuTKo77A==} 10316 10322 engines: {node: '>=18.0.0'} 10317 10323 hasBin: true 10318 10324 ··· 14277 14283 '@libsql/win32-x64-msvc@0.5.22': 14278 14284 optional: true 14279 14285 14286 + '@logtape/logtape@1.1.2': {} 14287 + 14288 + '@logtape/sentry@1.1.2(@logtape/logtape@1.1.2)': 14289 + dependencies: 14290 + '@logtape/logtape': 1.1.2 14291 + '@sentry/core': 9.46.0 14292 + 14280 14293 '@mapbox/hast-util-table-cell-style@0.2.0': 14281 14294 dependencies: 14282 14295 unist-util-visit: 1.4.1 ··· 14429 14442 dependencies: 14430 14443 '@openpanel/sdk': 1.0.0 14431 14444 14445 + '@opentelemetry/api-logs@0.204.0': 14446 + dependencies: 14447 + '@opentelemetry/api': 1.9.0 14448 + 14432 14449 '@opentelemetry/api-logs@0.52.1': 14433 14450 dependencies: 14434 14451 '@opentelemetry/api': 1.9.0 ··· 14453 14470 '@opentelemetry/api': 1.9.0 14454 14471 '@opentelemetry/semantic-conventions': 1.28.0 14455 14472 14473 + '@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0)': 14474 + dependencies: 14475 + '@opentelemetry/api': 1.9.0 14476 + '@opentelemetry/semantic-conventions': 1.37.0 14477 + 14456 14478 '@opentelemetry/instrumentation-amqplib@0.45.0(@opentelemetry/api@1.9.0)': 14457 14479 dependencies: 14458 14480 '@opentelemetry/api': 1.9.0 ··· 14661 14683 transitivePeerDependencies: 14662 14684 - supports-color 14663 14685 14686 + '@opentelemetry/instrumentation@0.204.0(@opentelemetry/api@1.9.0)': 14687 + dependencies: 14688 + '@opentelemetry/api': 1.9.0 14689 + '@opentelemetry/api-logs': 0.204.0 14690 + import-in-the-middle: 1.15.0 14691 + require-in-the-middle: 7.4.0 14692 + transitivePeerDependencies: 14693 + - supports-color 14694 + 14664 14695 '@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0)': 14665 14696 dependencies: 14666 14697 '@opentelemetry/api': 1.9.0 ··· 14693 14724 '@opentelemetry/core': 1.30.0(@opentelemetry/api@1.9.0) 14694 14725 '@opentelemetry/semantic-conventions': 1.28.0 14695 14726 14727 + '@opentelemetry/resources@2.2.0(@opentelemetry/api@1.9.0)': 14728 + dependencies: 14729 + '@opentelemetry/api': 1.9.0 14730 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 14731 + '@opentelemetry/semantic-conventions': 1.37.0 14732 + 14696 14733 '@opentelemetry/sdk-trace-base@1.30.0(@opentelemetry/api@1.9.0)': 14697 14734 dependencies: 14698 14735 '@opentelemetry/api': 1.9.0 ··· 14700 14737 '@opentelemetry/resources': 1.30.0(@opentelemetry/api@1.9.0) 14701 14738 '@opentelemetry/semantic-conventions': 1.28.0 14702 14739 14740 + '@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0)': 14741 + dependencies: 14742 + '@opentelemetry/api': 1.9.0 14743 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 14744 + '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) 14745 + '@opentelemetry/semantic-conventions': 1.37.0 14746 + 14703 14747 '@opentelemetry/semantic-conventions@1.27.0': {} 14704 14748 14705 14749 '@opentelemetry/semantic-conventions@1.28.0': {} 14750 + 14751 + '@opentelemetry/semantic-conventions@1.37.0': {} 14706 14752 14707 14753 '@opentelemetry/sql-common@0.40.1(@opentelemetry/api@1.9.0)': 14708 14754 dependencies: ··· 16082 16128 16083 16129 '@radix-ui/rect@1.1.1': {} 16084 16130 16085 - '@react-email/body@0.0.11(react@19.2.0)': 16086 - dependencies: 16087 - react: 19.2.0 16088 - 16089 - '@react-email/button@0.0.19(react@19.2.0)': 16131 + '@react-email/body@0.1.0(react@19.2.0)': 16090 16132 dependencies: 16091 16133 react: 19.2.0 16092 16134 ··· 16094 16136 dependencies: 16095 16137 react: 19.2.0 16096 16138 16097 - '@react-email/code-block@0.0.12(react@19.2.0)': 16139 + '@react-email/button@0.2.0(react@19.2.0)': 16098 16140 dependencies: 16099 - prismjs: 1.30.0 16100 16141 react: 19.2.0 16101 16142 16102 16143 '@react-email/code-block@0.1.0(react@19.2.0)': ··· 16112 16153 dependencies: 16113 16154 react: 19.2.0 16114 16155 16115 - '@react-email/components@0.0.36(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': 16156 + '@react-email/components@0.5.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': 16116 16157 dependencies: 16117 - '@react-email/body': 0.0.11(react@19.2.0) 16118 - '@react-email/button': 0.0.19(react@19.2.0) 16119 - '@react-email/code-block': 0.0.12(react@19.2.0) 16120 - '@react-email/code-inline': 0.0.5(react@19.2.0) 16121 - '@react-email/column': 0.0.13(react@19.2.0) 16122 - '@react-email/container': 0.0.15(react@19.2.0) 16123 - '@react-email/font': 0.0.9(react@19.2.0) 16124 - '@react-email/head': 0.0.12(react@19.2.0) 16125 - '@react-email/heading': 0.0.15(react@19.2.0) 16126 - '@react-email/hr': 0.0.11(react@19.2.0) 16127 - '@react-email/html': 0.0.11(react@19.2.0) 16128 - '@react-email/img': 0.0.11(react@19.2.0) 16129 - '@react-email/link': 0.0.12(react@19.2.0) 16130 - '@react-email/markdown': 0.0.14(react@19.2.0) 16131 - '@react-email/preview': 0.0.12(react@19.2.0) 16132 - '@react-email/render': 1.0.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 16133 - '@react-email/row': 0.0.12(react@19.2.0) 16134 - '@react-email/section': 0.0.16(react@19.2.0) 16135 - '@react-email/tailwind': 1.0.4(react@19.2.0) 16136 - '@react-email/text': 0.1.1(react@19.2.0) 16137 - react: 19.2.0 16138 - transitivePeerDependencies: 16139 - - react-dom 16140 - 16141 - '@react-email/components@0.1.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': 16142 - dependencies: 16143 - '@react-email/body': 0.0.11(react@19.2.0) 16144 - '@react-email/button': 0.1.0(react@19.2.0) 16158 + '@react-email/body': 0.1.0(react@19.2.0) 16159 + '@react-email/button': 0.2.0(react@19.2.0) 16145 16160 '@react-email/code-block': 0.1.0(react@19.2.0) 16146 16161 '@react-email/code-inline': 0.0.5(react@19.2.0) 16147 16162 '@react-email/column': 0.0.13(react@19.2.0) ··· 16153 16168 '@react-email/html': 0.0.11(react@19.2.0) 16154 16169 '@react-email/img': 0.0.11(react@19.2.0) 16155 16170 '@react-email/link': 0.0.12(react@19.2.0) 16156 - '@react-email/markdown': 0.0.15(react@19.2.0) 16171 + '@react-email/markdown': 0.0.16(react@19.2.0) 16157 16172 '@react-email/preview': 0.0.13(react@19.2.0) 16158 - '@react-email/render': 1.1.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 16173 + '@react-email/render': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 16159 16174 '@react-email/row': 0.0.12(react@19.2.0) 16160 16175 '@react-email/section': 0.0.16(react@19.2.0) 16161 - '@react-email/tailwind': 1.0.5(react@19.2.0) 16176 + '@react-email/tailwind': 1.2.2(react@19.2.0) 16162 16177 '@react-email/text': 0.1.5(react@19.2.0) 16163 16178 react: 19.2.0 16164 16179 transitivePeerDependencies: ··· 16196 16211 dependencies: 16197 16212 react: 19.2.0 16198 16213 16199 - '@react-email/markdown@0.0.14(react@19.2.0)': 16214 + '@react-email/markdown@0.0.16(react@19.2.0)': 16200 16215 dependencies: 16201 - md-to-react-email: 5.0.5(react@19.2.0) 16202 - react: 19.2.0 16203 - 16204 - '@react-email/markdown@0.0.15(react@19.2.0)': 16205 - dependencies: 16206 - md-to-react-email: 5.0.5(react@19.2.0) 16207 - react: 19.2.0 16208 - 16209 - '@react-email/preview@0.0.12(react@19.2.0)': 16210 - dependencies: 16216 + marked: 15.0.12 16211 16217 react: 19.2.0 16212 16218 16213 16219 '@react-email/preview@0.0.13(react@19.2.0)': ··· 16222 16228 react-dom: 19.2.0(react@19.2.0) 16223 16229 react-promise-suspense: 0.3.4 16224 16230 16225 - '@react-email/render@1.0.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': 16226 - dependencies: 16227 - html-to-text: 9.0.5 16228 - prettier: 3.5.3 16229 - react: 19.2.0 16230 - react-dom: 19.2.0(react@19.2.0) 16231 - react-promise-suspense: 0.3.4 16232 - 16233 16231 '@react-email/render@1.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': 16234 16232 dependencies: 16235 16233 html-to-text: 9.0.5 ··· 16238 16236 react-dom: 19.2.0(react@19.2.0) 16239 16237 react-promise-suspense: 0.3.4 16240 16238 16241 - '@react-email/render@1.1.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': 16239 + '@react-email/render@1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': 16242 16240 dependencies: 16243 16241 html-to-text: 9.0.5 16244 16242 prettier: 3.6.2 ··· 16254 16252 dependencies: 16255 16253 react: 19.2.0 16256 16254 16257 - '@react-email/tailwind@1.0.4(react@19.2.0)': 16258 - dependencies: 16259 - react: 19.2.0 16260 - 16261 16255 '@react-email/tailwind@1.0.5(react@19.2.0)': 16262 16256 dependencies: 16263 16257 react: 19.2.0 16264 16258 16265 - '@react-email/text@0.1.1(react@19.2.0)': 16259 + '@react-email/tailwind@1.2.2(react@19.2.0)': 16266 16260 dependencies: 16267 16261 react: 19.2.0 16268 16262 ··· 16475 16469 '@sentry/types': 8.9.2 16476 16470 '@sentry/utils': 8.9.2 16477 16471 16472 + '@sentry/core@9.46.0': {} 16473 + 16478 16474 '@sentry/nextjs@8.46.0(@opentelemetry/core@1.30.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.56.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(webpack@5.97.1)': 16479 16475 dependencies: 16480 16476 '@opentelemetry/api': 1.9.0 ··· 16501 16497 - supports-color 16502 16498 - webpack 16503 16499 16504 - '@sentry/nextjs@8.46.0(@opentelemetry/core@1.30.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.56.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.3(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(webpack@5.97.1(esbuild@0.21.5))': 16500 + '@sentry/nextjs@8.46.0(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.3(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(webpack@5.97.1(esbuild@0.21.5))': 16505 16501 dependencies: 16506 16502 '@opentelemetry/api': 1.9.0 16507 16503 '@opentelemetry/semantic-conventions': 1.28.0 ··· 16509 16505 '@sentry-internal/browser-utils': 8.46.0 16510 16506 '@sentry/core': 8.46.0 16511 16507 '@sentry/node': 8.46.0 16512 - '@sentry/opentelemetry': 8.46.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.30.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.56.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.28.0) 16508 + '@sentry/opentelemetry': 8.46.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.28.0) 16513 16509 '@sentry/react': 8.46.0(react@19.2.0) 16514 16510 '@sentry/vercel-edge': 8.46.0 16515 16511 '@sentry/webpack-plugin': 2.22.7(encoding@0.1.13)(webpack@5.97.1(esbuild@0.21.5)) ··· 16527 16523 - supports-color 16528 16524 - webpack 16529 16525 16526 + '@sentry/nextjs@8.46.0(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.3(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(webpack@5.97.1)': 16527 + dependencies: 16528 + '@opentelemetry/api': 1.9.0 16529 + '@opentelemetry/semantic-conventions': 1.28.0 16530 + '@rollup/plugin-commonjs': 28.0.1(rollup@3.29.5) 16531 + '@sentry-internal/browser-utils': 8.46.0 16532 + '@sentry/core': 8.46.0 16533 + '@sentry/node': 8.46.0 16534 + '@sentry/opentelemetry': 8.46.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.28.0) 16535 + '@sentry/react': 8.46.0(react@19.2.0) 16536 + '@sentry/vercel-edge': 8.46.0 16537 + '@sentry/webpack-plugin': 2.22.7(encoding@0.1.13)(webpack@5.97.1) 16538 + chalk: 3.0.0 16539 + next: 15.5.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 16540 + resolve: 1.22.8 16541 + rollup: 3.29.5 16542 + stacktrace-parser: 0.1.10 16543 + transitivePeerDependencies: 16544 + - '@opentelemetry/core' 16545 + - '@opentelemetry/instrumentation' 16546 + - '@opentelemetry/sdk-trace-base' 16547 + - encoding 16548 + - react 16549 + - supports-color 16550 + - webpack 16551 + 16530 16552 '@sentry/node@8.46.0': 16531 16553 dependencies: 16532 16554 '@opentelemetry/api': 1.9.0 ··· 16576 16598 '@opentelemetry/semantic-conventions': 1.28.0 16577 16599 '@sentry/core': 8.46.0 16578 16600 16601 + '@sentry/opentelemetry@8.46.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.28.0)': 16602 + dependencies: 16603 + '@opentelemetry/api': 1.9.0 16604 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 16605 + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) 16606 + '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0) 16607 + '@opentelemetry/semantic-conventions': 1.28.0 16608 + '@sentry/core': 8.46.0 16609 + 16579 16610 '@sentry/react@8.46.0(react@19.2.0)': 16580 16611 dependencies: 16581 16612 '@sentry/browser': 8.46.0 ··· 17265 17296 '@tanstack/react-query': 5.80.7(react@19.2.0) 17266 17297 '@trpc/react-query': 11.4.4(@tanstack/react-query@5.80.7(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2) 17267 17298 17268 - '@trpc/next@11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(next@15.5.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2)': 17299 + '@trpc/next@11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(next@15.5.3(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2)': 17269 17300 dependencies: 17270 17301 '@trpc/client': 11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2) 17271 17302 '@trpc/server': 11.4.4(typescript@5.7.2) ··· 17533 17564 17534 17565 '@types/pg-pool@2.0.6': 17535 17566 dependencies: 17536 - '@types/pg': 8.11.10 17567 + '@types/pg': 8.15.5 17537 17568 17538 - '@types/pg@8.11.10': 17569 + '@types/pg@8.15.5': 17539 17570 dependencies: 17540 17571 '@types/node': 24.0.8 17541 17572 pg-protocol: 1.10.3 17542 - pg-types: 4.0.2 17573 + pg-types: 2.2.0 17543 17574 17544 17575 '@types/pg@8.6.1': 17545 17576 dependencies: ··· 18384 18415 18385 18416 ci-info@4.3.0: {} 18386 18417 18418 + citty@0.1.6: 18419 + dependencies: 18420 + consola: 3.4.2 18421 + 18387 18422 cjs-module-lexer@1.4.1: {} 18388 18423 18389 18424 class-variance-authority@0.7.0: ··· 18526 18561 18527 18562 confbox@0.1.8: {} 18528 18563 18564 + confbox@0.2.2: {} 18565 + 18529 18566 config-chain@1.1.13: 18530 18567 dependencies: 18531 18568 ini: 1.3.8 18532 18569 proto-list: 1.2.4 18570 + 18571 + consola@3.4.2: {} 18533 18572 18534 18573 constant-case@2.0.0: 18535 18574 dependencies: ··· 18827 18866 transitivePeerDependencies: 18828 18867 - supports-color 18829 18868 18830 - drizzle-orm@0.44.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.15.15(bufferutil@4.0.8)(utf-8-validate@6.0.5))(@opentelemetry/api@1.9.0)(@types/pg@8.11.10)(better-sqlite3@11.7.0)(bun-types@1.3.0(@types/react@19.2.2)): 18869 + drizzle-orm@0.44.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.15.15(bufferutil@4.0.8)(utf-8-validate@6.0.5))(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(better-sqlite3@11.7.0)(bun-types@1.3.0(@types/react@19.2.2)): 18831 18870 optionalDependencies: 18832 18871 '@cloudflare/workers-types': 4.20250303.0 18833 18872 '@libsql/client': 0.15.15(bufferutil@4.0.8)(utf-8-validate@6.0.5) 18834 18873 '@libsql/client-wasm': 0.14.0 18835 18874 '@opentelemetry/api': 1.9.0 18836 - '@types/pg': 8.11.10 18875 + '@types/pg': 8.15.5 18837 18876 better-sqlite3: 11.7.0 18838 18877 bun-types: 1.3.0(@types/react@19.2.2) 18839 18878 18840 - drizzle-zod@0.5.1(drizzle-orm@0.44.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.15.15(bufferutil@4.0.8)(utf-8-validate@6.0.5))(@opentelemetry/api@1.9.0)(@types/pg@8.11.10)(better-sqlite3@11.7.0)(bun-types@1.3.0(@types/react@19.2.2)))(zod@3.24.2): 18879 + drizzle-zod@0.5.1(drizzle-orm@0.44.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.15.15(bufferutil@4.0.8)(utf-8-validate@6.0.5))(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(better-sqlite3@11.7.0)(bun-types@1.3.0(@types/react@19.2.2)))(zod@3.24.2): 18841 18880 dependencies: 18842 - drizzle-orm: 0.44.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.15.15(bufferutil@4.0.8)(utf-8-validate@6.0.5))(@opentelemetry/api@1.9.0)(@types/pg@8.11.10)(better-sqlite3@11.7.0)(bun-types@1.3.0(@types/react@19.2.2)) 18881 + drizzle-orm: 0.44.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.15.15(bufferutil@4.0.8)(utf-8-validate@6.0.5))(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(better-sqlite3@11.7.0)(bun-types@1.3.0(@types/react@19.2.2)) 18843 18882 zod: 3.24.2 18844 18883 18845 18884 dset@3.1.4: {} ··· 19212 19251 '@expressive-code/plugin-frames': 0.41.2 19213 19252 '@expressive-code/plugin-shiki': 0.41.2 19214 19253 '@expressive-code/plugin-text-markers': 0.41.2 19254 + 19255 + exsolve@1.0.7: {} 19215 19256 19216 19257 extend-shallow@2.0.1: 19217 19258 dependencies: ··· 19977 20018 cjs-module-lexer: 1.4.1 19978 20019 module-details-from-path: 1.0.3 19979 20020 20021 + import-in-the-middle@1.15.0: 20022 + dependencies: 20023 + acorn: 8.15.0 20024 + acorn-import-attributes: 1.9.5(acorn@8.15.0) 20025 + cjs-module-lexer: 1.4.1 20026 + module-details-from-path: 1.0.4 20027 + 19980 20028 import-meta-resolve@4.1.0: {} 19981 20029 19982 20030 import-meta-resolve@4.2.0: {} ··· 20495 20543 20496 20544 markdown-table@3.0.3: {} 20497 20545 20498 - marked@7.0.4: {} 20546 + marked@15.0.12: {} 20499 20547 20500 20548 math-intrinsics@1.1.0: {} 20501 - 20502 - md-to-react-email@5.0.5(react@19.2.0): 20503 - dependencies: 20504 - marked: 7.0.4 20505 - react: 19.2.0 20506 20549 20507 20550 mdast-util-definitions@5.1.2: 20508 20551 dependencies: ··· 21375 21418 ufo: 1.5.4 21376 21419 21377 21420 module-details-from-path@1.0.3: {} 21421 + 21422 + module-details-from-path@1.0.4: {} 21378 21423 21379 21424 mri@1.2.0: {} 21380 21425 ··· 21577 21622 optionalDependencies: 21578 21623 next: 15.5.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 21579 21624 21625 + nypm@0.6.0: 21626 + dependencies: 21627 + citty: 0.1.6 21628 + consola: 3.4.2 21629 + pathe: 2.0.3 21630 + pkg-types: 2.3.0 21631 + tinyexec: 0.3.2 21632 + 21580 21633 oauth4webapi@3.5.3: {} 21581 21634 21582 21635 object-assign@4.1.1: {} ··· 21588 21641 object-pairs@0.1.0: {} 21589 21642 21590 21643 object-values@1.0.0: {} 21591 - 21592 - obuf@1.1.2: {} 21593 21644 21594 21645 ofetch@1.4.1: 21595 21646 dependencies: ··· 21844 21895 21845 21896 pg-int8@1.0.1: {} 21846 21897 21847 - pg-numeric@1.0.2: {} 21848 - 21849 21898 pg-protocol@1.10.3: {} 21850 21899 21851 21900 pg-types@2.2.0: ··· 21855 21904 postgres-bytea: 1.0.0 21856 21905 postgres-date: 1.0.7 21857 21906 postgres-interval: 1.2.0 21858 - 21859 - pg-types@4.0.2: 21860 - dependencies: 21861 - pg-int8: 1.0.1 21862 - pg-numeric: 1.0.2 21863 - postgres-array: 3.0.4 21864 - postgres-bytea: 3.0.0 21865 - postgres-date: 2.1.0 21866 - postgres-interval: 3.0.0 21867 - postgres-range: 1.1.4 21868 21907 21869 21908 phenomenon@1.6.0: {} 21870 21909 ··· 21886 21925 dependencies: 21887 21926 confbox: 0.1.8 21888 21927 mlly: 1.7.4 21928 + pathe: 2.0.3 21929 + 21930 + pkg-types@2.3.0: 21931 + dependencies: 21932 + confbox: 0.2.2 21933 + exsolve: 1.0.7 21889 21934 pathe: 2.0.3 21890 21935 21891 21936 playwright-core@1.46.0: {} ··· 21949 21994 21950 21995 postgres-array@2.0.0: {} 21951 21996 21952 - postgres-array@3.0.4: {} 21953 - 21954 21997 postgres-bytea@1.0.0: {} 21955 21998 21956 - postgres-bytea@3.0.0: 21957 - dependencies: 21958 - obuf: 1.1.2 21959 - 21960 21999 postgres-date@1.0.7: {} 21961 - 21962 - postgres-date@2.1.0: {} 21963 22000 21964 22001 postgres-interval@1.2.0: 21965 22002 dependencies: 21966 22003 xtend: 4.0.2 21967 - 21968 - postgres-interval@3.0.0: {} 21969 - 21970 - postgres-range@1.1.4: {} 21971 22004 21972 22005 preact-render-to-string@6.5.11(preact@10.24.3): 21973 22006 dependencies: ··· 21993 22026 21994 22027 prettier@2.8.7: 21995 22028 optional: true 21996 - 21997 - prettier@3.5.3: {} 21998 22029 21999 22030 prettier@3.6.2: {} 22000 22031 ··· 22127 22158 react: 19.2.0 22128 22159 scheduler: 0.27.0 22129 22160 22130 - react-email@4.0.17(@opentelemetry/api@1.9.0)(bufferutil@4.0.8)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5): 22161 + react-email@4.3.1(bufferutil@4.0.8)(utf-8-validate@6.0.5): 22131 22162 dependencies: 22132 - '@babel/parser': 7.27.7 22133 - '@babel/traverse': 7.27.7 22134 - chalk: 5.4.1 22163 + '@babel/parser': 7.28.4 22164 + '@babel/traverse': 7.28.4 22135 22165 chokidar: 4.0.3 22136 22166 commander: 13.1.0 22137 22167 debounce: 2.2.0 22138 22168 esbuild: 0.25.5 22139 22169 glob: 11.0.3 22170 + jiti: 2.4.2 22140 22171 log-symbols: 7.0.1 22141 22172 mime-types: 3.0.1 22142 - next: 15.5.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 22143 22173 normalize-path: 3.0.0 22174 + nypm: 0.6.0 22144 22175 ora: 8.2.0 22176 + prompts: 2.4.2 22145 22177 socket.io: 4.8.1(bufferutil@4.0.8)(utf-8-validate@6.0.5) 22146 22178 tsconfig-paths: 4.2.0 22147 22179 transitivePeerDependencies: 22148 - - '@babel/core' 22149 - - '@opentelemetry/api' 22150 - - '@playwright/test' 22151 - - babel-plugin-macros 22152 - - babel-plugin-react-compiler 22153 22180 - bufferutil 22154 - - react 22155 - - react-dom 22156 - - sass 22157 22181 - supports-color 22158 22182 - utf-8-validate 22159 22183