From e9ed738b0648c80186523cf0765c22f6666b3aab Mon Sep 17 00:00:00 2001 From: Michael Della Bitta Date: Wed, 1 Jan 2025 21:42:49 -0500 Subject: [PATCH 1/4] unneeded import --- test/logical/src/main/scala/TestIds.scala | 1 - 1 file changed, 1 deletion(-) diff --git a/test/logical/src/main/scala/TestIds.scala b/test/logical/src/main/scala/TestIds.scala index 633de46..00f5611 100644 --- a/test/logical/src/main/scala/TestIds.scala +++ b/test/logical/src/main/scala/TestIds.scala @@ -5,7 +5,6 @@ import org.apache.spark.sql.SparkSession import java.net.URI import java.net.http.{HttpClient, HttpRequest, HttpResponse} import scala.util.{Failure, Success, Try, Using} -import scala.util.control.Breaks._ object TestIds { From 4ed13e1cdc9db570c613d3336eced09e9633988a Mon Sep 17 00:00:00 2001 From: Michael Della Bitta Date: Sat, 4 Jan 2025 10:35:34 -0500 Subject: [PATCH 2/4] Added healthcheck --- Dockerfile | 2 ++ src/docker-healthcheck.ts | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 src/docker-healthcheck.ts diff --git a/Dockerfile b/Dockerfile index a55506d..4e08bff 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,7 +9,9 @@ COPY eslint.config.mjs /opt/thumbnail-api RUN chown -R node:node /opt/thumbnail-api USER node EXPOSE 3000 +HEALTHCHECK CMD ["node", "dist/src/docker-healthcheck.js"] RUN npm run clean \ && npm ci --ignore-scripts \ && npm run build + CMD ["npm", "run", "start"] diff --git a/src/docker-healthcheck.ts b/src/docker-healthcheck.ts new file mode 100644 index 0000000..67728e4 --- /dev/null +++ b/src/docker-healthcheck.ts @@ -0,0 +1,24 @@ +import http from "http"; + +const options = { + host: "0.0.0.0", + port: process.env.PORT ?? 3000, + path: "/health", + timeout: 2000, +}; + +const healthCheck = http.request(options, (res) => { + console.log(`HEALTHCHECK STATUS: ${String(res.statusCode)}`); + if (res.statusCode == 200) { + process.exit(0); + } else { + process.exit(1); + } +}); + +healthCheck.on("error", function (err: undefined) { + console.error("ERROR", err); + process.exit(1); +}); + +healthCheck.end(); From 9b6e11989c3b5f94b36203c1bcb818c1ef4e9b3d Mon Sep 17 00:00:00 2001 From: Michael Della Bitta Date: Sat, 4 Jan 2025 11:03:11 -0500 Subject: [PATCH 3/4] Making ellipsis happy with type. Hope I don't make sonar mad. --- src/docker-healthcheck.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/docker-healthcheck.ts b/src/docker-healthcheck.ts index 67728e4..e11621e 100644 --- a/src/docker-healthcheck.ts +++ b/src/docker-healthcheck.ts @@ -16,7 +16,7 @@ const healthCheck = http.request(options, (res) => { } }); -healthCheck.on("error", function (err: undefined) { +healthCheck.on("error", function (err: Error) { console.error("ERROR", err); process.exit(1); }); From e3d1a842f3128e327281e92f47e08d9fda01127f Mon Sep 17 00:00:00 2001 From: Michael Della Bitta Date: Sat, 4 Jan 2025 13:13:27 -0500 Subject: [PATCH 4/4] Switched to curl for healthcheck. Updated dependencies. Switched to slim vs alpine for docker base image. --- Dockerfile | 9 +- package-lock.json | 395 ++++++++++++++++++++++++-------------- package.json | 14 +- src/docker-healthcheck.ts | 24 --- 4 files changed, 265 insertions(+), 177 deletions(-) delete mode 100644 src/docker-healthcheck.ts diff --git a/Dockerfile b/Dockerfile index 4e08bff..ab91e94 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,7 @@ -FROM node:jod-alpine - +FROM node:22-slim +RUN apt update \ + && apt --no-install-recommends install -y curl \ + && apt clean WORKDIR /opt/thumbnail-api COPY src /opt/thumbnail-api/src COPY package.json /opt/thumbnail-api @@ -9,9 +11,8 @@ COPY eslint.config.mjs /opt/thumbnail-api RUN chown -R node:node /opt/thumbnail-api USER node EXPOSE 3000 -HEALTHCHECK CMD ["node", "dist/src/docker-healthcheck.js"] +HEALTHCHECK CMD ["curl", "-f", "http://localhost:3000/health"] RUN npm run clean \ && npm ci --ignore-scripts \ && npm run build - CMD ["npm", "run", "start"] diff --git a/package-lock.json b/package-lock.json index 418ffb4..8d8ec87 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,20 +8,20 @@ "name": "thumbnail-api", "version": "0.0.0", "dependencies": { - "@aws-sdk/client-s3": "^3.716.0", - "@aws-sdk/client-sqs": "^3.716.0", - "@aws-sdk/s3-request-presigner": "^3.716.0", - "@sentry/cli": "^2.39.1", + "@aws-sdk/client-s3": "^3.722.0", + "@aws-sdk/client-sqs": "^3.721.0", + "@aws-sdk/s3-request-presigner": "^3.722.0", + "@sentry/cli": "^2.40.0", "@sentry/node": "^8.47.0", "@sentry/profiling-node": "^8.47.0", - "@types/express": "^4.17.8", "express": "^4.21.2" }, "devDependencies": { "@eslint/js": "^9.17.0", "@types/eslint-config-prettier": "^6.11.3", + "@types/express": "^4.17.8", "@types/jest": "^29.5.14", - "@types/node": "^22.10.2", + "@types/node": "^22.10.5", "@typescript-eslint/eslint-plugin": "^8.18.1", "@typescript-eslint/parser": "^8.18.1", "aws-sdk-client-mock": "^4.1.0", @@ -35,7 +35,7 @@ "ts-jest": "^29.2.5", "ts-node": "^10.9.2", "typescript": "^5.7.2", - "typescript-eslint": "^8.18.1" + "typescript-eslint": "^8.19.0" } }, "node_modules/@ampproject/remapping": { @@ -266,19 +266,19 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.717.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.717.0.tgz", - "integrity": "sha512-jzaH8IskAXVnqlZ3/H/ROwrB2HCnq/atlN7Hi7FIfjWvMPf5nfcJKfzJ1MXFX0EQR5qO6X4TbK7rgi7Bjw9NjQ==", + "version": "3.722.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.722.0.tgz", + "integrity": "sha512-FttdkB39TKjqEITfZJcs6Ihh6alICsNEne0ouLvh8re+gAuTK96zWcfX22mP5ap1QEsATaOGRNsMnyfsDSM0zw==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.716.0", - "@aws-sdk/client-sts": "3.716.0", + "@aws-sdk/client-sso-oidc": "3.721.0", + "@aws-sdk/client-sts": "3.721.0", "@aws-sdk/core": "3.716.0", - "@aws-sdk/credential-provider-node": "3.716.0", - "@aws-sdk/middleware-bucket-endpoint": "3.714.0", + "@aws-sdk/credential-provider-node": "3.721.0", + "@aws-sdk/middleware-bucket-endpoint": "3.721.0", "@aws-sdk/middleware-expect-continue": "3.714.0", "@aws-sdk/middleware-flexible-checksums": "3.717.0", "@aws-sdk/middleware-host-header": "3.714.0", @@ -287,13 +287,13 @@ "@aws-sdk/middleware-recursion-detection": "3.714.0", "@aws-sdk/middleware-sdk-s3": "3.716.0", "@aws-sdk/middleware-ssec": "3.714.0", - "@aws-sdk/middleware-user-agent": "3.716.0", + "@aws-sdk/middleware-user-agent": "3.721.0", "@aws-sdk/region-config-resolver": "3.714.0", "@aws-sdk/signature-v4-multi-region": "3.716.0", "@aws-sdk/types": "3.714.0", "@aws-sdk/util-endpoints": "3.714.0", "@aws-sdk/util-user-agent-browser": "3.714.0", - "@aws-sdk/util-user-agent-node": "3.716.0", + "@aws-sdk/util-user-agent-node": "3.721.0", "@aws-sdk/xml-builder": "3.709.0", "@smithy/config-resolver": "^3.0.13", "@smithy/core": "^2.5.5", @@ -335,27 +335,27 @@ } }, "node_modules/@aws-sdk/client-sqs": { - "version": "3.716.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.716.0.tgz", - "integrity": "sha512-nDpnXvmo65dDGw+/c/c6e/ic9HUvJRayzs9Rc4DdatsnAZE71gcWoLUBupJ/IOkNwgoVau0TDs9SRlmsuDsm1w==", + "version": "3.721.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.721.0.tgz", + "integrity": "sha512-1zaYYPTmvCsB9lOOLwfZ4XNRGhdOyAcB/JZi/X6HV+3BTIuL08L05mcQkbu/p5SqnlsN2ergNpP6b0ngrs/lOg==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.716.0", - "@aws-sdk/client-sts": "3.716.0", + "@aws-sdk/client-sso-oidc": "3.721.0", + "@aws-sdk/client-sts": "3.721.0", "@aws-sdk/core": "3.716.0", - "@aws-sdk/credential-provider-node": "3.716.0", + "@aws-sdk/credential-provider-node": "3.721.0", "@aws-sdk/middleware-host-header": "3.714.0", "@aws-sdk/middleware-logger": "3.714.0", "@aws-sdk/middleware-recursion-detection": "3.714.0", "@aws-sdk/middleware-sdk-sqs": "3.716.0", - "@aws-sdk/middleware-user-agent": "3.716.0", + "@aws-sdk/middleware-user-agent": "3.721.0", "@aws-sdk/region-config-resolver": "3.714.0", "@aws-sdk/types": "3.714.0", "@aws-sdk/util-endpoints": "3.714.0", "@aws-sdk/util-user-agent-browser": "3.714.0", - "@aws-sdk/util-user-agent-node": "3.716.0", + "@aws-sdk/util-user-agent-node": "3.721.0", "@smithy/config-resolver": "^3.0.13", "@smithy/core": "^2.5.5", "@smithy/fetch-http-handler": "^4.1.2", @@ -389,9 +389,9 @@ } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.716.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.716.0.tgz", - "integrity": "sha512-5Nb0jJXce2TclbjG7WVPufwhgV1TRydz1QnsuBtKU0AdViEpr787YrZhPpGnNIM1Dx+R1H/tmAHZnOoohS6D8g==", + "version": "3.721.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.721.0.tgz", + "integrity": "sha512-UrYAF4ilpO2cZBFddQmbETfo0xKP3CEcantcMQTc0xPY3quHLZhYuBiRae+McWi6yZpH4ErnFZIWeKSJ2OQgqQ==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", @@ -400,12 +400,12 @@ "@aws-sdk/middleware-host-header": "3.714.0", "@aws-sdk/middleware-logger": "3.714.0", "@aws-sdk/middleware-recursion-detection": "3.714.0", - "@aws-sdk/middleware-user-agent": "3.716.0", + "@aws-sdk/middleware-user-agent": "3.721.0", "@aws-sdk/region-config-resolver": "3.714.0", "@aws-sdk/types": "3.714.0", "@aws-sdk/util-endpoints": "3.714.0", "@aws-sdk/util-user-agent-browser": "3.714.0", - "@aws-sdk/util-user-agent-node": "3.716.0", + "@aws-sdk/util-user-agent-node": "3.721.0", "@smithy/config-resolver": "^3.0.13", "@smithy/core": "^2.5.5", "@smithy/fetch-http-handler": "^4.1.2", @@ -438,24 +438,24 @@ } }, "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.716.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.716.0.tgz", - "integrity": "sha512-lA4IB9FzR2KjH7EVCo+mHGFKqdViVyeBQEIX9oVratL/l7P0bMS1fMwgfHOc3ACazqNxBxDES7x08ZCp32y6Lw==", + "version": "3.721.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.721.0.tgz", + "integrity": "sha512-jwsgdUEbNJqs1O0AQtf9M6SI7hFIjxH+IKeKCMca0xVt+Tr1UqLr/qMK/6W8LoMtRFnE0lpBSHW6hvmLp2OCoQ==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.716.0", - "@aws-sdk/credential-provider-node": "3.716.0", + "@aws-sdk/credential-provider-node": "3.721.0", "@aws-sdk/middleware-host-header": "3.714.0", "@aws-sdk/middleware-logger": "3.714.0", "@aws-sdk/middleware-recursion-detection": "3.714.0", - "@aws-sdk/middleware-user-agent": "3.716.0", + "@aws-sdk/middleware-user-agent": "3.721.0", "@aws-sdk/region-config-resolver": "3.714.0", "@aws-sdk/types": "3.714.0", "@aws-sdk/util-endpoints": "3.714.0", "@aws-sdk/util-user-agent-browser": "3.714.0", - "@aws-sdk/util-user-agent-node": "3.716.0", + "@aws-sdk/util-user-agent-node": "3.721.0", "@smithy/config-resolver": "^3.0.13", "@smithy/core": "^2.5.5", "@smithy/fetch-http-handler": "^4.1.2", @@ -487,29 +487,29 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.716.0" + "@aws-sdk/client-sts": "^3.721.0" } }, "node_modules/@aws-sdk/client-sts": { - "version": "3.716.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.716.0.tgz", - "integrity": "sha512-i4SVNsrdXudp8T4bkm7Fi3YWlRnvXCSwvNDqf6nLqSJxqr4CN3VlBELueDyjBK7TAt453/qSif+eNx+bHmwo4Q==", + "version": "3.721.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.721.0.tgz", + "integrity": "sha512-1Pv8F02hQFmPZs7WtGfQNlnInbG1lLzyngJc/MlZ3Ld2fIoWjaWp7bJWgYAjnzHNEuDtCabWJvIfePdRqsbYoA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.716.0", + "@aws-sdk/client-sso-oidc": "3.721.0", "@aws-sdk/core": "3.716.0", - "@aws-sdk/credential-provider-node": "3.716.0", + "@aws-sdk/credential-provider-node": "3.721.0", "@aws-sdk/middleware-host-header": "3.714.0", "@aws-sdk/middleware-logger": "3.714.0", "@aws-sdk/middleware-recursion-detection": "3.714.0", - "@aws-sdk/middleware-user-agent": "3.716.0", + "@aws-sdk/middleware-user-agent": "3.721.0", "@aws-sdk/region-config-resolver": "3.714.0", "@aws-sdk/types": "3.714.0", "@aws-sdk/util-endpoints": "3.714.0", "@aws-sdk/util-user-agent-browser": "3.714.0", - "@aws-sdk/util-user-agent-node": "3.716.0", + "@aws-sdk/util-user-agent-node": "3.721.0", "@smithy/config-resolver": "^3.0.13", "@smithy/core": "^2.5.5", "@smithy/fetch-http-handler": "^4.1.2", @@ -601,16 +601,16 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.716.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.716.0.tgz", - "integrity": "sha512-P37We2GtZvdROxiwP0zrpEL81/HuYK1qlYxp5VCj3uV+G4mG8UQN2gMIU/baYrpOQqa0h81RfyQGRFUjVaDVqw==", + "version": "3.721.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.721.0.tgz", + "integrity": "sha512-8J/c2rI+4ZoduBCnPurfdblqs2DyRvL9ztqzzOWWEhLccoYZzYeAMwBapEAsiVsD1iNrIGY7LRDC4TsVmJBf6Q==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.716.0", "@aws-sdk/credential-provider-env": "3.716.0", "@aws-sdk/credential-provider-http": "3.716.0", "@aws-sdk/credential-provider-process": "3.716.0", - "@aws-sdk/credential-provider-sso": "3.716.0", + "@aws-sdk/credential-provider-sso": "3.721.0", "@aws-sdk/credential-provider-web-identity": "3.716.0", "@aws-sdk/types": "3.714.0", "@smithy/credential-provider-imds": "^3.2.8", @@ -623,20 +623,20 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.716.0" + "@aws-sdk/client-sts": "^3.721.0" } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.716.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.716.0.tgz", - "integrity": "sha512-FGQPK2uKfS53dVvoskN/s/t6m0Po24BGd1PzJdzHBFCOjxbZLM6+8mDMXeyi2hCLVVQOUcuW41kOgmJ0+zMbww==", + "version": "3.721.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.721.0.tgz", + "integrity": "sha512-D6xodzdMjVhF9xRhy9gNf0gqP0Dek9fQ6BDZzqO/i54d7CjWHVZTADcVcxjLQq6nyUNf0QPf8UXLaqi+w25GGQ==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/credential-provider-env": "3.716.0", "@aws-sdk/credential-provider-http": "3.716.0", - "@aws-sdk/credential-provider-ini": "3.716.0", + "@aws-sdk/credential-provider-ini": "3.721.0", "@aws-sdk/credential-provider-process": "3.716.0", - "@aws-sdk/credential-provider-sso": "3.716.0", + "@aws-sdk/credential-provider-sso": "3.721.0", "@aws-sdk/credential-provider-web-identity": "3.716.0", "@aws-sdk/types": "3.714.0", "@smithy/credential-provider-imds": "^3.2.8", @@ -667,14 +667,14 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.716.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.716.0.tgz", - "integrity": "sha512-J2IA3WuCpRGGoZm6VHZVFCnrxXP+41iUWb9Ct/1spljegTa1XjiaZ5Jf3+Ubj7WKiyvP9/dgz1L0bu2bYEjliw==", + "version": "3.721.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.721.0.tgz", + "integrity": "sha512-v7npnYqfuY1vdcb0/F4Mcz+mcFyZaYry9qXhSRCPIbLPe2PRV4E4HXIaPKmir8PhuRLEGs0QJWhvIWr7u6holQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.716.0", + "@aws-sdk/client-sso": "3.721.0", "@aws-sdk/core": "3.716.0", - "@aws-sdk/token-providers": "3.714.0", + "@aws-sdk/token-providers": "3.721.0", "@aws-sdk/types": "3.714.0", "@smithy/property-provider": "^3.1.11", "@smithy/shared-ini-file-loader": "^3.1.12", @@ -705,9 +705,9 @@ } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.714.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.714.0.tgz", - "integrity": "sha512-I/xSOskiseJJ8i183Z522BgqbgYzLKP7jGcg2Qeib/IWoG2IP+9DH8pwqagKaPAycyswtnoKBJiiFXY43n0CkA==", + "version": "3.721.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.721.0.tgz", + "integrity": "sha512-5UyoDoX3z3UhmetoqqqZulq2uF55Jyj9lUKAJWgTxVhDEG5TijTQS40LP9DqwRl0hJkoUUZKAwE0hwnUsiGXAg==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.714.0", @@ -876,9 +876,9 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.716.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.716.0.tgz", - "integrity": "sha512-FpAtT6nNKrYdkDZndutEraiRMf+TgDzAGvniqRtZ/YTPA+gIsWrsn+TwMKINR81lFC3nQfb9deS5CFtxd021Ew==", + "version": "3.721.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.721.0.tgz", + "integrity": "sha512-Z3Vksb970ArsfLlARW4KVpqO+pQ1cvvGTrTQPxWDsmOzg1kU92t9oWXGW+1M/x6bHbMQlI/EulQ/D8ZE/Pu46Q==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.716.0", @@ -911,9 +911,9 @@ } }, "node_modules/@aws-sdk/s3-request-presigner": { - "version": "3.717.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.717.0.tgz", - "integrity": "sha512-gpT310jVQiqVxE6Nh4yEABbYNVOfUC/DuMtp5/JAb+cz1nNLfA45KgaJ73UCPbimVszUH0Cb7RouC/zv1uB84w==", + "version": "3.722.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.722.0.tgz", + "integrity": "sha512-dh4yYywf3tHCUwIU8eAQdoFXsjWcssoQXTKoqaqwqRh4WxwuaiRiw6dmD0Q5m6sPsLiHrTPemmDXsF4mLdjmsQ==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/signature-v4-multi-region": "3.716.0", @@ -947,9 +947,9 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.714.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.714.0.tgz", - "integrity": "sha512-vKN064aLE3kl+Zl16Ony3jltHnMddMBT7JRkP1L+lLywhA0PcAKxpdvComul/sTBWnbnwLnaS5NsDUhcWySH8A==", + "version": "3.721.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.721.0.tgz", + "integrity": "sha512-cIZmKdLeEWUzPR+2lA+JcZHPvaFf/Ih+s3LXBa/uQwRFdK+o7WfGRf7Oqe6yLRekO2jJJl4LBJXxDOH++M9+ag==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.714.0", @@ -962,7 +962,7 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sso-oidc": "^3.714.0" + "@aws-sdk/client-sso-oidc": "^3.721.0" } }, "node_modules/@aws-sdk/types": { @@ -1045,12 +1045,12 @@ } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.716.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.716.0.tgz", - "integrity": "sha512-3PqaXmQbxrtHKAsPCdp7kn5FrQktj8j3YyuNsqFZ8rWZeEQ88GWlsvE61PTsr2peYCKzpFqYVddef2x1axHU0w==", + "version": "3.721.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.721.0.tgz", + "integrity": "sha512-5VsNdC3zQnjrt7KNEeFHWJl3FIamgIS0puG18BMvPsdzcKWEbWDih+yd1kMWrcpAu1Riez9co/gB9y99pBghDA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.716.0", + "@aws-sdk/middleware-user-agent": "3.721.0", "@aws-sdk/types": "3.714.0", "@smithy/node-config-provider": "^3.1.12", "@smithy/types": "^3.7.2", @@ -2988,9 +2988,9 @@ } }, "node_modules/@sentry/cli": { - "version": "2.39.1", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.39.1.tgz", - "integrity": "sha512-JIb3e9vh0+OmQ0KxmexMXg9oZsR/G7HMwxt5BUIKAXZ9m17Xll4ETXTRnRUBT3sf7EpNGAmlQk1xEmVN9pYZYQ==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.40.0.tgz", + "integrity": "sha512-yo+ZfrrpVyu/2Q9r4XI84VeC6xTNzTharSJB2D0BNkreL+c16I1ykG1uc/GmmFnYVBq+HHAaYqXVfSUV14IdHw==", "hasInstallScript": true, "license": "BSD-3-Clause", "dependencies": { @@ -3007,19 +3007,19 @@ "node": ">= 10" }, "optionalDependencies": { - "@sentry/cli-darwin": "2.39.1", - "@sentry/cli-linux-arm": "2.39.1", - "@sentry/cli-linux-arm64": "2.39.1", - "@sentry/cli-linux-i686": "2.39.1", - "@sentry/cli-linux-x64": "2.39.1", - "@sentry/cli-win32-i686": "2.39.1", - "@sentry/cli-win32-x64": "2.39.1" + "@sentry/cli-darwin": "2.40.0", + "@sentry/cli-linux-arm": "2.40.0", + "@sentry/cli-linux-arm64": "2.40.0", + "@sentry/cli-linux-i686": "2.40.0", + "@sentry/cli-linux-x64": "2.40.0", + "@sentry/cli-win32-i686": "2.40.0", + "@sentry/cli-win32-x64": "2.40.0" } }, "node_modules/@sentry/cli-darwin": { - "version": "2.39.1", - "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.39.1.tgz", - "integrity": "sha512-kiNGNSAkg46LNGatfNH5tfsmI/kCAaPA62KQuFZloZiemTNzhy9/6NJP8HZ/GxGs8GDMxic6wNrV9CkVEgFLJQ==", + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.40.0.tgz", + "integrity": "sha512-GmPGvPU9tjM1Ps/pkUGQa7rImveo4delb2Dc5l8129i1MyD2ugJ5zjeNhIdBHkaObpuude9rUS7sHC4HTU2Wqw==", "license": "BSD-3-Clause", "optional": true, "os": [ @@ -3029,6 +3029,108 @@ "node": ">=10" } }, + "node_modules/@sentry/cli-linux-arm": { + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.40.0.tgz", + "integrity": "sha512-LUdwh3shYXZThkBvmKFUkQvmsCIQu76ZVqU7NXcEWHRF9gITijnSyHKCBPCbcGkb1SqQ92BW/1cJq84Dy0/DRw==", + "cpu": [ + "arm" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "linux", + "freebsd" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-linux-arm64": { + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.40.0.tgz", + "integrity": "sha512-b8gDORhkhP/g1CTYVKzBlbYlmC3BqkgEzAXP8ViFxX1NNS7dK9Hr84cVnDGxhSIfCP8TW1d5V3AGeHwQr5EwEg==", + "cpu": [ + "arm64" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "linux", + "freebsd" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-linux-i686": { + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.40.0.tgz", + "integrity": "sha512-sZo3QykQRpMkrz0Eb07ViyK++C6Iir1j7Rpsj/97y5WDncR8TrpGTn6ceuuVRt4clA09/ZIvwuS7amfeKN6jQw==", + "cpu": [ + "x86", + "ia32" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "linux", + "freebsd" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-linux-x64": { + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.40.0.tgz", + "integrity": "sha512-ctpBFuyk2fP97FkxWTD9olI1BM1cy+rUIfnUqmrjXneTaUi3RFIFBB4koYhh1UT6OCWIRvChRIq40Rd9R3Pw8A==", + "cpu": [ + "x64" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "linux", + "freebsd" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-win32-i686": { + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.40.0.tgz", + "integrity": "sha512-4SYD40zJS7hVbFzAwXvXcVIoc7xsWa6L1RW1SQlt+Woh5MTPk7FMMSGft8021OSGTljiuqQzx4ecnXMO0K/gOw==", + "cpu": [ + "x86", + "ia32" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-win32-x64": { + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.40.0.tgz", + "integrity": "sha512-QEW2Ra4Wsr4y6AwcxOk2hL0zMlCK+adTSTaptTMmcm52el8XjdMwsNo7d/416HUYNcND0YZGih7D+KERepyQSw==", + "cpu": [ + "x64" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, "node_modules/@sentry/cli/node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -3970,6 +4072,7 @@ "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, "license": "MIT", "dependencies": { "@types/connect": "*", @@ -4003,6 +4106,7 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/body-parser": "*", @@ -4015,6 +4119,7 @@ "version": "4.19.6", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -4037,6 +4142,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true, "license": "MIT" }, "node_modules/@types/istanbul-lib-coverage": { @@ -4088,6 +4194,7 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true, "license": "MIT" }, "node_modules/@types/mysql": { @@ -4100,9 +4207,9 @@ } }, "node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "version": "22.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.5.tgz", + "integrity": "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==", "license": "MIT", "dependencies": { "undici-types": "~6.20.0" @@ -4132,18 +4239,21 @@ "version": "6.9.17", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.17.tgz", "integrity": "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==", + "dev": true, "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, "license": "MIT" }, "node_modules/@types/send": { "version": "0.17.4", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, "license": "MIT", "dependencies": { "@types/mime": "^1", @@ -4154,6 +4264,7 @@ "version": "1.15.7", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, "license": "MIT", "dependencies": { "@types/http-errors": "*", @@ -4218,17 +4329,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.1.tgz", - "integrity": "sha512-Ncvsq5CT3Gvh+uJG0Lwlho6suwDfUXH0HztslDf5I+F2wAFAZMRwYLEorumpKLzmO2suAXZ/td1tBg4NZIi9CQ==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.19.0.tgz", + "integrity": "sha512-NggSaEZCdSrFddbctrVjkVZvFC6KGfKfNK0CU7mNK/iKHGKbzT4Wmgm08dKpcZECBu9f5FypndoMyRHkdqfT1Q==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.18.1", - "@typescript-eslint/type-utils": "8.18.1", - "@typescript-eslint/utils": "8.18.1", - "@typescript-eslint/visitor-keys": "8.18.1", + "@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", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -4248,16 +4359,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.18.1.tgz", - "integrity": "sha512-rBnTWHCdbYM2lh7hjyXqxk70wvon3p2FyaniZuey5TrcGBpfhVp0OxOa6gxr9Q9YhZFKyfbEnxc24ZnVbbUkCA==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.19.0.tgz", + "integrity": "sha512-6M8taKyOETY1TKHp0x8ndycipTVgmp4xtg5QpEZzXxDhNvvHOJi5rLRkLr8SK3jTgD5l4fTlvBiRdfsuWydxBw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.18.1", - "@typescript-eslint/types": "8.18.1", - "@typescript-eslint/typescript-estree": "8.18.1", - "@typescript-eslint/visitor-keys": "8.18.1", + "@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", "debug": "^4.3.4" }, "engines": { @@ -4273,14 +4384,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.1.tgz", - "integrity": "sha512-HxfHo2b090M5s2+/9Z3gkBhI6xBH8OJCFjH9MhQ+nnoZqxU3wNxkLT+VWXWSFWc3UF3Z+CfPAyqdCTdoXtDPCQ==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.19.0.tgz", + "integrity": "sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.18.1", - "@typescript-eslint/visitor-keys": "8.18.1" + "@typescript-eslint/types": "8.19.0", + "@typescript-eslint/visitor-keys": "8.19.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4291,14 +4402,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.18.1.tgz", - "integrity": "sha512-jAhTdK/Qx2NJPNOTxXpMwlOiSymtR2j283TtPqXkKBdH8OAMmhiUfP0kJjc/qSE51Xrq02Gj9NY7MwK+UxVwHQ==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.19.0.tgz", + "integrity": "sha512-TZs0I0OSbd5Aza4qAMpp1cdCYVnER94IziudE3JU328YUHgWu9gwiwhag+fuLeJ2LkWLXI+F/182TbG+JaBdTg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.18.1", - "@typescript-eslint/utils": "8.18.1", + "@typescript-eslint/typescript-estree": "8.19.0", + "@typescript-eslint/utils": "8.19.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -4315,9 +4426,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.1.tgz", - "integrity": "sha512-7uoAUsCj66qdNQNpH2G8MyTFlgerum8ubf21s3TSM3XmKXuIn+H2Sifh/ES2nPOPiYSRJWAk0fDkW0APBWcpfw==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.19.0.tgz", + "integrity": "sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA==", "dev": true, "license": "MIT", "engines": { @@ -4329,14 +4440,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.1.tgz", - "integrity": "sha512-z8U21WI5txzl2XYOW7i9hJhxoKKNG1kcU4RzyNvKrdZDmbjkmLBo8bgeiOJmA06kizLI76/CCBAAGlTlEeUfyg==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.19.0.tgz", + "integrity": "sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.18.1", - "@typescript-eslint/visitor-keys": "8.18.1", + "@typescript-eslint/types": "8.19.0", + "@typescript-eslint/visitor-keys": "8.19.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -4356,16 +4467,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.1.tgz", - "integrity": "sha512-8vikiIj2ebrC4WRdcAdDcmnu9Q/MXXwg+STf40BVfT8exDqBCUPdypvzcUPxEqRGKg9ALagZ0UWcYCtn+4W2iQ==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.19.0.tgz", + "integrity": "sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.18.1", - "@typescript-eslint/types": "8.18.1", - "@typescript-eslint/typescript-estree": "8.18.1" + "@typescript-eslint/scope-manager": "8.19.0", + "@typescript-eslint/types": "8.19.0", + "@typescript-eslint/typescript-estree": "8.19.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4380,13 +4491,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.1.tgz", - "integrity": "sha512-Vj0WLm5/ZsD013YeUKn+K0y8p1M0jPpxOkKdbD1wB0ns53a5piVY02zjf072TblEweAbcYiFiPoSMF3kp+VhhQ==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.19.0.tgz", + "integrity": "sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.18.1", + "@typescript-eslint/types": "8.19.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -5916,9 +6027,9 @@ } }, "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", + "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", "dev": true, "license": "ISC", "dependencies": { @@ -9144,15 +9255,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.18.1.tgz", - "integrity": "sha512-Mlaw6yxuaDEPQvb/2Qwu3/TfgeBHy9iTJ3mTwe7OvpPmF6KPQjVOfGyEJpPv6Ez2C34OODChhXrzYw/9phI0MQ==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.19.0.tgz", + "integrity": "sha512-Ni8sUkVWYK4KAcTtPjQ/UTiRk6jcsuDhPpxULapUDi8A/l8TSBk+t1GtJA1RsCzIJg0q6+J7bf35AwQigENWRQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.18.1", - "@typescript-eslint/parser": "8.18.1", - "@typescript-eslint/utils": "8.18.1" + "@typescript-eslint/eslint-plugin": "8.19.0", + "@typescript-eslint/parser": "8.19.0", + "@typescript-eslint/utils": "8.19.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" diff --git a/package.json b/package.json index b492d16..124066c 100644 --- a/package.json +++ b/package.json @@ -13,20 +13,20 @@ "sentry:sourcemaps": "sentry-cli sourcemaps inject --org dpla --project thumbnail-api ./dist && sentry-cli sourcemaps upload --org dpla --project thumbnail-api ./dist" }, "dependencies": { - "@aws-sdk/client-s3": "^3.716.0", - "@aws-sdk/client-sqs": "^3.716.0", - "@aws-sdk/s3-request-presigner": "^3.716.0", - "@sentry/cli": "^2.39.1", + "@aws-sdk/client-s3": "^3.722.0", + "@aws-sdk/client-sqs": "^3.721.0", + "@aws-sdk/s3-request-presigner": "^3.722.0", + "@sentry/cli": "^2.40.0", "@sentry/node": "^8.47.0", "@sentry/profiling-node": "^8.47.0", - "@types/express": "^4.17.8", "express": "^4.21.2" }, "devDependencies": { + "@types/express": "^4.17.8", "@eslint/js": "^9.17.0", "@types/eslint-config-prettier": "^6.11.3", "@types/jest": "^29.5.14", - "@types/node": "^22.10.2", + "@types/node": "^22.10.5", "@typescript-eslint/eslint-plugin": "^8.18.1", "@typescript-eslint/parser": "^8.18.1", "aws-sdk-client-mock": "^4.1.0", @@ -40,6 +40,6 @@ "ts-jest": "^29.2.5", "ts-node": "^10.9.2", "typescript": "^5.7.2", - "typescript-eslint": "^8.18.1" + "typescript-eslint": "^8.19.0" } } diff --git a/src/docker-healthcheck.ts b/src/docker-healthcheck.ts deleted file mode 100644 index e11621e..0000000 --- a/src/docker-healthcheck.ts +++ /dev/null @@ -1,24 +0,0 @@ -import http from "http"; - -const options = { - host: "0.0.0.0", - port: process.env.PORT ?? 3000, - path: "/health", - timeout: 2000, -}; - -const healthCheck = http.request(options, (res) => { - console.log(`HEALTHCHECK STATUS: ${String(res.statusCode)}`); - if (res.statusCode == 200) { - process.exit(0); - } else { - process.exit(1); - } -}); - -healthCheck.on("error", function (err: Error) { - console.error("ERROR", err); - process.exit(1); -}); - -healthCheck.end();