diff --git a/docker-compose.yml b/docker-compose.yml index 31e2f5fb4..dc1c1defd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -28,7 +28,7 @@ services: POSTGRES_PASSWORD: odk POSTGRES_DB: odk mail: - image: "registry.gitlab.com/egos-tech/smtp:1.2.2" + image: "registry.gitlab.com/egos-tech/smtp:1.2.8" volumes: - ./files/mail/rsa.private:/etc/exim4/dkim.key.temp:ro environment: @@ -150,7 +150,7 @@ services: - SUPPORT_EMAIL=${SYSADMIN_EMAIL} - HTTPS_PORT=${HTTPS_PORT:-443} enketo_redis_main: - image: redis:8.6.2 + image: redis:8.6.4 volumes: - ./files/enketo/redis-enketo-main.conf:/usr/local/etc/redis/redis.conf:ro - enketo_redis_main:/data @@ -159,7 +159,7 @@ services: - /usr/local/etc/redis/redis.conf restart: always enketo_redis_cache: - image: redis:8.6.2 + image: redis:8.6.4 volumes: - ./files/enketo/redis-enketo-cache.conf:/usr/local/etc/redis/redis.conf:ro - enketo_redis_cache:/data diff --git a/nginx.dockerfile b/nginx.dockerfile index eed940237..ee8437224 100644 --- a/nginx.dockerfile +++ b/nginx.dockerfile @@ -1,4 +1,4 @@ -FROM node:24.14.1-slim AS intermediate +FROM node:24.16.0-slim AS intermediate ARG FRONTEND_BUILD_MODE ARG FRONTEND_VERSION @@ -24,7 +24,7 @@ RUN files/prebuild/build-frontend.sh # * https://hub.docker.com/r/jonasal/nginx-certbot/tags # 2. Look for upstream changes to redirector.conf # 3. Confirm setup-odk.sh strips out HTTP-01 ACME challenge location. -FROM jonasal/nginx-certbot:6.1.0-nginx1.29.7 +FROM jonasal/nginx-certbot:6.2.0-nginx1.31.2 EXPOSE 80 EXPOSE 443 diff --git a/postgres14.dockerfile b/postgres14.dockerfile index a6f5bc71d..8af86326f 100644 --- a/postgres14.dockerfile +++ b/postgres14.dockerfile @@ -1,4 +1,4 @@ -FROM postgres:14.22 +FROM postgres:14.23 COPY files/postgres14/start-postgres.sh /usr/local/bin/ diff --git a/secrets.dockerfile b/secrets.dockerfile index 2c8a623e1..a2217ff2c 100644 --- a/secrets.dockerfile +++ b/secrets.dockerfile @@ -1,3 +1,3 @@ -FROM node:24.14.1-slim +FROM node:24.16.0-slim COPY files/enketo/generate-secrets.sh ./ diff --git a/service.dockerfile b/service.dockerfile index c7e8bf8f1..b947d1d72 100644 --- a/service.dockerfile +++ b/service.dockerfile @@ -1,4 +1,4 @@ -ARG node_version=24.14.1 +ARG node_version=24.16.0 diff --git a/test/nginx/mock-http-service.dockerfile b/test/nginx/mock-http-service.dockerfile index e28d92655..fdbe340a6 100644 --- a/test/nginx/mock-http-service.dockerfile +++ b/test/nginx/mock-http-service.dockerfile @@ -1,4 +1,4 @@ -FROM node:24.14.1-slim +FROM node:24.16.0-slim WORKDIR /workspace diff --git a/test/nginx/mock-sentry.dockerfile b/test/nginx/mock-sentry.dockerfile index 8e6023cd5..a4a122eba 100644 --- a/test/nginx/mock-sentry.dockerfile +++ b/test/nginx/mock-sentry.dockerfile @@ -1,4 +1,4 @@ -FROM node:24.14.1-slim +FROM node:24.16.0-slim RUN apt-get update \ && apt-get install -y --no-install-recommends \ diff --git a/test/package-lock.json b/test/package-lock.json index 39b27c148..a5d3b6886 100644 --- a/test/package-lock.json +++ b/test/package-lock.json @@ -6,14 +6,14 @@ "": { "name": "odk-central-tests", "dependencies": { - "@playwright/test": "^1.58.2", - "chai": "^5.2.0", - "deep-equal-in-any-order": "^2.1.0", + "@playwright/test": "^1.60.0", + "chai": "^5.3.3", + "deep-equal-in-any-order": "^2.2.0", "eslint": "^9.28.0", "eslint-plugin-no-only-tests": "^3.3.0", "express": "^4.22.2", - "mocha": "^11.7.5", - "yaml": "^2.8.2" + "mocha": "^11.7.6", + "yaml": "^2.9.0" } }, "node_modules/@eslint-community/eslint-utils": { @@ -234,12 +234,12 @@ } }, "node_modules/@playwright/test": { - "version": "1.58.2", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.58.2.tgz", - "integrity": "sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==", + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.60.0.tgz", + "integrity": "sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==", "license": "Apache-2.0", "dependencies": { - "playwright": "1.58.2" + "playwright": "1.60.0" }, "bin": { "playwright": "cli.js" @@ -396,9 +396,9 @@ "license": "MIT" }, "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", + "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -469,9 +469,10 @@ } }, "node_modules/chai": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", - "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", + "license": "MIT", "dependencies": { "assertion-error": "^2.0.1", "check-error": "^2.1.1", @@ -480,7 +481,7 @@ "pathval": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/chalk": { @@ -700,13 +701,12 @@ } }, "node_modules/deep-equal-in-any-order": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/deep-equal-in-any-order/-/deep-equal-in-any-order-2.1.0.tgz", - "integrity": "sha512-9FklcFjcehm1yBWiOYtmazJOiMbT+v81Kq6nThIuXbWLWIZMX3ZI+QoLf7wCi0T8XzTAXf6XqEdEyVrjZkhbGA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/deep-equal-in-any-order/-/deep-equal-in-any-order-2.2.0.tgz", + "integrity": "sha512-lUYf3Oz/HrPcNmKe+S+QSdY5/hzKleftcFBWLwbHNZ5007RUKgN0asWlAHuQGvT9djYd9PYQFiu0TyNS+h3j/g==", "license": "MIT", "dependencies": { - "lodash.mapvalues": "^4.6.0", - "sort-any": "^2.0.0" + "sort-any": "^4.0.0" } }, "node_modules/deep-is": { @@ -1294,9 +1294,9 @@ } }, "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", + "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -1537,9 +1537,19 @@ } }, "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz", + "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -1597,18 +1607,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", - "license": "MIT" - }, - "node_modules/lodash.mapvalues": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", - "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==", - "license": "MIT" - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -1732,9 +1730,9 @@ } }, "node_modules/mocha": { - "version": "11.7.5", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.5.tgz", - "integrity": "sha512-mTT6RgopEYABzXWFx+GcJ+ZQ32kp4fMf0xvpZIIfSq9Z8lC/++MtcCnQ9t5FP2veYEP95FIYSvW+U9fV4xrlig==", + "version": "11.7.6", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.6.tgz", + "integrity": "sha512-nS9xOGbw2I3cjCpxwZAEJ9xK9lmJ08vEkQvLtz4du9ZrF9UrjRpeJGiIgl2Z+Qs++pmB4ecDe48Fwsh+j+j7xA==", "license": "MIT", "dependencies": { "browser-stdout": "^1.3.1", @@ -1768,9 +1766,9 @@ } }, "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", + "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -1972,12 +1970,12 @@ "license": "ISC" }, "node_modules/playwright": { - "version": "1.58.2", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.58.2.tgz", - "integrity": "sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==", + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.60.0.tgz", + "integrity": "sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==", "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.58.2" + "playwright-core": "1.60.0" }, "bin": { "playwright": "cli.js" @@ -1990,9 +1988,9 @@ } }, "node_modules/playwright-core": { - "version": "1.58.2", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.2.tgz", - "integrity": "sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==", + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.60.0.tgz", + "integrity": "sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==", "license": "Apache-2.0", "bin": { "playwright-core": "cli.js" @@ -2307,12 +2305,12 @@ } }, "node_modules/sort-any": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-any/-/sort-any-2.0.0.tgz", - "integrity": "sha512-T9JoiDewQEmWcnmPn/s9h/PH9t3d/LSWi0RgVmXSuDYeZXTZOZ1/wrK2PHaptuR1VXe3clLLt0pD6sgVOwjNEA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/sort-any/-/sort-any-4.0.7.tgz", + "integrity": "sha512-UuZVEXClHW+bVa6ZBQ4biTWmLXMP7y6/jv5arfA0rKk7ZExy+5Zm19uekIqqDx6ZuvUMu7z5Ba9FfBi6FlGXPQ==", "license": "MIT", - "dependencies": { - "lodash": "^4.17.21" + "engines": { + "node": ">=12" } }, "node_modules/statuses": { @@ -2636,9 +2634,9 @@ } }, "node_modules/yaml": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", - "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", + "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", "license": "ISC", "bin": { "yaml": "bin.mjs" diff --git a/test/package.json b/test/package.json index d5b3414e6..f372bc0ae 100644 --- a/test/package.json +++ b/test/package.json @@ -10,16 +10,16 @@ "test": "npm run lint && npm run test:github-actions && npm run test:nginx && npm run test:service" }, "dependencies": { - "@playwright/test": "^1.58.2", - "chai": "^5.2.0", - "deep-equal-in-any-order": "^2.1.0", + "@playwright/test": "^1.60.0", + "chai": "^5.3.3", + "deep-equal-in-any-order": "^2.2.0", "eslint": "^9.28.0", "eslint-plugin-no-only-tests": "^3.3.0", "express": "^4.22.2", - "mocha": "^11.7.5", - "yaml": "^2.8.2" + "mocha": "^11.7.6", + "yaml": "^2.9.0" }, "volta": { - "node": "24.14.1" + "node": "24.16.0" } }