Merged in feature/SW-2538-redis-api-sentry (pull request #1973)

Feature/SW-2538 redis api sentry

* Add fingerprint to be able to differentiate JSON.parse errors
* update deploy script
* use status over deprecated error function in elysia
* use t3-env createFinalSchema for extra validation

Approved-by: Anton Gunnarsson
This commit is contained in:
Joakim Jäderberg
2025-05-06 11:29:37 +00:00
parent 25ae368210
commit 2acc17219a
11 changed files with 743 additions and 187 deletions

View File

@@ -35,5 +35,9 @@ az deployment sub create \
--parameters environment={{ENVIRONMENT}} \ --parameters environment={{ENVIRONMENT}} \
containerImageTag=latest \ containerImageTag=latest \
primaryApiKey={{PRIMARY API KEY}} \ # API keys are used for communicating with the api 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
``` ```

View File

@@ -7,6 +7,9 @@ param containerImageTag string
param redisConnection string param redisConnection string
param primaryApiKey string param primaryApiKey string
param secondaryApiKey string param secondaryApiKey string
param sentryDSN string
param sentryEnabled string
param sentryTraceSampleRate string
param timestamp string = utcNow() param timestamp string = utcNow()
@@ -36,6 +39,10 @@ module containerApp 'containerApp.bicep' = {
{ name: 'REDIS_CONNECTION', value: redisConnection } { name: 'REDIS_CONNECTION', value: redisConnection }
{ name: 'PRIMARY_API_KEY', value: primaryApiKey } { name: 'PRIMARY_API_KEY', value: primaryApiKey }
{ name: 'SECONDARY_API_KEY', value: secondaryApiKey } { 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 } { name: 'timestamp', value: timestamp }
] ]
} }

View File

@@ -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

View File

