diff --git a/apps/redis-api/README.md b/apps/redis-api/README.md index 7f2da5c2e..8552b050a 100644 --- a/apps/redis-api/README.md +++ b/apps/redis-api/README.md @@ -35,5 +35,9 @@ az deployment sub create \ --parameters environment={{ENVIRONMENT}} \ containerImageTag=latest \ primaryApiKey={{PRIMARY API KEY}} \ # API keys are used for communicating with the api - secondaryApiKey={{SECONDARY API KEY}} + secondaryApiKey={{SECONDARY API KEY}} \ + sentryDSN={{SENTRY DSN}} \ + sentryEnabled={{true/false}} \ + sentryTraceSampleRate=0.01 + ``` diff --git a/apps/redis-api/ci/bicep/app/main.bicep b/apps/redis-api/ci/bicep/app/main.bicep index 64df07f3c..73aa3c364 100644 --- a/apps/redis-api/ci/bicep/app/main.bicep +++ b/apps/redis-api/ci/bicep/app/main.bicep @@ -7,6 +7,9 @@ param containerImageTag string param redisConnection string param primaryApiKey string param secondaryApiKey string +param sentryDSN string +param sentryEnabled string +param sentryTraceSampleRate string param timestamp string = utcNow() @@ -36,6 +39,10 @@ module containerApp 'containerApp.bicep' = { { name: 'REDIS_CONNECTION', value: redisConnection } { name: 'PRIMARY_API_KEY', value: primaryApiKey } { name: 'SECONDARY_API_KEY', value: secondaryApiKey } + { name: 'SENTRY_DSN', value: sentryDSN } + { name: 'SENTRY_ENABLED', value: sentryEnabled } + { name: 'SENTRY_TRACE_SAMPLE_RATE', value: sentryTraceSampleRate } + { name: 'timestamp', value: timestamp } ] } diff --git a/apps/redis-api/docker-compose.yaml b/apps/redis-api/docker-compose.yaml new file mode 100644 index 000000000..5199b2b66 --- /dev/null +++ b/apps/redis-api/docker-compose.yaml @@ -0,0 +1,27 @@ +services: + redis-api: + build: + context: . + dockerfile: Dockerfile + ports: + - "3001:3001" + depends_on: + - redis + environment: + - REDIS_CONNECTION=redis:6379 + - PRIMARY_API_KEY= + - SECONDARY_API_KEY= + - NODE_ENV=development + - SENTRY_ENABLED=false + + redis: + image: redis:6 + ports: + - "6379:6379" + + redisinsight: + image: redis/redisinsight:latest + ports: + - "5540:5540" + depends_on: + - redis diff --git a/apps/redis-api/package.json b/apps/redis-api/package.json index be0421e81..5146dd58d 100644 --- a/apps/redis-api/package.json +++ b/apps/redis-api/package.json @@ -7,12 +7,14 @@ "dev": "bun --watch src/index.ts | pino-pretty -o '{if module}[{module}] {end}{msg}' -i pid,hostname" }, "dependencies": { - "@elysiajs/server-timing": "1.2.1", - "@elysiajs/swagger": "1.2.2", - "@t3-oss/env-core": "0.12.0", - "elysia": "1.2.25", - "ioredis": "5.6.0", - "pino": "9.6.0" + "@elysiajs/server-timing": "^1.3.0", + "@elysiajs/swagger": "^1.3.0", + "@sentry/bun": "^9.15.0", + "@sentry/tracing": "^7.120.3", + "@t3-oss/env-core": "^0.13.0", + "elysia": "^1.3.0", + "ioredis": "^5.6.1", + "pino": "^9.6.0" }, "devDependencies": { "@biomejs/biome": "^1.9.4", diff --git a/apps/redis-api/src/env.ts b/apps/redis-api/src/env.ts index f307368e6..48bc8de6d 100644 --- a/apps/redis-api/src/env.ts +++ b/apps/redis-api/src/env.ts @@ -3,6 +3,7 @@ import { z } from "zod"; const redisConnectionRegex = /^((?.*?):(?.*?)@)?(?.*?):(?\d+)$/; + export const env = createEnv({ server: { IS_PROD: z @@ -34,6 +35,33 @@ export const env = createEnv({ process.env.NODE_ENV === "development" ? z.string().optional() : z.string().min(10), + SENTRY_DSN: z.string().min(1).optional(), + SENTRY_ENVIRONMENT: z + .enum(["development", "test", "stage", "pre-prod", "production"]) + .default("development"), + SENTRY_ENABLED: z + .string() + .refine((s) => s === "true" || s === "false") + .transform((s) => s === "true"), + SENTRY_TRACE_SAMPLE_RATE: z.coerce.number().default(0.001), + }, + createFinalSchema: (shape) => { + return z.object(shape).transform((env, ctx) => { + if (!env.SENTRY_ENABLED || !env.SENTRY_DSN) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: + "SENTRY_DSN is required when SENTRY_ENABLED is true", + }); + + return z.NEVER; + } + + return { + ...env, + SENTRY_ENABLED: env.SENTRY_ENABLED && !!env.SENTRY_DSN, + }; + }); }, runtimeEnv: { ...process.env, diff --git a/apps/redis-api/src/index.ts b/apps/redis-api/src/index.ts index 7969a1f4f..ce85ca2e4 100644 --- a/apps/redis-api/src/index.ts +++ b/apps/redis-api/src/index.ts @@ -1,3 +1,5 @@ +import "@/server/sentry.server.config"; +import * as Sentry from "@sentry/bun"; import { Elysia } from "elysia"; import { swagger } from "@elysiajs/swagger"; @@ -27,6 +29,8 @@ const app = new Elysia() return getErrorReturn(error); case "INTERNAL_SERVER_ERROR": set.status = 500; + baseLogger.error("Internal server error", error); + Sentry.captureException(error); return getErrorReturn(error); } }); diff --git a/apps/redis-api/src/routes/api/cache.ts b/apps/redis-api/src/routes/api/cache.ts index e71b045fd..a74a46940 100644 --- a/apps/redis-api/src/routes/api/cache.ts +++ b/apps/redis-api/src/routes/api/cache.ts @@ -1,114 +1,126 @@ -import { Elysia, t, ValidationError } from "elysia"; +import * as Sentry from "@sentry/bun"; + +import { Elysia, t } from "elysia"; import { redis } from "@/services/redis"; import { ModelValidationError } from "@/errors/ModelValidationError"; +import { loggerModule } from "@/utils/logger"; +import { truncate } from "@/utils/truncate"; const MIN_LENGTH = 1; const QUERY_TYPE = t.Object({ key: t.String({ minLength: MIN_LENGTH }) }); - +const cacheRouteLogger = loggerModule("cacheRoute"); export const cacheRoutes = new Elysia({ prefix: "/cache" }) - .get( - "/", - async ({ query: { key }, error }) => { - key = validateKey(key); - console.log("GET /cache", key); + .get( + "/", + async ({ query: { key }, status }) => { + key = validateKey(key); + cacheRouteLogger.info("GET /cache", key); - const value = await redis.get(key); - if (!value) { - return error("Not Found", "Not Found"); - } + const value = await redis.get(key); + if (!value) { + return status("Not Found", "Not Found"); + } - try { - const output = JSON.parse(value); - return { data: output }; - } catch (e) { - redis.del(key); - throw e; - } - }, - { - query: QUERY_TYPE, - response: { 200: t.Object({ data: t.Any() }), 404: t.String() }, - } - ) - .put( - "/", - async ({ query: { key }, body, error, set }) => { - key = validateKey(key); - console.log("PUT /cache", key); + try { + const output = JSON.parse(value); + return { data: output }; + } catch (e) { + redis.del(key); + cacheRouteLogger.error(`Invalid JSON in cache for '${key}'`, e); - if (!body.ttl || body.ttl < 0) { - return error("Bad Request", "ttl is required"); - } + Sentry.captureException(e, { + tags: { cacheKey: key }, + extra: { cacheKey: key, value: `${truncate(value, 100)}` }, + fingerprint: ["get-route_invalid-json-in-cache"], + }); - await redis.set(key, JSON.stringify(body.data), "EX", body.ttl); + return status("Not Found", "Not Found"); + } + }, + { + query: QUERY_TYPE, + response: { 200: t.Object({ data: t.Any() }), 404: t.String() }, + } + ) + .put( + "/", + async ({ query: { key }, body, status, set }) => { + key = validateKey(key); + cacheRouteLogger.info("PUT /cache", key); - set.status = 204; - return; - }, - { - body: t.Object({ data: t.Any(), ttl: t.Number() }), - query: QUERY_TYPE, - response: { 204: t.Void(), 400: t.String() }, - } - ) - .delete( - "/", - async ({ query: { key, fuzzy }, set }) => { - key = validateKey(key); - console.log("DELETE /cache", key, { fuzzy }); + if (!body.ttl || body.ttl < 0) { + return status("Bad Request", "ttl is required"); + } - if (fuzzy) { - await deleteWithPattern(`*${key}*`); - } else { - await redis.del(key); - console.log("Deleted key: ", key); - } + await redis.set(key, JSON.stringify(body.data), "EX", body.ttl); - set.status = 204; - return; - }, - { - query: t.Object({ - ...QUERY_TYPE.properties, - ...t.Object({ fuzzy: t.Optional(t.Boolean()) }).properties, - }), - response: { 204: t.Void(), 400: t.String() }, - } - ); + return status(204, void 0); + }, + { + body: t.Object({ data: t.Any(), ttl: t.Number() }), + query: QUERY_TYPE, + response: { 204: t.Void(), 400: t.String() }, + } + ) + .delete( + "/", + async ({ query: { key, fuzzy }, status }) => { + key = validateKey(key); + cacheRouteLogger.info("DELETE /cache", key, { fuzzy }); + + if (fuzzy) { + await deleteWithPattern(`*${key}*`); + } else { + await redis.del(key); + cacheRouteLogger.info("Deleted key: ", key); + } + + return status(204, void 0); + }, + { + query: t.Object({ + ...QUERY_TYPE.properties, + ...t.Object({ fuzzy: t.Optional(t.Boolean()) }).properties, + }), + response: { 204: t.Void(), 400: t.String() }, + } + ); function validateKey(key: string) { - const parsedKey = decodeURIComponent(key); + const parsedKey = decodeURIComponent(key); - if (parsedKey.length < MIN_LENGTH) { - throw new ModelValidationError("Key has to be atleast 1 character long"); - } + if (parsedKey.length < MIN_LENGTH) { + throw new ModelValidationError( + "Key has to be atleast 1 character long" + ); + } - if (parsedKey.includes("*")) { - throw new ModelValidationError("Key cannot contain wildcards"); - } + if (parsedKey.includes("*")) { + throw new ModelValidationError("Key cannot contain wildcards"); + } - return parsedKey; + return parsedKey; } async function deleteWithPattern(pattern: string) { - let cursor = "0"; - let keys: string[] = []; + let cursor = "0"; + const keys: string[] = []; - do { - const [newCursor, foundKeys] = await redis.scan( - cursor, - "MATCH", - pattern, - "COUNT", - 5000 - ); - cursor = newCursor; - keys.push(...foundKeys); - } while (cursor !== "0"); + do { + const [newCursor, foundKeys] = await redis.scan( + cursor, + "MATCH", + pattern, + "COUNT", + 5000 + ); + cursor = newCursor; + keys.push(...foundKeys); + } while (cursor !== "0"); - if (keys.length > 0) { - await redis.del(...keys); - } - console.log("Deleted number of keys: ", keys.length); + if (keys.length > 0) { + await redis.del(...keys); + } + cacheRouteLogger.info("Deleted number of keys: ", keys.length); } diff --git a/apps/redis-api/src/routes/health.ts b/apps/redis-api/src/routes/health.ts index dd1e0a169..667890784 100644 --- a/apps/redis-api/src/routes/health.ts +++ b/apps/redis-api/src/routes/health.ts @@ -5,7 +5,7 @@ import { baseLogger } from "@/utils/logger"; export const healthRoutes = new Elysia().get( "/health", - async ({ set, error }) => { + async ({ set, status }) => { const perf = performance.now(); try { await redis.ping(); @@ -13,7 +13,7 @@ export const healthRoutes = new Elysia().get( baseLogger.error("Redis connection error:", e); console.log("Redis connection error:", e); - return error(503, { healthy: false }); + return status(503, { healthy: false }); } const duration = performance.now() - perf; diff --git a/apps/redis-api/src/server/sentry.server.config.ts b/apps/redis-api/src/server/sentry.server.config.ts new file mode 100644 index 000000000..b0e5714fe --- /dev/null +++ b/apps/redis-api/src/server/sentry.server.config.ts @@ -0,0 +1,11 @@ +import "@sentry/tracing"; +import { env } from "@/env"; +import * as Sentry from "@sentry/bun"; + +Sentry.init({ + dsn: env.SENTRY_DSN, + enabled: env.SENTRY_ENABLED, + environment: env.SENTRY_ENVIRONMENT, + tracesSampleRate: env.SENTRY_TRACE_SAMPLE_RATE, + release: env.VERSION, +}); diff --git a/apps/redis-api/src/utils/truncate.ts b/apps/redis-api/src/utils/truncate.ts new file mode 100644 index 000000000..097ab4eb3 --- /dev/null +++ b/apps/redis-api/src/utils/truncate.ts @@ -0,0 +1,3 @@ +export function truncate(value: string, maxLength = 10): string { + return value.length > maxLength ? `${value.slice(0, maxLength)}...` : value; +} diff --git a/yarn.lock b/yarn.lock index 5fc128593..8c422dcf5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1836,26 +1836,26 @@ __metadata: languageName: node linkType: hard -"@elysiajs/server-timing@npm:1.2.1": - version: 1.2.1 - resolution: "@elysiajs/server-timing@npm:1.2.1" +"@elysiajs/server-timing@npm:^1.3.0": + version: 1.3.0 + resolution: "@elysiajs/server-timing@npm:1.3.0" peerDependencies: - elysia: ">= 1.2.0" - checksum: 10c0/ebf1e9991b45bb76b2c83c9709863d31c3ede803c7db5abc08b870cfd736d083f8d36c5e4f6b895b5e4cdfb70c5544a2ae85fd12041f36594e77ddb2e4076514 + elysia: ">= 1.3.0" + checksum: 10c0/10097c12ec6a8cbac255096fdfda490bdae6c05dbeca3be9556e1e9a52c32106421b1a8d2c7be6532181214155012f9d69590690bbafb8ce7facc164bc37200f languageName: node linkType: hard -"@elysiajs/swagger@npm:1.2.2": - version: 1.2.2 - resolution: "@elysiajs/swagger@npm:1.2.2" +"@elysiajs/swagger@npm:^1.3.0": + version: 1.3.0 + resolution: "@elysiajs/swagger@npm:1.3.0" dependencies: "@scalar/themes": "npm:^0.9.52" "@scalar/types": "npm:^0.0.12" openapi-types: "npm:^12.1.3" pathe: "npm:^1.1.2" peerDependencies: - elysia: ">= 1.2.0" - checksum: 10c0/2ca2341dc36294f11934423ad2c0cb586b08edd41b74cafae7df62c7a22643c313e3f2d763892dc3cbff1afdf51420169c62f3e2317eab18c9c3f6fb711a55d2 + elysia: ">= 1.3.0" + checksum: 10c0/251b50d438175aadcaa19325ddfd30eb109cdc24fc7b9a4394d4da81dba02128248e30d8d1899e9fb4e023afcaf13a9edf1002285dfc540bd955f8cf9cf42733 languageName: node linkType: hard @@ -3323,7 +3323,7 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/instrumentation-amqplib@npm:^0.46.0": +"@opentelemetry/instrumentation-amqplib@npm:^0.46.0, @opentelemetry/instrumentation-amqplib@npm:^0.46.1": version: 0.46.1 resolution: "@opentelemetry/instrumentation-amqplib@npm:0.46.1" dependencies: @@ -3350,6 +3350,20 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-connect@npm:0.43.1": + version: 0.43.1 + resolution: "@opentelemetry/instrumentation-connect@npm:0.43.1" + dependencies: + "@opentelemetry/core": "npm:^1.8.0" + "@opentelemetry/instrumentation": "npm:^0.57.1" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + "@types/connect": "npm:3.4.38" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/a7e2629fbfa775f2d1a6b2c9387e27809db16177cf6de89159017d7353c270c6c84d81550c58ccc51ea72c2304b1fcb911499440451d8df6954cc1f4e654eb64 + languageName: node + linkType: hard + "@opentelemetry/instrumentation-dataloader@npm:0.16.0": version: 0.16.0 resolution: "@opentelemetry/instrumentation-dataloader@npm:0.16.0" @@ -3361,6 +3375,17 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-dataloader@npm:0.16.1": + version: 0.16.1 + resolution: "@opentelemetry/instrumentation-dataloader@npm:0.16.1" + dependencies: + "@opentelemetry/instrumentation": "npm:^0.57.1" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/83bd0267672cc3e8709401e1f107612aed3bb72faedfed76fe25e174b19c41f65d503bc3a666ba0872bbef8c31adcefb8884982f785fa3b0df28eec40b6578aa + languageName: node + linkType: hard + "@opentelemetry/instrumentation-express@npm:0.47.0": version: 0.47.0 resolution: "@opentelemetry/instrumentation-express@npm:0.47.0" @@ -3374,6 +3399,19 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-express@npm:0.47.1": + version: 0.47.1 + resolution: "@opentelemetry/instrumentation-express@npm:0.47.1" + dependencies: + "@opentelemetry/core": "npm:^1.8.0" + "@opentelemetry/instrumentation": "npm:^0.57.1" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/eca448eb088857c7c0c7d0a1875b9e20a990b23e2f64355d2e645618d3f5c038efb9d605009a6d8fa1e05243d0ccef14b9aa1effffee693fd071de3cc39ad3d1 + languageName: node + linkType: hard + "@opentelemetry/instrumentation-fastify@npm:0.44.1": version: 0.44.1 resolution: "@opentelemetry/instrumentation-fastify@npm:0.44.1" @@ -3387,6 +3425,19 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-fastify@npm:0.44.2": + version: 0.44.2 + resolution: "@opentelemetry/instrumentation-fastify@npm:0.44.2" + dependencies: + "@opentelemetry/core": "npm:^1.8.0" + "@opentelemetry/instrumentation": "npm:^0.57.1" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/2306bbf9b59e5d29002b9c14493de92817e268c92587b285a0a4bbeece4a3f791db8e0d1be0e22ad9f6a97075071aa5c3269cf2d219e378480dc1ceafbf2927c + languageName: node + linkType: hard + "@opentelemetry/instrumentation-fs@npm:0.19.0": version: 0.19.0 resolution: "@opentelemetry/instrumentation-fs@npm:0.19.0" @@ -3399,6 +3450,18 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-fs@npm:0.19.1": + version: 0.19.1 + resolution: "@opentelemetry/instrumentation-fs@npm:0.19.1" + dependencies: + "@opentelemetry/core": "npm:^1.8.0" + "@opentelemetry/instrumentation": "npm:^0.57.1" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/8bf714658c0fcc34ba7db4c28af3196690f756a9b4fb6d1b6cab59938a7b5c1e40e834c518b39085e744915c0c384ca6d997a8a97901955732acf3af0cba6e7f + languageName: node + linkType: hard + "@opentelemetry/instrumentation-generic-pool@npm:0.43.0": version: 0.43.0 resolution: "@opentelemetry/instrumentation-generic-pool@npm:0.43.0" @@ -3410,6 +3473,17 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-generic-pool@npm:0.43.1": + version: 0.43.1 + resolution: "@opentelemetry/instrumentation-generic-pool@npm:0.43.1" + dependencies: + "@opentelemetry/instrumentation": "npm:^0.57.1" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/bdc95146d1f6f5dcf5922af8161c4954b9feeb505a01c5e61b1246ed67909dc1f6e72ad067839f085a4977e863246e7e4b468c814cf4104f35fcc20fb570eac2 + languageName: node + linkType: hard + "@opentelemetry/instrumentation-graphql@npm:0.47.0": version: 0.47.0 resolution: "@opentelemetry/instrumentation-graphql@npm:0.47.0" @@ -3421,6 +3495,17 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-graphql@npm:0.47.1": + version: 0.47.1 + resolution: "@opentelemetry/instrumentation-graphql@npm:0.47.1" + dependencies: + "@opentelemetry/instrumentation": "npm:^0.57.1" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/d5cfeb668b5ea4e4d97d8433c642457ac9f7f2023278a84a183b4c4c2cc43bbae3eac916ff7176ef8492661877560b519663c52eb2fad0a8a1f00718a0449aa6 + languageName: node + linkType: hard + "@opentelemetry/instrumentation-hapi@npm:0.45.1": version: 0.45.1 resolution: "@opentelemetry/instrumentation-hapi@npm:0.45.1" @@ -3434,6 +3519,19 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-hapi@npm:0.45.2": + version: 0.45.2 + resolution: "@opentelemetry/instrumentation-hapi@npm:0.45.2" + dependencies: + "@opentelemetry/core": "npm:^1.8.0" + "@opentelemetry/instrumentation": "npm:^0.57.1" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/bb491327ce86d8f1f7e2a12621a00dbf921e1fc3e9b64f975fc23e443d92bcd6ef779b34349214871763d459650da219c5e23bb1fdd1bc261fa0f92190521b2e + languageName: node + linkType: hard + "@opentelemetry/instrumentation-http@npm:0.57.1": version: 0.57.1 resolution: "@opentelemetry/instrumentation-http@npm:0.57.1" @@ -3449,6 +3547,21 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-http@npm:0.57.2": + version: 0.57.2 + resolution: "@opentelemetry/instrumentation-http@npm:0.57.2" + dependencies: + "@opentelemetry/core": "npm:1.30.1" + "@opentelemetry/instrumentation": "npm:0.57.2" + "@opentelemetry/semantic-conventions": "npm:1.28.0" + forwarded-parse: "npm:2.1.2" + semver: "npm:^7.5.2" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/b95a1b61cddabd32358fa565a4fcf5c17e8340907b171dcdf2a104533c9afdee821efa7b82dabb3123318dcc66272b0a7b8c37c44fc87e593cb8138a7a63fc23 + languageName: node + linkType: hard + "@opentelemetry/instrumentation-ioredis@npm:0.47.0": version: 0.47.0 resolution: "@opentelemetry/instrumentation-ioredis@npm:0.47.0" @@ -3462,6 +3575,19 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-ioredis@npm:0.47.1": + version: 0.47.1 + resolution: "@opentelemetry/instrumentation-ioredis@npm:0.47.1" + dependencies: + "@opentelemetry/instrumentation": "npm:^0.57.1" + "@opentelemetry/redis-common": "npm:^0.36.2" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/ec741778041cecc133a143292d66631c99311bf098db8f03276a48b87fe18826eec4513e4de70bb555ef50268db6520442e9a2f7752f7ea9b5a3e8363fecb8c9 + languageName: node + linkType: hard + "@opentelemetry/instrumentation-kafkajs@npm:0.7.0": version: 0.7.0 resolution: "@opentelemetry/instrumentation-kafkajs@npm:0.7.0" @@ -3474,6 +3600,18 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-kafkajs@npm:0.7.1": + version: 0.7.1 + resolution: "@opentelemetry/instrumentation-kafkajs@npm:0.7.1" + dependencies: + "@opentelemetry/instrumentation": "npm:^0.57.1" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/440a479ec65414da706f15b5c2ff82235ea8b11701e811ae235af5e8f01bee7e639223243e9f18550ce55cc94b8cdaa8a72297ded55f1c7993f1d95488c2b02e + languageName: node + linkType: hard + "@opentelemetry/instrumentation-knex@npm:0.44.0": version: 0.44.0 resolution: "@opentelemetry/instrumentation-knex@npm:0.44.0" @@ -3486,6 +3624,18 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-knex@npm:0.44.1": + version: 0.44.1 + resolution: "@opentelemetry/instrumentation-knex@npm:0.44.1" + dependencies: + "@opentelemetry/instrumentation": "npm:^0.57.1" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/75dcbda2c412cc448ac95238899d92846bda14bb21a1c9e9bc0c51fd48dcedb6064c2a8ab9e53d112945748d50513ecda13afbc4c0f24a884674d2a485f0efcd + languageName: node + linkType: hard + "@opentelemetry/instrumentation-koa@npm:0.47.0": version: 0.47.0 resolution: "@opentelemetry/instrumentation-koa@npm:0.47.0" @@ -3499,6 +3649,19 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-koa@npm:0.47.1": + version: 0.47.1 + resolution: "@opentelemetry/instrumentation-koa@npm:0.47.1" + dependencies: + "@opentelemetry/core": "npm:^1.8.0" + "@opentelemetry/instrumentation": "npm:^0.57.1" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/a1c5433da1265f1f8da3e46ebe085a3ddba3e16f43c5f44bd41082a0839f6bdf9a6a737b80b0d2f2a05d1ef2c23e2b0a4f7e55858bf1e32570b4c150c69135bc + languageName: node + linkType: hard + "@opentelemetry/instrumentation-lru-memoizer@npm:0.44.0": version: 0.44.0 resolution: "@opentelemetry/instrumentation-lru-memoizer@npm:0.44.0" @@ -3510,6 +3673,17 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-lru-memoizer@npm:0.44.1": + version: 0.44.1 + resolution: "@opentelemetry/instrumentation-lru-memoizer@npm:0.44.1" + dependencies: + "@opentelemetry/instrumentation": "npm:^0.57.1" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/5728d0b6ed560ba8426546ab30ef251cbe9f25a130abc8bea0d7635b51cc29fbade4d00c7b1869fa0543fe54891799483fe0f6fb4073d1bf5d12dbdd543aaae5 + languageName: node + linkType: hard + "@opentelemetry/instrumentation-mongodb@npm:0.51.0": version: 0.51.0 resolution: "@opentelemetry/instrumentation-mongodb@npm:0.51.0" @@ -3522,6 +3696,18 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-mongodb@npm:0.52.0": + version: 0.52.0 + resolution: "@opentelemetry/instrumentation-mongodb@npm:0.52.0" + dependencies: + "@opentelemetry/instrumentation": "npm:^0.57.1" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/dcd072a296369a6b254a809e3708e5f9842ac9f8c61700bfa2014872fa6e6ca65adfa5efdbf9021df57e749dea2cddd828351e73cb581370b8b97693c06df7e8 + languageName: node + linkType: hard + "@opentelemetry/instrumentation-mongoose@npm:0.46.0": version: 0.46.0 resolution: "@opentelemetry/instrumentation-mongoose@npm:0.46.0" @@ -3535,6 +3721,19 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-mongoose@npm:0.46.1": + version: 0.46.1 + resolution: "@opentelemetry/instrumentation-mongoose@npm:0.46.1" + dependencies: + "@opentelemetry/core": "npm:^1.8.0" + "@opentelemetry/instrumentation": "npm:^0.57.1" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/69378d41df172c2edb8b36042e751936837bb1cbee11ee72a3d1608c6d7f609d79beec2020b25de72086553ad9d85347642c4066e0b4e96d442513b29ac4f0aa + languageName: node + linkType: hard + "@opentelemetry/instrumentation-mysql2@npm:0.45.0": version: 0.45.0 resolution: "@opentelemetry/instrumentation-mysql2@npm:0.45.0" @@ -3548,6 +3747,19 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-mysql2@npm:0.45.2": + version: 0.45.2 + resolution: "@opentelemetry/instrumentation-mysql2@npm:0.45.2" + dependencies: + "@opentelemetry/instrumentation": "npm:^0.57.1" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + "@opentelemetry/sql-common": "npm:^0.40.1" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/8ac62064b32facfddd7d47ba0bce9689d2277ba4ef74348655faffe818522c919654c5bf1a5fac211a75f2093fbd588a14cba278c353da2f60d1919d58d419aa + languageName: node + linkType: hard + "@opentelemetry/instrumentation-mysql@npm:0.45.0": version: 0.45.0 resolution: "@opentelemetry/instrumentation-mysql@npm:0.45.0" @@ -3561,6 +3773,19 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-mysql@npm:0.45.1": + version: 0.45.1 + resolution: "@opentelemetry/instrumentation-mysql@npm:0.45.1" + dependencies: + "@opentelemetry/instrumentation": "npm:^0.57.1" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + "@types/mysql": "npm:2.15.26" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/c820a6929fe2e010dacb8962d40fdb8c9ac95c265efc74f478eadc021b2a3add9ce8d303c4bda20af01327564f487c9e052e710d9e975d7f17a5918d802d7ae4 + languageName: node + linkType: hard + "@opentelemetry/instrumentation-nestjs-core@npm:0.44.0": version: 0.44.0 resolution: "@opentelemetry/instrumentation-nestjs-core@npm:0.44.0" @@ -3589,6 +3814,22 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-pg@npm:0.51.1": + version: 0.51.1 + resolution: "@opentelemetry/instrumentation-pg@npm:0.51.1" + dependencies: + "@opentelemetry/core": "npm:^1.26.0" + "@opentelemetry/instrumentation": "npm:^0.57.1" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + "@opentelemetry/sql-common": "npm:^0.40.1" + "@types/pg": "npm:8.6.1" + "@types/pg-pool": "npm:2.0.6" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/fff3dcc092b959601a20c20e19c27d39d6386e6bc2b7014c1be5a5e22c0e275bf9980dad758b1f7824b1448a6178e13938b6bb2da53095f410fbb4d248b5ede6 + languageName: node + linkType: hard + "@opentelemetry/instrumentation-redis-4@npm:0.46.0": version: 0.46.0 resolution: "@opentelemetry/instrumentation-redis-4@npm:0.46.0" @@ -3602,6 +3843,19 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-redis-4@npm:0.46.1": + version: 0.46.1 + resolution: "@opentelemetry/instrumentation-redis-4@npm:0.46.1" + dependencies: + "@opentelemetry/instrumentation": "npm:^0.57.1" + "@opentelemetry/redis-common": "npm:^0.36.2" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/df0bdd865e254c9b4c0339ce5aabf3698d99b8ab8cf8ea1aa57ffa13620f2193fda247ed43ec4ccc6edadab1ffec5cc263038ab6f3c9e96ef000ee232b9181f8 + languageName: node + linkType: hard + "@opentelemetry/instrumentation-tedious@npm:0.18.0": version: 0.18.0 resolution: "@opentelemetry/instrumentation-tedious@npm:0.18.0" @@ -3615,6 +3869,19 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-tedious@npm:0.18.1": + version: 0.18.1 + resolution: "@opentelemetry/instrumentation-tedious@npm:0.18.1" + dependencies: + "@opentelemetry/instrumentation": "npm:^0.57.1" + "@opentelemetry/semantic-conventions": "npm:^1.27.0" + "@types/tedious": "npm:^4.0.14" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/fda9ac4dc89998a2cf739a70f06b1d6eebf98fe22713dc3fbca4a1119dc289d83c91ada4a3cea37f39a34c69978ae21ff9b599c27beaee128879b993677696dc + languageName: node + linkType: hard + "@opentelemetry/instrumentation-undici@npm:0.10.0": version: 0.10.0 resolution: "@opentelemetry/instrumentation-undici@npm:0.10.0" @@ -3627,6 +3894,18 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation-undici@npm:0.10.1": + version: 0.10.1 + resolution: "@opentelemetry/instrumentation-undici@npm:0.10.1" + dependencies: + "@opentelemetry/core": "npm:^1.8.0" + "@opentelemetry/instrumentation": "npm:^0.57.1" + peerDependencies: + "@opentelemetry/api": ^1.7.0 + checksum: 10c0/3958f291d14f2f7bb5e3b957487444ffee449d8ea76c973ca09b9669258d37e98b3797c7167190c5038802529cc6b539bdf6efc7887398ec9b53d3ba51c90bda + languageName: node + linkType: hard + "@opentelemetry/instrumentation@npm:0.57.1": version: 0.57.1 resolution: "@opentelemetry/instrumentation@npm:0.57.1" @@ -3643,6 +3922,22 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation@npm:0.57.2, @opentelemetry/instrumentation@npm:^0.52.0 || ^0.53.0 || ^0.54.0 || ^0.55.0 || ^0.56.0 || ^0.57.0, @opentelemetry/instrumentation@npm:^0.57.0, @opentelemetry/instrumentation@npm:^0.57.1, @opentelemetry/instrumentation@npm:^0.57.2": + version: 0.57.2 + resolution: "@opentelemetry/instrumentation@npm:0.57.2" + dependencies: + "@opentelemetry/api-logs": "npm:0.57.2" + "@types/shimmer": "npm:^1.2.0" + import-in-the-middle: "npm:^1.8.1" + require-in-the-middle: "npm:^7.1.1" + semver: "npm:^7.5.2" + shimmer: "npm:^1.2.1" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10c0/79ca65b66357665d19f89da7027da25ea1c6b55ecdacb0a99534923743c80deb9282870db563de8ae284b13e7e0aab8413efa1937f199deeaef069e07c7e4875 + languageName: node + linkType: hard + "@opentelemetry/instrumentation@npm:^0.49 || ^0.50 || ^0.51 || ^0.52.0 || ^0.53.0": version: 0.53.0 resolution: "@opentelemetry/instrumentation@npm:0.53.0" @@ -3675,22 +3970,6 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/instrumentation@npm:^0.57.0, @opentelemetry/instrumentation@npm:^0.57.1": - version: 0.57.2 - resolution: "@opentelemetry/instrumentation@npm:0.57.2" - dependencies: - "@opentelemetry/api-logs": "npm:0.57.2" - "@types/shimmer": "npm:^1.2.0" - import-in-the-middle: "npm:^1.8.1" - require-in-the-middle: "npm:^7.1.1" - semver: "npm:^7.5.2" - shimmer: "npm:^1.2.1" - peerDependencies: - "@opentelemetry/api": ^1.3.0 - checksum: 10c0/79ca65b66357665d19f89da7027da25ea1c6b55ecdacb0a99534923743c80deb9282870db563de8ae284b13e7e0aab8413efa1937f199deeaef069e07c7e4875 - languageName: node - linkType: hard - "@opentelemetry/redis-common@npm:^0.36.2": version: 0.36.2 resolution: "@opentelemetry/redis-common@npm:0.36.2" @@ -3794,6 +4073,13 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/semantic-conventions@npm:^1.30.0": + version: 1.32.0 + resolution: "@opentelemetry/semantic-conventions@npm:1.32.0" + checksum: 10c0/977c93225490f2456e8bb13b90a8627861207eb5eb4771d7565c2321be883ec711c1701485451f9e10b8d2a724525496c0e4441b43190a7a550bcf7c73f681cd + languageName: node + linkType: hard + "@opentelemetry/sql-common@npm:^0.40.1": version: 0.40.1 resolution: "@opentelemetry/sql-common@npm:0.40.1" @@ -4028,6 +4314,17 @@ __metadata: languageName: node linkType: hard +"@prisma/instrumentation@npm:6.6.0": + version: 6.6.0 + resolution: "@prisma/instrumentation@npm:6.6.0" + dependencies: + "@opentelemetry/instrumentation": "npm:^0.52.0 || ^0.53.0 || ^0.54.0 || ^0.55.0 || ^0.56.0 || ^0.57.0" + peerDependencies: + "@opentelemetry/api": ^1.8 + checksum: 10c0/e16380a2caa9c793b12299f997a4f9957c6e36b26da65361e86bdea8da1d0dd0315781f92073c2971d7e3e2ea8728d8e5a0cd9a5dcc26816aa3fefa256d3c2f6 + languageName: node + linkType: hard + "@radix-ui/primitive@npm:1.1.1": version: 1.1.1 resolution: "@radix-ui/primitive@npm:1.1.1" @@ -6532,6 +6829,17 @@ __metadata: languageName: node linkType: hard +"@sentry-internal/tracing@npm:7.120.3": + version: 7.120.3 + resolution: "@sentry-internal/tracing@npm:7.120.3" + dependencies: + "@sentry/core": "npm:7.120.3" + "@sentry/types": "npm:7.120.3" + "@sentry/utils": "npm:7.120.3" + checksum: 10c0/97d640121bb137efba6deeecbc80a61cc34b526c89d39a43efc2b8be4be159c1536951d1121503bd5171a7c5e1ef225bc632f3ef35248d6c478865abf7330cf3 + languageName: node + linkType: hard + "@sentry/babel-plugin-component-annotate@npm:2.22.7": version: 2.22.7 resolution: "@sentry/babel-plugin-component-annotate@npm:2.22.7" @@ -6552,6 +6860,17 @@ __metadata: languageName: node linkType: hard +"@sentry/bun@npm:^9.15.0": + version: 9.15.0 + resolution: "@sentry/bun@npm:9.15.0" + dependencies: + "@sentry/core": "npm:9.15.0" + "@sentry/node": "npm:9.15.0" + "@sentry/opentelemetry": "npm:9.15.0" + checksum: 10c0/4a4a2a910ef82118ad564ba57d23e59751adb75cc0aeabba8ac41457698e1b6b5da5ccf1a84183654ca83fbd46632cc681c73c7d5679806f22698796a7e282af + languageName: node + linkType: hard + "@sentry/bundler-plugin-core@npm:2.22.7": version: 2.22.7 resolution: "@sentry/bundler-plugin-core@npm:2.22.7" @@ -6654,6 +6973,16 @@ __metadata: languageName: node linkType: hard +"@sentry/core@npm:7.120.3": + version: 7.120.3 + resolution: "@sentry/core@npm:7.120.3" + dependencies: + "@sentry/types": "npm:7.120.3" + "@sentry/utils": "npm:7.120.3" + checksum: 10c0/97bcfd423ee9583fae8dc995cefb4839eb59c9d38334ebd1b22398626692aa4df322a5386e3b25a7a96b596155f802169c4ec04e63c1835ea9794955d27ba54a + languageName: node + linkType: hard + "@sentry/core@npm:8.55.0": version: 8.55.0 resolution: "@sentry/core@npm:8.55.0" @@ -6661,6 +6990,13 @@ __metadata: languageName: node linkType: hard +"@sentry/core@npm:9.15.0": + version: 9.15.0 + resolution: "@sentry/core@npm:9.15.0" + checksum: 10c0/4287bb2ed348c9ff0989eb2b740a9713e3c0e13a15fe856c51419e6db259d799c6ae1c3a825f35feadca9cc78e2f7cf27363753b287846bc9ab56933148544e5 + languageName: node + linkType: hard + "@sentry/nextjs@npm:^8.41.0": version: 8.55.0 resolution: "@sentry/nextjs@npm:8.55.0" @@ -6728,6 +7064,48 @@ __metadata: languageName: node linkType: hard +"@sentry/node@npm:9.15.0": + version: 9.15.0 + resolution: "@sentry/node@npm:9.15.0" + dependencies: + "@opentelemetry/api": "npm:^1.9.0" + "@opentelemetry/context-async-hooks": "npm:^1.30.1" + "@opentelemetry/core": "npm:^1.30.1" + "@opentelemetry/instrumentation": "npm:^0.57.2" + "@opentelemetry/instrumentation-amqplib": "npm:^0.46.1" + "@opentelemetry/instrumentation-connect": "npm:0.43.1" + "@opentelemetry/instrumentation-dataloader": "npm:0.16.1" + "@opentelemetry/instrumentation-express": "npm:0.47.1" + "@opentelemetry/instrumentation-fastify": "npm:0.44.2" + "@opentelemetry/instrumentation-fs": "npm:0.19.1" + "@opentelemetry/instrumentation-generic-pool": "npm:0.43.1" + "@opentelemetry/instrumentation-graphql": "npm:0.47.1" + "@opentelemetry/instrumentation-hapi": "npm:0.45.2" + "@opentelemetry/instrumentation-http": "npm:0.57.2" + "@opentelemetry/instrumentation-ioredis": "npm:0.47.1" + "@opentelemetry/instrumentation-kafkajs": "npm:0.7.1" + "@opentelemetry/instrumentation-knex": "npm:0.44.1" + "@opentelemetry/instrumentation-koa": "npm:0.47.1" + "@opentelemetry/instrumentation-lru-memoizer": "npm:0.44.1" + "@opentelemetry/instrumentation-mongodb": "npm:0.52.0" + "@opentelemetry/instrumentation-mongoose": "npm:0.46.1" + "@opentelemetry/instrumentation-mysql": "npm:0.45.1" + "@opentelemetry/instrumentation-mysql2": "npm:0.45.2" + "@opentelemetry/instrumentation-pg": "npm:0.51.1" + "@opentelemetry/instrumentation-redis-4": "npm:0.46.1" + "@opentelemetry/instrumentation-tedious": "npm:0.18.1" + "@opentelemetry/instrumentation-undici": "npm:0.10.1" + "@opentelemetry/resources": "npm:^1.30.1" + "@opentelemetry/sdk-trace-base": "npm:^1.30.1" + "@opentelemetry/semantic-conventions": "npm:^1.30.0" + "@prisma/instrumentation": "npm:6.6.0" + "@sentry/core": "npm:9.15.0" + "@sentry/opentelemetry": "npm:9.15.0" + import-in-the-middle: "npm:^1.13.0" + checksum: 10c0/410ce586c8cc0f37a7aeefd2e5ede84ba3d427ddf3352c8a23dfc5895495bfcfcf7db443c16a61710c84a2f1a00afd67cf9ec0ac7f759c102ee9ba001408954b + languageName: node + linkType: hard + "@sentry/opentelemetry@npm:8.55.0": version: 8.55.0 resolution: "@sentry/opentelemetry@npm:8.55.0" @@ -6744,6 +7122,22 @@ __metadata: languageName: node linkType: hard +"@sentry/opentelemetry@npm:9.15.0": + version: 9.15.0 + resolution: "@sentry/opentelemetry@npm:9.15.0" + dependencies: + "@sentry/core": "npm:9.15.0" + peerDependencies: + "@opentelemetry/api": ^1.9.0 + "@opentelemetry/context-async-hooks": ^1.30.1 + "@opentelemetry/core": ^1.30.1 + "@opentelemetry/instrumentation": ^0.57.1 + "@opentelemetry/sdk-trace-base": ^1.30.1 + "@opentelemetry/semantic-conventions": ^1.28.0 + checksum: 10c0/001976c27c66abe50745c6c7c121d809751c6463efe32376e6a64501b8a514611353dea7c92c8bdda32bb0c3873571b9f95d35285c8f64c9a58552364ae24076 + languageName: node + linkType: hard + "@sentry/react@npm:8.55.0": version: 8.55.0 resolution: "@sentry/react@npm:8.55.0" @@ -6757,6 +7151,31 @@ __metadata: languageName: node linkType: hard +"@sentry/tracing@npm:^7.120.3": + version: 7.120.3 + resolution: "@sentry/tracing@npm:7.120.3" + dependencies: + "@sentry-internal/tracing": "npm:7.120.3" + checksum: 10c0/181f7414f61286f4af54b56d750957a1b70dd424d119e2623e45ac9358d0c82c31fdb291ebdf8ee10b8211493b711f5ef5e82ca4b2eff680b38cbeb3ce09d402 + languageName: node + linkType: hard + +"@sentry/types@npm:7.120.3": + version: 7.120.3 + resolution: "@sentry/types@npm:7.120.3" + checksum: 10c0/f7c4a46c72dd66a88053d579ad5a0137eaf6882dfe5e942828e750ad80fd8fe98ceec1a6328dfcf31f5a56849dda8ee27f7419125f905f19751119b9662dbdcb + languageName: node + linkType: hard + +"@sentry/utils@npm:7.120.3": + version: 7.120.3 + resolution: "@sentry/utils@npm:7.120.3" + dependencies: + "@sentry/types": "npm:7.120.3" + checksum: 10c0/15a1e0a0d29aae668023f68f4b3e4b3bd5353b5f033874d2bf51264206f05036e68b8d6d88078cf807fbb051c20244b1ac73b19a875da76a97e635a38b9fd180 + languageName: node + linkType: hard + "@sentry/vercel-edge@npm:8.55.0": version: 8.55.0 resolution: "@sentry/vercel-edge@npm:8.55.0" @@ -6810,10 +7229,10 @@ __metadata: languageName: node linkType: hard -"@sinclair/typebox@npm:^0.34.27": - version: 0.34.29 - resolution: "@sinclair/typebox@npm:0.34.29" - checksum: 10c0/90f41e78e1963abd91eaa4c8be792401b1482790650c7440752312bbf0f199196660defd8e30e2d10854289851baafe47799d0ce72aa43c273cd39a3e6f61204 +"@sinclair/typebox@npm:^0.34.33": + version: 0.34.33 + resolution: "@sinclair/typebox@npm:0.34.33" + checksum: 10c0/88ab4f7afc7514d576602dce5c892462a89f9082d77dde0e8e21342b3a5c8891ddfc51a65e7dbd5b3f5cbd8f5cb76aded0c0edcfcfb5730f189c2819de9583a7 languageName: node linkType: hard @@ -7436,24 +7855,6 @@ __metadata: languageName: node linkType: hard -"@t3-oss/env-core@npm:0.12.0": - version: 0.12.0 - resolution: "@t3-oss/env-core@npm:0.12.0" - peerDependencies: - typescript: ">=5.0.0" - valibot: ^1.0.0-beta.7 || ^1.0.0 - zod: ^3.24.0 - peerDependenciesMeta: - typescript: - optional: true - valibot: - optional: true - zod: - optional: true - checksum: 10c0/b79d2c291b8996b008ef77fa9b3afb8fd7c4c59e271b65039a52a504a9cdb7492ec88b414e6b5691dc4c2c93077abfac85a5cea00dcfdd083ad94912efc5464b - languageName: node - linkType: hard - "@t3-oss/env-core@npm:0.9.2": version: 0.9.2 resolution: "@t3-oss/env-core@npm:0.9.2" @@ -7467,6 +7868,25 @@ __metadata: languageName: node linkType: hard +"@t3-oss/env-core@npm:^0.13.0": + version: 0.13.4 + resolution: "@t3-oss/env-core@npm:0.13.4" + peerDependencies: + arktype: ^2.1.0 + typescript: ">=5.0.0" + valibot: ^1.0.0-beta.7 || ^1.0.0 + zod: ^3.24.0 || ^4.0.0-beta.0 + peerDependenciesMeta: + typescript: + optional: true + valibot: + optional: true + zod: + optional: true + checksum: 10c0/3598c1582b4cd0aead095a492d60cb7656ffa308c0362744fe32f04ec6563601c04d898c0da7b5efb4dc7ace1d3b18a77f268a15a9e940a6997d9dd84f86a749 + languageName: node + linkType: hard + "@t3-oss/env-nextjs@npm:^0.9.2": version: 0.9.2 resolution: "@t3-oss/env-nextjs@npm:0.9.2" @@ -8065,6 +8485,15 @@ __metadata: languageName: node linkType: hard +"@types/connect@npm:3.4.38": + version: 3.4.38 + resolution: "@types/connect@npm:3.4.38" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/2e1cdba2c410f25649e77856505cd60223250fa12dff7a503e492208dbfdd25f62859918f28aba95315251fd1f5e1ffbfca1e25e73037189ab85dd3f8d0a148c + languageName: node + linkType: hard + "@types/cookie@npm:0.6.0": version: 0.6.0 resolution: "@types/cookie@npm:0.6.0" @@ -11684,24 +12113,27 @@ __metadata: languageName: node linkType: hard -"elysia@npm:1.2.25": - version: 1.2.25 - resolution: "elysia@npm:1.2.25" +"elysia@npm:^1.3.0": + version: 1.3.0 + resolution: "elysia@npm:1.3.0" dependencies: - "@sinclair/typebox": "npm:^0.34.27" + "@sinclair/typebox": "npm:^0.34.33" cookie: "npm:^1.0.2" - memoirist: "npm:^0.3.0" + exact-mirror: "npm:0.1.1" + fast-decode-uri-component: "npm:^1.0.1" openapi-types: "npm:^12.1.3" peerDependencies: "@sinclair/typebox": ">= 0.34.0" + exact-mirror: ">= 0.0.9" + file-type: ">= 20.0.0" openapi-types: ">= 12.0.0" typescript: ">= 5.0.0" - peerDependenciesMeta: + dependenciesMeta: + "@sinclair/typebox": + optional: true openapi-types: optional: true - typescript: - optional: true - checksum: 10c0/7fa89dd468417a393f032ab53aee01c7a74c719b415878df8034721bb7f18c475212c69ca717554b15c9e6a39adefd4bc2ca5e3304599b05ffb29483b7e292de + checksum: 10c0/39a7cbc3d3eeedb7c74ffad4045a582a87798dc54a7a3032754f754f375a136fbb6a7e70769f9aa47e9bf567da18403bc96a88f1dfe8f1780be478f5ef4dfedf languageName: node linkType: hard @@ -12576,6 +13008,18 @@ __metadata: languageName: node linkType: hard +"exact-mirror@npm:0.1.1": + version: 0.1.1 + resolution: "exact-mirror@npm:0.1.1" + peerDependencies: + "@sinclair/typebox": ^0.34.15 + peerDependenciesMeta: + "@sinclair/typebox": + optional: true + checksum: 10c0/24375de7c2ac244bb4f957f1b5d3cfb1fe6b84b06e2caf69ae9495973e58b5a3b1ed066a18fe107cb23dcdaa73e5c67e6e0507a37e01f8e77a922a0c09b5e18c + languageName: node + linkType: hard + "execa@npm:4.1.0": version: 4.1.0 resolution: "execa@npm:4.1.0" @@ -12715,6 +13159,13 @@ __metadata: languageName: node linkType: hard +"fast-decode-uri-component@npm:^1.0.1": + version: 1.0.1 + resolution: "fast-decode-uri-component@npm:1.0.1" + checksum: 10c0/039d50c2e99d64f999c3f2126c23fbf75a04a4117e218a149ca0b1d2aeb8c834b7b19d643b9d35d4eabce357189a6a94085f78cf48869e6e26cc59b036284bc3 + languageName: node + linkType: hard + "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" @@ -13909,6 +14360,18 @@ __metadata: languageName: node linkType: hard +"import-in-the-middle@npm:^1.13.0": + version: 1.13.1 + resolution: "import-in-the-middle@npm:1.13.1" + dependencies: + acorn: "npm:^8.14.0" + acorn-import-attributes: "npm:^1.9.5" + cjs-module-lexer: "npm:^1.2.2" + module-details-from-path: "npm:^1.0.3" + checksum: 10c0/4ef05a924c37ff718dd08654927c90d470d92fd9425d646b0d423aaddc89655848debd14761bcb6efa4f57870d63ff38109bab31ca8a1d9d5df2e7d84d2649cf + languageName: node + linkType: hard + "import-lazy@npm:~4.0.0": version: 4.0.0 resolution: "import-lazy@npm:4.0.0" @@ -14046,23 +14509,6 @@ __metadata: languageName: node linkType: hard -"ioredis@npm:5.6.0": - version: 5.6.0 - resolution: "ioredis@npm:5.6.0" - dependencies: - "@ioredis/commands": "npm:^1.1.1" - cluster-key-slot: "npm:^1.1.0" - debug: "npm:^4.3.4" - denque: "npm:^2.1.0" - lodash.defaults: "npm:^4.2.0" - lodash.isarguments: "npm:^3.1.0" - redis-errors: "npm:^1.2.0" - redis-parser: "npm:^3.0.0" - standard-as-callback: "npm:^2.1.0" - checksum: 10c0/a885e5146640fc448706871290ef424ffa39af561f7ee3cf1590085209a509f85e99082bdaaf3cd32fa66758aea3fc2055d1109648ddca96fac4944bf2092c30 - languageName: node - linkType: hard - "ioredis@npm:^5.5.0": version: 5.5.0 resolution: "ioredis@npm:5.5.0" @@ -14080,6 +14526,23 @@ __metadata: languageName: node linkType: hard +"ioredis@npm:^5.6.1": + version: 5.6.1 + resolution: "ioredis@npm:5.6.1" + dependencies: + "@ioredis/commands": "npm:^1.1.1" + cluster-key-slot: "npm:^1.1.0" + debug: "npm:^4.3.4" + denque: "npm:^2.1.0" + lodash.defaults: "npm:^4.2.0" + lodash.isarguments: "npm:^3.1.0" + redis-errors: "npm:^1.2.0" + redis-parser: "npm:^3.0.0" + standard-as-callback: "npm:^2.1.0" + checksum: 10c0/26ae49cf448e807e454a9bdea5a9dfdcf669e2fdbf2df341900a0fb693c5662fea7e39db3227ce8972d1bda0ba7da9b7410e5163b12d8878a579548d847220ac + languageName: node + linkType: hard + "ip-address@npm:^9.0.5": version: 9.0.5 resolution: "ip-address@npm:9.0.5" @@ -16511,13 +16974,6 @@ __metadata: languageName: node linkType: hard -"memoirist@npm:^0.3.0": - version: 0.3.0 - resolution: "memoirist@npm:0.3.0" - checksum: 10c0/a8f3aff57b51eb2bfcdee2fb4f3c565d04dbcfcad5d7d5d9c22ca63c76fdd3f7b3f5c3679b738b417ff1f120756bd5622bb7cf5685b954b16eac90a52dff58ed - languageName: node - linkType: hard - "memoizerific@npm:^1.11.3": version: 1.11.3 resolution: "memoizerific@npm:1.11.3" @@ -17935,7 +18391,7 @@ __metadata: languageName: node linkType: hard -"pino@npm:9.6.0": +"pino@npm:^9.6.0": version: 9.6.0 resolution: "pino@npm:9.6.0" dependencies: @@ -18972,13 +19428,15 @@ __metadata: resolution: "redis-api@workspace:apps/redis-api" dependencies: "@biomejs/biome": "npm:^1.9.4" - "@elysiajs/server-timing": "npm:1.2.1" - "@elysiajs/swagger": "npm:1.2.2" - "@t3-oss/env-core": "npm:0.12.0" + "@elysiajs/server-timing": "npm:^1.3.0" + "@elysiajs/swagger": "npm:^1.3.0" + "@sentry/bun": "npm:^9.15.0" + "@sentry/tracing": "npm:^7.120.3" + "@t3-oss/env-core": "npm:^0.13.0" "@types/bun": "npm:latest" - elysia: "npm:1.2.25" - ioredis: "npm:5.6.0" - pino: "npm:9.6.0" + elysia: "npm:^1.3.0" + ioredis: "npm:^5.6.1" + pino: "npm:^9.6.0" pino-pretty: "npm:^13.0.0" typescript: "npm:^5.7.2" languageName: unknown