diff --git a/.docker-hub/print/Dockerfile b/.docker-hub/print/Dockerfile index 9cdfc0704f..32fcc3ed84 100644 --- a/.docker-hub/print/Dockerfile +++ b/.docker-hub/print/Dockerfile @@ -1,5 +1,5 @@ # build stage -FROM node:24.12.0 AS build-stage +FROM node:24.13.0 AS build-stage ARG SENTRY_AUTH_TOKEN ARG SENTRY_ORG ARG SENTRY_PRINT_PROJECT @@ -22,7 +22,7 @@ COPY print . RUN npm run build # production stage -FROM node:24.12.0 AS production-stage +FROM node:24.13.0 AS production-stage WORKDIR /app COPY --from=build-stage /app/.output ./.output diff --git a/.github/workflows/check-dependencies.yml b/.github/workflows/check-dependencies.yml index fd52d56946..b5ad26ebe3 100644 --- a/.github/workflows/check-dependencies.yml +++ b/.github/workflows/check-dependencies.yml @@ -26,7 +26,7 @@ jobs: - uses: shivammathur/setup-php@v2 with: - php-version: '8.4.14' + php-version: '8.5.2' tools: composer:2.9.0 coverage: xdebug diff --git a/.github/workflows/continuous-integration-optional.yml b/.github/workflows/continuous-integration-optional.yml index 7920e20a0f..a30a831057 100644 --- a/.github/workflows/continuous-integration-optional.yml +++ b/.github/workflows/continuous-integration-optional.yml @@ -21,7 +21,7 @@ jobs: - uses: shivammathur/setup-php@v2 with: - php-version: '8.4.14' + php-version: '8.5.2' tools: composer:2.9.0 coverage: xdebug @@ -36,7 +36,7 @@ jobs: - uses: shivammathur/setup-php@v2 with: - php-version: '8.4.14' + php-version: '8.5.2' tools: composer:2.9.0 coverage: xdebug @@ -66,7 +66,7 @@ jobs: - uses: shivammathur/setup-php@v2 with: - php-version: '8.4.14' + php-version: '8.5.2' tools: composer:2.9.0 coverage: xdebug @@ -114,7 +114,7 @@ jobs: - uses: shivammathur/setup-php@v2 with: - php-version: '8.4.14' + php-version: '8.5.2' tools: composer:2.9.0 coverage: xdebug diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 0894e6e66d..91cd1e46c1 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -91,7 +91,7 @@ jobs: - uses: shivammathur/setup-php@v2 with: - php-version: '8.4.14' + php-version: '8.5.2' tools: composer:2.9.0 coverage: none @@ -124,7 +124,7 @@ jobs: - uses: actions/setup-node@v6 with: - node-version: '24.12.0' + node-version: '24.13.0' - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5 with: @@ -153,7 +153,7 @@ jobs: - uses: actions/setup-node@v6 with: - node-version: '24.12.0' + node-version: '24.13.0' - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5 with: @@ -182,7 +182,7 @@ jobs: - uses: actions/setup-node@v6 with: - node-version: '24.12.0' + node-version: '24.13.0' - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5 with: @@ -214,7 +214,7 @@ jobs: - uses: actions/setup-node@v6 with: - node-version: '24.12.0' + node-version: '24.13.0' - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5 with: @@ -264,7 +264,7 @@ jobs: - uses: shivammathur/setup-php@v2 with: - php-version: '8.4.14' + php-version: '8.5.2' extensions: intl-73.1 tools: composer:2.9.0 coverage: pcov @@ -353,7 +353,7 @@ jobs: - uses: actions/setup-node@v6 with: - node-version: '24.12.0' + node-version: '24.13.0' - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5 with: @@ -396,7 +396,7 @@ jobs: - uses: actions/setup-node@v6 with: - node-version: '24.12.0' + node-version: '24.13.0' - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5 with: @@ -435,7 +435,7 @@ jobs: - uses: actions/setup-node@v6 with: - node-version: '24.12.0' + node-version: '24.13.0' - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5 with: diff --git a/.helm/ecamp3/files/db-backup-restore-image/Dockerfile b/.helm/ecamp3/files/db-backup-restore-image/Dockerfile index ba98a29e8c..02f2a9eee2 100644 --- a/.helm/ecamp3/files/db-backup-restore-image/Dockerfile +++ b/.helm/ecamp3/files/db-backup-restore-image/Dockerfile @@ -1,4 +1,4 @@ -FROM debian:12.12-slim +FROM debian:12.13-slim ENV DEBIAN_FRONTEND="noninteractive" RUN apt-get update && \ diff --git a/.nvmrc b/.nvmrc index 248216ad5b..3fe3b1570a 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -24.12.0 +24.13.0 diff --git a/.ops/aws-setup/docker-compose.yml b/.ops/aws-setup/docker-compose.yml index 54dfd1f0ca..01eec87084 100644 --- a/.ops/aws-setup/docker-compose.yml +++ b/.ops/aws-setup/docker-compose.yml @@ -1,6 +1,6 @@ services: aws-setup: - image: pulumi/pulumi-nodejs:3.214.0 + image: pulumi/pulumi-nodejs:3.216.0 container_name: 'ecamp3-aws-setup' volumes: - ../../.prettierrc:/.prettierrc:delegated @@ -13,7 +13,7 @@ services: - AWS_DEFAULT_REGION=eu-west-3 aws-cli: - image: amazon/aws-cli:2.32.26 + image: amazon/aws-cli:2.33.2 container_name: 'ecamp3-aws-cli' volumes: - ./.aws:/root/.aws:delegated diff --git a/.ops/aws-setup/package-lock.json b/.ops/aws-setup/package-lock.json index 62c32d7d81..c037378796 100644 --- a/.ops/aws-setup/package-lock.json +++ b/.ops/aws-setup/package-lock.json @@ -6,22 +6,22 @@ "": { "name": "ecamp-core", "dependencies": { - "@pulumi/aws": "7.15.0", + "@pulumi/aws": "7.16.0", "@pulumi/awsx": "3.1.0", - "@pulumi/pulumi": "3.214.0" + "@pulumi/pulumi": "3.216.0" }, "devDependencies": { - "@babel/eslint-parser": "7.28.5", - "@eslint/compat": "2.0.0", + "@babel/eslint-parser": "7.28.6", + "@eslint/compat": "2.0.1", "@eslint/js": "9.39.2", - "@types/node": "24.10.4", + "@types/node": "24.10.9", "eslint": "9.39.2", "eslint-config-prettier": "10.1.8", - "eslint-plugin-n": "17.23.1", - "eslint-plugin-prettier": "5.5.4", + "eslint-plugin-n": "17.23.2", + "eslint-plugin-prettier": "5.5.5", "eslint-plugin-promise": "7.2.1", - "globals": "16.5.0", - "prettier": "3.7.4" + "globals": "17.0.0", + "prettier": "3.8.0" } }, "node_modules/@aws-crypto/sha256-browser": { @@ -150,500 +150,513 @@ } }, "node_modules/@aws-sdk/client-ecs": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-ecs/-/client-ecs-3.965.0.tgz", - "integrity": "sha512-GunoYZ2Rkk7lQ1elP4gFc7StE5N9ph7ETdaG7xGOoRLo5jroNV7DpWLKLl9BbSFX/CXgrM0OkkpVXC+LTDh1JQ==", + "version": "3.975.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ecs/-/client-ecs-3.975.0.tgz", + "integrity": "sha512-x9PJZ37WQvG6cP+kziX3CTzRLzPwhgn6WgooWNwfgGElxUn299rlKCh+shP8qerYBgQsVyi4iahXJSQSmVDDpg==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.965.0", - "@aws-sdk/credential-provider-node": "3.965.0", - "@aws-sdk/middleware-host-header": "3.965.0", - "@aws-sdk/middleware-logger": "3.965.0", - "@aws-sdk/middleware-recursion-detection": "3.965.0", - "@aws-sdk/middleware-user-agent": "3.965.0", - "@aws-sdk/region-config-resolver": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@aws-sdk/util-endpoints": "3.965.0", - "@aws-sdk/util-user-agent-browser": "3.965.0", - "@aws-sdk/util-user-agent-node": "3.965.0", - "@smithy/config-resolver": "^4.4.5", - "@smithy/core": "^3.20.0", - "@smithy/fetch-http-handler": "^5.3.8", - "@smithy/hash-node": "^4.2.7", - "@smithy/invalid-dependency": "^4.2.7", - "@smithy/middleware-content-length": "^4.2.7", - "@smithy/middleware-endpoint": "^4.4.1", - "@smithy/middleware-retry": "^4.4.17", - "@smithy/middleware-serde": "^4.2.8", - "@smithy/middleware-stack": "^4.2.7", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/node-http-handler": "^4.4.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/smithy-client": "^4.10.2", - "@smithy/types": "^4.11.0", - "@smithy/url-parser": "^4.2.7", + "@aws-sdk/core": "^3.973.1", + "@aws-sdk/credential-provider-node": "^3.972.1", + "@aws-sdk/middleware-host-header": "^3.972.1", + "@aws-sdk/middleware-logger": "^3.972.1", + "@aws-sdk/middleware-recursion-detection": "^3.972.1", + "@aws-sdk/middleware-user-agent": "^3.972.2", + "@aws-sdk/region-config-resolver": "^3.972.1", + "@aws-sdk/types": "^3.973.0", + "@aws-sdk/util-endpoints": "3.972.0", + "@aws-sdk/util-user-agent-browser": "^3.972.1", + "@aws-sdk/util-user-agent-node": "^3.972.1", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.21.1", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.11", + "@smithy/middleware-retry": "^4.4.27", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.10.12", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.16", - "@smithy/util-defaults-mode-node": "^4.2.19", - "@smithy/util-endpoints": "^3.2.7", - "@smithy/util-middleware": "^4.2.7", - "@smithy/util-retry": "^4.2.7", + "@smithy/util-defaults-mode-browser": "^4.3.26", + "@smithy/util-defaults-mode-node": "^4.2.29", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", "@smithy/util-utf8": "^4.2.0", - "@smithy/util-waiter": "^4.2.7", + "@smithy/util-waiter": "^4.2.8", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.965.0.tgz", - "integrity": "sha512-iv2tr+n4aZ+nPUFFvG00hISPuEd4DU+1/Q8rPAYKXsM+vEPJ2nAnP5duUOa2fbOLIUCRxX3dcQaQaghVHDHzQw==", + "version": "3.974.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.974.0.tgz", + "integrity": "sha512-ci+GiM0c4ULo4D79UMcY06LcOLcfvUfiyt8PzNY0vbt5O8BfCPYf4QomwVgkNcLLCYmroO4ge2Yy1EsLUlcD6g==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.965.0", - "@aws-sdk/middleware-host-header": "3.965.0", - "@aws-sdk/middleware-logger": "3.965.0", - "@aws-sdk/middleware-recursion-detection": "3.965.0", - "@aws-sdk/middleware-user-agent": "3.965.0", - "@aws-sdk/region-config-resolver": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@aws-sdk/util-endpoints": "3.965.0", - "@aws-sdk/util-user-agent-browser": "3.965.0", - "@aws-sdk/util-user-agent-node": "3.965.0", - "@smithy/config-resolver": "^4.4.5", - "@smithy/core": "^3.20.0", - "@smithy/fetch-http-handler": "^5.3.8", - "@smithy/hash-node": "^4.2.7", - "@smithy/invalid-dependency": "^4.2.7", - "@smithy/middleware-content-length": "^4.2.7", - "@smithy/middleware-endpoint": "^4.4.1", - "@smithy/middleware-retry": "^4.4.17", - "@smithy/middleware-serde": "^4.2.8", - "@smithy/middleware-stack": "^4.2.7", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/node-http-handler": "^4.4.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/smithy-client": "^4.10.2", - "@smithy/types": "^4.11.0", - "@smithy/url-parser": "^4.2.7", + "@aws-sdk/core": "^3.973.0", + "@aws-sdk/middleware-host-header": "^3.972.1", + "@aws-sdk/middleware-logger": "^3.972.1", + "@aws-sdk/middleware-recursion-detection": "^3.972.1", + "@aws-sdk/middleware-user-agent": "^3.972.1", + "@aws-sdk/region-config-resolver": "^3.972.1", + "@aws-sdk/types": "^3.973.0", + "@aws-sdk/util-endpoints": "3.972.0", + "@aws-sdk/util-user-agent-browser": "^3.972.1", + "@aws-sdk/util-user-agent-node": "^3.972.1", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.21.0", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.10", + "@smithy/middleware-retry": "^4.4.26", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.10.11", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.16", - "@smithy/util-defaults-mode-node": "^4.2.19", - "@smithy/util-endpoints": "^3.2.7", - "@smithy/util-middleware": "^4.2.7", - "@smithy/util-retry": "^4.2.7", + "@smithy/util-defaults-mode-browser": "^4.3.25", + "@smithy/util-defaults-mode-node": "^4.2.28", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/core": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.965.0.tgz", - "integrity": "sha512-aq9BhQxdHit8UUJ9C0im9TtuKeK0pT6NXmNJxMTCFeStI7GG7ImIsSislg3BZTIifVg1P6VLdzMyz9de85iutQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.965.0", - "@aws-sdk/xml-builder": "3.965.0", - "@smithy/core": "^3.20.0", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/property-provider": "^4.2.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/signature-v4": "^5.3.7", - "@smithy/smithy-client": "^4.10.2", - "@smithy/types": "^4.11.0", + "version": "3.973.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.1.tgz", + "integrity": "sha512-Ocubx42QsMyVs9ANSmFpRm0S+hubWljpPLjOi9UFrtcnVJjrVJTzQ51sN0e5g4e8i8QZ7uY73zosLmgYL7kZTQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.0", + "@aws-sdk/xml-builder": "^3.972.1", + "@smithy/core": "^3.21.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/smithy-client": "^4.10.12", + "@smithy/types": "^4.12.0", "@smithy/util-base64": "^4.3.0", - "@smithy/util-middleware": "^4.2.7", + "@smithy/util-middleware": "^4.2.8", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.965.0.tgz", - "integrity": "sha512-mdGnaIjMxTIjsb70dEj3VsWPWpoq1V5MWzBSfJq2H8zgMBXjn6d5/qHP8HMf53l9PrsgqzMpXGv3Av549A2x1g==", + "version": "3.972.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.1.tgz", + "integrity": "sha512-/etNHqnx96phy/SjI0HRC588o4vKH5F0xfkZ13yAATV7aNrb+5gYGNE6ePWafP+FuZ3HkULSSlJFj0AxgrAqYw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/types": "^4.11.0", + "@aws-sdk/core": "^3.973.0", + "@aws-sdk/types": "^3.973.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.965.0.tgz", - "integrity": "sha512-YuGQel9EgA/z25oeLM+GYYQS750+8AESvr7ZEmVnRPL0sg+K3DmGqdv+9gFjFd0UkLjTlC/jtbP2cuY6UcPiHQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/fetch-http-handler": "^5.3.8", - "@smithy/node-http-handler": "^4.4.7", - "@smithy/property-provider": "^4.2.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/smithy-client": "^4.10.2", - "@smithy/types": "^4.11.0", - "@smithy/util-stream": "^4.5.8", + "version": "3.972.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.2.tgz", + "integrity": "sha512-mXgdaUfe5oM+tWKyeZ7Vh/iQ94FrkMky1uuzwTOmFADiRcSk5uHy/e3boEFedXiT/PRGzgBmqvJVK4F6lUISCg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.1", + "@aws-sdk/types": "^3.973.0", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.10.12", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.10", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.965.0.tgz", - "integrity": "sha512-xRo72Prer5s0xYVSCxCymVIRSqrVlevK5cmU0GWq9yJtaBNpnx02jwdJg80t/Ni7pgbkQyFWRMcq38c1tc6M/w==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/credential-provider-env": "3.965.0", - "@aws-sdk/credential-provider-http": "3.965.0", - "@aws-sdk/credential-provider-login": "3.965.0", - "@aws-sdk/credential-provider-process": "3.965.0", - "@aws-sdk/credential-provider-sso": "3.965.0", - "@aws-sdk/credential-provider-web-identity": "3.965.0", - "@aws-sdk/nested-clients": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/credential-provider-imds": "^4.2.7", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "version": "3.972.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.1.tgz", + "integrity": "sha512-OdbJA3v+XlNDsrYzNPRUwr8l7gw1r/nR8l4r96MDzSBDU8WEo8T6C06SvwaXR8SpzsjO3sq5KMP86wXWg7Rj4g==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.0", + "@aws-sdk/credential-provider-env": "^3.972.1", + "@aws-sdk/credential-provider-http": "^3.972.1", + "@aws-sdk/credential-provider-login": "^3.972.1", + "@aws-sdk/credential-provider-process": "^3.972.1", + "@aws-sdk/credential-provider-sso": "^3.972.1", + "@aws-sdk/credential-provider-web-identity": "^3.972.1", + "@aws-sdk/nested-clients": "3.974.0", + "@aws-sdk/types": "^3.973.0", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.965.0.tgz", - "integrity": "sha512-43/H8Qku8LHyugbhLo8kjD+eauhybCeVkmrnvWl8bXNHJP7xi1jCdtBQJKKJqiIHZws4MOEwkji8kFdAVRCe6g==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/nested-clients": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "version": "3.972.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.1.tgz", + "integrity": "sha512-CccqDGL6ZrF3/EFWZefvKW7QwwRdxlHUO8NVBKNVcNq6womrPDvqB6xc9icACtE0XB0a7PLoSTkAg8bQVkTO2w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.0", + "@aws-sdk/nested-clients": "3.974.0", + "@aws-sdk/types": "^3.973.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.965.0.tgz", - "integrity": "sha512-cRxmMHF+Zh2lkkkEVduKl+8OQdtg/DhYA69+/7SPSQURlgyjFQGlRQ58B7q8abuNlrGT3sV+UzeOylZpJbV61Q==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.965.0", - "@aws-sdk/credential-provider-http": "3.965.0", - "@aws-sdk/credential-provider-ini": "3.965.0", - "@aws-sdk/credential-provider-process": "3.965.0", - "@aws-sdk/credential-provider-sso": "3.965.0", - "@aws-sdk/credential-provider-web-identity": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/credential-provider-imds": "^4.2.7", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "version": "3.972.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.1.tgz", + "integrity": "sha512-DwXPk9GfuU/xG9tmCyXFVkCr6X3W8ZCoL5Ptb0pbltEx1/LCcg7T+PBqDlPiiinNCD6ilIoMJDWsnJ8ikzZA7Q==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "^3.972.1", + "@aws-sdk/credential-provider-http": "^3.972.1", + "@aws-sdk/credential-provider-ini": "^3.972.1", + "@aws-sdk/credential-provider-process": "^3.972.1", + "@aws-sdk/credential-provider-sso": "^3.972.1", + "@aws-sdk/credential-provider-web-identity": "^3.972.1", + "@aws-sdk/types": "^3.973.0", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.965.0.tgz", - "integrity": "sha512-gmkPmdiR0yxnTzLPDb7rwrDhGuCUjtgnj8qWP+m0gSz/W43rR4jRPVEf6DUX2iC+ImQhxo3NFhuB3V42Kzo3TQ==", + "version": "3.972.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.1.tgz", + "integrity": "sha512-bi47Zigu3692SJwdBvo8y1dEwE6B61stCwCFnuRWJVTfiM84B+VTSCV661CSWJmIZzmcy7J5J3kWyxL02iHj0w==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "@aws-sdk/core": "^3.973.0", + "@aws-sdk/types": "^3.973.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.965.0.tgz", - "integrity": "sha512-N01AYvtCqG3Wo/s/LvYt19ity18/FqggiXT+elAs3X9Om/Wfx+hw9G+i7jaDmy+/xewmv8AdQ2SK5Q30dXw/Fw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/client-sso": "3.965.0", - "@aws-sdk/core": "3.965.0", - "@aws-sdk/token-providers": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "version": "3.972.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.1.tgz", + "integrity": "sha512-dLZVNhM7wSgVUFsgVYgI5hb5Z/9PUkT46pk/SHrSmUqfx6YDvoV4YcPtaiRqviPpEGGiRtdQMEadyOKIRqulUQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-sso": "3.974.0", + "@aws-sdk/core": "^3.973.0", + "@aws-sdk/token-providers": "3.974.0", + "@aws-sdk/types": "^3.973.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.965.0.tgz", - "integrity": "sha512-T4gMZ2JzXnfxe1oTD+EDGLSxFfk1+WkLZdiHXEMZp8bFI1swP/3YyDFXI+Ib9Uq1JhnAmrCXtOnkicKEhDkdhQ==", + "version": "3.972.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.1.tgz", + "integrity": "sha512-YMDeYgi0u687Ay0dAq/pFPKuijrlKTgsaB/UATbxCs/FzZfMiG4If5ksywHmmW7MiYUF8VVv+uou3TczvLrN4w==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/nested-clients": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "@aws-sdk/core": "^3.973.0", + "@aws-sdk/nested-clients": "3.974.0", + "@aws-sdk/types": "^3.973.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.965.0.tgz", - "integrity": "sha512-SfpSYqoPOAmdb3DBsnNsZ0vix+1VAtkUkzXM79JL3R5IfacpyKE2zytOgVAQx/FjhhlpSTwuXd+LRhUEVb3MaA==", + "version": "3.972.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.1.tgz", + "integrity": "sha512-/R82lXLPmZ9JaUGSUdKtBp2k/5xQxvBT3zZWyKiBOhyulFotlfvdlrO8TnqstBimsl4lYEYySDL+W6ldFh6ALg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "^3.973.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.965.0.tgz", - "integrity": "sha512-gjUvJRZT1bUABKewnvkj51LAynFrfz2h5DYAg5/2F4Utx6UOGByTSr9Rq8JCLbURvvzAbCtcMkkIJRxw+8Zuzw==", + "version": "3.972.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.1.tgz", + "integrity": "sha512-JGgFl6cHg9G2FHu4lyFIzmFN8KESBiRr84gLC3Aeni0Gt1nKm+KxWLBuha/RPcXxJygGXCcMM4AykkIwxor8RA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "^3.973.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.965.0.tgz", - "integrity": "sha512-6dvD+18Ni14KCRu+tfEoNxq1sIGVp9tvoZDZ7aMvpnA7mDXuRLrOjRQ/TAZqXwr9ENKVGyxcPl0cRK8jk1YWjA==", + "version": "3.972.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.1.tgz", + "integrity": "sha512-taGzNRe8vPHjnliqXIHp9kBgIemLE/xCaRTMH1NH0cncHeaPcjxtnCroAAM9aOlPuKvBe2CpZESyvM1+D8oI7Q==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", + "@aws-sdk/types": "^3.973.0", "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.965.0.tgz", - "integrity": "sha512-RBEYVGgu/WeAt+H/qLrGc+t8LqAUkbyvh3wBfTiuAD+uBcWsKnvnB1iSBX75FearC0fmoxzXRUc0PMxMdqpjJQ==", + "version": "3.972.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.2.tgz", + "integrity": "sha512-d+Exq074wy0X6wvShg/kmZVtkah+28vMuqCtuY3cydg8LUZOJBtbAolCpEJizSyb8mJJZF9BjWaTANXL4OYnkg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@aws-sdk/util-endpoints": "3.965.0", - "@smithy/core": "^3.20.0", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@aws-sdk/core": "^3.973.1", + "@aws-sdk/types": "^3.973.0", + "@aws-sdk/util-endpoints": "3.972.0", + "@smithy/core": "^3.21.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.965.0.tgz", - "integrity": "sha512-muNVUjUEU+/KLFrLzQ8PMXyw4+a/MP6t4GIvwLtyx/kH0rpSy5s0YmqacMXheuIe6F/5QT8uksXGNAQenitkGQ==", + "version": "3.974.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.974.0.tgz", + "integrity": "sha512-k3dwdo/vOiHMJc9gMnkPl1BA5aQfTrZbz+8fiDkWrPagqAioZgmo5oiaOaeX0grObfJQKDtcpPFR4iWf8cgl8Q==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.965.0", - "@aws-sdk/middleware-host-header": "3.965.0", - "@aws-sdk/middleware-logger": "3.965.0", - "@aws-sdk/middleware-recursion-detection": "3.965.0", - "@aws-sdk/middleware-user-agent": "3.965.0", - "@aws-sdk/region-config-resolver": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@aws-sdk/util-endpoints": "3.965.0", - "@aws-sdk/util-user-agent-browser": "3.965.0", - "@aws-sdk/util-user-agent-node": "3.965.0", - "@smithy/config-resolver": "^4.4.5", - "@smithy/core": "^3.20.0", - "@smithy/fetch-http-handler": "^5.3.8", - "@smithy/hash-node": "^4.2.7", - "@smithy/invalid-dependency": "^4.2.7", - "@smithy/middleware-content-length": "^4.2.7", - "@smithy/middleware-endpoint": "^4.4.1", - "@smithy/middleware-retry": "^4.4.17", - "@smithy/middleware-serde": "^4.2.8", - "@smithy/middleware-stack": "^4.2.7", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/node-http-handler": "^4.4.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/smithy-client": "^4.10.2", - "@smithy/types": "^4.11.0", - "@smithy/url-parser": "^4.2.7", + "@aws-sdk/core": "^3.973.0", + "@aws-sdk/middleware-host-header": "^3.972.1", + "@aws-sdk/middleware-logger": "^3.972.1", + "@aws-sdk/middleware-recursion-detection": "^3.972.1", + "@aws-sdk/middleware-user-agent": "^3.972.1", + "@aws-sdk/region-config-resolver": "^3.972.1", + "@aws-sdk/types": "^3.973.0", + "@aws-sdk/util-endpoints": "3.972.0", + "@aws-sdk/util-user-agent-browser": "^3.972.1", + "@aws-sdk/util-user-agent-node": "^3.972.1", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.21.0", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.10", + "@smithy/middleware-retry": "^4.4.26", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.10.11", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.16", - "@smithy/util-defaults-mode-node": "^4.2.19", - "@smithy/util-endpoints": "^3.2.7", - "@smithy/util-middleware": "^4.2.7", - "@smithy/util-retry": "^4.2.7", + "@smithy/util-defaults-mode-browser": "^4.3.25", + "@smithy/util-defaults-mode-node": "^4.2.28", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.965.0.tgz", - "integrity": "sha512-RoMhu9ly2B0coxn8ctXosPP2WmDD0MkQlZGLjoYHQUOCBmty5qmCxOqBmBDa6wbWbB8xKtMQ/4VXloQOgzjHXg==", + "version": "3.972.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.1.tgz", + "integrity": "sha512-voIY8RORpxLAEgEkYaTFnkaIuRwVBEc+RjVZYcSSllPV+ZEKAacai6kNhJeE3D70Le+JCfvRb52tng/AVHY+jQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@smithy/config-resolver": "^4.4.5", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "^3.973.0", + "@smithy/config-resolver": "^4.4.6", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.965.0.tgz", - "integrity": "sha512-aR0qxg0b8flkXJVE+CM1gzo7uJ57md50z2eyCwofC0QIz5Y0P7/7vvb9/dmUQt6eT9XRN5iRcUqq2IVxVDvJOw==", + "version": "3.974.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.974.0.tgz", + "integrity": "sha512-cBykL0LiccKIgNhGWvQRTPvsBLPZxnmJU3pYxG538jpFX8lQtrCy1L7mmIHNEdxIdIGEPgAEHF8/JQxgBToqUQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/nested-clients": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "@aws-sdk/core": "^3.973.0", + "@aws-sdk/nested-clients": "3.974.0", + "@aws-sdk/types": "^3.973.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/types": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.965.0.tgz", - "integrity": "sha512-jvodoJdMavvg8faN7co58vVJRO5MVep4JFPRzUNCzpJ98BDqWDk/ad045aMJcmxkLzYLS2UAnUmqjJ/tUPNlzQ==", + "version": "3.973.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.0.tgz", + "integrity": "sha512-jYIdB7a7jhRTvyb378nsjyvJh1Si+zVduJ6urMNGpz8RjkmHZ+9vM2H07XaIB2Cfq0GhJRZYOfUCH8uqQhqBkQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.965.0.tgz", - "integrity": "sha512-WqSCB0XIsGUwZWvrYkuoofi2vzoVHqyeJ2kN+WyoOsxPLTiQSBIoqm/01R/qJvoxwK/gOOF7su9i84Vw2NQQpQ==", + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.972.0.tgz", + "integrity": "sha512-6JHsl1V/a1ZW8D8AFfd4R52fwZPnZ5H4U6DS8m/bWT8qad72NvbOFAC7U2cDtFs2TShqUO3TEiX/EJibtY3ijg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@smithy/types": "^4.11.0", - "@smithy/url-parser": "^4.2.7", - "@smithy/util-endpoints": "^3.2.7", + "@aws-sdk/types": "3.972.0", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-endpoints": "^3.2.8", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints/node_modules/@aws-sdk/types": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.972.0.tgz", + "integrity": "sha512-U7xBIbLSetONxb2bNzHyDgND3oKGoIfmknrEVnoEU4GUSs+0augUOIn9DIWGUO2ETcRFdsRUnmx9KhPT9Ojbug==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/util-locate-window": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.0.tgz", - "integrity": "sha512-9LJFand4bIoOjOF4x3wx0UZYiFZRo4oUauxQSiEX2dVg+5qeBOJSjp2SeWykIE6+6frCZ5wvWm2fGLK8D32aJw==", + "version": "3.965.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.3.tgz", + "integrity": "sha512-FNUqAjlKAGA7GM05kywE99q8wiPHPZqrzhq3wXRga6PRD6A0kzT85Pb0AzYBVTBRpSrKyyr6M92Y6bnSBVp2BA==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.965.0.tgz", - "integrity": "sha512-Xiza/zMntQGpkd2dETQeAK8So1pg5+STTzpcdGWxj5q0jGO5ayjqT/q1Q7BrsX5KIr6PvRkl9/V7lLCv04wGjQ==", + "version": "3.972.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.1.tgz", + "integrity": "sha512-IgF55NFmJX8d9Wql9M0nEpk2eYbuD8G4781FN4/fFgwTXBn86DvlZJuRWDCMcMqZymnBVX7HW9r+3r9ylqfW0w==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "^3.973.0", + "@smithy/types": "^4.12.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.965.0.tgz", - "integrity": "sha512-kokIHUfNT3/P55E4fUJJrFHuuA9BbjFKUIxoLrd3UaRfdafT0ScRfg2eaZie6arf60EuhlUIZH0yALxttMEjxQ==", + "version": "3.972.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.972.1.tgz", + "integrity": "sha512-oIs4JFcADzoZ0c915R83XvK2HltWupxNsXUIuZse2rgk7b97zTpkxaqXiH0h9ylh31qtgo/t8hp4tIqcsMrEbQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/types": "^4.11.0", + "@aws-sdk/middleware-user-agent": "^3.972.1", + "@aws-sdk/types": "^3.973.0", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" }, "peerDependencies": { "aws-crt": ">=1.0.0" @@ -655,36 +668,36 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.965.0.tgz", - "integrity": "sha512-Tcod25/BTupraQwtb+Q+GX8bmEZfxIFjjJ/AvkhUZsZlkPeVluzq1uu3Oeqf145DCdMjzLIN6vab5MrykbDP+g==", + "version": "3.972.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.1.tgz", + "integrity": "sha512-6zZGlPOqn7Xb+25MAXGb1JhgvaC5HjZj6GzszuVrnEgbhvzBRFGKYemuHBV4bho+dtqeYKPgaZUv7/e80hIGNg==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "fast-xml-parser": "5.2.5", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws/lambda-invoke-store": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.2.tgz", - "integrity": "sha512-C0NBLsIqzDIae8HFw9YIrIBsbc0xTiOtt7fAukGPnqQ/+zZNaq+4jhuccltK0QuWHBnNm/a6kLIRA6GFiM10eg==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.3.tgz", + "integrity": "sha512-oLvsaPMTBejkkmHhjf09xTgk71mOqyr/409NKhRIL08If7AhVfUsJhVsx386uJaqNd42v9kWamQ9lFbkoC2dYw==", "license": "Apache-2.0", "engines": { "node": ">=18.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", + "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -693,9 +706,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", - "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.6.tgz", + "integrity": "sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==", "dev": true, "license": "MIT", "engines": { @@ -703,22 +716,22 @@ } }, "node_modules/@babel/core": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", - "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.6.tgz", + "integrity": "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.5", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.4", - "@babel/parser": "^7.28.5", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.5", - "@babel/types": "^7.28.5", + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -735,9 +748,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.5.tgz", - "integrity": "sha512-fcdRcWahONYo+JRnJg1/AekOacGvKx12Gu0qXJXFi2WBqQA1i7+O5PaxRB7kxE/Op94dExnCiiar6T09pvdHpA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.6.tgz", + "integrity": "sha512-QGmsKi2PBO/MHSQk+AAgA9R6OHQr+VqnniFE0eMWZcVcfBZoA2dKn2hUsl3Csg/Plt9opRUWdY7//VXsrIlEiA==", "dev": true, "license": "MIT", "dependencies": { @@ -754,14 +767,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", - "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz", + "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.5", - "@babel/types": "^7.28.5", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -771,13 +784,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.27.2", + "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -798,29 +811,29 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", - "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.28.3" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -860,27 +873,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", - "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4" + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", - "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", + "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.28.5" + "@babel/types": "^7.28.6" }, "bin": { "parser": "bin/babel-parser.js" @@ -890,33 +903,33 @@ } }, "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", - "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz", + "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.5", + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.5", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.5", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6", "debug": "^4.3.1" }, "engines": { @@ -924,9 +937,9 @@ } }, "node_modules/@babel/types": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", - "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", + "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", "dev": true, "license": "MIT", "dependencies": { @@ -980,13 +993,13 @@ } }, "node_modules/@eslint/compat": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-2.0.0.tgz", - "integrity": "sha512-T9AfE1G1uv4wwq94ozgTGio5EUQBqAVe1X9qsQtSNVEYW6j3hvtZVm8Smr4qL1qDPFg+lOB2cL5RxTRMzq4CTA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-2.0.1.tgz", + "integrity": "sha512-yl/JsgplclzuvGFNqwNYV4XNPhP3l62ZOP9w/47atNAdmDtIFCx6X7CSk/SlWUuBGkT4Et/5+UD+WyvX2iiIWA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^1.0.0" + "@eslint/core": "^1.0.1" }, "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" @@ -1066,9 +1079,9 @@ } }, "node_modules/@eslint/core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.0.0.tgz", - "integrity": "sha512-PRfWP+8FOldvbApr6xL7mNCw4cJcSTq4GA7tYbgq15mRb0kWKO/wEB2jr+uwjFH3sZvEZneZyCUGTxsv4Sahyw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.0.1.tgz", + "integrity": "sha512-r18fEAj9uCk+VjzGt2thsbOmychS+4kxI14spVNibUO2vqKX7obOG+ymZljAwuPZl+S3clPGwCwTDtrdqTiY6Q==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2027,9 +2040,9 @@ "license": "BSD-3-Clause" }, "node_modules/@pulumi/aws": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@pulumi/aws/-/aws-7.15.0.tgz", - "integrity": "sha512-teHcWfllICarutAQq7ix2X5PFaNCXBe+vQmnR6Efnq/PkZcXbVq+6eLmSFkjuYboa3nIb2YUzG9ic34hUmf79Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@pulumi/aws/-/aws-7.16.0.tgz", + "integrity": "sha512-taLHQH83bsZ37sifIc0xUA7SgX6xjsuJgkLGQ+Y7NMriNMCnk+9v801bs4r+YDy480zFF/yi195RuX77ZDXHPg==", "license": "Apache-2.0", "dependencies": { "@pulumi/pulumi": "^3.142.0", @@ -2082,9 +2095,9 @@ } }, "node_modules/@pulumi/pulumi": { - "version": "3.214.0", - "resolved": "https://registry.npmjs.org/@pulumi/pulumi/-/pulumi-3.214.0.tgz", - "integrity": "sha512-5QJnpv8O8dgryzSV6XoWHCYnxADs8EMllwJoRF4AV/TS0YJdaantNSdz+8yie7YdkePfKLfPULoM2BdYllk6Fw==", + "version": "3.216.0", + "resolved": "https://registry.npmjs.org/@pulumi/pulumi/-/pulumi-3.216.0.tgz", + "integrity": "sha512-trrYuGE76HirIpA8McuomXNSkkccQyQajP9ZNLd0WHqnxXstTjRR+Zxizwo/0NJ3/HTUsA7wJE1Qt5auf7jL2g==", "license": "Apache-2.0", "dependencies": { "@grpc/grpc-js": "^1.10.1", @@ -2231,12 +2244,12 @@ } }, "node_modules/@smithy/abort-controller": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.7.tgz", - "integrity": "sha512-rzMY6CaKx2qxrbYbqjXWS0plqEy7LOdKHS0bg4ixJ6aoGDPNUcLWk/FRNuCILh7GKLG9TFUXYYeQQldMBBwuyw==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.8.tgz", + "integrity": "sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2244,16 +2257,16 @@ } }, "node_modules/@smithy/config-resolver": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.5.tgz", - "integrity": "sha512-HAGoUAFYsUkoSckuKbCPayECeMim8pOu+yLy1zOxt1sifzEbrsRpYa+mKcMdiHKMeiqOibyPG0sFJnmaV/OGEg==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.6.tgz", + "integrity": "sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.7", - "@smithy/types": "^4.11.0", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", "@smithy/util-config-provider": "^4.2.0", - "@smithy/util-endpoints": "^3.2.7", - "@smithy/util-middleware": "^4.2.7", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", "tslib": "^2.6.2" }, "engines": { @@ -2261,18 +2274,18 @@ } }, "node_modules/@smithy/core": { - "version": "3.20.1", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.20.1.tgz", - "integrity": "sha512-wOboSEdQ85dbKAJ0zL+wQ6b0HTSBRhtGa0PYKysQXkRg+vK0tdCRRVruiFM2QMprkOQwSYOnwF4og96PAaEGag==", + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.21.1.tgz", + "integrity": "sha512-NUH8R4O6FkN8HKMojzbGg/5pNjsfTjlMmeFclyPfPaXXUrbr5TzhWgbf7t92wfrpCHRgpjyz7ffASIS3wX28aA==", "license": "Apache-2.0", "dependencies": { - "@smithy/middleware-serde": "^4.2.8", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-middleware": "^4.2.7", - "@smithy/util-stream": "^4.5.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.10", "@smithy/util-utf8": "^4.2.0", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" @@ -2282,15 +2295,15 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.7.tgz", - "integrity": "sha512-CmduWdCiILCRNbQWFR0OcZlUPVtyE49Sr8yYL0rZQ4D/wKxiNzBNS/YHemvnbkIWj623fplgkexUd/c9CAKdoA==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.8.tgz", + "integrity": "sha512-FNT0xHS1c/CPN8upqbMFP83+ul5YgdisfCfkZ86Jh2NSmnqw/AJ6x5pEogVCTVvSm7j9MopRU89bmDelxuDMYw==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.7", - "@smithy/property-provider": "^4.2.7", - "@smithy/types": "^4.11.0", - "@smithy/url-parser": "^4.2.7", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", "tslib": "^2.6.2" }, "engines": { @@ -2298,14 +2311,14 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "5.3.8", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.8.tgz", - "integrity": "sha512-h/Fi+o7mti4n8wx1SR6UHWLaakwHRx29sizvp8OOm7iqwKGFneT06GCSFhml6Bha5BT6ot5pj3CYZnCHhGC2Rg==", + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.9.tgz", + "integrity": "sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==", "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.7", - "@smithy/querystring-builder": "^4.2.7", - "@smithy/types": "^4.11.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", "@smithy/util-base64": "^4.3.0", "tslib": "^2.6.2" }, @@ -2314,12 +2327,12 @@ } }, "node_modules/@smithy/hash-node": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.7.tgz", - "integrity": "sha512-PU/JWLTBCV1c8FtB8tEFnY4eV1tSfBc7bDBADHfn1K+uRbPgSJ9jnJp0hyjiFN2PMdPzxsf1Fdu0eo9fJ760Xw==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.8.tgz", + "integrity": "sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" @@ -2329,12 +2342,12 @@ } }, "node_modules/@smithy/invalid-dependency": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.7.tgz", - "integrity": "sha512-ncvgCr9a15nPlkhIUx3CU4d7E7WEuVJOV7fS7nnK2hLtPK9tYRBkMHQbhXU1VvvKeBm/O0x26OEoBq+ngFpOEQ==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.8.tgz", + "integrity": "sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2354,13 +2367,13 @@ } }, "node_modules/@smithy/middleware-content-length": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.7.tgz", - "integrity": "sha512-GszfBfCcvt7kIbJ41LuNa5f0wvQCHhnGx/aDaZJCCT05Ld6x6U2s0xsc/0mBFONBZjQJp2U/0uSJ178OXOwbhg==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.8.tgz", + "integrity": "sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==", "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2368,18 +2381,18 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.2.tgz", - "integrity": "sha512-mqpAdux0BNmZu/SqkFhQEnod4fX23xxTvU2LUpmKp0JpSI+kPYCiHJMmzREr8yxbNxKL2/DU1UZm9i++ayU+2g==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.20.1", - "@smithy/middleware-serde": "^4.2.8", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", - "@smithy/url-parser": "^4.2.7", - "@smithy/util-middleware": "^4.2.7", + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.11.tgz", + "integrity": "sha512-/WqsrycweGGfb9sSzME4CrsuayjJF6BueBmkKlcbeU5q18OhxRrvvKlmfw3tpDsK5ilx2XUJvoukwxHB0nHs/Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.21.1", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-middleware": "^4.2.8", "tslib": "^2.6.2" }, "engines": { @@ -2387,18 +2400,18 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "4.4.18", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.18.tgz", - "integrity": "sha512-E5hulijA59nBk/zvcwVMaS7FG7Y4l6hWA9vrW018r+8kiZef4/ETQaPI4oY+3zsy9f6KqDv3c4VKtO4DwwgpCg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/service-error-classification": "^4.2.7", - "@smithy/smithy-client": "^4.10.3", - "@smithy/types": "^4.11.0", - "@smithy/util-middleware": "^4.2.7", - "@smithy/util-retry": "^4.2.7", + "version": "4.4.27", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.27.tgz", + "integrity": "sha512-xFUYCGRVsfgiN5EjsJJSzih9+yjStgMTCLANPlf0LVQkPDYCe0hz97qbdTZosFOiYlGBlHYityGRxrQ/hxhfVQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/service-error-classification": "^4.2.8", + "@smithy/smithy-client": "^4.10.12", + "@smithy/types": "^4.12.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" }, @@ -2407,13 +2420,13 @@ } }, "node_modules/@smithy/middleware-serde": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.8.tgz", - "integrity": "sha512-8rDGYen5m5+NV9eHv9ry0sqm2gI6W7mc1VSFMtn6Igo25S507/HaOX9LTHAS2/J32VXD0xSzrY0H5FJtOMS4/w==", + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.9.tgz", + "integrity": "sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2421,12 +2434,12 @@ } }, "node_modules/@smithy/middleware-stack": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.7.tgz", - "integrity": "sha512-bsOT0rJ+HHlZd9crHoS37mt8qRRN/h9jRve1SXUhVbkRzu0QaNYZp1i1jha4n098tsvROjcwfLlfvcFuJSXEsw==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.8.tgz", + "integrity": "sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2434,14 +2447,14 @@ } }, "node_modules/@smithy/node-config-provider": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.7.tgz", - "integrity": "sha512-7r58wq8sdOcrwWe+klL9y3bc4GW1gnlfnFOuL7CXa7UzfhzhxKuzNdtqgzmTV+53lEp9NXh5hY/S4UgjLOzPfw==", + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.8.tgz", + "integrity": "sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==", "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2449,15 +2462,15 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "4.4.7", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.7.tgz", - "integrity": "sha512-NELpdmBOO6EpZtWgQiHjoShs1kmweaiNuETUpuup+cmm/xJYjT4eUjfhrXRP4jCOaAsS3c3yPsP3B+K+/fyPCQ==", + "version": "4.4.8", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.8.tgz", + "integrity": "sha512-q9u+MSbJVIJ1QmJ4+1u+cERXkrhuILCBDsJUBAW1MPE6sFonbCNaegFuwW9ll8kh5UdyY3jOkoOGlc7BesoLpg==", "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.2.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/querystring-builder": "^4.2.7", - "@smithy/types": "^4.11.0", + "@smithy/abort-controller": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2465,12 +2478,12 @@ } }, "node_modules/@smithy/property-provider": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.7.tgz", - "integrity": "sha512-jmNYKe9MGGPoSl/D7JDDs1C8b3dC8f/w78LbaVfoTtWy4xAd5dfjaFG9c9PWPihY4ggMQNQSMtzU77CNgAJwmA==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.8.tgz", + "integrity": "sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2478,12 +2491,12 @@ } }, "node_modules/@smithy/protocol-http": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.7.tgz", - "integrity": "sha512-1r07pb994I20dD/c2seaZhoCuNYm0rWrvBxhCQ70brNh11M5Ml2ew6qJVo0lclB3jMIXirD4s2XRXRe7QEi0xA==", + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.8.tgz", + "integrity": "sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2491,12 +2504,12 @@ } }, "node_modules/@smithy/querystring-builder": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.7.tgz", - "integrity": "sha512-eKONSywHZxK4tBxe2lXEysh8wbBdvDWiA+RIuaxZSgCMmA0zMgoDpGLJhnyj+c0leOQprVnXOmcB4m+W9Rw7sg==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.8.tgz", + "integrity": "sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" }, @@ -2505,12 +2518,12 @@ } }, "node_modules/@smithy/querystring-parser": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.7.tgz", - "integrity": "sha512-3X5ZvzUHmlSTHAXFlswrS6EGt8fMSIxX/c3Rm1Pni3+wYWB6cjGocmRIoqcQF9nU5OgGmL0u7l9m44tSUpfj9w==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.8.tgz", + "integrity": "sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2518,24 +2531,24 @@ } }, "node_modules/@smithy/service-error-classification": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.7.tgz", - "integrity": "sha512-YB7oCbukqEb2Dlh3340/8g8vNGbs/QsNNRms+gv3N2AtZz9/1vSBx6/6tpwQpZMEJFs7Uq8h4mmOn48ZZ72MkA==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.8.tgz", + "integrity": "sha512-mZ5xddodpJhEt3RkCjbmUQuXUOaPNTkbMGR0bcS8FE0bJDLMZlhmpgrvPNCYglVw5rsYTpSnv19womw9WWXKQQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0" + "@smithy/types": "^4.12.0" }, "engines": { "node": ">=18.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.2.tgz", - "integrity": "sha512-M7iUUff/KwfNunmrgtqBfvZSzh3bmFgv/j/t1Y1dQ+8dNo34br1cqVEqy6v0mYEgi0DkGO7Xig0AnuOaEGVlcg==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.3.tgz", + "integrity": "sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2543,16 +2556,16 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.7.tgz", - "integrity": "sha512-9oNUlqBlFZFOSdxgImA6X5GFuzE7V2H7VG/7E70cdLhidFbdtvxxt81EHgykGK5vq5D3FafH//X+Oy31j3CKOg==", + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.8.tgz", + "integrity": "sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==", "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^4.2.0", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "@smithy/util-hex-encoding": "^4.2.0", - "@smithy/util-middleware": "^4.2.7", + "@smithy/util-middleware": "^4.2.8", "@smithy/util-uri-escape": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" @@ -2562,17 +2575,17 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.10.3.tgz", - "integrity": "sha512-EfECiO/0fAfb590LBnUe7rI5ux7XfquQ8LBzTe7gxw0j9QW/q8UT/EHWHlxV/+jhQ3+Ssga9uUYXCQgImGMbNg==", + "version": "4.10.12", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.10.12.tgz", + "integrity": "sha512-VKO/HKoQ5OrSHW6AJUmEnUKeXI1/5LfCwO9cwyao7CmLvGnZeM1i36Lyful3LK1XU7HwTVieTqO1y2C/6t3qtA==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.20.1", - "@smithy/middleware-endpoint": "^4.4.2", - "@smithy/middleware-stack": "^4.2.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", - "@smithy/util-stream": "^4.5.8", + "@smithy/core": "^3.21.1", + "@smithy/middleware-endpoint": "^4.4.11", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.10", "tslib": "^2.6.2" }, "engines": { @@ -2580,9 +2593,9 @@ } }, "node_modules/@smithy/types": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.11.0.tgz", - "integrity": "sha512-mlrmL0DRDVe3mNrjTcVcZEgkFmufITfUAPBEA+AHYiIeYyJebso/He1qLbP3PssRe22KUzLRpQSdBPbXdgZ2VA==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -2592,13 +2605,13 @@ } }, "node_modules/@smithy/url-parser": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.7.tgz", - "integrity": "sha512-/RLtVsRV4uY3qPWhBDsjwahAtt3x2IsMGnP5W1b2VZIe+qgCqkLxI1UOHDZp1Q1QSOrdOR32MF3Ph2JfWT1VHg==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.8.tgz", + "integrity": "sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==", "license": "Apache-2.0", "dependencies": { - "@smithy/querystring-parser": "^4.2.7", - "@smithy/types": "^4.11.0", + "@smithy/querystring-parser": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2669,14 +2682,14 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.3.17", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.17.tgz", - "integrity": "sha512-dwN4GmivYF1QphnP3xJESXKtHvkkvKHSZI8GrSKMVoENVSKW2cFPRYC4ZgstYjUHdR3zwaDkIaTDIp26JuY7Cw==", + "version": "4.3.26", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.26.tgz", + "integrity": "sha512-vva0dzYUTgn7DdE0uaha10uEdAgmdLnNFowKFjpMm6p2R0XDk5FHPX3CBJLzWQkQXuEprsb0hGz9YwbicNWhjw==", "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.7", - "@smithy/smithy-client": "^4.10.3", - "@smithy/types": "^4.11.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.10.12", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2684,17 +2697,17 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.2.20", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.20.tgz", - "integrity": "sha512-VD/I4AEhF1lpB3B//pmOIMBNLMrtdMXwy9yCOfa2QkJGDr63vH3RqPbSAKzoGMov3iryCxTXCxSsyGmEB8PDpg==", + "version": "4.2.29", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.29.tgz", + "integrity": "sha512-c6D7IUBsZt/aNnTBHMTf+OVh+h/JcxUUgfTcIJaWRe6zhOum1X+pNKSZtZ+7fbOn5I99XVFtmrnXKv8yHHErTQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/config-resolver": "^4.4.5", - "@smithy/credential-provider-imds": "^4.2.7", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/property-provider": "^4.2.7", - "@smithy/smithy-client": "^4.10.3", - "@smithy/types": "^4.11.0", + "@smithy/config-resolver": "^4.4.6", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.10.12", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2702,13 +2715,13 @@ } }, "node_modules/@smithy/util-endpoints": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.7.tgz", - "integrity": "sha512-s4ILhyAvVqhMDYREeTS68R43B1V5aenV5q/V1QpRQJkCXib5BPRo4s7uNdzGtIKxaPHCfU/8YkvPAEvTpxgspg==", + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.8.tgz", + "integrity": "sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.7", - "@smithy/types": "^4.11.0", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2728,12 +2741,12 @@ } }, "node_modules/@smithy/util-middleware": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.7.tgz", - "integrity": "sha512-i1IkpbOae6NvIKsEeLLM9/2q4X+M90KV3oCFgWQI4q0Qz+yUZvsr+gZPdAEAtFhWQhAHpTsJO8DRJPuwVyln+w==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.8.tgz", + "integrity": "sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2741,13 +2754,13 @@ } }, "node_modules/@smithy/util-retry": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.7.tgz", - "integrity": "sha512-SvDdsQyF5CIASa4EYVT02LukPHVzAgUA4kMAuZ97QJc2BpAqZfA4PINB8/KOoCXEw9tsuv/jQjMeaHFvxdLNGg==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.8.tgz", + "integrity": "sha512-CfJqwvoRY0kTGe5AkQokpURNCT1u/MkRzMTASWMPPo2hNSnKtF1D45dQl3DE2LKLr4m+PW9mCeBMJr5mCAVThg==", "license": "Apache-2.0", "dependencies": { - "@smithy/service-error-classification": "^4.2.7", - "@smithy/types": "^4.11.0", + "@smithy/service-error-classification": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2755,14 +2768,14 @@ } }, "node_modules/@smithy/util-stream": { - "version": "4.5.8", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.8.tgz", - "integrity": "sha512-ZnnBhTapjM0YPGUSmOs0Mcg/Gg87k503qG4zU2v/+Js2Gu+daKOJMeqcQns8ajepY8tgzzfYxl6kQyZKml6O2w==", + "version": "4.5.10", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.10.tgz", + "integrity": "sha512-jbqemy51UFSZSp2y0ZmRfckmrzuKww95zT9BYMmuJ8v3altGcqjwoV1tzpOwuHaKrwQrCjIzOib499ymr2f98g==", "license": "Apache-2.0", "dependencies": { - "@smithy/fetch-http-handler": "^5.3.8", - "@smithy/node-http-handler": "^4.4.7", - "@smithy/types": "^4.11.0", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/types": "^4.12.0", "@smithy/util-base64": "^4.3.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-hex-encoding": "^4.2.0", @@ -2799,13 +2812,13 @@ } }, "node_modules/@smithy/util-waiter": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.7.tgz", - "integrity": "sha512-vHJFXi9b7kUEpHWUCY3Twl+9NPOZvQ0SAi+Ewtn48mbiJk4JY9MZmKQjGB4SCvVb9WPiSphZJYY6RIbs+grrzw==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.8.tgz", + "integrity": "sha512-n+lahlMWk+aejGuax7DPWtqav8HYnWxQwR+LCG2BgCUmaGcTe9qZCFsmw8TMg9iG75HOwhrJCX9TCJRLH+Yzqg==", "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.2.7", - "@smithy/types": "^4.11.0", + "@smithy/abort-controller": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2859,9 +2872,9 @@ } }, "node_modules/@types/aws-lambda": { - "version": "8.10.159", - "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.159.tgz", - "integrity": "sha512-SAP22WSGNN12OQ8PlCzGzRCZ7QDCwI85dQZbmpz7+mAk+L7j+wI7qnvmdKh+o7A5LaOp6QnOZ2NJphAZQTTHQg==", + "version": "8.10.160", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.160.tgz", + "integrity": "sha512-uoO4QVQNWFPJMh26pXtmtrRfGshPUSpMZGUyUQY20FhfHEElEBOPKgVmFs1z+kbpyBsRs2JnoOPT7++Z4GA9pA==", "license": "MIT" }, "node_modules/@types/cacheable-request": { @@ -2912,9 +2925,9 @@ } }, "node_modules/@types/node": { - "version": "24.10.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.4.tgz", - "integrity": "sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==", + "version": "24.10.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.9.tgz", + "integrity": "sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" @@ -3070,9 +3083,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.9.12", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.12.tgz", - "integrity": "sha512-Mij6Lij93pTAIsSYy5cyBQ975Qh9uLEc5rwGTpomiZeXZL9yIS6uORJakb3ScHgfs0serMMfIbXzokPMuEiRyw==", + "version": "2.9.18", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.18.tgz", + "integrity": "sha512-e23vBV1ZLfjb9apvfPk4rHVu2ry6RIr2Wfs+O324okSidrX7pTAnEJPCh/O5BtRlr7QtZI7ktOP3vsqr7Z5XoA==", "dev": true, "license": "Apache-2.0", "bin": { @@ -3232,9 +3245,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001763", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001763.tgz", - "integrity": "sha512-mh/dGtq56uN98LlNX9qdbKnzINhX0QzhiWBFEkFfsFO4QyCvL8YegrJAazCwXIeqkIob8BlZPGM3xdnY+sgmvQ==", + "version": "1.0.30001766", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001766.tgz", + "integrity": "sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==", "dev": true, "funding": [ { @@ -3559,9 +3572,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.267", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", - "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", + "version": "1.5.278", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.278.tgz", + "integrity": "sha512-dQ0tM1svDRQOwxnXxm+twlGTjr9Upvt8UFWAgmLsxEzFQxhbti4VwxmMjsDxVC51Zo84swW7FVCXEV+VAkhuPw==", "dev": true, "license": "ISC" }, @@ -3771,9 +3784,9 @@ } }, "node_modules/eslint-plugin-n": { - "version": "17.23.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.23.1.tgz", - "integrity": "sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==", + "version": "17.23.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.23.2.tgz", + "integrity": "sha512-RhWBeb7YVPmNa2eggvJooiuehdL76/bbfj/OJewyoGT80qn5PXdz8zMOTO6YHOsI7byPt7+Ighh/i/4a5/v7hw==", "dev": true, "license": "MIT", "dependencies": { @@ -3824,14 +3837,14 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", - "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", + "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", "dev": true, "license": "MIT", "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.11.7" + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.12" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -4366,9 +4379,9 @@ } }, "node_modules/globals": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", - "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.0.0.tgz", + "integrity": "sha512-gv5BeD2EssA793rlFWVPMMCqefTlpusw6/2TbAVMy0FzcG8wKJn4O+NqJ4+XWmmwrayJgw5TzrmWjFgmz1XPqw==", "dev": true, "license": "MIT", "engines": { @@ -5675,9 +5688,9 @@ } }, "node_modules/prettier": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", - "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.0.tgz", + "integrity": "sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==", "dev": true, "license": "MIT", "peer": true, @@ -6266,9 +6279,9 @@ } }, "node_modules/synckit": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", - "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6299,6 +6312,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "deprecated": "Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me", "license": "ISC", "dependencies": { "chownr": "^2.0.0", diff --git a/.ops/aws-setup/package.json b/.ops/aws-setup/package.json index 3221884259..59a95858a1 100644 --- a/.ops/aws-setup/package.json +++ b/.ops/aws-setup/package.json @@ -10,21 +10,21 @@ "lint:check:prettier": "prettier --check --ignore-path .prettierignore **/*.{json,md,mjs,ts}" }, "dependencies": { - "@pulumi/pulumi": "3.214.0", - "@pulumi/aws": "7.15.0", + "@pulumi/pulumi": "3.216.0", + "@pulumi/aws": "7.16.0", "@pulumi/awsx": "3.1.0" }, "devDependencies": { - "@babel/eslint-parser": "7.28.5", - "@eslint/compat": "2.0.0", + "@babel/eslint-parser": "7.28.6", + "@eslint/compat": "2.0.1", "@eslint/js": "9.39.2", - "@types/node": "24.10.4", + "@types/node": "24.10.9", "eslint": "9.39.2", "eslint-config-prettier": "10.1.8", - "eslint-plugin-n": "17.23.1", - "eslint-plugin-prettier": "5.5.4", + "eslint-plugin-n": "17.23.2", + "eslint-plugin-prettier": "5.5.5", "eslint-plugin-promise": "7.2.1", - "globals": "16.5.0", - "prettier": "3.7.4" + "globals": "17.0.0", + "prettier": "3.8.0" } } diff --git a/.ops/ecamp3-logging/files/elasticsearch/remove-old-indexes/docker-compose.yml b/.ops/ecamp3-logging/files/elasticsearch/remove-old-indexes/docker-compose.yml index bc3a1e875e..f159aab4b8 100644 --- a/.ops/ecamp3-logging/files/elasticsearch/remove-old-indexes/docker-compose.yml +++ b/.ops/ecamp3-logging/files/elasticsearch/remove-old-indexes/docker-compose.yml @@ -1,6 +1,6 @@ services: remove-old-indexes: - image: node:24.12.0 + image: node:24.13.0 volumes: - ./src:/src command: diff --git a/.ops/ecamp3-logging/values.yaml.gotmpl b/.ops/ecamp3-logging/values.yaml.gotmpl index f8aa2fd51d..0ac811a54d 100644 --- a/.ops/ecamp3-logging/values.yaml.gotmpl +++ b/.ops/ecamp3-logging/values.yaml.gotmpl @@ -62,7 +62,7 @@ elasticsearch: maxIndexAge: {{ .Environment.Values | get "ELASTIC_NODE_MAX_INDEX_AGE" "15" }} image: node # renovate: datasource=docker depName=node - tag: "24.12.0" + tag: "24.13.0" kibana: name: kibana diff --git a/.ops/ops-dashboard/Chart.lock b/.ops/ops-dashboard/Chart.lock index 1d41997282..89f6ef2169 100644 --- a/.ops/ops-dashboard/Chart.lock +++ b/.ops/ops-dashboard/Chart.lock @@ -1,15 +1,15 @@ dependencies: - name: oauth2-proxy repository: https://oauth2-proxy.github.io/manifests - version: 10.0.0 + version: 10.1.0 - name: kubernetes-dashboard repository: https://kubernetes.github.io/dashboard/ version: 7.14.0 - name: oauth2-proxy repository: https://oauth2-proxy.github.io/manifests - version: 10.0.0 + version: 10.1.0 - name: oauth2-proxy repository: https://oauth2-proxy.github.io/manifests - version: 10.0.0 -digest: sha256:a6e0902c21c57c15509d6d5a62015e6d7dacad82fcebd588b67111a2e304e3d5 -generated: "2025-12-25T13:50:05.121417013Z" + version: 10.1.0 +digest: sha256:2c4d419fdedfc77a73c565b8dd542911c35a7d16f997477b10111de9d8103a53 +generated: "2026-01-22T21:08:03.56830437Z" diff --git a/.ops/ops-dashboard/Chart.yaml b/.ops/ops-dashboard/Chart.yaml index a983de99c7..0e0a2ce244 100644 --- a/.ops/ops-dashboard/Chart.yaml +++ b/.ops/ops-dashboard/Chart.yaml @@ -26,16 +26,16 @@ appVersion: 0.1.0 dependencies: - name: oauth2-proxy alias: grafana-proxy - version: 10.0.0 + version: 10.1.0 repository: https://oauth2-proxy.github.io/manifests - name: kubernetes-dashboard version: 7.14.0 repository: https://kubernetes.github.io/dashboard/ - name: oauth2-proxy alias: kubernetes-dashboard-proxy - version: 10.0.0 + version: 10.1.0 repository: https://oauth2-proxy.github.io/manifests - name: oauth2-proxy alias: logging-proxy - version: 10.0.0 + version: 10.1.0 repository: https://oauth2-proxy.github.io/manifests diff --git a/.ops/performance-test/docker-compose.yml b/.ops/performance-test/docker-compose.yml index c1268c05e2..4733ce912f 100644 --- a/.ops/performance-test/docker-compose.yml +++ b/.ops/performance-test/docker-compose.yml @@ -1,6 +1,6 @@ services: performance-test: - image: grafana/k6:1.4.2 + image: grafana/k6:1.5.0 volumes: - .:/app user: ${USER_ID:-1000} diff --git a/.ops/performance-test/package-lock.json b/.ops/performance-test/package-lock.json index 6549de3a98..97fe396e9c 100644 --- a/.ops/performance-test/package-lock.json +++ b/.ops/performance-test/package-lock.json @@ -9,21 +9,21 @@ "version": "1.0.0", "license": "ISC", "devDependencies": { - "@types/k6": "1.4.0" + "@types/k6": "1.5.0" } }, "node_modules/@types/k6": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@types/k6/-/k6-1.4.0.tgz", - "integrity": "sha512-2tgKVnzNXZTZT1TDAGLY/3cuvHPZLyOF751N7M8T2dBgWzInzUVZYjGn9zVW01S1yNLqAr1az9gctyJHTW6GRQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/k6/-/k6-1.5.0.tgz", + "integrity": "sha512-eQmSjjgYO1irlOmoZzGSuoYsK2uMrX3m/flcnqt5IDLA9D/vkPcRsAKfe9D6GrjXATD/Oo9ynQ6vc13V02WRmQ==", "dev": true } }, "dependencies": { "@types/k6": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@types/k6/-/k6-1.4.0.tgz", - "integrity": "sha512-2tgKVnzNXZTZT1TDAGLY/3cuvHPZLyOF751N7M8T2dBgWzInzUVZYjGn9zVW01S1yNLqAr1az9gctyJHTW6GRQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/k6/-/k6-1.5.0.tgz", + "integrity": "sha512-eQmSjjgYO1irlOmoZzGSuoYsK2uMrX3m/flcnqt5IDLA9D/vkPcRsAKfe9D6GrjXATD/Oo9ynQ6vc13V02WRmQ==", "dev": true } } diff --git a/.ops/performance-test/package.json b/.ops/performance-test/package.json index b654a9d04e..d9d759135c 100644 --- a/.ops/performance-test/package.json +++ b/.ops/performance-test/package.json @@ -10,6 +10,6 @@ "author": "", "license": "ISC", "devDependencies": { - "@types/k6": "1.4.0" + "@types/k6": "1.5.0" } } diff --git a/api/Dockerfile b/api/Dockerfile index 24f15dbcf2..9c106ccd27 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -3,7 +3,7 @@ # Adapted from https://github.com/api-platform/api-platform/blob/fa1c5808305d7cadbf7b8392e0fddb6e80fb2092/api/Dockerfile # Versions -FROM dunglas/frankenphp:1.9-php8.4.14 AS frankenphp_upstream +FROM dunglas/frankenphp:1.11-php8.5.2 AS frankenphp_upstream # the different stages of this Dockerfile are meant to be built into separate images # https://docs.docker.com/develop/develop-images/multistage-build/#stop-at-a-specific-build-stage @@ -91,7 +91,6 @@ COPY --link docker/php/conf.d/api-platform.prod.ini $PHP_INI_DIR/conf.d/ # prevent the reinstallation of vendors at every changes in the source code COPY --link composer.* symfony.* ./ -COPY --link patch patch/ RUN set -eux; \ composer install --no-cache --prefer-dist --no-dev --no-autoloader --no-scripts --no-progress diff --git a/api/composer.json b/api/composer.json index 264c49bed2..f6eb17f15e 100644 --- a/api/composer.json +++ b/api/composer.json @@ -5,34 +5,34 @@ "php": ">=8.4.0", "ext-ctype": "*", "ext-iconv": "*", - "api-platform/doctrine-orm": "4.2.11", - "api-platform/doctrine-common": "4.2.11", - "api-platform/documentation": "4.2.11", - "api-platform/hal": "4.2.11", - "api-platform/http-cache": "4.2.11", - "api-platform/json-api": "4.2.11", - "api-platform/metadata": "4.2.11", - "api-platform/openapi": "4.2.11", - "api-platform/serializer": "4.2.11", - "api-platform/state": "4.2.11", - "api-platform/symfony": "4.2.11", - "api-platform/validator": "4.2.11", + "api-platform/doctrine-orm": "4.2.13", + "api-platform/doctrine-common": "4.2.14", + "api-platform/documentation": "4.2.14", + "api-platform/hal": "4.2.14", + "api-platform/http-cache": "4.2.14", + "api-platform/json-api": "4.2.14", + "api-platform/metadata": "4.2.14", + "api-platform/openapi": "4.2.14", + "api-platform/serializer": "4.2.14", + "api-platform/state": "4.2.14", + "api-platform/symfony": "4.2.13", + "api-platform/validator": "4.2.14", "composer/package-versions-deprecated": "1.11.99", "doctrine/common": "3.5.0", "doctrine/doctrine-bundle": "3.2.2", "doctrine/doctrine-migrations-bundle": "4.0.0", - "doctrine/orm": "3.6.0", + "doctrine/orm": "3.6.1", "exercise/htmlpurifier-bundle": "5.2", "friendsofsymfony/http-cache": "3.1.2", - "friendsofsymfony/http-cache-bundle": "3.2.0", + "friendsofsymfony/http-cache-bundle": "3.3.0", "gesdinet/jwt-refresh-token-bundle": "1.5.0", "google/recaptcha": "1.3.1", "guzzlehttp/guzzle": "7.10.0", "knpuniversity/oauth2-client-bundle": "2.20.1", "league/oauth2-google": "4.1.0", "lexik/jwt-authentication-bundle": "3.2.0", - "nelmio/cors-bundle": "2.6.0", - "phpdocumentor/reflection-docblock": "5.6.6", + "nelmio/cors-bundle": "2.6.1", + "phpdocumentor/reflection-docblock": "6.0.1", "phpmyadmin/sql-parser": "6.0.0", "ramsey/uuid": "4.9.2", "rize/uri-template": "0.4.1", @@ -44,7 +44,7 @@ "symfony/dotenv": "7.4.0", "symfony/expression-language": "7.4.0", "symfony/flex": "2.10.0", - "symfony/framework-bundle": "7.4.1", + "symfony/framework-bundle": "7.4.3", "symfony/http-client": "7.4.3", "symfony/intl": "7.4.0", "symfony/mailer": "7.4.3", @@ -55,24 +55,24 @@ "symfony/runtime": "7.4.1", "symfony/security-bundle": "7.4.0", "symfony/serializer": "7.4.3", - "symfony/translation": "7.4.0", + "symfony/translation": "7.4.3", "symfony/twig-bundle": "7.4.3", - "symfony/validator": "7.4.2", + "symfony/validator": "7.4.3", "symfony/yaml": "7.4.1", "twig/cssinliner-extra": "^3.4", - "twig/extra-bundle": "3.22.2", - "webonyx/graphql-php": "15.29.3" + "twig/extra-bundle": "3.23.0", + "webonyx/graphql-php": "15.29.4" }, "require-dev": { - "api-platform/graphql": "4.2.11", - "brianium/paratest": "v7.16.0", - "friendsofphp/php-cs-fixer": "3.92.3", - "hautelook/alice-bundle": "2.17.0", + "api-platform/graphql": "4.2.14", + "brianium/paratest": "v7.16.1", + "friendsofphp/php-cs-fixer": "3.92.5", + "hautelook/alice-bundle": "2.17.2", "justinrainbow/json-schema": "6.6.4", "php-coveralls/php-coveralls": "2.9.1", - "phpstan/phpstan": "2.1.33", - "phpunit/phpunit": "12.5.4", - "rector/rector": "2.3.0", + "phpstan/phpstan": "2.1.34", + "phpunit/phpunit": "12.5.6", + "rector/rector": "2.3.2", "psalm/phar": "6.14.3", "spatie/phpunit-snapshot-assertions": "5.2.3", "symfony/browser-kit": "7.4.3", @@ -81,7 +81,7 @@ "symfony/maker-bundle": "1.65.1", "symfony/stopwatch": "7.4.0", "symfony/var-dumper": "7.4.3", - "symfony/web-profiler-bundle": "7.4.0" + "symfony/web-profiler-bundle": "7.4.3" }, "config": { "optimize-autoloader": true, diff --git a/api/composer.lock b/api/composer.lock index daa7a5d98e..ec61fc062e 100644 --- a/api/composer.lock +++ b/api/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "663a30b11b58d504aa43a8c94b604c62", + "content-hash": "0e7e80163413e0f0edeacde6f17069fd", "packages": [ { "name": "api-platform/doctrine-common", - "version": "v4.2.11", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-common.git", - "reference": "281f2ef1433253ec63a4f845622639665c1d68c5" + "reference": "a29e9015ecf4547485ec7fbce52da4ee95c282a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/doctrine-common/zipball/281f2ef1433253ec63a4f845622639665c1d68c5", - "reference": "281f2ef1433253ec63a4f845622639665c1d68c5", + "url": "https://api.github.com/repos/api-platform/doctrine-common/zipball/a29e9015ecf4547485ec7fbce52da4ee95c282a0", + "reference": "a29e9015ecf4547485ec7fbce52da4ee95c282a0", "shasum": "" }, "require": { @@ -35,7 +35,7 @@ "doctrine/mongodb-odm": "^2.10", "doctrine/orm": "^2.17 || ^3.0", "phpspec/prophecy-phpunit": "^2.2", - "phpunit/phpunit": "11.5.x-dev", + "phpunit/phpunit": "^12.2", "symfony/type-info": "^7.3 || ^8.0" }, "suggest": { @@ -92,22 +92,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-common/tree/v4.2.11" + "source": "https://github.com/api-platform/doctrine-common/tree/v4.2.14" }, - "time": "2025-12-04T14:20:26+00:00" + "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/doctrine-orm", - "version": "v4.2.11", + "version": "v4.2.13", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-orm.git", - "reference": "6ea550f2db2db04979aefd654c115ecd6f897039" + "reference": "0a16719be88909fd0a3d1a49c75691c0dcbad254" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/doctrine-orm/zipball/6ea550f2db2db04979aefd654c115ecd6f897039", - "reference": "6ea550f2db2db04979aefd654c115ecd6f897039", + "url": "https://api.github.com/repos/api-platform/doctrine-orm/zipball/0a16719be88909fd0a3d1a49c75691c0dcbad254", + "reference": "0a16719be88909fd0a3d1a49c75691c0dcbad254", "shasum": "" }, "require": { @@ -120,7 +120,7 @@ "require-dev": { "doctrine/doctrine-bundle": "^2.11 || ^3.1", "phpspec/prophecy-phpunit": "^2.2", - "phpunit/phpunit": "11.5.x-dev", + "phpunit/phpunit": "^12.2", "ramsey/uuid": "^4.7", "ramsey/uuid-doctrine": "^2.0", "symfony/cache": "^6.4 || ^7.0 || ^8.0", @@ -179,22 +179,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-orm/tree/v4.2.11" + "source": "https://github.com/api-platform/doctrine-orm/tree/v4.2.13" }, - "time": "2025-12-04T14:20:26+00:00" + "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/documentation", - "version": "v4.2.11", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/documentation.git", - "reference": "8910f2a0aa7910ed807f128510553b24152e5ea5" + "reference": "873543a827df5c25b008bd730f2096701e1943b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/documentation/zipball/8910f2a0aa7910ed807f128510553b24152e5ea5", - "reference": "8910f2a0aa7910ed807f128510553b24152e5ea5", + "url": "https://api.github.com/repos/api-platform/documentation/zipball/873543a827df5c25b008bd730f2096701e1943b8", + "reference": "873543a827df5c25b008bd730f2096701e1943b8", "shasum": "" }, "require": { @@ -202,7 +202,7 @@ "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "11.5.x-dev" + "phpunit/phpunit": "^12.2" }, "type": "project", "extra": { @@ -242,22 +242,22 @@ ], "description": "API Platform documentation controller.", "support": { - "source": "https://github.com/api-platform/documentation/tree/v4.2.11" + "source": "https://github.com/api-platform/documentation/tree/v4.2.14" }, - "time": "2025-11-30T12:55:42+00:00" + "time": "2025-12-27T22:15:57+00:00" }, { "name": "api-platform/hal", - "version": "v4.2.11", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/hal.git", - "reference": "75c3352f2b2e7576aa02c0a18f635aed7f3c116b" + "reference": "59b48d5e51d4864e6daf39e015dffa6c21abe9e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/hal/zipball/75c3352f2b2e7576aa02c0a18f635aed7f3c116b", - "reference": "75c3352f2b2e7576aa02c0a18f635aed7f3c116b", + "url": "https://api.github.com/repos/api-platform/hal/zipball/59b48d5e51d4864e6daf39e015dffa6c21abe9e9", + "reference": "59b48d5e51d4864e6daf39e015dffa6c21abe9e9", "shasum": "" }, "require": { @@ -270,7 +270,7 @@ }, "require-dev": { "api-platform/json-schema": "^4.1.11", - "phpunit/phpunit": "11.5.x-dev" + "phpunit/phpunit": "^12.2" }, "type": "library", "extra": { @@ -320,22 +320,22 @@ ], "support": { "issues": "https://github.com/api-platform/hal/issues", - "source": "https://github.com/api-platform/hal/tree/v4.2.11" + "source": "https://github.com/api-platform/hal/tree/v4.2.14" }, - "time": "2025-11-30T16:14:56+00:00" + "time": "2025-12-27T22:15:57+00:00" }, { "name": "api-platform/http-cache", - "version": "v4.2.11", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/http-cache.git", - "reference": "4bb2eab81407f493f54f51be7aa1918f362c14b5" + "reference": "04a9239b67425f68ed2d372c2c731f14342dea45" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/http-cache/zipball/4bb2eab81407f493f54f51be7aa1918f362c14b5", - "reference": "4bb2eab81407f493f54f51be7aa1918f362c14b5", + "url": "https://api.github.com/repos/api-platform/http-cache/zipball/04a9239b67425f68ed2d372c2c731f14342dea45", + "reference": "04a9239b67425f68ed2d372c2c731f14342dea45", "shasum": "" }, "require": { @@ -347,7 +347,7 @@ "require-dev": { "guzzlehttp/guzzle": "^6.0 || ^7.0 || ^8.0", "phpspec/prophecy-phpunit": "^2.2", - "phpunit/phpunit": "11.5.x-dev", + "phpunit/phpunit": "^12.2", "symfony/dependency-injection": "^6.4 || ^7.0 || ^8.0", "symfony/http-client": "^6.4 || ^7.0 || ^8.0", "symfony/type-info": "^7.3 || ^8.0" @@ -400,22 +400,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/http-cache/tree/v4.2.11" + "source": "https://github.com/api-platform/http-cache/tree/v4.2.14" }, - "time": "2025-11-30T12:55:42+00:00" + "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/hydra", - "version": "v4.2.11", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/hydra.git", - "reference": "80491f175647d0a63eb96035b2468fc1c2a76c37" + "reference": "866611a986f4f52da7807b04a0b2cf64e314ab56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/hydra/zipball/80491f175647d0a63eb96035b2468fc1c2a76c37", - "reference": "80491f175647d0a63eb96035b2468fc1c2a76c37", + "url": "https://api.github.com/repos/api-platform/hydra/zipball/866611a986f4f52da7807b04a0b2cf64e314ab56", + "reference": "866611a986f4f52da7807b04a0b2cf64e314ab56", "shasum": "" }, "require": { @@ -435,7 +435,7 @@ "api-platform/doctrine-orm": "^4.2", "phpspec/prophecy": "^1.19", "phpspec/prophecy-phpunit": "^2.2", - "phpunit/phpunit": "11.5.x-dev" + "phpunit/phpunit": "^12.2" }, "type": "library", "extra": { @@ -487,22 +487,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/hydra/tree/v4.2.11" + "source": "https://github.com/api-platform/hydra/tree/v4.2.14" }, - "time": "2025-12-18T14:34:13+00:00" + "time": "2025-12-27T22:15:57+00:00" }, { "name": "api-platform/json-api", - "version": "v4.2.11", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/json-api.git", - "reference": "2bb93263f900401c41476b93bcf03c386c9500d4" + "reference": "86f93ac31f20faeeca5cacd74d1318dc273e6b93" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/json-api/zipball/2bb93263f900401c41476b93bcf03c386c9500d4", - "reference": "2bb93263f900401c41476b93bcf03c386c9500d4", + "url": "https://api.github.com/repos/api-platform/json-api/zipball/86f93ac31f20faeeca5cacd74d1318dc273e6b93", + "reference": "86f93ac31f20faeeca5cacd74d1318dc273e6b93", "shasum": "" }, "require": { @@ -519,7 +519,7 @@ "require-dev": { "phpspec/prophecy": "^1.19", "phpspec/prophecy-phpunit": "^2.2", - "phpunit/phpunit": "11.5.x-dev", + "phpunit/phpunit": "^12.2", "symfony/type-info": "^7.3 || ^8.0" }, "type": "library", @@ -569,22 +569,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/json-api/tree/v4.2.11" + "source": "https://github.com/api-platform/json-api/tree/v4.2.14" }, - "time": "2025-12-19T14:13:59+00:00" + "time": "2025-12-27T22:15:57+00:00" }, { "name": "api-platform/json-schema", - "version": "v4.2.11", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/json-schema.git", - "reference": "6a5f901a744018e48b8b94bbf798cd4f617cfcde" + "reference": "b69ebff7277655c1eb91bc0092fad4bc80aed4fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/json-schema/zipball/6a5f901a744018e48b8b94bbf798cd4f617cfcde", - "reference": "6a5f901a744018e48b8b94bbf798cd4f617cfcde", + "url": "https://api.github.com/repos/api-platform/json-schema/zipball/b69ebff7277655c1eb91bc0092fad4bc80aed4fb", + "reference": "b69ebff7277655c1eb91bc0092fad4bc80aed4fb", "shasum": "" }, "require": { @@ -598,7 +598,7 @@ }, "require-dev": { "phpspec/prophecy-phpunit": "^2.2", - "phpunit/phpunit": "11.5.x-dev" + "phpunit/phpunit": "^12.2" }, "type": "library", "extra": { @@ -650,22 +650,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/json-schema/tree/v4.2.11" + "source": "https://github.com/api-platform/json-schema/tree/v4.2.14" }, - "time": "2025-12-02T13:32:19+00:00" + "time": "2026-01-23T14:31:09+00:00" }, { "name": "api-platform/jsonld", - "version": "v4.2.11", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/jsonld.git", - "reference": "3889b185376198a182d2527c48ec0b29b604505f" + "reference": "ef0a361b0f29158243478d3fff5038ec2f5aa76c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/jsonld/zipball/3889b185376198a182d2527c48ec0b29b604505f", - "reference": "3889b185376198a182d2527c48ec0b29b604505f", + "url": "https://api.github.com/repos/api-platform/jsonld/zipball/ef0a361b0f29158243478d3fff5038ec2f5aa76c", + "reference": "ef0a361b0f29158243478d3fff5038ec2f5aa76c", "shasum": "" }, "require": { @@ -675,7 +675,7 @@ "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "11.5.x-dev", + "phpunit/phpunit": "^12.2", "symfony/type-info": "^7.3 || ^8.0" }, "type": "library", @@ -730,22 +730,22 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/jsonld/tree/v4.2.11" + "source": "https://github.com/api-platform/jsonld/tree/v4.2.14" }, - "time": "2025-12-18T14:34:13+00:00" + "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/metadata", - "version": "v4.2.11", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/metadata.git", - "reference": "533774ca55a4f2be9da72da344d5e3e2982fbc86" + "reference": "590195d1038e66a039f1847b43040b7e6b78475f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/metadata/zipball/533774ca55a4f2be9da72da344d5e3e2982fbc86", - "reference": "533774ca55a4f2be9da72da344d5e3e2982fbc86", + "url": "https://api.github.com/repos/api-platform/metadata/zipball/590195d1038e66a039f1847b43040b7e6b78475f", + "reference": "590195d1038e66a039f1847b43040b7e6b78475f", "shasum": "" }, "require": { @@ -763,7 +763,7 @@ "api-platform/state": "^4.2.4", "phpspec/prophecy-phpunit": "^2.2", "phpstan/phpdoc-parser": "^1.29 || ^2.0", - "phpunit/phpunit": "11.5.x-dev", + "phpunit/phpunit": "^12.2", "symfony/config": "^6.4 || ^7.0 || ^8.0", "symfony/routing": "^6.4 || ^7.0 || ^8.0", "symfony/var-dumper": "^6.4 || ^7.0 || ^8.0", @@ -828,22 +828,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/metadata/tree/v4.2.11" + "source": "https://github.com/api-platform/metadata/tree/v4.2.14" }, - "time": "2025-12-18T14:34:13+00:00" + "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/openapi", - "version": "v4.2.11", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/openapi.git", - "reference": "ea49d6d7170f8ecc1c239e7769708628183096b8" + "reference": "39ed78187a4a8e7c1c1fc9b5a3ef3913e3e914e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/openapi/zipball/ea49d6d7170f8ecc1c239e7769708628183096b8", - "reference": "ea49d6d7170f8ecc1c239e7769708628183096b8", + "url": "https://api.github.com/repos/api-platform/openapi/zipball/39ed78187a4a8e7c1c1fc9b5a3ef3913e3e914e3", + "reference": "39ed78187a4a8e7c1c1fc9b5a3ef3913e3e914e3", "shasum": "" }, "require": { @@ -862,7 +862,7 @@ "api-platform/doctrine-odm": "^4.2", "api-platform/doctrine-orm": "^4.2", "phpspec/prophecy-phpunit": "^2.2", - "phpunit/phpunit": "11.5.x-dev", + "phpunit/phpunit": "^12.2", "symfony/type-info": "^7.3 || ^8.0" }, "type": "library", @@ -918,22 +918,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/openapi/tree/v4.2.11" + "source": "https://github.com/api-platform/openapi/tree/v4.2.14" }, - "time": "2025-11-30T12:55:42+00:00" + "time": "2026-01-17T19:34:53+00:00" }, { "name": "api-platform/serializer", - "version": "v4.2.11", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/serializer.git", - "reference": "a511d4ba522c3ebbd78c9e1f05e0918978d72a43" + "reference": "006df770d82860922c7faee493d5d3c14906f810" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/serializer/zipball/a511d4ba522c3ebbd78c9e1f05e0918978d72a43", - "reference": "a511d4ba522c3ebbd78c9e1f05e0918978d72a43", + "url": "https://api.github.com/repos/api-platform/serializer/zipball/006df770d82860922c7faee493d5d3c14906f810", + "reference": "006df770d82860922c7faee493d5d3c14906f810", "shasum": "" }, "require": { @@ -953,7 +953,7 @@ "api-platform/openapi": "^4.2", "doctrine/collections": "^2.1", "phpspec/prophecy-phpunit": "^2.2", - "phpunit/phpunit": "11.5.x-dev", + "phpunit/phpunit": "^12.2", "symfony/mercure-bundle": "*", "symfony/type-info": "^7.3 || ^8.0", "symfony/var-dumper": "^6.4 || ^7.0 || ^8.0", @@ -1011,22 +1011,22 @@ "serializer" ], "support": { - "source": "https://github.com/api-platform/serializer/tree/v4.2.11" + "source": "https://github.com/api-platform/serializer/tree/v4.2.14" }, - "time": "2025-12-18T14:36:58+00:00" + "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/state", - "version": "v4.2.11", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/state.git", - "reference": "b9644669f953a76742c9f49d571ff42c68e581d1" + "reference": "fa3e7b41bcb54e7ba6d3078de224620e422d6732" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/state/zipball/b9644669f953a76742c9f49d571ff42c68e581d1", - "reference": "b9644669f953a76742c9f49d571ff42c68e581d1", + "url": "https://api.github.com/repos/api-platform/state/zipball/fa3e7b41bcb54e7ba6d3078de224620e422d6732", + "reference": "fa3e7b41bcb54e7ba6d3078de224620e422d6732", "shasum": "" }, "require": { @@ -1041,7 +1041,7 @@ "require-dev": { "api-platform/serializer": "^4.2.4", "api-platform/validator": "^4.2.4", - "phpunit/phpunit": "11.5.x-dev", + "phpunit/phpunit": "^12.2", "symfony/http-foundation": "^6.4.14 || ^7.0 || ^8.0", "symfony/object-mapper": "^7.4 || ^8.0", "symfony/type-info": "^7.4 || ^8.0", @@ -1108,35 +1108,35 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/state/tree/v4.2.11" + "source": "https://github.com/api-platform/state/tree/v4.2.14" }, - "time": "2025-12-17T15:10:17+00:00" + "time": "2026-01-12T13:36:15+00:00" }, { "name": "api-platform/symfony", - "version": "v4.2.11", + "version": "v4.2.13", "source": { "type": "git", "url": "https://github.com/api-platform/symfony.git", - "reference": "ab93a0043558beeb7ccd7f2c97304565d4872bb3" + "reference": "4ff4ef66768fa2b9d7d124a2096b095bad0289d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/symfony/zipball/ab93a0043558beeb7ccd7f2c97304565d4872bb3", - "reference": "ab93a0043558beeb7ccd7f2c97304565d4872bb3", + "url": "https://api.github.com/repos/api-platform/symfony/zipball/4ff4ef66768fa2b9d7d124a2096b095bad0289d4", + "reference": "4ff4ef66768fa2b9d7d124a2096b095bad0289d4", "shasum": "" }, "require": { - "api-platform/documentation": "^4.2.3", - "api-platform/http-cache": "^4.2.3", - "api-platform/hydra": "^4.2.3", - "api-platform/json-schema": "^4.2.3", - "api-platform/jsonld": "^4.2.3", - "api-platform/metadata": "^4.2.3", - "api-platform/openapi": "^4.2.3", - "api-platform/serializer": "^4.2.4", - "api-platform/state": "^4.2.4", - "api-platform/validator": "^4.2.3", + "api-platform/documentation": "^4.2.12", + "api-platform/http-cache": "^4.2.12", + "api-platform/hydra": "^4.2.12", + "api-platform/json-schema": "^4.2.12", + "api-platform/jsonld": "^4.2.12", + "api-platform/metadata": "^4.2.12", + "api-platform/openapi": "^4.2.12", + "api-platform/serializer": "^4.2.12", + "api-platform/state": "^4.2.12", + "api-platform/validator": "^4.2.12", "php": ">=8.2", "symfony/asset": "^6.4 || ^7.0 || ^8.0", "symfony/finder": "^6.4 || ^7.0 || ^8.0", @@ -1147,14 +1147,14 @@ "willdurand/negotiation": "^3.1" }, "require-dev": { - "api-platform/doctrine-common": "^4.2.3", - "api-platform/doctrine-odm": "^4.2.3", - "api-platform/doctrine-orm": "^4.2.3", - "api-platform/elasticsearch": "^4.2.3", - "api-platform/graphql": "^4.2.3", - "api-platform/hal": "^4.2.3", + "api-platform/doctrine-common": "^4.2.12", + "api-platform/doctrine-odm": "^4.2.12", + "api-platform/doctrine-orm": "^4.2.12", + "api-platform/elasticsearch": "^4.2.12", + "api-platform/graphql": "^4.2.12", + "api-platform/hal": "^4.2.12", "phpspec/prophecy-phpunit": "^2.2", - "phpunit/phpunit": "11.5.x-dev", + "phpunit/phpunit": "^12.2", "symfony/expression-language": "^6.4 || ^7.0 || ^8.0", "symfony/intl": "^6.4 || ^7.0 || ^8.0", "symfony/mercure-bundle": "*", @@ -1236,22 +1236,22 @@ "symfony" ], "support": { - "source": "https://github.com/api-platform/symfony/tree/v4.2.11" + "source": "https://github.com/api-platform/symfony/tree/v4.2.13" }, - "time": "2025-12-18T14:34:13+00:00" + "time": "2026-01-16T16:29:22+00:00" }, { "name": "api-platform/validator", - "version": "v4.2.11", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/validator.git", - "reference": "850035ba6165e2452c1777bee2272205bf8c771e" + "reference": "346a5916d9706da9b0981ebec3d6278802e96ca9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/validator/zipball/850035ba6165e2452c1777bee2272205bf8c771e", - "reference": "850035ba6165e2452c1777bee2272205bf8c771e", + "url": "https://api.github.com/repos/api-platform/validator/zipball/346a5916d9706da9b0981ebec3d6278802e96ca9", + "reference": "346a5916d9706da9b0981ebec3d6278802e96ca9", "shasum": "" }, "require": { @@ -1265,7 +1265,7 @@ }, "require-dev": { "phpspec/prophecy-phpunit": "^2.2", - "phpunit/phpunit": "11.5.x-dev" + "phpunit/phpunit": "^12.2" }, "type": "library", "extra": { @@ -1312,9 +1312,9 @@ "validator" ], "support": { - "source": "https://github.com/api-platform/validator/tree/v4.2.11" + "source": "https://github.com/api-platform/validator/tree/v4.2.14" }, - "time": "2025-12-04T14:20:26+00:00" + "time": "2026-01-16T13:22:15+00:00" }, { "name": "brick/math", @@ -1517,16 +1517,16 @@ }, { "name": "doctrine/collections", - "version": "2.4.0", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "9acfeea2e8666536edff3d77c531261c63680160" + "reference": "7713da39d8e237f28411d6a616a3dce5e20d5de2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/9acfeea2e8666536edff3d77c531261c63680160", - "reference": "9acfeea2e8666536edff3d77c531261c63680160", + "url": "https://api.github.com/repos/doctrine/collections/zipball/7713da39d8e237f28411d6a616a3dce5e20d5de2", + "reference": "7713da39d8e237f28411d6a616a3dce5e20d5de2", "shasum": "" }, "require": { @@ -1583,7 +1583,7 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/2.4.0" + "source": "https://github.com/doctrine/collections/tree/2.6.0" }, "funding": [ { @@ -1599,7 +1599,7 @@ "type": "tidelift" } ], - "time": "2025-10-25T09:18:13+00:00" + "time": "2026-01-15T10:01:58+00:00" }, { "name": "doctrine/common", @@ -2055,16 +2055,16 @@ }, { "name": "doctrine/event-manager", - "version": "2.0.1", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e" + "reference": "c07799fcf5ad362050960a0fd068dded40b1e312" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/b680156fa328f1dfd874fd48c7026c41570b9c6e", - "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/c07799fcf5ad362050960a0fd068dded40b1e312", + "reference": "c07799fcf5ad362050960a0fd068dded40b1e312", "shasum": "" }, "require": { @@ -2074,10 +2074,10 @@ "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^12", - "phpstan/phpstan": "^1.8.8", - "phpunit/phpunit": "^10.5", - "vimeo/psalm": "^5.24" + "doctrine/coding-standard": "^14", + "phpdocumentor/guides-cli": "^1.4", + "phpstan/phpstan": "^2.1.32", + "phpunit/phpunit": "^10.5.58" }, "type": "library", "autoload": { @@ -2126,7 +2126,7 @@ ], "support": { "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/2.0.1" + "source": "https://github.com/doctrine/event-manager/tree/2.1.0" }, "funding": [ { @@ -2142,7 +2142,7 @@ "type": "tidelift" } ], - "time": "2024-05-22T20:47:39+00:00" + "time": "2026-01-17T22:40:21+00:00" }, { "name": "doctrine/inflector", @@ -2236,30 +2236,29 @@ }, { "name": "doctrine/instantiator", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" + "reference": "23da848e1a2308728fe5fdddabf4be17ff9720c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/23da848e1a2308728fe5fdddabf4be17ff9720c7", + "reference": "23da848e1a2308728fe5fdddabf4be17ff9720c7", "shasum": "" }, "require": { - "php": "^8.1" + "php": "^8.4" }, "require-dev": { - "doctrine/coding-standard": "^11", + "doctrine/coding-standard": "^14", "ext-pdo": "*", "ext-phar": "*", "phpbench/phpbench": "^1.2", - "phpstan/phpstan": "^1.9.4", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^5.4" + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5.58" }, "type": "library", "autoload": { @@ -2286,7 +2285,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/2.0.0" + "source": "https://github.com/doctrine/instantiator/tree/2.1.0" }, "funding": [ { @@ -2302,7 +2301,7 @@ "type": "tidelift" } ], - "time": "2022-12-30T00:23:10+00:00" + "time": "2026-01-05T06:47:08+00:00" }, { "name": "doctrine/lexer", @@ -2486,16 +2485,16 @@ }, { "name": "doctrine/orm", - "version": "3.6.0", + "version": "3.6.1", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "d4e9276e79602b1eb4c4029c6c999b0d93478e2f" + "reference": "2148940290e4c44b9101095707e71fb590832fa5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/d4e9276e79602b1eb4c4029c6c999b0d93478e2f", - "reference": "d4e9276e79602b1eb4c4029c6c999b0d93478e2f", + "url": "https://api.github.com/repos/doctrine/orm/zipball/2148940290e4c44b9101095707e71fb590832fa5", + "reference": "2148940290e4c44b9101095707e71fb590832fa5", "shasum": "" }, "require": { @@ -2568,9 +2567,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.6.0" + "source": "https://github.com/doctrine/orm/tree/3.6.1" }, - "time": "2025-12-19T20:36:14+00:00" + "time": "2026-01-09T05:28:15+00:00" }, { "name": "doctrine/persistence", @@ -2993,27 +2992,27 @@ }, { "name": "friendsofsymfony/http-cache-bundle", - "version": "3.2.0", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/FriendsOfSymfony/FOSHttpCacheBundle.git", - "reference": "389b6d84d6fc754279eb52cbdd57f1952907dc0e" + "reference": "9a7b7ceb37d7801b2e300dbc1d1d8352c9db774a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfSymfony/FOSHttpCacheBundle/zipball/389b6d84d6fc754279eb52cbdd57f1952907dc0e", - "reference": "389b6d84d6fc754279eb52cbdd57f1952907dc0e", + "url": "https://api.github.com/repos/FriendsOfSymfony/FOSHttpCacheBundle/zipball/9a7b7ceb37d7801b2e300dbc1d1d8352c9db774a", + "reference": "9a7b7ceb37d7801b2e300dbc1d1d8352c9db774a", "shasum": "" }, "require": { "friendsofsymfony/http-cache": "^3.0", "php": "^8.1", - "symfony/dependency-injection": "^6.4 || ^7.0", - "symfony/expression-language": "^6.4 || ^7.0", - "symfony/framework-bundle": "^6.4 || ^7.0", - "symfony/http-foundation": "^6.4 || ^7.0", - "symfony/http-kernel": "^6.4 || ^7.0", - "symfony/security-bundle": "^6.4 || ^7.0" + "symfony/dependency-injection": "^6.4 || ^7.0 || ^8.0", + "symfony/expression-language": "^6.4 || ^7.0 || ^8.0", + "symfony/framework-bundle": "^6.4 || ^7.0 || ^8.0", + "symfony/http-foundation": "^6.4 || ^7.0 || ^8.0", + "symfony/http-kernel": "^6.4 || ^7.0 || ^8.0", + "symfony/security-bundle": "^6.4 || ^7.0 || ^8.0" }, "conflict": { "symfony/monolog-bridge": "<3.4.4", @@ -3023,8 +3022,8 @@ "friendsofphp/php-cs-fixer": "^3.54", "guzzlehttp/guzzle": "^7.2", "jean-beru/fos-http-cache-cloudfront": "^1.1.1", - "matthiasnoback/symfony-config-test": "^4.3.0 || ^5.1", - "matthiasnoback/symfony-dependency-injection-test": "^4.3.1 || ^5.0", + "matthiasnoback/symfony-config-test": "^5.2 || ^6.1", + "matthiasnoback/symfony-dependency-injection-test": "^5.1 || ^6.2", "mockery/mockery": "^1.6.9", "monolog/monolog": "*", "php-http/discovery": "^1.13", @@ -3035,14 +3034,14 @@ "phpstan/phpstan": "^2", "phpstan/phpstan-symfony": "^2", "phpunit/phpunit": "^10.5", - "symfony/browser-kit": "^6.4 || ^7.0", - "symfony/console": "^6.4 || ^7.0", - "symfony/css-selector": "^6.4 || ^7.0", - "symfony/finder": "^6.4 || ^7.0", - "symfony/monolog-bundle": "^3.0", - "symfony/routing": "^6.4 || ^7.0", - "symfony/twig-bundle": "^6.4 || ^7.0", - "symfony/yaml": "^6.4 || ^7.0", + "symfony/browser-kit": "^6.4 || ^7.0 || ^8.0", + "symfony/console": "^6.4 || ^7.0 || ^8.0", + "symfony/css-selector": "^6.4 || ^7.0 || ^8.0", + "symfony/finder": "^6.4 || ^7.0 || ^8.0", + "symfony/monolog-bundle": "*", + "symfony/routing": "^6.4 || ^7.0 || ^8.0", + "symfony/twig-bundle": "^6.4 || ^7.0 || ^8.0", + "symfony/yaml": "^6.4 || ^7.0 || ^8.0", "twig/twig": "^v3.8" }, "suggest": { @@ -3088,9 +3087,9 @@ ], "support": { "issues": "https://github.com/FriendsOfSymfony/FOSHttpCacheBundle/issues", - "source": "https://github.com/FriendsOfSymfony/FOSHttpCacheBundle/tree/3.2.0" + "source": "https://github.com/FriendsOfSymfony/FOSHttpCacheBundle/tree/3.3.0" }, - "time": "2025-06-17T14:04:24+00:00" + "time": "2026-01-13T07:44:35+00:00" }, { "name": "gedmo/doctrine-extensions", @@ -4112,16 +4111,16 @@ }, { "name": "monolog/monolog", - "version": "3.9.0", + "version": "3.10.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6" + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/10d85740180ecba7896c87e06a166e0c95a0e3b6", - "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/b321dd6749f0bf7189444158a3ce785cc16d69b0", + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0", "shasum": "" }, "require": { @@ -4139,7 +4138,7 @@ "graylog2/gelf-php": "^1.4.2 || ^2.0", "guzzlehttp/guzzle": "^7.4.5", "guzzlehttp/psr7": "^2.2", - "mongodb/mongodb": "^1.8", + "mongodb/mongodb": "^1.8 || ^2.0", "php-amqplib/php-amqplib": "~2.4 || ^3", "php-console/php-console": "^3.1.8", "phpstan/phpstan": "^2", @@ -4199,7 +4198,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.9.0" + "source": "https://github.com/Seldaek/monolog/tree/3.10.0" }, "funding": [ { @@ -4211,20 +4210,20 @@ "type": "tidelift" } ], - "time": "2025-03-24T10:02:05+00:00" + "time": "2026-01-02T08:56:05+00:00" }, { "name": "nelmio/cors-bundle", - "version": "2.6.0", + "version": "2.6.1", "source": { "type": "git", "url": "https://github.com/nelmio/NelmioCorsBundle.git", - "reference": "530217472204881cacd3671909f634b960c7b948" + "reference": "3d80dbcd5d1eb5f8b20ed5199e1778d44c2e4d1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/530217472204881cacd3671909f634b960c7b948", - "reference": "530217472204881cacd3671909f634b960c7b948", + "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/3d80dbcd5d1eb5f8b20ed5199e1778d44c2e4d1c", + "reference": "3d80dbcd5d1eb5f8b20ed5199e1778d44c2e4d1c", "shasum": "" }, "require": { @@ -4274,9 +4273,9 @@ ], "support": { "issues": "https://github.com/nelmio/NelmioCorsBundle/issues", - "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.6.0" + "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.6.1" }, - "time": "2025-10-23T06:57:22+00:00" + "time": "2026-01-12T15:59:08+00:00" }, { "name": "php-http/client-common", @@ -4657,16 +4656,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.6.6", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "5cee1d3dfc2d2aa6599834520911d246f656bcb8" + "reference": "2f5cbed597cb261d1ea458f3da3a9ad32e670b1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/5cee1d3dfc2d2aa6599834520911d246f656bcb8", - "reference": "5cee1d3dfc2d2aa6599834520911d246f656bcb8", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/2f5cbed597cb261d1ea458f3da3a9ad32e670b1e", + "reference": "2f5cbed597cb261d1ea458f3da3a9ad32e670b1e", "shasum": "" }, "require": { @@ -4674,8 +4673,8 @@ "ext-filter": "*", "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.7", - "phpstan/phpdoc-parser": "^1.7|^2.0", + "phpdocumentor/type-resolver": "^2.0", + "phpstan/phpdoc-parser": "^2.0", "webmozart/assert": "^1.9.1 || ^2" }, "require-dev": { @@ -4685,7 +4684,8 @@ "phpstan/phpstan-mockery": "^1.1", "phpstan/phpstan-webmozart-assert": "^1.2", "phpunit/phpunit": "^9.5", - "psalm/phar": "^5.26" + "psalm/phar": "^5.26", + "shipmonk/dead-code-detector": "^0.5.1" }, "type": "library", "extra": { @@ -4715,44 +4715,44 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.6" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/6.0.1" }, - "time": "2025-12-22T21:13:58+00:00" + "time": "2026-01-20T15:30:42+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.12.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195" + "reference": "327a05bbee54120d4786a0dc67aad30226ad4cf9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/92a98ada2b93d9b201a613cb5a33584dde25f195", - "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/327a05bbee54120d4786a0dc67aad30226ad4cf9", + "reference": "327a05bbee54120d4786a0dc67aad30226ad4cf9", "shasum": "" }, "require": { "doctrine/deprecations": "^1.0", - "php": "^7.3 || ^8.0", + "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.0", - "phpstan/phpdoc-parser": "^1.18|^2.0" + "phpstan/phpdoc-parser": "^2.0" }, "require-dev": { "ext-tokenizer": "*", "phpbench/phpbench": "^1.2", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", "phpunit/phpunit": "^9.5", - "rector/rector": "^0.13.9", - "vimeo/psalm": "^4.25" + "psalm/phar": "^4" }, "type": "library", "extra": { "branch-alias": { - "dev-1.x": "1.x-dev" + "dev-1.x": "1.x-dev", + "dev-2.x": "2.x-dev" } }, "autoload": { @@ -4773,9 +4773,9 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.12.0" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/2.0.0" }, - "time": "2025-11-21T15:09:14+00:00" + "time": "2026-01-06T21:53:42+00:00" }, { "name": "phplang/scope-exit", @@ -4917,16 +4917,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "2.3.0", + "version": "2.3.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495" + "reference": "16dbf9937da8d4528ceb2145c9c7c0bd29e26374" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1e0cd5370df5dd2e556a36b9c62f62e555870495", - "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/16dbf9937da8d4528ceb2145c9c7c0bd29e26374", + "reference": "16dbf9937da8d4528ceb2145c9c7c0bd29e26374", "shasum": "" }, "require": { @@ -4958,9 +4958,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.1" }, - "time": "2025-08-30T15:50:23+00:00" + "time": "2026-01-12T11:33:04+00:00" }, { "name": "psr/cache", @@ -6132,16 +6132,16 @@ }, { "name": "symfony/cache", - "version": "v8.0.1", + "version": "v8.0.3", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "0e67dc8145810d4e1c0d13c0e1d29ceb930b1c8e" + "reference": "ef8c7dbfe613d2773d0b5e68b2ef2db72c8b025f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/0e67dc8145810d4e1c0d13c0e1d29ceb930b1c8e", - "reference": "0e67dc8145810d4e1c0d13c0e1d29ceb930b1c8e", + "url": "https://api.github.com/repos/symfony/cache/zipball/ef8c7dbfe613d2773d0b5e68b2ef2db72c8b025f", + "reference": "ef8c7dbfe613d2773d0b5e68b2ef2db72c8b025f", "shasum": "" }, "require": { @@ -6208,7 +6208,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v8.0.1" + "source": "https://github.com/symfony/cache/tree/v8.0.3" }, "funding": [ { @@ -6228,7 +6228,7 @@ "type": "tidelift" } ], - "time": "2025-12-04T18:17:06+00:00" + "time": "2025-12-28T10:45:32+00:00" }, { "name": "symfony/cache-contracts", @@ -6385,16 +6385,16 @@ }, { "name": "symfony/config", - "version": "v7.4.1", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "2c323304c354a43a48b61c5fa760fc4ed60ce495" + "reference": "800ce889e358a53a9678b3212b0c8cecd8c6aace" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/2c323304c354a43a48b61c5fa760fc4ed60ce495", - "reference": "2c323304c354a43a48b61c5fa760fc4ed60ce495", + "url": "https://api.github.com/repos/symfony/config/zipball/800ce889e358a53a9678b3212b0c8cecd8c6aace", + "reference": "800ce889e358a53a9678b3212b0c8cecd8c6aace", "shasum": "" }, "require": { @@ -6440,7 +6440,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v7.4.1" + "source": "https://github.com/symfony/config/tree/v7.4.3" }, "funding": [ { @@ -6460,7 +6460,7 @@ "type": "tidelift" } ], - "time": "2025-12-05T07:52:08+00:00" + "time": "2025-12-23T14:24:27+00:00" }, { "name": "symfony/console", @@ -6631,16 +6631,16 @@ }, { "name": "symfony/dependency-injection", - "version": "v7.4.2", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "baf614f7c15b30ba6762d4b1ddabdf83dbf0d29b" + "reference": "54122901b6d772e94f1e71a75e0533bc16563499" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/baf614f7c15b30ba6762d4b1ddabdf83dbf0d29b", - "reference": "baf614f7c15b30ba6762d4b1ddabdf83dbf0d29b", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/54122901b6d772e94f1e71a75e0533bc16563499", + "reference": "54122901b6d772e94f1e71a75e0533bc16563499", "shasum": "" }, "require": { @@ -6691,7 +6691,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v7.4.2" + "source": "https://github.com/symfony/dependency-injection/tree/v7.4.3" }, "funding": [ { @@ -6711,7 +6711,7 @@ "type": "tidelift" } ], - "time": "2025-12-08T06:57:04+00:00" + "time": "2025-12-28T10:55:46+00:00" }, { "name": "symfony/deprecation-contracts", @@ -6782,16 +6782,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "7b511891a81ca14e993b6c88fd35d6bf656085f7" + "reference": "bd338ba08f5c47fe77e0a15e85ec3c5d070f9ceb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/7b511891a81ca14e993b6c88fd35d6bf656085f7", - "reference": "7b511891a81ca14e993b6c88fd35d6bf656085f7", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/bd338ba08f5c47fe77e0a15e85ec3c5d070f9ceb", + "reference": "bd338ba08f5c47fe77e0a15e85ec3c5d070f9ceb", "shasum": "" }, "require": { @@ -6871,7 +6871,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v7.4.0" + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.4.3" }, "funding": [ { @@ -6891,7 +6891,7 @@ "type": "tidelift" } ], - "time": "2025-11-04T03:05:49+00:00" + "time": "2025-12-22T13:47:05+00:00" }, { "name": "symfony/dotenv", @@ -7353,16 +7353,16 @@ }, { "name": "symfony/finder", - "version": "v8.0.0", + "version": "v8.0.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "7598dd5770580fa3517ec83e8da0c9b9e01f4291" + "reference": "dd3a2953570a283a2ba4e17063bb98c734cf5b12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/7598dd5770580fa3517ec83e8da0c9b9e01f4291", - "reference": "7598dd5770580fa3517ec83e8da0c9b9e01f4291", + "url": "https://api.github.com/repos/symfony/finder/zipball/dd3a2953570a283a2ba4e17063bb98c734cf5b12", + "reference": "dd3a2953570a283a2ba4e17063bb98c734cf5b12", "shasum": "" }, "require": { @@ -7397,7 +7397,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v8.0.0" + "source": "https://github.com/symfony/finder/tree/v8.0.3" }, "funding": [ { @@ -7417,7 +7417,7 @@ "type": "tidelift" } ], - "time": "2025-11-05T14:36:47+00:00" + "time": "2025-12-23T14:52:06+00:00" }, { "name": "symfony/flex", @@ -7494,16 +7494,16 @@ }, { "name": "symfony/framework-bundle", - "version": "v7.4.1", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "2fa3b3ad6ed75ce0cc8cad8a5027b4f25b990bc3" + "reference": "df908e8f9e5f6cc3c9e0d0172e030a5c1c280582" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/2fa3b3ad6ed75ce0cc8cad8a5027b4f25b990bc3", - "reference": "2fa3b3ad6ed75ce0cc8cad8a5027b4f25b990bc3", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/df908e8f9e5f6cc3c9e0d0172e030a5c1c280582", + "reference": "df908e8f9e5f6cc3c9e0d0172e030a5c1c280582", "shasum": "" }, "require": { @@ -7511,7 +7511,7 @@ "ext-xml": "*", "php": ">=8.2", "symfony/cache": "^6.4.12|^7.0|^8.0", - "symfony/config": "^7.4|^8.0", + "symfony/config": "^7.4.3|^8.0.3", "symfony/dependency-injection": "^7.4|^8.0", "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^7.3|^8.0", @@ -7628,7 +7628,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v7.4.1" + "source": "https://github.com/symfony/framework-bundle/tree/v7.4.3" }, "funding": [ { @@ -7648,7 +7648,7 @@ "type": "tidelift" } ], - "time": "2025-12-05T14:04:53+00:00" + "time": "2025-12-29T09:31:36+00:00" }, { "name": "symfony/http-client", @@ -7831,16 +7831,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.4.1", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "bd1af1e425811d6f077db240c3a588bdb405cd27" + "reference": "a70c745d4cea48dbd609f4075e5f5cbce453bd52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/bd1af1e425811d6f077db240c3a588bdb405cd27", - "reference": "bd1af1e425811d6f077db240c3a588bdb405cd27", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/a70c745d4cea48dbd609f4075e5f5cbce453bd52", + "reference": "a70c745d4cea48dbd609f4075e5f5cbce453bd52", "shasum": "" }, "require": { @@ -7889,7 +7889,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.4.1" + "source": "https://github.com/symfony/http-foundation/tree/v7.4.3" }, "funding": [ { @@ -7909,20 +7909,20 @@ "type": "tidelift" } ], - "time": "2025-12-07T11:13:10+00:00" + "time": "2025-12-23T14:23:49+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.4.2", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "f6e6f0a5fa8763f75a504b930163785fb6dd055f" + "reference": "885211d4bed3f857b8c964011923528a55702aa5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f6e6f0a5fa8763f75a504b930163785fb6dd055f", - "reference": "f6e6f0a5fa8763f75a504b930163785fb6dd055f", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/885211d4bed3f857b8c964011923528a55702aa5", + "reference": "885211d4bed3f857b8c964011923528a55702aa5", "shasum": "" }, "require": { @@ -8008,7 +8008,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.4.2" + "source": "https://github.com/symfony/http-kernel/tree/v7.4.3" }, "funding": [ { @@ -8028,7 +8028,7 @@ "type": "tidelift" } ], - "time": "2025-12-08T07:43:37+00:00" + "time": "2025-12-31T08:43:57+00:00" }, { "name": "symfony/intl", @@ -9467,16 +9467,16 @@ }, { "name": "symfony/security-core", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "fe4d25e5700a2f3b605bf23f520be57504ae5c51" + "reference": "be0b8585f2d69b48a9b1a6372aa48d23c7e7eeb4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/fe4d25e5700a2f3b605bf23f520be57504ae5c51", - "reference": "fe4d25e5700a2f3b605bf23f520be57504ae5c51", + "url": "https://api.github.com/repos/symfony/security-core/zipball/be0b8585f2d69b48a9b1a6372aa48d23c7e7eeb4", + "reference": "be0b8585f2d69b48a9b1a6372aa48d23c7e7eeb4", "shasum": "" }, "require": { @@ -9534,7 +9534,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v7.4.0" + "source": "https://github.com/symfony/security-core/tree/v7.4.3" }, "funding": [ { @@ -9554,20 +9554,20 @@ "type": "tidelift" } ], - "time": "2025-11-21T15:26:00+00:00" + "time": "2025-12-19T23:18:26+00:00" }, { "name": "symfony/security-csrf", - "version": "v8.0.0", + "version": "v8.0.3", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "ee98194163a0acd06a8079de32f06cc8e03884f6" + "reference": "4f561535f9b61d72c422a8a9de49301d3846b98f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/ee98194163a0acd06a8079de32f06cc8e03884f6", - "reference": "ee98194163a0acd06a8079de32f06cc8e03884f6", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/4f561535f9b61d72c422a8a9de49301d3846b98f", + "reference": "4f561535f9b61d72c422a8a9de49301d3846b98f", "shasum": "" }, "require": { @@ -9605,7 +9605,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v8.0.0" + "source": "https://github.com/symfony/security-csrf/tree/v8.0.3" }, "funding": [ { @@ -9625,20 +9625,20 @@ "type": "tidelift" } ], - "time": "2025-11-27T08:09:45+00:00" + "time": "2025-12-23T15:24:35+00:00" }, { "name": "symfony/security-http", - "version": "v7.4.1", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "46a4432ad2fab65735216d113e18f1f9eb6d28ea" + "reference": "72f3b3fa9f322c9579d5246895a09f945cc33e36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/46a4432ad2fab65735216d113e18f1f9eb6d28ea", - "reference": "46a4432ad2fab65735216d113e18f1f9eb6d28ea", + "url": "https://api.github.com/repos/symfony/security-http/zipball/72f3b3fa9f322c9579d5246895a09f945cc33e36", + "reference": "72f3b3fa9f322c9579d5246895a09f945cc33e36", "shasum": "" }, "require": { @@ -9697,7 +9697,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v7.4.1" + "source": "https://github.com/symfony/security-http/tree/v7.4.3" }, "funding": [ { @@ -9717,7 +9717,7 @@ "type": "tidelift" } ], - "time": "2025-12-05T08:41:26+00:00" + "time": "2025-12-19T23:18:26+00:00" }, { "name": "symfony/serializer", @@ -10067,16 +10067,16 @@ }, { "name": "symfony/translation", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "2d01ca0da3f092f91eeedb46f24aa30d2fca8f68" + "reference": "7ef27c65d78886f7599fdd5c93d12c9243ecf44d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/2d01ca0da3f092f91eeedb46f24aa30d2fca8f68", - "reference": "2d01ca0da3f092f91eeedb46f24aa30d2fca8f68", + "url": "https://api.github.com/repos/symfony/translation/zipball/7ef27c65d78886f7599fdd5c93d12c9243ecf44d", + "reference": "7ef27c65d78886f7599fdd5c93d12c9243ecf44d", "shasum": "" }, "require": { @@ -10143,7 +10143,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.4.0" + "source": "https://github.com/symfony/translation/tree/v7.4.3" }, "funding": [ { @@ -10163,7 +10163,7 @@ "type": "tidelift" } ], - "time": "2025-11-27T13:27:24+00:00" + "time": "2025-12-29T09:31:36+00:00" }, { "name": "symfony/translation-contracts", @@ -10249,16 +10249,16 @@ }, { "name": "symfony/twig-bridge", - "version": "v8.0.1", + "version": "v8.0.3", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "a5d2d4fdd63a0c96fe9dd28e7c3cf21512689f7b" + "reference": "2a2978a44127bae9aaee0ed5319954eb492d81c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/a5d2d4fdd63a0c96fe9dd28e7c3cf21512689f7b", - "reference": "a5d2d4fdd63a0c96fe9dd28e7c3cf21512689f7b", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/2a2978a44127bae9aaee0ed5319954eb492d81c3", + "reference": "2a2978a44127bae9aaee0ed5319954eb492d81c3", "shasum": "" }, "require": { @@ -10331,7 +10331,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v8.0.1" + "source": "https://github.com/symfony/twig-bridge/tree/v8.0.3" }, "funding": [ { @@ -10351,7 +10351,7 @@ "type": "tidelift" } ], - "time": "2025-12-05T14:08:45+00:00" + "time": "2025-12-16T08:10:18+00:00" }, { "name": "symfony/twig-bundle", @@ -10605,16 +10605,16 @@ }, { "name": "symfony/validator", - "version": "v7.4.2", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "569b71d1243ccc58e8f1d21e279669239e78f60d" + "reference": "9670bedf4c454b21d1e04606b6c227990da8bebe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/569b71d1243ccc58e8f1d21e279669239e78f60d", - "reference": "569b71d1243ccc58e8f1d21e279669239e78f60d", + "url": "https://api.github.com/repos/symfony/validator/zipball/9670bedf4c454b21d1e04606b6c227990da8bebe", + "reference": "9670bedf4c454b21d1e04606b6c227990da8bebe", "shasum": "" }, "require": { @@ -10685,7 +10685,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.4.2" + "source": "https://github.com/symfony/validator/tree/v7.4.3" }, "funding": [ { @@ -10705,7 +10705,7 @@ "type": "tidelift" } ], - "time": "2025-12-07T17:35:40+00:00" + "time": "2025-12-27T17:05:22+00:00" }, { "name": "symfony/var-dumper", @@ -11091,16 +11091,16 @@ }, { "name": "twig/cssinliner-extra", - "version": "v3.22.0", + "version": "v3.23.0", "source": { "type": "git", "url": "https://github.com/twigphp/cssinliner-extra.git", - "reference": "9bcbf04ca515e98fcde479fdceaa1d9d9e76173e" + "reference": "c25fa18b09a418e4d1454ec291f9406f630675ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/cssinliner-extra/zipball/9bcbf04ca515e98fcde479fdceaa1d9d9e76173e", - "reference": "9bcbf04ca515e98fcde479fdceaa1d9d9e76173e", + "url": "https://api.github.com/repos/twigphp/cssinliner-extra/zipball/c25fa18b09a418e4d1454ec291f9406f630675ba", + "reference": "c25fa18b09a418e4d1454ec291f9406f630675ba", "shasum": "" }, "require": { @@ -11144,7 +11144,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/cssinliner-extra/tree/v3.22.0" + "source": "https://github.com/twigphp/cssinliner-extra/tree/v3.23.0" }, "funding": [ { @@ -11156,20 +11156,20 @@ "type": "tidelift" } ], - "time": "2025-07-29T08:07:07+00:00" + "time": "2025-12-02T14:45:16+00:00" }, { "name": "twig/extra-bundle", - "version": "v3.22.2", + "version": "v3.23.0", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "09de9be7f6c0d19ede7b5a1dbfcfb2e9d1e0ea9e" + "reference": "7a27e784dc56eddfef5e9295829b290ce06f1682" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/09de9be7f6c0d19ede7b5a1dbfcfb2e9d1e0ea9e", - "reference": "09de9be7f6c0d19ede7b5a1dbfcfb2e9d1e0ea9e", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/7a27e784dc56eddfef5e9295829b290ce06f1682", + "reference": "7a27e784dc56eddfef5e9295829b290ce06f1682", "shasum": "" }, "require": { @@ -11218,7 +11218,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.22.2" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.23.0" }, "funding": [ { @@ -11230,20 +11230,20 @@ "type": "tidelift" } ], - "time": "2025-12-05T08:51:53+00:00" + "time": "2025-12-18T20:46:15+00:00" }, { "name": "twig/twig", - "version": "v3.22.2", + "version": "v3.23.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "946ddeafa3c9f4ce279d1f34051af041db0e16f2" + "reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/946ddeafa3c9f4ce279d1f34051af041db0e16f2", - "reference": "946ddeafa3c9f4ce279d1f34051af041db0e16f2", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9", + "reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9", "shasum": "" }, "require": { @@ -11297,7 +11297,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.22.2" + "source": "https://github.com/twigphp/Twig/tree/v3.23.0" }, "funding": [ { @@ -11309,20 +11309,20 @@ "type": "tidelift" } ], - "time": "2025-12-14T11:28:47+00:00" + "time": "2026-01-23T21:00:41+00:00" }, { "name": "webmozart/assert", - "version": "2.0.0", + "version": "2.1.2", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "1b34b004e35a164bc5bb6ebd33c844b2d8069a54" + "reference": "ce6a2f100c404b2d32a1dd1270f9b59ad4f57649" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/1b34b004e35a164bc5bb6ebd33c844b2d8069a54", - "reference": "1b34b004e35a164bc5bb6ebd33c844b2d8069a54", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/ce6a2f100c404b2d32a1dd1270f9b59ad4f57649", + "reference": "ce6a2f100c404b2d32a1dd1270f9b59ad4f57649", "shasum": "" }, "require": { @@ -11369,22 +11369,22 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/2.0.0" + "source": "https://github.com/webmozarts/assert/tree/2.1.2" }, - "time": "2025-12-16T21:36:00+00:00" + "time": "2026-01-13T14:02:24+00:00" }, { "name": "webonyx/graphql-php", - "version": "v15.29.3", + "version": "v15.29.4", "source": { "type": "git", "url": "https://github.com/webonyx/graphql-php.git", - "reference": "abe7cf760fd7d322e3e685b0b2fe14cedb73fafe" + "reference": "7ae6371184a1909822916ff101eab7e6e070c656" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/abe7cf760fd7d322e3e685b0b2fe14cedb73fafe", - "reference": "abe7cf760fd7d322e3e685b0b2fe14cedb73fafe", + "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/7ae6371184a1909822916ff101eab7e6e070c656", + "reference": "7ae6371184a1909822916ff101eab7e6e070c656", "shasum": "" }, "require": { @@ -11397,7 +11397,7 @@ "amphp/http-server": "^2.1", "dms/phpunit-arraysubset-asserts": "dev-master", "ergebnis/composer-normalize": "^2.28", - "friendsofphp/php-cs-fixer": "3.92.3", + "friendsofphp/php-cs-fixer": "3.92.4", "mll-lab/php-cs-fixer-config": "5.11.0", "nyholm/psr7": "^1.5", "phpbench/phpbench": "^1.2", @@ -11438,7 +11438,7 @@ ], "support": { "issues": "https://github.com/webonyx/graphql-php/issues", - "source": "https://github.com/webonyx/graphql-php/tree/v15.29.3" + "source": "https://github.com/webonyx/graphql-php/tree/v15.29.4" }, "funding": [ { @@ -11446,7 +11446,7 @@ "type": "open_collective" } ], - "time": "2025-12-29T13:48:44+00:00" + "time": "2026-01-05T16:06:25+00:00" }, { "name": "willdurand/negotiation", @@ -11508,16 +11508,16 @@ "packages-dev": [ { "name": "api-platform/graphql", - "version": "v4.2.11", + "version": "v4.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/graphql.git", - "reference": "458f093df4c7188ff6d7cc96e80117747ba9de2d" + "reference": "73155a895f9623b72ca61895635411e6e8849d02" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/graphql/zipball/458f093df4c7188ff6d7cc96e80117747ba9de2d", - "reference": "458f093df4c7188ff6d7cc96e80117747ba9de2d", + "url": "https://api.github.com/repos/api-platform/graphql/zipball/73155a895f9623b72ca61895635411e6e8849d02", + "reference": "73155a895f9623b72ca61895635411e6e8849d02", "shasum": "" }, "require": { @@ -11538,7 +11538,7 @@ "require-dev": { "api-platform/validator": "^4.2.4", "phpspec/prophecy-phpunit": "^2.2", - "phpunit/phpunit": "11.5.x-dev", + "phpunit/phpunit": "^12.2", "symfony/mercure-bundle": "*", "symfony/routing": "^6.4 || ^7.0 || ^8.0", "twig/twig": "^1.42.3 || ^2.12 || ^3.0" @@ -11594,22 +11594,22 @@ "graphql" ], "support": { - "source": "https://github.com/api-platform/graphql/tree/v4.2.11" + "source": "https://github.com/api-platform/graphql/tree/v4.2.14" }, - "time": "2025-12-04T14:20:26+00:00" + "time": "2026-01-12T13:36:15+00:00" }, { "name": "brianium/paratest", - "version": "v7.16.0", + "version": "v7.16.1", "source": { "type": "git", "url": "https://github.com/paratestphp/paratest.git", - "reference": "a10878ed0fe0bbc2f57c980f7a08065338b970b6" + "reference": "f0fdfd8e654e0d38bc2ba756a6cabe7be287390b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/a10878ed0fe0bbc2f57c980f7a08065338b970b6", - "reference": "a10878ed0fe0bbc2f57c980f7a08065338b970b6", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/f0fdfd8e654e0d38bc2ba756a6cabe7be287390b", + "reference": "f0fdfd8e654e0d38bc2ba756a6cabe7be287390b", "shasum": "" }, "require": { @@ -11620,10 +11620,10 @@ "fidry/cpu-core-counter": "^1.3.0", "jean85/pretty-package-versions": "^2.1.1", "php": "~8.3.0 || ~8.4.0 || ~8.5.0", - "phpunit/php-code-coverage": "^12.5.1", + "phpunit/php-code-coverage": "^12.5.2", "phpunit/php-file-iterator": "^6", "phpunit/php-timer": "^8", - "phpunit/phpunit": "^12.5.2", + "phpunit/phpunit": "^12.5.4", "sebastian/environment": "^8.0.3", "symfony/console": "^7.3.4 || ^8.0.0", "symfony/process": "^7.3.4 || ^8.0.0" @@ -11635,7 +11635,7 @@ "ext-posix": "*", "phpstan/phpstan": "^2.1.33", "phpstan/phpstan-deprecation-rules": "^2.0.3", - "phpstan/phpstan-phpunit": "^2.0.10", + "phpstan/phpstan-phpunit": "^2.0.11", "phpstan/phpstan-strict-rules": "^2.0.7", "symfony/filesystem": "^7.3.2 || ^8.0.0" }, @@ -11677,7 +11677,7 @@ ], "support": { "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v7.16.0" + "source": "https://github.com/paratestphp/paratest/tree/v7.16.1" }, "funding": [ { @@ -11689,7 +11689,7 @@ "type": "paypal" } ], - "time": "2025-12-09T20:03:26+00:00" + "time": "2026-01-08T07:23:06+00:00" }, { "name": "clue/ndjson-react", @@ -12233,16 +12233,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.92.3", + "version": "v3.92.5", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "2ba8f5a60f6f42fb65758cfb3768434fa2d1c7e8" + "reference": "260cc8c4a1d2f6d2f22cd4f9c70aa72e55ebac58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/2ba8f5a60f6f42fb65758cfb3768434fa2d1c7e8", - "reference": "2ba8f5a60f6f42fb65758cfb3768434fa2d1c7e8", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/260cc8c4a1d2f6d2f22cd4f9c70aa72e55ebac58", + "reference": "260cc8c4a1d2f6d2f22cd4f9c70aa72e55ebac58", "shasum": "" }, "require": { @@ -12274,17 +12274,17 @@ }, "require-dev": { "facile-it/paraunit": "^1.3.1 || ^2.7", - "infection/infection": "^0.31.0", - "justinrainbow/json-schema": "^6.5", - "keradus/cli-executor": "^2.2", + "infection/infection": "^0.31", + "justinrainbow/json-schema": "^6.6", + "keradus/cli-executor": "^2.3", "mikey179/vfsstream": "^1.6.12", "php-coveralls/php-coveralls": "^2.9", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.6", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.6", - "phpunit/phpunit": "^9.6.25 || ^10.5.53 || ^11.5.34", + "phpunit/phpunit": "^9.6.31 || ^10.5.60 || ^11.5.46", "symfony/polyfill-php85": "^1.33", - "symfony/var-dumper": "^5.4.48 || ^6.4.24 || ^7.3.2 || ^8.0", - "symfony/yaml": "^5.4.45 || ^6.4.24 || ^7.3.2 || ^8.0" + "symfony/var-dumper": "^5.4.48 || ^6.4.26 || ^7.4.0 || ^8.0", + "symfony/yaml": "^5.4.45 || ^6.4.30 || ^7.4.1 || ^8.0" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -12325,7 +12325,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.92.3" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.92.5" }, "funding": [ { @@ -12333,20 +12333,20 @@ "type": "github" } ], - "time": "2025-12-18T10:45:02+00:00" + "time": "2026-01-08T21:57:37+00:00" }, { "name": "hautelook/alice-bundle", - "version": "2.17.0", + "version": "2.17.2", "source": { "type": "git", "url": "https://github.com/theofidry/AliceBundle.git", - "reference": "d99a5e2ba524ac422b11744f9024cdf0a8040c25" + "reference": "f6add53c2d0b14229c6d5af0092f611c1fb15244" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/AliceBundle/zipball/d99a5e2ba524ac422b11744f9024cdf0a8040c25", - "reference": "d99a5e2ba524ac422b11744f9024cdf0a8040c25", + "url": "https://api.github.com/repos/theofidry/AliceBundle/zipball/f6add53c2d0b14229c6d5af0092f611c1fb15244", + "reference": "f6add53c2d0b14229c6d5af0092f611c1fb15244", "shasum": "" }, "require": { @@ -12356,8 +12356,8 @@ "doctrine/persistence": "^3.3.1 || ^4.0", "php": "^8.4", "psr/log": "^1.0 || ^2.0 || ^3.0", - "symfony/doctrine-bridge": "7.4 || ^8.0", - "symfony/finder": "7.4 || ^8.0", + "symfony/doctrine-bridge": "^7.4 || ^8.0", + "symfony/finder": "^7.4 || ^8.0", "symfony/framework-bundle": "^7.4 || ^8.0", "theofidry/alice-data-fixtures": "^1.10" }, @@ -12406,9 +12406,9 @@ ], "support": { "issues": "https://github.com/theofidry/AliceBundle/issues", - "source": "https://github.com/theofidry/AliceBundle/tree/2.17.0" + "source": "https://github.com/theofidry/AliceBundle/tree/2.17.2" }, - "time": "2025-12-21T22:21:12+00:00" + "time": "2026-01-05T09:47:07+00:00" }, { "name": "justinrainbow/json-schema", @@ -12974,11 +12974,11 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.33", + "version": "2.1.34", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9e800e6bee7d5bd02784d4c6069b48032d16224f", - "reference": "9e800e6bee7d5bd02784d4c6069b48032d16224f", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/070ba754a949fcade788e16e8dc5a5935b7cf2ee", + "reference": "070ba754a949fcade788e16e8dc5a5935b7cf2ee", "shasum": "" }, "require": { @@ -13023,7 +13023,7 @@ "type": "github" } ], - "time": "2025-12-05T10:24:31+00:00" + "time": "2026-01-19T19:52:16+00:00" }, { "name": "phpunit/php-code-coverage", @@ -13361,16 +13361,16 @@ }, { "name": "phpunit/phpunit", - "version": "12.5.4", + "version": "12.5.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "4ba0e923f9d3fc655de22f9547c01d15a41fc93a" + "reference": "ab8e4374264bc65523d1458d14bf80261577e01f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4ba0e923f9d3fc655de22f9547c01d15a41fc93a", - "reference": "4ba0e923f9d3fc655de22f9547c01d15a41fc93a", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ab8e4374264bc65523d1458d14bf80261577e01f", + "reference": "ab8e4374264bc65523d1458d14bf80261577e01f", "shasum": "" }, "require": { @@ -13384,7 +13384,7 @@ "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=8.3", - "phpunit/php-code-coverage": "^12.5.1", + "phpunit/php-code-coverage": "^12.5.2", "phpunit/php-file-iterator": "^6.0.0", "phpunit/php-invoker": "^6.0.0", "phpunit/php-text-template": "^5.0.0", @@ -13438,7 +13438,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.4" + "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.6" }, "funding": [ { @@ -13462,7 +13462,7 @@ "type": "tidelift" } ], - "time": "2025-12-15T06:05:34+00:00" + "time": "2026-01-16T16:28:10+00:00" }, { "name": "psalm/phar", @@ -14027,21 +14027,21 @@ }, { "name": "rector/rector", - "version": "2.3.0", + "version": "2.3.2", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "f7166355dcf47482f27be59169b0825995f51c7d" + "reference": "07cbbe28bd60251b96b18d42e514779b0e2faa83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/f7166355dcf47482f27be59169b0825995f51c7d", - "reference": "f7166355dcf47482f27be59169b0825995f51c7d", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/07cbbe28bd60251b96b18d42e514779b0e2faa83", + "reference": "07cbbe28bd60251b96b18d42e514779b0e2faa83", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "phpstan/phpstan": "^2.1.33" + "phpstan/phpstan": "^2.1.34" }, "conflict": { "rector/rector-doctrine": "*", @@ -14075,7 +14075,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.3.0" + "source": "https://github.com/rectorphp/rector/tree/2.3.2" }, "funding": [ { @@ -14083,7 +14083,7 @@ "type": "github" } ], - "time": "2025-12-25T22:00:18+00:00" + "time": "2026-01-20T01:11:51+00:00" }, { "name": "sebastian/cli-parser", @@ -14156,16 +14156,16 @@ }, { "name": "sebastian/comparator", - "version": "7.1.3", + "version": "7.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "dc904b4bb3ab070865fa4068cd84f3da8b945148" + "reference": "6a7de5df2e094f9a80b40a522391a7e6022df5f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/dc904b4bb3ab070865fa4068cd84f3da8b945148", - "reference": "dc904b4bb3ab070865fa4068cd84f3da8b945148", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/6a7de5df2e094f9a80b40a522391a7e6022df5f6", + "reference": "6a7de5df2e094f9a80b40a522391a7e6022df5f6", "shasum": "" }, "require": { @@ -14224,7 +14224,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/7.1.3" + "source": "https://github.com/sebastianbergmann/comparator/tree/7.1.4" }, "funding": [ { @@ -14244,7 +14244,7 @@ "type": "tidelift" } ], - "time": "2025-08-20T11:27:00+00:00" + "time": "2026-01-24T09:28:48+00:00" }, { "name": "sebastian/complexity", @@ -15429,16 +15429,16 @@ }, { "name": "symfony/process", - "version": "v8.0.0", + "version": "v8.0.3", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "a0a750500c4ce900d69ba4e9faf16f82c10ee149" + "reference": "0cbbd88ec836f8757641c651bb995335846abb78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/a0a750500c4ce900d69ba4e9faf16f82c10ee149", - "reference": "a0a750500c4ce900d69ba4e9faf16f82c10ee149", + "url": "https://api.github.com/repos/symfony/process/zipball/0cbbd88ec836f8757641c651bb995335846abb78", + "reference": "0cbbd88ec836f8757641c651bb995335846abb78", "shasum": "" }, "require": { @@ -15470,7 +15470,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v8.0.0" + "source": "https://github.com/symfony/process/tree/v8.0.3" }, "funding": [ { @@ -15490,20 +15490,20 @@ "type": "tidelift" } ], - "time": "2025-10-16T16:25:44+00:00" + "time": "2025-12-19T10:01:18+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "dcd955ca9c60f2942194854518049f8ae4dbd696" + "reference": "5220b59d06f6554658a0dc4d6bd4497a789e51dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/dcd955ca9c60f2942194854518049f8ae4dbd696", - "reference": "dcd955ca9c60f2942194854518049f8ae4dbd696", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/5220b59d06f6554658a0dc4d6bd4497a789e51dd", + "reference": "5220b59d06f6554658a0dc4d6bd4497a789e51dd", "shasum": "" }, "require": { @@ -15560,7 +15560,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.4.0" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.4.3" }, "funding": [ { @@ -15580,7 +15580,7 @@ "type": "tidelift" } ], - "time": "2025-11-19T14:48:01+00:00" + "time": "2025-12-27T17:05:22+00:00" }, { "name": "theofidry/alice-data-fixtures", diff --git a/api/migrations/dev-data/data.sql b/api/migrations/dev-data/data.sql index 81ed738f9e..2a543e6735 100644 --- a/api/migrations/dev-data/data.sql +++ b/api/migrations/dev-data/data.sql @@ -1750,10 +1750,6 @@ INSERT INTO public.category_contenttype (category_id, contenttype_id) VALUES INSERT INTO public.checklist (id, createtime, updatetime, name, campid, isprototype, checklistprototypeid) VALUES - ('000100000000', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'PBS Basiskurs Wolfsstufe', NULL, true, NULL), - ('000200000000', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'PBS Basiskurs Pfadistufe', NULL, true, NULL), - ('000300000000', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'PBS Aufbaukurs Wolfsstufe', NULL, true, NULL), - ('000400000000', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'PBS Aufbaukurs Pfadistufe', NULL, true, NULL), ('ebbd0c61eb85', '2024-09-28 16:41:19', '2024-09-28 16:41:19', 'Ausbildungsziele', '5d28f99890bc', false, NULL), ('261ab1ae2947', '2025-05-05 14:37:17', '2025-07-14 12:36:47', 'MSdS Aumonier·ère', NULL, true, NULL), ('96d088458d49', '2025-06-30 12:18:25', '2025-07-01 08:27:10', 'MSdS Base Éclais', NULL, true, NULL), @@ -1840,137 +1836,6 @@ INSERT INTO public.checklist (id, createtime, updatetime, name, campid, isprotot INSERT INTO public.checklist_item (id, createtime, updatetime, text, "position", checklistid, parentid) VALUES ('18db4adbe9b1', '2024-09-28 16:41:19', '2024-09-28 16:41:19', 'Der Kurs vermittelt den TN die Pfadigrundlagen.', 0, 'ebbd0c61eb85', NULL), - ('000100010000', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Der Kurs vermittelt den TN die Pfadigrundlagen.', 0, '000100000000', NULL), - ('000100010001', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Entwicklungsstand und Bedürfnisse der Kinder der Wolfsstufe', 0, '000100000000', '000100010000'), - ('000100010002', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Wolfsstufensymbolik', 1, '000100000000', '000100010000'), - ('000100010003', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Persönliche Auseinandersetzung mit Gesetz und Versprechen der Roverstufe', 2, '000100000000', '000100010000'), - ('000100010004', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Bezug der Pfadigrundlagen zum Pfadialltag', 3, '000100000000', '000100010000'), - ('000100010005', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Stufenmodell und Abgrenzung zw. Biber-, Wolfs- und Pfadistufe', 4, '000100000000', '000100010000'), - ('000100010006', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Ausgestaltung der sieben Pfadimethoden und fünf Pfadibeziehungen auf der Wolfsstufe', 5, '000100000000', '000100010000'), - ('000100020000', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Der Kurs bildet die TN aus, ein Programm für die Wolfsstufe zu planen, durchzuführen und auszuwerten.', 1, '000100000000', NULL), - ('000100020001', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Einkleidung von Aktivitäten und Quartalsprogrammen', 0, '000100000000', '000100020000'), - ('000100020002', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Methoden zur Planung, Durchführung und Auswertung von Programmen', 1, '000100000000', '000100020000'), - ('000100020003', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Quartalsprogramm planen', 2, '000100000000', '000100020000'), - ('000100020004', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Abenteuer als Alternative zum Quartalsprogramm und als Form der Mitbestimmung auf der Wolfsstufe', 3, '000100000000', '000100020000'), - ('000100020005', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'wesentliche Punkte beim Organisieren von Weekends', 4, '000100000000', '000100020000'), - ('000100020006', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Planen, Durchführen und Auswerten von J+S Aktivitäten für die Wolfsstufe', 5, '000100000000', '000100020000'), - ('000100020007', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Planen, Durchführen und Auswerten von Wanderungen für die Wolfsstufe', 6, '000100000000', '000100020000'), - ('000100020008', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Inklusive Gestaltung des Programms, damit sich alle Wölfe wohlfühlen und ihre Persönlichkeiten individuell entwickeln können', 7, '000100000000', '000100020000'), - ('000100030000', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Der Kurs bildet die TN zu verantwortungsbewussten Mitgliedern eines Leitungsteams aus.', 2, '000100000000', NULL), - ('000100030001', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Funktion sowie Rechte und Pflichten als Mitglied eines Leitungsteams der Wolfsstufe', 0, '000100000000', '000100030000'), - ('000100030002', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Leitwölfe betreuen', 1, '000100000000', '000100030000'), - ('000100030003', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Umgang mit Wölfen mit herausforderndem Verhalten', 2, '000100000000', '000100030000'), - ('000100030004', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Sicherheitskonzepte für sicherheitsrelevante Aktivitäten planen und umsetzen', 3, '000100000000', '000100030000'), - ('000100030005', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Angebote und Anlaufstellen des Kantonalverbands / der Region sowie Krisenkonzept', 4, '000100000000', '000100030000'), - ('000100030006', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'eigene Leiterpersönlichkeit und Rolle im Team', 5, '000100000000', '000100030000'), - ('000100030007', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Regeln für konstruktive Gespräche im Leitungsteam', 6, '000100000000', '000100030000'), - ('000100030008', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Möglichkeiten der Aus- und Weiterbildung', 7, '000100000000', '000100030000'), - ('000100030009', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Sexuelle Ausbeutung und Grenzverletzungen, mögliche heikle Situationen in Aktivitäten und vorbeugende Massnahmen', 8, '000100000000', '000100030000'), - ('000100040000', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Der Kurs befähigt die TN, Aktivitäten wolfsstufengerecht zu gestalten.', 3, '000100000000', NULL), - ('000100040001', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Pfadimethode „Persönlicher Fortschritt fördern": Inhalte der Etappen und Spezialitäten in Aktivitäten der Wolfsstufe einbauen', 0, '000100000000', '000100040000'), - ('000100040002', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Arbeiten mit Gesetz und Versprechen auf der Wolfsstufe', 1, '000100000000', '000100040000'), - ('000100040003', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Gestaltung von Lagerfeuern auf der Wolfsstufe', 2, '000100000000', '000100040000'), - ('000100040004', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Vertiefen der Kenntnisse und stufengerechtes Vermitteln der Wolfsstufentechnik', 3, '000100000000', '000100040000'), - ('000200010000', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Der Kurs vermittelt den TN die Pfadigrundlagen.', 0, '000200000000', NULL), - ('000200010001', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Entwicklungsstand und Bedürfnisse der Kinder und Jugendlichen der Pfadistufe', 0, '000200000000', '000200010000'), - ('000200010002', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Persönliche Auseinandersetzung mit Gesetz und Versprechen der Roverstufe', 1, '000200000000', '000200010000'), - ('000200010003', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Bezug der Pfadigrundlagen zum Pfadialltag', 2, '000200000000', '000200010000'), - ('000200010004', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Stufenmodell und Abgrenzung zw. Wolfs-, Pfadi- und Piostufe', 3, '000200000000', '000200010000'), - ('000200010005', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Ausgestaltung der sieben Pfadimethoden und fünf Pfadibeziehungen auf der Pfadistufe', 4, '000200000000', '000200010000'), - ('000200020000', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Der Kurs bildet die TN aus, ein Programm für die Pfadistufe zu planen, durchzuführen und auszuwerten.', 1, '000200000000', NULL), - ('000200020001', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Einkleidung von Aktivitäten und Quartalsprogrammen', 0, '000200000000', '000200020000'), - ('000200020002', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Methoden zur Planung, Durchführung und Auswertung von Programmen', 1, '000200000000', '000200020000'), - ('000200020003', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Quartalsprogramm planen (inkl. Integration von Fähnliaktivitäten in geeigneter Weise)', 2, '000200000000', '000200020000'), - ('000200020004', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Projekt als Alternative zum Quartalsprogramm und als Form der Mitbestimmung auf der Pfadistufe', 3, '000200000000', '000200020000'), - ('000200020005', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'wesentliche Punkte beim Organisieren von Weekends', 4, '000200000000', '000200020000'), - ('000200020006', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Planen, Durchführen und Auswerten von J+S Aktivitäten für die Pfadistufe', 5, '000200000000', '000200020000'), - ('000200020007', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Planen, Durchführen und Auswerten von Wanderungen für die Pfadistufe', 6, '000200000000', '000200020000'), - ('000200020008', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Inklusive Gestaltung des Programms, damit sich alle Pfadis wohlfühlen und ihre Persönlichkeiten individuell entwickeln können', 7, '000200000000', '000200020000'), - ('000200030000', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Der Kurs bildet die TN zu verantwortungsbewussten Mitgliedern eines Leitungsteams und zu Betreuenden von Leitpfadis aus.', 2, '000200000000', NULL), - ('000200030001', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Funktion sowie Rechte und Pflichten als Mitglied eines Leitungsteams der Pfadistufe', 0, '000200000000', '000200030000'), - ('000200030002', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Rolle der Leitpfadis und ihre Betreuung, insbesondere bei Fähnliaktivitäten', 1, '000200000000', '000200030000'), - ('000200030003', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Umgang mit Pfadis mit herausforderndem Verhalten', 2, '000200000000', '000200030000'), - ('000200030004', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Sicherheitskonzepte für sicherheitsrelevante Aktivitäten (inkl. herausfordernde Fähnliaktivitäten) planen und umsetzen', 3, '000200000000', '000200030000'), - ('000200030005', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Angebote und Anlaufstellen des Kantonalverbands / der Region inkl. Krisenkonzept', 4, '000200000000', '000200030000'), - ('000200030006', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'eigene Leiterpersönlichkeit und Rolle im Team', 5, '000200000000', '000200030000'), - ('000200030007', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Regeln für konstruktive Gespräche im Leitungsteam', 6, '000200000000', '000200030000'), - ('000200030008', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Möglichkeiten der Aus- und Weiterbildung', 7, '000200000000', '000200030000'), - ('000200030009', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Sexuelle Ausbeutung, Grenzverletzungen, mögliche heikle Situationen in Aktivitäten und vorbeugende Massnahmen', 8, '000200000000', '000200030000'), - ('000200040000', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Der Kurs befähigt die TN, Aktivitäten pfadistufengerecht zu gestalten.', 3, '000200000000', NULL), - ('000200040001', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Pfadimethode „Persönlicher Fortschritt fördern": Inhalte der Etappen und Spezialitäten in Aktivitäten der Pfadistufen einbauen', 0, '000200000000', '000200040000'), - ('000200040002', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Arbeiten mit Gesetz und Versprechen auf der Pfadistufe', 1, '000200000000', '000200040000'), - ('000200040003', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Gestaltung von Lagerfeuern auf der Pfadistufe', 2, '000200000000', '000200040000'), - ('000200040004', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Vertiefen der Kenntnisse und stufengerechtes Vermitteln der Pfadistufentechnik', 3, '000200000000', '000200040000'), - ('000300010000', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Der Kurs ermöglicht den TN die Auseinandersetzung mit den Pfadigrundlagen.', 0, '000300000000', NULL), - ('000300010001', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Vertiefung über die Bedürfnisse der Kinder der Wolfsstufe', 0, '000300000000', '000300010000'), - ('000300010002', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Wolfsstufensymbolik, ihr Bezug zu den Pfadigrundlagen und ihre Einbindung im Programm', 1, '000300000000', '000300010000'), - ('000300010003', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Pfadigrundlagen als Hilfsmittel zum Sicherstellen der Ausgewogenheit des Programms', 2, '000300000000', '000300010000'), - ('000300010004', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Einbindung der sieben Methoden und fünf Beziehungen in das Programm. als Mittel zur Erreichung der Ziele der Wolfsstufe', 3, '000300000000', '000300010000'), - ('000300010005', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Stille Momente / Förderung der Beziehung zum Spirituellen auf der Wolfsstufe', 4, '000300000000', '000300010000'), - ('000300010006', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Pfadimethode "Persönlichen Fortschritt fördern": Längerfristige Einbindung ins Programm', 5, '000300000000', '000300010000'), - ('000300020000', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Der Kurs bildet die TN zu verantwortlichen Einheitsleitenden oder Stufenleitenden aus.', 1, '000300000000', NULL), - ('000300020001', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Funktion sowie Rechte und Pflichten als Einheitsleitende oder Stufenleitende', 0, '000300000000', '000300020000'), - ('000300020002', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Organisation der Einheit / Stufe und längerfristige Planung', 1, '000300000000', '000300020000'), - ('000300020003', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Pflege von Elternkontakten und Öffenzlichkeitsarbeit', 2, '000300000000', '000300020000'), - ('000300020004', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Leiterpersönlichkeit: Auftreten und Vertreten von Anliegen', 3, '000300000000', '000300020000'), - ('000300020005', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Rolle im kantonalen Krisenkonzept', 4, '000300000000', '000300020000'), - ('000300020006', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Umgang mit Kindern mit herausforderndem Verhalten', 5, '000300000000', '000300020000'), - ('000300020007', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Gesundheitsförderung: psychisches, physisches und soziales Wohlbefinden positiv beeinflussen', 6, '000300000000', '000300020000'), - ('000300020008', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Suchtthematik: Prävention im Programm der Wolfsstufe und Regeln im Leitungsteam', 7, '000300000000', '000300020000'), - ('000300020009', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Sexuelle Ausbeutung und Grenzverletzungen: Verantwortung als Stufenleitende und vorbeugende Massnahmen', 8, '000300000000', '000300020000'), - ('000300020010', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Gewalt: verschiedene Formen von Gewalt (u.a. psychische, physische und strukturelle) und Möglichkeiten, diesen vorzubeugen', 9, '000300000000', '000300020000'), - ('000300030000', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Der Kurs bildet die TN zu verantwortlichen Lagerleitenden aus.', 2, '000300000000', NULL), - ('000300030001', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Funktion, Rechte und Pflichten als Lagerleiter*in', 0, '000300000000', '000300030000'), - ('000300030002', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Funktionen und Aufgaben von Coach und AL, insbesondere bei der Lagerbetreuung', 1, '000300000000', '000300030000'), - ('000300030003', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Einsetzung des Lagerreglements gezielt für die Planung', 2, '000300000000', '000300030000'), - ('000300030004', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Ablauf der Lagerplanung und -administration', 3, '000300000000', '000300030000'), - ('000300030005', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Gestaltung des Lagerprogramms', 4, '000300000000', '000300030000'), - ('000300030006', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Gesundheit im Lager, Umgang mit Krankheiten', 5, '000300000000', '000300030000'), - ('000300030007', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Sicherheitskonzepte für Lager', 6, '000300000000', '000300030000'), - ('000300030008', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'sicherheitsrelevante Aktivitäten planen und analysieren, Durchführungsentscheid, Anpassungen während Aktivitäten', 7, '000300000000', '000300030000'), - ('000300030009', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Anspruchsvolle J+S-Aktivitäten für die Wolfstufe planen, durchführen und auswerten', 8, '000300000000', '000300030000'), - ('000300030010', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Wanderungen auf der Wolfsstufe kritisch beurteilen', 9, '000300000000', '000300030000'), - ('000300040000', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Der Kurs befähigt die TN, junge Leitende anzuleiten und zu betreuen.', 3, '000300000000', NULL), - ('000300040001', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Teamleiter*in sein und Zusammenarbeit im Team', 0, '000300000000', '000300040000'), - ('000300040002', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'inklusive Atmosphäre schaffen in einem Leitungsteam', 1, '000300000000', '000300040000'), - ('000300040003', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Sitzungen vorbereiten und leiten', 2, '000300000000', '000300040000'), - ('000300040004', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'relevante und konstruktive Rückmeldung zu einem Programmteil für die Wolfstufe geben', 3, '000300000000', '000300040000'), - ('000300040005', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Betreuung und Förderung einzelner Teammitglieder', 4, '000300000000', '000300040000'), - ('000400010000', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Der Kurs ermöglicht den TN die Auseinandersetzung mit den Pfadigrundlagen.', 0, '000400000000', NULL), - ('000400010001', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Vertiefung über die Bedürfnisse der Kinder und Jugendlichen der Pfadistufe', 0, '000400000000', '000400010000'), - ('000400010002', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Pfadigrundlagen als Hilfsmittel zum Sicherstellen der Ausgewogenheit des Programms', 1, '000400000000', '000400010000'), - ('000400010003', '2024-09-28 10:00:00', '2024-09-28 10:00:00', '…Einbindung der sieben Methoden und fünf Pfadfinderbeziehungen in das Programm. als Mittel zur Erreichung der Ziele der Wolfsstufe', 2, '000400000000', '000400010000'), - ('000400010004', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Stille Momente / Förderung der Beziehung zum Spirituellen auf der Pfadistufe', 3, '000400000000', '000400010000'), - ('000400010005', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Pfadimethode „Persönlichen Fortschritt fördern": Längerfristige Einbindung ins Programm', 4, '000400000000', '000400010000'), - ('000400020000', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Der Kurs bildet die TN zu verantwortlichen Einheitsleitenden oder Stufenleitenden aus.', 1, '000400000000', NULL), - ('000400020001', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Funktion sowie Rechte und Pflichten als Einheitsleitende oder Stufenleitende', 0, '000400000000', '000400020000'), - ('000400020002', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Organisation der Einheit / Stufe, insbesondere Betreuung der Leitpfadis, und längerfristige Planung', 1, '000400000000', '000400020000'), - ('000400020003', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Pflege von Elternkontakten', 2, '000400000000', '000400020000'), - ('000400020004', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Leiterpersönlichkeit: Auftreten und Vertreten von Anliegen', 3, '000400000000', '000400020000'), - ('000400020005', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Rolle im kantonalen Krisenkonzept', 4, '000400000000', '000400020000'), - ('000400020006', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Gesundheitsförderung: psychisches, physisches und soziales Wohlbefinden positiv beeinflussen', 5, '000400000000', '000400020000'), - ('000400020007', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Umgang mit Kinder mit herausforderndem Verhalten', 6, '000400000000', '000400020000'), - ('000400020008', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Suchtthematik: Prävention im Programm der Pfadistufe und Regeln im Leitungsteam', 7, '000400000000', '000400020000'), - ('000400020009', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Sexuelle Ausbeutung und Grenzverletzungen: Verantwortung als Stufenleitende und vorbeugende Massnahmen', 8, '000400000000', '000400020000'), - ('000400020010', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Gewalt: verschiedene Formen von Gewalt (u.a. psychische, physische und strukturelle) und Möglichkeiten, diesen vorzubeugen', 9, '000400000000', '000400020000'), - ('000400030000', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Der Kurs bildet die TN zu verantwortlichen Lagerleitenden aus.', 2, '000400000000', NULL), - ('000400030001', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Funktion, Rechte und Pflichten als Lagerleiter*in', 0, '000400000000', '000400030000'), - ('000400030002', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Funktionen und Aufgaben von Coach und AL, insbesondere bei der Lagerbetreuung', 1, '000400000000', '000400030000'), - ('000400030003', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Einsetzung des Lagerreglements gezielt für die Planung', 2, '000400000000', '000400030000'), - ('000400030004', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Ablauf der Lagerplanung und -administration', 3, '000400000000', '000400030000'), - ('000400030005', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Fähnliaktivitäten im Lagerprogramm und deren Betreuung', 4, '000400000000', '000400030000'), - ('000400030006', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Gestaltung des Lagerprogramms', 5, '000400000000', '000400030000'), - ('000400030007', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Gesundheit im Lager, Umgang mit Krankheiten', 6, '000400000000', '000400030000'), - ('000400030008', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Sicherheitskonzepte für Lager', 7, '000400000000', '000400030000'), - ('000400030009', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'sicherheitsrelevante Aktivitäten, Durchführungsentscheid, Anpassungen während Aktivitäten', 8, '000400000000', '000400030000'), - ('000400030010', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Spiele abändern und grössere sportliche Aktivitäten organisieren', 9, '000400000000', '000400030000'), - ('000400030011', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Wanderungen auf der Pfadistufe', 10, '000400000000', '000400030000'), - ('000400040000', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Der Kurs befähigt die TN, junge Leitende anzuleiten und zu betreuen.', 3, '000400000000', NULL), - ('000400040001', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Teamleiter*in sein und Zusammenarbeit im Team', 0, '000400000000', '000400040000'), - ('000400040002', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'inklusive Atmosphäre schaffen in einem Leitungsteam', 1, '000400000000', '000400040000'), - ('000400040003', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'relevante und konstruktive Rückmeldung zu einem Programmteilgeben', 2, '000400000000', '000400040000'), - ('000400040004', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Sitzungen vorbereiten und leiten', 3, '000400000000', '000400040000'), - ('000400040005', '2024-09-28 10:00:00', '2024-09-28 10:00:00', 'Betreuung und Förderung einzelner Teammitglieder', 4, '000400000000', '000400040000'), ('d89bc5e145fc', '2024-09-28 16:41:19', '2024-09-28 16:41:19', 'Entwicklungsstand und Bedürfnisse der Kinder der Wolfsstufe', 0, 'ebbd0c61eb85', '18db4adbe9b1'), ('4f5f857dd79c', '2024-09-28 16:41:19', '2024-09-28 16:41:19', 'Wolfsstufensymbolik', 1, 'ebbd0c61eb85', '18db4adbe9b1'), ('2526365b41bd', '2024-09-28 16:41:19', '2024-09-28 16:41:19', 'Persönliche Auseinandersetzung mit Gesetz und Versprechen der Roverstufe', 2, 'ebbd0c61eb85', '18db4adbe9b1'), diff --git a/api/migrations/schema/Version20260124154000.php b/api/migrations/schema/Version20260124154000.php new file mode 100644 index 0000000000..62e07c23a5 --- /dev/null +++ b/api/migrations/schema/Version20260124154000.php @@ -0,0 +1,29 @@ +addSql("UPDATE public.checklist c SET isprototype = FALSE WHERE c.id IN ('000100000000', '000200000000', '000300000000', '000400000000');"); + } + + #[\Override] + public function down(Schema $schema): void { + $this->addSql("UPDATE public.checklist c SET isprototype = TRUE WHERE c.id IN ('000100000000', '000200000000', '000300000000', '000400000000');"); + } +} diff --git a/api/migrations/schema/Version20260124154500.php b/api/migrations/schema/Version20260124154500.php new file mode 100644 index 0000000000..ce78609dae --- /dev/null +++ b/api/migrations/schema/Version20260124154500.php @@ -0,0 +1,51 @@ + checklist item connections (across camps)'; + } + + public function up(Schema $schema): void { + $this->addSql(<<<'EOF' + DELETE FROM public.checklistnode_checklistitem + WHERE (checklistnode_checklistitem.checklistnode_id || '#' || checklistnode_checklistitem.checklistitem_id) IN + (SELECT (cnci.checklistnode_id || '#' || cnci.checklistitem_id) FROM checklistnode_checklistitem cnci + INNER JOIN content_node cn ON cn.id=cnci.checklistnode_id + INNER JOIN content_node root ON root.id=COALESCE(cn.rootid, cn.id) + INNER JOIN activity a ON a.rootcontentnodeid=root.id + INNER JOIN checklist_item ci ON ci.id=cnci.checklistitem_id + INNER JOIN checklist c ON ci.checklistid = c.id + WHERE c.campid != a.campid); + EOF); + + $this->addSql(<<<'EOF' + DELETE FROM public.checklistnode_checklistitem + WHERE (checklistnode_checklistitem.checklistnode_id || '#' || checklistnode_checklistitem.checklistitem_id) IN + (SELECT (cnci.checklistnode_id || '#' || cnci.checklistitem_id) FROM checklistnode_checklistitem cnci + INNER JOIN content_node cn ON cn.id=cnci.checklistnode_id + INNER JOIN content_node root ON root.id=COALESCE(cn.rootid, cn.id) + INNER JOIN category cat ON cat.rootcontentnodeid=root.id + INNER JOIN checklist_item ci ON ci.id=cnci.checklistitem_id + INNER JOIN checklist c ON ci.checklistid = c.id + WHERE c.campid != cat.campid); + EOF); + } + + #[\Override] + public function down(Schema $schema): void { + // not possible + } +} diff --git a/api/patch/api-plattform-allow-null-links.patch b/api/patch/api-plattform-allow-null-links.patch deleted file mode 100644 index b70db25fee..0000000000 --- a/api/patch/api-plattform-allow-null-links.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 93b2e9a549901da364a116eb13639ff016be12a9 Mon Sep 17 00:00:00 2001 -From: Pirmin Mattmann -Date: Sun, 3 Oct 2021 02:41:17 +0200 -Subject: [PATCH] hal allow null links - ---- - Serializer/ItemNormalizer.php | 9 ++++----- - 1 file changed, 4 insertions(+), 6 deletions(-) - -diff --git a/Serializer/ItemNormalizer.php b/Serializer/ItemNormalizer.php -index a6e485d178..824679ee6b 100644 ---- a/Serializer/ItemNormalizer.php -+++ b/Serializer/ItemNormalizer.php -@@ -244,14 +244,12 @@ final class ItemNormalizer extends AbstractItemNormalizer - - $attributeValue = $this->getAttributeValue($object, $relation['name'], $format, $childContext); - -- if (empty($attributeValue)) { -- continue; -- } -- - if ('one' === $relation['cardinality']) { - if ('links' === $type) { -- $data[$key][$relationName]['href'] = $this->getRelationIri($attributeValue); -- continue; -+ if ($attributeValue !== null) { -+ $data[$key][$relationName]['href'] = $this->getRelationIri($attributeValue); -+ continue; -+ } - } - - $data[$key][$relationName] = $attributeValue; diff --git a/api/rector.php b/api/rector.php index 4089220aef..4cefd8e20b 100644 --- a/api/rector.php +++ b/api/rector.php @@ -11,8 +11,8 @@ use Rector\CodeQuality\Rector\If_\SimplifyIfElseToTernaryRector; use Rector\CodeQuality\Rector\If_\SimplifyIfReturnBoolRector; use Rector\Config\RectorConfig; +use Rector\DeadCode\Rector\ClassMethod\RemoveParentDelegatingConstructorRector; use Rector\DeadCode\Rector\If_\RemoveDeadInstanceOfRector; -use Rector\Doctrine\Bundle230\Rector\Class_\AddAnnotationToRepositoryRector; use Rector\Php74\Rector\Closure\ClosureToArrowFunctionRector; use Rector\Php80\Rector\Class_\ClassPropertyAssignToConstructorPromotionRector; use Rector\Php81\Rector\FuncCall\NullToStrictStringFuncCallArgRector; @@ -44,7 +44,6 @@ 'join' => 'join', ]) ->withSkip([ - AddAnnotationToRepositoryRector::class, AddInstanceofAssertForNullableInstanceRector::class, AssertEmptyNullableObjectToAssertInstanceofRector::class, ClosureToArrowFunctionRector::class, @@ -60,6 +59,7 @@ NullToStrictStringFuncCallArgRector::class, PreferPHPUnitThisCallRector::class, RemoveDeadInstanceOfRector::class, + RemoveParentDelegatingConstructorRector::class, SimplifyIfElseToTernaryRector::class, SimplifyIfReturnBoolRector::class, ThrowWithPreviousExceptionRector::class, diff --git a/api/src/Entity/Activity.php b/api/src/Entity/Activity.php index a8fd58bbcf..edc6e4b8a1 100644 --- a/api/src/Entity/Activity.php +++ b/api/src/Entity/Activity.php @@ -72,8 +72,8 @@ processor: ActivityCreateProcessor::class ), ], + normalizationContext: ['groups' => ['read']], denormalizationContext: ['groups' => ['write']], - normalizationContext: ['groups' => ['read']] )] #[ApiFilter(filterClass: SearchFilter::class, properties: ['camp'])] #[ORM\Entity(repositoryClass: ActivityRepository::class)] @@ -107,14 +107,14 @@ class Activity extends BaseEntity implements BelongsToCampInterface { * The list of points in time when this activity's programme will be carried out. */ #[Assert\Valid] - #[AssertLastCollectionItemIsNotDeleted(groups: ['ScheduleEntry:delete'], message: 'Cannot delete the last schedule entry.')] + #[AssertLastCollectionItemIsNotDeleted(message: 'Cannot delete the last schedule entry.', groups: ['ScheduleEntry:delete'])] #[Assert\Count(min: 1, groups: ['create'])] #[ApiProperty( writableLink: true, example: [['period' => '/periods/1a2b3c4a', 'start' => '2023-05-01T15:00:00+00:00', 'end' => '2023-05-01T16:00:00+00:00']], )] #[Groups(['read', 'create'])] - #[ORM\OneToMany(targetEntity: ScheduleEntry::class, mappedBy: 'activity', orphanRemoval: true, cascade: ['persist'])] + #[ORM\OneToMany(targetEntity: ScheduleEntry::class, mappedBy: 'activity', cascade: ['persist'], orphanRemoval: true)] #[ORM\OrderBy(['startOffset' => 'ASC', 'left' => 'ASC', 'endOffset' => 'DESC', 'id' => 'ASC'])] public Collection $scheduleEntries; @@ -184,8 +184,8 @@ class Activity extends BaseEntity implements BelongsToCampInterface { */ #[ApiProperty( writable: false, - uriTemplate: Comment::ACTIVITY_SUBRESOURCE_URI_TEMPLATE, - example: '/activities/1a2b3c4d/comments' + example: '/activities/1a2b3c4d/comments', + uriTemplate: Comment::ACTIVITY_SUBRESOURCE_URI_TEMPLATE )] #[Groups(['read'])] #[ORM\OneToMany(targetEntity: Comment::class, mappedBy: 'activity')] diff --git a/api/src/Entity/ActivityProgressLabel.php b/api/src/Entity/ActivityProgressLabel.php index 77c165de1b..148fb4bcab 100644 --- a/api/src/Entity/ActivityProgressLabel.php +++ b/api/src/Entity/ActivityProgressLabel.php @@ -67,8 +67,8 @@ validationContext: ['groups' => ['Default', 'create']] ), ], - denormalizationContext: ['groups' => ['write']], normalizationContext: ['groups' => ['read']], + denormalizationContext: ['groups' => ['write']], order: ['camp.id', 'position'] )] #[ApiFilter(filterClass: SearchFilter::class, properties: ['camp'])] diff --git a/api/src/Entity/ActivityResponsible.php b/api/src/Entity/ActivityResponsible.php index bf46026f6c..d7a6a7d94d 100644 --- a/api/src/Entity/ActivityResponsible.php +++ b/api/src/Entity/ActivityResponsible.php @@ -34,8 +34,8 @@ new Post( securityPostDenormalize: 'is_granted("CAMP_MEMBER", object) or is_granted("CAMP_MANAGER", object) or object.activity === null' ), ], + normalizationContext: ['groups' => ['read']], denormalizationContext: ['groups' => ['write']], - normalizationContext: ['groups' => ['read']] )] #[UniqueEntity( fields: ['campCollaboration', 'activity'], diff --git a/api/src/Entity/Camp.php b/api/src/Entity/Camp.php index 8facd686eb..e5a7037fd0 100644 --- a/api/src/Entity/Camp.php +++ b/api/src/Entity/Camp.php @@ -59,9 +59,9 @@ processor: CampCreateProcessor::class, ), ], + normalizationContext: ['groups' => ['read']], denormalizationContext: ['groups' => ['write']], forceEager: false, - normalizationContext: ['groups' => ['read']] )] #[ApiFilter(filterClass: SearchFilter::class, properties: ['isPrototype'])] #[ApiFilter(filterClass: CampCollaboratorFilter::class)] @@ -102,7 +102,7 @@ class Camp extends BaseEntity implements BelongsToCampInterface, CopyFromPrototy example: [['description' => 'Hauptlager', 'start' => '2022-01-01', 'end' => '2022-01-08']] )] #[Groups(['read', 'create'])] - #[ORM\OneToMany(targetEntity: Period::class, mappedBy: 'camp', orphanRemoval: true, cascade: ['persist'])] + #[ORM\OneToMany(targetEntity: Period::class, mappedBy: 'camp', cascade: ['persist'], orphanRemoval: true)] #[ORM\OrderBy(['start' => 'ASC'])] public Collection $periods; @@ -111,11 +111,11 @@ class Camp extends BaseEntity implements BelongsToCampInterface, CopyFromPrototy */ #[ApiProperty( writable: false, - uriTemplate: Category::CAMP_SUBRESOURCE_URI_TEMPLATE, - example: '"/camp/1a2b3c4d/categories"' + example: '"/camp/1a2b3c4d/categories"', + uriTemplate: Category::CAMP_SUBRESOURCE_URI_TEMPLATE )] #[Groups(['read'])] - #[ORM\OneToMany(targetEntity: Category::class, mappedBy: 'camp', orphanRemoval: true, cascade: ['persist'])] + #[ORM\OneToMany(targetEntity: Category::class, mappedBy: 'camp', cascade: ['persist'], orphanRemoval: true)] public Collection $categories; /** @@ -123,11 +123,11 @@ class Camp extends BaseEntity implements BelongsToCampInterface, CopyFromPrototy */ #[ApiProperty( writable: false, - uriTemplate: ActivityProgressLabel::CAMP_SUBRESOURCE_URI_TEMPLATE, - example: '"/camps/1a2b3c4d/activity_progress_labels"' + example: '"/camps/1a2b3c4d/activity_progress_labels"', + uriTemplate: ActivityProgressLabel::CAMP_SUBRESOURCE_URI_TEMPLATE )] #[Groups(['read'])] - #[ORM\OneToMany(targetEntity: ActivityProgressLabel::class, mappedBy: 'camp', orphanRemoval: true, cascade: ['persist'])] + #[ORM\OneToMany(targetEntity: ActivityProgressLabel::class, mappedBy: 'camp', cascade: ['persist'], orphanRemoval: true)] public Collection $progressLabels; /** @@ -136,8 +136,8 @@ class Camp extends BaseEntity implements BelongsToCampInterface, CopyFromPrototy */ #[ApiProperty( writable: false, - uriTemplate: Activity::CAMP_SUBRESOURCE_URI_TEMPLATE, - example: '/camps/1a2b3c4d/activities' + example: '/camps/1a2b3c4d/activities', + uriTemplate: Activity::CAMP_SUBRESOURCE_URI_TEMPLATE )] #[Groups(['read'])] #[ORM\OneToMany(targetEntity: Activity::class, mappedBy: 'camp', orphanRemoval: true)] @@ -149,13 +149,13 @@ class Camp extends BaseEntity implements BelongsToCampInterface, CopyFromPrototy */ #[ApiProperty(writable: false, example: '["/material_lists/1a2b3c4d"]')] #[Groups(['read'])] - #[ORM\OneToMany(targetEntity: MaterialList::class, mappedBy: 'camp', orphanRemoval: true, cascade: ['persist'])] + #[ORM\OneToMany(targetEntity: MaterialList::class, mappedBy: 'camp', cascade: ['persist'], orphanRemoval: true)] public Collection $materialLists; /** * List of MaterialItems that belong to this Camp. */ - #[ORM\OneToMany(targetEntity: MaterialItem::class, mappedBy: 'camp', orphanRemoval: true, cascade: ['persist'])] + #[ORM\OneToMany(targetEntity: MaterialItem::class, mappedBy: 'camp', cascade: ['persist'], orphanRemoval: true)] public Collection $materialItems; /** @@ -164,7 +164,7 @@ class Camp extends BaseEntity implements BelongsToCampInterface, CopyFromPrototy */ #[ApiProperty(writable: false, uriTemplate: Checklist::CAMP_SUBRESOURCE_URI_TEMPLATE)] #[Groups(['read'])] - #[ORM\OneToMany(targetEntity: Checklist::class, mappedBy: 'camp', orphanRemoval: true, cascade: ['persist'])] + #[ORM\OneToMany(targetEntity: Checklist::class, mappedBy: 'camp', cascade: ['persist'], orphanRemoval: true)] public Collection $checklists; /** @@ -223,7 +223,7 @@ class Camp extends BaseEntity implements BelongsToCampInterface, CopyFromPrototy */ #[Assert\Type('bool')] #[Assert\DisableAutoMapping] - #[ApiProperty(example: true, writable: false)] + #[ApiProperty(writable: false, example: true)] #[Groups(['read'])] #[ORM\Column(type: 'boolean')] public bool $isPrototype = false; @@ -485,8 +485,8 @@ public function getCamp(): ?Camp { */ #[ApiProperty( writable: false, - uriTemplate: CampCollaboration::CAMP_SUBRESOURCE_URI_TEMPLATE, - example: '["/camps/1a2b3c4d/camp_collaborations"]' + example: '["/camps/1a2b3c4d/camp_collaborations"]', + uriTemplate: CampCollaboration::CAMP_SUBRESOURCE_URI_TEMPLATE )] public function getCampCollaborations(): array { return []; diff --git a/api/src/Entity/CampCollaboration.php b/api/src/Entity/CampCollaboration.php index 61d9b626c1..80f28f43cb 100644 --- a/api/src/Entity/CampCollaboration.php +++ b/api/src/Entity/CampCollaboration.php @@ -82,8 +82,8 @@ processor: CampCollaborationCreateProcessor::class ), ], + normalizationContext: ['groups' => ['read']], denormalizationContext: ['groups' => ['write']], - normalizationContext: ['groups' => ['read']] )] #[ApiFilter(filterClass: SearchFilter::class, properties: ['camp', 'activityResponsibles.activity'])] #[UniqueEntity( diff --git a/api/src/Entity/Category.php b/api/src/Entity/Category.php index 32208329ba..fee1209c69 100644 --- a/api/src/Entity/Category.php +++ b/api/src/Entity/Category.php @@ -74,8 +74,8 @@ ], ), ], - denormalizationContext: ['groups' => ['write']], normalizationContext: ['groups' => ['read']], + denormalizationContext: ['groups' => ['write']], order: ['camp.id', 'short'], )] #[ApiFilter(filterClass: SearchFilter::class, properties: ['camp'])] diff --git a/api/src/Entity/Checklist.php b/api/src/Entity/Checklist.php index 5f88870e73..231d719859 100644 --- a/api/src/Entity/Checklist.php +++ b/api/src/Entity/Checklist.php @@ -71,8 +71,8 @@ ] ), ], - denormalizationContext: ['groups' => ['write']], normalizationContext: ['groups' => ['read']], + denormalizationContext: ['groups' => ['write']], order: ['camp.id', 'name'], )] #[ApiFilter(filterClass: SearchFilter::class, properties: ['camp', 'isPrototype'])] @@ -131,7 +131,7 @@ class Checklist extends BaseEntity implements BelongsToCampInterface, CopyFromPr */ #[Assert\Type('bool')] #[Assert\DisableAutoMapping] - #[ApiProperty(example: true, writable: true)] + #[ApiProperty(writable: true, example: true)] #[Groups(['read', 'create'])] #[ORM\Column(type: 'boolean', options: ['default' => false])] public bool $isPrototype = false; diff --git a/api/src/Entity/ChecklistItem.php b/api/src/Entity/ChecklistItem.php index 18c58e4c0e..2c429c0b59 100644 --- a/api/src/Entity/ChecklistItem.php +++ b/api/src/Entity/ChecklistItem.php @@ -75,8 +75,8 @@ ] ), ], - denormalizationContext: ['groups' => ['write']], normalizationContext: ['groups' => ['read']], + denormalizationContext: ['groups' => ['write']], order: ['checklist.id', 'id'], )] #[ApiFilter(filterClass: SearchFilter::class, properties: ['checklist', 'checklist.camp', 'checklistNodes'])] @@ -84,6 +84,7 @@ #[ORM\UniqueConstraint(name: 'checklistitem_checklistid_parentid_position_unique', columns: ['checklistid', 'parentid', 'position'])] class ChecklistItem extends BaseEntity implements BelongsToCampInterface, CopyFromPrototypeInterface, HasParentInterface { public const CHECKLIST_SUBRESOURCE_URI_TEMPLATE = '/checklists/{checklistId}/checklist_items{._format}'; + public const MAX_NESTING_DEPTH = 3; /** * The Checklist this Item belongs to. @@ -100,14 +101,14 @@ class ChecklistItem extends BaseEntity implements BelongsToCampInterface, CopyFr * root of a ChecklistItem tree. For non-root ChecklistItems, the parent can be changed, as long * as the new parent is in the same checklist as the old one. * - * Nesting has maximum depth of 3 Levels (root - child - grandchild) + * Nesting has maximum depth of 3 levels (root - child - grandchild) * => CurrentNesting + SubtreeDepth < 3 */ #[AssertBelongsToSameChecklist] #[AssertNoLoop] #[Assert\Expression( - '(this.getNestingLevel() + this.getSubtreeDepth()) < 3', - 'Nesting can be a maximum of 3 levels deep.' + '(this.getNestingLevel() + this.getSubtreeDepth()) < '.self::MAX_NESTING_DEPTH, + 'Nesting can be a maximum of '.self::MAX_NESTING_DEPTH.' levels deep.' )] #[ApiProperty(example: '/checklist_items/1a2b3c4d')] #[Gedmo\SortableGroup] diff --git a/api/src/Entity/Comment.php b/api/src/Entity/Comment.php index 7aed79ae1e..8fd6bc2e6a 100644 --- a/api/src/Entity/Comment.php +++ b/api/src/Entity/Comment.php @@ -54,8 +54,8 @@ security: 'is_fully_authenticated()', ), ], - denormalizationContext: ['groups' => ['write']], normalizationContext: ['groups' => ['read']], + denormalizationContext: ['groups' => ['write']], order: ['createTime' => 'ASC'], )] #[ApiFilter(filterClass: SearchFilter::class, properties: ['camp', 'activity'])] @@ -86,7 +86,7 @@ class Comment extends BaseEntity implements BelongsToCampInterface { * The author of the comment. */ #[Assert\DisableAutoMapping] // avoids validation error when author is null in payload - #[ApiProperty(example: '/users/1a2b3c4d', writable: false)] + #[ApiProperty(writable: false, example: '/users/1a2b3c4d')] #[Groups(['read', 'create'])] #[ORM\ManyToOne(targetEntity: User::class, inversedBy: 'comments')] #[ORM\JoinColumn(nullable: false, onDelete: 'cascade')] @@ -112,15 +112,11 @@ class Comment extends BaseEntity implements BelongsToCampInterface { #[InputFilter\Trim] #[InputFilter\CleanText] #[Assert\Length(max: 32)] - #[ApiProperty(example: 'Sportolympiade', writable: false)] + #[ApiProperty(writable: false, example: 'Sportolympiade')] #[Groups(['read', 'create'])] #[ORM\Column(type: 'text', nullable: true)] public ?string $orphanDescription = null; - public function __construct() { - parent::__construct(); - } - public function getCamp(): ?Camp { return $this->camp; } diff --git a/api/src/Entity/ContentNode.php b/api/src/Entity/ContentNode.php index 7f833a7af0..ba96b4f474 100644 --- a/api/src/Entity/ContentNode.php +++ b/api/src/Entity/ContentNode.php @@ -43,8 +43,8 @@ provider: ContentNodeCollectionProvider::class ), ], - denormalizationContext: ['groups' => ['write']], normalizationContext: ['groups' => ['read']], + denormalizationContext: ['groups' => ['write']], order: ['root.id', 'parent.id', 'slot', 'position'] )] #[ApiFilter(filterClass: SearchFilter::class, properties: ['contentType', 'root'])] diff --git a/api/src/Entity/ContentNode/ChecklistNode.php b/api/src/Entity/ContentNode/ChecklistNode.php index bfe7baec4a..38aab31a30 100644 --- a/api/src/Entity/ContentNode/ChecklistNode.php +++ b/api/src/Entity/ContentNode/ChecklistNode.php @@ -9,6 +9,7 @@ use ApiPlatform\Metadata\GetCollection; use ApiPlatform\Metadata\Patch; use ApiPlatform\Metadata\Post; +use App\Entity\Checklist; use App\Entity\ChecklistItem; use App\Entity\ContentNode; use App\Repository\ChecklistNodeRepository; @@ -47,9 +48,9 @@ processor: ChecklistNodePersistProcessor::class, ), ], - denormalizationContext: ['groups' => ['write']], + routePrefix: '/content_node', normalizationContext: ['groups' => ['read']], - routePrefix: '/content_node' + denormalizationContext: ['groups' => ['write']], )] #[ORM\Entity(repositoryClass: ChecklistNodeRepository::class)] class ChecklistNode extends ContentNode { @@ -102,12 +103,76 @@ public function removeChecklistItem(ChecklistItem $checklistItem) { public function copyFromPrototype($prototype, $entityMap): void { parent::copyFromPrototype($prototype, $entityMap); - // copy all checklist-items - foreach ($prototype->checklistItems as $itemPrototype) { - /** @var ChecklistItem $itemPrototype */ - /** @var ChecklistItem $checklilstItem */ - $checklilstItem = $entityMap->get($itemPrototype); - $this->addChecklistItem($checklilstItem); + // copy the connections to checklist items + if ($entityMap->belongsToTargetCamp($prototype)) { + foreach ($prototype->checklistItems as $itemPrototype) { + /** @var ChecklistItem $itemPrototype */ + /** @var ChecklistItem $checklistItem */ + $checklistItem = $entityMap->get($itemPrototype); + $this->addChecklistItem($checklistItem); + } + } else { + /** @var ChecklistItem[] $checklistItemsInCamp */ + $checklistItemsInCamp = array_merge(...array_values(array_map(function (Checklist $checklist) { + return $checklist->getChecklistItems(); + }, $entityMap->getTargetCamp()->getChecklists()))); + foreach ($prototype->checklistItems as $itemPrototype) { + /** @var ChecklistItem $itemPrototype */ + /** @var ChecklistItem $knownEquivalent */ + // First, look up whether we already know a replacement + $knownEquivalent = $entityMap->get($itemPrototype); + if ($knownEquivalent !== $itemPrototype) { + $this->addChecklistItem($knownEquivalent); + + continue; + } + + // Calculate a score for how well each item in the target camp matches the prototype item + $matches = array_map(function (ChecklistItem $existingItem) use ($itemPrototype) { + $score = 0; + if ($existingItem->text !== $itemPrototype->text) { + return $score; + } + ++$score; + + /** @var ChecklistItem $parent */ + $parent = $itemPrototype->getParent(); + + /** @var ChecklistItem $existingParent */ + $existingParent = $existingItem->getParent(); + while (null !== $parent && null !== $existingParent && $score <= ChecklistItem::MAX_NESTING_DEPTH) { + if ($existingParent->text !== $parent->text) { + return $score; + } + ++$score; + + /** @var ChecklistItem $parent */ + $parent = $parent->getParent(); + } + + if ($existingItem->checklist->checklistPrototypeId !== $itemPrototype->checklist->checklistPrototypeId) { + return $score; + } + ++$score; + + if ($existingItem->checklist->name !== $itemPrototype->checklist->name) { + return $score; + } + + return $score + 1; + }, $checklistItemsInCamp); + + // Use the checklist with the largest positive score, if any + $maxScore = max([0, ...$matches]); + $bestMatchIndex = array_find_key($matches, function ($match) use ($maxScore) { + return $match === $maxScore; + }); + if ($maxScore > 0 && null !== $bestMatchIndex) { + $result = $checklistItemsInCamp[$bestMatchIndex]; + $entityMap->add($itemPrototype, $result); + $this->addChecklistItem($result); + } + } } } } diff --git a/api/src/Entity/ContentNode/ColumnLayout.php b/api/src/Entity/ContentNode/ColumnLayout.php index 1419ac099c..cda95f89f5 100644 --- a/api/src/Entity/ContentNode/ColumnLayout.php +++ b/api/src/Entity/ContentNode/ColumnLayout.php @@ -49,9 +49,9 @@ processor: ContentNodePersistProcessor::class ), ], - denormalizationContext: ['groups' => ['write']], + routePrefix: '/content_node', normalizationContext: ['groups' => ['read']], - routePrefix: '/content_node' + denormalizationContext: ['groups' => ['write']], )] #[ORM\Entity(repositoryClass: ColumnLayoutRepository::class)] class ColumnLayout extends ContentNode implements SupportsContentNodeChildren { diff --git a/api/src/Entity/ContentNode/MaterialNode.php b/api/src/Entity/ContentNode/MaterialNode.php index 207246030b..44548da3ba 100644 --- a/api/src/Entity/ContentNode/MaterialNode.php +++ b/api/src/Entity/ContentNode/MaterialNode.php @@ -47,15 +47,15 @@ processor: ContentNodePersistProcessor::class ), ], - denormalizationContext: ['groups' => ['write']], + routePrefix: '/content_node', normalizationContext: ['groups' => ['read']], - routePrefix: '/content_node' + denormalizationContext: ['groups' => ['write']], )] #[ORM\Entity(repositoryClass: MaterialNodeRepository::class)] class MaterialNode extends ContentNode { #[ApiProperty(readableLink: true, writableLink: false)] #[Groups(['read'])] - #[ORM\OneToMany(targetEntity: MaterialItem::class, mappedBy: 'materialNode', orphanRemoval: true, cascade: ['persist', 'remove'])] + #[ORM\OneToMany(targetEntity: MaterialItem::class, mappedBy: 'materialNode', cascade: ['persist', 'remove'], orphanRemoval: true)] public Collection $materialItems; public function __construct() { diff --git a/api/src/Entity/ContentNode/MultiSelect.php b/api/src/Entity/ContentNode/MultiSelect.php index c1b433fab4..6549ec10b4 100644 --- a/api/src/Entity/ContentNode/MultiSelect.php +++ b/api/src/Entity/ContentNode/MultiSelect.php @@ -45,9 +45,9 @@ processor: MultiSelectCreateProcessor::class ), ], - denormalizationContext: ['groups' => ['write']], + routePrefix: '/content_node', normalizationContext: ['groups' => ['read']], - routePrefix: '/content_node' + denormalizationContext: ['groups' => ['write']], )] #[ORM\Entity(repositoryClass: MultiSelectRepository::class)] class MultiSelect extends ContentNode { diff --git a/api/src/Entity/ContentNode/ResponsiveLayout.php b/api/src/Entity/ContentNode/ResponsiveLayout.php index 8370c2a8d0..0adc99f7dd 100644 --- a/api/src/Entity/ContentNode/ResponsiveLayout.php +++ b/api/src/Entity/ContentNode/ResponsiveLayout.php @@ -48,9 +48,9 @@ processor: ContentNodePersistProcessor::class ), ], - denormalizationContext: ['groups' => ['write']], + routePrefix: '/content_node', normalizationContext: ['groups' => ['read']], - routePrefix: '/content_node' + denormalizationContext: ['groups' => ['write']], )] #[ORM\Entity(repositoryClass: ResponsiveLayoutRepository::class)] class ResponsiveLayout extends ContentNode implements SupportsContentNodeChildren { diff --git a/api/src/Entity/ContentNode/SingleText.php b/api/src/Entity/ContentNode/SingleText.php index 4eaa447bb2..cc1f2d58ff 100644 --- a/api/src/Entity/ContentNode/SingleText.php +++ b/api/src/Entity/ContentNode/SingleText.php @@ -44,9 +44,9 @@ processor: SingleTextPersistProcessor::class ), ], - denormalizationContext: ['groups' => ['write']], + routePrefix: '/content_node', normalizationContext: ['groups' => ['read']], - routePrefix: '/content_node' + denormalizationContext: ['groups' => ['write']], )] #[ORM\Entity(repositoryClass: SingleTextRepository::class)] class SingleText extends ContentNode { diff --git a/api/src/Entity/ContentNode/Storyboard.php b/api/src/Entity/ContentNode/Storyboard.php index b227cf6478..c8d09cd574 100644 --- a/api/src/Entity/ContentNode/Storyboard.php +++ b/api/src/Entity/ContentNode/Storyboard.php @@ -44,9 +44,9 @@ processor: StoryboardPersistProcessor::class ), ], - denormalizationContext: ['groups' => ['write']], + routePrefix: '/content_node', normalizationContext: ['groups' => ['read']], - routePrefix: '/content_node' + denormalizationContext: ['groups' => ['write']], )] #[ORM\Entity(repositoryClass: StoryboardRepository::class)] class Storyboard extends ContentNode { diff --git a/api/src/Entity/Day.php b/api/src/Entity/Day.php index a52a979482..7b37dbef50 100644 --- a/api/src/Entity/Day.php +++ b/api/src/Entity/Day.php @@ -52,8 +52,8 @@ ] ), ], - denormalizationContext: ['groups' => ['write']], normalizationContext: ['groups' => ['read']], + denormalizationContext: ['groups' => ['write']], order: ['period.start', 'dayOffset'] )] #[ApiFilter(filterClass: SearchFilter::class, properties: ['period', 'period.camp'])] @@ -83,8 +83,8 @@ class Day extends BaseEntity implements BelongsToCampInterface { */ #[ApiProperty( writable: false, - uriTemplate: DayResponsible::DAY_SUBRESOURCE_URI_TEMPLATE, - example: '/days/1a2b3c4d/day_responsibles' + example: '/days/1a2b3c4d/day_responsibles', + uriTemplate: DayResponsible::DAY_SUBRESOURCE_URI_TEMPLATE )] #[Groups(['read'])] #[ORM\OneToMany(targetEntity: DayResponsible::class, mappedBy: 'day', orphanRemoval: true)] diff --git a/api/src/Entity/DayResponsible.php b/api/src/Entity/DayResponsible.php index e35ad7a7ff..1340d9184c 100644 --- a/api/src/Entity/DayResponsible.php +++ b/api/src/Entity/DayResponsible.php @@ -51,8 +51,8 @@ securityPostDenormalize: 'is_granted("CAMP_MEMBER", object) or is_granted("CAMP_MANAGER", object) or object.day === null' ), ], + normalizationContext: ['groups' => ['read']], denormalizationContext: ['groups' => ['write']], - normalizationContext: ['groups' => ['read']] )] #[ApiFilter(filterClass: SearchFilter::class, properties: ['day', 'day.period'])] #[UniqueEntity( diff --git a/api/src/Entity/HasRootContentNodeTrait.php b/api/src/Entity/HasRootContentNodeTrait.php index 5a3e0fbc46..b82a37ad11 100644 --- a/api/src/Entity/HasRootContentNodeTrait.php +++ b/api/src/Entity/HasRootContentNodeTrait.php @@ -19,7 +19,7 @@ trait HasRootContentNodeTrait { #[ApiProperty(writable: false, example: '/content_nodes/1a2b3c4d')] #[Groups(['read'])] #[ORM\OneToOne(targetEntity: ColumnLayout::class, cascade: ['persist'])] - #[ORM\JoinColumn(nullable: false, unique: true)] + #[ORM\JoinColumn(unique: true, nullable: false)] public ?ColumnLayout $rootContentNode = null; public function setRootContentNode(?ColumnLayout $rootContentNode) { diff --git a/api/src/Entity/MaterialItem.php b/api/src/Entity/MaterialItem.php index b9a24b0d79..5d9304c887 100644 --- a/api/src/Entity/MaterialItem.php +++ b/api/src/Entity/MaterialItem.php @@ -53,8 +53,8 @@ processor: MaterialItemCreateProcessor::class, ), ], + normalizationContext: ['groups' => ['read']], denormalizationContext: ['groups' => ['write']], - normalizationContext: ['groups' => ['read']] )] #[ApiFilter(filterClass: SearchFilter::class, properties: ['camp', 'materialList', 'materialNode'])] #[ApiFilter(filterClass: MaterialItemPeriodFilter::class)] diff --git a/api/src/Entity/MaterialList.php b/api/src/Entity/MaterialList.php index 3b934e0406..fb4dae1c49 100644 --- a/api/src/Entity/MaterialList.php +++ b/api/src/Entity/MaterialList.php @@ -47,8 +47,8 @@ securityPostDenormalize: 'is_granted("CAMP_MEMBER", object) or is_granted("CAMP_MANAGER", object) or object.camp === null' ), ], - denormalizationContext: ['groups' => ['write']], normalizationContext: ['groups' => ['read']], + denormalizationContext: ['groups' => ['write']], order: ['camp.id', 'name'], )] #[ApiFilter(filterClass: SearchFilter::class, properties: ['camp'])] diff --git a/api/src/Entity/OAuthState.php b/api/src/Entity/OAuthState.php index e76a2429a0..e889d083d5 100644 --- a/api/src/Entity/OAuthState.php +++ b/api/src/Entity/OAuthState.php @@ -10,7 +10,7 @@ * Definitely not exposed on the API, this is only for internal security checking. */ #[ORM\Entity(repositoryClass: OAuthStateRepository::class)] -#[ORM\Index(columns: ['expireTime', 'state'], name: 'IDX_466EF70CD49BE2B9A393D2FB')] +#[ORM\Index(name: 'IDX_466EF70CD49BE2B9A393D2FB', columns: ['expireTime', 'state'])] class OAuthState extends BaseEntity { #[ORM\Column(type: 'string', length: 32)] public string $state; diff --git a/api/src/Entity/Period.php b/api/src/Entity/Period.php index 89b5a448f7..6880105291 100644 --- a/api/src/Entity/Period.php +++ b/api/src/Entity/Period.php @@ -57,8 +57,8 @@ processor: PeriodPersistProcessor::class ), ], - denormalizationContext: ['groups' => ['write']], normalizationContext: ['groups' => ['read']], + denormalizationContext: ['groups' => ['write']], order: ['start'] )] #[ApiFilter(filterClass: SearchFilter::class, properties: ['camp'])] @@ -75,11 +75,11 @@ class Period extends BaseEntity implements BelongsToCampInterface { */ #[ApiProperty( writable: false, - uriTemplate: Day::PERIOD_SUBRESOURCE_URI_TEMPLATE, - example: '/periods/1a2b3c4d/days' + example: '/periods/1a2b3c4d/days', + uriTemplate: Day::PERIOD_SUBRESOURCE_URI_TEMPLATE )] #[Groups(['read'])] - #[ORM\OneToMany(targetEntity: Day::class, mappedBy: 'period', orphanRemoval: true, cascade: ['persist'])] + #[ORM\OneToMany(targetEntity: Day::class, mappedBy: 'period', cascade: ['persist'], orphanRemoval: true)] #[ORM\OrderBy(['dayOffset' => 'ASC'])] public Collection $days; @@ -91,8 +91,8 @@ class Period extends BaseEntity implements BelongsToCampInterface { */ #[ApiProperty( writable: false, - uriTemplate: ScheduleEntry::PERIOD_SUBRESOURCE_URI_TEMPLATE, - example: '/periods/1a2b3c4d/schedule_entries' + example: '/periods/1a2b3c4d/schedule_entries', + uriTemplate: ScheduleEntry::PERIOD_SUBRESOURCE_URI_TEMPLATE )] #[Groups(['read'])] #[ORM\OneToMany(targetEntity: ScheduleEntry::class, mappedBy: 'period')] diff --git a/api/src/Entity/Profile.php b/api/src/Entity/Profile.php index af3a61ea1b..8d32b31df7 100644 --- a/api/src/Entity/Profile.php +++ b/api/src/Entity/Profile.php @@ -35,8 +35,8 @@ security: 'is_authenticated()' ), ], + normalizationContext: ['groups' => ['read']], denormalizationContext: ['groups' => ['write']], - normalizationContext: ['groups' => ['read']] )] #[ApiFilter(filterClass: SearchFilter::class, properties: ['user.collaborations.camp', 'user'])] #[ORM\Entity(repositoryClass: ProfileRepository::class)] @@ -57,7 +57,7 @@ class Profile extends BaseEntity { #[Assert\Email] #[ApiProperty(example: self::EXAMPLE_EMAIL)] #[Groups(['read', 'create'])] - #[ORM\Column(type: 'string', length: 64, nullable: false, unique: true)] + #[ORM\Column(type: 'string', length: 64, unique: true, nullable: false)] public ?string $email = null; /** diff --git a/api/src/Entity/ScheduleEntry.php b/api/src/Entity/ScheduleEntry.php index e82584c14d..3dbeb08870 100644 --- a/api/src/Entity/ScheduleEntry.php +++ b/api/src/Entity/ScheduleEntry.php @@ -68,8 +68,8 @@ validationContext: ['groups' => ScheduleEntryPostGroupSequence::class] ), ], + normalizationContext: ['groups' => ['read']], denormalizationContext: ['groups' => ['write']], - normalizationContext: ['groups' => ['read']] )] #[ApiFilter(filterClass: SearchFilter::class, properties: ['period', 'activity'])] #[ApiFilter(filterClass: ExpressionDateTimeFilter::class, properties: [ @@ -94,7 +94,7 @@ class ScheduleEntry extends BaseEntity implements BelongsToCampInterface, CanGen #[AssertBelongsToSameCamp] #[ApiProperty(example: '/periods/1a2b3c4d')] #[Groups(['read', 'write'])] - #[ORM\ManyToOne(targetEntity: Period::class, inversedBy: 'scheduleEntries', fetch: 'EAGER')] + #[ORM\ManyToOne(targetEntity: Period::class, fetch: 'EAGER', inversedBy: 'scheduleEntries')] #[ORM\JoinColumn(nullable: false, onDelete: 'cascade')] public ?Period $period = null; @@ -180,7 +180,7 @@ public function setPeriod(Period $period): void { /** * Start date and time of the schedule entry. */ - #[ApiProperty(example: '2022-01-02T00:00:00+00:00', required: true, openapiContext: ['format' => 'date-time'])] + #[ApiProperty(required: true, example: '2022-01-02T00:00:00+00:00', openapiContext: ['format' => 'date-time'])] #[Assert\GreaterThanOrEqual(propertyPath: 'period.start')] #[Groups(['read'])] public function getStart(): ?\DateTimeInterface { @@ -206,7 +206,7 @@ public function setStart(\DateTimeInterface $start): void { /** * End date and time of the schedule entry. */ - #[ApiProperty(example: '2022-01-02T01:30:00+00:00', required: true, openapiContext: ['format' => 'date-time'])] + #[ApiProperty(required: true, example: '2022-01-02T01:30:00+00:00', openapiContext: ['format' => 'date-time'])] #[Assert\GreaterThan(propertyPath: 'start')] #[Assert\LessThanOrEqual(propertyPath: 'period.endOfLastDay')] #[Groups(['read'])] diff --git a/api/src/Entity/User.php b/api/src/Entity/User.php index 7697f979e2..c72a4e42e2 100644 --- a/api/src/Entity/User.php +++ b/api/src/Entity/User.php @@ -57,8 +57,8 @@ processor: UserCreateProcessor::class ), ], + normalizationContext: ['groups' => ['read']], denormalizationContext: ['groups' => ['write']], - normalizationContext: ['groups' => ['read']] )] #[UniqueEntity( fields: ['profile'], @@ -164,7 +164,7 @@ class User extends BaseEntity implements UserInterface, PasswordAuthenticatedUse )] #[Groups(['create'])] #[ORM\OneToOne(targetEntity: Profile::class, inversedBy: 'user', cascade: ['persist'], fetch: 'EAGER')] - #[ORM\JoinColumn(nullable: false, unique: true, onDelete: 'restrict')] + #[ORM\JoinColumn(unique: true, nullable: false, onDelete: 'restrict')] public Profile $profile; /** diff --git a/api/src/OpenApi/JwtDecorator.php b/api/src/OpenApi/JwtDecorator.php index 757cd893bb..d72cfaa3e7 100644 --- a/api/src/OpenApi/JwtDecorator.php +++ b/api/src/OpenApi/JwtDecorator.php @@ -4,6 +4,9 @@ use ApiPlatform\OpenApi\Factory\OpenApiFactoryInterface; use ApiPlatform\OpenApi\Model; +use ApiPlatform\OpenApi\Model\Operation; +use ApiPlatform\OpenApi\Model\RequestBody; +use ApiPlatform\OpenApi\Model\Response; use ApiPlatform\OpenApi\OpenApi; /** @@ -33,16 +36,16 @@ public function __invoke(array $context = []): OpenApi { $cookiePrefix = $this->cookiePrefix; $pathItem = new Model\PathItem( ref: 'JWT Token', - post: new Model\Operation( + post: new Operation( operationId: 'postCredentials', tags: ['Login'], responses: [ - '204' => [ - 'description' => "Get a JWT token split across the two cookies {$cookiePrefix}jwt_hp and {$cookiePrefix}jwt_s. Also returns a refresh token in {$cookiePrefix}refresh_token", - ], + '204' => new Response( + description: "Get a JWT token split across the two cookies {$cookiePrefix}jwt_hp and {$cookiePrefix}jwt_s. Also returns a refresh token in {$cookiePrefix}refresh_token", + ), ], summary: 'Log in using email and password.', - requestBody: new Model\RequestBody( + requestBody: new RequestBody( description: 'Generate new JWT Token by logging in', content: new \ArrayObject([ 'application/ld+json' => [ diff --git a/api/src/OpenApi/OAuthDecorator.php b/api/src/OpenApi/OAuthDecorator.php index 181107eb4b..1de66b3c3d 100644 --- a/api/src/OpenApi/OAuthDecorator.php +++ b/api/src/OpenApi/OAuthDecorator.php @@ -3,7 +3,10 @@ namespace App\OpenApi; use ApiPlatform\OpenApi\Factory\OpenApiFactoryInterface; -use ApiPlatform\OpenApi\Model; +use ApiPlatform\OpenApi\Model\Operation; +use ApiPlatform\OpenApi\Model\Parameter; +use ApiPlatform\OpenApi\Model\PathItem; +use ApiPlatform\OpenApi\Model\Response; use ApiPlatform\OpenApi\OpenApi; /** @@ -15,19 +18,19 @@ public function __construct(private OpenApiFactoryInterface $decorated) {} public function __invoke(array $context = []): OpenApi { $openApi = ($this->decorated)($context); - $pathItemGoogle = new Model\PathItem( + $pathItemGoogle = new PathItem( ref: 'Google OAuth', - get: new Model\Operation( + get: new Operation( operationId: 'oauthGoogleRedirect', tags: ['OAuth'], responses: [ - '302' => [ - 'description' => 'Redirect to the Google OAuth authorization endpoint', - ], + '302' => new Response( + description: 'Redirect to the Google OAuth authorization endpoint', + ), ], summary: 'Log in using Google Oauth.', parameters: [ - new Model\Parameter( + new Parameter( name: 'callback', in: 'path', schema: [ @@ -39,19 +42,19 @@ public function __invoke(array $context = []): OpenApi { ); $openApi->getPaths()->addPath('/auth/google', $pathItemGoogle); - $pathItemPbsmidata = new Model\PathItem( + $pathItemPbsmidata = new PathItem( ref: 'PBS MiData OAuth', - get: new Model\Operation( + get: new Operation( operationId: 'oauthPbsmidataRedirect', tags: ['OAuth'], responses: [ - '302' => [ - 'description' => 'Redirect to the PBS MiData OAuth authorization endpoint', - ], + '302' => new Response( + description: 'Redirect to the PBS MiData OAuth authorization endpoint', + ), ], summary: 'Log in using PBS MiData Oauth.', parameters: [ - new Model\Parameter( + new Parameter( name: 'callback', in: 'path', schema: [ @@ -63,19 +66,19 @@ public function __invoke(array $context = []): OpenApi { ); $openApi->getPaths()->addPath('/auth/pbsmidata', $pathItemPbsmidata); - $pathItemCevidb = new Model\PathItem( + $pathItemCevidb = new PathItem( ref: 'CeviDB OAuth', - get: new Model\Operation( + get: new Operation( operationId: 'oauthCevidbRedirect', tags: ['OAuth'], responses: [ - '302' => [ - 'description' => 'Redirect to the CeviDB OAuth authorization endpoint', - ], + '302' => new Response( + description: 'Redirect to the CeviDB OAuth authorization endpoint', + ), ], summary: 'Log in using CeviDB Oauth.', parameters: [ - new Model\Parameter( + new Parameter( name: 'callback', in: 'path', schema: [ @@ -87,19 +90,19 @@ public function __invoke(array $context = []): OpenApi { ); $openApi->getPaths()->addPath('/auth/cevidb', $pathItemCevidb); - $pathItemJubladb = new Model\PathItem( + $pathItemJubladb = new PathItem( ref: 'JublaDB OAuth', - get: new Model\Operation( + get: new Operation( operationId: 'oauthJubladbRedirect', tags: ['OAuth'], responses: [ - '302' => [ - 'description' => 'Redirect to the JublaDB OAuth authorization endpoint', - ], + '302' => new Response( + description: 'Redirect to the JublaDB OAuth authorization endpoint', + ), ], summary: 'Log in using JublaDB Oauth.', parameters: [ - new Model\Parameter( + new Parameter( name: 'callback', in: 'path', schema: [ diff --git a/api/src/OpenApi/RefreshTokenDecorator.php b/api/src/OpenApi/RefreshTokenDecorator.php index 177336f817..145fbaa9be 100644 --- a/api/src/OpenApi/RefreshTokenDecorator.php +++ b/api/src/OpenApi/RefreshTokenDecorator.php @@ -3,7 +3,9 @@ namespace App\OpenApi; use ApiPlatform\OpenApi\Factory\OpenApiFactoryInterface; -use ApiPlatform\OpenApi\Model; +use ApiPlatform\OpenApi\Model\Operation; +use ApiPlatform\OpenApi\Model\PathItem; +use ApiPlatform\OpenApi\Model\Response; use ApiPlatform\OpenApi\OpenApi; final readonly class RefreshTokenDecorator implements OpenApiFactoryInterface { @@ -13,15 +15,15 @@ public function __invoke(array $context = []): OpenApi { $openApi = ($this->decorated)($context); $cookiePrefix = $this->cookiePrefix; - $pathItem = new Model\PathItem( + $pathItem = new PathItem( ref: 'JWT Token Refresh', - post: new Model\Operation( + post: new Operation( operationId: 'postRefreshToken', tags: ['JWT Refresh'], responses: [ - '204' => [ - 'description' => "Get a refreshed JWT token split across the two cookies {$cookiePrefix}jwt_hp and {$cookiePrefix}jwt_s. Also returns a new refresh token {$cookiePrefix}refresh_token.", - ], + '204' => new Response( + description: "Get a refreshed JWT token split across the two cookies {$cookiePrefix}jwt_hp and {$cookiePrefix}jwt_s. Also returns a new refresh token {$cookiePrefix}refresh_token.", + ), ], summary: 'Refresh token.', ), diff --git a/api/src/State/ChecklistCreateProcessor.php b/api/src/State/ChecklistCreateProcessor.php index ac94d46830..e0028e67fb 100644 --- a/api/src/State/ChecklistCreateProcessor.php +++ b/api/src/State/ChecklistCreateProcessor.php @@ -3,7 +3,6 @@ namespace App\State; use ApiPlatform\Metadata\Operation; -use ApiPlatform\State\ProcessorInterface; use App\Entity\Checklist; use App\State\Util\AbstractPersistProcessor; use App\Util\EntityMap; @@ -12,10 +11,6 @@ * @template-extends AbstractPersistProcessor */ class ChecklistCreateProcessor extends AbstractPersistProcessor { - public function __construct(ProcessorInterface $decorated) { - parent::__construct($decorated); - } - /** * @param Checklist $data */ diff --git a/api/src/State/MaterialItemCreateProcessor.php b/api/src/State/MaterialItemCreateProcessor.php index 6401576e90..3510696787 100644 --- a/api/src/State/MaterialItemCreateProcessor.php +++ b/api/src/State/MaterialItemCreateProcessor.php @@ -3,7 +3,6 @@ namespace App\State; use ApiPlatform\Metadata\Operation; -use ApiPlatform\State\ProcessorInterface; use App\Entity\MaterialItem; use App\State\Util\AbstractPersistProcessor; @@ -11,10 +10,6 @@ * @template-extends AbstractPersistProcessor */ class MaterialItemCreateProcessor extends AbstractPersistProcessor { - public function __construct(ProcessorInterface $decorated) { - parent::__construct($decorated); - } - /** * @param MaterialItem $data */ diff --git a/api/src/State/PeriodPersistProcessor.php b/api/src/State/PeriodPersistProcessor.php index d0877e8034..7b115f8e67 100644 --- a/api/src/State/PeriodPersistProcessor.php +++ b/api/src/State/PeriodPersistProcessor.php @@ -3,7 +3,6 @@ namespace App\State; use ApiPlatform\Metadata\Operation; -use ApiPlatform\State\ProcessorInterface; use App\Entity\Day; use App\Entity\Period; use App\State\Util\AbstractPersistProcessor; @@ -13,12 +12,6 @@ * @template-extends AbstractPersistProcessor */ class PeriodPersistProcessor extends AbstractPersistProcessor { - public function __construct( - ProcessorInterface $decorated - ) { - parent::__construct($decorated); - } - /** * @param Period $data */ diff --git a/api/tests/Api/Activities/CreateActivityTest.php b/api/tests/Api/Activities/CreateActivityTest.php index 031234bdd2..84215c377d 100644 --- a/api/tests/Api/Activities/CreateActivityTest.php +++ b/api/tests/Api/Activities/CreateActivityTest.php @@ -5,6 +5,7 @@ use ApiPlatform\Metadata\Get; use ApiPlatform\Metadata\Post; use App\Entity\Activity; +use App\Entity\ContentNode\ChecklistNode; use App\Entity\User; use App\Tests\Api\ECampApiTestCase; use App\Tests\Constraints\CompatibleHalResponse; @@ -584,7 +585,7 @@ public function testCreateActivityFromCopySourceValidatesAccess() { } public function testCreateActivityFromCopySourceWithinSameCamp() { - static::createClientWithCredentials()->request( + $response = static::createClientWithCredentials()->request( 'POST', '/activities', ['json' => $this->getExampleWritePayload( @@ -598,6 +599,34 @@ public function testCreateActivityFromCopySourceWithinSameCamp() { // Activity created $this->assertResponseStatusCodeSame(201); + $responseArray = $response->toArray(); + $contentNodes = $responseArray['_embedded']['contentNodes']; + + // Embedded MaterialNode -> MaterialItems + // Test MaterialList is not nulled + $materialNodes = array_filter($contentNodes, fn ($cn) => 'Material' == $cn['contentTypeName']); + $this->assertCount(1, $materialNodes); + + $materialNode = reset($materialNodes); + $materialItems = $materialNode['_embedded']['materialItems']; + $this->assertCount(1, $materialItems); + + $materialItem = reset($materialItems); + $this->assertEquals($this->getIriFor('materialList1'), $materialItem['_links']['materialList']['href']); + + // Embedded ChecklistNode -> ChecklistItems + // Test ChecklistItem connections are copied + $checklistNodes = array_filter($contentNodes, fn ($cn) => 'Checklist' == $cn['contentTypeName']); + $this->assertCount(1, $checklistNodes); + + $checklistNodeId = reset($checklistNodes)['id']; + $checklistNode = $this->getEntityManager()->getRepository(ChecklistNode::class)->find($checklistNodeId); + + $connectedChecklistItems = $checklistNode->getChecklistItems(); + $this->assertCount(1, $connectedChecklistItems); + $connectedChecklistItem = reset($connectedChecklistItems); + + $this->assertEquals($this->getIriFor('checklistItem1_1_1'), $this->getIriFor($connectedChecklistItem)); } public function testCreateActivityFromCopySourceAcrossCamp() { @@ -622,12 +651,11 @@ public function testCreateActivityFromCopySourceAcrossCamp() { // Activity created $this->assertResponseStatusCodeSame(201); - - // Embedded MaterialNode -> MaterialItems - // Test MaterialList is nulled $responseArray = $response->toArray(); $contentNodes = $responseArray['_embedded']['contentNodes']; + // Embedded MaterialNode -> MaterialItems + // Test MaterialList is nulled $materialNodes = array_filter($contentNodes, fn ($cn) => 'Material' == $cn['contentTypeName']); $this->assertCount(1, $materialNodes); @@ -635,8 +663,19 @@ public function testCreateActivityFromCopySourceAcrossCamp() { $materialItems = $materialNode['_embedded']['materialItems']; $this->assertCount(1, $materialItems); - $materailItem = reset($materialItems); - $this->assertNull($materailItem['_links']['materialList']); + $materialItem = reset($materialItems); + $this->assertNull($materialItem['_links']['materialList']); + + // Embedded ChecklistNode -> ChecklistItems + // Test ChecklistItem connections are not copied because no matching checklist items are present in target camp + $checklistNodes = array_filter($contentNodes, fn ($cn) => 'Checklist' == $cn['contentTypeName']); + $this->assertCount(1, $checklistNodes); + + $checklistNodeId = reset($checklistNodes)['id']; + $checklistNode = $this->getEntityManager()->getRepository(ChecklistNode::class)->find($checklistNodeId); + + $connectedChecklistItems = $checklistNode->getChecklistItems(); + $this->assertCount(0, $connectedChecklistItems); } /** diff --git a/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testOpenApiSpecMatchesSnapshot__1.yml b/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testOpenApiSpecMatchesSnapshot__1.yml index 2a5c42bc82..e7fb0b766d 100644 --- a/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testOpenApiSpecMatchesSnapshot__1.yml +++ b/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testOpenApiSpecMatchesSnapshot__1.yml @@ -26627,12 +26627,24 @@ components: violations: items: properties: + code: + description: 'The code of the violation' + type: string + hint: + description: 'An extra hint to understand the violation' + type: string message: description: 'The message associated with the violation' type: string + payload: + description: 'The serialized payload of the violation' + type: array propertyPath: description: 'The property path of the violation' type: string + required: + - message + - propertyPath type: object type: array type: object @@ -26667,8 +26679,14 @@ components: violations: items: properties: + code: { description: 'The code of the violation', type: string } + hint: { description: 'An extra hint to understand the violation', type: string } message: { description: 'The message associated with the violation', type: string } + payload: { description: 'The serialized payload of the violation', type: array } propertyPath: { description: 'The property path of the violation', type: string } + required: + - message + - propertyPath type: object type: array type: object @@ -54497,12 +54515,42 @@ paths: description: 'UserActivation resource created' links: [] 400: + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + application/ld+json: + schema: + $ref: '#/components/schemas/Error.jsonld' + application/problem+json: + schema: + $ref: '#/components/schemas/Error' description: 'Invalid input' links: [] 403: + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + application/ld+json: + schema: + $ref: '#/components/schemas/Error.jsonld' + application/problem+json: + schema: + $ref: '#/components/schemas/Error' description: Forbidden links: [] 422: + content: + application/json: + schema: + $ref: '#/components/schemas/ConstraintViolation' + application/ld+json: + schema: + $ref: '#/components/schemas/ConstraintViolation.jsonld' + application/problem+json: + schema: + $ref: '#/components/schemas/ConstraintViolation' description: 'An error occurred' links: [] summary: 'Request activation email again' @@ -54537,12 +54585,42 @@ paths: description: 'ResetPassword resource created' links: [] 400: + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + application/ld+json: + schema: + $ref: '#/components/schemas/Error.jsonld' + application/problem+json: + schema: + $ref: '#/components/schemas/Error' description: 'Invalid input' links: [] 403: + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + application/ld+json: + schema: + $ref: '#/components/schemas/Error.jsonld' + application/problem+json: + schema: + $ref: '#/components/schemas/Error' description: Forbidden links: [] 422: + content: + application/json: + schema: + $ref: '#/components/schemas/ConstraintViolation' + application/ld+json: + schema: + $ref: '#/components/schemas/ConstraintViolation.jsonld' + application/problem+json: + schema: + $ref: '#/components/schemas/ConstraintViolation' description: 'An error occurred' links: [] summary: 'Request Password-Reset-Mail' diff --git a/api/tests/CacheRegexTest.php b/api/tests/CacheRegexTest.php index 511dd93905..aa665c0e44 100644 --- a/api/tests/CacheRegexTest.php +++ b/api/tests/CacheRegexTest.php @@ -18,46 +18,46 @@ protected function setUp(): void { $this->cacheRegex = '{'.$this->getContainer()->getParameter('app.httpCache.matchPath').'}'; } - #[TestWith(name: '', data: [''])] - #[TestWith(name: '/', data: ['/'])] - #[TestWith(name: '/index.jsonhal', data: ['index.jsonhal'])] - #[TestWith(name: '/camps/25a82475e0b7/activities', data: ['/camps/25a82475e0b7/activities'])] - #[TestWith(name: '/camps/25a82475e0b7/categories', data: ['/camps/25a82475e0b7/categories'])] - #[TestWith(name: '/camps/25a82475e0b7/checklists', data: ['/camps/25a82475e0b7/checklists'])] - #[TestWith(name: '/content_types', data: ['/content_types'])] - #[TestWith(name: '/content_types/25a82375a0b6', data: ['/content_types/25a82375a0b6'])] - #[TestWith(name: '/periods/25a82475e0b7/schedule_entries', data: ['/periods/25a82475e0b7/schedule_entries'])] + #[TestWith(data: [''], name: '')] + #[TestWith(data: ['/'], name: '/')] + #[TestWith(data: ['index.jsonhal'], name: '/index.jsonhal')] + #[TestWith(data: ['/camps/25a82475e0b7/activities'], name: '/camps/25a82475e0b7/activities')] + #[TestWith(data: ['/camps/25a82475e0b7/categories'], name: '/camps/25a82475e0b7/categories')] + #[TestWith(data: ['/camps/25a82475e0b7/checklists'], name: '/camps/25a82475e0b7/checklists')] + #[TestWith(data: ['/content_types'], name: '/content_types')] + #[TestWith(data: ['/content_types/25a82375a0b6'], name: '/content_types/25a82375a0b6')] + #[TestWith(data: ['/periods/25a82475e0b7/schedule_entries'], name: '/periods/25a82475e0b7/schedule_entries')] public function testIncludesUrls(string $url) { assertMatchesRegularExpression($this->cacheRegex, $url); } - #[TestWith(name: '/camps/25a82475e0b7/categories/c53dd7917e63', data: ['/camps/25a82475e0b7/categories/c53dd7917e63'])] + #[TestWith(data: ['/camps/25a82475e0b7/categories/c53dd7917e63'], name: '/camps/25a82475e0b7/categories/c53dd7917e63')] public function testAlsoIncludesUrls(string $url) { assertMatchesRegularExpression($this->cacheRegex, $url); } - #[TestWith(name: '/invitations', data: ['/invitations'])] - #[TestWith(name: '/personal_invitations', data: ['/personal_invitations'])] - #[TestWith(name: '/activity_progress_labels', data: ['/activity_progress_labels'])] - #[TestWith(name: '/activity_responsibles', data: ['/activity_responsibles'])] - #[TestWith(name: '/camp_collaborations', data: ['/camp_collaborations'])] - #[TestWith(name: '/categories', data: ['/categories'])] - #[TestWith(name: '/checklists', data: ['/checklists'])] - #[TestWith(name: '/checklist_items', data: ['/checklist_items'])] - #[TestWith(name: '/content_nodes', data: ['/content_nodes'])] - #[TestWith(name: '/content_node/checklist_nodes', data: ['/content_node/checklist_nodes'])] - #[TestWith(name: '/content_node/column_layouts', data: ['/content_node/column_layouts'])] - #[TestWith(name: '/content_node/material_nodes', data: ['/content_node/material_nodes'])] - #[TestWith(name: '/content_node/multi_selects', data: ['/content_node/multi_selects'])] - #[TestWith(name: '/content_node/storyboards', data: ['/content_node/storyboards'])] - #[TestWith(name: '/days', data: ['/days'])] - #[TestWith(name: '/day_responsibles', data: ['/day_responsibles'])] - #[TestWith(name: '/material_items', data: ['/material_items'])] - #[TestWith(name: '/material_lists', data: ['/material_lists'])] - #[TestWith(name: '/periods', data: ['/periods'])] - #[TestWith(name: '/profiles', data: ['/profiles'])] - #[TestWith(name: '/schedule_entries', data: ['/schedule_entries'])] - #[TestWith(name: '/users', data: ['/users'])] + #[TestWith(data: ['/invitations'], name: '/invitations')] + #[TestWith(data: ['/personal_invitations'], name: '/personal_invitations')] + #[TestWith(data: ['/activity_progress_labels'], name: '/activity_progress_labels')] + #[TestWith(data: ['/activity_responsibles'], name: '/activity_responsibles')] + #[TestWith(data: ['/camp_collaborations'], name: '/camp_collaborations')] + #[TestWith(data: ['/categories'], name: '/categories')] + #[TestWith(data: ['/checklists'], name: '/checklists')] + #[TestWith(data: ['/checklist_items'], name: '/checklist_items')] + #[TestWith(data: ['/content_nodes'], name: '/content_nodes')] + #[TestWith(data: ['/content_node/checklist_nodes'], name: '/content_node/checklist_nodes')] + #[TestWith(data: ['/content_node/column_layouts'], name: '/content_node/column_layouts')] + #[TestWith(data: ['/content_node/material_nodes'], name: '/content_node/material_nodes')] + #[TestWith(data: ['/content_node/multi_selects'], name: '/content_node/multi_selects')] + #[TestWith(data: ['/content_node/storyboards'], name: '/content_node/storyboards')] + #[TestWith(data: ['/days'], name: '/days')] + #[TestWith(data: ['/day_responsibles'], name: '/day_responsibles')] + #[TestWith(data: ['/material_items'], name: '/material_items')] + #[TestWith(data: ['/material_lists'], name: '/material_lists')] + #[TestWith(data: ['/periods'], name: '/periods')] + #[TestWith(data: ['/profiles'], name: '/profiles')] + #[TestWith(data: ['/schedule_entries'], name: '/schedule_entries')] + #[TestWith(data: ['/users'], name: '/users')] public function testDoesNotIncludeUrls(string $url) { assertDoesNotMatchRegularExpression($this->cacheRegex, $url); } diff --git a/api/tests/Entity/ChecklistNodeTest.php b/api/tests/Entity/ChecklistNodeTest.php new file mode 100644 index 0000000000..733737d8e0 --- /dev/null +++ b/api/tests/Entity/ChecklistNodeTest.php @@ -0,0 +1,263 @@ +camp = new Camp(); + $this->checklist = new Checklist(); + $this->checklist->name = 'checklist1'; + $this->camp->addChecklist($this->checklist); + + $this->rootNode = new ColumnLayout(); + $campRootContentNode = new CampRootContentNode(); + $campRootContentNode->camp = $this->camp; + $campRootContentNode->rootContentNode = $this->rootNode; + $this->rootNode->campRootContentNodes->add($campRootContentNode); + + $this->itemPrototype1 = new ChecklistItem(); + $this->itemPrototype1->text = 'item1'; + $this->checklist->addChecklistItem($this->itemPrototype1); + $this->itemPrototype2 = new ChecklistItem(); + $this->itemPrototype2->text = 'item2'; + $this->checklist->addChecklistItem($this->itemPrototype2); + $this->itemPrototype3 = new ChecklistItem(); + $this->itemPrototype3->text = 'item3'; + $this->itemPrototype2->addChild($this->itemPrototype3); + $this->checklist->addChecklistItem($this->itemPrototype3); + + $this->checklistNodePrototype = new ChecklistNode(); + $this->checklistNodePrototype->root = $this->rootNode; + + $this->checklistNode = new ChecklistNode(); + } + + public function testCopyFromPrototypeInSameCamp() { + // given + $this->checklistNodePrototype->addChecklistItem($this->itemPrototype1); + $this->checklistNodePrototype->addChecklistItem($this->itemPrototype3); + + // when + $this->checklistNode->copyFromPrototype($this->checklistNodePrototype, new EntityMap($this->camp)); + + // then + $this->assertCount(2, $this->checklistNode->getChecklistItems()); + $item1 = $this->checklistNode->getChecklistItems()[0]; + $item2 = $this->checklistNode->getChecklistItems()[1]; + $this->assertEquals($this->itemPrototype1->text, $item1->text); + $this->assertEquals($this->itemPrototype3->text, $item2->text); + $this->assertEquals($this->itemPrototype1->checklist->getCamp(), $item1->checklist->getCamp()); + $this->assertEquals($this->itemPrototype3->checklist->getCamp(), $item2->checklist->getCamp()); + } + + public function testCopyFromPrototypeAcrossCampsDoesNotAddFaultyConnections() { + // given + $this->checklistNodePrototype->addChecklistItem($this->itemPrototype1); + $this->checklistNodePrototype->addChecklistItem($this->itemPrototype3); + $targetCamp = new Camp(); + + // when + $this->checklistNode->copyFromPrototype($this->checklistNodePrototype, new EntityMap($targetCamp)); + + // then + $this->assertCount(0, $this->checklistNode->getChecklistItems()); + } + + public function testCopyFromPrototypeAcrossCampsSearchesForItemOfSameName() { + // given + $this->checklistNodePrototype->addChecklistItem($this->itemPrototype1); + $this->checklistNodePrototype->addChecklistItem($this->itemPrototype3); + $targetCamp = new Camp(); + + $targetChecklist = new Checklist(); + $targetChecklist->name = 'target checklist'; + $targetCamp->addChecklist($targetChecklist); + + $targetChecklistItem = new ChecklistItem(); + $targetChecklistItem->text = 'item3'; + $targetChecklist->addChecklistItem($targetChecklistItem); + + // when + $this->checklistNode->copyFromPrototype($this->checklistNodePrototype, new EntityMap($targetCamp)); + + // then + $this->assertCount(1, $this->checklistNode->getChecklistItems()); + $item1 = $this->checklistNode->getChecklistItems()[0]; + $this->assertEquals($this->itemPrototype3->text, $item1->text); + $this->assertNotEquals($this->itemPrototype3->checklist->getCamp(), $item1->checklist->getCamp()); + } + + public function testCopyFromPrototypeAcrossCampsPrefersItemWithSameNameAndSameHierarchy() { + // given + $this->checklistNodePrototype->addChecklistItem($this->itemPrototype1); + $this->checklistNodePrototype->addChecklistItem($this->itemPrototype3); + $targetCamp = new Camp(); + + $targetChecklist = new Checklist(); + $targetChecklist->name = 'target checklist'; + $targetCamp->addChecklist($targetChecklist); + + $targetChecklistItem1 = new ChecklistItem(); + $targetChecklistItem1->text = 'item3'; + $targetChecklist->addChecklistItem($targetChecklistItem1); + $targetChecklistItem2 = new ChecklistItem(); + $targetChecklistItem2->text = 'item2'; + $targetChecklist->addChecklistItem($targetChecklistItem2); + $targetChecklistItem3 = new ChecklistItem(); + $targetChecklistItem3->text = 'item3'; + $targetChecklistItem2->addChild($targetChecklistItem3); + $targetChecklist->addChecklistItem($targetChecklistItem3); + + // when + $this->checklistNode->copyFromPrototype($this->checklistNodePrototype, new EntityMap($targetCamp)); + + // then + $this->assertCount(1, $this->checklistNode->getChecklistItems()); + $resultItem = $this->checklistNode->getChecklistItems()[0]; + $this->assertEquals($targetChecklistItem3, $resultItem); + $this->assertEquals($this->itemPrototype3->text, $resultItem->text); + $this->assertNotEquals($this->itemPrototype3->checklist->getCamp(), $resultItem->checklist->getCamp()); + $this->assertEquals($targetCamp, $resultItem->checklist->getCamp()); + } + + public function testCopyFromPrototypeAcrossCampsPrefersItemWithSameChecklistPrototypeId() { + // given + $this->checklistNodePrototype->addChecklistItem($this->itemPrototype1); + $this->checklistNodePrototype->addChecklistItem($this->itemPrototype3); + $targetCamp = new Camp(); + + $targetChecklist = new Checklist(); + $targetChecklist->name = 'checklist'; + $targetCamp->addChecklist($targetChecklist); + + $targetChecklist2 = new Checklist(); + $targetChecklist2->name = 'checklist with other name'; + $targetCamp->addChecklist($targetChecklist2); + + $targetChecklistItem1 = new ChecklistItem(); + $targetChecklistItem1->text = 'item2'; + $targetChecklist->addChecklistItem($targetChecklistItem1); + $targetChecklistItem2 = new ChecklistItem(); + $targetChecklistItem2->text = 'item2'; + $targetChecklist->addChecklistItem($targetChecklistItem2); + $targetChecklistItem3 = new ChecklistItem(); + $targetChecklistItem3->text = 'item3'; + $targetChecklistItem2->addChild($targetChecklistItem3); + $targetChecklist2->addChecklistItem($targetChecklistItem3); + $targetChecklistItem4 = new ChecklistItem(); + $targetChecklistItem4->text = 'item3'; + $targetChecklistItem1->addChild($targetChecklistItem4); + $targetChecklist->addChecklistItem($targetChecklistItem4); + + $this->checklist->checklistPrototypeId = 'abc'; + $targetChecklist->checklistPrototypeId = 'abc'; + $targetChecklist2->checklistPrototypeId = 'def'; + + // when + $this->checklistNode->copyFromPrototype($this->checklistNodePrototype, new EntityMap($targetCamp)); + + // then + $this->assertCount(1, $this->checklistNode->getChecklistItems()); + $resultItem = $this->checklistNode->getChecklistItems()[0]; + $this->assertEquals($targetChecklistItem4, $resultItem); + $this->assertEquals($this->itemPrototype3->text, $resultItem->text); + $this->assertNotEquals($this->itemPrototype3->checklist->getCamp(), $resultItem->checklist->getCamp()); + $this->assertEquals($targetCamp, $resultItem->checklist->getCamp()); + } + + public function testCopyFromPrototypeAcrossCampsPrefersItemWithSameChecklistName() { + // given + $this->checklistNodePrototype->addChecklistItem($this->itemPrototype1); + $this->checklistNodePrototype->addChecklistItem($this->itemPrototype3); + $targetCamp = new Camp(); + + $targetChecklist = new Checklist(); + $targetChecklist->name = 'checklist'; + $targetCamp->addChecklist($targetChecklist); + + $targetChecklist2 = new Checklist(); + $targetChecklist2->name = 'checklist with other name'; + $targetCamp->addChecklist($targetChecklist2); + + $targetChecklistItem1 = new ChecklistItem(); + $targetChecklistItem1->text = 'item2'; + $targetChecklist->addChecklistItem($targetChecklistItem1); + $targetChecklistItem2 = new ChecklistItem(); + $targetChecklistItem2->text = 'item2'; + $targetChecklist->addChecklistItem($targetChecklistItem2); + $targetChecklistItem3 = new ChecklistItem(); + $targetChecklistItem3->text = 'item3'; + $targetChecklistItem2->addChild($targetChecklistItem3); + $targetChecklist2->addChecklistItem($targetChecklistItem3); + $targetChecklistItem4 = new ChecklistItem(); + $targetChecklistItem4->text = 'item3'; + $targetChecklistItem1->addChild($targetChecklistItem4); + $targetChecklist->addChecklistItem($targetChecklistItem4); + + // when + $this->checklistNode->copyFromPrototype($this->checklistNodePrototype, new EntityMap($targetCamp)); + + // then + $this->assertCount(1, $this->checklistNode->getChecklistItems()); + $resultItem = $this->checklistNode->getChecklistItems()[0]; + $this->assertEquals($targetChecklistItem4, $resultItem); + $this->assertEquals($this->itemPrototype3->text, $resultItem->text); + $this->assertNotEquals($this->itemPrototype3->checklist->getCamp(), $resultItem->checklist->getCamp()); + $this->assertEquals($targetCamp, $resultItem->checklist->getCamp()); + } + + public function testCopyFromPrototypeAcrossCampsReusesExistingEntityMapping() { + // given + $this->checklistNodePrototype->addChecklistItem($this->itemPrototype1); + $this->checklistNodePrototype->addChecklistItem($this->itemPrototype3); + $targetCamp = new Camp(); + + $targetChecklist = new Checklist(); + $targetChecklist->name = 'target checklist'; + $targetCamp->addChecklist($targetChecklist); + + $targetChecklistItem1 = new ChecklistItem(); + $targetChecklistItem1->text = 'item3-preferred'; + $targetChecklist->addChecklistItem($targetChecklistItem1); + $targetChecklistItem2 = new ChecklistItem(); + $targetChecklistItem2->text = 'item2'; + $targetChecklist->addChecklistItem($targetChecklistItem2); + $targetChecklistItem3 = new ChecklistItem(); + $targetChecklistItem3->text = 'item3'; + $targetChecklistItem2->addChild($targetChecklistItem3); + $targetChecklist->addChecklistItem($targetChecklistItem3); + + $entityMap = new EntityMap($targetCamp); + $entityMap->add($this->itemPrototype3, $targetChecklistItem1); + + // when + $this->checklistNode->copyFromPrototype($this->checklistNodePrototype, $entityMap); + + // then + $this->assertCount(1, $this->checklistNode->getChecklistItems()); + $item1 = $this->checklistNode->getChecklistItems()[0]; + $this->assertEquals($targetChecklistItem1->text, $item1->text); + $this->assertNotEquals($this->itemPrototype3->checklist->getCamp(), $item1->checklist->getCamp()); + } +} diff --git a/api/tests/HttpCache/Entity/Dummy.php b/api/tests/HttpCache/Entity/Dummy.php index b780638580..487cbfd1b4 100644 --- a/api/tests/HttpCache/Entity/Dummy.php +++ b/api/tests/HttpCache/Entity/Dummy.php @@ -19,7 +19,7 @@ class Dummy extends BaseEntity { /** * @var null|RelatedOwningDummy */ - #[ORM\OneToOne(targetEntity: RelatedOwningDummy::class, cascade: ['persist'], inversedBy: 'ownedDummy')] + #[ORM\OneToOne(targetEntity: RelatedOwningDummy::class, inversedBy: 'ownedDummy', cascade: ['persist'])] public $relatedOwningDummy; public function getRelatedDummy(): ?RelatedDummy { diff --git a/api/tests/HttpCache/Entity/RelatedOwningDummy.php b/api/tests/HttpCache/Entity/RelatedOwningDummy.php index b84370d904..823fcb38a1 100644 --- a/api/tests/HttpCache/Entity/RelatedOwningDummy.php +++ b/api/tests/HttpCache/Entity/RelatedOwningDummy.php @@ -13,7 +13,7 @@ */ #[ORM\Entity] class RelatedOwningDummy extends BaseEntity { - #[ORM\OneToOne(targetEntity: Dummy::class, cascade: ['persist'], mappedBy: 'relatedOwningDummy')] + #[ORM\OneToOne(targetEntity: Dummy::class, mappedBy: 'relatedOwningDummy', cascade: ['persist'])] public ?Dummy $ownedDummy = null; /** diff --git a/api/tests/HttpCache/PurgeHttpCacheListenerTest.php b/api/tests/HttpCache/PurgeHttpCacheListenerTest.php index fbd7c166dd..46800336e7 100644 --- a/api/tests/HttpCache/PurgeHttpCacheListenerTest.php +++ b/api/tests/HttpCache/PurgeHttpCacheListenerTest.php @@ -39,6 +39,7 @@ use PHPUnit\Framework\TestCase; use Symfony\Bundle\MakerBundle\Doctrine\StaticReflectionService; use Symfony\Component\PropertyAccess\PropertyAccessorInterface; +use Symfony\Component\PropertyAccess\PropertyPathInterface; use function PHPUnit\Framework\assertThat; use function PHPUnit\Framework\containsEqual; @@ -78,13 +79,18 @@ protected function setUp(): void { $this->emProphecy->method('getClassMetadata')->with(Dummy::class)->willReturn($dummyClassMetadata); $this->propertyAccessorProphecy = $this->createMock(PropertyAccessorInterface::class); - $this->propertyAccessorProphecy->method('isReadable')->willReturnCallback(function ($obj, $prop) { - if ($obj instanceof Dummy && 'relatedDummy' === $prop) { - return true; - } - - return false; - }); + $this->propertyAccessorProphecy + ->method('isReadable') + ->willReturnCallback( + function (array|object $obj, PropertyPathInterface|string $prop): bool { + if ($obj instanceof Dummy && 'relatedDummy' === $prop) { + return true; + } + + return false; + } + ) + ; $this->propertyAccessorProphecy->method('getValue')->willReturn(null); $this->metadataFactoryProphecy = $this->createMock(ResourceMetadataCollectionFactoryInterface::class); @@ -227,9 +233,15 @@ function ($resource): string { ; $propertyAccessorProphecy = $this->createMock(PropertyAccessorInterface::class); - $propertyAccessorProphecy->method('isReadable')->willReturnCallback(function ($obj, $prop) { - return $obj instanceof Dummy && in_array($prop, ['relatedDummy', 'relatedOwningDummy'], true) && ('relatedDummy' === $prop || 'relatedOwningDummy' === $prop); - }); + $propertyAccessorProphecy->method('isReadable') + ->willReturnCallback( + function (array|object $obj, PropertyPathInterface|string $prop): bool { + return $obj instanceof Dummy + && in_array($prop, ['relatedDummy', 'relatedOwningDummy'], true) + && ('relatedDummy' === $prop || 'relatedOwningDummy' === $prop); + } + ) + ; $propertyAccessorProphecy->method('getValue')->willReturn(null); $listener = new PurgeHttpCacheListener( @@ -459,7 +471,7 @@ public function testPropertyIsNotAResourceClass(): void { new OnFlushEventArgs($em); $propertyAccessorProphecy = $this->createMock(PropertyAccessorInterface::class); - $propertyAccessorProphecy->method('isReadable')->willReturnCallback(function ($obj, $prop) { + $propertyAccessorProphecy->method('isReadable')->willReturnCallback(function (array|object $obj, PropertyPathInterface|string $prop): bool { return $obj instanceof ContainNonResource && in_array($prop, ['notAResource', 'collectionOfNotAResource'], true); }); $propertyAccessorProphecy->expects($this->never())->method('getValue'); diff --git a/docker-compose.yml b/docker-compose.yml index c6dc1a4606..7b9e50bfe2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,6 @@ services: frontend: - image: node:24.12.0 + image: node:24.13.0 container_name: 'ecamp3-frontend' ports: - '9229:9229' # jest debug @@ -81,7 +81,7 @@ services: command: varnishncsa pdf: - image: node:24.12.0 + image: node:24.13.0 container_name: 'ecamp3-pdf' stdin_open: true tty: true @@ -101,7 +101,7 @@ services: - CI=${CI} print: - image: node:24.12.0 + image: node:24.13.0 container_name: 'ecamp3-print' user: ${USER_ID:-1000} volumes: @@ -212,7 +212,7 @@ services: stop_signal: SIGKILL translation: - image: node:24.12.0 + image: node:24.13.0 profiles: ['translation'] container_name: 'ecamp3-translation' volumes: diff --git a/e2e/package-lock.json b/e2e/package-lock.json index 1af4edbc7d..302780051f 100644 --- a/e2e/package-lock.json +++ b/e2e/package-lock.json @@ -6,29 +6,29 @@ "": { "name": "@ecamp3/e2e", "devDependencies": { - "@babel/eslint-parser": "7.28.5", - "@eslint/compat": "2.0.0", + "@babel/eslint-parser": "7.28.6", + "@eslint/compat": "2.0.1", "@eslint/js": "9.39.2", "cypress": "15.8.1", "cypress-terminal-report": "7.3.3", "cypress-wait-until": "3.0.2", "eslint": "9.39.2", "eslint-config-prettier": "10.1.8", - "eslint-plugin-cypress": "5.2.0", - "eslint-plugin-prettier": "5.5.4", - "globals": "16.5.0", + "eslint-plugin-cypress": "5.2.1", + "eslint-plugin-prettier": "5.5.5", + "globals": "17.0.0", "pdfjs-dist": "5.4.530", - "prettier": "3.7.4" + "prettier": "3.8.0" } }, "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", + "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -37,9 +37,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", - "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.6.tgz", + "integrity": "sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==", "dev": true, "license": "MIT", "engines": { @@ -47,22 +47,22 @@ } }, "node_modules/@babel/core": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", - "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.6.tgz", + "integrity": "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.5", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.4", - "@babel/parser": "^7.28.5", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.5", - "@babel/types": "^7.28.5", + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -79,9 +79,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.5.tgz", - "integrity": "sha512-fcdRcWahONYo+JRnJg1/AekOacGvKx12Gu0qXJXFi2WBqQA1i7+O5PaxRB7kxE/Op94dExnCiiar6T09pvdHpA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.6.tgz", + "integrity": "sha512-QGmsKi2PBO/MHSQk+AAgA9R6OHQr+VqnniFE0eMWZcVcfBZoA2dKn2hUsl3Csg/Plt9opRUWdY7//VXsrIlEiA==", "dev": true, "license": "MIT", "dependencies": { @@ -98,14 +98,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", - "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz", + "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.5", - "@babel/types": "^7.28.5", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -115,13 +115,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.27.2", + "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -142,29 +142,29 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", - "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.28.3" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -204,27 +204,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", - "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4" + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", - "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", + "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.28.5" + "@babel/types": "^7.28.6" }, "bin": { "parser": "bin/babel-parser.js" @@ -234,33 +234,33 @@ } }, "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", - "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz", + "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.5", + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.5", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.5", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6", "debug": "^4.3.1" }, "engines": { @@ -268,9 +268,9 @@ } }, "node_modules/@babel/types": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", - "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", + "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", "dev": true, "license": "MIT", "dependencies": { @@ -375,13 +375,13 @@ } }, "node_modules/@eslint/compat": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-2.0.0.tgz", - "integrity": "sha512-T9AfE1G1uv4wwq94ozgTGio5EUQBqAVe1X9qsQtSNVEYW6j3hvtZVm8Smr4qL1qDPFg+lOB2cL5RxTRMzq4CTA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-2.0.1.tgz", + "integrity": "sha512-yl/JsgplclzuvGFNqwNYV4XNPhP3l62ZOP9w/47atNAdmDtIFCx6X7CSk/SlWUuBGkT4Et/5+UD+WyvX2iiIWA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^1.0.0" + "@eslint/core": "^1.0.1" }, "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" @@ -437,9 +437,9 @@ } }, "node_modules/@eslint/core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.0.0.tgz", - "integrity": "sha512-PRfWP+8FOldvbApr6xL7mNCw4cJcSTq4GA7tYbgq15mRb0kWKO/wEB2jr+uwjFH3sZvEZneZyCUGTxsv4Sahyw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.0.1.tgz", + "integrity": "sha512-r18fEAj9uCk+VjzGt2thsbOmychS+4kxI14spVNibUO2vqKX7obOG+ymZljAwuPZl+S3clPGwCwTDtrdqTiY6Q==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -938,9 +938,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.0.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz", - "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==", + "version": "25.0.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.10.tgz", + "integrity": "sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==", "dev": true, "license": "MIT", "optional": true, @@ -1221,9 +1221,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.9.12", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.12.tgz", - "integrity": "sha512-Mij6Lij93pTAIsSYy5cyBQ975Qh9uLEc5rwGTpomiZeXZL9yIS6uORJakb3ScHgfs0serMMfIbXzokPMuEiRyw==", + "version": "2.9.18", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.18.tgz", + "integrity": "sha512-e23vBV1ZLfjb9apvfPk4rHVu2ry6RIr2Wfs+O324okSidrX7pTAnEJPCh/O5BtRlr7QtZI7ktOP3vsqr7Z5XoA==", "dev": true, "license": "Apache-2.0", "bin": { @@ -1387,9 +1387,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001763", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001763.tgz", - "integrity": "sha512-mh/dGtq56uN98LlNX9qdbKnzINhX0QzhiWBFEkFfsFO4QyCvL8YegrJAazCwXIeqkIob8BlZPGM3xdnY+sgmvQ==", + "version": "1.0.30001766", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001766.tgz", + "integrity": "sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==", "dev": true, "funding": [ { @@ -1796,9 +1796,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.267", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", - "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", + "version": "1.5.278", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.278.tgz", + "integrity": "sha512-dQ0tM1svDRQOwxnXxm+twlGTjr9Upvt8UFWAgmLsxEzFQxhbti4VwxmMjsDxVC51Zo84swW7FVCXEV+VAkhuPw==", "dev": true, "license": "ISC" }, @@ -1985,9 +1985,9 @@ } }, "node_modules/eslint-plugin-cypress": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-5.2.0.tgz", - "integrity": "sha512-vuCUBQloUSILxtJrUWV39vNIQPlbg0L7cTunEAzvaUzv9LFZZym+KFLH18n9j2cZuFPdlxOqTubCvg5se0DyGw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-5.2.1.tgz", + "integrity": "sha512-HTJLbcd7fwJ4agbHinZ4FUIl38bUTJT3BmH8zdgS2V32LETmPqCtWHi3xlgZ2vpX0aW6kQoHCVVqHm8NxZJ9sA==", "dev": true, "license": "MIT", "dependencies": { @@ -1997,15 +1997,28 @@ "eslint": ">=9" } }, + "node_modules/eslint-plugin-cypress/node_modules/globals": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint-plugin-prettier": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", - "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", + "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", "dev": true, "license": "MIT", "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.11.7" + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.12" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -2557,9 +2570,9 @@ } }, "node_modules/globals": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", - "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.0.0.tgz", + "integrity": "sha512-gv5BeD2EssA793rlFWVPMMCqefTlpusw6/2TbAVMy0FzcG8wKJn4O+NqJ4+XWmmwrayJgw5TzrmWjFgmz1XPqw==", "dev": true, "license": "MIT", "engines": { @@ -3054,9 +3067,9 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", "dev": true, "license": "MIT" }, @@ -3460,9 +3473,9 @@ } }, "node_modules/prettier": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", - "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.0.tgz", + "integrity": "sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==", "dev": true, "license": "MIT", "peer": true, @@ -3857,9 +3870,9 @@ } }, "node_modules/synckit": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", - "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3873,9 +3886,9 @@ } }, "node_modules/systeminformation": { - "version": "5.30.1", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.30.1.tgz", - "integrity": "sha512-5zK8Sqqn71b0AoYKnj8nurrugOVogo4hBxAeQR9N0lbC5V+Fkw1hRBRWLaKxBmuvX8v4xH3cxifOJjlhQQW1lQ==", + "version": "5.30.6", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.30.6.tgz", + "integrity": "sha512-LEIyK1aEv5P3BhAPW3swdlIyCihxwEq/Gki+kcONieU4PIeRCSLDuGkk0Va/56PSBgjVgEksOM88dmY6YqOyfQ==", "dev": true, "license": "MIT", "os": [ diff --git a/e2e/package.json b/e2e/package.json index 93eda2a2ae..0a9e4dcd60 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -12,19 +12,19 @@ "lint:check:prettier": "prettier --check --ignore-path .gitignore **/*.{js,mjs,json,md}" }, "devDependencies": { - "@babel/eslint-parser": "7.28.5", - "@eslint/compat": "2.0.0", + "@babel/eslint-parser": "7.28.6", + "@eslint/compat": "2.0.1", "@eslint/js": "9.39.2", "cypress": "15.8.1", "cypress-terminal-report": "7.3.3", "cypress-wait-until": "3.0.2", "eslint": "9.39.2", "eslint-config-prettier": "10.1.8", - "eslint-plugin-cypress": "5.2.0", - "eslint-plugin-prettier": "5.5.4", - "globals": "16.5.0", + "eslint-plugin-cypress": "5.2.1", + "eslint-plugin-prettier": "5.5.5", + "globals": "17.0.0", "pdfjs-dist": "5.4.530", - "prettier": "3.7.4" + "prettier": "3.8.0" }, "overrides": { "uri-js": "npm:uri-js-replace" diff --git a/frontend/scripts/install-twemoji.sh b/frontend/scripts/install-twemoji.sh index 9a1cb6172e..99fbadfbca 100755 --- a/frontend/scripts/install-twemoji.sh +++ b/frontend/scripts/install-twemoji.sh @@ -10,10 +10,10 @@ if [ ! -d "public/twemoji" ] then echo 'downloading twemoji images from GitHub...' # Clone as little as possible. No past revisions and only the image files we are interested in. - git clone --depth 1 --no-checkout --filter=blob:none --sparse https://github.com/twitter/twemoji.git public/twemoji + git clone --depth 1 --no-checkout --filter=blob:none --sparse https://github.com/jdecked/twemoji.git public/twemoji cd public/twemoji git sparse-checkout set assets/72x72 - git checkout master + git checkout main else echo 'twemoji are already present, updating them to the latest version...' cd public/twemoji diff --git a/frontend/src/components/print/PrintConfigurator.vue b/frontend/src/components/print/PrintConfigurator.vue index 72e1498e44..7da580d942 100644 --- a/frontend/src/components/print/PrintConfigurator.vue +++ b/frontend/src/components/print/PrintConfigurator.vue @@ -62,6 +62,13 @@ :label="$tc('components.print.printConfigurator.pageNumbers')" @input="onChange" /> + @@ -180,12 +187,18 @@ export default { this.$store.getters.getLastPrintConfig(this.camp._meta.self, { language: this.lang, documentName: campShortTitle(this.camp), - options: { pageNumbers: false }, + options: { pageNumbers: false, pageSize: 'A4' }, camp: this.camp._meta.self, contents: this.defaultContents(), }) ) }, + pageSizes() { + return ['A5', 'A4'].map((size) => ({ + value: size, + text: this.$tc(`components.print.printConfigurator.fontSizes.${size}`), + })) + }, isDev() { return getEnv().FEATURE_DEVELOPER ?? false }, diff --git a/frontend/src/components/print/__tests__/repairPrintConfig.spec.js b/frontend/src/components/print/__tests__/repairPrintConfig.spec.js index e6ef25191d..cc7b7ce4d1 100644 --- a/frontend/src/components/print/__tests__/repairPrintConfig.spec.js +++ b/frontend/src/components/print/__tests__/repairPrintConfig.spec.js @@ -107,6 +107,10 @@ describe('repairConfig', () => { }, }, ] + const defaultOptions = { + pageNumbers: false, + pageSize: 'A4', + } const args = [camp, availableLocales, 'en', componentRepairers, defaultContents] const multiPeriodArgs = [ multiPeriodCamp, @@ -137,7 +141,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -157,7 +161,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -178,7 +182,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -198,7 +202,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'de-CH-scout', } @@ -219,7 +223,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'de-CH-scout', }) }) @@ -239,7 +243,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'definitely-not-a-supported-language', } @@ -267,7 +271,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'de-CH-scout', }) }) @@ -287,7 +291,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'definitely-not-a-supported-language', } @@ -315,7 +319,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -335,7 +339,7 @@ describe('repairConfig', () => { }, ], documentName: 'foobar', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -356,7 +360,7 @@ describe('repairConfig', () => { }, ], documentName: 'foobar', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -376,7 +380,7 @@ describe('repairConfig', () => { }, ], documentName: '', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -397,11 +401,322 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) + test('adds missing options', async () => { + // given + const config = { + camp: '/camps/1a2b3c4d', + contents: [ + { + type: 'Picasso', + options: { + periods: ['/periods/1a2b3c4d'], + orientation: 'L', + filter: defaultFilter, + }, + }, + ], + documentName: 'test camp', + language: 'de-CH-scout', + } + + // when + const result = repairConfig(config, ...args) + + // then + expect(result).toEqual({ + camp: '/camps/1a2b3c4d', + contents: [ + { + type: 'Picasso', + options: { + periods: ['/periods/1a2b3c4d'], + orientation: 'L', + filter: defaultFilter, + }, + }, + ], + documentName: 'test camp', + options: defaultOptions, + language: 'de-CH-scout', + }) + }) + + test('adds missing pageNumbers option', async () => { + // given + const config = { + camp: '/camps/1a2b3c4d', + contents: [ + { + type: 'Picasso', + options: { + periods: ['/periods/1a2b3c4d'], + orientation: 'L', + filter: defaultFilter, + }, + }, + ], + documentName: 'test camp', + options: { + pageSize: 'A4', + }, + language: 'de-CH-scout', + } + + // when + const result = repairConfig(config, ...args) + + // then + expect(result).toEqual({ + camp: '/camps/1a2b3c4d', + contents: [ + { + type: 'Picasso', + options: { + periods: ['/periods/1a2b3c4d'], + orientation: 'L', + filter: defaultFilter, + }, + }, + ], + documentName: 'test camp', + options: defaultOptions, + language: 'de-CH-scout', + }) + }) + + test('allows enabling pageNumbers', async () => { + // given + const config = { + camp: '/camps/1a2b3c4d', + contents: [ + { + type: 'Picasso', + options: { + periods: ['/periods/1a2b3c4d'], + orientation: 'L', + filter: defaultFilter, + }, + }, + ], + documentName: 'test camp', + options: { + pageNumbers: true, + pageSize: 'A4', + }, + language: 'de-CH-scout', + } + + // when + const result = repairConfig(config, ...args) + + // then + expect(result).toEqual({ + camp: '/camps/1a2b3c4d', + contents: [ + { + type: 'Picasso', + options: { + periods: ['/periods/1a2b3c4d'], + orientation: 'L', + filter: defaultFilter, + }, + }, + ], + documentName: 'test camp', + options: { + pageNumbers: true, + pageSize: 'A4', + }, + language: 'de-CH-scout', + }) + }) + + test('allows disabling pageNumbers', async () => { + // given + const config = { + camp: '/camps/1a2b3c4d', + contents: [ + { + type: 'Picasso', + options: { + periods: ['/periods/1a2b3c4d'], + orientation: 'L', + filter: defaultFilter, + }, + }, + ], + documentName: 'test camp', + options: { + pageNumbers: false, + pageSize: 'A4', + }, + language: 'de-CH-scout', + } + + // when + const result = repairConfig(config, ...args) + + // then + expect(result).toEqual({ + camp: '/camps/1a2b3c4d', + contents: [ + { + type: 'Picasso', + options: { + periods: ['/periods/1a2b3c4d'], + orientation: 'L', + filter: defaultFilter, + }, + }, + ], + documentName: 'test camp', + options: { + pageNumbers: false, + pageSize: 'A4', + }, + language: 'de-CH-scout', + }) + }) + + test('adds missing pageSize option', async () => { + // given + const config = { + camp: '/camps/1a2b3c4d', + contents: [ + { + type: 'Picasso', + options: { + periods: ['/periods/1a2b3c4d'], + orientation: 'L', + filter: defaultFilter, + }, + }, + ], + documentName: 'test camp', + options: { + pageNumbers: false, + }, + language: 'de-CH-scout', + } + + // when + const result = repairConfig(config, ...args) + + // then + expect(result).toEqual({ + camp: '/camps/1a2b3c4d', + contents: [ + { + type: 'Picasso', + options: { + periods: ['/periods/1a2b3c4d'], + orientation: 'L', + filter: defaultFilter, + }, + }, + ], + documentName: 'test camp', + options: defaultOptions, + language: 'de-CH-scout', + }) + }) + + test.each(['A5', 'A4'])('allows pageSize %p', async (pageSize) => { + // given + const config = { + camp: '/camps/1a2b3c4d', + contents: [ + { + type: 'Picasso', + options: { + periods: ['/periods/1a2b3c4d'], + orientation: 'L', + filter: defaultFilter, + }, + }, + ], + documentName: 'test camp', + options: { + pageNumbers: false, + pageSize, + }, + language: 'de-CH-scout', + } + + // when + const result = repairConfig(config, ...args) + + // then + expect(result).toEqual({ + camp: '/camps/1a2b3c4d', + contents: [ + { + type: 'Picasso', + options: { + periods: ['/periods/1a2b3c4d'], + orientation: 'L', + filter: defaultFilter, + }, + }, + ], + documentName: 'test camp', + options: { + pageNumbers: false, + pageSize, + }, + language: 'de-CH-scout', + }) + }) + + test('repairs invalid pageSize', async () => { + // given + const config = { + camp: '/camps/1a2b3c4d', + contents: [ + { + type: 'Picasso', + options: { + periods: ['/periods/1a2b3c4d'], + orientation: 'L', + filter: defaultFilter, + }, + }, + ], + documentName: 'test camp', + options: { + pageNumbers: false, + pageSize: 'tiny', + }, + language: 'de-CH-scout', + } + + // when + const result = repairConfig(config, ...args) + + // then + expect(result).toEqual({ + camp: '/camps/1a2b3c4d', + contents: [ + { + type: 'Picasso', + options: { + periods: ['/periods/1a2b3c4d'], + orientation: 'L', + filter: defaultFilter, + }, + }, + ], + documentName: 'test camp', + options: defaultOptions, + language: 'de-CH-scout', + }) + }) + test('overwrites camp URI', async () => { // given const config = { @@ -417,7 +732,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -438,7 +753,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -449,7 +764,7 @@ describe('repairConfig', () => { camp: '/camps/1a2b3c4d', contents: {}, documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -470,7 +785,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -481,7 +796,7 @@ describe('repairConfig', () => { camp: '/camps/1a2b3c4d', contents: null, documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -502,7 +817,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -513,7 +828,7 @@ describe('repairConfig', () => { camp: '/camps/1a2b3c4d', contents: [], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -525,7 +840,7 @@ describe('repairConfig', () => { camp: '/camps/1a2b3c4d', contents: [], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -541,7 +856,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -553,7 +868,7 @@ describe('repairConfig', () => { camp: '/camps/1a2b3c4d', contents: [], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -570,7 +885,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -587,7 +902,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -605,7 +920,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -622,7 +937,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -639,7 +954,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -660,7 +975,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -680,7 +995,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -701,7 +1016,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -721,7 +1036,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -742,7 +1057,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -758,7 +1073,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -775,7 +1090,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -791,7 +1106,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -812,7 +1127,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -832,7 +1147,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -853,7 +1168,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -873,7 +1188,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -894,7 +1209,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -911,7 +1226,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -932,7 +1247,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -951,7 +1266,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -972,7 +1287,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -992,7 +1307,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -1013,7 +1328,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -1033,7 +1348,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -1054,7 +1369,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -1074,7 +1389,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -1095,7 +1410,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -1115,7 +1430,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -1136,7 +1451,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -1164,7 +1479,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -1192,7 +1507,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -1211,7 +1526,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -1232,7 +1547,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -1258,7 +1573,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -1279,7 +1594,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -1306,7 +1621,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -1327,7 +1642,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -1353,7 +1668,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -1374,7 +1689,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -1401,7 +1716,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -1422,7 +1737,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -1448,7 +1763,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -1469,7 +1784,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -1496,7 +1811,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -1517,7 +1832,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -1543,7 +1858,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -1564,7 +1879,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -1591,7 +1906,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -1612,7 +1927,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -1638,7 +1953,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -1659,7 +1974,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -1706,7 +2021,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: { pageNumbers: false, pageSize: 'A4' }, language: 'en-GB', }) }) @@ -1732,7 +2047,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -1753,7 +2068,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -1771,7 +2086,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -1792,7 +2107,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -1808,7 +2123,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -1825,7 +2140,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -1845,7 +2160,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -1866,7 +2181,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -1886,7 +2201,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -1907,7 +2222,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -1927,7 +2242,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -1948,7 +2263,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -1976,7 +2291,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -2004,7 +2319,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -2023,7 +2338,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -2044,7 +2359,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -2070,7 +2385,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -2091,7 +2406,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -2118,7 +2433,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -2139,7 +2454,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -2165,7 +2480,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -2186,7 +2501,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -2213,7 +2528,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -2234,7 +2549,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -2260,7 +2575,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -2281,7 +2596,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -2308,7 +2623,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -2329,7 +2644,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -2355,7 +2670,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -2376,7 +2691,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -2403,7 +2718,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -2424,7 +2739,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -2450,7 +2765,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -2471,7 +2786,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -2518,7 +2833,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: { pageNumbers: false, pageSize: 'A4' }, language: 'en-GB', }) }) @@ -2544,7 +2859,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -2565,7 +2880,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -2583,7 +2898,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -2604,7 +2919,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -2624,7 +2939,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -2645,7 +2960,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -2665,7 +2980,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -2686,7 +3001,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -2706,7 +3021,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -2727,7 +3042,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -2747,7 +3062,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -2768,7 +3083,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -2796,7 +3111,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -2824,7 +3139,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -2843,7 +3158,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -2864,7 +3179,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -2890,7 +3205,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -2911,7 +3226,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -2938,7 +3253,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -2959,7 +3274,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -2985,7 +3300,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -3006,7 +3321,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -3033,7 +3348,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -3054,7 +3369,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -3080,7 +3395,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -3101,7 +3416,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -3128,7 +3443,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -3149,7 +3464,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -3175,7 +3490,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -3196,7 +3511,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -3223,7 +3538,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -3244,7 +3559,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -3270,7 +3585,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -3291,7 +3606,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -3338,7 +3653,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: { pageNumbers: false, pageSize: 'A4' }, language: 'en-GB', }) }) @@ -3364,7 +3679,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -3385,7 +3700,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -3404,7 +3719,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -3421,7 +3736,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -3438,7 +3753,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -3455,7 +3770,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -3471,7 +3786,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -3488,7 +3803,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -3504,7 +3819,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -3524,7 +3839,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -3543,7 +3858,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -3563,7 +3878,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -3590,7 +3905,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -3617,7 +3932,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -3635,7 +3950,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -3655,7 +3970,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -3680,7 +3995,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -3700,7 +4015,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -3726,7 +4041,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -3746,7 +4061,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -3771,7 +4086,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -3791,7 +4106,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -3817,7 +4132,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -3837,7 +4152,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -3862,7 +4177,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -3882,7 +4197,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -3908,7 +4223,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -3928,7 +4243,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -3953,7 +4268,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -3973,7 +4288,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -3999,7 +4314,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -4019,7 +4334,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -4044,7 +4359,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -4064,7 +4379,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) @@ -4109,7 +4424,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: { pageNumbers: false, pageSize: 'A4' }, language: 'en-GB', }) }) @@ -4134,7 +4449,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', } @@ -4154,7 +4469,7 @@ describe('repairConfig', () => { }, ], documentName: 'test camp', - options: { pageNumbers: false }, + options: defaultOptions, language: 'en-GB', }) }) diff --git a/frontend/src/components/print/repairPrintConfig.js b/frontend/src/components/print/repairPrintConfig.js index 501775b4cb..4f2719958d 100644 --- a/frontend/src/components/print/repairPrintConfig.js +++ b/frontend/src/components/print/repairPrintConfig.js @@ -29,6 +29,9 @@ export default function repairConfig( ) { configClone.options.pageNumbers = false } + if (!['A5', 'A4'].includes(configClone.options.pageSize)) { + configClone.options.pageSize = 'A4' + } if (typeof configClone.contents?.map !== 'function') { configClone.contents = defaultContents } diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index d3fdc6e45f..7b619d4c24 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -447,7 +447,12 @@ "Toc": "Inhaltsverzeichnis" }, "options": "Einstellungen", - "pageNumbers": "Seitenzahlen" + "pageNumbers": "Seitenzahlen", + "fontSize": "Schriftgrösse", + "fontSizes": { + "A4": "Normale Schrift (optimiert für A4 oder A5)", + "A5": "Grössere Schrift (optimiert für A6)" + } }, "printNuxt": { "downloadNuxtPdfButton": { diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json index 57feb9c517..06407f6e98 100644 --- a/frontend/src/locales/en.json +++ b/frontend/src/locales/en.json @@ -447,7 +447,12 @@ "Toc": "Table of contents" }, "options": "Einstellungen", - "pageNumbers": "Seitenzahlen" + "pageNumbers": "Seitenzahlen", + "fontSize": "Font size", + "fontSizes": { + "A4": "Normal (for printing on A4 or A5)", + "A5": "Bigger (for printing on A6)" + } }, "printNuxt": { "downloadNuxtPdfButton": { diff --git a/frontend/src/locales/fr.json b/frontend/src/locales/fr.json index 87d7686353..352298217a 100644 --- a/frontend/src/locales/fr.json +++ b/frontend/src/locales/fr.json @@ -56,6 +56,9 @@ "campInvitations": { "title": "Inviter" }, + "campListItem": { + "public": "publique" + }, "campMembers": { "title": "Membres" }, @@ -130,6 +133,7 @@ "description": " : Seules les personnes faisant partie de l'équipe peuvent consulter le programme et les données relatives à ce camp.", "title": "L'autorisation n'est pas activée" }, + "publicCampUrl": "Lien publique du camp", "shared": { "description": " : Les personnes extérieures peuvent consulter et copier le programme, la liste des participants, la liste du matériel, les responsabilités et tout autre élément relatif à ce camp. Seules les personnes faisant partie de l'équipe peuvent modifier les données.", "title": "le camp est ouvert au public" @@ -268,6 +272,7 @@ "deactivate": "Désactiver", "delete": "Veux-tu vraiment supprimer la personne '{name}' ?", "inviteAgain": "Inviter de nouveau", + "leaveCamp": "Quitter le camp", "resendEmail": "Renvoyer l'email", "resentEmail": "Invitation envoyée", "title": "Modifier {user}" @@ -278,7 +283,9 @@ }, "promptCollaboratorDeactivate": { "deactivate": "Désactiver", - "warningText": "Veux-tu désactiver '{name}' ?" + "leaveCamp": "Quitter le camp", + "warningText": "Veux-tu désactiver '{name}' ?", + "warningTextLeaveCamp": "Voulez-vous sortir du camp \"{camp}\" ?" } }, "dashboard": { @@ -335,7 +342,8 @@ }, "materialLists": { "materialsCount": "Pas des éléments | Un élément | {count} éléments", - "overview": "Aperçu général" + "overview": "Aperçu général", + "unassigned": "Pas assigné" }, "materialTable": { "addNewItem": "Ajoute un nouvel élément", @@ -381,7 +389,9 @@ }, "picassoConfig": { "orientation": "Mise en page", - "periods": "Période(s) du camp" + "landscape": "Paysage", + "periods": "Période(s) du camp", + "portrait": "Portrait" }, "programConfig": { "dayOverview": "Aperçu des jours" @@ -406,7 +416,18 @@ "label": "Télécharger le PDF (mise en page #2)" }, "generatePdfMixin": { - "error": "Une erreur est survenue. Essaie à nouveau, ou recharge la page." + "error": "Une erreur est survenue. Essaie à nouveau, ou recharge la page.", + "progress": { + "loadingData": "Chargement des dernières données du camp…", + "setupTranslationsAndFonts": "Chargement des polices et des textes statiques…", + "assembleContent": "Assemblage {type} ({content} sur {totalContents})…", + "layoutDocument": "Calcul de la mise en page du document…", + "layoutPage": "Calcul de la mise en page de la page {page}…", + "renderingPdfPage": "Rendu du pdf, page {page} sur {totalPages}…", + "downloadingPdf": "Téléchargement du pdf en cours…", + "done": "Terminé", + "failed": "Echec" + } }, "printPreviewClient": { "previewError": "Une erreur est survenue. Veuillez réessayer avec des paramètres d'impression différents, ou recharger la page.", @@ -424,7 +445,9 @@ "SafetyConsiderations": "Considérations sur la sécurité", "Story": "Histoire", "Toc": "Table des matières" - } + }, + "options": "Paramètres", + "pageNumbers": "Numéros de page" }, "printNuxt": { "downloadNuxtPdfButton": { @@ -543,6 +566,7 @@ "close": "Fermer", "content": "Contenu", "continue": "Continuer", + "copy": "Copier", "create": "Créer", "delete": "Supprimer", "discard": "Rejeter", @@ -778,6 +802,10 @@ "download": "Télécharger l'aperçu", "title": "Aperçu général" }, + "materialUnassigned": { + "excelTitle": "non-assigné", + "title": "Matériel non-assigné" + }, "sideBarMaterialLists": { "title": "Listes de matériel" } @@ -786,10 +814,10 @@ "desktop": { "navTopbar": { "campIsLoading": "Le camp est en cours de chargement", - "checklist": "Check-list", "material": "Matériel", "program": "Programme", - "story": "Histoire" + "story": "Histoire", + "checklist": "Check-list" } }, "mobile": { diff --git a/pdf/package-lock.json b/pdf/package-lock.json index 2d892c6857..0c76d3030a 100644 --- a/pdf/package-lock.json +++ b/pdf/package-lock.json @@ -6,52 +6,52 @@ "": { "name": "@ecamp3/client-pdf", "dependencies": { - "@vue/runtime-core": "3.5.26", + "@vue/runtime-core": "3.5.27", "html-entities": "2.6.0", "html-parse-stringify": "3.0.1" }, "devDependencies": { - "@babel/eslint-parser": "7.28.5", - "@eslint/compat": "2.0.0", + "@babel/eslint-parser": "7.28.6", + "@eslint/compat": "2.0.1", "@eslint/js": "9.39.2", "@intlify/core": "11.2.8", "@rushstack/eslint-patch": "1.15.0", "@vitejs/plugin-vue": "6.0.3", - "@vitest/coverage-v8": "4.0.16", + "@vitest/coverage-v8": "4.0.17", "@vue/babel-preset-app": "5.0.9", - "@vue/compiler-dom": "3.5.26", - "@vue/compiler-sfc": "3.5.26", + "@vue/compiler-dom": "3.5.27", + "@vue/compiler-sfc": "3.5.27", "@vue/eslint-config-prettier": "10.2.0", - "@vue/runtime-dom": "3.5.26", - "@vue/server-renderer": "3.5.26", - "@vue/shared": "3.5.26", + "@vue/runtime-dom": "3.5.27", + "@vue/server-renderer": "3.5.27", + "@vue/shared": "3.5.27", "@vue/test-utils": "2.4.6", "css": "3.0.0", "dayjs": "1.11.19", "eslint": "9.39.2", "eslint-plugin-local-rules": "3.0.2", "eslint-plugin-vue": "10.6.2", - "globals": "16.5.0", + "globals": "17.0.0", "jsdom": "27.4.0", - "prettier": "3.7.4", + "prettier": "3.8.0", "url-template": "3.1.1", - "vite": "7.3.0", - "vitest": "4.0.16" + "vite": "7.3.1", + "vitest": "4.0.17" }, "peerDependencies": { "@react-pdf/font": "4.0.4", "@react-pdf/layout": "4.4.2", - "@react-pdf/pdfkit": "4.0.4", + "@react-pdf/pdfkit": "4.1.0", "@react-pdf/render": "4.3.2", - "colorjs.io": "0.6.0", - "lodash-es": "4.17.22", + "colorjs.io": "0.6.1", + "lodash-es": "4.17.23", "runes": "0.4.3" } }, "node_modules/@acemir/cssom": { - "version": "0.9.30", - "resolved": "https://registry.npmjs.org/@acemir/cssom/-/cssom-0.9.30.tgz", - "integrity": "sha512-9CnlMCI0LmCIq0olalQqdWrJHPzm0/tw3gzOA9zJSgvFX7Xau3D24mAGa4BtwxwY69nsuJW6kQqqCzf/mEcQgg==", + "version": "0.9.31", + "resolved": "https://registry.npmjs.org/@acemir/cssom/-/cssom-0.9.31.tgz", + "integrity": "sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==", "dev": true, "license": "MIT" }, @@ -111,13 +111,13 @@ "license": "MIT" }, "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", + "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -126,9 +126,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", - "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.6.tgz", + "integrity": "sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==", "dev": true, "license": "MIT", "engines": { @@ -136,22 +136,22 @@ } }, "node_modules/@babel/core": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", - "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.6.tgz", + "integrity": "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.5", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.4", - "@babel/parser": "^7.28.5", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.5", - "@babel/types": "^7.28.5", + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -168,9 +168,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.5.tgz", - "integrity": "sha512-fcdRcWahONYo+JRnJg1/AekOacGvKx12Gu0qXJXFi2WBqQA1i7+O5PaxRB7kxE/Op94dExnCiiar6T09pvdHpA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.6.tgz", + "integrity": "sha512-QGmsKi2PBO/MHSQk+AAgA9R6OHQr+VqnniFE0eMWZcVcfBZoA2dKn2hUsl3Csg/Plt9opRUWdY7//VXsrIlEiA==", "dev": true, "license": "MIT", "dependencies": { @@ -187,14 +187,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", - "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz", + "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.5", - "@babel/types": "^7.28.5", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -217,13 +217,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.27.2", + "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -234,18 +234,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz", - "integrity": "sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.28.5", + "@babel/traverse": "^7.28.6", "semver": "^6.3.1" }, "engines": { @@ -274,17 +274,17 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", - "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.6.tgz", + "integrity": "sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", - "debug": "^4.4.1", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", "lodash.debounce": "^4.0.8", - "resolve": "^1.22.10" + "resolve": "^1.22.11" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -315,29 +315,29 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", - "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.28.3" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -360,9 +360,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", "dev": true, "license": "MIT", "engines": { @@ -388,15 +388,15 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", - "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -450,42 +450,42 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz", - "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", + "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.3", - "@babel/types": "^7.28.2" + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", - "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4" + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", - "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", + "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.28.5" + "@babel/types": "^7.28.6" }, "bin": { "parser": "bin/babel-parser.js" @@ -562,14 +562,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz", - "integrity": "sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", + "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.28.3" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -597,15 +597,15 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.28.0.tgz", - "integrity": "sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.28.6.tgz", + "integrity": "sha512-RVdFPPyY9fCRAX68haPmOk2iyKW8PKJFthmm8NeSI3paNxKWGZIn99+VbIf0FrtCpFnPgnpF/L48tadi617ULg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-syntax-decorators": "^7.27.1" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-syntax-decorators": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -628,13 +628,13 @@ } }, "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.27.1.tgz", - "integrity": "sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.28.6.tgz", + "integrity": "sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -657,13 +657,13 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", - "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", + "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -673,13 +673,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", - "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -689,13 +689,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", - "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -738,15 +738,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", - "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.6.tgz", + "integrity": "sha512-9knsChgsMzBV5Yh3kkhrZNxH3oCYAfMBkNNaVN4cP2RVlFPe8wYdwwcnOsAbkdDoV9UjFtOXWrWB52M8W4jNeA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-remap-async-to-generator": "^7.27.1", - "@babel/traverse": "^7.28.0" + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -756,14 +756,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", - "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-remap-async-to-generator": "^7.27.1" }, "engines": { @@ -790,13 +790,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.5.tgz", - "integrity": "sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", + "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -806,14 +806,14 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", - "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", + "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -823,14 +823,14 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz", - "integrity": "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.28.3", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -840,18 +840,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz", - "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", + "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-globals": "^7.28.0", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", - "@babel/traverse": "^7.28.4" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -861,14 +861,14 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", - "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/template": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -895,14 +895,14 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", - "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", + "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -928,14 +928,14 @@ } }, "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", - "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.28.6.tgz", + "integrity": "sha512-5suVoXjC14lUN6ZL9OLKIHCNVWCrqGqlmEp/ixdXjvgnEl/kauLvvMO/Xw9NyMc95Joj1AeLVPVMvibBgSoFlA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -961,14 +961,14 @@ } }, "node_modules/@babel/plugin-transform-explicit-resource-management": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", - "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", + "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.28.0" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -978,13 +978,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.5.tgz", - "integrity": "sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", + "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1045,13 +1045,13 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", - "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", + "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1077,13 +1077,13 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz", - "integrity": "sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1126,14 +1126,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", - "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1212,13 +1212,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", - "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", + "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1228,13 +1228,13 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", - "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1244,17 +1244,17 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz", - "integrity": "sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/traverse": "^7.28.4" + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1281,13 +1281,13 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", - "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", + "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1297,13 +1297,13 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz", - "integrity": "sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", + "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { @@ -1330,14 +1330,14 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", - "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", + "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1347,15 +1347,15 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", - "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", + "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1381,13 +1381,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz", - "integrity": "sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.6.tgz", + "integrity": "sha512-eZhoEZHYQLL5uc1gS5e9/oTknS0sSSAtd5TkKMUp3J+S/CaUjagc0kOUPsEbDmMeva0nC3WWl4SxVY6+OBuxfw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1397,14 +1397,14 @@ } }, "node_modules/@babel/plugin-transform-regexp-modifiers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", - "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", + "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1467,13 +1467,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", - "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { @@ -1548,14 +1548,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", - "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", + "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1582,14 +1582,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", - "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", + "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1599,76 +1599,76 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.5.tgz", - "integrity": "sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.6.tgz", + "integrity": "sha512-GaTI4nXDrs7l0qaJ6Rg06dtOXTBCG6TMDB44zbqofCIC4PqC7SEvmFFtpxzCDw9W5aJ7RKVshgXTLvLdBFV/qw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.28.5", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/compat-data": "^7.28.6", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.27.1", - "@babel/plugin-syntax-import-attributes": "^7.27.1", + "@babel/plugin-syntax-import-assertions": "^7.28.6", + "@babel/plugin-syntax-import-attributes": "^7.28.6", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.27.1", - "@babel/plugin-transform-async-generator-functions": "^7.28.0", - "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.28.6", + "@babel/plugin-transform-async-to-generator": "^7.28.6", "@babel/plugin-transform-block-scoped-functions": "^7.27.1", - "@babel/plugin-transform-block-scoping": "^7.28.5", - "@babel/plugin-transform-class-properties": "^7.27.1", - "@babel/plugin-transform-class-static-block": "^7.28.3", - "@babel/plugin-transform-classes": "^7.28.4", - "@babel/plugin-transform-computed-properties": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.6", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-class-static-block": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-computed-properties": "^7.28.6", "@babel/plugin-transform-destructuring": "^7.28.5", - "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-dotall-regex": "^7.28.6", "@babel/plugin-transform-duplicate-keys": "^7.27.1", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.28.6", "@babel/plugin-transform-dynamic-import": "^7.27.1", - "@babel/plugin-transform-explicit-resource-management": "^7.28.0", - "@babel/plugin-transform-exponentiation-operator": "^7.28.5", + "@babel/plugin-transform-explicit-resource-management": "^7.28.6", + "@babel/plugin-transform-exponentiation-operator": "^7.28.6", "@babel/plugin-transform-export-namespace-from": "^7.27.1", "@babel/plugin-transform-for-of": "^7.27.1", "@babel/plugin-transform-function-name": "^7.27.1", - "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.28.6", "@babel/plugin-transform-literals": "^7.27.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.28.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", "@babel/plugin-transform-member-expression-literals": "^7.27.1", "@babel/plugin-transform-modules-amd": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.28.6", "@babel/plugin-transform-modules-systemjs": "^7.28.5", "@babel/plugin-transform-modules-umd": "^7.27.1", "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", "@babel/plugin-transform-new-target": "^7.27.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", - "@babel/plugin-transform-numeric-separator": "^7.27.1", - "@babel/plugin-transform-object-rest-spread": "^7.28.4", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-numeric-separator": "^7.28.6", + "@babel/plugin-transform-object-rest-spread": "^7.28.6", "@babel/plugin-transform-object-super": "^7.27.1", - "@babel/plugin-transform-optional-catch-binding": "^7.27.1", - "@babel/plugin-transform-optional-chaining": "^7.28.5", + "@babel/plugin-transform-optional-catch-binding": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/plugin-transform-private-methods": "^7.27.1", - "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-private-methods": "^7.28.6", + "@babel/plugin-transform-private-property-in-object": "^7.28.6", "@babel/plugin-transform-property-literals": "^7.27.1", - "@babel/plugin-transform-regenerator": "^7.28.4", - "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.28.6", + "@babel/plugin-transform-regexp-modifiers": "^7.28.6", "@babel/plugin-transform-reserved-words": "^7.27.1", "@babel/plugin-transform-shorthand-properties": "^7.27.1", - "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-spread": "^7.28.6", "@babel/plugin-transform-sticky-regex": "^7.27.1", "@babel/plugin-transform-template-literals": "^7.27.1", "@babel/plugin-transform-typeof-symbol": "^7.27.1", "@babel/plugin-transform-unicode-escapes": "^7.27.1", - "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.28.6", "@babel/plugin-transform-unicode-regex": "^7.27.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.14", "babel-plugin-polyfill-corejs3": "^0.13.0", @@ -1699,42 +1699,42 @@ } }, "node_modules/@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", - "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz", + "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.5", + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.5", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.5", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6", "debug": "^4.3.1" }, "engines": { @@ -1742,9 +1742,9 @@ } }, "node_modules/@babel/types": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", - "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", + "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", "dev": true, "license": "MIT", "dependencies": { @@ -1862,9 +1862,9 @@ } }, "node_modules/@csstools/css-syntax-patches-for-csstree": { - "version": "1.0.23", - "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.23.tgz", - "integrity": "sha512-YEmgyklR6l/oKUltidNVYdjSmLSW88vMsKx0pmiS3r71s8ZZRpd8A0Yf0U+6p/RzElmMnPBv27hNWjDQMSZRtQ==", + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.25.tgz", + "integrity": "sha512-g0Kw9W3vjx5BEBAF8c5Fm2NcB/Fs8jJXh85aXqwEXiL+tqtOut07TWgyaGzAAfTM+gKckrrncyeGEZPcaRgm2Q==", "dev": true, "funding": [ { @@ -2387,13 +2387,13 @@ } }, "node_modules/@eslint/compat": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-2.0.0.tgz", - "integrity": "sha512-T9AfE1G1uv4wwq94ozgTGio5EUQBqAVe1X9qsQtSNVEYW6j3hvtZVm8Smr4qL1qDPFg+lOB2cL5RxTRMzq4CTA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-2.0.1.tgz", + "integrity": "sha512-yl/JsgplclzuvGFNqwNYV4XNPhP3l62ZOP9w/47atNAdmDtIFCx6X7CSk/SlWUuBGkT4Et/5+UD+WyvX2iiIWA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^1.0.0" + "@eslint/core": "^1.0.1" }, "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" @@ -2449,9 +2449,9 @@ } }, "node_modules/@eslint/core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.0.0.tgz", - "integrity": "sha512-PRfWP+8FOldvbApr6xL7mNCw4cJcSTq4GA7tYbgq15mRb0kWKO/wEB2jr+uwjFH3sZvEZneZyCUGTxsv4Sahyw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.0.1.tgz", + "integrity": "sha512-r18fEAj9uCk+VjzGt2thsbOmychS+4kxI14spVNibUO2vqKX7obOG+ymZljAwuPZl+S3clPGwCwTDtrdqTiY6Q==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2549,19 +2549,19 @@ } }, "node_modules/@exodus/bytes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.8.0.tgz", - "integrity": "sha512-8JPn18Bcp8Uo1T82gR8lh2guEOa5KKU/IEKvvdp0sgmi7coPBWf1Doi1EXsGZb2ehc8ym/StJCjffYV+ne7sXQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.9.0.tgz", + "integrity": "sha512-lagqsvnk09NKogQaN/XrtlWeUF8SRhT12odMvbTIIaVObqzwAogL6jhR4DAp0gPuKoM1AOVrKUshJpRdpMFrww==", "dev": true, "license": "MIT", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@exodus/crypto": "^1.0.0-rc.4" + "@noble/hashes": "^1.8.0 || ^2.0.0" }, "peerDependenciesMeta": { - "@exodus/crypto": { + "@noble/hashes": { "optional": true } } @@ -2802,6 +2802,7 @@ "resolved": "https://registry.npmjs.org/@react-pdf/font/-/font-4.0.4.tgz", "integrity": "sha512-8YtgGtL511txIEc9AjiilpZ7yjid8uCd8OGUl6jaL3LIHnrToUupSN4IzsMQpVTCMYiDLFnDNQzpZsOYtRS/Pg==", "license": "MIT", + "peer": true, "dependencies": { "@react-pdf/pdfkit": "^4.1.0", "@react-pdf/types": "^2.9.2", @@ -2809,22 +2810,6 @@ "is-url": "^1.2.4" } }, - "node_modules/@react-pdf/font/node_modules/@react-pdf/pdfkit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@react-pdf/pdfkit/-/pdfkit-4.1.0.tgz", - "integrity": "sha512-Wm/IOAv0h/U5Ra94c/PltFJGcpTUd/fwVMVeFD6X9tTTPCttIwg0teRG1Lqq617J8K4W7jpL/B0HTH0mjp3QpQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.20.13", - "@react-pdf/png-js": "^3.0.0", - "browserify-zlib": "^0.2.0", - "crypto-js": "^4.2.0", - "fontkit": "^2.0.2", - "jay-peg": "^1.1.1", - "linebreak": "^1.1.0", - "vite-compatible-readable-stream": "^3.6.1" - } - }, "node_modules/@react-pdf/image": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@react-pdf/image/-/image-3.0.4.tgz", @@ -2854,9 +2839,9 @@ } }, "node_modules/@react-pdf/pdfkit": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@react-pdf/pdfkit/-/pdfkit-4.0.4.tgz", - "integrity": "sha512-/nITLggsPlB66bVLnm0X7MNdKQxXelLGZG6zB5acF5cCgkFwmXHnLNyxYOUD4GMOMg1HOPShXDKWrwk2ZeHsvw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@react-pdf/pdfkit/-/pdfkit-4.1.0.tgz", + "integrity": "sha512-Wm/IOAv0h/U5Ra94c/PltFJGcpTUd/fwVMVeFD6X9tTTPCttIwg0teRG1Lqq617J8K4W7jpL/B0HTH0mjp3QpQ==", "license": "MIT", "peer": true, "dependencies": { @@ -2949,9 +2934,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.55.1.tgz", - "integrity": "sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.56.0.tgz", + "integrity": "sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==", "cpu": [ "arm" ], @@ -2963,9 +2948,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.55.1.tgz", - "integrity": "sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.56.0.tgz", + "integrity": "sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==", "cpu": [ "arm64" ], @@ -2977,9 +2962,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.55.1.tgz", - "integrity": "sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.56.0.tgz", + "integrity": "sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==", "cpu": [ "arm64" ], @@ -2991,9 +2976,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.55.1.tgz", - "integrity": "sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.56.0.tgz", + "integrity": "sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==", "cpu": [ "x64" ], @@ -3005,9 +2990,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.55.1.tgz", - "integrity": "sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.56.0.tgz", + "integrity": "sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==", "cpu": [ "arm64" ], @@ -3019,9 +3004,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.55.1.tgz", - "integrity": "sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.56.0.tgz", + "integrity": "sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==", "cpu": [ "x64" ], @@ -3033,9 +3018,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.55.1.tgz", - "integrity": "sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.56.0.tgz", + "integrity": "sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==", "cpu": [ "arm" ], @@ -3047,9 +3032,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.55.1.tgz", - "integrity": "sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.56.0.tgz", + "integrity": "sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==", "cpu": [ "arm" ], @@ -3061,9 +3046,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.55.1.tgz", - "integrity": "sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.56.0.tgz", + "integrity": "sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==", "cpu": [ "arm64" ], @@ -3075,9 +3060,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.55.1.tgz", - "integrity": "sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.56.0.tgz", + "integrity": "sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==", "cpu": [ "arm64" ], @@ -3089,9 +3074,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.55.1.tgz", - "integrity": "sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.56.0.tgz", + "integrity": "sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==", "cpu": [ "loong64" ], @@ -3103,9 +3088,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.55.1.tgz", - "integrity": "sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.56.0.tgz", + "integrity": "sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==", "cpu": [ "loong64" ], @@ -3117,9 +3102,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.55.1.tgz", - "integrity": "sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.56.0.tgz", + "integrity": "sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==", "cpu": [ "ppc64" ], @@ -3131,9 +3116,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.55.1.tgz", - "integrity": "sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.56.0.tgz", + "integrity": "sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==", "cpu": [ "ppc64" ], @@ -3145,9 +3130,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.55.1.tgz", - "integrity": "sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.56.0.tgz", + "integrity": "sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==", "cpu": [ "riscv64" ], @@ -3159,9 +3144,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.55.1.tgz", - "integrity": "sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.56.0.tgz", + "integrity": "sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==", "cpu": [ "riscv64" ], @@ -3173,9 +3158,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.55.1.tgz", - "integrity": "sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.56.0.tgz", + "integrity": "sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==", "cpu": [ "s390x" ], @@ -3187,9 +3172,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.55.1.tgz", - "integrity": "sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.56.0.tgz", + "integrity": "sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==", "cpu": [ "x64" ], @@ -3201,9 +3186,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.55.1.tgz", - "integrity": "sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.56.0.tgz", + "integrity": "sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==", "cpu": [ "x64" ], @@ -3215,9 +3200,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.55.1.tgz", - "integrity": "sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.56.0.tgz", + "integrity": "sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==", "cpu": [ "x64" ], @@ -3229,9 +3214,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.55.1.tgz", - "integrity": "sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.56.0.tgz", + "integrity": "sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==", "cpu": [ "arm64" ], @@ -3243,9 +3228,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.55.1.tgz", - "integrity": "sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.56.0.tgz", + "integrity": "sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==", "cpu": [ "arm64" ], @@ -3257,9 +3242,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.55.1.tgz", - "integrity": "sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.56.0.tgz", + "integrity": "sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==", "cpu": [ "ia32" ], @@ -3271,9 +3256,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.55.1.tgz", - "integrity": "sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.56.0.tgz", + "integrity": "sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==", "cpu": [ "x64" ], @@ -3285,9 +3270,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.55.1.tgz", - "integrity": "sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.56.0.tgz", + "integrity": "sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==", "cpu": [ "x64" ], @@ -3371,18 +3356,17 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "4.0.16", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.16.tgz", - "integrity": "sha512-2rNdjEIsPRzsdu6/9Eq0AYAzYdpP6Bx9cje9tL3FE5XzXRQF1fNU9pe/1yE8fCrS0HD+fBtt6gLPh6LI57tX7A==", + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.17.tgz", + "integrity": "sha512-/6zU2FLGg0jsd+ePZcwHRy3+WpNTBBhDY56P4JTRqUN/Dp6CvOEa9HrikcQ4KfV2b2kAHUFB4dl1SuocWXSFEw==", "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^1.0.2", - "@vitest/utils": "4.0.16", - "ast-v8-to-istanbul": "^0.3.8", + "@vitest/utils": "4.0.17", + "ast-v8-to-istanbul": "^0.3.10", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", - "istanbul-lib-source-maps": "^5.0.6", "istanbul-reports": "^3.2.0", "magicast": "^0.5.1", "obug": "^2.1.1", @@ -3393,8 +3377,8 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "4.0.16", - "vitest": "4.0.16" + "@vitest/browser": "4.0.17", + "vitest": "4.0.17" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -3403,16 +3387,16 @@ } }, "node_modules/@vitest/expect": { - "version": "4.0.16", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.16.tgz", - "integrity": "sha512-eshqULT2It7McaJkQGLkPjPjNph+uevROGuIMJdG3V+0BSR2w9u6J9Lwu+E8cK5TETlfou8GRijhafIMhXsimA==", + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.17.tgz", + "integrity": "sha512-mEoqP3RqhKlbmUmntNDDCJeTDavDR+fVYkSOw8qRwJFaW/0/5zA9zFeTrHqNtcmwh6j26yMmwx2PqUDPzt5ZAQ==", "dev": true, "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.0.0", "@types/chai": "^5.2.2", - "@vitest/spy": "4.0.16", - "@vitest/utils": "4.0.16", + "@vitest/spy": "4.0.17", + "@vitest/utils": "4.0.17", "chai": "^6.2.1", "tinyrainbow": "^3.0.3" }, @@ -3421,13 +3405,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "4.0.16", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.16.tgz", - "integrity": "sha512-yb6k4AZxJTB+q9ycAvsoxGn+j/po0UaPgajllBgt1PzoMAAmJGYFdDk0uCcRcxb3BrME34I6u8gHZTQlkqSZpg==", + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.17.tgz", + "integrity": "sha512-+ZtQhLA3lDh1tI2wxe3yMsGzbp7uuJSWBM1iTIKCbppWTSBN09PUC+L+fyNlQApQoR+Ps8twt2pbSSXg2fQVEQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "4.0.16", + "@vitest/spy": "4.0.17", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, @@ -3458,9 +3442,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "4.0.16", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.16.tgz", - "integrity": "sha512-eNCYNsSty9xJKi/UdVD8Ou16alu7AYiS2fCPRs0b1OdhJiV89buAXQLpTbe+X8V9L6qrs9CqyvU7OaAopJYPsA==", + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.17.tgz", + "integrity": "sha512-Ah3VAYmjcEdHg6+MwFE17qyLqBHZ+ni2ScKCiW2XrlSBV4H3Z7vYfPfz7CWQ33gyu76oc0Ai36+kgLU3rfF4nw==", "dev": true, "license": "MIT", "dependencies": { @@ -3471,13 +3455,13 @@ } }, "node_modules/@vitest/runner": { - "version": "4.0.16", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.16.tgz", - "integrity": "sha512-VWEDm5Wv9xEo80ctjORcTQRJ539EGPB3Pb9ApvVRAY1U/WkHXmmYISqU5E79uCwcW7xYUV38gwZD+RV755fu3Q==", + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.17.tgz", + "integrity": "sha512-JmuQyf8aMWoo/LmNFppdpkfRVHJcsgzkbCA+/Bk7VfNH7RE6Ut2qxegeyx2j3ojtJtKIbIGy3h+KxGfYfk28YQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.0.16", + "@vitest/utils": "4.0.17", "pathe": "^2.0.3" }, "funding": { @@ -3485,13 +3469,13 @@ } }, "node_modules/@vitest/snapshot": { - "version": "4.0.16", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.16.tgz", - "integrity": "sha512-sf6NcrYhYBsSYefxnry+DR8n3UV4xWZwWxYbCJUt2YdvtqzSPR7VfGrY0zsv090DAbjFZsi7ZaMi1KnSRyK1XA==", + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.17.tgz", + "integrity": "sha512-npPelD7oyL+YQM2gbIYvlavlMVWUfNNGZPcu0aEUQXt7FXTuqhmgiYupPnAanhKvyP6Srs2pIbWo30K0RbDtRQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.16", + "@vitest/pretty-format": "4.0.17", "magic-string": "^0.30.21", "pathe": "^2.0.3" }, @@ -3500,9 +3484,9 @@ } }, "node_modules/@vitest/spy": { - "version": "4.0.16", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.16.tgz", - "integrity": "sha512-4jIOWjKP0ZUaEmJm00E0cOBLU+5WE0BpeNr3XN6TEF05ltro6NJqHWxXD0kA8/Zc8Nh23AT8WQxwNG+WeROupw==", + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.17.tgz", + "integrity": "sha512-I1bQo8QaP6tZlTomQNWKJE6ym4SHf3oLS7ceNjozxxgzavRAgZDc06T7kD8gb9bXKEgcLNt00Z+kZO6KaJ62Ew==", "dev": true, "license": "MIT", "funding": { @@ -3510,13 +3494,13 @@ } }, "node_modules/@vitest/utils": { - "version": "4.0.16", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.16.tgz", - "integrity": "sha512-h8z9yYhV3e1LEfaQ3zdypIrnAg/9hguReGZoS7Gl0aBG5xgA410zBqECqmaF/+RkTggRsfnzc1XaAHA6bmUufA==", + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.17.tgz", + "integrity": "sha512-RG6iy+IzQpa9SB8HAFHJ9Y+pTzI+h8553MrciN9eC6TFBErqrQaTas4vG+MVj8S4uKk8uTT2p0vgZPnTdxd96w==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.16", + "@vitest/pretty-format": "4.0.17", "tinyrainbow": "^3.0.3" }, "funding": { @@ -3764,42 +3748,42 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.5.26", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.26.tgz", - "integrity": "sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==", + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.27.tgz", + "integrity": "sha512-gnSBQjZA+//qDZen+6a2EdHqJ68Z7uybrMf3SPjEGgG4dicklwDVmMC1AeIHxtLVPT7sn6sH1KOO+tS6gwOUeQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.28.5", - "@vue/shared": "3.5.26", + "@vue/shared": "3.5.27", "entities": "^7.0.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.26", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.26.tgz", - "integrity": "sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A==", + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.27.tgz", + "integrity": "sha512-oAFea8dZgCtVVVTEC7fv3T5CbZW9BxpFzGGxC79xakTr6ooeEqmRuvQydIiDAkglZEAd09LgVf1RoDnL54fu5w==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.26", - "@vue/shared": "3.5.26" + "@vue/compiler-core": "3.5.27", + "@vue/shared": "3.5.27" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.26", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.26.tgz", - "integrity": "sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==", + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.27.tgz", + "integrity": "sha512-sHZu9QyDPeDmN/MRoshhggVOWE5WlGFStKFwu8G52swATgSny27hJRWteKDSUUzUH+wp+bmeNbhJnEAel/auUQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.28.5", - "@vue/compiler-core": "3.5.26", - "@vue/compiler-dom": "3.5.26", - "@vue/compiler-ssr": "3.5.26", - "@vue/shared": "3.5.26", + "@vue/compiler-core": "3.5.27", + "@vue/compiler-dom": "3.5.27", + "@vue/compiler-ssr": "3.5.27", + "@vue/shared": "3.5.27", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", "postcss": "^8.5.6", @@ -3807,14 +3791,14 @@ } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.26", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.26.tgz", - "integrity": "sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw==", + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.27.tgz", + "integrity": "sha512-Sj7h+JHt512fV1cTxKlYhg7qxBvack+BGncSpH+8vnN+KN95iPIcqB5rsbblX40XorP+ilO7VIKlkuu3Xq2vjw==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.26", - "@vue/shared": "3.5.26" + "@vue/compiler-dom": "3.5.27", + "@vue/shared": "3.5.27" } }, "node_modules/@vue/eslint-config-prettier": { @@ -3833,55 +3817,55 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.5.26", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.26.tgz", - "integrity": "sha512-9EnYB1/DIiUYYnzlnUBgwU32NNvLp/nhxLXeWRhHUEeWNTn1ECxX8aGO7RTXeX6PPcxe3LLuNBFoJbV4QZ+CFQ==", + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.27.tgz", + "integrity": "sha512-vvorxn2KXfJ0nBEnj4GYshSgsyMNFnIQah/wczXlsNXt+ijhugmW+PpJ2cNPe4V6jpnBcs0MhCODKllWG+nvoQ==", "license": "MIT", "dependencies": { - "@vue/shared": "3.5.26" + "@vue/shared": "3.5.27" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.26", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.26.tgz", - "integrity": "sha512-xJWM9KH1kd201w5DvMDOwDHYhrdPTrAatn56oB/LRG4plEQeZRQLw0Bpwih9KYoqmzaxF0OKSn6swzYi84e1/Q==", + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.27.tgz", + "integrity": "sha512-fxVuX/fzgzeMPn/CLQecWeDIFNt3gQVhxM0rW02Tvp/YmZfXQgcTXlakq7IMutuZ/+Ogbn+K0oct9J3JZfyk3A==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.26", - "@vue/shared": "3.5.26" + "@vue/reactivity": "3.5.27", + "@vue/shared": "3.5.27" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.26", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.26.tgz", - "integrity": "sha512-XLLd/+4sPC2ZkN/6+V4O4gjJu6kSDbHAChvsyWgm1oGbdSO3efvGYnm25yCjtFm/K7rrSDvSfPDgN1pHgS4VNQ==", + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.27.tgz", + "integrity": "sha512-/QnLslQgYqSJ5aUmb5F0z0caZPGHRB8LEAQ1s81vHFM5CBfnun63rxhvE/scVb/j3TbBuoZwkJyiLCkBluMpeg==", "dev": true, "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.26", - "@vue/runtime-core": "3.5.26", - "@vue/shared": "3.5.26", + "@vue/reactivity": "3.5.27", + "@vue/runtime-core": "3.5.27", + "@vue/shared": "3.5.27", "csstype": "^3.2.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.5.26", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.26.tgz", - "integrity": "sha512-TYKLXmrwWKSodyVuO1WAubucd+1XlLg4set0YoV+Hu8Lo79mp/YMwWV5mC5FgtsDxX3qo1ONrxFaTP1OQgy1uA==", + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.27.tgz", + "integrity": "sha512-qOz/5thjeP1vAFc4+BY3Nr6wxyLhpeQgAE/8dDtKo6a6xdk+L4W46HDZgNmLOBUDEkFXV3G7pRiUqxjX0/2zWA==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.5.26", - "@vue/shared": "3.5.26" + "@vue/compiler-ssr": "3.5.27", + "@vue/shared": "3.5.27" }, "peerDependencies": { - "vue": "3.5.26" + "vue": "3.5.27" } }, "node_modules/@vue/shared": { - "version": "3.5.26", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.26.tgz", - "integrity": "sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==", + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.27.tgz", + "integrity": "sha512-dXr/3CgqXsJkZ0n9F3I4elY8wM9jMJpP3pvRG52r6m0tu/MsAFIe6JpXVGeNMd/D9F4hQynWT8Rfuj0bdm9kFQ==", "license": "MIT" }, "node_modules/@vue/test-utils": { @@ -4061,14 +4045,14 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", - "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz", + "integrity": "sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.27.7", - "@babel/helper-define-polyfill-provider": "^0.6.5", + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.6", "semver": "^6.3.1" }, "peerDependencies": { @@ -4090,13 +4074,13 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", - "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz", + "integrity": "sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5" + "@babel/helper-define-polyfill-provider": "^0.6.6" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -4130,9 +4114,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.9.12", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.12.tgz", - "integrity": "sha512-Mij6Lij93pTAIsSYy5cyBQ975Qh9uLEc5rwGTpomiZeXZL9yIS6uORJakb3ScHgfs0serMMfIbXzokPMuEiRyw==", + "version": "2.9.18", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.18.tgz", + "integrity": "sha512-e23vBV1ZLfjb9apvfPk4rHVu2ry6RIr2Wfs+O324okSidrX7pTAnEJPCh/O5BtRlr7QtZI7ktOP3vsqr7Z5XoA==", "dev": true, "license": "Apache-2.0", "bin": { @@ -4290,9 +4274,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001763", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001763.tgz", - "integrity": "sha512-mh/dGtq56uN98LlNX9qdbKnzINhX0QzhiWBFEkFfsFO4QyCvL8YegrJAazCwXIeqkIob8BlZPGM3xdnY+sgmvQ==", + "version": "1.0.30001766", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001766.tgz", + "integrity": "sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==", "dev": true, "funding": [ { @@ -4376,9 +4360,9 @@ } }, "node_modules/colorjs.io": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.6.0.tgz", - "integrity": "sha512-NgaccdK0ajJ9DPfa5OrIFRfTm4XILboOuqKV6tu9UonREcve+RUilZR3cdo7BbG+xIHFbDv4CxTE4M2vsj7nqw==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.6.1.tgz", + "integrity": "sha512-8lyR2wHzuIykCpqHKgluGsqQi5iDm3/a2IgP2GBZrasn2sBRkE4NOGsglZxWLs/jZQoNkmA/KM/8NV16rLUdBg==", "license": "MIT", "peer": true, "funding": { @@ -4422,9 +4406,9 @@ "license": "MIT" }, "node_modules/core-js": { - "version": "3.47.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.47.0.tgz", - "integrity": "sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==", + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.48.0.tgz", + "integrity": "sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -4434,13 +4418,13 @@ } }, "node_modules/core-js-compat": { - "version": "3.47.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.47.0.tgz", - "integrity": "sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==", + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", + "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.28.0" + "browserslist": "^4.28.1" }, "funding": { "type": "opencollective", @@ -4541,19 +4525,29 @@ "license": "MIT" }, "node_modules/data-urls": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-6.0.0.tgz", - "integrity": "sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-6.0.1.tgz", + "integrity": "sha512-euIQENZg6x8mj3fO6o9+fOW8MimUI4PpD/fZBhJfeioZVy9TUpM4UY7KjQNVZFlqwJ0UdzRDzkycB997HEq1BQ==", "dev": true, "license": "MIT", "dependencies": { - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^15.0.0" + "whatwg-mimetype": "^5.0.0", + "whatwg-url": "^15.1.0" }, "engines": { "node": ">=20" } }, + "node_modules/data-urls/node_modules/whatwg-mimetype": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz", + "integrity": "sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + } + }, "node_modules/dayjs": { "version": "1.11.19", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", @@ -4726,9 +4720,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.267", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", - "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", + "version": "1.5.278", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.278.tgz", + "integrity": "sha512-dQ0tM1svDRQOwxnXxm+twlGTjr9Upvt8UFWAgmLsxEzFQxhbti4VwxmMjsDxVC51Zo84swW7FVCXEV+VAkhuPw==", "dev": true, "license": "ISC" }, @@ -4746,9 +4740,9 @@ "license": "MIT" }, "node_modules/entities": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.0.tgz", - "integrity": "sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -4949,14 +4943,14 @@ "license": "MIT" }, "node_modules/eslint-plugin-prettier": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", - "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", + "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", "dev": true, "license": "MIT", "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.11.7" + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.12" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -5480,9 +5474,9 @@ } }, "node_modules/globals": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", - "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.0.0.tgz", + "integrity": "sha512-gv5BeD2EssA793rlFWVPMMCqefTlpusw6/2TbAVMy0FzcG8wKJn4O+NqJ4+XWmmwrayJgw5TzrmWjFgmz1XPqw==", "dev": true, "license": "MIT", "engines": { @@ -5653,9 +5647,9 @@ } }, "node_modules/hyphen": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/hyphen/-/hyphen-1.13.0.tgz", - "integrity": "sha512-flZoIooovWALhu04Z3ooPWQldjTOgLDs5DlbUxTjnIyhQKu9ukljKWwElFCUyVi6TBk210bMBlaMG8eW3bXU+g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/hyphen/-/hyphen-1.14.1.tgz", + "integrity": "sha512-kvL8xYl5QMTh+LwohVN72ciOxC0OEV79IPdJSTwEXok9y9QHebXGdFgrED4sWfiax/ODx++CAMk3hMy4XPJPOw==", "license": "ISC" }, "node_modules/ignore": { @@ -5808,21 +5802,6 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", - "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.23", - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/istanbul-reports": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", @@ -6071,9 +6050,9 @@ } }, "node_modules/lodash-es": { - "version": "4.17.22", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.22.tgz", - "integrity": "sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==", + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", "license": "MIT", "peer": true }, @@ -6572,9 +6551,9 @@ } }, "node_modules/prettier": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", - "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.0.tgz", + "integrity": "sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==", "dev": true, "license": "MIT", "peer": true, @@ -6732,9 +6711,9 @@ "license": "MIT" }, "node_modules/rollup": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.55.1.tgz", - "integrity": "sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==", + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.56.0.tgz", + "integrity": "sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg==", "dev": true, "license": "MIT", "dependencies": { @@ -6748,31 +6727,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.55.1", - "@rollup/rollup-android-arm64": "4.55.1", - "@rollup/rollup-darwin-arm64": "4.55.1", - "@rollup/rollup-darwin-x64": "4.55.1", - "@rollup/rollup-freebsd-arm64": "4.55.1", - "@rollup/rollup-freebsd-x64": "4.55.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.55.1", - "@rollup/rollup-linux-arm-musleabihf": "4.55.1", - "@rollup/rollup-linux-arm64-gnu": "4.55.1", - "@rollup/rollup-linux-arm64-musl": "4.55.1", - "@rollup/rollup-linux-loong64-gnu": "4.55.1", - "@rollup/rollup-linux-loong64-musl": "4.55.1", - "@rollup/rollup-linux-ppc64-gnu": "4.55.1", - "@rollup/rollup-linux-ppc64-musl": "4.55.1", - "@rollup/rollup-linux-riscv64-gnu": "4.55.1", - "@rollup/rollup-linux-riscv64-musl": "4.55.1", - "@rollup/rollup-linux-s390x-gnu": "4.55.1", - "@rollup/rollup-linux-x64-gnu": "4.55.1", - "@rollup/rollup-linux-x64-musl": "4.55.1", - "@rollup/rollup-openbsd-x64": "4.55.1", - "@rollup/rollup-openharmony-arm64": "4.55.1", - "@rollup/rollup-win32-arm64-msvc": "4.55.1", - "@rollup/rollup-win32-ia32-msvc": "4.55.1", - "@rollup/rollup-win32-x64-gnu": "4.55.1", - "@rollup/rollup-win32-x64-msvc": "4.55.1", + "@rollup/rollup-android-arm-eabi": "4.56.0", + "@rollup/rollup-android-arm64": "4.56.0", + "@rollup/rollup-darwin-arm64": "4.56.0", + "@rollup/rollup-darwin-x64": "4.56.0", + "@rollup/rollup-freebsd-arm64": "4.56.0", + "@rollup/rollup-freebsd-x64": "4.56.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.56.0", + "@rollup/rollup-linux-arm-musleabihf": "4.56.0", + "@rollup/rollup-linux-arm64-gnu": "4.56.0", + "@rollup/rollup-linux-arm64-musl": "4.56.0", + "@rollup/rollup-linux-loong64-gnu": "4.56.0", + "@rollup/rollup-linux-loong64-musl": "4.56.0", + "@rollup/rollup-linux-ppc64-gnu": "4.56.0", + "@rollup/rollup-linux-ppc64-musl": "4.56.0", + "@rollup/rollup-linux-riscv64-gnu": "4.56.0", + "@rollup/rollup-linux-riscv64-musl": "4.56.0", + "@rollup/rollup-linux-s390x-gnu": "4.56.0", + "@rollup/rollup-linux-x64-gnu": "4.56.0", + "@rollup/rollup-linux-x64-musl": "4.56.0", + "@rollup/rollup-openbsd-x64": "4.56.0", + "@rollup/rollup-openharmony-arm64": "4.56.0", + "@rollup/rollup-win32-arm64-msvc": "4.56.0", + "@rollup/rollup-win32-ia32-msvc": "4.56.0", + "@rollup/rollup-win32-x64-gnu": "4.56.0", + "@rollup/rollup-win32-x64-msvc": "4.56.0", "fsevents": "~2.3.2" } }, @@ -7117,9 +7096,9 @@ "license": "MIT" }, "node_modules/synckit": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", - "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7373,9 +7352,9 @@ "license": "MIT" }, "node_modules/vite": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.0.tgz", - "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "dev": true, "license": "MIT", "peer": true, @@ -7463,20 +7442,20 @@ } }, "node_modules/vitest": { - "version": "4.0.16", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.16.tgz", - "integrity": "sha512-E4t7DJ9pESL6E3I8nFjPa4xGUd3PmiWDLsDztS2qXSJWfHtbQnwAWylaBvSNY48I3vr8PTqIZlyK8TE3V3CA4Q==", + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.17.tgz", + "integrity": "sha512-FQMeF0DJdWY0iOnbv466n/0BudNdKj1l5jYgl5JVTwjSsZSlqyXFt/9+1sEyhR6CLowbZpV7O1sCHrzBhucKKg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@vitest/expect": "4.0.16", - "@vitest/mocker": "4.0.16", - "@vitest/pretty-format": "4.0.16", - "@vitest/runner": "4.0.16", - "@vitest/snapshot": "4.0.16", - "@vitest/spy": "4.0.16", - "@vitest/utils": "4.0.16", + "@vitest/expect": "4.0.17", + "@vitest/mocker": "4.0.17", + "@vitest/pretty-format": "4.0.17", + "@vitest/runner": "4.0.17", + "@vitest/snapshot": "4.0.17", + "@vitest/spy": "4.0.17", + "@vitest/utils": "4.0.17", "es-module-lexer": "^1.7.0", "expect-type": "^1.2.2", "magic-string": "^0.30.21", @@ -7504,10 +7483,10 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.0.16", - "@vitest/browser-preview": "4.0.16", - "@vitest/browser-webdriverio": "4.0.16", - "@vitest/ui": "4.0.16", + "@vitest/browser-playwright": "4.0.17", + "@vitest/browser-preview": "4.0.17", + "@vitest/browser-webdriverio": "4.0.17", + "@vitest/ui": "4.0.17", "happy-dom": "*", "jsdom": "*" }, @@ -7551,18 +7530,18 @@ } }, "node_modules/vue": { - "version": "3.5.26", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.26.tgz", - "integrity": "sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==", + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.27.tgz", + "integrity": "sha512-aJ/UtoEyFySPBGarREmN4z6qNKpbEguYHMmXSiOGk69czc+zhs0NF6tEFrY8TZKAl8N/LYAkd4JHVd5E/AsSmw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@vue/compiler-dom": "3.5.26", - "@vue/compiler-sfc": "3.5.26", - "@vue/runtime-dom": "3.5.26", - "@vue/server-renderer": "3.5.26", - "@vue/shared": "3.5.26" + "@vue/compiler-dom": "3.5.27", + "@vue/compiler-sfc": "3.5.27", + "@vue/runtime-dom": "3.5.27", + "@vue/server-renderer": "3.5.27", + "@vue/shared": "3.5.27" }, "peerDependencies": { "typescript": "*" diff --git a/pdf/package.json b/pdf/package.json index ed6c152dda..af9d5eaac2 100644 --- a/pdf/package.json +++ b/pdf/package.json @@ -18,46 +18,46 @@ "lint:check:prettier": "prettier --check --ignore-path .prettierignore **/*.{css,scss,json,mjs}" }, "dependencies": { - "@vue/runtime-core": "3.5.26", + "@vue/runtime-core": "3.5.27", "html-entities": "2.6.0", "html-parse-stringify": "3.0.1" }, "peerDependencies": { "@react-pdf/font": "4.0.4", "@react-pdf/layout": "4.4.2", - "@react-pdf/pdfkit": "4.0.4", + "@react-pdf/pdfkit": "4.1.0", "@react-pdf/render": "4.3.2", - "colorjs.io": "0.6.0", - "lodash-es": "4.17.22", + "colorjs.io": "0.6.1", + "lodash-es": "4.17.23", "runes": "0.4.3" }, "devDependencies": { - "@babel/eslint-parser": "7.28.5", - "@eslint/compat": "2.0.0", + "@babel/eslint-parser": "7.28.6", + "@eslint/compat": "2.0.1", "@eslint/js": "9.39.2", "@intlify/core": "11.2.8", "@rushstack/eslint-patch": "1.15.0", "@vitejs/plugin-vue": "6.0.3", - "@vitest/coverage-v8": "4.0.16", + "@vitest/coverage-v8": "4.0.17", "@vue/babel-preset-app": "5.0.9", - "@vue/compiler-dom": "3.5.26", - "@vue/compiler-sfc": "3.5.26", + "@vue/compiler-dom": "3.5.27", + "@vue/compiler-sfc": "3.5.27", "@vue/eslint-config-prettier": "10.2.0", - "@vue/runtime-dom": "3.5.26", - "@vue/server-renderer": "3.5.26", - "@vue/shared": "3.5.26", + "@vue/runtime-dom": "3.5.27", + "@vue/server-renderer": "3.5.27", + "@vue/shared": "3.5.27", "@vue/test-utils": "2.4.6", "css": "3.0.0", "dayjs": "1.11.19", "eslint": "9.39.2", "eslint-plugin-local-rules": "3.0.2", "eslint-plugin-vue": "10.6.2", - "globals": "16.5.0", + "globals": "17.0.0", "jsdom": "27.4.0", - "prettier": "3.7.4", + "prettier": "3.8.0", "url-template": "3.1.1", - "vite": "7.3.0", - "vitest": "4.0.16" + "vite": "7.3.1", + "vitest": "4.0.17" }, "overrides": { "lodash": "lodash-es", diff --git a/pdf/src/campPrint/activity/Activity.vue b/pdf/src/campPrint/activity/Activity.vue index f6542d589d..fe1e156d41 100644 --- a/pdf/src/campPrint/activity/Activity.vue +++ b/pdf/src/campPrint/activity/Activity.vue @@ -1,5 +1,5 @@