From a91c61fa6c47a61e6d28263782d3b8fe487e1a49 Mon Sep 17 00:00:00 2001 From: Euan Millar Date: Thu, 16 Jan 2025 12:20:04 +0000 Subject: [PATCH] Publish E-Signet mock Docker image - rename server pckg (#34) * Publish E-Signet mock Docker image * Rename server package * remove duplicate env var * generate random names --- .../workflows/docker-publish-esignet-mock.yml | 51 +++ ...mock.yml => docker-publish-mosip-mock.yml} | 0 .github/workflows/docker-publish.yml | 4 +- README.md | 2 +- docs/installation.md | 2 +- docs/playground.ipynb | 4 +- package.json | 2 +- packages/country-config/package.json | 2 +- packages/country-config/src/forms.ts | 2 +- packages/esignet-mock/package.json | 3 +- packages/esignet-mock/src/index.ts | 25 +- packages/{server => mosip-api}/Dockerfile | 0 packages/{server => mosip-api}/README.md | 0 .../{server => mosip-api}/eslint.config.mjs | 0 packages/{server => mosip-api}/package.json | 4 +- .../{server => mosip-api}/src/constants.ts | 5 +- .../src/dev-secrets/jwk.txt | 0 .../{server => mosip-api}/src/esignet-api.ts | 11 +- packages/{server => mosip-api}/src/index.ts | 2 +- packages/{server => mosip-api}/src/logger.ts | 0 .../{server => mosip-api}/src/mosip-api.ts | 0 .../src/openapi-documentation.ts | 0 .../{server => mosip-api}/src/opencrvs-api.ts | 0 .../src/registration-number.ts | 0 .../{server => mosip-api}/src/types/fhir.ts | 0 .../src/webhooks/mosip.ts | 0 .../src/webhooks/opencrvs.ts | 0 packages/{server => mosip-api}/tsconfig.json | 0 packages/mosip-mock/package.json | 2 +- packages/mosip-mock/src/constants.ts | 4 +- .../mosip-mock/src/webhooks/opencrvs-birth.ts | 2 +- yarn.lock | 322 +++++++++--------- 32 files changed, 254 insertions(+), 195 deletions(-) create mode 100644 .github/workflows/docker-publish-esignet-mock.yml rename .github/workflows/{docker-publish-mock.yml => docker-publish-mosip-mock.yml} (100%) rename packages/{server => mosip-api}/Dockerfile (100%) rename packages/{server => mosip-api}/README.md (100%) rename packages/{server => mosip-api}/eslint.config.mjs (100%) rename packages/{server => mosip-api}/package.json (93%) rename packages/{server => mosip-api}/src/constants.ts (82%) rename packages/{server => mosip-api}/src/dev-secrets/jwk.txt (100%) rename packages/{server => mosip-api}/src/esignet-api.ts (94%) rename packages/{server => mosip-api}/src/index.ts (96%) rename packages/{server => mosip-api}/src/logger.ts (100%) rename packages/{server => mosip-api}/src/mosip-api.ts (100%) rename packages/{server => mosip-api}/src/openapi-documentation.ts (100%) rename packages/{server => mosip-api}/src/opencrvs-api.ts (100%) rename packages/{server => mosip-api}/src/registration-number.ts (100%) rename packages/{server => mosip-api}/src/types/fhir.ts (100%) rename packages/{server => mosip-api}/src/webhooks/mosip.ts (100%) rename packages/{server => mosip-api}/src/webhooks/opencrvs.ts (100%) rename packages/{server => mosip-api}/tsconfig.json (100%) diff --git a/.github/workflows/docker-publish-esignet-mock.yml b/.github/workflows/docker-publish-esignet-mock.yml new file mode 100644 index 0000000..e7e5e06 --- /dev/null +++ b/.github/workflows/docker-publish-esignet-mock.yml @@ -0,0 +1,51 @@ +# https://docs.github.com/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images#publishing-images-to-github-packages + +name: "🧪 E-Signet mock: Build and publish Docker image" + +on: + push: + branches: + - main + +env: + REGISTRY: ghcr.io + IMAGE_NAME: esignet-mock + +jobs: + build-and-push-image: + runs-on: ubuntu-latest + + permissions: + contents: read + packages: write + id-token: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Log in to the Container registry + uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=sha,prefix= + env: + DOCKER_METADATA_SHORT_SHA_LENGTH: 7 + + - name: Build and push Docker image + id: push + uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 + with: + context: packages/esignet-mock + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/docker-publish-mock.yml b/.github/workflows/docker-publish-mosip-mock.yml similarity index 100% rename from .github/workflows/docker-publish-mock.yml rename to .github/workflows/docker-publish-mosip-mock.yml diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index af3c21a..27b643f 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -9,7 +9,7 @@ on: env: REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }} + IMAGE_NAME: mosip-api jobs: build-and-push-image: @@ -45,7 +45,7 @@ jobs: id: push uses: docker/build-push-action@v6 with: - context: packages/server + context: packages/mosip-api push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} diff --git a/README.md b/README.md index 9aa1e0f..948b850 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ This package ensures a secure and a robust integration between OpenCRVS and MOSI ## Development ```sh -# start the server and all the mocked servers +# start the mosip-api and all the mocked servers yarn install yarn dev diff --git a/docs/installation.md b/docs/installation.md index aafca40..a6f7fb6 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -1,3 +1,3 @@ # Installation -This document describes how to setup the integration between OpenCRVS and MOSIP. In this example, we will deploy the [mosip-mock](./packages/mosip-mock) server as the MOSIP server. In a real-world scenario, MOSIP would provide the details we're mocking. +This document describes how to setup the integration between OpenCRVS and MOSIP. In this example, we will deploy the [mosip-mock](./packages/mosip-mock), [esigneet-mock](./packages/esigneet-mock) & [mosip-api](./packages/mosip-api). In a real-world scenario, MOSIP would provide the details we're mocking. diff --git a/docs/playground.ipynb b/docs/playground.ipynb index 87cf57a..2147f7e 100644 --- a/docs/playground.ipynb +++ b/docs/playground.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Send a birth bundle to the server webhook without having to create a record in UI" + "### Send a birth bundle to the mosip-api webhook without having to create a record in UI" ] }, { @@ -46,7 +46,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Send a death bundle to the server webhook without having to create a record in UI" + "### Send a death bundle to the mosip-api webhook without having to create a record in UI" ] }, { diff --git a/package.json b/package.json index 73571a2..59021ea 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@opencrvs/mosip", - "version": "1.7.0-alpha.8", + "version": "1.7.0-alpha.9", "license": "MPL-2.0", "private": true, "packageManager": "yarn@1.0.0", diff --git a/packages/country-config/package.json b/packages/country-config/package.json index a8c4b26..7273ed4 100644 --- a/packages/country-config/package.json +++ b/packages/country-config/package.json @@ -1,6 +1,6 @@ { "name": "@opencrvs/mosip", - "version": "1.7.0-alpha.8", + "version": "1.7.0-alpha.9", "license": "MPL-2.0", "main": "./build/index.js", "exports": { diff --git a/packages/country-config/src/forms.ts b/packages/country-config/src/forms.ts index 0018f29..cf93746 100644 --- a/packages/country-config/src/forms.ts +++ b/packages/country-config/src/forms.ts @@ -88,7 +88,7 @@ export const popupButton = ({ /** * - * @description esignet callback button form definition. Calls server/esignet-api /esignet/get-oidp-user-info (this field may not be supported in the latest release of OpenCRVS yet) + * @description esignet callback button form definition. Calls mosip-api/esignet-api /esignet/get-oidp-user-info (this field may not be supported in the latest release of OpenCRVS yet) * */ diff --git a/packages/esignet-mock/package.json b/packages/esignet-mock/package.json index d150534..3767842 100644 --- a/packages/esignet-mock/package.json +++ b/packages/esignet-mock/package.json @@ -1,7 +1,7 @@ { "name": "@opencrvs/esignet-mock", "license": "MPL-2.0", - "version": "1.7.0-alpha.8", + "version": "1.7.0-alpha.9", "main": "index.js", "scripts": { "dev": "NODE_ENV=development tsx watch src/index.ts", @@ -11,6 +11,7 @@ "@fastify/formbody": "^8.0.1", "@fastify/static": "^8.0.3", "@types/node": "^22.4.1", + "casual": "^1.6.2", "envalid": "^8.0.0", "fastify": "^5.0.0", "jose": "^5.9.6", diff --git a/packages/esignet-mock/src/index.ts b/packages/esignet-mock/src/index.ts index ce1da9d..da9cbdc 100644 --- a/packages/esignet-mock/src/index.ts +++ b/packages/esignet-mock/src/index.ts @@ -7,6 +7,7 @@ import formbody from "@fastify/formbody"; import * as jose from "jose"; import { readFileSync } from 'fs'; import { join } from 'path'; +import casual from 'casual'; const app = Fastify({ logger: true }); @@ -88,22 +89,24 @@ type OIDPUserInfo = { app.post("/oidc/userinfo", { handler: async (request: any, reply) => { + const firstName = casual.first_name + const lastName = casual.last_name const userInfo: OIDPUserInfo = { sub: "405710304278395", - name: "Niko", - given_name: "Simon", - family_name: "Bellic", - middle_name: "Stern", - nickname: "Nik", - preferred_username: "niko", - profile: "niko_bellic", - picture: "fnoudgoag", - website: "www.nikobellic.com", - email: "nikobel@gmail.com", + name: `${firstName} ${lastName}`, + given_name: firstName, + family_name: lastName, + middle_name: "", + nickname: "", + preferred_username: "", + profile: "", + picture: "", + website: "", + email: casual.email, email_verified: true, gender: "male", birthdate: "15/05/1990", - zoneinfo: "fsrthtst", + zoneinfo: "", locale: "en-US", phone_number: "0314412652", phone_number_verified: true, diff --git a/packages/server/Dockerfile b/packages/mosip-api/Dockerfile similarity index 100% rename from packages/server/Dockerfile rename to packages/mosip-api/Dockerfile diff --git a/packages/server/README.md b/packages/mosip-api/README.md similarity index 100% rename from packages/server/README.md rename to packages/mosip-api/README.md diff --git a/packages/server/eslint.config.mjs b/packages/mosip-api/eslint.config.mjs similarity index 100% rename from packages/server/eslint.config.mjs rename to packages/mosip-api/eslint.config.mjs diff --git a/packages/server/package.json b/packages/mosip-api/package.json similarity index 93% rename from packages/server/package.json rename to packages/mosip-api/package.json index bef459c..fa6bcfe 100644 --- a/packages/server/package.json +++ b/packages/mosip-api/package.json @@ -1,6 +1,6 @@ { - "name": "@opencrvs/mosip-server", - "version": "1.7.0-alpha.8", + "name": "@opencrvs/mosip-api", + "version": "1.7.0-alpha.9", "license": "MPL-2.0", "scripts": { "dev": "NODE_ENV=development tsx watch src/index.ts", diff --git a/packages/server/src/constants.ts b/packages/mosip-api/src/constants.ts similarity index 82% rename from packages/server/src/constants.ts rename to packages/mosip-api/src/constants.ts index 173b81c..7518491 100644 --- a/packages/server/src/constants.ts +++ b/packages/mosip-api/src/constants.ts @@ -18,9 +18,8 @@ export const env = cleanEnv(process.env, { devDefault: "http://localhost:7070/graphql", desc: "The URL of the OpenCRVS GraphQL Gateway", }), - GATEWAY_URL: url({ devDefault: "http://localhost:7070" }), - NATIONAL_ID_OIDP_REST_URL: url({ devDefault: "http://localhost:20260/" }), - OIDP_REST_URL: url({ devDefault: "http://localhost:20260/" }), + ESIGNET_USERINFO_URL: url({ devDefault: "http://localhost:20260/oidc/userinfo" }), + ESIGNET_TOKEN_URL: url({ devDefault: "http://localhost:20260/oauth/token" }), OIDP_JWT_AUD_CLAIM: str({ devDefault: undefined }), OIDP_CLIENT_PRIVATE_KEY: str({ devDefault: readFileSync(join(__dirname, './dev-secrets/jwk.txt')).toString() }), }); diff --git a/packages/server/src/dev-secrets/jwk.txt b/packages/mosip-api/src/dev-secrets/jwk.txt similarity index 100% rename from packages/server/src/dev-secrets/jwk.txt rename to packages/mosip-api/src/dev-secrets/jwk.txt diff --git a/packages/server/src/esignet-api.ts b/packages/mosip-api/src/esignet-api.ts similarity index 94% rename from packages/server/src/esignet-api.ts rename to packages/mosip-api/src/esignet-api.ts index a2820b1..4b4ae52 100644 --- a/packages/server/src/esignet-api.ts +++ b/packages/mosip-api/src/esignet-api.ts @@ -57,11 +57,6 @@ type OIDPUserInfo = { const JWT_EXPIRATION_TIME = "1h"; const JWT_ALG = "RS256"; -const OIDP_USERINFO_ENDPOINT = - env.NATIONAL_ID_OIDP_REST_URL && - new URL("oidc/userinfo", env.NATIONAL_ID_OIDP_REST_URL).toString(); -const OIDP_TOKEN_ENDPOINT = - env.OIDP_REST_URL && new URL("oauth/token", env.OIDP_REST_URL).toString(); export const OIDPUserInfoSchema = z.object({ clientId: z.string(), @@ -126,7 +121,7 @@ const fetchToken = async ({ client_assertion: await generateSignedJwt(clientId), }); - const request = await fetch(OIDP_TOKEN_ENDPOINT!, { + const request = await fetch(env.ESIGNET_TOKEN_URL!, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded", @@ -170,7 +165,7 @@ export const fetchLocationFromFHIR = ( method = "GET", body: string | undefined = undefined ): Promise => { - return fetch(`${env.GATEWAY_URL}${suffix}`, { + return fetch(`${env.OPENCRVS_GRAPHQL_GATEWAY_URL}${suffix}`, { method, headers: { "Content-Type": "application/json", @@ -244,7 +239,7 @@ const pickUserInfo = async (userInfo: OIDPUserInfo) => { }; export const fetchUserInfo = async (accessToken: string) => { - const request = await fetch(OIDP_USERINFO_ENDPOINT!, { + const request = await fetch(env.ESIGNET_USERINFO_URL!, { method: "POST", headers: { Authorization: "Bearer " + accessToken, diff --git a/packages/server/src/index.ts b/packages/mosip-api/src/index.ts similarity index 96% rename from packages/server/src/index.ts rename to packages/mosip-api/src/index.ts index c800308..f6f284c 100644 --- a/packages/server/src/index.ts +++ b/packages/mosip-api/src/index.ts @@ -71,7 +71,7 @@ async function run() { }); console.log( - `OpenCRVS-MOSIP server running at http://${env.HOST}:${env.PORT}` + `OpenCRVS-MOSIP API running at http://${env.HOST}:${env.PORT}` ); console.log( `Swagger UI running at http://${env.HOST}:${env.PORT}/documentation` diff --git a/packages/server/src/logger.ts b/packages/mosip-api/src/logger.ts similarity index 100% rename from packages/server/src/logger.ts rename to packages/mosip-api/src/logger.ts diff --git a/packages/server/src/mosip-api.ts b/packages/mosip-api/src/mosip-api.ts similarity index 100% rename from packages/server/src/mosip-api.ts rename to packages/mosip-api/src/mosip-api.ts diff --git a/packages/server/src/openapi-documentation.ts b/packages/mosip-api/src/openapi-documentation.ts similarity index 100% rename from packages/server/src/openapi-documentation.ts rename to packages/mosip-api/src/openapi-documentation.ts diff --git a/packages/server/src/opencrvs-api.ts b/packages/mosip-api/src/opencrvs-api.ts similarity index 100% rename from packages/server/src/opencrvs-api.ts rename to packages/mosip-api/src/opencrvs-api.ts diff --git a/packages/server/src/registration-number.ts b/packages/mosip-api/src/registration-number.ts similarity index 100% rename from packages/server/src/registration-number.ts rename to packages/mosip-api/src/registration-number.ts diff --git a/packages/server/src/types/fhir.ts b/packages/mosip-api/src/types/fhir.ts similarity index 100% rename from packages/server/src/types/fhir.ts rename to packages/mosip-api/src/types/fhir.ts diff --git a/packages/server/src/webhooks/mosip.ts b/packages/mosip-api/src/webhooks/mosip.ts similarity index 100% rename from packages/server/src/webhooks/mosip.ts rename to packages/mosip-api/src/webhooks/mosip.ts diff --git a/packages/server/src/webhooks/opencrvs.ts b/packages/mosip-api/src/webhooks/opencrvs.ts similarity index 100% rename from packages/server/src/webhooks/opencrvs.ts rename to packages/mosip-api/src/webhooks/opencrvs.ts diff --git a/packages/server/tsconfig.json b/packages/mosip-api/tsconfig.json similarity index 100% rename from packages/server/tsconfig.json rename to packages/mosip-api/tsconfig.json diff --git a/packages/mosip-mock/package.json b/packages/mosip-mock/package.json index fd65ac2..0aab6de 100644 --- a/packages/mosip-mock/package.json +++ b/packages/mosip-mock/package.json @@ -1,6 +1,6 @@ { "name": "@opencrvs/mosip-mock", - "version": "1.7.0-alpha.8", + "version": "1.7.0-alpha.9", "license": "MPL-2.0", "scripts": { "dev": "NODE_ENV=development tsx watch src/index.ts", diff --git a/packages/mosip-mock/src/constants.ts b/packages/mosip-mock/src/constants.ts index 2217370..2cc5ad9 100644 --- a/packages/mosip-mock/src/constants.ts +++ b/packages/mosip-mock/src/constants.ts @@ -3,9 +3,9 @@ import { bool, cleanEnv, email, port, str } from "envalid"; export const env = cleanEnv(process.env, { PORT: port({ default: 20240 }), HOST: str({ default: "0.0.0.0", devDefault: "localhost" }), - OPENCRVS_MOSIP_SERVER_URL: str({ + OPENCRVS_MOSIP_API_URL: str({ devDefault: "http://localhost:2024/webhooks/mosip", - desc: "The URL where @opencrvs/mosip/server receives webhooks from MOSIP", + desc: "The URL where @opencrvs/mosip/mosip-api receives webhooks from MOSIP", }), SENDER_EMAIL_ADDRESS: email({ diff --git a/packages/mosip-mock/src/webhooks/opencrvs-birth.ts b/packages/mosip-mock/src/webhooks/opencrvs-birth.ts index b26a0a1..b86ebfc 100644 --- a/packages/mosip-mock/src/webhooks/opencrvs-birth.ts +++ b/packages/mosip-mock/src/webhooks/opencrvs-birth.ts @@ -23,7 +23,7 @@ const sendNid = async ({ await sendEmail(`NID created for tracking ID ${trackingId}`, `NID: ${nid}`); - const response = await fetch(env.OPENCRVS_MOSIP_SERVER_URL, { + const response = await fetch(env.OPENCRVS_MOSIP_API_URL, { method: "POST", body: JSON.stringify({ nid, token, eventId, trackingId }), headers: { diff --git a/yarn.lock b/yarn.lock index 7265f2f..79f9d26 100644 --- a/yarn.lock +++ b/yarn.lock @@ -143,10 +143,10 @@ debug "^4.3.1" minimatch "^3.1.2" -"@eslint/core@^0.9.0": - version "0.9.1" - resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.9.1.tgz#31763847308ef6b7084a4505573ac9402c51f9d1" - integrity sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q== +"@eslint/core@^0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.10.0.tgz#23727063c21b335f752dbb3a16450f6f9cbc9091" + integrity sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw== dependencies: "@types/json-schema" "^7.0.15" @@ -165,21 +165,22 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@9.17.0", "@eslint/js@^9.13.0": - version "9.17.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.17.0.tgz#1523e586791f80376a6f8398a3964455ecc651ec" - integrity sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w== +"@eslint/js@9.18.0", "@eslint/js@^9.13.0": + version "9.18.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.18.0.tgz#3356f85d18ed3627ab107790b53caf7e1e3d1e84" + integrity sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA== "@eslint/object-schema@^2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.5.tgz#8670a8f6258a2be5b2c620ff314a1d984c23eb2e" integrity sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ== -"@eslint/plugin-kit@^0.2.3": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz#2b78e7bb3755784bb13faa8932a1d994d6537792" - integrity sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg== +"@eslint/plugin-kit@^0.2.5": + version "0.2.5" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz#ee07372035539e7847ef834e3f5e7b79f09e3a81" + integrity sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A== dependencies: + "@eslint/core" "^0.10.0" levn "^0.4.1" "@fastify/accept-negotiator@^2.0.0": @@ -202,20 +203,25 @@ integrity sha512-OO/SA8As24JtT1usTUTKgGH7uLvhfwZPwlptRi2Dp5P4KKmJI3gvsZ8MIHnNwDs4sLf/aai5LzTyl66xr7qMxA== "@fastify/fast-json-stringify-compiler@^5.0.0": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-5.0.1.tgz#659c74f3181fb4f984fe27dcc95d14366ae85ca0" - integrity sha512-f2d3JExJgFE3UbdFcpPwqNUEoHWmt8pAKf8f+9YuLESdefA0WgqxeT6DrGL4Yrf/9ihXNSKOqpjEmurV405meA== + version "5.0.2" + resolved "https://registry.yarnpkg.com/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-5.0.2.tgz#aedd7729674531ef276a5b680bfaf9c711f3f85e" + integrity sha512-YdR7gqlLg1xZAQa+SX4sMNzQHY5pC54fu9oC5aYSUqBhyn6fkLkrdtKlpVdCNPlwuUuXA1PjFTEmvMF6ZVXVGw== dependencies: fast-json-stringify "^6.0.0" "@fastify/formbody@^8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@fastify/formbody/-/formbody-8.0.1.tgz#22d44d6d182e1d30b750f113715f33742a91b5ba" - integrity sha512-LPrcadSIK8TrQk510Zdj56fnw7cyHq0/PW0YHGGM8ycGL4X7XAex+FKcwpzB4i5lF9eykc71a4EtcO9AEoByqw== + version "8.0.2" + resolved "https://registry.yarnpkg.com/@fastify/formbody/-/formbody-8.0.2.tgz#7f97c8ab25933db77760bbeaacd2ff5355a54682" + integrity sha512-84v5J2KrkXzjgBpYnaNRPqwgMsmY7ZDjuj0YVuMR3NXCJRCgKEZy/taSP1wUYGn0onfxJpLyRGDLa+NMaDJtnA== dependencies: fast-querystring "^1.1.2" fastify-plugin "^5.0.0" +"@fastify/forwarded@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@fastify/forwarded/-/forwarded-3.0.0.tgz#0fc96cdbbb5a38ad453d2d5533a34f09b4949b37" + integrity sha512-kJExsp4JCms7ipzg7SJ3y8DwmePaELHxKYtg+tZow+k0znUTf3cb+npgyqm8+ATZOdmfgfydIebPDWM172wfyA== + "@fastify/merge-json-schemas@^0.1.1": version "0.1.1" resolved "https://registry.yarnpkg.com/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz#3551857b8a17a24e8c799e9f51795edb07baa0bc" @@ -223,10 +229,18 @@ dependencies: fast-deep-equal "^3.1.3" +"@fastify/proxy-addr@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@fastify/proxy-addr/-/proxy-addr-5.0.0.tgz#e9d1c7a49b8380d9f92a879fdc623ac47ee27de3" + integrity sha512-37qVVA1qZ5sgH7KpHkkC4z9SK6StIsIcOmpjvMPXNb3vx2GQxhZocogVYbr2PbbeLCQxYIPDok307xEvRZOzGA== + dependencies: + "@fastify/forwarded" "^3.0.0" + ipaddr.js "^2.1.0" + "@fastify/send@^3.2.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@fastify/send/-/send-3.3.0.tgz#c1a8cb2d5f51a49ccd6f0db73594c2ddd943b0c4" - integrity sha512-hvrgPVG3oehn4wSPmRdqZcBCsEt7Lp6WOd6vsJ3Ms4hc5r5zouT9Ls9wq6R2tHMgJGHhNtsmd0CnhP7lmF7OTg== + version "3.3.1" + resolved "https://registry.yarnpkg.com/@fastify/send/-/send-3.3.1.tgz#cb5759480eb4110b44d9af613d61b3f8b2933d8b" + integrity sha512-6pofeVwaHN+E/MAofCwDqkWUliE3i++jlD0VH/LOfU8TJlCkMUSgKvA9bawDdVXxjve7XrdYMyDmkiYaoGWEtA== dependencies: "@lukeed/ms" "^2.0.2" escape-html "~1.0.3" @@ -235,9 +249,9 @@ mime "^3" "@fastify/static@^8.0.0", "@fastify/static@^8.0.3": - version "8.0.3" - resolved "https://registry.yarnpkg.com/@fastify/static/-/static-8.0.3.tgz#53300bc4eb81b7a97a3f31b84c4cd4b161439ea3" - integrity sha512-GHSoOVDIxEYEeVR5l044bRCuAKDErD/+9VE+Z9fnaTRr+DDz0Avrm4kKai1mHbPx6C0U7BVNthjd/gcMquZZUA== + version "8.0.4" + resolved "https://registry.yarnpkg.com/@fastify/static/-/static-8.0.4.tgz#7410ac5f73d6027d46e5b759b6a0365f9c5bca76" + integrity sha512-JdJIlXDYXZxbTFQazWOEfHxyD5uRXqRsLnp4rV9MwJnxadA0rrWBI8ZelPF2TPk/xDi5wunY/6ZmfwHXld13bA== dependencies: "@fastify/accept-negotiator" "^2.0.0" "@fastify/send" "^3.2.0" @@ -247,9 +261,9 @@ glob "^11.0.0" "@fastify/swagger-ui@^5.1.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@fastify/swagger-ui/-/swagger-ui-5.2.0.tgz#8a2cd2c78581ad313dcda68e6532750aaf4e9c37" - integrity sha512-oxL9bcL/ad8J1zXAvG2kMmj9d9mHQSM7Mx92yUk90IhvsTns9xy+GK2wXaNyv8/DFg6HpJOL2NrBAzuUt80j8g== + version "5.2.1" + resolved "https://registry.yarnpkg.com/@fastify/swagger-ui/-/swagger-ui-5.2.1.tgz#7d8a34b2286c5256eed54fe078d53be38a3b8717" + integrity sha512-R78kXg5Ss2/x2v6/N4oYMUEynzRyqJAiylPFoz1MOD01k+LZCrAyCstLuOc4aUwo6R8P2FlYiDdbneAixQK3WA== dependencies: "@fastify/static" "^8.0.0" fastify-plugin "^5.0.0" @@ -258,9 +272,9 @@ yaml "^2.4.1" "@fastify/swagger@^9.2.0": - version "9.4.0" - resolved "https://registry.yarnpkg.com/@fastify/swagger/-/swagger-9.4.0.tgz#33eb8dba6c436919260525eaf76a880bafb6d4b5" - integrity sha512-3hF7asqyNfu41aeDA/ATlIG0RY4XizgaDqPR0nc1Unt3EiXWjkVMiELLaH5WZKNvB4BA/5Wovxdin7N4ii7YHw== + version "9.4.1" + resolved "https://registry.yarnpkg.com/@fastify/swagger/-/swagger-9.4.1.tgz#e66ea4676f708ef32f6a92f4767467cac4b0cefe" + integrity sha512-VyQ0tTPYIvjHaaIStrXajTEx2xBf0FjYkXfm6GPWA/aCk5q+85Jl//F37BwxUAC5u4lMColWkktCQfczE3WBrQ== dependencies: fastify-plugin "^5.0.0" json-schema-resolver "^2.0.0" @@ -506,9 +520,9 @@ form-data "^4.0.0" "@types/node@*", "@types/node@^22.4.1", "@types/node@^22.8.2": - version "22.10.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.5.tgz#95af89a3fb74a2bb41ef9927f206e6472026e48b" - integrity sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ== + version "22.10.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.6.tgz#5c6795e71635876039f853cbccd59f523d9e4239" + integrity sha512-qNiuwC4ZDAUNcY47xgaSuS92cjf8JbSUoaKS77bmLG1rU7MlATVSiw/IlrjtIyyskXBZ8KkNfjK/P5na7rgXbQ== dependencies: undici-types "~6.20.0" @@ -519,85 +533,85 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@8.19.0": - version "8.19.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.19.0.tgz#2b1e1b791e21d5fc27ddc93884db066444f597b5" - integrity sha512-NggSaEZCdSrFddbctrVjkVZvFC6KGfKfNK0CU7mNK/iKHGKbzT4Wmgm08dKpcZECBu9f5FypndoMyRHkdqfT1Q== +"@typescript-eslint/eslint-plugin@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.20.0.tgz#b47a398e0e551cb008c60190b804394e6852c863" + integrity sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.19.0" - "@typescript-eslint/type-utils" "8.19.0" - "@typescript-eslint/utils" "8.19.0" - "@typescript-eslint/visitor-keys" "8.19.0" + "@typescript-eslint/scope-manager" "8.20.0" + "@typescript-eslint/type-utils" "8.20.0" + "@typescript-eslint/utils" "8.20.0" + "@typescript-eslint/visitor-keys" "8.20.0" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" - ts-api-utils "^1.3.0" + ts-api-utils "^2.0.0" -"@typescript-eslint/parser@8.19.0": - version "8.19.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.19.0.tgz#f1512e6e5c491b03aabb2718b95becde22b15292" - integrity sha512-6M8taKyOETY1TKHp0x8ndycipTVgmp4xtg5QpEZzXxDhNvvHOJi5rLRkLr8SK3jTgD5l4fTlvBiRdfsuWydxBw== +"@typescript-eslint/parser@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.20.0.tgz#5caf2230a37094dc0e671cf836b96dd39b587ced" + integrity sha512-gKXG7A5HMyjDIedBi6bUrDcun8GIjnI8qOwVLiY3rx6T/sHP/19XLJOnIq/FgQvWLHja5JN/LSE7eklNBr612g== dependencies: - "@typescript-eslint/scope-manager" "8.19.0" - "@typescript-eslint/types" "8.19.0" - "@typescript-eslint/typescript-estree" "8.19.0" - "@typescript-eslint/visitor-keys" "8.19.0" + "@typescript-eslint/scope-manager" "8.20.0" + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/typescript-estree" "8.20.0" + "@typescript-eslint/visitor-keys" "8.20.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@8.19.0": - version "8.19.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.19.0.tgz#28fa413a334f70e8b506a968531e0a7c9c3076dc" - integrity sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA== +"@typescript-eslint/scope-manager@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.20.0.tgz#aaf4198b509fb87a6527c02cfbfaf8901179e75c" + integrity sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw== dependencies: - "@typescript-eslint/types" "8.19.0" - "@typescript-eslint/visitor-keys" "8.19.0" + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/visitor-keys" "8.20.0" -"@typescript-eslint/type-utils@8.19.0": - version "8.19.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.19.0.tgz#41abd7d2e4cf93b6854b1fe6cbf416fab5abf89f" - integrity sha512-TZs0I0OSbd5Aza4qAMpp1cdCYVnER94IziudE3JU328YUHgWu9gwiwhag+fuLeJ2LkWLXI+F/182TbG+JaBdTg== +"@typescript-eslint/type-utils@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.20.0.tgz#958171d86b213a3f32b5b16b91db267968a4ef19" + integrity sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA== dependencies: - "@typescript-eslint/typescript-estree" "8.19.0" - "@typescript-eslint/utils" "8.19.0" + "@typescript-eslint/typescript-estree" "8.20.0" + "@typescript-eslint/utils" "8.20.0" debug "^4.3.4" - ts-api-utils "^1.3.0" + ts-api-utils "^2.0.0" -"@typescript-eslint/types@8.19.0": - version "8.19.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.19.0.tgz#a190a25c5484a42b81eaad06989579fdeb478cbb" - integrity sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA== +"@typescript-eslint/types@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.20.0.tgz#487de5314b5415dee075e95568b87a75a3e730cf" + integrity sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA== -"@typescript-eslint/typescript-estree@8.19.0": - version "8.19.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.19.0.tgz#6b4f48f98ffad6597379951b115710f4d68c9ccb" - integrity sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw== +"@typescript-eslint/typescript-estree@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.20.0.tgz#658cea07b7e5981f19bce5cf1662cb70ad59f26b" + integrity sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA== dependencies: - "@typescript-eslint/types" "8.19.0" - "@typescript-eslint/visitor-keys" "8.19.0" + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/visitor-keys" "8.20.0" debug "^4.3.4" fast-glob "^3.3.2" is-glob "^4.0.3" minimatch "^9.0.4" semver "^7.6.0" - ts-api-utils "^1.3.0" + ts-api-utils "^2.0.0" -"@typescript-eslint/utils@8.19.0": - version "8.19.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.19.0.tgz#33824310e1fccc17f27fbd1030fd8bbd9a674684" - integrity sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg== +"@typescript-eslint/utils@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.20.0.tgz#53127ecd314b3b08836b4498b71cdb86f4ef3aa2" + integrity sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.19.0" - "@typescript-eslint/types" "8.19.0" - "@typescript-eslint/typescript-estree" "8.19.0" + "@typescript-eslint/scope-manager" "8.20.0" + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/typescript-estree" "8.20.0" -"@typescript-eslint/visitor-keys@8.19.0": - version "8.19.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.19.0.tgz#dc313f735e64c4979c9073f51ffcefb6d9be5c77" - integrity sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w== +"@typescript-eslint/visitor-keys@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.20.0.tgz#2df6e24bc69084b81f06aaaa48d198b10d382bed" + integrity sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA== dependencies: - "@typescript-eslint/types" "8.19.0" + "@typescript-eslint/types" "8.20.0" eslint-visitor-keys "^4.2.0" abort-controller@^3.0.0: @@ -744,6 +758,14 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +casual@^1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/casual/-/casual-1.6.2.tgz#f56b87113ae99a6bba45e04bdfa068ca443f9e85" + integrity sha512-NQObL800rg32KZ9bBajHbyDjxLXxxuShChQg7A4tbSeG3n1t7VYGOSkzFSI9gkSgOHp+xilEJ7G0L5l6M30KYA== + dependencies: + mersenne-twister "^1.0.1" + moment "^2.15.2" + chalk@^4.0.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -793,16 +815,7 @@ cookie@^1.0.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-1.0.2.tgz#27360701532116bd3f1f9416929d176afe1e4610" integrity sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA== -cross-spawn@^7.0.0: - version "7.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.5.tgz#910aac880ff5243da96b728bc6521a5f6c2f2f82" - integrity sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cross-spawn@^7.0.6: +cross-spawn@^7.0.0, cross-spawn@^7.0.6: version "7.0.6" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== @@ -938,17 +951,17 @@ eslint-visitor-keys@^4.2.0: integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== eslint@^9.13.0: - version "9.17.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.17.0.tgz#faa1facb5dd042172fdc520106984b5c2421bb0c" - integrity sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA== + version "9.18.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.18.0.tgz#c95b24de1183e865de19f607fda6518b54827850" + integrity sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.12.1" "@eslint/config-array" "^0.19.0" - "@eslint/core" "^0.9.0" + "@eslint/core" "^0.10.0" "@eslint/eslintrc" "^3.2.0" - "@eslint/js" "9.17.0" - "@eslint/plugin-kit" "^0.2.3" + "@eslint/js" "9.18.0" + "@eslint/plugin-kit" "^0.2.5" "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" "@humanwhocodes/retry" "^0.4.1" @@ -1036,15 +1049,15 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-glob@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + version "3.3.3" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" glob-parent "^5.1.2" merge2 "^1.3.0" - micromatch "^4.0.4" + micromatch "^4.0.8" fast-json-stable-stringify@^2.0.0: version "2.1.0" @@ -1092,9 +1105,9 @@ fast-uri@^2.3.0: integrity sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA== fast-uri@^3.0.0, fast-uri@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.3.tgz#892a1c91802d5d7860de728f18608a0573142241" - integrity sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw== + version "3.0.5" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.5.tgz#19f5f9691d0dab9b85861a7bb5d98fca961da9cd" + integrity sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q== fastify-plugin@^5.0.0: version "5.0.1" @@ -1110,13 +1123,14 @@ fastify-type-provider-zod@^4.0.2: zod-to-json-schema "^3.23.3" fastify@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/fastify/-/fastify-5.2.0.tgz#dab4d4583e7719cf96aad90ccf3e690bceb069a6" - integrity sha512-3s+Qt5S14Eq5dCpnE0FxTp3z4xKChI83ZnMv+k0FwX+VUoZrgCFoLAxpfdi/vT4y6Mk+g7aAMt9pgXDoZmkefQ== + version "5.2.1" + resolved "https://registry.yarnpkg.com/fastify/-/fastify-5.2.1.tgz#38381800eb26b7e27da72d9ee51c544f0c52ff39" + integrity sha512-rslrNBF67eg8/Gyn7P2URV8/6pz8kSAscFL4EThZJ8JBMaXacVdVE4hmUcnPNKERl5o/xTiBSLfdowBRhVF1WA== dependencies: "@fastify/ajv-compiler" "^4.0.0" "@fastify/error" "^4.0.0" "@fastify/fast-json-stringify-compiler" "^5.0.0" + "@fastify/proxy-addr" "^5.0.0" abstract-logging "^2.0.1" avvio "^9.0.0" fast-json-stringify "^6.0.0" @@ -1124,7 +1138,6 @@ fastify@^5.0.0: light-my-request "^6.0.0" pino "^9.0.0" process-warning "^4.0.0" - proxy-addr "^2.0.7" rfdc "^1.3.1" secure-json-parse "^3.0.1" semver "^7.6.0" @@ -1198,11 +1211,6 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - fsevents@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" @@ -1230,9 +1238,9 @@ glob-parent@^6.0.2: is-glob "^4.0.3" glob@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-11.0.0.tgz#6031df0d7b65eaa1ccb9b29b5ced16cea658e77e" - integrity sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g== + version "11.0.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-11.0.1.tgz#1c3aef9a59d680e611b53dcd24bb8639cef064d9" + integrity sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw== dependencies: foreground-child "^3.1.0" jackspeak "^4.0.1" @@ -1300,10 +1308,10 @@ inherits@2.0.4: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== +ipaddr.js@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" + integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== is-extglob@^2.1.1: version "2.1.1" @@ -1452,9 +1460,9 @@ levn@^0.4.1: type-check "~0.4.0" light-my-request@^6.0.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/light-my-request/-/light-my-request-6.4.0.tgz#f567008bfb8e4af8b11736c4435dc62fc35a8e7a" - integrity sha512-U0UONITz4GVQodMPoygnqJan2RYfhyLsCzFBakJHWNfiQKyHzvp38YOxxLGs8lIDPwR6ngd4gmuZJQQJtRBu/A== + version "6.5.1" + resolved "https://registry.yarnpkg.com/light-my-request/-/light-my-request-6.5.1.tgz#30f6984bcd05ff76550e6d5bbaba5982d864b111" + integrity sha512-0q82RyxIextuDtkA0UDofhPHIiQ2kmpa7fwElCSlm/8nQl36cDU1Cw+CAO90Es0lReH2HChClKL84I86Nc52hg== dependencies: cookie "^1.0.1" process-warning "^4.0.0" @@ -1517,7 +1525,12 @@ merge2@^1.3.0: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -micromatch@^4.0.4: +mersenne-twister@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mersenne-twister/-/mersenne-twister-1.1.0.tgz#f916618ee43d7179efcf641bec4531eb9670978a" + integrity sha512-mUYWsMKNrm4lfygPkL3OfGzOPTR2DBlTkBNHM//F6hGp8cLThY897crAlk3/Jo17LEOOjQUrNAx6DvgO77QJkA== + +micromatch@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== @@ -1573,6 +1586,11 @@ minipass@^7.1.2: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== +moment@^2.15.2: + version "2.30.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" + integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== + ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" @@ -1728,23 +1746,15 @@ prelude-ls@^1.2.1: integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== process-warning@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-4.0.0.tgz#581e3a7a1fb456c5f4fd239f76bce75897682d5a" - integrity sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw== + version "4.0.1" + resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-4.0.1.tgz#5c1db66007c67c756e4e09eb170cdece15da32fb" + integrity sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q== process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -proxy-addr@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - pump@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.2.tgz#836f3edd6bc2ee599256c924ffe0d88573ddcbf8" @@ -1769,9 +1779,9 @@ quick-format-unescaped@^4.0.3: integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== readable-stream@^4.0.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.6.0.tgz#ce412dfb19c04efde1c5936d99c27f37a1ff94c9" - integrity sha512-cbAdYt0VcnpN2Bekq7PU+k363ZRsPwJoEEJOEtSJQlJXzwaxt3FIo/uL+KeDSGIjJqtkwyge4KQgD2S2kd+CQw== + version "4.7.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.7.0.tgz#cedbd8a1146c13dfff8dab14068028d58c15ac91" + integrity sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg== dependencies: abort-controller "^3.0.0" buffer "^6.0.3" @@ -1979,10 +1989,10 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== -ts-api-utils@^1.3.0: - version "1.4.3" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" - integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== +ts-api-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.0.0.tgz#b9d7d5f7ec9f736f4d0f09758b8607979044a900" + integrity sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ== tslib@2.6.2: version "2.6.2" @@ -2049,18 +2059,18 @@ type-check@^0.4.0, type-check@~0.4.0: prelude-ls "^1.2.1" typescript-eslint@^8.12.1: - version "8.19.0" - resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.19.0.tgz#e4ff06b19f2f9807a2c26147a0199a109944d9e0" - integrity sha512-Ni8sUkVWYK4KAcTtPjQ/UTiRk6jcsuDhPpxULapUDi8A/l8TSBk+t1GtJA1RsCzIJg0q6+J7bf35AwQigENWRQ== + version "8.20.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.20.0.tgz#76d4ea6a483fd49830a7e8baccaed10f76d1e57b" + integrity sha512-Kxz2QRFsgbWj6Xcftlw3Dd154b3cEPFqQC+qMZrMypSijPd4UanKKvoKDrJ4o8AIfZFKAF+7sMaEIR8mTElozA== dependencies: - "@typescript-eslint/eslint-plugin" "8.19.0" - "@typescript-eslint/parser" "8.19.0" - "@typescript-eslint/utils" "8.19.0" + "@typescript-eslint/eslint-plugin" "8.20.0" + "@typescript-eslint/parser" "8.20.0" + "@typescript-eslint/utils" "8.20.0" typescript@^5.6.3: - version "5.7.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6" - integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg== + version "5.7.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.3.tgz#919b44a7dbb8583a9b856d162be24a54bf80073e" + integrity sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw== undici-types@~6.20.0: version "6.20.0"