Openstatus www.openstatus.dev

chore: improve logging (#1768)

* improve logging

* trying it

* fixing bug

* claude vibing

* ci: apply automated fixes
claude vibing

* claude vibing

* ci: apply automated fixes

* me crying

---------

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
75381041 d2b4a462

+161 -310
+1 -1
.github/workflows/api-preview.yml
··· 19 19 20 20 jobs: 21 21 review_app: 22 - runs-on: ubuntu-24.04-4 22 + runs-on: depot-ubuntu-24.04-4 23 23 timeout-minutes: 15 24 24 outputs: 25 25 url: ${{ steps.deploy.outputs.url }}
+1 -1
.github/workflows/deploy-checker.yml
··· 8 8 jobs: 9 9 deploy-checker: 10 10 name: Deploy Checker 11 - runs-on: ubuntu-24.04-4 11 + runs-on: ubuntu-latest 12 12 timeout-minutes: 15 13 13 steps: 14 14 - uses: actions/checkout@v4
+1 -1
.github/workflows/deploy-private-location.yml
··· 9 9 jobs: 10 10 deploy-private-location: 11 11 name: Deploy Private Location 12 - runs-on: ubuntu-24.04-4 12 + runs-on: ubuntu-latest 13 13 timeout-minutes: 15 14 14 permissions: 15 15 contents: read
+1 -1
.github/workflows/deploy-workflows.yml
··· 13 13 jobs: 14 14 deploy-workflows: 15 15 name: Deploy Workflows 16 - runs-on: ubuntu-24.04-4 16 + runs-on: ubuntu-latest 17 17 timeout-minutes: 15 18 18 steps: 19 19 - uses: actions/checkout@v4
+1 -1
.github/workflows/deploy.yml
··· 6 6 jobs: 7 7 deploy: 8 8 name: Deploy API 9 - runs-on: ubuntu-24.04-4 9 + runs-on: depot-ubuntu-24.04-4 10 10 timeout-minutes: 15 11 11 steps: 12 12 - uses: actions/checkout@v4
+1 -1
.github/workflows/go-tests.yml
··· 16 16 jobs: 17 17 ci: 18 18 name: Continuous Integration 19 - runs-on: ubuntu-24.04-4 19 + runs-on: ubuntu-latest 20 20 timeout-minutes: 5 21 21 steps: 22 22 - uses: actions/checkout@v4
+1 -1
.github/workflows/lint.yml
··· 14 14 jobs: 15 15 autofix: 16 16 name: autofix 17 - runs-on: ubuntu-24.04-4 17 + runs-on: depot-ubuntu-24.04-4 18 18 steps: 19 19 - name: ⬇️ Checkout repo 20 20 uses: actions/checkout@v4
+1 -1
.github/workflows/migrate.yml
··· 8 8 jobs: 9 9 migrate: 10 10 name: 🗃️ Migrate DB 11 - runs-on: ubuntu-24.04-4 11 + runs-on: depot-ubuntu-24.04-4 12 12 env: 13 13 DATABASE_URL: ${{ secrets.DATABASE_URL }} 14 14 DATABASE_AUTH_TOKEN: ${{ secrets.DATABASE_AUTH_TOKEN }}
+2 -2
.github/workflows/publish-checker.yml
··· 11 11 12 12 jobs: 13 13 build-checker: 14 - runs-on: ubuntu-24.04-4 14 + runs-on: ubuntu-latest 15 15 # Permissions to use OIDC token authentication 16 16 permissions: 17 17 contents: read ··· 36 36 platforms: linux/amd64,linux/arm64 37 37 push: true 38 38 build-private-location: 39 - runs-on: ubuntu-24.04-4 39 + runs-on: ubuntu-latest 40 40 # Permissions to use OIDC token authentication 41 41 permissions: 42 42 contents: read
+1 -1
.github/workflows/synthetic.yml
··· 14 14 15 15 jobs: 16 16 synthetic_ci: 17 - runs-on: ubuntu-24.04-4 17 + runs-on: ubuntu-latest 18 18 name: Run OpenStatus Synthetics CI 19 19 steps: 20 20 - name: Checkout
+1 -1
.github/workflows/test.yml
··· 10 10 jobs: 11 11 tests: 12 12 name: 🧪 Tests 13 - runs-on: ubuntu-24.04-4 13 + runs-on: depot-ubuntu-24.04-4 14 14 timeout-minutes: 15 15 15 services: 16 16 sqld:
+1 -1
.github/workflows/workflow-preview.yml
··· 18 18 19 19 jobs: 20 20 review_app: 21 - runs-on: ubuntu-24.04-4 21 + runs-on: ubuntu-latest 22 22 timeout-minutes: 15 23 23 outputs: 24 24 url: ${{ steps.deploy.outputs.url }}
+2 -4
apps/private-location/internal/server/ingest_dns.go
··· 44 44 return nil, connect.NewError(connect.CodeInternal, err) 45 45 } 46 46 47 - event := ctx.Value("event") 48 - if eventMap, ok := event.(map[string]any); ok && eventMap != nil { 49 - eventMap["private_location"] = map[string]any{ 47 + if holder, ok := ctx.Value(eventKey).(*EventHolder); ok && holder != nil { 48 + holder.Event["private_location"] = map[string]any{ 50 49 "monitor_id": req.Msg.MonitorId, 51 50 } 52 - ctx = context.WithValue(ctx, "event", eventMap) 53 51 } 54 52 55 53 records := make(map[string][]string)
+6 -4
apps/private-location/internal/server/ingest_http.go
··· 9 9 private_locationv1 "github.com/openstatushq/openstatus/apps/private-location/proto/private_location/v1" 10 10 ) 11 11 12 + type EventHolder struct { 13 + Event map[string]any 14 + } 15 + 12 16 type PingData struct { 13 17 ID string `json:"id"` 14 18 WorkspaceID string `json:"workspaceId"` ··· 31 35 } 32 36 33 37 func (h *privateLocationHandler) IngestHTTP(ctx context.Context, req *connect.Request[private_locationv1.IngestHTTPRequest]) (*connect.Response[private_locationv1.IngestHTTPResponse], error) { 34 - event := ctx.Value("event") 35 - if eventMap, ok := event.(map[string]any); ok && eventMap != nil { 36 - eventMap["private_location"] = map[string]any{ 38 + if holder, ok := ctx.Value(eventKey).(*EventHolder); ok && holder != nil { 39 + holder.Event["private_location"] = map[string]any{ 37 40 "monitor_id": req.Msg.MonitorId, 38 41 } 39 - ctx = context.WithValue(ctx, "event", eventMap) 40 42 } 41 43 42 44 token := req.Header().Get("openstatus-token")
+2 -4
apps/private-location/internal/server/ingest_tcp.go
··· 43 43 return nil, connect.NewError(connect.CodeInternal, err) 44 44 } 45 45 46 - event := ctx.Value("event") 47 - if eventMap, ok := event.(map[string]any); ok && eventMap != nil { 48 - eventMap["private_location"] = map[string]any{ 46 + if holder, ok := ctx.Value(eventKey).(*EventHolder); ok && holder != nil { 47 + holder.Event["private_location"] = map[string]any{ 49 48 "monitor_id": req.Msg.MonitorId, 50 49 } 51 - ctx = context.WithValue(ctx, "event", eventMap) 52 50 } 53 51 54 52 data := TCPData{
+21 -19
apps/private-location/internal/server/routes.go
··· 61 61 } 62 62 fullURL := scheme + "://" + r.Host + r.RequestURI 63 63 64 - event := map[string]any{ 65 - "timestamp": startTime.Format(time.RFC3339), 66 - "request_id": requestID, 67 - "method": r.Method, 68 - "path": r.URL.Path, 69 - "url": fullURL, 70 - "user_agent": r.Header.Get("User-Agent"), 71 - "content_type": r.Header.Get("Content-Type"), 64 + holder := &EventHolder{ 65 + Event: map[string]any{ 66 + "timestamp": startTime.Format(time.RFC3339), 67 + "request_id": requestID, 68 + "method": r.Method, 69 + "path": r.URL.Path, 70 + "url": fullURL, 71 + "user_agent": r.Header.Get("User-Agent"), 72 + "content_type": r.Header.Get("Content-Type"), 73 + }, 72 74 } 73 75 74 76 // Store in context 75 77 ctx := context.WithValue(r.Context(), requestIDKey, requestID) 76 - ctx = context.WithValue(ctx, eventKey, event) 78 + ctx = context.WithValue(ctx, eventKey, holder) 77 79 r = r.WithContext(ctx) 78 80 79 81 // Wrap response writer to capture status code ··· 89 91 status = http.StatusOK 90 92 } 91 93 92 - event["status_code"] = status 93 - event["duration_ms"] = duration 94 + holder.Event["status_code"] = status 95 + holder.Event["duration_ms"] = duration 94 96 95 97 if status >= 400 { 96 - event["outcome"] = "error" 98 + holder.Event["outcome"] = "error" 97 99 } else { 98 - event["outcome"] = "success" 100 + holder.Event["outcome"] = "success" 99 101 } 100 102 101 - if logs.ShouldSample(event) { 102 - attrs := logs.MapToAttrs(event) 103 + if logs.ShouldSample(holder.Event) { 104 + attrs := logs.MapToAttrs(holder.Event) 103 105 slog.LogAttrs(r.Context(), slog.LevelInfo, "request done", attrs...) 104 106 } 105 107 }) ··· 114 116 return "" 115 117 } 116 118 117 - // GetEvent retrieves the event map from context 118 - func GetEvent(ctx context.Context) map[string]any { 119 - if event, ok := ctx.Value(eventKey).(map[string]any); ok { 120 - return event 119 + // GetEvent retrieves the event holder from context 120 + func GetEvent(ctx context.Context) *EventHolder { 121 + if holder, ok := ctx.Value(eventKey).(*EventHolder); ok { 122 + return holder 121 123 } 122 124 return nil 123 125 }
+2
apps/server/.env.test
··· 13 13 SCREENSHOT_SERVICE_URL=http://your.endpoint 14 14 NEXT_PUBLIC_OPENPANEL_CLIENT_ID=test 15 15 OPENPANEL_CLIENT_SECRET=test 16 + AXIOM_TOKEN=test 17 + AXIOM_DATASET=test
+3 -3
apps/server/package.json
··· 15 15 "@hono/sentry": "1.2.2", 16 16 "@hono/zod-openapi": "1.1.5", 17 17 "@hono/zod-validator": "0.7.6", 18 - "@logtape/logtape": "2.0.0", 19 - "@logtape/otel": "2.0.0", 20 - "@logtape/sentry": "1.1.2", 18 + "@logtape/logtape": "2.0.1-dev.481", 19 + "@logtape/otel": "2.0.1-dev.481", 20 + "@logtape/sentry": "2.0.1-dev.481", 21 21 "@openstatus/analytics": "workspace:*", 22 22 "@openstatus/assertions": "workspace:*", 23 23 "@openstatus/db": "workspace:*",
+23 -19
apps/server/src/index.ts
··· 28 28 }; 29 29 }; 30 30 31 - /* biome-ignore lint/suspicious/noExplicitAny: <explanation> */ 32 - function shouldSample(event: Record<string, any>): boolean { 33 - // Always keep errors 34 - if (event.status_code >= 500) return true; 35 - if (event.error) return true; 31 + // Export app before any top-level await to avoid "Cannot access before initialization" errors in tests 32 + export const app = new Hono<Env>({ 33 + strict: false, 34 + }); 36 35 37 - // Always keep slow requests (above p99) 38 - if (event.duration_ms > 2000) return true; 36 + const logger = getLogger("api-server"); 37 + const otelLogger = getLogger("api-server-otel"); 39 38 40 - // Random sample the rest at 20% 41 - return Math.random() < 0.2; 42 - } 39 + /** 40 + * Configure logging asynchronously without blocking module initialization. 41 + * This allows tests to import `app` immediately. 42 + */ 43 43 44 44 const defaultLogger = getOpenTelemetrySink({ 45 45 serviceName: "openstatus-server", ··· 58 58 await configure({ 59 59 sinks: { 60 60 console: getConsoleSink({ formatter: jsonLinesFormatter }), 61 - 62 61 otel: defaultLogger, 63 62 }, 64 63 loggers: [ ··· 76 75 contextLocalStorage: new AsyncLocalStorage(), 77 76 }); 78 77 79 - const logger = getLogger("api-server"); 78 + /* biome-ignore lint/suspicious/noExplicitAny: <explanation> */ 79 + function shouldSample(event: Record<string, any>): boolean { 80 + // Always keep errors 81 + if (event.status_code >= 500) return true; 82 + if (event.error) return true; 80 83 81 - const otelLogger = getLogger("api-server-otel"); 84 + // Always keep slow requests (above p99) 85 + if (event.duration_ms > 2000) return true; 82 86 83 - export const app = new Hono<Env>({ 84 - strict: false, 85 - }); 87 + // Random sample the rest at 20% 88 + return Math.random() < 0.2; 89 + } 86 90 87 91 /** 88 92 * Middleware ··· 92 96 app.use("*", prettyJSON()); 93 97 94 98 app.use("*", async (c, next) => { 95 - const requestId = c.get("requestId"); 99 + const reqId = c.get("requestId"); 96 100 const startTime = Date.now(); 97 101 98 102 await withContext( 99 103 { 100 - request_id: requestId, 104 + request_id: reqId, 101 105 method: c.req.method, 102 106 url: c.req.url, 103 107 user_agent: c.req.header("User-Agent"), ··· 106 110 // Initialize wide event - one canonical log line per request 107 111 const event: Record<string, unknown> = { 108 112 timestamp: new Date().toISOString(), 109 - request_id: requestId, 113 + request_id: reqId, 110 114 // Request context 111 115 method: c.req.method, 112 116 path: c.req.path,
+3 -3
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": "2.0.0", 13 - "@logtape/otel": "2.0.0", 14 - "@logtape/sentry": "2.0.0", 12 + "@logtape/logtape": "2.0.1-dev.481", 13 + "@logtape/otel": "2.0.1-dev.481", 14 + "@logtape/sentry": "2.0.1-dev.481", 15 15 "@openstatus/db": "workspace:*", 16 16 "@openstatus/emails": "workspace:*", 17 17 "@openstatus/notification-discord": "workspace:*",
+86 -241
pnpm-lock.yaml
··· 453 453 specifier: 0.7.6 454 454 version: 0.7.6(hono@4.11.3)(zod@4.1.13) 455 455 '@logtape/logtape': 456 - specifier: 2.0.0 457 - version: 2.0.0 456 + specifier: 2.0.1-dev.481 457 + version: 2.0.1-dev.481 458 458 '@logtape/otel': 459 - specifier: 2.0.0 460 - version: 2.0.0(@logtape/logtape@2.0.0) 459 + specifier: 2.0.1-dev.481 460 + version: 2.0.1-dev.481(@logtape/logtape@2.0.1-dev.481) 461 461 '@logtape/sentry': 462 - specifier: 1.1.2 463 - version: 1.1.2(@logtape/logtape@2.0.0) 462 + specifier: 2.0.1-dev.481 463 + version: 2.0.1-dev.481(@logtape/logtape@2.0.1-dev.481)(@sentry/core@10.31.0) 464 464 '@openstatus/analytics': 465 465 specifier: workspace:* 466 466 version: link:../../packages/analytics ··· 1095 1095 specifier: 0.15.15 1096 1096 version: 0.15.15 1097 1097 '@logtape/logtape': 1098 - specifier: 2.0.0 1099 - version: 2.0.0 1098 + specifier: 2.0.1-dev.481 1099 + version: 2.0.1-dev.481 1100 1100 '@logtape/otel': 1101 - specifier: 2.0.0 1102 - version: 2.0.0(@logtape/logtape@2.0.0) 1101 + specifier: 2.0.1-dev.481 1102 + version: 2.0.1-dev.481(@logtape/logtape@2.0.1-dev.481) 1103 1103 '@logtape/sentry': 1104 - specifier: 2.0.0 1105 - version: 2.0.0(@logtape/logtape@2.0.0)(@sentry/core@10.31.0) 1104 + specifier: 2.0.1-dev.481 1105 + version: 2.0.1-dev.481(@logtape/logtape@2.0.1-dev.481)(@sentry/core@10.31.0) 1106 1106 '@openstatus/db': 1107 1107 specifier: workspace:* 1108 1108 version: link:../../packages/db ··· 1159 1159 version: 2.6.2 1160 1160 drizzle-orm: 1161 1161 specifier: 0.44.4 1162 - version: 0.44.4(@libsql/client@0.15.15)(@opentelemetry/api@1.9.0)(@types/pg@8.15.6)(bun-types@1.3.5) 1162 + version: 0.44.4(@libsql/client@0.15.15)(@opentelemetry/api@1.9.0)(@types/pg@8.15.6)(bun-types@1.3.6) 1163 1163 effect: 1164 1164 specifier: 3.19.12 1165 1165 version: 3.19.12 ··· 1178 1178 version: link:../../packages/tsconfig 1179 1179 '@types/bun': 1180 1180 specifier: latest 1181 - version: 1.3.5 1181 + version: 1.3.6 1182 1182 typescript: 1183 1183 specifier: 5.9.3 1184 1184 version: 5.9.3 ··· 1337 1337 version: 3.0.3 1338 1338 drizzle-orm: 1339 1339 specifier: 0.44.4 1340 - version: 0.44.4(@libsql/client@0.15.15)(@opentelemetry/api@1.9.0)(@types/pg@8.15.6)(bun-types@1.3.5) 1340 + version: 0.44.4(@libsql/client@0.15.15)(@opentelemetry/api@1.9.0)(@types/pg@8.15.6)(bun-types@1.3.6) 1341 1341 drizzle-zod: 1342 1342 specifier: 0.8.3 1343 - version: 0.8.3(drizzle-orm@0.44.4(@libsql/client@0.15.15)(@opentelemetry/api@1.9.0)(@types/pg@8.15.6)(bun-types@1.3.5))(zod@4.1.13) 1343 + version: 0.8.3(drizzle-orm@0.44.4(@libsql/client@0.15.15)(@opentelemetry/api@1.9.0)(@types/pg@8.15.6)(bun-types@1.3.6))(zod@4.1.13) 1344 1344 zod: 1345 1345 specifier: 4.1.13 1346 1346 version: 4.1.13 ··· 1820 1820 specifier: 5.9.3 1821 1821 version: 5.9.3 1822 1822 1823 + packages/react/dist: {} 1824 + 1823 1825 packages/regions: 1824 1826 dependencies: 1825 1827 zod: ··· 2163 2165 '@astrojs/markdown-remark@6.3.10': 2164 2166 resolution: {integrity: sha512-kk4HeYR6AcnzC4QV8iSlOfh+N8TZ3MEStxPyenyCtemqn8IpEATBFMTJcfrNW32dgpt6MY3oCkMM/Tv3/I4G3A==} 2165 2167 2166 - '@astrojs/markdown-remark@6.3.9': 2167 - resolution: {integrity: sha512-hX2cLC/KW74Io1zIbn92kI482j9J7LleBLGCVU9EP3BeH5MVrnFawOnqD0t/q6D1Z+ZNeQG2gNKMslCcO36wng==} 2168 - 2169 - '@astrojs/mdx@4.3.12': 2170 - resolution: {integrity: sha512-pL3CVPtuQrPnDhWjy7zqbOibNyPaxP4VpQS8T8spwKqKzauJ4yoKyNkVTD8jrP7EAJHmBhZ7PTmUGZqOpKKp8g==} 2171 - engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} 2172 - peerDependencies: 2173 - astro: ^5.0.0 2174 - 2175 2168 '@astrojs/mdx@4.3.13': 2176 2169 resolution: {integrity: sha512-IHDHVKz0JfKBy3//52JSiyWv089b7GVSChIXLrlUOoTLWowG3wr2/8hkaEgEyd/vysvNQvGk+QhysXpJW5ve6Q==} 2177 2170 engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} ··· 3598 3591 cpu: [x64] 3599 3592 os: [win32] 3600 3593 3601 - '@logtape/logtape@2.0.0': 3602 - resolution: {integrity: sha512-z9Hp44mIRXAzgxSyQfFQiRuJ78EMnZa6g43UCxyGOO3RgHjn/7q+5OhdbhypkeHjiJRPxv6RmRsyF0S+OOYWnA==} 3594 + '@logtape/logtape@2.0.1-dev.481': 3595 + resolution: {integrity: sha512-KMiOi6IPpkwOIMB+BUB5Qz+o1bohNxAIVLfN/cbdTVsMuXUYPVBgRJ0f+5+p9iqXvIF4v3EX1fdEDXEH/6WFxg==} 3603 3596 3604 - '@logtape/otel@2.0.0': 3605 - resolution: {integrity: sha512-2lsip757ZwjMYkINJYcljYf7fd+Hvv3cstF4A3oI3Kbs5yw2f2h7eBhJbHCxKuTj5mJp1vWzuEFrxI94F9jdCA==} 3597 + '@logtape/otel@2.0.1-dev.481': 3598 + resolution: {integrity: sha512-w7yRk1kJ1aFbQ/kqYD/8nZsRuZlRIrFq/4yERZa3JrqavRSOQgGoduicNde56Rmf9JMVp4FMzCPrCWHTd43VhQ==} 3606 3599 peerDependencies: 3607 - '@logtape/logtape': ^2.0.0 3600 + '@logtape/logtape': ^2.0.1-dev.481+5155a5ef 3608 3601 3609 - '@logtape/sentry@1.1.2': 3610 - resolution: {integrity: sha512-Hmt1traui55R6BvDh8Ug4yXUJVJst9guW3TyA5CyFjGUIvgxmV9uukN6q0rMVfjB1YGxMUPrRYI8ddtYu5RJDg==} 3611 - peerDependencies: 3612 - '@logtape/logtape': ^1.1.2 3613 - 3614 - '@logtape/sentry@2.0.0': 3615 - resolution: {integrity: sha512-Z3Nlfd6KLGd9a8qVUSThsXR7H2Pxm3Wu2e3nPC2QIE0Q8eL5xQ/8+JN/wsqO99EiX88dJibvgkZOKeIuqFEtVQ==} 3602 + '@logtape/sentry@2.0.1-dev.481': 3603 + resolution: {integrity: sha512-pi3WeFqWOB+qCRbiSabAr+ip7jXrLI1x3D8MTa1ux59jMO13l+WuwxpjWZtEqhKHaIaqDAxZU1u7QxUom9u1NA==} 3616 3604 peerDependencies: 3617 - '@logtape/logtape': ^2.0.0 3605 + '@logtape/logtape': ^2.0.1-dev.481+5155a5ef 3618 3606 '@sentry/core': '>=8.0.0' 3619 3607 3620 3608 '@mdx-js/mdx@3.1.1': ··· 5815 5803 resolution: {integrity: sha512-ixm8NISFlPlEo3FjSaqmq4nnd13BRHoafwJ5MG+okCz6BKGZ1SexEggP42/QpGvDprUUHnfncG6WUMgcarr1zA==} 5816 5804 engines: {node: '>=14.18'} 5817 5805 5818 - '@sentry/core@9.47.1': 5819 - resolution: {integrity: sha512-KX62+qIt4xgy8eHKHiikfhz2p5fOciXd0Cl+dNzhgPFq8klq4MGMNaf148GB3M/vBqP4nw/eFvRMAayFCgdRQw==} 5820 - engines: {node: '>=18'} 5821 - 5822 5806 '@sentry/nextjs@10.31.0': 5823 5807 resolution: {integrity: sha512-MA5KZUDigXMMILzRobaP0bVILQ3hl6s2gqxC30iz3sOFv1DdYU9C/tZJCJjt0kXIqppKFQCLKCBXmlizeropVg==} 5824 5808 engines: {node: '>=18'} ··· 5875 5859 peerDependencies: 5876 5860 webpack: '>=4.40.0' 5877 5861 5878 - '@shikijs/core@3.15.0': 5879 - resolution: {integrity: sha512-8TOG6yG557q+fMsSVa8nkEDOZNTSxjbbR8l6lF2gyr6Np+jrPlslqDxQkN6rMXCECQ3isNPZAGszAfYoJOPGlg==} 5880 - 5881 5862 '@shikijs/core@3.20.0': 5882 5863 resolution: {integrity: sha512-f2ED7HYV4JEk827mtMDwe/yQ25pRiXZmtHjWF8uzZKuKiEsJR7Ce1nuQ+HhV9FzDcbIo4ObBCD9GPTzNuy9S1g==} 5883 5864 5884 - '@shikijs/engine-javascript@3.15.0': 5885 - resolution: {integrity: sha512-ZedbOFpopibdLmvTz2sJPJgns8Xvyabe2QbmqMTz07kt1pTzfEvKZc5IqPVO/XFiEbbNyaOpjPBkkr1vlwS+qg==} 5886 - 5887 5865 '@shikijs/engine-javascript@3.20.0': 5888 5866 resolution: {integrity: sha512-OFx8fHAZuk7I42Z9YAdZ95To6jDePQ9Rnfbw9uSRTSbBhYBp1kEOKv/3jOimcj3VRUKusDYM6DswLauwfhboLg==} 5889 5867 5890 - '@shikijs/engine-oniguruma@3.15.0': 5891 - resolution: {integrity: sha512-HnqFsV11skAHvOArMZdLBZZApRSYS4LSztk2K3016Y9VCyZISnlYUYsL2hzlS7tPqKHvNqmI5JSUJZprXloMvA==} 5892 - 5893 5868 '@shikijs/engine-oniguruma@3.20.0': 5894 5869 resolution: {integrity: sha512-Yx3gy7xLzM0ZOjqoxciHjA7dAt5tyzJE3L4uQoM83agahy+PlW244XJSrmJRSBvGYELDhYXPacD4R/cauV5bzQ==} 5895 5870 5896 - '@shikijs/langs@3.15.0': 5897 - resolution: {integrity: sha512-WpRvEFvkVvO65uKYW4Rzxs+IG0gToyM8SARQMtGGsH4GDMNZrr60qdggXrFOsdfOVssG/QQGEl3FnJ3EZ+8w8A==} 5898 - 5899 5871 '@shikijs/langs@3.20.0': 5900 5872 resolution: {integrity: sha512-le+bssCxcSHrygCWuOrYJHvjus6zhQ2K7q/0mgjiffRbkhM4o1EWu2m+29l0yEsHDbWaWPNnDUTRVVBvBBeKaA==} 5901 5873 5902 - '@shikijs/themes@3.15.0': 5903 - resolution: {integrity: sha512-8ow2zWb1IDvCKjYb0KiLNrK4offFdkfNVPXb1OZykpLCzRU6j+efkY+Y7VQjNlNFXonSw+4AOdGYtmqykDbRiQ==} 5904 - 5905 5874 '@shikijs/themes@3.20.0': 5906 5875 resolution: {integrity: sha512-U1NSU7Sl26Q7ErRvJUouArxfM2euWqq1xaSrbqMu2iqa+tSp0D1Yah8216sDYbdDHw4C8b75UpE65eWorm2erQ==} 5907 - 5908 - '@shikijs/types@3.15.0': 5909 - resolution: {integrity: sha512-BnP+y/EQnhihgHy4oIAN+6FFtmfTekwOLsQbRw9hOKwqgNy8Bdsjq8B05oAt/ZgvIWWFrshV71ytOrlPfYjIJw==} 5910 5876 5911 5877 '@shikijs/types@3.20.0': 5912 5878 resolution: {integrity: sha512-lhYAATn10nkZcBQ0BlzSbJA3wcmL5MXUUF8d2Zzon6saZDlToKaiRX60n2+ZaHJCmXEcZRWNzn+k9vplr8Jhsw==} ··· 6484 6450 '@types/braces@3.0.5': 6485 6451 resolution: {integrity: sha512-SQFof9H+LXeWNz8wDe7oN5zu7ket0qwMu5vZubW4GCJ8Kkeh6nBWUz87+KTz/G3Kqsrp0j/W253XJb3KMEeg3w==} 6486 6452 6487 - '@types/bun@1.3.5': 6488 - resolution: {integrity: sha512-RnygCqNrd3srIPEWBd5LFeUYG7plCoH2Yw9WaZGyNmdTEei+gWaHqydbaIRkIkcbXwhBT94q78QljxN0Sk838w==} 6453 + '@types/bun@1.3.6': 6454 + resolution: {integrity: sha512-uWCv6FO/8LcpREhenN1d1b6fcspAB+cefwD7uti8C8VffIv0Um08TKMn98FynpTiU38+y2dUO55T11NgDt8VAA==} 6489 6455 6490 6456 '@types/caseless@0.12.5': 6491 6457 resolution: {integrity: sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==} ··· 6686 6652 '@upstash/kafka@1.3.3': 6687 6653 resolution: {integrity: sha512-CIr657FZuK+IMuwcxkj3oCB6xKO+LMlHd4BL4J/Lwbpj6+5YHO+5ZcpdMIQhbcemthJcRtE0gDUfZEnrfb3Rjg==} 6688 6654 engines: {node: '>=10'} 6689 - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. 6690 6655 6691 6656 '@upstash/qstash@2.6.2': 6692 6657 resolution: {integrity: sha512-aB/1yqMJTRyOt7Go2Db1ZIVnmTPpsc2KGY5jpLVcegNtjksaPTJF6fmITxos5HVvsQhS8IB3gvF/+gQfRQlPLQ==} ··· 6985 6950 resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} 6986 6951 engines: {node: ^4.5.0 || >= 5.9} 6987 6952 6988 - baseline-browser-mapping@2.8.31: 6989 - resolution: {integrity: sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==} 6990 - hasBin: true 6991 - 6992 6953 baseline-browser-mapping@2.9.9: 6993 6954 resolution: {integrity: sha512-V8fbOCSeOFvlDj7LLChUcqbZrdKD9RU/VR260piF1790vT0mfLSwGc/Qzxv3IqiTukOpNtItePa0HBpMAj7MDg==} 6994 6955 hasBin: true ··· 7047 7008 brotli@1.3.3: 7048 7009 resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} 7049 7010 7050 - browserslist@4.28.0: 7051 - resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} 7052 - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 7053 - hasBin: true 7054 - 7055 7011 browserslist@4.28.1: 7056 7012 resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} 7057 7013 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} ··· 7077 7033 peerDependencies: 7078 7034 '@types/react': ^19 7079 7035 7080 - bun-types@1.3.5: 7081 - resolution: {integrity: sha512-inmAYe2PFLs0SUbFOWSVD24sg1jFlMPxOjOSSCYqUgn4Hsc3rDc7dFvfVYjFPNHtov6kgUeulV4SxbuIV/stPw==} 7036 + bun-types@1.3.6: 7037 + resolution: {integrity: sha512-OlFwHcnNV99r//9v5IIOgQ9Uk37gZqrNMCcqEaExdkVq3Avwqok1bJFmvGMCkCE0FqzdY8VMOZpfpR3lwI+CsQ==} 7082 7038 7083 7039 bundle-require@4.2.1: 7084 7040 resolution: {integrity: sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==} ··· 7112 7068 camelcase@8.0.0: 7113 7069 resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} 7114 7070 engines: {node: '>=16'} 7115 - 7116 - caniuse-lite@1.0.30001757: 7117 - resolution: {integrity: sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==} 7118 7071 7119 7072 caniuse-lite@1.0.30001760: 7120 7073 resolution: {integrity: sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==} ··· 7355 7308 resolution: {integrity: sha512-vXiThu1/rlos7EGu8TuNZQEg2e9TvhH9dmS4T4ZVzB7Ao1agEZ6EG3sn5n+hZRYUgduISd1HpngFzAZiDGm5vQ==} 7356 7309 engines: {node: '>=18'} 7357 7310 7311 + cookie@1.1.1: 7312 + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} 7313 + engines: {node: '>=18'} 7314 + 7358 7315 copy-anything@3.0.5: 7359 7316 resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} 7360 7317 engines: {node: '>=12.13'} ··· 7575 7532 resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} 7576 7533 engines: {node: '>=18'} 7577 7534 7578 - devalue@5.5.0: 7579 - resolution: {integrity: sha512-69sM5yrHfFLJt0AZ9QqZXGCPfJ7fQjvpln3Rq5+PS03LD32Ost1Q9N+eEnaQwGRIriKkMImXD56ocjQmfjbV3w==} 7535 + devalue@5.6.2: 7536 + resolution: {integrity: sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==} 7580 7537 7581 7538 devlop@1.1.0: 7582 7539 resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} ··· 7755 7712 effect@3.19.12: 7756 7713 resolution: {integrity: sha512-7F9RGTrCTC3D7nh9Zw+3VlJWwZgo5k33KA+476BAaD0rKIXKZsY/jQ+ipyhR/Avo239Fi6GqAVFs1mqM1IJ7yg==} 7757 7714 7758 - electron-to-chromium@1.5.260: 7759 - resolution: {integrity: sha512-ov8rBoOBhVawpzdre+Cmz4FB+y66Eqrk6Gwqd8NGxuhv99GQ8XqMAr351KEkOt7gukXWDg6gJWEMKgL2RLMPtA==} 7760 - 7761 7715 electron-to-chromium@1.5.267: 7762 7716 resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} 7763 7717 ··· 7787 7741 engine.io@6.6.4: 7788 7742 resolution: {integrity: sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==} 7789 7743 engines: {node: '>=10.2.0'} 7790 - 7791 - enhanced-resolve@5.18.3: 7792 - resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} 7793 - engines: {node: '>=10.13.0'} 7794 7744 7795 7745 enhanced-resolve@5.18.4: 7796 7746 resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==} ··· 9555 9505 package-manager-detector@1.5.0: 9556 9506 resolution: {integrity: sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==} 9557 9507 9508 + package-manager-detector@1.6.0: 9509 + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} 9510 + 9558 9511 pagefind@1.4.0: 9559 9512 resolution: {integrity: sha512-z2kY1mQlL4J8q5EIsQkLzQjilovKzfNVhX8De6oyE6uHpfFtyBaqUpcl/XzJC/4fjD8vBDyh1zolimIcVrCn9g==} 9560 9513 hasBin: true ··· 10265 10218 shiki@0.14.4: 10266 10219 resolution: {integrity: sha512-IXCRip2IQzKwxArNNq1S+On4KPML3Yyn8Zzs/xRgcgOWIr8ntIK3IKzjFPfjy/7kt9ZMjc+FItfqHRBg8b6tNQ==} 10267 10220 10268 - shiki@3.15.0: 10269 - resolution: {integrity: sha512-kLdkY6iV3dYbtPwS9KXU7mjfmDm25f5m0IPNFnaXO7TBPcvbUOY72PYXSuSqDzwp+vlH/d7MXpHlKO/x+QoLXw==} 10270 - 10271 10221 shiki@3.20.0: 10272 10222 resolution: {integrity: sha512-kgCOlsnyWb+p0WU+01RjkCH+eBVsjL1jOwUYWv0YDWkM2/A46+LDKVs5yZCUXjJG6bj4ndFoAg5iLIIue6dulg==} 10273 10223 ··· 10321 10271 resolution: {integrity: sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==} 10322 10272 engines: {node: '>= 18'} 10323 10273 10274 + smol-toml@1.6.0: 10275 + resolution: {integrity: sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==} 10276 + engines: {node: '>= 18'} 10277 + 10324 10278 snake-case@2.1.0: 10325 10279 resolution: {integrity: sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==} 10326 10280 ··· 10613 10567 tar@7.5.2: 10614 10568 resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==} 10615 10569 engines: {node: '>=18'} 10570 + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me 10616 10571 10617 10572 teeny-request@9.0.0: 10618 10573 resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==} ··· 11049 11004 until-async@3.0.2: 11050 11005 resolution: {integrity: sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==} 11051 11006 11052 - update-browserslist-db@1.1.4: 11053 - resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} 11054 - hasBin: true 11055 - peerDependencies: 11056 - browserslist: '>= 4.21.0' 11057 - 11058 11007 update-browserslist-db@1.2.3: 11059 11008 resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} 11060 11009 hasBin: true ··· 11493 11442 11494 11443 zod-to-json-schema@3.25.0: 11495 11444 resolution: {integrity: sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==} 11445 + peerDependencies: 11446 + zod: ^3.25 || ^4 11447 + 11448 + zod-to-json-schema@3.25.1: 11449 + resolution: {integrity: sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==} 11496 11450 peerDependencies: 11497 11451 zod: ^3.25 || ^4 11498 11452 ··· 11628 11582 transitivePeerDependencies: 11629 11583 - supports-color 11630 11584 11631 - '@astrojs/markdown-remark@6.3.9': 11632 - dependencies: 11633 - '@astrojs/internal-helpers': 0.7.5 11634 - '@astrojs/prism': 3.3.0 11635 - github-slugger: 2.0.0 11636 - hast-util-from-html: 2.0.3 11637 - hast-util-to-text: 4.0.2 11638 - import-meta-resolve: 4.2.0 11639 - js-yaml: 4.1.1 11640 - mdast-util-definitions: 6.0.0 11641 - rehype-raw: 7.0.0 11642 - rehype-stringify: 10.0.1 11643 - remark-gfm: 4.0.1 11644 - remark-parse: 11.0.0 11645 - remark-rehype: 11.1.2 11646 - remark-smartypants: 3.0.2 11647 - shiki: 3.15.0 11648 - smol-toml: 1.5.2 11649 - unified: 11.0.5 11650 - unist-util-remove-position: 5.0.0 11651 - unist-util-visit: 5.0.0 11652 - unist-util-visit-parents: 6.0.2 11653 - vfile: 6.0.3 11654 - transitivePeerDependencies: 11655 - - supports-color 11656 - 11657 - '@astrojs/mdx@4.3.12(astro@5.16.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(yaml@2.8.1))': 11658 - dependencies: 11659 - '@astrojs/markdown-remark': 6.3.9 11660 - '@mdx-js/mdx': 3.1.1 11661 - acorn: 8.15.0 11662 - astro: 5.16.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(yaml@2.8.1) 11663 - es-module-lexer: 1.7.0 11664 - estree-util-visit: 2.0.0 11665 - hast-util-to-html: 9.0.5 11666 - piccolore: 0.1.3 11667 - rehype-raw: 7.0.0 11668 - remark-gfm: 4.0.1 11669 - remark-smartypants: 3.0.2 11670 - source-map: 0.7.6 11671 - unist-util-visit: 5.0.0 11672 - vfile: 6.0.3 11673 - transitivePeerDependencies: 11674 - - supports-color 11675 - 11676 11585 '@astrojs/mdx@4.3.13(astro@5.16.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(yaml@2.8.1))': 11677 11586 dependencies: 11678 11587 '@astrojs/markdown-remark': 6.3.10 ··· 11732 11641 11733 11642 '@astrojs/starlight@0.37.1(astro@5.16.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(yaml@2.8.1))': 11734 11643 dependencies: 11735 - '@astrojs/markdown-remark': 6.3.9 11736 - '@astrojs/mdx': 4.3.12(astro@5.16.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(yaml@2.8.1)) 11644 + '@astrojs/markdown-remark': 6.3.10 11645 + '@astrojs/mdx': 4.3.13(astro@5.16.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(yaml@2.8.1)) 11737 11646 '@astrojs/sitemap': 3.6.0 11738 11647 '@pagefind/default-ui': 1.4.0 11739 11648 '@types/hast': 3.0.4 ··· 12345 12254 dependencies: 12346 12255 '@babel/compat-data': 7.28.5 12347 12256 '@babel/helper-validator-option': 7.27.1 12348 - browserslist: 4.28.0 12257 + browserslist: 4.28.1 12349 12258 lru-cache: 5.1.1 12350 12259 semver: 6.3.1 12351 12260 ··· 12927 12836 '@expressive-code/plugin-shiki@0.41.3': 12928 12837 dependencies: 12929 12838 '@expressive-code/core': 0.41.3 12930 - shiki: 3.15.0 12839 + shiki: 3.20.0 12931 12840 12932 12841 '@expressive-code/plugin-text-markers@0.41.3': 12933 12842 dependencies: ··· 13367 13276 '@libsql/win32-x64-msvc@0.5.22': 13368 13277 optional: true 13369 13278 13370 - '@logtape/logtape@2.0.0': {} 13279 + '@logtape/logtape@2.0.1-dev.481': {} 13371 13280 13372 - '@logtape/otel@2.0.0(@logtape/logtape@2.0.0)': 13281 + '@logtape/otel@2.0.1-dev.481(@logtape/logtape@2.0.1-dev.481)': 13373 13282 dependencies: 13374 - '@logtape/logtape': 2.0.0 13283 + '@logtape/logtape': 2.0.1-dev.481 13375 13284 '@opentelemetry/api': 1.9.0 13376 13285 '@opentelemetry/api-logs': 0.208.0 13377 13286 '@opentelemetry/exporter-logs-otlp-grpc': 0.208.0(@opentelemetry/api@1.9.0) ··· 13382 13291 '@opentelemetry/sdk-logs': 0.208.0(@opentelemetry/api@1.9.0) 13383 13292 '@opentelemetry/semantic-conventions': 1.38.0 13384 13293 13385 - '@logtape/sentry@1.1.2(@logtape/logtape@2.0.0)': 13386 - dependencies: 13387 - '@logtape/logtape': 2.0.0 13388 - '@sentry/core': 9.47.1 13389 - 13390 - '@logtape/sentry@2.0.0(@logtape/logtape@2.0.0)(@sentry/core@10.31.0)': 13294 + '@logtape/sentry@2.0.1-dev.481(@logtape/logtape@2.0.1-dev.481)(@sentry/core@10.31.0)': 13391 13295 dependencies: 13392 - '@logtape/logtape': 2.0.0 13296 + '@logtape/logtape': 2.0.1-dev.481 13393 13297 '@sentry/core': 10.31.0 13394 13298 13395 13299 '@mdx-js/mdx@3.1.1': ··· 15543 15447 '@sentry/types': 8.9.2 15544 15448 '@sentry/utils': 8.9.2 15545 15449 15546 - '@sentry/core@9.47.1': {} 15547 - 15548 15450 '@sentry/nextjs@10.31.0(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(next@16.0.10(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(webpack@5.103.0)': 15549 15451 dependencies: 15550 15452 '@opentelemetry/api': 1.9.0 ··· 15665 15567 - encoding 15666 15568 - supports-color 15667 15569 15668 - '@shikijs/core@3.15.0': 15669 - dependencies: 15670 - '@shikijs/types': 3.15.0 15671 - '@shikijs/vscode-textmate': 10.0.2 15672 - '@types/hast': 3.0.4 15673 - hast-util-to-html: 9.0.5 15674 - 15675 15570 '@shikijs/core@3.20.0': 15676 15571 dependencies: 15677 15572 '@shikijs/types': 3.20.0 ··· 15679 15574 '@types/hast': 3.0.4 15680 15575 hast-util-to-html: 9.0.5 15681 15576 15682 - '@shikijs/engine-javascript@3.15.0': 15683 - dependencies: 15684 - '@shikijs/types': 3.15.0 15685 - '@shikijs/vscode-textmate': 10.0.2 15686 - oniguruma-to-es: 4.3.4 15687 - 15688 15577 '@shikijs/engine-javascript@3.20.0': 15689 15578 dependencies: 15690 15579 '@shikijs/types': 3.20.0 15691 15580 '@shikijs/vscode-textmate': 10.0.2 15692 15581 oniguruma-to-es: 4.3.4 15693 15582 15694 - '@shikijs/engine-oniguruma@3.15.0': 15695 - dependencies: 15696 - '@shikijs/types': 3.15.0 15697 - '@shikijs/vscode-textmate': 10.0.2 15698 - 15699 15583 '@shikijs/engine-oniguruma@3.20.0': 15700 15584 dependencies: 15701 15585 '@shikijs/types': 3.20.0 15702 15586 '@shikijs/vscode-textmate': 10.0.2 15703 15587 15704 - '@shikijs/langs@3.15.0': 15705 - dependencies: 15706 - '@shikijs/types': 3.15.0 15707 - 15708 15588 '@shikijs/langs@3.20.0': 15709 15589 dependencies: 15710 15590 '@shikijs/types': 3.20.0 15711 15591 15712 - '@shikijs/themes@3.15.0': 15713 - dependencies: 15714 - '@shikijs/types': 3.15.0 15715 - 15716 15592 '@shikijs/themes@3.20.0': 15717 15593 dependencies: 15718 15594 '@shikijs/types': 3.20.0 15719 - 15720 - '@shikijs/types@3.15.0': 15721 - dependencies: 15722 - '@shikijs/vscode-textmate': 10.0.2 15723 - '@types/hast': 3.0.4 15724 15595 15725 15596 '@shikijs/types@3.20.0': 15726 15597 dependencies: ··· 16086 15957 '@parcel/watcher': 2.5.1 16087 15958 '@tailwindcss/node': 4.1.8 16088 15959 '@tailwindcss/oxide': 4.1.8 16089 - enhanced-resolve: 5.18.3 15960 + enhanced-resolve: 5.18.4 16090 15961 mri: 1.2.0 16091 15962 picocolors: 1.1.1 16092 15963 tailwindcss: 4.1.8 ··· 16098 15969 '@tailwindcss/node@4.1.11': 16099 15970 dependencies: 16100 15971 '@ampproject/remapping': 2.3.0 16101 - enhanced-resolve: 5.18.3 15972 + enhanced-resolve: 5.18.4 16102 15973 jiti: 2.6.1 16103 15974 lightningcss: 1.30.1 16104 15975 magic-string: 0.30.21 ··· 16108 15979 '@tailwindcss/node@4.1.8': 16109 15980 dependencies: 16110 15981 '@ampproject/remapping': 2.3.0 16111 - enhanced-resolve: 5.18.3 15982 + enhanced-resolve: 5.18.4 16112 15983 jiti: 2.6.1 16113 15984 lightningcss: 1.30.1 16114 15985 magic-string: 0.30.21 ··· 16396 16267 16397 16268 '@types/braces@3.0.5': {} 16398 16269 16399 - '@types/bun@1.3.5': 16270 + '@types/bun@1.3.6': 16400 16271 dependencies: 16401 - bun-types: 1.3.5 16272 + bun-types: 1.3.6 16402 16273 16403 16274 '@types/caseless@0.12.5': {} 16404 16275 ··· 16937 16808 ci-info: 4.3.1 16938 16809 clsx: 2.1.1 16939 16810 common-ancestor-path: 1.0.1 16940 - cookie: 1.1.0 16811 + cookie: 1.1.1 16941 16812 cssesc: 3.0.0 16942 16813 debug: 4.4.3 16943 16814 deterministic-object-hash: 2.0.2 16944 - devalue: 5.5.0 16815 + devalue: 5.6.2 16945 16816 diff: 5.2.0 16946 16817 dlv: 1.1.3 16947 16818 dset: 3.1.4 ··· 16961 16832 neotraverse: 0.6.18 16962 16833 p-limit: 6.2.0 16963 16834 p-queue: 8.1.1 16964 - package-manager-detector: 1.5.0 16835 + package-manager-detector: 1.6.0 16965 16836 piccolore: 0.1.3 16966 16837 picomatch: 4.0.3 16967 16838 prompts: 2.4.2 16968 16839 rehype: 13.0.2 16969 16840 semver: 7.7.3 16970 - shiki: 3.15.0 16971 - smol-toml: 1.5.2 16841 + shiki: 3.20.0 16842 + smol-toml: 1.6.0 16972 16843 svgo: 4.0.0 16973 16844 tinyexec: 1.0.2 16974 16845 tinyglobby: 0.2.15 ··· 16984 16855 yargs-parser: 21.1.1 16985 16856 yocto-spinner: 0.2.3 16986 16857 zod: 3.25.76 16987 - zod-to-json-schema: 3.25.0(zod@3.25.76) 16858 + zod-to-json-schema: 3.25.1(zod@3.25.76) 16988 16859 zod-to-ts: 1.2.0(typescript@5.9.3)(zod@3.25.76) 16989 16860 optionalDependencies: 16990 16861 sharp: 0.34.5 ··· 17052 16923 17053 16924 base64id@2.0.0: {} 17054 16925 17055 - baseline-browser-mapping@2.8.31: {} 17056 - 17057 16926 baseline-browser-mapping@2.9.9: {} 17058 16927 17059 16928 basic-ftp@5.0.5: {} ··· 17129 16998 brotli@1.3.3: 17130 16999 dependencies: 17131 17000 base64-js: 1.5.1 17132 - 17133 - browserslist@4.28.0: 17134 - dependencies: 17135 - baseline-browser-mapping: 2.8.31 17136 - caniuse-lite: 1.0.30001757 17137 - electron-to-chromium: 1.5.260 17138 - node-releases: 2.0.27 17139 - update-browserslist-db: 1.1.4(browserslist@4.28.0) 17140 17001 17141 17002 browserslist@4.28.1: 17142 17003 dependencies: ··· 17167 17028 '@types/node': 24.0.8 17168 17029 '@types/react': 19.2.2 17169 17030 17170 - bun-types@1.3.5: 17031 + bun-types@1.3.6: 17171 17032 dependencies: 17172 17033 '@types/node': 24.0.8 17173 17034 ··· 17198 17059 upper-case: 1.1.3 17199 17060 17200 17061 camelcase@8.0.0: {} 17201 - 17202 - caniuse-lite@1.0.30001757: {} 17203 17062 17204 17063 caniuse-lite@1.0.30001760: {} 17205 17064 ··· 17427 17286 17428 17287 cookie@1.1.0: {} 17429 17288 17289 + cookie@1.1.1: {} 17290 + 17430 17291 copy-anything@3.0.5: 17431 17292 dependencies: 17432 17293 is-what: 4.1.16 ··· 17618 17479 dependencies: 17619 17480 base-64: 1.0.0 17620 17481 17621 - devalue@5.5.0: {} 17482 + devalue@5.6.2: {} 17622 17483 17623 17484 devlop@1.1.0: 17624 17485 dependencies: ··· 17680 17541 transitivePeerDependencies: 17681 17542 - supports-color 17682 17543 17683 - drizzle-orm@0.44.4(@libsql/client@0.15.15)(@opentelemetry/api@1.9.0)(@types/pg@8.15.6)(bun-types@1.3.5): 17544 + drizzle-orm@0.44.4(@libsql/client@0.15.15)(@opentelemetry/api@1.9.0)(@types/pg@8.15.6)(bun-types@1.3.6): 17684 17545 optionalDependencies: 17685 17546 '@libsql/client': 0.15.15 17686 17547 '@opentelemetry/api': 1.9.0 17687 17548 '@types/pg': 8.15.6 17688 - bun-types: 1.3.5 17549 + bun-types: 1.3.6 17689 17550 17690 - drizzle-zod@0.8.3(drizzle-orm@0.44.4(@libsql/client@0.15.15)(@opentelemetry/api@1.9.0)(@types/pg@8.15.6)(bun-types@1.3.5))(zod@4.1.13): 17551 + drizzle-zod@0.8.3(drizzle-orm@0.44.4(@libsql/client@0.15.15)(@opentelemetry/api@1.9.0)(@types/pg@8.15.6)(bun-types@1.3.6))(zod@4.1.13): 17691 17552 dependencies: 17692 - drizzle-orm: 0.44.4(@libsql/client@0.15.15)(@opentelemetry/api@1.9.0)(@types/pg@8.15.6)(bun-types@1.3.5) 17553 + drizzle-orm: 0.44.4(@libsql/client@0.15.15)(@opentelemetry/api@1.9.0)(@types/pg@8.15.6)(bun-types@1.3.6) 17693 17554 zod: 4.1.13 17694 17555 17695 17556 dset@3.1.4: {} ··· 17720 17581 '@standard-schema/spec': 1.1.0 17721 17582 fast-check: 3.23.2 17722 17583 17723 - electron-to-chromium@1.5.260: {} 17724 - 17725 17584 electron-to-chromium@1.5.267: {} 17726 17585 17727 17586 emmet@2.4.11: ··· 17758 17617 - bufferutil 17759 17618 - supports-color 17760 17619 - utf-8-validate 17761 - 17762 - enhanced-resolve@5.18.3: 17763 - dependencies: 17764 - graceful-fs: 4.2.11 17765 - tapable: 2.3.0 17766 17620 17767 17621 enhanced-resolve@5.18.4: 17768 17622 dependencies: ··· 19805 19659 dependencies: 19806 19660 '@next/env': 16.0.10 19807 19661 '@swc/helpers': 0.5.15 19808 - caniuse-lite: 1.0.30001757 19662 + caniuse-lite: 1.0.30001760 19809 19663 postcss: 8.4.31 19810 19664 react: 19.2.3 19811 19665 react-dom: 19.2.3(react@19.2.3) ··· 20096 19950 package-json-from-dist@1.0.1: {} 20097 19951 20098 19952 package-manager-detector@1.5.0: {} 19953 + 19954 + package-manager-detector@1.6.0: {} 20099 19955 20100 19956 pagefind@1.4.0: 20101 19957 optionalDependencies: ··· 21078 20934 vscode-oniguruma: 1.7.0 21079 20935 vscode-textmate: 8.0.0 21080 20936 21081 - shiki@3.15.0: 21082 - dependencies: 21083 - '@shikijs/core': 3.15.0 21084 - '@shikijs/engine-javascript': 3.15.0 21085 - '@shikijs/engine-oniguruma': 3.15.0 21086 - '@shikijs/langs': 3.15.0 21087 - '@shikijs/themes': 3.15.0 21088 - '@shikijs/types': 3.15.0 21089 - '@shikijs/vscode-textmate': 10.0.2 21090 - '@types/hast': 3.0.4 21091 - 21092 20937 shiki@3.20.0: 21093 20938 dependencies: 21094 20939 '@shikijs/core': 3.20.0 ··· 21152 20997 smart-buffer@4.2.0: {} 21153 20998 21154 20999 smol-toml@1.5.2: {} 21000 + 21001 + smol-toml@1.6.0: {} 21155 21002 21156 21003 snake-case@2.1.0: 21157 21004 dependencies: ··· 21953 21800 21954 21801 until-async@3.0.2: {} 21955 21802 21956 - update-browserslist-db@1.1.4(browserslist@4.28.0): 21957 - dependencies: 21958 - browserslist: 4.28.0 21959 - escalade: 3.2.0 21960 - picocolors: 1.1.1 21961 - 21962 21803 update-browserslist-db@1.2.3(browserslist@4.28.1): 21963 21804 dependencies: 21964 21805 browserslist: 4.28.1 ··· 22370 22211 zhead@2.2.4: {} 22371 22212 22372 22213 zod-to-json-schema@3.25.0(zod@3.25.76): 22214 + dependencies: 22215 + zod: 3.25.76 22216 + 22217 + zod-to-json-schema@3.25.1(zod@3.25.76): 22373 22218 dependencies: 22374 22219 zod: 3.25.76 22375 22220