@@ -7,12 +7,14 @@
"dev": "bun --watch src/index.ts | pino-pretty -o '{if module}[{module}] {end}{msg}' -i pid,hostname" "dev": "bun --watch src/index.ts | pino-pretty -o '{if module}[{module}] {end}{msg}' -i pid,hostname"
}, },
"dependencies": { "dependencies": {
"@elysiajs/server-timing": "1.2.1", "@elysiajs/server-timing": "^1.3.0",
"@elysiajs/swagger": "1.2.2", "@elysiajs/swagger": "^1.3.0",
"@t3-oss/env-core": "0.12.0", "@sentry/bun": "^9.15.0",
"elysia": "1.2.25", "@sentry/tracing": "^7.120.3",
"ioredis": "5.6.0", "@t3-oss/env-core": "^0.13.0",
"pino": "9.6.0" "elysia": "^1.3.0",
"ioredis": "^5.6.1",
"pino": "^9.6.0"
}, },
"devDependencies": { "devDependencies": {
"@biomejs/biome": "^1.9.4", "@biomejs/biome": "^1.9.4",

View File

@@ -3,6 +3,7 @@ import { z } from "zod";
const redisConnectionRegex = const redisConnectionRegex =
/^((?<username>.*?):(?<password>.*?)@)?(?<host>.*?):(?<port>\d+)$/; /^((?<username>.*?):(?<password>.*?)@)?(?<host>.*?):(?<port>\d+)$/;
export const env = createEnv({ export const env = createEnv({
server: { server: {
IS_PROD: z IS_PROD: z
@@ -34,6 +35,33 @@ export const env = createEnv({
process.env.NODE_ENV === "development" process.env.NODE_ENV === "development"
? z.string().optional() ? z.string().optional()
: z.string().min(10), : 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: { runtimeEnv: {
...process.env, ...process.env,

View File

@@ -1,3 +1,5 @@
import "@/server/sentry.server.config";
import * as Sentry from "@sentry/bun";
import { Elysia } from "elysia"; import { Elysia } from "elysia";
import { swagger } from "@elysiajs/swagger"; import { swagger } from "@elysiajs/swagger";
@@ -27,6 +29,8 @@ const app = new Elysia()
return getErrorReturn(error); return getErrorReturn(error);
case "INTERNAL_SERVER_ERROR": case "INTERNAL_SERVER_ERROR":
set.status = 500; set.status = 500;
baseLogger.error("Internal server error", error);
Sentry.captureException(error);
return getErrorReturn(error); return getErrorReturn(error);
} }
}); });

View File

@@ -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 { redis } from "@/services/redis";
import { ModelValidationError } from "@/errors/ModelValidationError"; import { ModelValidationError } from "@/errors/ModelValidationError";
import { loggerModule } from "@/utils/logger";
import { truncate } from "@/utils/truncate";
const MIN_LENGTH = 1; const MIN_LENGTH = 1;
const QUERY_TYPE = t.Object({ key: t.String({ minLength: MIN_LENGTH }) }); const QUERY_TYPE = t.Object({ key: t.String({ minLength: MIN_LENGTH }) });
const cacheRouteLogger = loggerModule("cacheRoute");
export const cacheRoutes = new Elysia({ prefix: "/cache" }) export const cacheRoutes = new Elysia({ prefix: "/cache" })
.get( .get(
"/", "/",
async ({ query: { key }, error }) => { async ({ query: { key }, status }) => {
key = validateKey(key); key = validateKey(key);
console.log("GET /cache", key); cacheRouteLogger.info("GET /cache", key);
const value = await redis.get(key); const value = await redis.get(key);
if (!value) { if (!value) {
return error("Not Found", "Not Found"); return status("Not Found", "Not Found");
} }
try { try {
const output = JSON.parse(value); const output = JSON.parse(value);
return { data: output }; return { data: output };
} catch (e) { } catch (e) {
redis.del(key); redis.del(key);
throw e; cacheRouteLogger.error(`Invalid JSON in cache for '${key}'`, 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);
if (!body.ttl || body.ttl < 0) { Sentry.captureException(e, {
return error("Bad Request", "ttl is required"); 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; if (!body.ttl || body.ttl < 0) {
return; return status("Bad Request", "ttl is required");
}, }
{
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 (fuzzy) { await redis.set(key, JSON.stringify(body.data), "EX", body.ttl);
await deleteWithPattern(`*${key}*`);
} else {
await redis.del(key);
console.log("Deleted key: ", key);
}
set.status = 204; return status(204, void 0);
return; },
}, {
{ body: t.Object({ data: t.Any(), ttl: t.Number() }),
query: t.Object({ query: QUERY_TYPE,
...QUERY_TYPE.properties, response: { 204: t.Void(), 400: t.String() },
...t.Object({ fuzzy: t.Optional(t.Boolean()) }).properties, }
}), )
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) { function validateKey(key: string) {
const parsedKey = decodeURIComponent(key); const parsedKey = decodeURIComponent(key);
if (parsedKey.length < MIN_LENGTH) { if (parsedKey.length < MIN_LENGTH) {
throw new ModelValidationError("Key has to be atleast 1 character long"); throw new ModelValidationError(
} "Key has to be atleast 1 character long"
);
}
if (parsedKey.includes("*")) { if (parsedKey.includes("*")) {
throw new ModelValidationError("Key cannot contain wildcards"); throw new ModelValidationError("Key cannot contain wildcards");
} }
return parsedKey; return parsedKey;
} }
async function deleteWithPattern(pattern: string) { async function deleteWithPattern(pattern: string) {
let cursor = "0"; let cursor = "0";
let keys: string[] = []; const keys: string[] = [];
do { do {
const [newCursor, foundKeys] = await redis.scan( const [newCursor, foundKeys] = await redis.scan(
cursor, cursor,
"MATCH", "MATCH",
pattern, pattern,
"COUNT", "COUNT",
5000 5000
); );
cursor = newCursor; cursor = newCursor;
keys.push(...foundKeys); keys.push(...foundKeys);
} while (cursor !== "0"); } while (cursor !== "0");
if (keys.length > 0) { if (keys.length > 0) {
await redis.del(...keys); await redis.del(...keys);
} }
console.log("Deleted number of keys: ", keys.length); cacheRouteLogger.info("Deleted number of keys: ", keys.length);
} }

View File

@@ -5,7 +5,7 @@ import { baseLogger } from "@/utils/logger";
export const healthRoutes = new Elysia().get( export const healthRoutes = new Elysia().get(
"/health", "/health",
async ({ set, error }) => { async ({ set, status }) => {
const perf = performance.now(); const perf = performance.now();
try { try {
await redis.ping(); await redis.ping();
@@ -13,7 +13,7 @@ export const healthRoutes = new Elysia().get(
baseLogger.error("Redis connection error:", e); baseLogger.error("Redis connection error:", e);
console.log("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; const duration = performance.now() - perf;

View File

@@ -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,
});

View File

@@ -0,0 +1,3 @@
export function truncate(value: string, maxLength = 10): string {
return value.length > maxLength ? `${value.slice(0, maxLength)}...` : value;
}

636
yarn.lock
View File

@@ -1836,26 +1836,26 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@elysiajs/server-timing@npm:1.2.1": "@elysiajs/server-timing@npm:^1.3.0":
version: 1.2.1 version: 1.3.0
resolution: "@elysiajs/server-timing@npm:1.2.1" resolution: "@elysiajs/server-timing@npm:1.3.0"
peerDependencies: peerDependencies:
elysia: ">= 1.2.0" elysia: ">= 1.3.0"
checksum: 10c0/ebf1e9991b45bb76b2c83c9709863d31c3ede803c7db5abc08b870cfd736d083f8d36c5e4f6b895b5e4cdfb70c5544a2ae85fd12041f36594e77ddb2e4076514 checksum: 10c0/10097c12ec6a8cbac255096fdfda490bdae6c05dbeca3be9556e1e9a52c32106421b1a8d2c7be6532181214155012f9d69590690bbafb8ce7facc164bc37200f
languageName: node languageName: node
linkType: hard linkType: hard
"@elysiajs/swagger@npm:1.2.2": "@elysiajs/swagger@npm:^1.3.0":
version: 1.2.2 version: 1.3.0
resolution: "@elysiajs/swagger@npm:1.2.2" resolution: "@elysiajs/swagger@npm:1.3.0"
dependencies: dependencies:
"@scalar/themes": "npm:^0.9.52" "@scalar/themes": "npm:^0.9.52"
"@scalar/types": "npm:^0.0.12" "@scalar/types": "npm:^0.0.12"
openapi-types: "npm:^12.1.3" openapi-types: "npm:^12.1.3"
pathe: "npm:^1.1.2" pathe: "npm:^1.1.2"
peerDependencies: peerDependencies:
elysia: ">= 1.2.0" elysia: ">= 1.3.0"
checksum: 10c0/2ca2341dc36294f11934423ad2c0cb586b08edd41b74cafae7df62c7a22643c313e3f2d763892dc3cbff1afdf51420169c62f3e2317eab18c9c3f6fb711a55d2 checksum: 10c0/251b50d438175aadcaa19325ddfd30eb109cdc24fc7b9a4394d4da81dba02128248e30d8d1899e9fb4e023afcaf13a9edf1002285dfc540bd955f8cf9cf42733
languageName: node languageName: node
linkType: hard linkType: hard
@@ -3323,7 +3323,7 @@ __metadata:
languageName: node languageName: node
linkType: hard 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 version: 0.46.1
resolution: "@opentelemetry/instrumentation-amqplib@npm:0.46.1" resolution: "@opentelemetry/instrumentation-amqplib@npm:0.46.1"
dependencies: dependencies:
@@ -3350,6 +3350,20 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation-dataloader@npm:0.16.0":
version: 0.16.0 version: 0.16.0
resolution: "@opentelemetry/instrumentation-dataloader@npm:0.16.0" resolution: "@opentelemetry/instrumentation-dataloader@npm:0.16.0"
@@ -3361,6 +3375,17 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation-express@npm:0.47.0":
version: 0.47.0 version: 0.47.0
resolution: "@opentelemetry/instrumentation-express@npm:0.47.0" resolution: "@opentelemetry/instrumentation-express@npm:0.47.0"
@@ -3374,6 +3399,19 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation-fastify@npm:0.44.1":
version: 0.44.1 version: 0.44.1
resolution: "@opentelemetry/instrumentation-fastify@npm:0.44.1" resolution: "@opentelemetry/instrumentation-fastify@npm:0.44.1"
@@ -3387,6 +3425,19 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation-fs@npm:0.19.0":
version: 0.19.0 version: 0.19.0
resolution: "@opentelemetry/instrumentation-fs@npm:0.19.0" resolution: "@opentelemetry/instrumentation-fs@npm:0.19.0"
@@ -3399,6 +3450,18 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation-generic-pool@npm:0.43.0":
version: 0.43.0 version: 0.43.0
resolution: "@opentelemetry/instrumentation-generic-pool@npm:0.43.0" resolution: "@opentelemetry/instrumentation-generic-pool@npm:0.43.0"
@@ -3410,6 +3473,17 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation-graphql@npm:0.47.0":
version: 0.47.0 version: 0.47.0
resolution: "@opentelemetry/instrumentation-graphql@npm:0.47.0" resolution: "@opentelemetry/instrumentation-graphql@npm:0.47.0"
@@ -3421,6 +3495,17 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation-hapi@npm:0.45.1":
version: 0.45.1 version: 0.45.1
resolution: "@opentelemetry/instrumentation-hapi@npm:0.45.1" resolution: "@opentelemetry/instrumentation-hapi@npm:0.45.1"
@@ -3434,6 +3519,19 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation-http@npm:0.57.1":
version: 0.57.1 version: 0.57.1
resolution: "@opentelemetry/instrumentation-http@npm:0.57.1" resolution: "@opentelemetry/instrumentation-http@npm:0.57.1"
@@ -3449,6 +3547,21 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation-ioredis@npm:0.47.0":
version: 0.47.0 version: 0.47.0
resolution: "@opentelemetry/instrumentation-ioredis@npm:0.47.0" resolution: "@opentelemetry/instrumentation-ioredis@npm:0.47.0"
@@ -3462,6 +3575,19 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation-kafkajs@npm:0.7.0":
version: 0.7.0 version: 0.7.0
resolution: "@opentelemetry/instrumentation-kafkajs@npm:0.7.0" resolution: "@opentelemetry/instrumentation-kafkajs@npm:0.7.0"
@@ -3474,6 +3600,18 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation-knex@npm:0.44.0":
version: 0.44.0 version: 0.44.0
resolution: "@opentelemetry/instrumentation-knex@npm:0.44.0" resolution: "@opentelemetry/instrumentation-knex@npm:0.44.0"
@@ -3486,6 +3624,18 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation-koa@npm:0.47.0":
version: 0.47.0 version: 0.47.0
resolution: "@opentelemetry/instrumentation-koa@npm:0.47.0" resolution: "@opentelemetry/instrumentation-koa@npm:0.47.0"
@@ -3499,6 +3649,19 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation-lru-memoizer@npm:0.44.0":
version: 0.44.0 version: 0.44.0
resolution: "@opentelemetry/instrumentation-lru-memoizer@npm:0.44.0" resolution: "@opentelemetry/instrumentation-lru-memoizer@npm:0.44.0"
@@ -3510,6 +3673,17 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation-mongodb@npm:0.51.0":
version: 0.51.0 version: 0.51.0
resolution: "@opentelemetry/instrumentation-mongodb@npm:0.51.0" resolution: "@opentelemetry/instrumentation-mongodb@npm:0.51.0"
@@ -3522,6 +3696,18 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation-mongoose@npm:0.46.0":
version: 0.46.0 version: 0.46.0
resolution: "@opentelemetry/instrumentation-mongoose@npm:0.46.0" resolution: "@opentelemetry/instrumentation-mongoose@npm:0.46.0"
@@ -3535,6 +3721,19 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation-mysql2@npm:0.45.0":
version: 0.45.0 version: 0.45.0
resolution: "@opentelemetry/instrumentation-mysql2@npm:0.45.0" resolution: "@opentelemetry/instrumentation-mysql2@npm:0.45.0"
@@ -3548,6 +3747,19 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation-mysql@npm:0.45.0":
version: 0.45.0 version: 0.45.0
resolution: "@opentelemetry/instrumentation-mysql@npm:0.45.0" resolution: "@opentelemetry/instrumentation-mysql@npm:0.45.0"
@@ -3561,6 +3773,19 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation-nestjs-core@npm:0.44.0":
version: 0.44.0 version: 0.44.0
resolution: "@opentelemetry/instrumentation-nestjs-core@npm:0.44.0" resolution: "@opentelemetry/instrumentation-nestjs-core@npm:0.44.0"
@@ -3589,6 +3814,22 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation-redis-4@npm:0.46.0":
version: 0.46.0 version: 0.46.0
resolution: "@opentelemetry/instrumentation-redis-4@npm:0.46.0" resolution: "@opentelemetry/instrumentation-redis-4@npm:0.46.0"
@@ -3602,6 +3843,19 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation-tedious@npm:0.18.0":
version: 0.18.0 version: 0.18.0
resolution: "@opentelemetry/instrumentation-tedious@npm:0.18.0" resolution: "@opentelemetry/instrumentation-tedious@npm:0.18.0"
@@ -3615,6 +3869,19 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation-undici@npm:0.10.0":
version: 0.10.0 version: 0.10.0
resolution: "@opentelemetry/instrumentation-undici@npm:0.10.0" resolution: "@opentelemetry/instrumentation-undici@npm:0.10.0"
@@ -3627,6 +3894,18 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation@npm:0.57.1":
version: 0.57.1 version: 0.57.1
resolution: "@opentelemetry/instrumentation@npm:0.57.1" resolution: "@opentelemetry/instrumentation@npm:0.57.1"
@@ -3643,6 +3922,22 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/instrumentation@npm:^0.49 || ^0.50 || ^0.51 || ^0.52.0 || ^0.53.0":
version: 0.53.0 version: 0.53.0
resolution: "@opentelemetry/instrumentation@npm:0.53.0" resolution: "@opentelemetry/instrumentation@npm:0.53.0"
@@ -3675,22 +3970,6 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/redis-common@npm:^0.36.2":
version: 0.36.2 version: 0.36.2
resolution: "@opentelemetry/redis-common@npm:0.36.2" resolution: "@opentelemetry/redis-common@npm:0.36.2"
@@ -3794,6 +4073,13 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@opentelemetry/sql-common@npm:^0.40.1":
version: 0.40.1 version: 0.40.1
resolution: "@opentelemetry/sql-common@npm:0.40.1" resolution: "@opentelemetry/sql-common@npm:0.40.1"
@@ -4028,6 +4314,17 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@radix-ui/primitive@npm:1.1.1":
version: 1.1.1 version: 1.1.1
resolution: "@radix-ui/primitive@npm:1.1.1" resolution: "@radix-ui/primitive@npm:1.1.1"
@@ -6532,6 +6829,17 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@sentry/babel-plugin-component-annotate@npm:2.22.7":
version: 2.22.7 version: 2.22.7
resolution: "@sentry/babel-plugin-component-annotate@npm:2.22.7" resolution: "@sentry/babel-plugin-component-annotate@npm:2.22.7"
@@ -6552,6 +6860,17 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@sentry/bundler-plugin-core@npm:2.22.7":
version: 2.22.7 version: 2.22.7
resolution: "@sentry/bundler-plugin-core@npm:2.22.7" resolution: "@sentry/bundler-plugin-core@npm:2.22.7"
@@ -6654,6 +6973,16 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@sentry/core@npm:8.55.0":
version: 8.55.0 version: 8.55.0
resolution: "@sentry/core@npm:8.55.0" resolution: "@sentry/core@npm:8.55.0"
@@ -6661,6 +6990,13 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@sentry/nextjs@npm:^8.41.0":
version: 8.55.0 version: 8.55.0
resolution: "@sentry/nextjs@npm:8.55.0" resolution: "@sentry/nextjs@npm:8.55.0"
@@ -6728,6 +7064,48 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@sentry/opentelemetry@npm:8.55.0":
version: 8.55.0 version: 8.55.0
resolution: "@sentry/opentelemetry@npm:8.55.0" resolution: "@sentry/opentelemetry@npm:8.55.0"
@@ -6744,6 +7122,22 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@sentry/react@npm:8.55.0":
version: 8.55.0 version: 8.55.0
resolution: "@sentry/react@npm:8.55.0" resolution: "@sentry/react@npm:8.55.0"
@@ -6757,6 +7151,31 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@sentry/vercel-edge@npm:8.55.0":
version: 8.55.0 version: 8.55.0
resolution: "@sentry/vercel-edge@npm:8.55.0" resolution: "@sentry/vercel-edge@npm:8.55.0"
@@ -6810,10 +7229,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@sinclair/typebox@npm:^0.34.27": "@sinclair/typebox@npm:^0.34.33":
version: 0.34.29 version: 0.34.33
resolution: "@sinclair/typebox@npm:0.34.29" resolution: "@sinclair/typebox@npm:0.34.33"
checksum: 10c0/90f41e78e1963abd91eaa4c8be792401b1482790650c7440752312bbf0f199196660defd8e30e2d10854289851baafe47799d0ce72aa43c273cd39a3e6f61204 checksum: 10c0/88ab4f7afc7514d576602dce5c892462a89f9082d77dde0e8e21342b3a5c8891ddfc51a65e7dbd5b3f5cbd8f5cb76aded0c0edcfcfb5730f189c2819de9583a7
languageName: node languageName: node
linkType: hard linkType: hard
@@ -7436,24 +7855,6 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@t3-oss/env-core@npm:0.9.2":
version: 0.9.2 version: 0.9.2
resolution: "@t3-oss/env-core@npm:0.9.2" resolution: "@t3-oss/env-core@npm:0.9.2"
@@ -7467,6 +7868,25 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@t3-oss/env-nextjs@npm:^0.9.2":
version: 0.9.2 version: 0.9.2
resolution: "@t3-oss/env-nextjs@npm:0.9.2" resolution: "@t3-oss/env-nextjs@npm:0.9.2"
@@ -8065,6 +8485,15 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@types/cookie@npm:0.6.0":
version: 0.6.0 version: 0.6.0
resolution: "@types/cookie@npm:0.6.0" resolution: "@types/cookie@npm:0.6.0"
@@ -11684,24 +12113,27 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"elysia@npm:1.2.25": "elysia@npm:^1.3.0":
version: 1.2.25 version: 1.3.0
resolution: "elysia@npm:1.2.25" resolution: "elysia@npm:1.3.0"
dependencies: dependencies:
"@sinclair/typebox": "npm:^0.34.27" "@sinclair/typebox": "npm:^0.34.33"
cookie: "npm:^1.0.2" 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" openapi-types: "npm:^12.1.3"
peerDependencies: peerDependencies:
"@sinclair/typebox": ">= 0.34.0" "@sinclair/typebox": ">= 0.34.0"
exact-mirror: ">= 0.0.9"
file-type: ">= 20.0.0"
openapi-types: ">= 12.0.0" openapi-types: ">= 12.0.0"
typescript: ">= 5.0.0" typescript: ">= 5.0.0"
peerDependenciesMeta: dependenciesMeta:
"@sinclair/typebox":
optional: true
openapi-types: openapi-types:
optional: true optional: true
typescript: checksum: 10c0/39a7cbc3d3eeedb7c74ffad4045a582a87798dc54a7a3032754f754f375a136fbb6a7e70769f9aa47e9bf567da18403bc96a88f1dfe8f1780be478f5ef4dfedf
optional: true
checksum: 10c0/7fa89dd468417a393f032ab53aee01c7a74c719b415878df8034721bb7f18c475212c69ca717554b15c9e6a39adefd4bc2ca5e3304599b05ffb29483b7e292de
languageName: node languageName: node
linkType: hard linkType: hard
@@ -12576,6 +13008,18 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "execa@npm:4.1.0":
version: 4.1.0 version: 4.1.0
resolution: "execa@npm:4.1.0" resolution: "execa@npm:4.1.0"
@@ -12715,6 +13159,13 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3":
version: 3.1.3 version: 3.1.3
resolution: "fast-deep-equal@npm:3.1.3" resolution: "fast-deep-equal@npm:3.1.3"
@@ -13909,6 +14360,18 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "import-lazy@npm:~4.0.0":
version: 4.0.0 version: 4.0.0
resolution: "import-lazy@npm:4.0.0" resolution: "import-lazy@npm:4.0.0"
@@ -14046,23 +14509,6 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "ioredis@npm:^5.5.0":
version: 5.5.0 version: 5.5.0
resolution: "ioredis@npm:5.5.0" resolution: "ioredis@npm:5.5.0"
@@ -14080,6 +14526,23 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "ip-address@npm:^9.0.5":
version: 9.0.5 version: 9.0.5
resolution: "ip-address@npm:9.0.5" resolution: "ip-address@npm:9.0.5"
@@ -16511,13 +16974,6 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "memoizerific@npm:^1.11.3":
version: 1.11.3 version: 1.11.3
resolution: "memoizerific@npm:1.11.3" resolution: "memoizerific@npm:1.11.3"
@@ -17935,7 +18391,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"pino@npm:9.6.0": "pino@npm:^9.6.0":
version: 9.6.0 version: 9.6.0
resolution: "pino@npm:9.6.0" resolution: "pino@npm:9.6.0"
dependencies: dependencies:
@@ -18972,13 +19428,15 @@ __metadata:
resolution: "redis-api@workspace:apps/redis-api" resolution: "redis-api@workspace:apps/redis-api"
dependencies: dependencies:
"@biomejs/biome": "npm:^1.9.4" "@biomejs/biome": "npm:^1.9.4"
"@elysiajs/server-timing": "npm:1.2.1" "@elysiajs/server-timing": "npm:^1.3.0"
"@elysiajs/swagger": "npm:1.2.2" "@elysiajs/swagger": "npm:^1.3.0"
"@t3-oss/env-core": "npm:0.12.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" "@types/bun": "npm:latest"
elysia: "npm:1.2.25" elysia: "npm:^1.3.0"
ioredis: "npm:5.6.0" ioredis: "npm:^5.6.1"
pino: "npm:9.6.0" pino: "npm:^9.6.0"
pino-pretty: "npm:^13.0.0" pino-pretty: "npm:^13.0.0"
typescript: "npm:^5.7.2" typescript: "npm:^5.7.2"
languageName: unknown languageName: unknown