diff --git a/.gitignore b/.gitignore index 67f48cf..343a379 100644 --- a/.gitignore +++ b/.gitignore @@ -76,3 +76,7 @@ dist !.yarn/releases !.yarn/sdks !.yarn/versions + +# Prometheus +# Ignore the local data directory used by Prometheus +data/ diff --git a/package.json b/package.json index 52691d7..11444f6 100644 --- a/package.json +++ b/package.json @@ -41,34 +41,36 @@ "@fastify/swagger": "^9.7.0", "@fastify/swagger-ui": "^5.2.5", "@fastify/type-provider-typebox": "^6.1.0", - "@scalar/fastify-api-reference": "^1.44.24", + "@scalar/fastify-api-reference": "^1.47.0", "fastify": "^5.7.4", "fastify-cli": "^7.4.1", + "fastify-metrics": "^12.1.0", "fastify-plugin": "^5.1.0", "jsonwebtoken": "^9.0.3", - "jwks-rsa": "^3.2.2", + "jwks-rsa": "^4.0.1", "openid-client": "^6.8.2", - "typebox": "^1.0.81" + "pino-loki": "^3.0.0", + "typebox": "^1.1.5" }, "devDependencies": { - "@commitlint/cli": "^20.4.2", - "@commitlint/config-conventional": "^20.4.2", - "@eslint/js": "^9.39.2", + "@commitlint/cli": "^20.4.3", + "@commitlint/config-conventional": "^20.4.3", + "@eslint/js": "^10.0.1", "@trivago/prettier-plugin-sort-imports": "^6.0.2", "@types/jsonwebtoken": "^9.0.10", - "@types/node": "^25.3.0", - "@typescript/native-preview": "^7.0.0-dev.20260219.1", - "eslint": "^9.39.2", + "@types/node": "^25.3.3", + "@typescript/native-preview": "^7.0.0-dev.20260304.1", + "eslint": "^9.39.3", "eslint-config-prettier": "^10.1.8", "husky": "^9.1.7", - "lint-staged": "^16.2.7", + "lint-staged": "^16.3.2", "mongodb-memory-server": "11.0.1", "prettier": "^3.8.1", "prettier-plugin-jsdoc": "^1.8.0", "rimraf": "^6.1.3", "tsx": "^4.21.0", "typescript": "^5.9.3", - "typescript-eslint": "^8.56.0" + "typescript-eslint": "^8.56.1" }, "packageManager": "yarn@4.12.0+sha512.f45ab632439a67f8bc759bf32ead036a1f413287b9042726b7cc4818b7b49e14e9423ba49b18f9e06ea4941c1ad062385b1d8760a8d5091a1a31e5f6219afca8" } diff --git a/prometheus.yml.example b/prometheus.yml.example new file mode 100644 index 0000000..9bd7051 --- /dev/null +++ b/prometheus.yml.example @@ -0,0 +1,56 @@ +global: + scrape_interval: 15s # By default, scrape targets every 15 seconds. + + # Attach these labels to any time series or alerts when communicating with + # external systems (federation, remote storage, Alertmanager). + external_labels: + monitor: 'codelab-monitor' + +# Scrape configurations used for local development: +# - `prometheus`: Prometheus' own internal metrics endpoint. +# - `template-api`: this project's API (expects metrics at `http://localhost:3000/metrics`). +scrape_configs: + # Prometheus server metrics (job=prometheus) + - job_name: 'prometheus' + + # Short interval for local testing. + scrape_interval: 5s + + static_configs: + - targets: ['localhost:9090'] + + # The template API exposes application metrics at `/metrics`. + # Make sure the API is running locally and exposes Prometheus metrics (e.g. using `prom-client` or middleware). + - job_name: 'template-api' + # Keep a short interval for fast feedback during development. + scrape_interval: 5s + # Prometheus will request the `/metrics` path by default, but we show it here explicitly for clarity. + metrics_path: /metrics + static_configs: + - targets: ['localhost:3000'] + + # Optional: relabeling examples for common local/dev setups. Uncomment and adapt as needed. + # - Add a static label (useful for environment-specific queries) + # relabel_configs: + # - target_label: env + # replacement: dev + # + # - Set `instance` to the hostname (strip port) + # - source_labels: [__address__] + # regex: '([^:]+):.*' + # target_label: instance + # replacement: '$1' + # + # - Drop a specific target (useful to temporarily disable scraping) + # - source_labels: [__address__] + # regex: '127\\.0\\.0\\.1:3000' + # action: drop + # + # - Preserve original address in another label before rewriting (advanced example) + # - source_labels: [__address__] + # target_label: __param_target + # replacement: '$1' + # + # Notes: + # - `relabel_configs` run during target discovery and can add/modify/drop labels. + # - Keep examples commented so the default local setup continues to work. diff --git a/src/app.ts b/src/app.ts index 656aa28..e3eb6fd 100644 --- a/src/app.ts +++ b/src/app.ts @@ -11,7 +11,10 @@ import { RawReplyDefaultExpression, RawRequestDefaultExpression, RawServerDefault, + FastifyReply, + FastifyRequest, } from "fastify"; +import fastifyMetrics from "fastify-metrics"; import * as path from "path"; import { fileURLToPath } from "url"; @@ -20,6 +23,8 @@ const __dirname = path.dirname(__filename); export type AppOptions = { // Place your custom options for app below here. + lokiHost?: string; + prometheusKey?: string; } & FastifyServerOptions & Partial & InitMongoPluginOptions & @@ -66,9 +71,46 @@ const options: AppOptions = { mongoUri: getOption("MONGO_URI")!, authDiscoveryURL: getOption("AUTH_DISCOVERY_URL")!, authClientID: getOption("AUTH_CLIENT_ID")!, + lokiHost: getOption("LOKI_HOST", false), + prometheusKey: getOption("PROMETHEUS_KEY", false), authSkip: getBooleanOption("AUTH_SKIP", false), }; +if (options.lokiHost) { + const lokiTransport = { + target: "pino-loki", + options: { + batching: true, + interval: 5, // Logs are sent every 5 seconds, default. + host: options.lokiHost, + labels: { application: packageJson.name }, + }, + }; + + let existingLogger = options.logger; + if (typeof existingLogger === "boolean") { + existingLogger = existingLogger ? { level: "info" } : undefined; + } + + if (existingLogger) { + const existingTransport = existingLogger.transport; + + let mergedTransport: unknown; + if (Array.isArray(existingTransport)) { + mergedTransport = [...existingTransport, lokiTransport]; + } else if (existingTransport) { + mergedTransport = [existingTransport, lokiTransport]; + } else { + mergedTransport = lokiTransport; + } + + options.logger = { + ...existingLogger, + transport: mergedTransport, + } as Exclude; + } +} + // Support Typebox export type FastifyTypebox = FastifyInstance< RawServerDefault, @@ -93,6 +135,29 @@ const app: FastifyPluginAsync = async ( origin: "*", }); + // Register Metrics + const metricsEndpoint = opts.prometheusKey + ? { + url: "/metrics", + method: "GET", + handler: async () => {}, // Overridden by fastify-metrics + onRequest: async (request: FastifyRequest, reply: FastifyReply) => { + if ( + request.headers.authorization !== `Bearer ${opts.prometheusKey}` + ) { + reply.code(401).send({ status: "error", message: "Unauthorized" }); + return; + } + }, + } + : "/metrics"; + + await fastify.register(fastifyMetrics.default, { + endpoint: metricsEndpoint, + defaultMetrics: { enabled: true }, + clearRegisterOnInit: true, + }); + // Register Swagger & Swagger UI & Scalar await fastify.register(import("@fastify/swagger"), { openapi: { diff --git a/test/helper.ts b/test/helper.ts index a9c0e26..9af77a9 100644 --- a/test/helper.ts +++ b/test/helper.ts @@ -12,6 +12,7 @@ export type TestContext = { // needed for testing the application async function config(mongoUri: string): Promise { return { + pluginTimeout: options.pluginTimeout, mongoUri, authDiscoveryURL: "", authClientID: "", @@ -20,19 +21,32 @@ async function config(mongoUri: string): Promise { } // Automatically build and tear down our instance -async function build(t: TestContext) { - const mongod = await MongoMemoryServer.create(); - const fastify = Fastify({ pluginTimeout: options.pluginTimeout }); - +async function build(t: TestContext, options?: Partial) { + const cleanups: (() => Promise)[] = []; const cleanup = async () => { - await fastify.close(); - await mongod.stop(); + // Cleanup in reverse order of setup + for (const fn of cleanups.reverse()) { + try { + await fn(); + } catch (error) { + console.error("Error during cleanup:", error); + } + } }; t.after(cleanup); try { - const appConfig = await config(mongod.getUri("example-test")); - await fastify.register(app, appConfig); + const mongod = await MongoMemoryServer.create(); + cleanups.push(async () => await mongod.stop()); + + const appOptions = { + ...(await config(mongod.getUri("example-test"))), + ...options, + }; + const fastify = Fastify(appOptions); + cleanups.push(async () => await fastify.close()); + + await fastify.register(app, appOptions); await fastify.ready(); return fastify; } catch (error) { diff --git a/test/routes/metrics.test.ts b/test/routes/metrics.test.ts new file mode 100644 index 0000000..25224ad --- /dev/null +++ b/test/routes/metrics.test.ts @@ -0,0 +1,41 @@ +import { build } from "../helper.js"; +import * as assert from "node:assert"; +import { test } from "node:test"; + +test("metrics route without key", async (t) => { + const app = await build(t); + + const response = await app.inject({ + url: "/metrics", + }); + + assert.equal(response.statusCode, 200); +}); + +test("metrics route with key", async (t) => { + const app = await build(t, { prometheusKey: "secret" }); + + // Without auth header + const response = await app.inject({ + url: "/metrics", + }); + assert.equal(response.statusCode, 401); + + // With correct auth header + const responseAuth = await app.inject({ + url: "/metrics", + headers: { + authorization: "Bearer secret", + }, + }); + assert.equal(responseAuth.statusCode, 200); + + // With incorrect auth header + const responseBadAuth = await app.inject({ + url: "/metrics", + headers: { + authorization: "Bearer wrong", + }, + }); + assert.equal(responseBadAuth.statusCode, 401); +}); diff --git a/yarn.lock b/yarn.lock index 70e0542..e919e11 100644 --- a/yarn.lock +++ b/yarn.lock @@ -108,54 +108,54 @@ __metadata: languageName: node linkType: hard -"@commitlint/cli@npm:^20.4.2": - version: 20.4.2 - resolution: "@commitlint/cli@npm:20.4.2" - dependencies: - "@commitlint/format": "npm:^20.4.0" - "@commitlint/lint": "npm:^20.4.2" - "@commitlint/load": "npm:^20.4.0" - "@commitlint/read": "npm:^20.4.0" - "@commitlint/types": "npm:^20.4.0" +"@commitlint/cli@npm:^20.4.3": + version: 20.4.3 + resolution: "@commitlint/cli@npm:20.4.3" + dependencies: + "@commitlint/format": "npm:^20.4.3" + "@commitlint/lint": "npm:^20.4.3" + "@commitlint/load": "npm:^20.4.3" + "@commitlint/read": "npm:^20.4.3" + "@commitlint/types": "npm:^20.4.3" tinyexec: "npm:^1.0.0" yargs: "npm:^17.0.0" bin: commitlint: ./cli.js - checksum: 10c0/ef091ed137492cc7a86ba98e4881eb251b2fd205056932dcde7f9a8e3e4aaf4ff1378cbeeee0b666b50d9533c2c20e58555ee179ba92d4225ef856515ad78eef + checksum: 10c0/1f54b6870a16548a6af189336c479ed49ab8da615fbaec4c8ff3124a115db0a38bdbd07d49afe27e0d1ac35ba723640532db2b4f3c96720515eca0aa9265747d languageName: node linkType: hard -"@commitlint/config-conventional@npm:^20.4.2": - version: 20.4.2 - resolution: "@commitlint/config-conventional@npm:20.4.2" +"@commitlint/config-conventional@npm:^20.4.3": + version: 20.4.3 + resolution: "@commitlint/config-conventional@npm:20.4.3" dependencies: - "@commitlint/types": "npm:^20.4.0" - conventional-changelog-conventionalcommits: "npm:^9.1.0" - checksum: 10c0/d737b6682a4237914372b86802772c1ff1d3414f1a167510859fc611986d1c401c8976c41f16b9e06439bd133fcf67ab7b63a72608a0c18e5e79614c995339b4 + "@commitlint/types": "npm:^20.4.3" + conventional-changelog-conventionalcommits: "npm:^9.2.0" + checksum: 10c0/c7c6fb0b3201b17fae3a3e488b20795e7facbda511017d96939029f83d320567c310576ec9074f9536a3c811ea5d8038b3ddc92905c198e24c00b1a2759a8c84 languageName: node linkType: hard -"@commitlint/config-validator@npm:^20.4.0": - version: 20.4.0 - resolution: "@commitlint/config-validator@npm:20.4.0" +"@commitlint/config-validator@npm:^20.4.3": + version: 20.4.3 + resolution: "@commitlint/config-validator@npm:20.4.3" dependencies: - "@commitlint/types": "npm:^20.4.0" + "@commitlint/types": "npm:^20.4.3" ajv: "npm:^8.11.0" - checksum: 10c0/0ec4622badd7abb0a7c3e9c49d8acc284263a773492f060d42364e1e57c475fa189c1f2b386b1320014d4b0d861984770cabb029adc92ce49a39e0473f63cd29 + checksum: 10c0/e65f2bd3cc00b0b8b46c9bf830f78c90c60eb0d864d8e3cf02badf83196637ce7c0c9febabd91bb66d9b77138bc3e741416fff1fb4ffa4054a877cac75f2bae7 languageName: node linkType: hard -"@commitlint/ensure@npm:^20.4.1": - version: 20.4.1 - resolution: "@commitlint/ensure@npm:20.4.1" +"@commitlint/ensure@npm:^20.4.3": + version: 20.4.3 + resolution: "@commitlint/ensure@npm:20.4.3" dependencies: - "@commitlint/types": "npm:^20.4.0" + "@commitlint/types": "npm:^20.4.3" lodash.camelcase: "npm:^4.3.0" lodash.kebabcase: "npm:^4.1.1" lodash.snakecase: "npm:^4.1.1" lodash.startcase: "npm:^4.4.0" lodash.upperfirst: "npm:^4.3.1" - checksum: 10c0/095dccd38043b566d4191a3115c6963093ce2e8cae3128e2cc9e3557810fdd1b3a9de5a32e158273d7666ae18a4abed0c30c5711ffca97588acf76da43f82608 + checksum: 10c0/aa1f42317af156f8af1314311f9195f6d8150807e5d5971432bd086b8ead39c8c6166bf426d413790bb105e015f9c556de4d69083cb0a897293bed56b884d6a4 languageName: node linkType: hard @@ -166,109 +166,109 @@ __metadata: languageName: node linkType: hard -"@commitlint/format@npm:^20.4.0": - version: 20.4.0 - resolution: "@commitlint/format@npm:20.4.0" +"@commitlint/format@npm:^20.4.3": + version: 20.4.3 + resolution: "@commitlint/format@npm:20.4.3" dependencies: - "@commitlint/types": "npm:^20.4.0" + "@commitlint/types": "npm:^20.4.3" picocolors: "npm:^1.1.1" - checksum: 10c0/c58986e55601496953bd41249da34734957022b7a7a56759927fcc1a9d48be20427c8e554cf880b6e09fbc9d087f06fe0047c5dc694d82fc8e71eea379807ab7 + checksum: 10c0/e221f61a07eaf917185b8f30ff6405f642495a4b199cbfd4a0f130a11068ed5afceb938790fb35383aea9fed101fd4777dd169962a9a721e50851cdadf8044a2 languageName: node linkType: hard -"@commitlint/is-ignored@npm:^20.4.1": - version: 20.4.1 - resolution: "@commitlint/is-ignored@npm:20.4.1" +"@commitlint/is-ignored@npm:^20.4.3": + version: 20.4.3 + resolution: "@commitlint/is-ignored@npm:20.4.3" dependencies: - "@commitlint/types": "npm:^20.4.0" + "@commitlint/types": "npm:^20.4.3" semver: "npm:^7.6.0" - checksum: 10c0/03fbbaffcc37c6775551630534fac2643321a07696e62ba139222efd044ada3905eafbea8c04cebaa21d45c030caa87f7a0676e2141c1bf7ef353449a8e54bd7 + checksum: 10c0/bc118de0aabc63dc82b85e96119489e3b008c5db63c1d9dfccd6c465ba422734a0b80f465382ac38a9fb07b9a80995e4eeb529214ad3c2fe93d80e505fb43fbd languageName: node linkType: hard -"@commitlint/lint@npm:^20.4.2": - version: 20.4.2 - resolution: "@commitlint/lint@npm:20.4.2" +"@commitlint/lint@npm:^20.4.3": + version: 20.4.3 + resolution: "@commitlint/lint@npm:20.4.3" dependencies: - "@commitlint/is-ignored": "npm:^20.4.1" - "@commitlint/parse": "npm:^20.4.1" - "@commitlint/rules": "npm:^20.4.2" - "@commitlint/types": "npm:^20.4.0" - checksum: 10c0/a244916a443be0a58f362383532f6dd9e12fcd3e4e32de20d62ccb82f5f4a210d6ece8e2a4057055168a349276675f36f459c6ebc74e7d08fdc5c2a123c1993e + "@commitlint/is-ignored": "npm:^20.4.3" + "@commitlint/parse": "npm:^20.4.3" + "@commitlint/rules": "npm:^20.4.3" + "@commitlint/types": "npm:^20.4.3" + checksum: 10c0/e6af7cbbf935a393a970352674f88ec3e05f08c9f88f638b81279febf77c1795d75112e27248f7788a14e0747ec06fa2ab3efca5d0836070d35b0283fa515817 languageName: node linkType: hard -"@commitlint/load@npm:^20.4.0": - version: 20.4.0 - resolution: "@commitlint/load@npm:20.4.0" +"@commitlint/load@npm:^20.4.3": + version: 20.4.3 + resolution: "@commitlint/load@npm:20.4.3" dependencies: - "@commitlint/config-validator": "npm:^20.4.0" + "@commitlint/config-validator": "npm:^20.4.3" "@commitlint/execute-rule": "npm:^20.0.0" - "@commitlint/resolve-extends": "npm:^20.4.0" - "@commitlint/types": "npm:^20.4.0" - cosmiconfig: "npm:^9.0.0" + "@commitlint/resolve-extends": "npm:^20.4.3" + "@commitlint/types": "npm:^20.4.3" + cosmiconfig: "npm:^9.0.1" cosmiconfig-typescript-loader: "npm:^6.1.0" is-plain-obj: "npm:^4.1.0" lodash.mergewith: "npm:^4.6.2" picocolors: "npm:^1.1.1" - checksum: 10c0/65256534d23a8afcfd10339b9b8c197671d7e55f59fad740153c628dca903cf371a764d6b00cc0e2b69ff8b908e0f5395bc3e0fccfa59c1f15d9a14be8bbeba0 + checksum: 10c0/80fb52e259492a130701cfe637e9c06a6151a980bd51f0d2c011f7e973f7188d8c3d52d078302b75e4e767d618ebdca3a49935268a38e807298bf08fa7f5e49d languageName: node linkType: hard -"@commitlint/message@npm:^20.4.0": - version: 20.4.0 - resolution: "@commitlint/message@npm:20.4.0" - checksum: 10c0/ded99c7863665d36bec2f2f5e13891d1c855fc6d38c9732b8ab9801a0d8917d0a036760c23d6dbbb5a5e1447712cad7d304570fa679775aa7a00dfcc38fcdf28 +"@commitlint/message@npm:^20.4.3": + version: 20.4.3 + resolution: "@commitlint/message@npm:20.4.3" + checksum: 10c0/16f7a67d17df916830a9d6b2cdbaef0d680afcc47e9de53b18c7580bcbb50d8241b86c0e26a4ae71bd1d4a1025b318eb6c920e75fbc97aee7341744d4ef5dcbc languageName: node linkType: hard -"@commitlint/parse@npm:^20.4.1": - version: 20.4.1 - resolution: "@commitlint/parse@npm:20.4.1" +"@commitlint/parse@npm:^20.4.3": + version: 20.4.3 + resolution: "@commitlint/parse@npm:20.4.3" dependencies: - "@commitlint/types": "npm:^20.4.0" - conventional-changelog-angular: "npm:^8.1.0" - conventional-commits-parser: "npm:^6.2.1" - checksum: 10c0/d1eb8a6e0e1b20ae9f490d60531d6abcc34785735e6e6dcc505a6a1aa2d4f16785e96795e5cf520b4b6923239969dc23739bb4f253040d28598e4e5a0abba95f + "@commitlint/types": "npm:^20.4.3" + conventional-changelog-angular: "npm:^8.2.0" + conventional-commits-parser: "npm:^6.3.0" + checksum: 10c0/404fecad36b1586a611f1a56e8f7b5c39482c5f010949029020e23103464ab03bece04083557443ec3055917e632118c8ba52cc2c3ab76bac95b704d9338a272 languageName: node linkType: hard -"@commitlint/read@npm:^20.4.0": - version: 20.4.0 - resolution: "@commitlint/read@npm:20.4.0" +"@commitlint/read@npm:^20.4.3": + version: 20.4.3 + resolution: "@commitlint/read@npm:20.4.3" dependencies: - "@commitlint/top-level": "npm:^20.4.0" - "@commitlint/types": "npm:^20.4.0" + "@commitlint/top-level": "npm:^20.4.3" + "@commitlint/types": "npm:^20.4.3" git-raw-commits: "npm:^4.0.0" minimist: "npm:^1.2.8" tinyexec: "npm:^1.0.0" - checksum: 10c0/e0a5b8bf7541198e2ec630e61d67eade20db5d933044703029df5abb21829aa36f4b59919aa7b533fa4ff39d4c344c7a7145d5f6173f3ecd8a980ef9fd072ff5 + checksum: 10c0/3e7f88ad9bd780f6b0ec6511d00d222aa61d1fd8fad98d7dfdf9d98d112b655c5ae0c2d575709008f01ceb049e134ccfc2fb21ea5948a93ad60c65fada289c49 languageName: node linkType: hard -"@commitlint/resolve-extends@npm:^20.4.0": - version: 20.4.0 - resolution: "@commitlint/resolve-extends@npm:20.4.0" +"@commitlint/resolve-extends@npm:^20.4.3": + version: 20.4.3 + resolution: "@commitlint/resolve-extends@npm:20.4.3" dependencies: - "@commitlint/config-validator": "npm:^20.4.0" - "@commitlint/types": "npm:^20.4.0" + "@commitlint/config-validator": "npm:^20.4.3" + "@commitlint/types": "npm:^20.4.3" global-directory: "npm:^4.0.1" import-meta-resolve: "npm:^4.0.0" lodash.mergewith: "npm:^4.6.2" resolve-from: "npm:^5.0.0" - checksum: 10c0/c2ab46a32d89014fdba0fdaf6bfbfdb6b411311fa76e52948df4d2eaf048f4e8c1281b8f59742ec74adc8558ec1f7bfc22f1af8e7203536963998daf3eb271e3 + checksum: 10c0/09220329bacdcb0c90bb93d18e9d57bb832a64a2683bd39d183e07b19131aa19999c61abf30159989432755997852e3fb78227333b46ad662dd62b7c91c01a78 languageName: node linkType: hard -"@commitlint/rules@npm:^20.4.2": - version: 20.4.2 - resolution: "@commitlint/rules@npm:20.4.2" +"@commitlint/rules@npm:^20.4.3": + version: 20.4.3 + resolution: "@commitlint/rules@npm:20.4.3" dependencies: - "@commitlint/ensure": "npm:^20.4.1" - "@commitlint/message": "npm:^20.4.0" + "@commitlint/ensure": "npm:^20.4.3" + "@commitlint/message": "npm:^20.4.3" "@commitlint/to-lines": "npm:^20.0.0" - "@commitlint/types": "npm:^20.4.0" - checksum: 10c0/7fa322257bb719504db233a11afe49e1e97847cf5a1004b9af489e7bb81381898f8fbdcaa3e826471d4933e156f99ba1de824ef2941db2f844416f588a2f6002 + "@commitlint/types": "npm:^20.4.3" + checksum: 10c0/03348731a9d01acd65a7e5a19c6a24d1fb5418bad09c9d4bde40081a1c75d7e06157049a8f8973ecdfa640f3c1dd8f70b8ce678e6a3456b855198dcaa51ca667 languageName: node linkType: hard @@ -279,22 +279,22 @@ __metadata: languageName: node linkType: hard -"@commitlint/top-level@npm:^20.4.0": - version: 20.4.0 - resolution: "@commitlint/top-level@npm:20.4.0" +"@commitlint/top-level@npm:^20.4.3": + version: 20.4.3 + resolution: "@commitlint/top-level@npm:20.4.3" dependencies: escalade: "npm:^3.2.0" - checksum: 10c0/eaf181e7bc4bd8b604d0a22f28d8ad87bbdccbecd2d3d61c141cec09052534870bb8a5fecd4e2ad2c718b2ebddded80f0d7e60144e11daecc05153e1ec78ad75 + checksum: 10c0/52a1f59677d3d2e4bdd998bbde6e7e3848ce52372c7bd394ad24555820cadbf6820886bc33bf42a8c73878c6f0b211334ce93c4f4fbf6d8e8022b72c5c39ebd5 languageName: node linkType: hard -"@commitlint/types@npm:^20.4.0": - version: 20.4.0 - resolution: "@commitlint/types@npm:20.4.0" +"@commitlint/types@npm:^20.4.3": + version: 20.4.3 + resolution: "@commitlint/types@npm:20.4.3" dependencies: - conventional-commits-parser: "npm:^6.2.1" + conventional-commits-parser: "npm:^6.3.0" picocolors: "npm:^1.1.1" - checksum: 10c0/d469c74317d279c0e5adeeb2b0ef7cc9a5fd80cea77ab4e92fc60cf2e23a8b56ee1345c82e7f3725c329d5c87b80dcf39608dff6b356e8aa51f62f657529348c + checksum: 10c0/2181f9696f95b828551521e576fe786f81de5b5669e0ac876808e86811587011f7b78644f97c1d6623cc2bad68e0592416327080f14f153deccc20c5d295367e languageName: node linkType: hard @@ -555,20 +555,25 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:9.39.2": - version: 9.39.2 - resolution: "@eslint/js@npm:9.39.2" - checksum: 10c0/00f51c52b04ac79faebfaa65a9652b2093b9c924e945479f1f3945473f78aee83cbc76c8d70bbffbf06f7024626575b16d97b66eab16182e1d0d39daff2f26f5 - languageName: node - linkType: hard - -"@eslint/js@npm:^9.39.2": +"@eslint/js@npm:9.39.3": version: 9.39.3 resolution: "@eslint/js@npm:9.39.3" checksum: 10c0/df1c70d6681c8daf4a3c86dfac159fcd98a73c4620c4fbe2be6caab1f30a34c7de0ad88ab0e81162376d2cde1a2eed1c32eff5f917ca369870930a51f8e818f1 languageName: node linkType: hard +"@eslint/js@npm:^10.0.1": + version: 10.0.1 + resolution: "@eslint/js@npm:10.0.1" + peerDependencies: + eslint: ^10.0.0 + peerDependenciesMeta: + eslint: + optional: true + checksum: 10c0/9f3fcaf71ba7fdf65d82e8faad6ecfe97e11801cc3c362b306a88ea1ed1344ae0d35330dddb0e8ad18f010f6687a70b75491b9e01c8af57acd7987cee6b3ec6c + languageName: node + linkType: hard + "@eslint/object-schema@npm:^2.1.7": version: 2.1.7 resolution: "@eslint/object-schema@npm:2.1.7" @@ -909,6 +914,13 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/api@npm:^1.4.0": + version: 1.9.0 + resolution: "@opentelemetry/api@npm:1.9.0" + checksum: 10c0/9aae2fe6e8a3a3eeb6c1fdef78e1939cf05a0f37f8a4fae4d6bf2e09eb1e06f966ece85805626e01ba5fab48072b94f19b835449e58b6d26720ee19a58298add + languageName: node + linkType: hard + "@pinojs/redact@npm:^0.4.0": version: 0.4.0 resolution: "@pinojs/redact@npm:0.4.0" @@ -916,91 +928,98 @@ __metadata: languageName: node linkType: hard -"@scalar/core@npm:0.3.41": - version: 0.3.41 - resolution: "@scalar/core@npm:0.3.41" +"@scalar/core@npm:0.4.0": + version: 0.4.0 + resolution: "@scalar/core@npm:0.4.0" dependencies: - "@scalar/types": "npm:0.6.6" - checksum: 10c0/1d47140d4fc016eb878466845d811192bd5c62137b4558a5a51dfcca58063603109fca029d8737b2e39f4c9bef0585f5b927d3ec3f884f1af5242226ca4c8ce7 + "@scalar/types": "npm:0.7.0" + checksum: 10c0/1f253e5adb1b24eab3bc4616f100d3589de38338c8b970293fe52004757c02e67c1fb16b9d34c63832df38440b894795d3786c92168b36bb888cff7917e1e6a0 languageName: node linkType: hard -"@scalar/fastify-api-reference@npm:^1.44.24": - version: 1.44.24 - resolution: "@scalar/fastify-api-reference@npm:1.44.24" +"@scalar/fastify-api-reference@npm:^1.47.0": + version: 1.47.0 + resolution: "@scalar/fastify-api-reference@npm:1.47.0" dependencies: - "@scalar/core": "npm:0.3.41" - "@scalar/openapi-parser": "npm:0.24.13" - "@scalar/openapi-types": "npm:0.5.3" + "@scalar/core": "npm:0.4.0" + "@scalar/openapi-parser": "npm:0.25.0" + "@scalar/openapi-types": "npm:0.6.0" fastify-plugin: "npm:^4.5.1" - github-slugger: "npm:^2.0.0" - checksum: 10c0/fde9dee60c2aa8fca0916c77960e6e0facfdd8d246761734a76f781c5f7eabf26ad29ef33f90b558f6bc14ded956ee6db7a955cb4e52c11fcfb8d91f4670c4ab + github-slugger: "npm:2.0.0" + checksum: 10c0/dc159416dd0b61764be5b8d3595af030d4a129cf2a516ce0880ff62ba9b00e2ca66fac32624748b9e15d7335f3137e197a12986f26ef86bf62ba8b05cfbfd8d8 languageName: node linkType: hard -"@scalar/helpers@npm:0.2.15": - version: 0.2.15 - resolution: "@scalar/helpers@npm:0.2.15" - checksum: 10c0/04d13b193bae1da233be9d8eb67eac31ccb5d07fa6fe3b322dc38fc68ef740a593026b3baf763e7f805ca217f5ed9e070cec65abf3d764e6a15c5defd258e41c +"@scalar/helpers@npm:0.3.0": + version: 0.3.0 + resolution: "@scalar/helpers@npm:0.3.0" + checksum: 10c0/a100e0a1d1cc6a18b1deb2bcb730547c968deae77e82d39e6c039b9f232eb70b95d55fa0790aa71210ca985ff25da60cbb2feb831df58034c5059b8e930a08ac languageName: node linkType: hard -"@scalar/json-magic@npm:0.11.4": - version: 0.11.4 - resolution: "@scalar/json-magic@npm:0.11.4" +"@scalar/json-magic@npm:0.12.0": + version: 0.12.0 + resolution: "@scalar/json-magic@npm:0.12.0" dependencies: - "@scalar/helpers": "npm:0.2.15" + "@scalar/helpers": "npm:0.3.0" pathe: "npm:^2.0.3" yaml: "npm:^2.8.0" - checksum: 10c0/6cead7e2ae1168bf08686956260951838aef11ba8f403acfc9fa64e7f348af388a3d647c236b5ad4f56dfb68747a9bed0767402800f847b68275858268e159bc + checksum: 10c0/73c2292eedf20c01528e68458099374a59ee4982cce064465d78ba3e98cdb5b37adf34abae2acfa58fe8c24f108e79eff4bf66b184b86f61264fef71ab37cda7 languageName: node linkType: hard -"@scalar/openapi-parser@npm:0.24.13": - version: 0.24.13 - resolution: "@scalar/openapi-parser@npm:0.24.13" +"@scalar/openapi-parser@npm:0.25.0": + version: 0.25.0 + resolution: "@scalar/openapi-parser@npm:0.25.0" dependencies: - "@scalar/helpers": "npm:0.2.15" - "@scalar/json-magic": "npm:0.11.4" - "@scalar/openapi-types": "npm:0.5.3" - "@scalar/openapi-upgrader": "npm:0.1.8" + "@scalar/helpers": "npm:0.3.0" + "@scalar/json-magic": "npm:0.12.0" + "@scalar/openapi-types": "npm:0.6.0" + "@scalar/openapi-upgrader": "npm:0.2.0" ajv: "npm:^8.17.1" ajv-draft-04: "npm:^1.0.0" ajv-formats: "npm:^3.0.1" jsonpointer: "npm:^5.0.1" leven: "npm:^4.0.0" yaml: "npm:^2.8.0" - checksum: 10c0/6d07cfb3fbba83d527ed3df56b6e7ebe9a77896eee6d1fbafad490f589b8d02d4ff87fc6bfba213b04f377173bc582b146ef19b3f6d6f0edd8ece9f0fcd53257 + checksum: 10c0/f4f38cd75e2adf233f9d05788bd4752f98426497625bb2a7612e8f2a184fe3ba2c4c702f649157786312c12be494b0759125ef40789e978d4005d058cf280387 languageName: node linkType: hard -"@scalar/openapi-types@npm:0.5.3": - version: 0.5.3 - resolution: "@scalar/openapi-types@npm:0.5.3" +"@scalar/openapi-types@npm:0.6.0": + version: 0.6.0 + resolution: "@scalar/openapi-types@npm:0.6.0" dependencies: - zod: "npm:^4.1.11" - checksum: 10c0/51021e43b36eb041975cb58c085bb8f6ecc7d33cab0d1d4532f2a87c6723011138dc052877d95340ea2f7d1b0df51c8e7cbbed0860f6adbc0580f5713267efe5 + zod: "npm:^4.3.5" + checksum: 10c0/94f60f4cf787976dcabdef93e363c20e471bbd91b851f73597ca9167cbdd5aa687e07026916e53553ede93ad6569a5ba20232ea698bebc318d4f7595e3f61d22 languageName: node linkType: hard -"@scalar/openapi-upgrader@npm:0.1.8": - version: 0.1.8 - resolution: "@scalar/openapi-upgrader@npm:0.1.8" +"@scalar/openapi-upgrader@npm:0.2.0": + version: 0.2.0 + resolution: "@scalar/openapi-upgrader@npm:0.2.0" dependencies: - "@scalar/openapi-types": "npm:0.5.3" - checksum: 10c0/d1399280eb7f9cfcd6aa118812b786c3165b8297dce941da5e8a14a02105ca712180a7da64eff962d77ec176ce0e369feb3aa64d4660d70cef3f43fa397b5198 + "@scalar/openapi-types": "npm:0.6.0" + checksum: 10c0/8ee33c69980ddac6552205f9d530ad8ea1440939a69546c6b0c2b8271386577b2cac71205b24786784ed6acd8ae44dd713bc97a7d584faa674a66bb0094ecb24 languageName: node linkType: hard -"@scalar/types@npm:0.6.6": - version: 0.6.6 - resolution: "@scalar/types@npm:0.6.6" +"@scalar/types@npm:0.7.0": + version: 0.7.0 + resolution: "@scalar/types@npm:0.7.0" dependencies: - "@scalar/helpers": "npm:0.2.15" + "@scalar/helpers": "npm:0.3.0" nanoid: "npm:^5.1.6" type-fest: "npm:^5.3.1" zod: "npm:^4.3.5" - checksum: 10c0/a11fdec4c66759b3227c052d8d8fe483e157d1af015ef206f5f9a71df3eb314ad9d392dd7d0e64d2d81a5d37c2ec152fdfa19a98de4511bf11e182fa87196c72 + checksum: 10c0/04e0f41618efd0a5d196f2132eb5617ef0220bc706128c3cbdba1d5eb3e28c1fd62ae70ae4be5640d87c3db88f7d810645d7ff8194a9880d4075a2c1397e878d + languageName: node + linkType: hard + +"@simple-libs/stream-utils@npm:^1.2.0": + version: 1.2.0 + resolution: "@simple-libs/stream-utils@npm:1.2.0" + checksum: 10c0/2788ac7b167d1b6c81b8c6fae2f5d9688b1f02ab31e9e15b33c9dc2ae920cf7de87869de10679be8957f9adb645c91c8919e271f3e34b6b4ec56daf725522dc7 languageName: node linkType: hard @@ -1103,12 +1122,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^25.3.0": - version: 25.3.0 - resolution: "@types/node@npm:25.3.0" +"@types/node@npm:^25.3.3": + version: 25.3.3 + resolution: "@types/node@npm:25.3.3" dependencies: undici-types: "npm:~7.18.0" - checksum: 10c0/7b2b18c9d68047157367fc2f786d4f166d22dc0ad9f82331ca02fb16f2f391854123dbe604dcb938cda119c87051e4bb71dcb9ece44a579f483a6f96d4bd41de + checksum: 10c0/63e1d3816a9f4a706ab5d588d18cb98aa824b97748ff585537d327528e9438f58f69f45c7762e7cd3a1ab32c1619f551aabe8075d13172f9273cf10f6d83ab91 languageName: node linkType: hard @@ -1135,201 +1154,201 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:8.56.0": - version: 8.56.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.56.0" +"@typescript-eslint/eslint-plugin@npm:8.56.1": + version: 8.56.1 + resolution: "@typescript-eslint/eslint-plugin@npm:8.56.1" dependencies: "@eslint-community/regexpp": "npm:^4.12.2" - "@typescript-eslint/scope-manager": "npm:8.56.0" - "@typescript-eslint/type-utils": "npm:8.56.0" - "@typescript-eslint/utils": "npm:8.56.0" - "@typescript-eslint/visitor-keys": "npm:8.56.0" + "@typescript-eslint/scope-manager": "npm:8.56.1" + "@typescript-eslint/type-utils": "npm:8.56.1" + "@typescript-eslint/utils": "npm:8.56.1" + "@typescript-eslint/visitor-keys": "npm:8.56.1" ignore: "npm:^7.0.5" natural-compare: "npm:^1.4.0" ts-api-utils: "npm:^2.4.0" peerDependencies: - "@typescript-eslint/parser": ^8.56.0 + "@typescript-eslint/parser": ^8.56.1 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/26e56d14562b3d2d34b366859ec56668fdac909d6ea534451cdb4267846ff50dcccd0026a4eba71ca41f7c8bdef30ef1356620c1ff2363ad64bd8fad33a72b19 + checksum: 10c0/8a97e777792ee3e25078884ba0a04f6732367779c9487abcdc5a2d65b224515fa6a0cf1fac1aafc52fb30f3af97f2e1c9949aadbd6ca74a0165691f95494a721 languageName: node linkType: hard -"@typescript-eslint/parser@npm:8.56.0": - version: 8.56.0 - resolution: "@typescript-eslint/parser@npm:8.56.0" +"@typescript-eslint/parser@npm:8.56.1": + version: 8.56.1 + resolution: "@typescript-eslint/parser@npm:8.56.1" dependencies: - "@typescript-eslint/scope-manager": "npm:8.56.0" - "@typescript-eslint/types": "npm:8.56.0" - "@typescript-eslint/typescript-estree": "npm:8.56.0" - "@typescript-eslint/visitor-keys": "npm:8.56.0" + "@typescript-eslint/scope-manager": "npm:8.56.1" + "@typescript-eslint/types": "npm:8.56.1" + "@typescript-eslint/typescript-estree": "npm:8.56.1" + "@typescript-eslint/visitor-keys": "npm:8.56.1" debug: "npm:^4.4.3" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/f3a29c6fdc4e0d1a1e7ddb9909ab839c2f67591933e432c10f44aabb69ae2229f8d2072a220f63b70618cc35c67ff53de0ed110be86b33f4f354c19993f764cb + checksum: 10c0/61c9dab481e795b01835c00c9c7c845f1d7ea7faf3b8657fccee0f8658a65390cb5fe2b5230ae8c4241bd6e0c32aa9455a91989a492bd3bd6fec7c7d9339377a languageName: node linkType: hard -"@typescript-eslint/project-service@npm:8.56.0": - version: 8.56.0 - resolution: "@typescript-eslint/project-service@npm:8.56.0" +"@typescript-eslint/project-service@npm:8.56.1": + version: 8.56.1 + resolution: "@typescript-eslint/project-service@npm:8.56.1" dependencies: - "@typescript-eslint/tsconfig-utils": "npm:^8.56.0" - "@typescript-eslint/types": "npm:^8.56.0" + "@typescript-eslint/tsconfig-utils": "npm:^8.56.1" + "@typescript-eslint/types": "npm:^8.56.1" debug: "npm:^4.4.3" peerDependencies: typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/8302dc30ad8c0342137998ea872782cdd673f9e7ec4b244eeb0976915b86d6c44ef55485e2cdac2987dbf309d3663aaf293c85e88326093fc7656b51432369f6 + checksum: 10c0/ca61cde575233bc79046d73ddd330d183fb3cbb941fddc31919336317cda39885c59296e2e5401b03d9325a64a629e842fd66865705ff0d85d83ee3ee40871e8 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.56.0": - version: 8.56.0 - resolution: "@typescript-eslint/scope-manager@npm:8.56.0" +"@typescript-eslint/scope-manager@npm:8.56.1": + version: 8.56.1 + resolution: "@typescript-eslint/scope-manager@npm:8.56.1" dependencies: - "@typescript-eslint/types": "npm:8.56.0" - "@typescript-eslint/visitor-keys": "npm:8.56.0" - checksum: 10c0/898b705295e0a4081702a52f98e0d1e50f8047900becd087b232bc71f8af2b87ed70a065bed0076a26abec8f4e5c6bb4a3a0de33b7ea0e3704ecdc7487043b57 + "@typescript-eslint/types": "npm:8.56.1" + "@typescript-eslint/visitor-keys": "npm:8.56.1" + checksum: 10c0/89cc1af2635eee23f2aa2ff87c08f88f3ad972ebf67eaacdc604a4ef4178535682bad73fd086e6f3c542e4e5d874253349af10d58291d079cc29c6c7e9831de4 languageName: node linkType: hard -"@typescript-eslint/tsconfig-utils@npm:8.56.0, @typescript-eslint/tsconfig-utils@npm:^8.56.0": - version: 8.56.0 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.56.0" +"@typescript-eslint/tsconfig-utils@npm:8.56.1, @typescript-eslint/tsconfig-utils@npm:^8.56.1": + version: 8.56.1 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.56.1" peerDependencies: typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/20f48af8b497d8a730dcac3724314b4f49ecc436f8871f3e17f5193d83e7d290c8838a126971767cd011208969bc4ff0f4bddc40eac167348c88d29fdb379c8b + checksum: 10c0/d03b64d7ff19020beeefa493ae667c2e67a4547d25a3ecb9210a3a52afe980c093d772a91014bae699ee148bfb60cc659479e02bfc2946ea06954a8478ef1fe1 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.56.0": - version: 8.56.0 - resolution: "@typescript-eslint/type-utils@npm:8.56.0" +"@typescript-eslint/type-utils@npm:8.56.1": + version: 8.56.1 + resolution: "@typescript-eslint/type-utils@npm:8.56.1" dependencies: - "@typescript-eslint/types": "npm:8.56.0" - "@typescript-eslint/typescript-estree": "npm:8.56.0" - "@typescript-eslint/utils": "npm:8.56.0" + "@typescript-eslint/types": "npm:8.56.1" + "@typescript-eslint/typescript-estree": "npm:8.56.1" + "@typescript-eslint/utils": "npm:8.56.1" debug: "npm:^4.4.3" ts-api-utils: "npm:^2.4.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/4da61c36fa46f9d21a519a06b4ea6c91e9fa8a8e420fede41fb5d0f29866faa11641562b6e01c221ca6ec86bc0c3ecd7b8f11fc85b92277c3fd450ffc8fa2522 + checksum: 10c0/66517aed5059ef4a29605d06a510582f934d5789ae40ad673f1f0421f8aa13ec9ba7b8caab57ae9f270afacbf13ec5359cedfe74f21ae77e9a2364929f7e7cee languageName: node linkType: hard -"@typescript-eslint/types@npm:8.56.0, @typescript-eslint/types@npm:^8.56.0": - version: 8.56.0 - resolution: "@typescript-eslint/types@npm:8.56.0" - checksum: 10c0/5deb4ebf5fa62f9f927f6aa45f7245aa03567e88941cd76e7b083175fd59fc40368a804ba7ff7581eac75706e42ddd5c77d2a60d6b1e76ab7865d559c9af9937 +"@typescript-eslint/types@npm:8.56.1, @typescript-eslint/types@npm:^8.56.1": + version: 8.56.1 + resolution: "@typescript-eslint/types@npm:8.56.1" + checksum: 10c0/e5a0318abddf0c4f98da3039cb10b3c0601c8601f7a9f7043630f0d622dabfe83a4cd833545ad3531fc846e46ca2874377277b392c2490dffec279d9242d827b languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.56.0": - version: 8.56.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.56.0" +"@typescript-eslint/typescript-estree@npm:8.56.1": + version: 8.56.1 + resolution: "@typescript-eslint/typescript-estree@npm:8.56.1" dependencies: - "@typescript-eslint/project-service": "npm:8.56.0" - "@typescript-eslint/tsconfig-utils": "npm:8.56.0" - "@typescript-eslint/types": "npm:8.56.0" - "@typescript-eslint/visitor-keys": "npm:8.56.0" + "@typescript-eslint/project-service": "npm:8.56.1" + "@typescript-eslint/tsconfig-utils": "npm:8.56.1" + "@typescript-eslint/types": "npm:8.56.1" + "@typescript-eslint/visitor-keys": "npm:8.56.1" debug: "npm:^4.4.3" - minimatch: "npm:^9.0.5" + minimatch: "npm:^10.2.2" semver: "npm:^7.7.3" tinyglobby: "npm:^0.2.15" ts-api-utils: "npm:^2.4.0" peerDependencies: typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/cc2ba5bbfabb71c1510aea8fb8bf0d8385cabb9ca5b65a621e73f3088a91089a02aea56a9d9a31bd707593b5ba4d33d0aa2fcbdeee3cc7f4eca8226107523c28 + checksum: 10c0/92f4421dac41be289761200dc2ed85974fa451deacb09490ae1870a25b71b97218e609a90d4addba9ded5b2abdebc265c9db7f6e9ce6d29ed20e89b8487e9618 languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.56.0": - version: 8.56.0 - resolution: "@typescript-eslint/utils@npm:8.56.0" +"@typescript-eslint/utils@npm:8.56.1": + version: 8.56.1 + resolution: "@typescript-eslint/utils@npm:8.56.1" dependencies: "@eslint-community/eslint-utils": "npm:^4.9.1" - "@typescript-eslint/scope-manager": "npm:8.56.0" - "@typescript-eslint/types": "npm:8.56.0" - "@typescript-eslint/typescript-estree": "npm:8.56.0" + "@typescript-eslint/scope-manager": "npm:8.56.1" + "@typescript-eslint/types": "npm:8.56.1" + "@typescript-eslint/typescript-estree": "npm:8.56.1" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/49545d399345bb4d8113d1001ec60c05c7e0d28fd44cb3c75128e58a53c9bf7ae8d0680ca089a4f37ab9eea8a3ef39011fc731eb4ad8dd4ab642849d84318645 + checksum: 10c0/d9ffd9b2944a2c425e0532f71dc61e61d0a923d1a17733cf2777c2a4ae638307d12d44f63b33b6b3dc62f02f47db93ec49344ecefe17b76ee3e4fb0833325be3 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.56.0": - version: 8.56.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.56.0" +"@typescript-eslint/visitor-keys@npm:8.56.1": + version: 8.56.1 + resolution: "@typescript-eslint/visitor-keys@npm:8.56.1" dependencies: - "@typescript-eslint/types": "npm:8.56.0" + "@typescript-eslint/types": "npm:8.56.1" eslint-visitor-keys: "npm:^5.0.0" - checksum: 10c0/4cb7668430042da70707ac5cad826348e808af94095aca1f3d07d39d566745a33991d3defccd1e687f1b1f8aeea52eeb47591933e962452eb51c4bcd88773c12 + checksum: 10c0/86d97905dec1af964cc177c185933d040449acf6006096497f2e0093c6a53eb92b3ac1db9eb40a5a2e8d91160f558c9734331a9280797f09f284c38978b22190 languageName: node linkType: hard -"@typescript/native-preview-darwin-arm64@npm:7.0.0-dev.20260219.1": - version: 7.0.0-dev.20260219.1 - resolution: "@typescript/native-preview-darwin-arm64@npm:7.0.0-dev.20260219.1" +"@typescript/native-preview-darwin-arm64@npm:7.0.0-dev.20260304.1": + version: 7.0.0-dev.20260304.1 + resolution: "@typescript/native-preview-darwin-arm64@npm:7.0.0-dev.20260304.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@typescript/native-preview-darwin-x64@npm:7.0.0-dev.20260219.1": - version: 7.0.0-dev.20260219.1 - resolution: "@typescript/native-preview-darwin-x64@npm:7.0.0-dev.20260219.1" +"@typescript/native-preview-darwin-x64@npm:7.0.0-dev.20260304.1": + version: 7.0.0-dev.20260304.1 + resolution: "@typescript/native-preview-darwin-x64@npm:7.0.0-dev.20260304.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@typescript/native-preview-linux-arm64@npm:7.0.0-dev.20260219.1": - version: 7.0.0-dev.20260219.1 - resolution: "@typescript/native-preview-linux-arm64@npm:7.0.0-dev.20260219.1" +"@typescript/native-preview-linux-arm64@npm:7.0.0-dev.20260304.1": + version: 7.0.0-dev.20260304.1 + resolution: "@typescript/native-preview-linux-arm64@npm:7.0.0-dev.20260304.1" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@typescript/native-preview-linux-arm@npm:7.0.0-dev.20260219.1": - version: 7.0.0-dev.20260219.1 - resolution: "@typescript/native-preview-linux-arm@npm:7.0.0-dev.20260219.1" +"@typescript/native-preview-linux-arm@npm:7.0.0-dev.20260304.1": + version: 7.0.0-dev.20260304.1 + resolution: "@typescript/native-preview-linux-arm@npm:7.0.0-dev.20260304.1" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@typescript/native-preview-linux-x64@npm:7.0.0-dev.20260219.1": - version: 7.0.0-dev.20260219.1 - resolution: "@typescript/native-preview-linux-x64@npm:7.0.0-dev.20260219.1" +"@typescript/native-preview-linux-x64@npm:7.0.0-dev.20260304.1": + version: 7.0.0-dev.20260304.1 + resolution: "@typescript/native-preview-linux-x64@npm:7.0.0-dev.20260304.1" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@typescript/native-preview-win32-arm64@npm:7.0.0-dev.20260219.1": - version: 7.0.0-dev.20260219.1 - resolution: "@typescript/native-preview-win32-arm64@npm:7.0.0-dev.20260219.1" +"@typescript/native-preview-win32-arm64@npm:7.0.0-dev.20260304.1": + version: 7.0.0-dev.20260304.1 + resolution: "@typescript/native-preview-win32-arm64@npm:7.0.0-dev.20260304.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@typescript/native-preview-win32-x64@npm:7.0.0-dev.20260219.1": - version: 7.0.0-dev.20260219.1 - resolution: "@typescript/native-preview-win32-x64@npm:7.0.0-dev.20260219.1" +"@typescript/native-preview-win32-x64@npm:7.0.0-dev.20260304.1": + version: 7.0.0-dev.20260304.1 + resolution: "@typescript/native-preview-win32-x64@npm:7.0.0-dev.20260304.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@typescript/native-preview@npm:^7.0.0-dev.20260219.1": - version: 7.0.0-dev.20260219.1 - resolution: "@typescript/native-preview@npm:7.0.0-dev.20260219.1" +"@typescript/native-preview@npm:^7.0.0-dev.20260304.1": + version: 7.0.0-dev.20260304.1 + resolution: "@typescript/native-preview@npm:7.0.0-dev.20260304.1" dependencies: - "@typescript/native-preview-darwin-arm64": "npm:7.0.0-dev.20260219.1" - "@typescript/native-preview-darwin-x64": "npm:7.0.0-dev.20260219.1" - "@typescript/native-preview-linux-arm": "npm:7.0.0-dev.20260219.1" - "@typescript/native-preview-linux-arm64": "npm:7.0.0-dev.20260219.1" - "@typescript/native-preview-linux-x64": "npm:7.0.0-dev.20260219.1" - "@typescript/native-preview-win32-arm64": "npm:7.0.0-dev.20260219.1" - "@typescript/native-preview-win32-x64": "npm:7.0.0-dev.20260219.1" + "@typescript/native-preview-darwin-arm64": "npm:7.0.0-dev.20260304.1" + "@typescript/native-preview-darwin-x64": "npm:7.0.0-dev.20260304.1" + "@typescript/native-preview-linux-arm": "npm:7.0.0-dev.20260304.1" + "@typescript/native-preview-linux-arm64": "npm:7.0.0-dev.20260304.1" + "@typescript/native-preview-linux-x64": "npm:7.0.0-dev.20260304.1" + "@typescript/native-preview-win32-arm64": "npm:7.0.0-dev.20260304.1" + "@typescript/native-preview-win32-x64": "npm:7.0.0-dev.20260304.1" dependenciesMeta: "@typescript/native-preview-darwin-arm64": optional: true @@ -1347,7 +1366,7 @@ __metadata: optional: true bin: tsgo: bin/tsgo.js - checksum: 10c0/e227d167030c087eba6efce68df758c69f5ff4fee4a2e5e503a0fafc0770723c2ab483e56b7894b4dccb15e20a761be4243cac927c0f685d76433647e8f5e33a + checksum: 10c0/013d6bd21df81ae184fe452f7c62109dbfe142278462dfd8f1e9ba06140147267fde995e337a6cca2df6dab6b1819d49c03d32f0cae9ffaa06a0f45bb72408ff languageName: node linkType: hard @@ -1564,6 +1583,13 @@ __metadata: languageName: node linkType: hard +"bintrees@npm:1.0.2": + version: 1.0.2 + resolution: "bintrees@npm:1.0.2" + checksum: 10c0/132944b20c93c1a8f97bf8aa25980a76c6eb4291b7f2df2dbcd01cb5b417c287d3ee0847c7260c9f05f3d5a4233aaa03dec95114e97f308abe9cc3f72bed4a44 + languageName: node + linkType: hard + "brace-expansion@npm:^1.1.7": version: 1.1.12 resolution: "brace-expansion@npm:1.1.12" @@ -1748,7 +1774,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^14.0.2": +"commander@npm:^14.0.3": version: 14.0.3 resolution: "commander@npm:14.0.3" checksum: 10c0/755652564bbf56ff2ff083313912b326450d3f8d8c85f4b71416539c9a05c3c67dbd206821ca72635bf6b160e2afdefcb458e86b317827d5cb333b69ce7f1a24 @@ -1807,32 +1833,33 @@ __metadata: languageName: node linkType: hard -"conventional-changelog-angular@npm:^8.1.0": - version: 8.1.0 - resolution: "conventional-changelog-angular@npm:8.1.0" +"conventional-changelog-angular@npm:^8.2.0": + version: 8.2.0 + resolution: "conventional-changelog-angular@npm:8.2.0" dependencies: compare-func: "npm:^2.0.0" - checksum: 10c0/b82aab869117fd9bd6ccfa960521e7638d3c2a3599c95fd5ba30d3b3fe972b5f819af4d57229f2973a7129ea18546cdf5822004565cab1ee35355cc90ac4588f + checksum: 10c0/15f4d455df3152db62d3a7e92c83abe2438721e4b6736cae20b1ce17162fa0aca098b3a62f4f50d3541e4aa300f89f8768d7ba45b83cca77336ffb3700669e9e languageName: node linkType: hard -"conventional-changelog-conventionalcommits@npm:^9.1.0": - version: 9.1.0 - resolution: "conventional-changelog-conventionalcommits@npm:9.1.0" +"conventional-changelog-conventionalcommits@npm:^9.2.0": + version: 9.2.0 + resolution: "conventional-changelog-conventionalcommits@npm:9.2.0" dependencies: compare-func: "npm:^2.0.0" - checksum: 10c0/b1dfbb8ce5983bb80837c35f089fb0f9603a1b067f34be680f88fde20871792e461e29d119d468bc293f38a1ca916c1c40a841f8c049a0a1efaa40582f4fecc9 + checksum: 10c0/1ea8f1b9a9044680c3faf9d7a963a95d65bcec45815426ebdd00f1bd2bfa26aa26c454ebaa3fb67f3dd2c1b69ad48f25f20dd7837b535210576d3e18d5e8f3a7 languageName: node linkType: hard -"conventional-commits-parser@npm:^6.2.1": - version: 6.2.1 - resolution: "conventional-commits-parser@npm:6.2.1" +"conventional-commits-parser@npm:^6.3.0": + version: 6.3.0 + resolution: "conventional-commits-parser@npm:6.3.0" dependencies: + "@simple-libs/stream-utils": "npm:^1.2.0" meow: "npm:^13.0.0" bin: conventional-commits-parser: dist/cli/index.js - checksum: 10c0/217b3fff627802f7fd7cb09bdfe897aa76986865543dfaa99b7957e4717d039e1e12c4a9b72706f098a5716bbbbdae540ef0b2429f7219d5fc5be0f190f1bc1e + checksum: 10c0/7b152db0b63617fb5f993c3422942c05f48ff42fef4350d7e73b1d8a9f24489050b126478f2aabee5e45f205dbd02cb0b486e4bb865f9c0b18c35b4d13952b25 languageName: node linkType: hard @@ -1856,9 +1883,9 @@ __metadata: languageName: node linkType: hard -"cosmiconfig@npm:^9.0.0": - version: 9.0.0 - resolution: "cosmiconfig@npm:9.0.0" +"cosmiconfig@npm:^9.0.1": + version: 9.0.1 + resolution: "cosmiconfig@npm:9.0.1" dependencies: env-paths: "npm:^2.2.1" import-fresh: "npm:^3.3.0" @@ -1869,7 +1896,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/1c1703be4f02a250b1d6ca3267e408ce16abfe8364193891afc94c2d5c060b69611fdc8d97af74b7e6d5d1aac0ab2fb94d6b079573146bc2d756c2484ce5f0ee + checksum: 10c0/a5d4d95599687532ee072bca60170133c24d4e08cd795529e0f22c6ce5fde9409eaf4f26e36e3d671f43270ef858fc68f3c7b0ec28e58fac7ddebda5b7725306 languageName: node linkType: hard @@ -2207,9 +2234,9 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^9.39.2": - version: 9.39.2 - resolution: "eslint@npm:9.39.2" +"eslint@npm:^9.39.3": + version: 9.39.3 + resolution: "eslint@npm:9.39.3" dependencies: "@eslint-community/eslint-utils": "npm:^4.8.0" "@eslint-community/regexpp": "npm:^4.12.1" @@ -2217,7 +2244,7 @@ __metadata: "@eslint/config-helpers": "npm:^0.4.2" "@eslint/core": "npm:^0.17.0" "@eslint/eslintrc": "npm:^3.3.1" - "@eslint/js": "npm:9.39.2" + "@eslint/js": "npm:9.39.3" "@eslint/plugin-kit": "npm:^0.4.1" "@humanfs/node": "npm:^0.16.6" "@humanwhocodes/module-importer": "npm:^1.0.1" @@ -2252,7 +2279,7 @@ __metadata: optional: true bin: eslint: bin/eslint.js - checksum: 10c0/bb88ca8fd16bb7e1ac3e13804c54d41c583214460c0faa7b3e7c574e69c5600c7122295500fb4b0c06067831111db740931e98da1340329527658e1cf80073d3 + checksum: 10c0/5e5dbf84d4f604f5d2d7a58c5c3fcdde30a01b8973ff3caeca8b2bacc16066717cedb4385ce52db1a2746d0b621770d4d4227cc7f44982b0b03818be2c31538d languageName: node linkType: hard @@ -2449,6 +2476,18 @@ __metadata: languageName: node linkType: hard +"fastify-metrics@npm:^12.1.0": + version: 12.1.0 + resolution: "fastify-metrics@npm:12.1.0" + dependencies: + fastify-plugin: "npm:^5.0.0" + prom-client: "npm:^15.1.3" + peerDependencies: + fastify: ">=5" + checksum: 10c0/b42940b8c7cbfcd86182b9a85b53dc903727c73523cf14ff465fca7a64ffa966dcf14e9af944efdecfb1be027f2cb356dbaf5126f25c789eed6cd5b6d4767e24 + languageName: node + linkType: hard + "fastify-plugin@npm:^4.5.1": version: 4.5.1 resolution: "fastify-plugin@npm:4.5.1" @@ -2695,7 +2734,7 @@ __metadata: languageName: node linkType: hard -"github-slugger@npm:^2.0.0": +"github-slugger@npm:2.0.0": version: 2.0.0 resolution: "github-slugger@npm:2.0.0" checksum: 10c0/21b912b6b1e48f1e5a50b2292b48df0ff6abeeb0691b161b3d93d84f4ae6b1acd6ae23702e914af7ea5d441c096453cf0f621b72d57893946618d21dd1a1c486 @@ -3000,13 +3039,6 @@ __metadata: languageName: node linkType: hard -"jose@npm:^4.15.4": - version: 4.15.9 - resolution: "jose@npm:4.15.9" - checksum: 10c0/4ed4ddf4a029db04bd167f2215f65d7245e4dc5f36d7ac3c0126aab38d66309a9e692f52df88975d99429e357e5fd8bab340ff20baab544d17684dd1d940a0f4 - languageName: node - linkType: hard - "jose@npm:^6.1.3": version: 6.1.3 resolution: "jose@npm:6.1.3" @@ -3139,16 +3171,16 @@ __metadata: languageName: node linkType: hard -"jwks-rsa@npm:^3.2.2": - version: 3.2.2 - resolution: "jwks-rsa@npm:3.2.2" +"jwks-rsa@npm:^4.0.1": + version: 4.0.1 + resolution: "jwks-rsa@npm:4.0.1" dependencies: "@types/jsonwebtoken": "npm:^9.0.4" debug: "npm:^4.3.4" - jose: "npm:^4.15.4" + jose: "npm:^6.1.3" limiter: "npm:^1.1.5" - lru-memoizer: "npm:^2.2.0" - checksum: 10c0/a619ee0c5b342e1c9edcd69086d7beb86e3ef1dcce5b8aeb3ac6d0c0014309c90f00e5e7b0ce8143832628244fec8cdff51ecc38a5c3a95a4fcd810d60e79b1a + lru-memoizer: "npm:^3.0.0" + checksum: 10c0/aeca4b1de959707002150556f4f08ed3677fe9dd12bd0be0aa01220a86b88867357c7d2241f4975de9f53125d41cc3f5e4c5e929a8922f257b61634b208d7e3c languageName: node linkType: hard @@ -3213,20 +3245,19 @@ __metadata: languageName: node linkType: hard -"lint-staged@npm:^16.2.7": - version: 16.2.7 - resolution: "lint-staged@npm:16.2.7" +"lint-staged@npm:^16.3.2": + version: 16.3.2 + resolution: "lint-staged@npm:16.3.2" dependencies: - commander: "npm:^14.0.2" + commander: "npm:^14.0.3" listr2: "npm:^9.0.5" micromatch: "npm:^4.0.8" - nano-spawn: "npm:^2.0.0" - pidtree: "npm:^0.6.0" string-argv: "npm:^0.3.2" - yaml: "npm:^2.8.1" + tinyexec: "npm:^1.0.2" + yaml: "npm:^2.8.2" bin: lint-staged: bin/lint-staged.js - checksum: 10c0/9a677c21a8112d823ae5bc565ba2c9e7b803786f2a021c46827a55fe44ed59def96edb24fc99c06a2545cdbbf366022ad82addcb3bf60c712f3b98ef92069717 + checksum: 10c0/4cbaa85904a912215660ac3c69400b71beabe3fe7e82969cd32c726dbfb04b0f651d0660906215f955c1446ac6b520319e1c7a03c707353a5f038c3d0441a8c3 languageName: node linkType: hard @@ -3397,15 +3428,6 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: "npm:^4.0.0" - checksum: 10c0/cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9 - languageName: node - linkType: hard - "lru-cache@npm:^11.0.0": version: 11.0.2 resolution: "lru-cache@npm:11.0.2" @@ -3413,6 +3435,13 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^11.0.1": + version: 11.2.6 + resolution: "lru-cache@npm:11.2.6" + checksum: 10c0/73bbffb298760e71b2bfe8ebc16a311c6a60ceddbba919cfedfd8635c2d125fbfb5a39b71818200e67973b11f8d59c5a9e31d6f90722e340e90393663a66e5cd + languageName: node + linkType: hard + "lru-cache@npm:^11.1.0, lru-cache@npm:^11.2.1": version: 11.2.5 resolution: "lru-cache@npm:11.2.5" @@ -3420,13 +3449,13 @@ __metadata: languageName: node linkType: hard -"lru-memoizer@npm:^2.2.0": - version: 2.3.0 - resolution: "lru-memoizer@npm:2.3.0" +"lru-memoizer@npm:^3.0.0": + version: 3.0.0 + resolution: "lru-memoizer@npm:3.0.0" dependencies: lodash.clonedeep: "npm:^4.5.0" - lru-cache: "npm:6.0.0" - checksum: 10c0/13cf6bc9ff74cdb167078dbb66d4cf43adc802495da8f56097e6f388b4d7ccb91668beb809bdbc55b62d016c138d7c19a18c5883a2fdbcc7f508ad8a23ec7c65 + lru-cache: "npm:^11.0.1" + checksum: 10c0/d4d1abedd56a79da6416e0c1ae736c6bc084155d45efe427182d4a8318a1054c5fbd9bba154e6dfe8a8b7de7630392186b81faa84f15746eb5459dc0567f181c languageName: node linkType: hard @@ -3829,7 +3858,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^9.0.0, minimatch@npm:^9.0.5": +"minimatch@npm:^9.0.0": version: 9.0.5 resolution: "minimatch@npm:9.0.5" dependencies: @@ -4016,13 +4045,6 @@ __metadata: languageName: node linkType: hard -"nano-spawn@npm:^2.0.0": - version: 2.0.0 - resolution: "nano-spawn@npm:2.0.0" - checksum: 10c0/d00f9b5739f86e28cb732ffd774793e110810cded246b8393c75c4f22674af47f98ee37b19f022ada2d8c9425f800e841caa0662fbff4c0930a10e39339fb366 - languageName: node - linkType: hard - "nanoid@npm:^5.1.6": version: 5.1.6 resolution: "nanoid@npm:5.1.6" @@ -4328,15 +4350,6 @@ __metadata: languageName: node linkType: hard -"pidtree@npm:^0.6.0": - version: 0.6.0 - resolution: "pidtree@npm:0.6.0" - bin: - pidtree: bin/pidtree.js - checksum: 10c0/0829ec4e9209e230f74ebf4265f5ccc9ebfb488334b525cb13f86ff801dca44b362c41252cd43ae4d7653a10a5c6ab3be39d2c79064d6895e0d78dc50a5ed6e9 - languageName: node - linkType: hard - "pino-abstract-transport@npm:^2.0.0": version: 2.0.0 resolution: "pino-abstract-transport@npm:2.0.0" @@ -4346,6 +4359,27 @@ __metadata: languageName: node linkType: hard +"pino-abstract-transport@npm:^3.0.0": + version: 3.0.0 + resolution: "pino-abstract-transport@npm:3.0.0" + dependencies: + split2: "npm:^4.0.0" + checksum: 10c0/4486e1b9508110aaf963d07741ac98d660b974dd51d8ad42077d215118e27cda20c64da46c07c926898d52540aab7c6b9c37dc0f5355c203bb1d6a72b5bd8d6c + languageName: node + linkType: hard + +"pino-loki@npm:^3.0.0": + version: 3.0.0 + resolution: "pino-loki@npm:3.0.0" + dependencies: + pino-abstract-transport: "npm:^3.0.0" + pump: "npm:^3.0.3" + bin: + pino-loki: dist/cli.mjs + checksum: 10c0/d7d83b8989366ff73d461f0c39adf1c7000c54a658f282cdb0e035e0fea88ac63933bd0f84dd13fbfcc210581f54b97389ff104f501559ea635c5316a1a6b398 + languageName: node + linkType: hard + "pino-pretty@npm:^13.0.0": version: 13.0.0 resolution: "pino-pretty@npm:13.0.0" @@ -4465,6 +4499,16 @@ __metadata: languageName: node linkType: hard +"prom-client@npm:^15.1.3": + version: 15.1.3 + resolution: "prom-client@npm:15.1.3" + dependencies: + "@opentelemetry/api": "npm:^1.4.0" + tdigest: "npm:^0.1.1" + checksum: 10c0/816525572e5799a2d1d45af78512fb47d073c842dc899c446e94d17cfc343d04282a1627c488c7ca1bcd47f766446d3e49365ab7249f6d9c22c7664a5bce7021 + languageName: node + linkType: hard + "promise-retry@npm:^2.0.1": version: 2.0.1 resolution: "promise-retry@npm:2.0.1" @@ -4485,6 +4529,16 @@ __metadata: languageName: node linkType: hard +"pump@npm:^3.0.3": + version: 3.0.4 + resolution: "pump@npm:3.0.4" + dependencies: + end-of-stream: "npm:^1.1.0" + once: "npm:^1.3.1" + checksum: 10c0/2780e66b5471c19e3e3e1063b84f3f6a3a08367f24c5ed552f98cd5901e6ada27c7ad6495d4244f553fd03b01884a4561933064f053f47c8994d84fd352768ea + languageName: node + linkType: hard + "punycode@npm:^2.1.0, punycode@npm:^2.3.1": version: 2.3.1 resolution: "punycode@npm:2.3.1" @@ -4938,13 +4992,22 @@ __metadata: languageName: node linkType: hard +"tdigest@npm:^0.1.1": + version: 0.1.2 + resolution: "tdigest@npm:0.1.2" + dependencies: + bintrees: "npm:1.0.2" + checksum: 10c0/10187b8144b112fcdfd3a5e4e9068efa42c990b1e30cd0d4f35ee8f58f16d1b41bc587e668fa7a6f6ca31308961cbd06cd5d4a4ae1dc388335902ae04f7d57df + languageName: node + linkType: hard + "template-api@workspace:.": version: 0.0.0-use.local resolution: "template-api@workspace:." dependencies: - "@commitlint/cli": "npm:^20.4.2" - "@commitlint/config-conventional": "npm:^20.4.2" - "@eslint/js": "npm:^9.39.2" + "@commitlint/cli": "npm:^20.4.3" + "@commitlint/config-conventional": "npm:^20.4.3" + "@eslint/js": "npm:^10.0.1" "@fastify/autoload": "npm:^6.3.1" "@fastify/cors": "npm:^11.2.0" "@fastify/mongodb": "npm:^10.0.0" @@ -4952,29 +5015,31 @@ __metadata: "@fastify/swagger": "npm:^9.7.0" "@fastify/swagger-ui": "npm:^5.2.5" "@fastify/type-provider-typebox": "npm:^6.1.0" - "@scalar/fastify-api-reference": "npm:^1.44.24" + "@scalar/fastify-api-reference": "npm:^1.47.0" "@trivago/prettier-plugin-sort-imports": "npm:^6.0.2" "@types/jsonwebtoken": "npm:^9.0.10" - "@types/node": "npm:^25.3.0" - "@typescript/native-preview": "npm:^7.0.0-dev.20260219.1" - eslint: "npm:^9.39.2" + "@types/node": "npm:^25.3.3" + "@typescript/native-preview": "npm:^7.0.0-dev.20260304.1" + eslint: "npm:^9.39.3" eslint-config-prettier: "npm:^10.1.8" fastify: "npm:^5.7.4" fastify-cli: "npm:^7.4.1" + fastify-metrics: "npm:^12.1.0" fastify-plugin: "npm:^5.1.0" husky: "npm:^9.1.7" jsonwebtoken: "npm:^9.0.3" - jwks-rsa: "npm:^3.2.2" - lint-staged: "npm:^16.2.7" + jwks-rsa: "npm:^4.0.1" + lint-staged: "npm:^16.3.2" mongodb-memory-server: "npm:11.0.1" openid-client: "npm:^6.8.2" + pino-loki: "npm:^3.0.0" prettier: "npm:^3.8.1" prettier-plugin-jsdoc: "npm:^1.8.0" rimraf: "npm:^6.1.3" tsx: "npm:^4.21.0" - typebox: "npm:^1.0.81" + typebox: "npm:^1.1.5" typescript: "npm:^5.9.3" - typescript-eslint: "npm:^8.56.0" + typescript-eslint: "npm:^8.56.1" languageName: unknown linkType: soft @@ -5003,6 +5068,13 @@ __metadata: languageName: node linkType: hard +"tinyexec@npm:^1.0.2": + version: 1.0.2 + resolution: "tinyexec@npm:1.0.2" + checksum: 10c0/1261a8e34c9b539a9aae3b7f0bb5372045ff28ee1eba035a2a059e532198fe1a182ec61ac60fa0b4a4129f0c4c4b1d2d57355b5cb9aa2d17ac9454ecace502ee + languageName: node + linkType: hard + "tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.15": version: 0.2.15 resolution: "tinyglobby@npm:0.2.15" @@ -5113,25 +5185,25 @@ __metadata: languageName: node linkType: hard -"typebox@npm:^1.0.81": - version: 1.0.81 - resolution: "typebox@npm:1.0.81" - checksum: 10c0/0944c5a5214a8c218d345dbba30de8384fd00fc6ab6c948e67661e8647c42f04530401f8e6238a556860bb1dbcdf1b300407219c66aac237c6ccaeed22d2460c +"typebox@npm:^1.1.5": + version: 1.1.5 + resolution: "typebox@npm:1.1.5" + checksum: 10c0/ce5c9953816bedd95da8e8507dad3e8126310ff12d0161a7f04742083b541dbc61b598f9cbe390ac92e5fb746c3a2cae9b84d08b104989ae0cc2d3c320b81789 languageName: node linkType: hard -"typescript-eslint@npm:^8.56.0": - version: 8.56.0 - resolution: "typescript-eslint@npm:8.56.0" +"typescript-eslint@npm:^8.56.1": + version: 8.56.1 + resolution: "typescript-eslint@npm:8.56.1" dependencies: - "@typescript-eslint/eslint-plugin": "npm:8.56.0" - "@typescript-eslint/parser": "npm:8.56.0" - "@typescript-eslint/typescript-estree": "npm:8.56.0" - "@typescript-eslint/utils": "npm:8.56.0" + "@typescript-eslint/eslint-plugin": "npm:8.56.1" + "@typescript-eslint/parser": "npm:8.56.1" + "@typescript-eslint/typescript-estree": "npm:8.56.1" + "@typescript-eslint/utils": "npm:8.56.1" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/13c47bb4a82d6714d482e96991faf2895c45a8e74235191a2ebbd36272487595c0824d128958942a1d1d18eddf8ca40c5850e2e314958a0a2e3c40be92f2d5a0 + checksum: 10c0/c33aeb9a8beab54308412dcd460ab60f845fee30eaed1fdc1083ff53c430a4dcbdfeac862136a21fb3a639538f8712d933fc410680c2a650e67b992720a0d9f6 languageName: node linkType: hard @@ -5333,7 +5405,7 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.8.0, yaml@npm:^2.8.1": +"yaml@npm:^2.8.0, yaml@npm:^2.8.2": version: 2.8.2 resolution: "yaml@npm:2.8.2" bin: @@ -5388,7 +5460,7 @@ __metadata: languageName: node linkType: hard -"zod@npm:^4.1.11, zod@npm:^4.3.5": +"zod@npm:^4.3.5": version: 4.3.6 resolution: "zod@npm:4.3.6" checksum: 10c0/860d25a81ab41d33aa25f8d0d07b091a04acb426e605f396227a796e9e800c44723ed96d0f53a512b57be3d1520f45bf69c0cb3b378a232a00787a2609625307