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}} \
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
```

View File

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

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"
},
"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",

View File

@@ -3,6 +3,7 @@ import { z } from "zod";
const redisConnectionRegex =
/^((?<username>.*?):(?<password>.*?)@)?(?<host>.*?):(?<port>\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,

View File

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

View File

@@ -1,21 +1,25 @@
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 }) => {
async ({ query: { key }, status }) => {
key = validateKey(key);
console.log("GET /cache", key);
cacheRouteLogger.info("GET /cache", key);
const value = await redis.get(key);
if (!value) {
return error("Not Found", "Not Found");
return status("Not Found", "Not Found");
}
try {
@@ -23,7 +27,15 @@ export const cacheRoutes = new Elysia({ prefix: "/cache" })
return { data: output };
} catch (e) {
redis.del(key);
throw e;
cacheRouteLogger.error(`Invalid JSON in cache for '${key}'`, e);
Sentry.captureException(e, {
tags: { cacheKey: key },
extra: { cacheKey: key, value: `${truncate(value, 100)}` },
fingerprint: ["get-route_invalid-json-in-cache"],
});
return status("Not Found", "Not Found");
}
},
{
@@ -33,18 +45,17 @@ export const cacheRoutes = new Elysia({ prefix: "/cache" })
)
.put(
"/",
async ({ query: { key }, body, error, set }) => {
async ({ query: { key }, body, status, set }) => {
key = validateKey(key);
console.log("PUT /cache", key);
cacheRouteLogger.info("PUT /cache", key);
if (!body.ttl || body.ttl < 0) {
return error("Bad Request", "ttl is required");
return status("Bad Request", "ttl is required");
}
await redis.set(key, JSON.stringify(body.data), "EX", body.ttl);
set.status = 204;
return;
return status(204, void 0);
},
{
body: t.Object({ data: t.Any(), ttl: t.Number() }),
@@ -54,19 +65,18 @@ export const cacheRoutes = new Elysia({ prefix: "/cache" })
)
.delete(
"/",
async ({ query: { key, fuzzy }, set }) => {
async ({ query: { key, fuzzy }, status }) => {
key = validateKey(key);
console.log("DELETE /cache", key, { fuzzy });
cacheRouteLogger.info("DELETE /cache", key, { fuzzy });
if (fuzzy) {
await deleteWithPattern(`*${key}*`);
} else {
await redis.del(key);
console.log("Deleted key: ", key);
cacheRouteLogger.info("Deleted key: ", key);
}
set.status = 204;
return;
return status(204, void 0);
},
{
query: t.Object({
@@ -81,7 +91,9 @@ function validateKey(key: string) {
const parsedKey = decodeURIComponent(key);
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("*")) {
@@ -93,7 +105,7 @@ function validateKey(key: string) {
async function deleteWithPattern(pattern: string) {
let cursor = "0";
let keys: string[] = [];
const keys: string[] = [];
do {
const [newCursor, foundKeys] = await redis.scan(
@@ -110,5 +122,5 @@ async function deleteWithPattern(pattern: string) {
if (keys.length > 0) {
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(
"/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;

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