diff --git a/.caddy/data/.gitkeep b/.caddy/data/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/.caddy/php-socket/.gitkeep b/.caddy/php-socket/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/.docker-hub/print/Dockerfile b/.docker-hub/print/Dockerfile index ca2200b3b9..a8b2bef619 100644 --- a/.docker-hub/print/Dockerfile +++ b/.docker-hub/print/Dockerfile @@ -1,5 +1,5 @@ # build stage -FROM node:20.12.2 AS build-stage +FROM node:22.3.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:20.12.2 AS production-stage +FROM node:22.3.0 AS production-stage WORKDIR /app COPY --from=build-stage /app/.output ./.output diff --git a/.docker-hub/varnish/Dockerfile b/.docker-hub/varnish/Dockerfile new file mode 100644 index 0000000000..e69fd49102 --- /dev/null +++ b/.docker-hub/varnish/Dockerfile @@ -0,0 +1,13 @@ +ARG VERSION=7.5.0 + +FROM varnish:${VERSION} + +USER root + +RUN set -e; \ + apt-get update; \ + apt-get -y install prometheus-varnish-exporter; + +RUN rm -rf /var/lib/apt/lists/*; + +USER varnish \ No newline at end of file diff --git a/.github/workflows/check-dependencies.yml b/.github/workflows/check-dependencies.yml index 9889a45008..9dcc066643 100644 --- a/.github/workflows/check-dependencies.yml +++ b/.github/workflows/check-dependencies.yml @@ -22,11 +22,11 @@ jobs: name: 'Api Platform check dependencies' runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - uses: shivammathur/setup-php@v2 with: - php-version: '8.3.6' + php-version: '8.3.7' tools: composer:2.7.0 coverage: xdebug diff --git a/.github/workflows/continuous-integration-optional.yml b/.github/workflows/continuous-integration-optional.yml index 1c6416c464..53ed4f5687 100644 --- a/.github/workflows/continuous-integration-optional.yml +++ b/.github/workflows/continuous-integration-optional.yml @@ -17,11 +17,11 @@ jobs: name: 'Validate Api Platform composer.lock' runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - uses: shivammathur/setup-php@v2 with: - php-version: '8.3.6' + php-version: '8.3.7' tools: composer:2.7.0 coverage: xdebug @@ -32,11 +32,11 @@ jobs: name: 'Lint: API (psalm)' runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - uses: shivammathur/setup-php@v2 with: - php-version: '8.3.6' + php-version: '8.3.7' tools: composer:2.7.0 coverage: xdebug @@ -62,11 +62,11 @@ jobs: name: 'Lint: API (phpstan)' runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - uses: shivammathur/setup-php@v2 with: - php-version: '8.3.6' + php-version: '8.3.7' tools: composer:2.7.0 coverage: xdebug @@ -110,11 +110,11 @@ jobs: --health-retries 5 steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - uses: shivammathur/setup-php@v2 with: - php-version: '8.3.6' + php-version: '8.3.7' tools: composer:2.7.0 coverage: xdebug diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index a4b897e035..adb84caa53 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -25,15 +25,57 @@ concurrency: cancel-in-progress: true jobs: + api-check-needed: + runs-on: ubuntu-latest + outputs: + should_skip: ${{ steps.skip_check.outputs.should_skip }} + steps: + - id: skip_check + uses: fkirc/skip-duplicate-actions@v5 + with: + skip_after_successful_duplicate: 'true' + paths: | + [ + "api/**", + ".github/workflows/continuous-integration.yml" + ] + do_not_skip: '["workflow_dispatch", "schedule"]' + + e2e-check-needed: + runs-on: ubuntu-latest + outputs: + should_skip: ${{ steps.skip_check.outputs.should_skip }} + steps: + - id: skip_check + uses: fkirc/skip-duplicate-actions@v5 + with: + skip_after_successful_duplicate: 'true' + paths: | + [ + ".github/workflows/continuous-integration.yml", + "api/**", + "common/**", + "e2e/**", + "frontend/**", + "pdf/**", + "print/**", + "docker-compose.yml", + ".env.ci" + ] + do_not_skip: '["workflow_dispatch", "schedule"]' + api-cs-check: name: 'Lint: API (php-cs-fixer)' runs-on: ubuntu-latest + needs: + - api-check-needed + if: needs.api-check-needed.outputs.should_skip != 'true' steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - uses: shivammathur/setup-php@v2 with: - php-version: '8.3.6' + php-version: '8.3.7' tools: composer:2.7.0 coverage: none @@ -59,11 +101,11 @@ jobs: name: 'Lint: Frontend (ESLint)' runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - uses: actions/setup-node@v4 with: - node-version: '20.12.2' + node-version: '22.3.0' - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4 with: @@ -88,11 +130,11 @@ jobs: name: 'Lint: ClientPrint (ESLint)' runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - uses: actions/setup-node@v4 with: - node-version: '20.12.2' + node-version: '22.3.0' - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4 with: @@ -117,11 +159,11 @@ jobs: name: 'Lint: Print (ESLint)' runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - uses: actions/setup-node@v4 with: - node-version: '20.12.2' + node-version: '22.3.0' - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4 with: @@ -145,12 +187,15 @@ jobs: e2e-lint: name: 'Lint: e2e (ESLint)' runs-on: ubuntu-latest + needs: + - e2e-check-needed + if: needs.e2e-check-needed.outputs.should_skip != 'true' steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - uses: actions/setup-node@v4 with: - node-version: '20.12.2' + node-version: '22.3.0' - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4 with: @@ -174,6 +219,9 @@ jobs: api-tests: name: 'Tests: API' runs-on: ubuntu-latest + needs: + - api-check-needed + if: needs.api-check-needed.outputs.should_skip != 'true' env: TEST_DATABASE_URL: postgresql://ecamp3:ecamp3@localhost:5432/ecamp3test?serverVersion=15&charset=utf8 @@ -193,11 +241,11 @@ jobs: --health-retries 5 steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - uses: shivammathur/setup-php@v2 with: - php-version: '8.3.6' + php-version: '8.3.7' extensions: intl-73.1 tools: composer:2.7.0 coverage: pcov @@ -233,6 +281,8 @@ jobs: - run: composer test working-directory: api + env: + PERFORMANCE_TEST_DEBUG_OUTPUT: ${{ vars.PERFORMANCE_TEST_DEBUG_OUTPUT }} - name: send coveralls report run: | @@ -249,11 +299,11 @@ jobs: name: 'Tests: Frontend' runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - uses: actions/setup-node@v4 with: - node-version: '20.12.2' + node-version: '22.3.0' - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4 with: @@ -292,11 +342,11 @@ jobs: name: 'Tests: Print' runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - uses: actions/setup-node@v4 with: - node-version: '20.12.2' + node-version: '22.3.0' - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4 with: @@ -331,11 +381,11 @@ jobs: name: 'Tests: PDF' runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - uses: actions/setup-node@v4 with: - node-version: '20.12.2' + node-version: '22.3.0' - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4 with: @@ -367,6 +417,9 @@ jobs: e2e-tests-build: name: 'Tests: End-to-end build' uses: ./.github/workflows/reusable-e2e-tests-build.yml + needs: + - e2e-check-needed + if: needs.e2e-check-needed.outputs.should_skip != 'true' e2e-tests-run: name: 'Tests: End-to-end run' @@ -402,6 +455,7 @@ jobs: - frontend-tests - print-tests - pdf-tests + - e2e-tests-build - e2e-tests-run runs-on: ubuntu-latest if: always() @@ -414,8 +468,8 @@ jobs: const needsObject = JSON.parse(needs); for (const [key, value] of Object.entries(needsObject)) { - if (value.result != 'success') { - core.setFailed(`Job ${key} failed`); + if (!['success', 'skipped'].includes(value.result)) { + core.setFailed(`Job ${key} failed with status ${value.result}`); } } diff --git a/.github/workflows/deployment-pr-cleanup.yml b/.github/workflows/deployment-pr-cleanup.yml index bc10e9a4cf..664e6670fc 100644 --- a/.github/workflows/deployment-pr-cleanup.yml +++ b/.github/workflows/deployment-pr-cleanup.yml @@ -13,7 +13,7 @@ jobs: to-uninstall: ${{ steps.to-uninstall.outputs.list }} never-uninstall: ${{ steps.to-uninstall.outputs.never_uninstall }} steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - name: Find all open PRs that have a "deploy!" label id: deployment-candidates diff --git a/.github/workflows/reusable-api-performance-test.yml b/.github/workflows/reusable-api-performance-test.yml index 8c259c5612..d7645d4820 100644 --- a/.github/workflows/reusable-api-performance-test.yml +++ b/.github/workflows/reusable-api-performance-test.yml @@ -28,11 +28,11 @@ jobs: --memory 1G steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - uses: shivammathur/setup-php@v2 with: - php-version: '8.3.6' + php-version: '8.3.7' extensions: intl-73.1 tools: composer:2.7.0 coverage: pcov @@ -68,3 +68,5 @@ jobs: - run: composer performance_test working-directory: api + env: + PERFORMANCE_TEST_DEBUG_OUTPUT: ${{ vars.PERFORMANCE_TEST_DEBUG_OUTPUT }} diff --git a/.github/workflows/reusable-build-and-push.yml b/.github/workflows/reusable-build-and-push.yml index 94fad2b106..8be97e5450 100644 --- a/.github/workflows/reusable-build-and-push.yml +++ b/.github/workflows/reusable-build-and-push.yml @@ -22,7 +22,7 @@ jobs: name: Build images and push runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 with: ref: ${{ inputs.sha }} @@ -36,7 +36,7 @@ jobs: password: ${{ secrets.DOCKER_HUB_PASSWORD }} - name: Build and push frontend docker image - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: push: true file: .docker-hub/frontend/Dockerfile @@ -53,33 +53,20 @@ jobs: cache-to: type=gha,scope=frontend,mode=max - name: Build and push api docker image - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: push: true file: api/Dockerfile tags: | - ${{ ((inputs.tag != '') && format('{0}/ecamp3-api-php:{1}', vars.DOCKER_HUB_USERNAME, inputs.tag) || '') }} - ${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-api-php:${{ inputs.sha }} + ${{ ((inputs.tag != '') && format('{0}/ecamp3-api:{1}', vars.DOCKER_HUB_USERNAME, inputs.tag) || '') }} + ${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-api:${{ inputs.sha }} context: './api' - target: api_platform_php + target: frankenphp_prod cache-from: type=gha,scope=api cache-to: type=gha,scope=api,mode=max - - name: Build and push caddy docker image - uses: docker/build-push-action@v5 - with: - push: true - file: api/Dockerfile - tags: | - ${{ ((inputs.tag != '') && format('{0}/ecamp3-api-caddy:{1}', vars.DOCKER_HUB_USERNAME, inputs.tag) || '') }} - ${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-api-caddy:${{ inputs.sha }} - context: './api' - target: api_platform_caddy_prod - cache-from: type=gha,scope=caddy - cache-to: type=gha,scope=caddy,mode=max - - name: Build and push print docker image - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: push: true file: .docker-hub/print/Dockerfile @@ -95,8 +82,20 @@ jobs: cache-from: type=gha,scope=print cache-to: type=gha,scope=print,mode=max + - name: Build and push varnish docker image + uses: docker/build-push-action@v6 + with: + push: true + file: .docker-hub/varnish/Dockerfile + tags: | + ${{ ((inputs.tag != '') && format('{0}/ecamp3-varnish:{1}', vars.DOCKER_HUB_USERNAME, inputs.tag) || '') }} + ${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-varnish:${{ inputs.sha }} + context: . + cache-from: type=gha,scope=varnish + cache-to: type=gha,scope=varnish,mode=max + - name: Build and push db-backup-restore docker image - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: push: true file: .helm/ecamp3/files/db-backup-restore-image/Dockerfile diff --git a/.github/workflows/reusable-dev-deployment.yml b/.github/workflows/reusable-dev-deployment.yml index dae4bac4a5..2f222465b8 100644 --- a/.github/workflows/reusable-dev-deployment.yml +++ b/.github/workflows/reusable-dev-deployment.yml @@ -32,7 +32,7 @@ jobs: name: ${{ inputs.env }} steps: - name: Get link to currently running job logs - uses: Tiryoh/gha-jobid-action@v1.2.0 + uses: Tiryoh/gha-jobid-action@v1.3.0 id: job-url with: github_token: ${{ secrets.GITHUB_TOKEN }} @@ -61,7 +61,7 @@ jobs: | Latest deploy log | [${{ steps.job-url.outputs.html_url }}](${{ steps.job-url.outputs.html_url }}) | comment_tag: feature-branch-deployment-status - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 with: ref: ${{ inputs.sha }} @@ -83,8 +83,8 @@ jobs: --set imageTag=${{ inputs.sha }} \ --set frontend.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-frontend' \ --set print.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-print' \ - --set php.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-api-php' \ - --set caddy.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-api-caddy' \ + --set api.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-api' \ + --set apiCache.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-varnish' \ --set postgresql.dbBackupRestoreImage.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-db-backup-restore' \ --set termsOfServiceLinkTemplate='https://ecamp3.ch/{lang}/tos' \ --set newsLink='https://ecamp3.ch/blog' \ @@ -93,6 +93,7 @@ jobs: --set ingress.basicAuth.enabled=${{ vars.BASIC_AUTH_ENABLED || false }} \ --set ingress.basicAuth.username=${{ secrets.BASIC_AUTH_USERNAME }} \ --set ingress.basicAuth.password='${{ secrets.BASIC_AUTH_PASSWORD }}' \ + --set apiCache.enabled=${{ vars.API_CACHE_ENABLED || false }} \ --set mail.dummyEnabled=true \ --set postgresql.url='${{ secrets.POSTGRES_URL }}/ecamp3${{ inputs.name }}?sslmode=require' \ --set postgresql.adminUrl='${{ secrets.POSTGRES_ADMIN_URL }}/ecamp3${{ inputs.name }}?sslmode=require' \ @@ -110,12 +111,12 @@ jobs: --set postgresql.restore.s3.accessKeyId='${{ secrets.RESTORE_S3_ACCESS_KEY_ID }}' \ --set postgresql.restore.s3.accessKey='${{ secrets.RESTORE_S3_ACCESS_KEY }}' \ --set postgresql.restore.encryptionKey=${{ secrets.RESTORE_ENCRYPTION_KEY != null && format('''{0}''', secrets.RESTORE_ENCRYPTION_KEY) || null }} \ - --set php.dataMigrationsDir='${{ vars.DATA_MIGRATIONS_DIR }}' \ - --set php.appSecret='${{ secrets.API_APP_SECRET }}' \ - --set php.sentryDsn='${{ secrets.API_SENTRY_DSN }}' \ - --set php.jwt.passphrase='${{ secrets.JWT_PASSPHRASE }}' \ - --set php.jwt.publicKey='${{ secrets.JWT_PUBLIC_KEY }}' \ - --set php.jwt.privateKey='${{ secrets.JWT_PRIVATE_KEY }}' \ + --set api.dataMigrationsDir='${{ vars.DATA_MIGRATIONS_DIR }}' \ + --set api.appSecret='${{ secrets.API_APP_SECRET }}' \ + --set api.sentryDsn='${{ secrets.API_SENTRY_DSN }}' \ + --set api.jwt.passphrase='${{ secrets.JWT_PASSPHRASE }}' \ + --set api.jwt.publicKey='${{ secrets.JWT_PUBLIC_KEY }}' \ + --set api.jwt.privateKey='${{ secrets.JWT_PRIVATE_KEY }}' \ --set frontend.sentryDsn='${{ secrets.FRONTEND_SENTRY_DSN }}' \ --set print.sentryDsn='${{ secrets.PRINT_SENTRY_DSN }}' \ --set print.browserWsEndpoint='${{ secrets.BROWSER_WS_ENDPOINT }}' \ diff --git a/.github/workflows/reusable-e2e-tests-build.yml b/.github/workflows/reusable-e2e-tests-build.yml index e20f0ec3c1..e1e1450d59 100644 --- a/.github/workflows/reusable-e2e-tests-build.yml +++ b/.github/workflows/reusable-e2e-tests-build.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 20 steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - name: Set up Docker Buildx id: buildx @@ -17,33 +17,18 @@ jobs: # build API (using cache; provide image to docker compose) - name: Build docker image (API/PHP) - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: file: api/Dockerfile context: './api' push: false load: true - target: api_platform_php_dev + target: frankenphp_dev builder: ${{ steps.buildx.outputs.name }} - tags: ecamp/ecamp3-dev-api-php + tags: ecamp/ecamp3-dev-api cache-from: type=gha,scope=api cache-to: type=gha,scope=api,mode=max - outputs: type=docker,dest=/tmp/ecamp3-dev-api-php.tar - - # build caddy (using cache; provide image to docker compose) - - name: Build docker image (Caddy) - uses: docker/build-push-action@v5 - with: - file: api/Dockerfile - context: './api' - push: false - load: true - target: api_platform_caddy - builder: ${{ steps.buildx.outputs.name }} - tags: ecamp/ecamp3-dev-api-caddy - cache-from: type=gha,scope=caddy - cache-to: type=gha,scope=caddy,mode=max - outputs: type=docker,dest=/tmp/ecamp3-dev-api-caddy.tar + outputs: type=docker,dest=/tmp/ecamp3-dev-api.tar - uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/reusable-e2e-tests-run.yml b/.github/workflows/reusable-e2e-tests-run.yml index 378acb4910..b33e61fc81 100644 --- a/.github/workflows/reusable-e2e-tests-run.yml +++ b/.github/workflows/reusable-e2e-tests-run.yml @@ -12,6 +12,8 @@ jobs: name: 'Tests: End-to-end' runs-on: ubuntu-latest timeout-minutes: 20 + env: + DB_CPU_LIMIT: 4 strategy: fail-fast: false matrix: @@ -20,7 +22,7 @@ jobs: - firefox - edge steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - run: cp .env.ci .env @@ -36,8 +38,7 @@ jobs: - name: Load images run: | - docker load --input /tmp/ecamp3-dev-api-php.tar - docker load --input /tmp/ecamp3-dev-api-caddy.tar + docker load --input /tmp/ecamp3-dev-api.tar docker image ls -a --digests - name: Restore cache volumes (npm, composer) @@ -49,9 +50,9 @@ jobs: docker-compose- # start necessary containers - - run: docker compose up -d php caddy frontend pdf print browserless database docker-host + - run: docker compose up -d api frontend pdf print browserless database docker-host http-cache mail - - uses: cypress-io/github-action@v5 + - uses: cypress-io/github-action@v6.7.1 with: working-directory: e2e browser: ${{ matrix.browser }} diff --git a/.github/workflows/reusable-stage-prod-deployment.yml b/.github/workflows/reusable-stage-prod-deployment.yml index fa2bf65cca..452e0f9b9a 100644 --- a/.github/workflows/reusable-stage-prod-deployment.yml +++ b/.github/workflows/reusable-stage-prod-deployment.yml @@ -16,7 +16,7 @@ jobs: environment: ${{ github.ref_name }} domain: ${{ vars.SUBDOMAIN }}.${{ vars.DOMAIN }} steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - name: Create a pending GitHub deployment uses: bobheadxi/deployments@v1.5.0 @@ -42,8 +42,8 @@ jobs: --set imageTag=${{ github.sha }} \ --set frontend.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-frontend' \ --set print.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-print' \ - --set php.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-api-php' \ - --set caddy.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-api-caddy' \ + --set api.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-api' \ + --set apiCache.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-varnish' \ --set postgresql.dbBackupRestoreImage.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-db-backup-restore' \ --set termsOfServiceLinkTemplate='https://ecamp3.ch/{lang}/tos' \ --set newsLink='https://ecamp3.ch/blog' \ @@ -52,6 +52,7 @@ jobs: --set ingress.basicAuth.enabled=${{ vars.BASIC_AUTH_ENABLED || false }} \ --set ingress.basicAuth.username=${{ secrets.BASIC_AUTH_USERNAME }} \ --set ingress.basicAuth.password='${{ secrets.BASIC_AUTH_PASSWORD }}' \ + --set apiCache.enabled=${{ vars.API_CACHE_ENABLED || false }} \ --set mail.dsn=${{ secrets.MAILER_DSN }} \ --set postgresql.url='${{ secrets.POSTGRES_URL }}/${{ secrets.DB_NAME }}?sslmode=require' \ --set postgresql.dropDBOnUninstall=false \ @@ -69,23 +70,23 @@ jobs: --set postgresql.restore.s3.accessKey='${{ secrets.RESTORE_S3_ACCESS_KEY }}' \ --set postgresql.restore.encryptionKey=${{ secrets.RESTORE_ENCRYPTION_KEY != null && format('''{0}''', secrets.RESTORE_ENCRYPTION_KEY) || null }} \ --set postgresql.restore.inviteSupportAccountToInterestingCamps=${{ vars.RESTORE_INVITE_TO_INTERESTING_CAMPS != null && format('''{0}''', vars.RESTORE_INVITE_TO_INTERESTING_CAMPS) || false }} \ - --set php.dataMigrationsDir='${{ vars.DATA_MIGRATIONS_DIR }}' \ - --set php.appSecret='${{ secrets.API_APP_SECRET }}' \ - --set php.sentryDsn='${{ secrets.API_SENTRY_DSN }}' \ - --set php.jwt.passphrase='${{ secrets.JWT_PASSPHRASE }}' \ - --set php.jwt.publicKey='${{ secrets.JWT_PUBLIC_KEY }}' \ - --set php.jwt.privateKey='${{ secrets.JWT_PRIVATE_KEY }}' \ - --set php.oauth.google.clientId='${{ secrets.OAUTH_GOOGLE_CLIENT_ID }}' \ - --set php.oauth.google.clientSecret='${{ secrets.OAUTH_GOOGLE_CLIENT_SECRET }}' \ - --set php.oauth.pbsmidata.clientId='${{ secrets.OAUTH_PBSMIDATA_CLIENT_ID }}' \ - --set php.oauth.pbsmidata.clientSecret='${{ secrets.OAUTH_PBSMIDATA_CLIENT_SECRET }}' \ - --set php.oauth.pbsmidata.baseUrl='${{ secrets.OAUTH_PBSMIDATA_BASE_URL }}' \ - --set php.oauth.cevidb.clientId='${{ secrets.OAUTH_CEVIDB_CLIENT_ID }}' \ - --set php.oauth.cevidb.clientSecret='${{ secrets.OAUTH_CEVIDB_CLIENT_SECRET }}' \ - --set php.oauth.cevidb.baseUrl='${{ secrets.OAUTH_CEVIDB_BASE_URL }}' \ - --set php.oauth.jubladb.clientId='${{ secrets.OAUTH_JUBLADB_CLIENT_ID }}' \ - --set php.oauth.jubladb.clientSecret='${{ secrets.OAUTH_JUBLADB_CLIENT_SECRET }}' \ - --set php.oauth.jubladb.baseUrl='${{ secrets.OAUTH_JUBLADB_BASE_URL }}' \ + --set api.dataMigrationsDir='${{ vars.DATA_MIGRATIONS_DIR }}' \ + --set api.appSecret='${{ secrets.API_APP_SECRET }}' \ + --set api.sentryDsn='${{ secrets.API_SENTRY_DSN }}' \ + --set api.jwt.passphrase='${{ secrets.JWT_PASSPHRASE }}' \ + --set api.jwt.publicKey='${{ secrets.JWT_PUBLIC_KEY }}' \ + --set api.jwt.privateKey='${{ secrets.JWT_PRIVATE_KEY }}' \ + --set api.oauth.google.clientId='${{ secrets.OAUTH_GOOGLE_CLIENT_ID }}' \ + --set api.oauth.google.clientSecret='${{ secrets.OAUTH_GOOGLE_CLIENT_SECRET }}' \ + --set api.oauth.pbsmidata.clientId='${{ secrets.OAUTH_PBSMIDATA_CLIENT_ID }}' \ + --set api.oauth.pbsmidata.clientSecret='${{ secrets.OAUTH_PBSMIDATA_CLIENT_SECRET }}' \ + --set api.oauth.pbsmidata.baseUrl='${{ secrets.OAUTH_PBSMIDATA_BASE_URL }}' \ + --set api.oauth.cevidb.clientId='${{ secrets.OAUTH_CEVIDB_CLIENT_ID }}' \ + --set api.oauth.cevidb.clientSecret='${{ secrets.OAUTH_CEVIDB_CLIENT_SECRET }}' \ + --set api.oauth.cevidb.baseUrl='${{ secrets.OAUTH_CEVIDB_BASE_URL }}' \ + --set api.oauth.jubladb.clientId='${{ secrets.OAUTH_JUBLADB_CLIENT_ID }}' \ + --set api.oauth.jubladb.clientSecret='${{ secrets.OAUTH_JUBLADB_CLIENT_SECRET }}' \ + --set api.oauth.jubladb.baseUrl='${{ secrets.OAUTH_JUBLADB_BASE_URL }}' \ --set frontend.sentryDsn='${{ secrets.FRONTEND_SENTRY_DSN }}' \ --set print.sentryDsn='${{ secrets.PRINT_SENTRY_DSN }}' \ --set print.ingress.readTimeoutSeconds='${{ vars.PRINT_INGRESS_READ_TIMEOUT_SECONDS }}' \ @@ -101,11 +102,9 @@ jobs: --set browserless.connectionTimeout=${{ vars.BROWSERLESS_CONNECTION_TIMEOUT_MS || '30000' }} \ --set browserless.resources.requests.cpu=${{ vars.BROWSERLESS_CPU || '500m' }} \ --set browserless.resources.requests.memory=${{ vars.BROWSERLESS_MEMORY || '800Mi' }} \ - --set caddy.resources.requests.cpu=50m \ - --set caddy.resources.limits.cpu=500m \ - --set php.resources.requests.cpu=${{ vars.PHP_CPU || '1000m' }} \ - --set php.resources.requests.memory=${{ vars.PHP_MEMORY || '500Mi' }} \ - --set php.resources.limits.cpu=${{ vars.PHP_CPULIMIT || '1900m' }} \ + --set api.resources.requests.cpu=${{ vars.PHP_CPU || '1000m' }} \ + --set api.resources.requests.memory=${{ vars.PHP_MEMORY || '500Mi' }} \ + --set api.resources.limits.cpu=${{ vars.PHP_CPULIMIT || '1900m' }} \ --set frontend.resources.requests.cpu=50m \ --set print.resources.requests.cpu=${{ vars.PRINT_CPU || '300m' }} \ --set print.resources.requests.memory=${{ vars.PRINT_MEMORY || '150Mi' }} \ diff --git a/.helm/.env-example b/.helm/.env-example index 0d8077eee5..31e831ba5b 100644 --- a/.helm/.env-example +++ b/.helm/.env-example @@ -5,6 +5,8 @@ domain=ecamp3.ch POSTGRES_URL= POSTGRES_ADMIN_URL= +API_CACHE_ENABLED=false + BASIC_AUTH_ENABLED=false BASIC_AUTH_USERNAME=test BASIC_AUTH_PASSWORD=test diff --git a/.helm/build-images.sh b/.helm/build-images.sh index 6ff76fb40b..acad4b3fcc 100755 --- a/.helm/build-images.sh +++ b/.helm/build-images.sh @@ -25,20 +25,20 @@ frontend_image_tag="${docker_hub_account}/ecamp3-frontend:${version}" docker build "$REPO_DIR" -f "$REPO_DIR"/.docker-hub/frontend/Dockerfile $frontend_sentry_build_args -t "$frontend_image_tag" docker push "$frontend_image_tag" -api_image_tag="${docker_hub_account}/ecamp3-api-php:${version}" -docker build "$REPO_DIR"/api -f "$REPO_DIR"/api/Dockerfile -t "$api_image_tag" --target api_platform_php $sentry_build_args +api_image_tag="${docker_hub_account}/ecamp3-api:${version}" +docker build "$REPO_DIR"/api -f "$REPO_DIR"/api/Dockerfile -t "$api_image_tag" --target frankenphp_prod $sentry_build_args docker push "$api_image_tag" -caddy_image_tag="${docker_hub_account}/ecamp3-api-caddy:${version}" -docker build "$REPO_DIR"/api -f "$REPO_DIR"/api/Dockerfile -t "$caddy_image_tag" --target api_platform_caddy_prod -docker push "$caddy_image_tag" - print_sentry_build_args="$sentry_build_args --build-arg SENTRY_PRINT_PROJECT=$SENTRY_PRINT_PROJECT" print_image_tag="${docker_hub_account}/ecamp3-print:${version}" docker build "$REPO_DIR" -f "$REPO_DIR"/.docker-hub/print/Dockerfile $print_sentry_build_args -t "$print_image_tag" docker push "$print_image_tag" +varnish_image_tag="${docker_hub_account}/ecamp3-varnish:${version}" +docker build "$REPO_DIR" -f "$REPO_DIR"/.docker-hub/varnish/Dockerfile -t "$varnish_image_tag" +docker push "$varnish_image_tag" + export REPO_OWNER=${docker_hub_account} export VERSION=${version} db_backup_restore_docker_compose_path="$REPO_DIR"/.helm/ecamp3/files/db-backup-restore-image/docker-compose.yml diff --git a/.helm/deploy-to-cluster.sh b/.helm/deploy-to-cluster.sh index 9e2683457e..fcf7c17def 100755 --- a/.helm/deploy-to-cluster.sh +++ b/.helm/deploy-to-cluster.sh @@ -42,14 +42,15 @@ for i in 1; do values="$values --set ingress.basicAuth.enabled=$BASIC_AUTH_ENABLED" values="$values --set ingress.basicAuth.username=$BASIC_AUTH_USERNAME" values="$values --set ingress.basicAuth.password=$BASIC_AUTH_PASSWORD" + values="$values --set apiCache.enabled=$API_CACHE_ENABLED" values="$values --set postgresql.enabled=false" values="$values --set postgresql.url=$POSTGRES_URL/ecamp3$instance_name-"$i"?sslmode=require" values="$values --set postgresql.adminUrl=$POSTGRES_ADMIN_URL/ecamp3$instance_name-"$i"?sslmode=require" values="$values --set postgresql.dropDBOnUninstall=true" - values="$values --set php.dataMigrationsDir=$migrations_dir" - values="$values --set php.appSecret=$app_secret" + values="$values --set api.dataMigrationsDir=$migrations_dir" + values="$values --set api.appSecret=$app_secret" if [ -n "$API_SENTRY_DSN" ]; then - values="$values --set php.sentryDsn=$API_SENTRY_DSN" + values="$values --set api.sentryDsn=$API_SENTRY_DSN" fi if [ -n "$FRONTEND_SENTRY_DSN" ]; then values="$values --set frontend.sentryDsn=$FRONTEND_SENTRY_DSN" @@ -57,9 +58,9 @@ for i in 1; do if [ -n "$PRINT_SENTRY_DSN" ]; then values="$values --set print.sentryDsn=$PRINT_SENTRY_DSN" fi - values="$values --set php.jwt.passphrase=$app_jwt_passphrase" - values="$values --set-file php.jwt.publicKey=$SCRIPT_DIR/public.pem" - values="$values --set-file php.jwt.privateKey=$SCRIPT_DIR/private.pem" + values="$values --set api.jwt.passphrase=$app_jwt_passphrase" + values="$values --set-file api.jwt.publicKey=$SCRIPT_DIR/public.pem" + values="$values --set-file api.jwt.privateKey=$SCRIPT_DIR/private.pem" values="$values --set deploymentTime=$(date -u +%s)" values="$values --set deployedVersion=\"$(git rev-parse --short HEAD)\"" values="$values --set featureToggle.developer=true" @@ -88,15 +89,12 @@ for i in 1; do values="$values --set postgresql.restore.inviteSupportAccountToInterestingCamps=$RESTORE_INVITE_TO_INTERESTING_CAMPS" fi - for imagespec in "frontend" "print"; do + for imagespec in "frontend" "print" "api"; do values="$values --set $imagespec.image.pullPolicy=$pull_policy" values="$values --set $imagespec.image.repository=docker.io/${docker_hub_account}/ecamp3-$imagespec" done - for imagespec in "php" "caddy"; do - values="$values --set $imagespec.image.pullPolicy=$pull_policy" - values="$values --set $imagespec.image.repository=docker.io/${docker_hub_account}/ecamp3-api-$imagespec" - done + values="$values --set apiCache.image.repository=docker.io/${docker_hub_account}/ecamp3-varnish" values="$values --set postgresql.dbBackupRestoreImage.pullPolicy=$pull_policy" values="$values --set postgresql.dbBackupRestoreImage.repository=docker.io/${docker_hub_account}/ecamp3-db-backup-restore" diff --git a/.helm/ecamp3/files/db-backup-restore-image/Dockerfile b/.helm/ecamp3/files/db-backup-restore-image/Dockerfile index 745075f94a..4fbb47fdbf 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.5-slim +FROM debian:12.6-slim ENV DEBIAN_FRONTEND="noninteractive" RUN apt-get update && \ diff --git a/.helm/ecamp3/files/db-backup-restore-image/docker-compose.yml b/.helm/ecamp3/files/db-backup-restore-image/docker-compose.yml index 49763aabd7..6dbfb14d41 100644 --- a/.helm/ecamp3/files/db-backup-restore-image/docker-compose.yml +++ b/.helm/ecamp3/files/db-backup-restore-image/docker-compose.yml @@ -1,5 +1,3 @@ -version: '3.9' - services: db-backup-restore-image: image: ${CONTAINER_REGISTRY:-docker.io}/${REPO_OWNER:-ecamp}/ecamp3-db-backup-restore:${VERSION:-local} diff --git a/.helm/ecamp3/files/db_backup_job/docker-compose.yml b/.helm/ecamp3/files/db_backup_job/docker-compose.yml index a01796896b..c00ab3c4c3 100644 --- a/.helm/ecamp3/files/db_backup_job/docker-compose.yml +++ b/.helm/ecamp3/files/db_backup_job/docker-compose.yml @@ -1,4 +1,3 @@ -version: '3.9' services: create-backup: build: diff --git a/.helm/ecamp3/files/hook_db_restore/docker-compose.yml b/.helm/ecamp3/files/hook_db_restore/docker-compose.yml index cc924211ae..4c414f4a1b 100644 --- a/.helm/ecamp3/files/hook_db_restore/docker-compose.yml +++ b/.helm/ecamp3/files/hook_db_restore/docker-compose.yml @@ -1,4 +1,3 @@ -version: '3.9' services: restore-backup: build: diff --git a/.helm/ecamp3/files/vcl b/.helm/ecamp3/files/vcl new file mode 120000 index 0000000000..e036f3976d --- /dev/null +++ b/.helm/ecamp3/files/vcl @@ -0,0 +1 @@ +../../../api/docker/varnish/vcl \ No newline at end of file diff --git a/.helm/ecamp3/templates/_helpers.tpl b/.helm/ecamp3/templates/_helpers.tpl index c61fbfd962..ecb73edadc 100644 --- a/.helm/ecamp3/templates/_helpers.tpl +++ b/.helm/ecamp3/templates/_helpers.tpl @@ -82,6 +82,19 @@ We truncate at 63 chars because some Kubernetes name fields are limited to this {{- end }} {{- end }} +{{/* +Name for all HTTP cache-related resources. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "apiCache.name" -}} +{{- $name := default .Chart.Name .Values.chartNameOverride }} +{{- if contains $name (include "app.name" .) }} +{{- printf "%s-api-cache" (include "app.name" .) | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s-api-cache" (include "app.name" .) $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} + {{/* Name for all db_backup_job releated resources. We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). @@ -227,6 +240,14 @@ app.kubernetes.io/name: {{ include "chart.name" . }}-browserless {{ include "app.commonSelectorLabels" . }} {{- end }} +{{/* +Selector labels for HTTP Cache +*/}} +{{- define "apiCache.selectorLabels" -}} +app.kubernetes.io/name: {{ include "chart.name" . }}-api-cache +{{ include "app.commonSelectorLabels" . }} +{{- end }} + {{/* Selector labels for db-backup-job */}} diff --git a/.helm/ecamp3/templates/api_cache_deployment.yaml b/.helm/ecamp3/templates/api_cache_deployment.yaml new file mode 100644 index 0000000000..4fc2a179b2 --- /dev/null +++ b/.helm/ecamp3/templates/api_cache_deployment.yaml @@ -0,0 +1,116 @@ +{{- if .Values.apiCache.enabled }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "apiCache.name" . }} + labels: + {{- include "apiCache.selectorLabels" . | nindent 4 }} + {{- include "app.commonLabels" . | nindent 4 }} +spec: + replicas: 1 + selector: + matchLabels: + {{- include "apiCache.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "apiCache.selectorLabels" . | nindent 8 }} + annotations: + checksum/vclConfigmap: {{ include (print $.Template.BasePath "/api_cache_vcl_configmap.yaml") . | sha256sum }} + rollme: {{ .Values.imageTag | quote }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "app.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + enableServiceLinks: false + containers: + - name: {{ .Chart.Name }}-api-cache-varnishd + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.apiCache.image.repository }}:{{ .Values.apiCache.image.tag | default .Values.imageTag }}" + imagePullPolicy: {{ .Values.apiCache.image.pullPolicy }} + ports: + - name: http + containerPort: {{ .Values.apiCache.varnishHttpPort }} + protocol: TCP + - name: purge + containerPort: {{ .Values.apiCache.varnishPurgePort }} + protocol: TCP + env: + - name: VARNISH_SIZE + value: "{{ .Values.apiCache.varnishSize }}" + - name: VARNISH_HTTP_PORT + value: "{{ .Values.apiCache.varnishHttpPort }}" + - name: COOKIE_PREFIX + value: {{ include "api.cookiePrefix" . | quote }} + args: + - -a + - {{ printf ":%d,HTTP" (.Values.apiCache.varnishPurgePort | int) }} + - -p + - http_max_hdr=96 + resources: + {{- toYaml .Values.apiCache.resources | nindent 12 }} + volumeMounts: + - name: vcl-configmap + mountPath: /etc/varnish + - name: vsm + mountPath: /var/lib/varnish + {{- if .Values.apiCache.logging.enabled }} + - name: {{ .Chart.Name }}-api-cache-varnishncsa + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.apiCache.image.repository }}:{{ .Values.apiCache.image.tag | default .Values.imageTag }}" + imagePullPolicy: {{ .Values.apiCache.image.pullPolicy }} + command: + - varnishncsa + - -b + - -c + {{- if .Values.apiCache.logging.customOutputJsonFormat }} + - -j + {{- end }} + {{- if .Values.apiCache.logging.customOutput }} + - -F + - {{ .Values.apiCache.logging.customOutput | squote }} + {{- end }} + - -t + - {{ .Values.apiCache.logging.timeout | quote }} + resources: + {{- toYaml .Values.apiCache.logging.resources | nindent 12 }} + volumeMounts: + - name: vsm + mountPath: /var/lib/varnish + {{- end }} + {{- if .Values.apiCache.prometheus.enabled }} + - name: {{ .Chart.Name }}-api-cache-prometheus-exporter + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.apiCache.image.repository }}:{{ .Values.apiCache.image.tag | default .Values.imageTag }}" + imagePullPolicy: {{ .Values.apiCache.image.pullPolicy }} + ports: + - name: metrics + containerPort: {{ .Values.apiCache.prometheus.port }} + protocol: TCP + resources: + {{- toYaml .Values.apiCache.prometheus.resources | nindent 12 }} + command: + - prometheus-varnish-exporter + - -web.telemetry-path + - "{{ .Values.apiCache.prometheus.path }}" + - -web.listen-address + - ":{{ .Values.apiCache.prometheus.port }}" + volumeMounts: + - name: vsm + mountPath: /var/lib/varnish + {{- end }} + volumes: + - name: vcl-configmap + configMap: + name: {{ include "apiCache.name" . }}-vcl-configmap + - name: vsm + emptyDir: + medium: Memory +{{- end }} \ No newline at end of file diff --git a/.helm/ecamp3/templates/api_cache_service.yaml b/.helm/ecamp3/templates/api_cache_service.yaml new file mode 100644 index 0000000000..fa9d92b0e5 --- /dev/null +++ b/.helm/ecamp3/templates/api_cache_service.yaml @@ -0,0 +1,26 @@ +{{- if .Values.apiCache.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "apiCache.name" . }} + labels: + {{- include "apiCache.selectorLabels" . | nindent 4 }} + {{- include "app.commonLabels" . | nindent 4 }} +spec: + type: {{ .Values.apiCache.service.type }} + ports: + - port: {{ .Values.apiCache.service.ports.http }} + targetPort: http + protocol: TCP + name: http + - port: {{ .Values.apiCache.service.ports.purge }} + targetPort: purge + protocol: TCP + name: purge + - port: {{ .Values.apiCache.prometheus.port }} + targetPort: metrics + protocol: TCP + name: metrics + selector: + {{- include "apiCache.selectorLabels" . | nindent 4 }} +{{- end }} \ No newline at end of file diff --git a/.helm/ecamp3/templates/api_cache_vcl_configmap.yaml b/.helm/ecamp3/templates/api_cache_vcl_configmap.yaml new file mode 100644 index 0000000000..17c6c64078 --- /dev/null +++ b/.helm/ecamp3/templates/api_cache_vcl_configmap.yaml @@ -0,0 +1,18 @@ +{{- if .Values.apiCache.enabled }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "apiCache.name" . }}-vcl-configmap + labels: + {{- include "apiCache.selectorLabels" . | nindent 4 }} + {{- include "app.commonLabels" . | nindent 4 }} +data: +# includes all files except the ones starting with _ +{{ (.Files.Glob "files/vcl/[!_]*").AsConfig | indent 2 }} + # override backend config + _config.vcl: |- + backend default { + .host = "{{ include "api.name" .}}"; + .port = "{{ .Values.api.service.port }}"; + } +{{- end }} \ No newline at end of file diff --git a/.helm/ecamp3/templates/api_configmap.yaml b/.helm/ecamp3/templates/api_configmap.yaml index a719502da9..f8bcb88ec1 100644 --- a/.helm/ecamp3/templates/api_configmap.yaml +++ b/.helm/ecamp3/templates/api_configmap.yaml @@ -8,17 +8,24 @@ metadata: data: ADDITIONAL_TRUSTED_HOSTS: {{ .Values.domain | quote }} COOKIE_PREFIX: {{ include "api.cookiePrefix" . | quote }} - APP_ENV: {{ .Values.php.appEnv | quote }} - APP_DEBUG: {{ .Values.php.appDebug | quote }} - {{- if .Values.php.dataMigrationsDir }} - DATA_MIGRATIONS_DIR: {{ .Values.php.dataMigrationsDir | quote }} + APP_ENV: {{ .Values.api.appEnv | quote }} + APP_DEBUG: {{ .Values.api.appDebug | quote }} + {{- if .Values.api.dataMigrationsDir }} + DATA_MIGRATIONS_DIR: {{ .Values.api.dataMigrationsDir | quote }} {{- end }} CORS_ALLOW_ORIGIN: {{ include "frontend.url" . | quote }} - TRUSTED_PROXIES: "{{ join "," .Values.php.trustedProxies }}" - {{- if .Values.php.sentryDsn }} - SENTRY_API_DSN: {{ .Values.php.sentryDsn | quote }} + TRUSTED_PROXIES: "{{ join "," .Values.api.trustedProxies }}" + {{- if .Values.api.sentryDsn }} + SENTRY_API_DSN: {{ .Values.api.sentryDsn | quote }} SENTRY_ENVIRONMENT: {{ .Values.domain | quote }} {{- else }} SENTRY_API_DSN: {{ "" | quote }} {{- end }} FRONTEND_BASE_URL: {{ include "frontend.url" . | quote }} + CADDY_GLOBAL_OPTIONS: {{ .Values.api.caddyGlobalOptions | quote }} + API_CACHE_ENABLED: {{ .Values.apiCache.enabled | quote }} + {{- if .Values.apiCache.enabled }} + VARNISH_API_URL: {{ printf "%s:%d" (include "apiCache.name" .) (.Values.apiCache.service.ports.purge | int) | quote }} + {{- else }} + VARNISH_API_URL: {{ "" | quote }} + {{- end}} diff --git a/.helm/ecamp3/templates/api_deployment.yaml b/.helm/ecamp3/templates/api_deployment.yaml index 58e74baa9a..f51ead4c90 100644 --- a/.helm/ecamp3/templates/api_deployment.yaml +++ b/.helm/ecamp3/templates/api_deployment.yaml @@ -31,53 +31,26 @@ spec: {{- toYaml .Values.podSecurityContext | nindent 8 }} enableServiceLinks: false containers: - - name: caddy + - name: {{ .Chart.Name }}-api + {{/* Define the api container as a template, so it can be reused in other places */}} + {{- define "api.container" }} securityContext: {{- toYaml .Values.securityContext | nindent 12 }} - image: "{{ .Values.caddy.image.repository }}:{{ .Values.caddy.image.tag | default .Values.imageTag }}" - imagePullPolicy: {{ .Values.caddy.image.pullPolicy }} - env: - - name: SERVER_NAME - value: :3001 + image: "{{ .Values.api.image.repository }}:{{ .Values.api.image.tag | default .Values.imageTag }}" + imagePullPolicy: {{ .Values.api.image.pullPolicy }} ports: - name: api-http containerPort: {{ .Values.api.service.port }} protocol: TCP - name: api-metrics containerPort: {{ .Values.api.metrics.port }} - protocol: TCP - volumeMounts: - - mountPath: /var/run/php - name: php-socket - lifecycle: - preStop: - exec: - command: ["curl", "-XPOST", "http://localhost:2019/stop"] - readinessProbe: - tcpSocket: - port: 3001 - initialDelaySeconds: 3 - periodSeconds: 10 - timeoutSeconds: 5 - livenessProbe: - tcpSocket: - port: 3001 - initialDelaySeconds: 3 - periodSeconds: 10 - timeoutSeconds: 5 - resources: - {{- toYaml .Values.caddy.resources | nindent 12 }} - - name: php - {{/* Define the php container as a template, so it can be reused in other places */}} - {{- define "api.phpContainer" }} - securityContext: - {{- toYaml .Values.securityContext | nindent 12 }} - image: "{{ .Values.php.image.repository }}:{{ .Values.php.image.tag | default .Values.imageTag }}" - imagePullPolicy: {{ .Values.php.image.pullPolicy }} + protocol: TCP envFrom: - configMapRef: name: {{ include "api.name" . }}-configmap env: + - name: SERVER_NAME + value: :3001 - name: APP_SECRET valueFrom: secretKeyRef: @@ -103,7 +76,7 @@ spec: secretKeyRef: name: {{ include "api.name" . }} key: recaptcha-secret - {{- if .Values.php.oauth.google.clientId }} + {{- if .Values.api.oauth.google.clientId }} - name: OAUTH_GOOGLE_CLIENT_ID valueFrom: secretKeyRef: @@ -115,7 +88,7 @@ spec: name: {{ include "api.name" . }} key: oauth-google-client-secret {{- end }} - {{- if .Values.php.oauth.pbsmidata.clientId }} + {{- if .Values.api.oauth.pbsmidata.clientId }} - name: OAUTH_PBSMIDATA_CLIENT_ID valueFrom: secretKeyRef: @@ -132,7 +105,7 @@ spec: name: {{ include "api.name" . }} key: oauth-pbsmidata-base-url {{- end }} - {{- if .Values.php.oauth.cevidb.clientId }} + {{- if .Values.api.oauth.cevidb.clientId }} - name: OAUTH_CEVIDB_CLIENT_ID valueFrom: secretKeyRef: @@ -149,7 +122,7 @@ spec: name: {{ include "api.name" . }} key: oauth-cevidb-base-url {{- end }} - {{- if .Values.php.oauth.jubladb.clientId }} + {{- if .Values.api.oauth.jubladb.clientId }} - name: OAUTH_JUBLADB_CLIENT_ID valueFrom: secretKeyRef: @@ -167,12 +140,10 @@ spec: key: oauth-jubladb-base-url {{- end }} volumeMounts: - - mountPath: /var/run/php - name: php-socket - - mountPath: /srv/api/config/jwt/public.pem + - mountPath: /app/config/jwt/public.pem name: jwt-keypair subPath: public.pem - - mountPath: /srv/api/config/jwt/private.pem + - mountPath: /app/config/jwt/private.pem name: jwt-keypair subPath: private.pem lifecycle: @@ -180,27 +151,25 @@ spec: exec: command: ["/bin/sh", "-c", "/bin/sleep 1; kill -QUIT 1"] {{- end }} - {{- template "api.phpContainer" . }} + {{- template "api.container" . }} resources: - {{- toYaml .Values.php.resources | nindent 12 }} + {{- toYaml .Values.api.resources | nindent 12 }} readinessProbe: - exec: - command: - - docker-healthcheck + tcpSocket: + port: 3001 periodSeconds: 10 timeoutSeconds: 5 livenessProbe: - exec: - command: - - docker-healthcheck + tcpSocket: + port: 3001 periodSeconds: 10 timeoutSeconds: 5 startupProbe: - exec: - command: - - docker-healthcheck - failureThreshold: 40 - periodSeconds: 3 + tcpSocket: + port: 3001 + failureThreshold: 10 + periodSeconds: 15 + timeoutSeconds: 10 volumes: - name: php-socket diff --git a/.helm/ecamp3/templates/api_ingress.yaml b/.helm/ecamp3/templates/api_ingress.yaml index b104b3f3d1..f3b98141a9 100644 --- a/.helm/ecamp3/templates/api_ingress.yaml +++ b/.helm/ecamp3/templates/api_ingress.yaml @@ -29,7 +29,13 @@ spec: pathType: Prefix backend: service: + {{- if .Values.apiCache.enabled }} + name: {{ include "apiCache.name" . }} + port: + number: {{ .Values.apiCache.service.ports.http }} + {{- else }} name: {{ include "api.name" . }} port: number: {{ .Values.api.service.port }} + {{- end }} {{- end }} diff --git a/.helm/ecamp3/templates/api_secrets.yaml b/.helm/ecamp3/templates/api_secrets.yaml index 2bf2d9b0e9..2d7615d10f 100644 --- a/.helm/ecamp3/templates/api_secrets.yaml +++ b/.helm/ecamp3/templates/api_secrets.yaml @@ -10,28 +10,28 @@ metadata: type: Opaque data: database-url: {{ $databaseUrl | b64enc | quote }} - php-app-secret: {{ .Values.php.appSecret | default (randAlphaNum 40) | b64enc | quote }} - php-jwt-passphrase: {{ .Values.php.jwt.passphrase | default (randAlphaNum 40) | b64enc | quote }} - jwt-public-key: {{ .Values.php.jwt.publicKey | default "" | b64enc | quote }} - jwt-private-key: {{ .Values.php.jwt.privateKey | default "" | b64enc | quote }} - {{- if .Values.php.oauth.google.clientId }} - oauth-google-client-id: {{ .Values.php.oauth.google.clientId | default "" | b64enc | quote }} - oauth-google-client-secret: {{ .Values.php.oauth.google.clientSecret | default "" | b64enc | quote }} + php-app-secret: {{ .Values.api.appSecret | default (randAlphaNum 40) | b64enc | quote }} + php-jwt-passphrase: {{ .Values.api.jwt.passphrase | default (randAlphaNum 40) | b64enc | quote }} + jwt-public-key: {{ .Values.api.jwt.publicKey | default "" | b64enc | quote }} + jwt-private-key: {{ .Values.api.jwt.privateKey | default "" | b64enc | quote }} + {{- if .Values.api.oauth.google.clientId }} + oauth-google-client-id: {{ .Values.api.oauth.google.clientId | default "" | b64enc | quote }} + oauth-google-client-secret: {{ .Values.api.oauth.google.clientSecret | default "" | b64enc | quote }} {{- end }} - {{- if .Values.php.oauth.pbsmidata.clientId }} - oauth-pbsmidata-client-id: {{ .Values.php.oauth.pbsmidata.clientId | default "" | b64enc | quote }} - oauth-pbsmidata-client-secret: {{ .Values.php.oauth.pbsmidata.clientSecret | default "" | b64enc | quote }} - oauth-pbsmidata-base-url: {{ .Values.php.oauth.pbsmidata.baseUrl | default "" | b64enc | quote }} + {{- if .Values.api.oauth.pbsmidata.clientId }} + oauth-pbsmidata-client-id: {{ .Values.api.oauth.pbsmidata.clientId | default "" | b64enc | quote }} + oauth-pbsmidata-client-secret: {{ .Values.api.oauth.pbsmidata.clientSecret | default "" | b64enc | quote }} + oauth-pbsmidata-base-url: {{ .Values.api.oauth.pbsmidata.baseUrl | default "" | b64enc | quote }} {{- end }} - {{- if .Values.php.oauth.cevidb.clientId }} - oauth-cevidb-client-id: {{ .Values.php.oauth.cevidb.clientId | default "" | b64enc | quote }} - oauth-cevidb-client-secret: {{ .Values.php.oauth.cevidb.clientSecret | default "" | b64enc | quote }} - oauth-cevidb-base-url: {{ .Values.php.oauth.cevidb.baseUrl | default "" | b64enc | quote }} + {{- if .Values.api.oauth.cevidb.clientId }} + oauth-cevidb-client-id: {{ .Values.api.oauth.cevidb.clientId | default "" | b64enc | quote }} + oauth-cevidb-client-secret: {{ .Values.api.oauth.cevidb.clientSecret | default "" | b64enc | quote }} + oauth-cevidb-base-url: {{ .Values.api.oauth.cevidb.baseUrl | default "" | b64enc | quote }} {{- end }} - {{- if .Values.php.oauth.jubladb.clientId }} - oauth-jubladb-client-id: {{ .Values.php.oauth.jubladb.clientId | default "" | b64enc | quote }} - oauth-jubladb-client-secret: {{ .Values.php.oauth.jubladb.clientSecret | default "" | b64enc | quote }} - oauth-jubladb-base-url: {{ .Values.php.oauth.jubladb.baseUrl | default "" | b64enc | quote }} + {{- if .Values.api.oauth.jubladb.clientId }} + oauth-jubladb-client-id: {{ .Values.api.oauth.jubladb.clientId | default "" | b64enc | quote }} + oauth-jubladb-client-secret: {{ .Values.api.oauth.jubladb.clientSecret | default "" | b64enc | quote }} + oauth-jubladb-base-url: {{ .Values.api.oauth.jubladb.baseUrl | default "" | b64enc | quote }} {{- end }} {{- if .Values.mail.dummyEnabled }} mailer-dsn: {{ .Values.mail.dsn | default (printf "smtp://%s:1025" (include "mail.name" .)) | b64enc | quote }} diff --git a/.helm/ecamp3/templates/hook_db_create.yaml b/.helm/ecamp3/templates/hook_db_create.yaml index 2476163fde..21ee0df1ff 100644 --- a/.helm/ecamp3/templates/hook_db_create.yaml +++ b/.helm/ecamp3/templates/hook_db_create.yaml @@ -23,7 +23,7 @@ spec: restartPolicy: Never containers: - name: db-create-job - image: "{{ .Values.php.image.repository }}:{{ .Values.php.image.tag | default .Values.imageTag }}" + image: "{{ .Values.api.image.repository }}:{{ .Values.api.image.tag | default .Values.imageTag }}" command: ["php", "bin/console", "doctrine:database:create", "--if-not-exists"] env: - name: DATABASE_URL diff --git a/.helm/ecamp3/templates/hook_db_drop.yaml b/.helm/ecamp3/templates/hook_db_drop.yaml index 61fe66531b..d7cb659a88 100644 --- a/.helm/ecamp3/templates/hook_db_drop.yaml +++ b/.helm/ecamp3/templates/hook_db_drop.yaml @@ -23,7 +23,7 @@ spec: restartPolicy: Never containers: - name: db-drop-job - image: "{{ .Values.php.image.repository }}:{{ .Values.php.image.tag | default .Values.imageTag }}" + image: "{{ .Values.api.image.repository }}:{{ .Values.api.image.tag | default .Values.imageTag }}" command: ["php", "bin/console", "doctrine:database:drop", "--if-exists", "-f"] env: - name: DATABASE_URL diff --git a/.helm/ecamp3/templates/hook_db_migrate.yaml b/.helm/ecamp3/templates/hook_db_migrate.yaml index 685ea6b10b..23e8696815 100644 --- a/.helm/ecamp3/templates/hook_db_migrate.yaml +++ b/.helm/ecamp3/templates/hook_db_migrate.yaml @@ -21,7 +21,7 @@ spec: restartPolicy: Never containers: - name: db-migrate-job - {{ template "api.phpContainer" . }} + {{ template "api.container" . }} command: ["migrate-database"] volumes: - name: php-socket diff --git a/.helm/ecamp3/templates/print_ingress.yaml b/.helm/ecamp3/templates/print_ingress.yaml index bbe663161d..334c283fd7 100644 --- a/.helm/ecamp3/templates/print_ingress.yaml +++ b/.helm/ecamp3/templates/print_ingress.yaml @@ -12,6 +12,7 @@ metadata: {{- end }} {{- include "ingress.basicAuth.annotations" . | nindent 4 }} {{- if not (.Values.print.ingress.readTimeoutSeconds | empty) }} + nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/proxy-read-timeout: {{ .Values.print.ingress.readTimeoutSeconds | quote }} {{- end }} spec: diff --git a/.helm/ecamp3/values.yaml b/.helm/ecamp3/values.yaml index 07d2650866..e60ab9fcb2 100644 --- a/.helm/ecamp3/values.yaml +++ b/.helm/ecamp3/values.yaml @@ -18,19 +18,17 @@ featureToggle: api: subpath: "/api" + image: + repository: "docker.io/ecamp/ecamp3-api" + pullPolicy: IfNotPresent + # Overrides the image tag whose shared default is .Values.imageTag + tag: service: type: ClusterIP port: 3001 metrics: port: 2019 replicaCount: 1 - -php: - image: - repository: "docker.io/ecamp/ecamp3-api-php" - pullPolicy: IfNotPresent - # Overrides the image tag whose shared default is .Values.imageTag - tag: appEnv: prod appDebug: "0" appSecret: "" @@ -41,6 +39,7 @@ php: - "10.0.0.0/8" - "172.16.0.0/12" - "192.168.0.0/16" + caddyGlobalOptions: "" sentryDsn: jwt: passphrase: @@ -67,17 +66,6 @@ php: cpu: 10m memory: 120Mi -caddy: - image: - repository: "docker.io/ecamp/ecamp3-api-caddy" - pullPolicy: IfNotPresent - # Overrides the image tag whose shared default is .Values.imageTag - tag: - resources: - requests: - cpu: 10m - memory: 20Mi - frontend: image: repository: "docker.io/ecamp/ecamp3-frontend" @@ -222,7 +210,48 @@ ingress: className: nginx tls: - +apiCache: + enabled: false + image: + repository: "docker.io/ecamp/ecamp3-varnish" + pullPolicy: IfNotPresent + # Overrides the image tag whose shared default is .Values.imageTag + tag: + service: + type: ClusterIP + ports: + http: 3000 + purge: 3001 + varnishSize: 50M + varnishHttpPort: 8080 + varnishPurgePort: 8081 + resources: + requests: + cpu: 10m + memory: 100Mi + logging: + enabled: true + customOutput: '{ "received_at": "%t", "varnish_side": "%{Varnish:side}x", "method": "%m", "url": "%U", "query": "%q", "response_bytes": %b, "time_taken": %D, "status": %s, "handling": "%{Varnish:handling}x", "response_reason": "%{VSL:RespReason}x", "fetch_error": "%{VSL:FetchError}x" }' + customOutputJsonFormat: true + # Timeout before returning error on initial VSM connection. + # If set the VSM connection is retried every 0.5 seconds for this many seconds. + # If zero the connection is attempted only once and will fail immediately if unsuccessful. + # If set to "off", the connection will not fail, allowing the utility to start and wait indefinetely for the Varnish instance to appear. + # Defaults to "off" in this case. + timeout: "off" + resources: + requests: + cpu: 10m + memory: 20Mi + prometheus: + enabled: true + path: "/metrics" + port: 9131 + resources: + requests: + cpu: 10m + memory: 20Mi + autoscaling: enabled: false minReplicas: 1 diff --git a/.nvmrc b/.nvmrc index 87834047a6..8326e27f9b 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -20.12.2 +22.3.0 diff --git a/.ops/aws-setup/docker-compose.yml b/.ops/aws-setup/docker-compose.yml index f7794f46c5..1b187985ac 100644 --- a/.ops/aws-setup/docker-compose.yml +++ b/.ops/aws-setup/docker-compose.yml @@ -1,8 +1,6 @@ -version: "3.9" - services: aws-setup: - image: pulumi/pulumi-nodejs:3.114.0 + image: pulumi/pulumi-nodejs:3.122.0 container_name: 'ecamp3-aws-setup' volumes: - ../../.prettierrc:/.prettierrc:delegated @@ -15,7 +13,7 @@ services: - AWS_DEFAULT_REGION=eu-west-3 aws-cli: - image: amazon/aws-cli:2.15.42 + image: amazon/aws-cli:2.17.4 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 462dbaef39..e10a25711b 100644 --- a/.ops/aws-setup/package-lock.json +++ b/.ops/aws-setup/package-lock.json @@ -6,29 +6,20 @@ "": { "name": "ecamp-core", "dependencies": { - "@pulumi/aws": "6.32.0", - "@pulumi/awsx": "2.9.0", - "@pulumi/pulumi": "3.114.0" + "@pulumi/aws": "6.42.1", + "@pulumi/awsx": "2.13.0", + "@pulumi/pulumi": "3.122.0" }, "devDependencies": { - "@babel/eslint-parser": "7.24.1", - "@types/node": "20.12.7", + "@babel/eslint-parser": "7.24.7", + "@types/node": "20.14.5", "eslint": "8.57.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-import": "2.29.1", - "eslint-plugin-n": "17.3.1", + "eslint-plugin-n": "17.9.0", "eslint-plugin-prettier": "5.1.3", - "eslint-plugin-promise": "6.1.1", - "prettier": "3.2.5" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "eslint-plugin-promise": "6.4.0", + "prettier": "3.3.2" } }, "node_modules/@ampproject/remapping": { @@ -36,6 +27,7 @@ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, + "license": "Apache-2.0", "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -45,573 +37,650 @@ "node": ">=6.0.0" } }, - "node_modules/@aws-crypto/ie11-detection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", - "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", + "node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", + "license": "Apache-2.0", "dependencies": { - "tslib": "^1.11.1" + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } }, - "node_modules/@aws-crypto/sha256-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", - "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", "dependencies": { - "@aws-crypto/ie11-detection": "^3.0.0", - "@aws-crypto/sha256-js": "^3.0.0", - "@aws-crypto/supports-web-crypto": "^3.0.0", - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } }, "node_modules/@aws-crypto/sha256-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", - "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "license": "Apache-2.0", "dependencies": { - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, "node_modules/@aws-crypto/supports-web-crypto": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", - "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "license": "Apache-2.0", "dependencies": { - "tslib": "^1.11.1" + "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, "node_modules/@aws-crypto/util": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", - "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/util/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } }, "node_modules/@aws-sdk/client-ecs": { - "version": "3.556.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-ecs/-/client-ecs-3.556.0.tgz", - "integrity": "sha512-IV7etxo8QQogq/0Onf6nmjogeuOqZSCtdUFuZz2M3Xq75k5oaEQ3CfFv4xRldr0WCMJ3SY8hjYiQGiYUyqzBmA==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.556.0", - "@aws-sdk/core": "3.556.0", - "@aws-sdk/credential-provider-node": "3.556.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", - "@smithy/util-waiter": "^2.2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ecs/-/client-ecs-3.598.0.tgz", + "integrity": "sha512-VVT/P189ZJL0SEJAV7O6MepKoska+COvXnHZpgV1qFZFKVzLJ43ynvWTVbKrxgL1LThMo+cXQobgzC0eqCsj9A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.598.0", + "@aws-sdk/client-sts": "3.598.0", + "@aws-sdk/core": "3.598.0", + "@aws-sdk/credential-provider-node": "3.598.0", + "@aws-sdk/middleware-host-header": "3.598.0", + "@aws-sdk/middleware-logger": "3.598.0", + "@aws-sdk/middleware-recursion-detection": "3.598.0", + "@aws-sdk/middleware-user-agent": "3.598.0", + "@aws-sdk/region-config-resolver": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@aws-sdk/util-endpoints": "3.598.0", + "@aws-sdk/util-user-agent-browser": "3.598.0", + "@aws-sdk/util-user-agent-node": "3.598.0", + "@smithy/config-resolver": "^3.0.2", + "@smithy/core": "^2.2.1", + "@smithy/fetch-http-handler": "^3.0.2", + "@smithy/hash-node": "^3.0.1", + "@smithy/invalid-dependency": "^3.0.1", + "@smithy/middleware-content-length": "^3.0.1", + "@smithy/middleware-endpoint": "^3.0.2", + "@smithy/middleware-retry": "^3.0.4", + "@smithy/middleware-serde": "^3.0.1", + "@smithy/middleware-stack": "^3.0.1", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/node-http-handler": "^3.0.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "@smithy/url-parser": "^3.0.1", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.4", + "@smithy/util-defaults-mode-node": "^3.0.4", + "@smithy/util-endpoints": "^2.0.2", + "@smithy/util-middleware": "^3.0.1", + "@smithy/util-retry": "^3.0.1", + "@smithy/util-utf8": "^3.0.0", + "@smithy/util-waiter": "^3.0.1", "tslib": "^2.6.2", "uuid": "^9.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.556.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.556.0.tgz", - "integrity": "sha512-unXdWS7uvHqCcOyC1de+Fr8m3F2vMg2m24GPea0bg7rVGTYmiyn9mhUX11VCt+ozydrw+F50FQwL6OqoqPocmw==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.556.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.598.0.tgz", + "integrity": "sha512-nOI5lqPYa+YZlrrzwAJywJSw3MKVjvu6Ge2fCqQUNYMfxFB0NAaDFnl0EPjXi+sEbtCuz/uWE77poHbqiZ+7Iw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.598.0", + "@aws-sdk/middleware-host-header": "3.598.0", + "@aws-sdk/middleware-logger": "3.598.0", + "@aws-sdk/middleware-recursion-detection": "3.598.0", + "@aws-sdk/middleware-user-agent": "3.598.0", + "@aws-sdk/region-config-resolver": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@aws-sdk/util-endpoints": "3.598.0", + "@aws-sdk/util-user-agent-browser": "3.598.0", + "@aws-sdk/util-user-agent-node": "3.598.0", + "@smithy/config-resolver": "^3.0.2", + "@smithy/core": "^2.2.1", + "@smithy/fetch-http-handler": "^3.0.2", + "@smithy/hash-node": "^3.0.1", + "@smithy/invalid-dependency": "^3.0.1", + "@smithy/middleware-content-length": "^3.0.1", + "@smithy/middleware-endpoint": "^3.0.2", + "@smithy/middleware-retry": "^3.0.4", + "@smithy/middleware-serde": "^3.0.1", + "@smithy/middleware-stack": "^3.0.1", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/node-http-handler": "^3.0.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "@smithy/url-parser": "^3.0.1", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.4", + "@smithy/util-defaults-mode-node": "^3.0.4", + "@smithy/util-endpoints": "^2.0.2", + "@smithy/util-middleware": "^3.0.1", + "@smithy/util-retry": "^3.0.1", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.556.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.556.0.tgz", - "integrity": "sha512-AXKd2TB6nNrksu+OfmHl8uI07PdgzOo4o8AxoRO8SHlwoMAGvcT9optDGVSYoVfgOKTymCoE7h8/UoUfPc11wQ==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.556.0", - "@aws-sdk/core": "3.556.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.598.0.tgz", + "integrity": "sha512-jfdH1pAO9Tt8Nkta/JJLoUnwl7jaRdxToQTJfUtE+o3+0JP5sA4LfC2rBkJSWcU5BdAA+kyOs5Lv776DlN04Vg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sts": "3.598.0", + "@aws-sdk/core": "3.598.0", + "@aws-sdk/credential-provider-node": "3.598.0", + "@aws-sdk/middleware-host-header": "3.598.0", + "@aws-sdk/middleware-logger": "3.598.0", + "@aws-sdk/middleware-recursion-detection": "3.598.0", + "@aws-sdk/middleware-user-agent": "3.598.0", + "@aws-sdk/region-config-resolver": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@aws-sdk/util-endpoints": "3.598.0", + "@aws-sdk/util-user-agent-browser": "3.598.0", + "@aws-sdk/util-user-agent-node": "3.598.0", + "@smithy/config-resolver": "^3.0.2", + "@smithy/core": "^2.2.1", + "@smithy/fetch-http-handler": "^3.0.2", + "@smithy/hash-node": "^3.0.1", + "@smithy/invalid-dependency": "^3.0.1", + "@smithy/middleware-content-length": "^3.0.1", + "@smithy/middleware-endpoint": "^3.0.2", + "@smithy/middleware-retry": "^3.0.4", + "@smithy/middleware-serde": "^3.0.1", + "@smithy/middleware-stack": "^3.0.1", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/node-http-handler": "^3.0.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "@smithy/url-parser": "^3.0.1", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.4", + "@smithy/util-defaults-mode-node": "^3.0.4", + "@smithy/util-endpoints": "^2.0.2", + "@smithy/util-middleware": "^3.0.1", + "@smithy/util-retry": "^3.0.1", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/credential-provider-node": "^3.556.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/client-sts": { - "version": "3.556.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.556.0.tgz", - "integrity": "sha512-TsK3js7Suh9xEmC886aY+bv0KdLLYtzrcmVt6sJ/W6EnDXYQhBuKYFhp03NrN2+vSvMGpqJwR62DyfKe1G0QzQ==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.556.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.598.0.tgz", + "integrity": "sha512-bXhz/cHL0iB9UH9IFtMaJJf4F8mV+HzncETCRFzZ9SyUMt5rP9j8A7VZknqGYSx/6mI8SsB1XJQkWSbhn6FiSQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.598.0", + "@aws-sdk/core": "3.598.0", + "@aws-sdk/credential-provider-node": "3.598.0", + "@aws-sdk/middleware-host-header": "3.598.0", + "@aws-sdk/middleware-logger": "3.598.0", + "@aws-sdk/middleware-recursion-detection": "3.598.0", + "@aws-sdk/middleware-user-agent": "3.598.0", + "@aws-sdk/region-config-resolver": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@aws-sdk/util-endpoints": "3.598.0", + "@aws-sdk/util-user-agent-browser": "3.598.0", + "@aws-sdk/util-user-agent-node": "3.598.0", + "@smithy/config-resolver": "^3.0.2", + "@smithy/core": "^2.2.1", + "@smithy/fetch-http-handler": "^3.0.2", + "@smithy/hash-node": "^3.0.1", + "@smithy/invalid-dependency": "^3.0.1", + "@smithy/middleware-content-length": "^3.0.1", + "@smithy/middleware-endpoint": "^3.0.2", + "@smithy/middleware-retry": "^3.0.4", + "@smithy/middleware-serde": "^3.0.1", + "@smithy/middleware-stack": "^3.0.1", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/node-http-handler": "^3.0.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "@smithy/url-parser": "^3.0.1", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.4", + "@smithy/util-defaults-mode-node": "^3.0.4", + "@smithy/util-endpoints": "^2.0.2", + "@smithy/util-middleware": "^3.0.1", + "@smithy/util-retry": "^3.0.1", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/credential-provider-node": "^3.556.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/core": { - "version": "3.556.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.556.0.tgz", - "integrity": "sha512-vJaSaHw2kPQlo11j/Rzuz0gk1tEaKdz+2ser0f0qZ5vwFlANjt08m/frU17ctnVKC1s58bxpctO/1P894fHLrA==", - "dependencies": { - "@smithy/core": "^1.4.2", - "@smithy/protocol-http": "^3.3.0", - "@smithy/signature-v4": "^2.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.598.0.tgz", + "integrity": "sha512-HaSjt7puO5Cc7cOlrXFCW0rtA0BM9lvzjl56x0A20Pt+0wxXGeTOZZOkXQIepbrFkV2e/HYukuT9e99vXDm59g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^2.2.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/signature-v4": "^3.1.0", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", "fast-xml-parser": "4.2.5", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.535.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.535.0.tgz", - "integrity": "sha512-XppwO8c0GCGSAvdzyJOhbtktSEaShg14VJKg8mpMa1XcgqzmcqqHQjtDWbx5rZheY1VdpXZhpEzJkB6LpQejpA==", - "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/types": "^2.12.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.598.0.tgz", + "integrity": "sha512-vi1khgn7yXzLCcgSIzQrrtd2ilUM0dWodxj3PQ6BLfP0O+q1imO3hG1nq7DVyJtq7rFHs6+9N8G4mYvTkxby2w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.598.0", + "@smithy/property-provider": "^3.1.1", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.552.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.552.0.tgz", - "integrity": "sha512-vsmu7Cz1i45pFEqzVb4JcFmAmVnWFNLsGheZc8SCptlqCO5voETrZZILHYIl4cjKkSDk3pblBOf0PhyjqWW6WQ==", - "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/util-stream": "^2.2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.598.0.tgz", + "integrity": "sha512-N7cIafi4HVlQvEgvZSo1G4T9qb/JMLGMdBsDCT5XkeJrF0aptQWzTFH0jIdZcLrMYvzPcuEyO3yCBe6cy/ba0g==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.598.0", + "@smithy/fetch-http-handler": "^3.0.2", + "@smithy/node-http-handler": "^3.0.1", + "@smithy/property-provider": "^3.1.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "@smithy/util-stream": "^3.0.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.556.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.556.0.tgz", - "integrity": "sha512-0Nz4ErOlXhe3muxWYMbPwRMgfKmVbBp36BAE2uv/z5wTbfdBkcgUwaflEvlKCLUTdHzuZsQk+BFS/gVyaUeOuA==", - "dependencies": { - "@aws-sdk/client-sts": "3.556.0", - "@aws-sdk/credential-provider-env": "3.535.0", - "@aws-sdk/credential-provider-process": "3.535.0", - "@aws-sdk/credential-provider-sso": "3.556.0", - "@aws-sdk/credential-provider-web-identity": "3.556.0", - "@aws-sdk/types": "3.535.0", - "@smithy/credential-provider-imds": "^2.3.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.598.0.tgz", + "integrity": "sha512-/ppcIVUbRwDIwJDoYfp90X3+AuJo2mvE52Y1t2VSrvUovYn6N4v95/vXj6LS8CNDhz2jvEJYmu+0cTMHdhI6eA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.598.0", + "@aws-sdk/credential-provider-http": "3.598.0", + "@aws-sdk/credential-provider-process": "3.598.0", + "@aws-sdk/credential-provider-sso": "3.598.0", + "@aws-sdk/credential-provider-web-identity": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@smithy/credential-provider-imds": "^3.1.1", + "@smithy/property-provider": "^3.1.1", + "@smithy/shared-ini-file-loader": "^3.1.1", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.598.0" } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.556.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.556.0.tgz", - "integrity": "sha512-s1xVtKjyGc60O8qcNIzS1X3H+pWEwEfZ7TgNznVDNyuXvLrlNWiAcigPWGl2aAkc8tGcsSG0Qpyw2KYC939LFg==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.535.0", - "@aws-sdk/credential-provider-http": "3.552.0", - "@aws-sdk/credential-provider-ini": "3.556.0", - "@aws-sdk/credential-provider-process": "3.535.0", - "@aws-sdk/credential-provider-sso": "3.556.0", - "@aws-sdk/credential-provider-web-identity": "3.556.0", - "@aws-sdk/types": "3.535.0", - "@smithy/credential-provider-imds": "^2.3.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.598.0.tgz", + "integrity": "sha512-sXTlqL5I/awlF9Dg2MQ17SfrEaABVnsj2mf4jF5qQrIRhfbvQOIYdEqdy8Rn1AWlJMz/N450SGzc0XJ5owxxqw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.598.0", + "@aws-sdk/credential-provider-http": "3.598.0", + "@aws-sdk/credential-provider-ini": "3.598.0", + "@aws-sdk/credential-provider-process": "3.598.0", + "@aws-sdk/credential-provider-sso": "3.598.0", + "@aws-sdk/credential-provider-web-identity": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@smithy/credential-provider-imds": "^3.1.1", + "@smithy/property-provider": "^3.1.1", + "@smithy/shared-ini-file-loader": "^3.1.1", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.535.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.535.0.tgz", - "integrity": "sha512-9O1OaprGCnlb/kYl8RwmH7Mlg8JREZctB8r9sa1KhSsWFq/SWO0AuJTyowxD7zL5PkeS4eTvzFFHWCa3OO5epA==", - "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.598.0.tgz", + "integrity": "sha512-rM707XbLW8huMk722AgjVyxu2tMZee++fNA8TJVNgs1Ma02Wx6bBrfIvlyK0rCcIRb0WdQYP6fe3Xhiu4e8IBA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.598.0", + "@smithy/property-provider": "^3.1.1", + "@smithy/shared-ini-file-loader": "^3.1.1", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.556.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.556.0.tgz", - "integrity": "sha512-ETuBgcnpfxqadEAqhQFWpKoV1C/NAgvs5CbBc5EJbelJ8f4prTdErIHjrRtVT8c02MXj92QwczsiNYd5IoOqyw==", - "dependencies": { - "@aws-sdk/client-sso": "3.556.0", - "@aws-sdk/token-providers": "3.556.0", - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.598.0.tgz", + "integrity": "sha512-5InwUmrAuqQdOOgxTccRayMMkSmekdLk6s+az9tmikq0QFAHUCtofI+/fllMXSR9iL6JbGYi1940+EUmS4pHJA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-sso": "3.598.0", + "@aws-sdk/token-providers": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@smithy/property-provider": "^3.1.1", + "@smithy/shared-ini-file-loader": "^3.1.1", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.556.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.556.0.tgz", - "integrity": "sha512-R/YAL8Uh8i+dzVjzMnbcWLIGeeRi2mioHVGnVF+minmaIkCiQMZg2HPrdlKm49El+RljT28Nl5YHRuiqzEIwMA==", - "dependencies": { - "@aws-sdk/client-sts": "3.556.0", - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/types": "^2.12.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.598.0.tgz", + "integrity": "sha512-GV5GdiMbz5Tz9JO4NJtRoFXjW0GPEujA0j+5J/B723rTN+REHthJu48HdBKouHGhdzkDWkkh1bu52V02Wprw8w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.598.0", + "@smithy/property-provider": "^3.1.1", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.598.0" } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.535.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.535.0.tgz", - "integrity": "sha512-0h6TWjBWtDaYwHMQJI9ulafeS4lLaw1vIxRjbpH0svFRt6Eve+Sy8NlVhECfTU2hNz/fLubvrUxsXoThaLBIew==", - "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/types": "^2.12.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.598.0.tgz", + "integrity": "sha512-WiaG059YBQwQraNejLIi0gMNkX7dfPZ8hDIhvMr5aVPRbaHH8AYF3iNSsXYCHvA2Cfa1O9haYXsuMF9flXnCmA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.598.0", + "@smithy/protocol-http": "^4.0.1", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.535.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.535.0.tgz", - "integrity": "sha512-huNHpONOrEDrdRTvSQr1cJiRMNf0S52NDXtaPzdxiubTkP+vni2MohmZANMOai/qT0olmEVX01LhZ0ZAOgmg6A==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.598.0.tgz", + "integrity": "sha512-bxBjf/VYiu3zfu8SYM2S9dQQc3tz5uBAOcPz/Bt8DyyK3GgOpjhschH/2XuUErsoUO1gDJqZSdGOmuHGZQn00Q==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/types": "^2.12.0", + "@aws-sdk/types": "3.598.0", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.535.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.535.0.tgz", - "integrity": "sha512-am2qgGs+gwqmR4wHLWpzlZ8PWhm4ktj5bYSgDrsOfjhdBlWNxvPoID9/pDAz5RWL48+oH7I6SQzMqxXsFDikrw==", - "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/types": "^2.12.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.598.0.tgz", + "integrity": "sha512-vjT9BeFY9FeN0f8hm2l6F53tI0N5bUq6RcDkQXKNabXBnQxKptJRad6oP2X5y3FoVfBLOuDkQgiC2940GIPxtQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.598.0", + "@smithy/protocol-http": "^4.0.1", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.540.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.540.0.tgz", - "integrity": "sha512-8Rd6wPeXDnOYzWj1XCmOKcx/Q87L0K1/EHqOBocGjLVbN3gmRxBvpmR1pRTjf7IsWfnnzN5btqtcAkfDPYQUMQ==", - "dependencies": { - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/types": "^2.12.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.598.0.tgz", + "integrity": "sha512-4tjESlHG5B5MdjUaLK7tQs/miUtHbb6deauQx8ryqSBYOhfHVgb1ZnzvQR0bTrhpqUg0WlybSkDaZAICf9xctg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.598.0", + "@aws-sdk/util-endpoints": "3.598.0", + "@smithy/protocol-http": "^4.0.1", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.535.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.535.0.tgz", - "integrity": "sha512-IXOznDiaItBjsQy4Fil0kzX/J3HxIOknEphqHbOfUf+LpA5ugcsxuQQONrbEQusCBnfJyymrldBvBhFmtlU9Wg==", - "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/types": "^2.12.0", - "@smithy/util-config-provider": "^2.3.0", - "@smithy/util-middleware": "^2.2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.598.0.tgz", + "integrity": "sha512-oYXhmTokSav4ytmWleCr3rs/1nyvZW/S0tdi6X7u+dLNL5Jee+uMxWGzgOrWK6wrQOzucLVjS4E/wA11Kv2GTw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.598.0", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/types": "^3.1.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.556.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.556.0.tgz", - "integrity": "sha512-tvIiugNF0/+2wfuImMrpKjXMx4nCnFWQjQvouObny+wrif/PGqqQYrybwxPJDvzbd965bu1I+QuSv85/ug7xsg==", - "dependencies": { - "@aws-sdk/client-sso-oidc": "3.556.0", - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.598.0.tgz", + "integrity": "sha512-TKY1EVdHVBnZqpyxyTHdpZpa1tUpb6nxVeRNn1zWG8QB5MvH4ALLd/jR+gtmWDNQbIG4cVuBOZFVL8hIYicKTA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.598.0", + "@smithy/property-provider": "^3.1.1", + "@smithy/shared-ini-file-loader": "^3.1.1", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sso-oidc": "^3.598.0" } }, "node_modules/@aws-sdk/types": { - "version": "3.535.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.535.0.tgz", - "integrity": "sha512-aY4MYfduNj+sRR37U7XxYR8wemfbKP6lx00ze2M2uubn7mZotuVrWYAafbMSXrdEMSToE5JDhr28vArSOoLcSg==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.598.0.tgz", + "integrity": "sha512-742uRl6z7u0LFmZwDrFP6r1wlZcgVPw+/TilluDJmCAR8BgRw3IR+743kUXKBGd8QZDRW2n6v/PYsi/AWCDDMQ==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^2.12.0", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.540.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.540.0.tgz", - "integrity": "sha512-1kMyQFAWx6f8alaI6UT65/5YW/7pDWAKAdNwL6vuJLea03KrZRX3PMoONOSJpAS5m3Ot7HlWZvf3wZDNTLELZw==", - "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/types": "^2.12.0", - "@smithy/util-endpoints": "^1.2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.598.0.tgz", + "integrity": "sha512-Qo9UoiVVZxcOEdiOMZg3xb1mzkTxrhd4qSlg5QQrfWPJVx/QOg+Iy0NtGxPtHtVZNHZxohYwDwV/tfsnDSE2gQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.598.0", + "@smithy/types": "^3.1.0", + "@smithy/util-endpoints": "^2.0.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/util-locate-window": { - "version": "3.535.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.535.0.tgz", - "integrity": "sha512-PHJ3SL6d2jpcgbqdgiPxkXpu7Drc2PYViwxSIqvvMKhDwzSB1W3mMvtpzwKM4IE7zLFodZo0GKjJ9AsoXndXhA==", + "version": "3.568.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz", + "integrity": "sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.535.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.535.0.tgz", - "integrity": "sha512-RWMcF/xV5n+nhaA/Ff5P3yNP3Kur/I+VNZngog4TEs92oB/nwOdAg/2JL8bVAhUbMrjTjpwm7PItziYFQoqyig==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.598.0.tgz", + "integrity": "sha512-36Sxo6F+ykElaL1mWzWjlg+1epMpSe8obwhCN1yGE7Js9ywy5U6k6l+A3q3YM9YRbm740sNxncbwLklMvuhTKw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/types": "^2.12.0", + "@aws-sdk/types": "3.598.0", + "@smithy/types": "^3.1.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.535.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.535.0.tgz", - "integrity": "sha512-dRek0zUuIT25wOWJlsRm97nTkUlh1NDcLsQZIN2Y8KxhwoXXWtJs5vaDPT+qAg+OpcNj80i1zLR/CirqlFg/TQ==", - "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/types": "^2.12.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.598.0.tgz", + "integrity": "sha512-oyWGcOlfTdzkC6SVplyr0AGh54IMrDxbhg5RxJ5P+V4BKfcDoDcZV9xenUk9NsOi9MuUjxMumb9UJGkDhM1m0A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.598.0", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" }, "peerDependencies": { "aws-crt": ">=1.0.0" @@ -622,22 +691,15 @@ } } }, - "node_modules/@aws-sdk/util-utf8-browser": { - "version": "3.259.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", - "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", - "dependencies": { - "tslib": "^2.3.1" - } - }, "node_modules/@babel/code-frame": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", - "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { - "@babel/highlight": "^7.24.2", + "@babel/highlight": "^7.24.7", "picocolors": "^1.0.0" }, "engines": { @@ -645,32 +707,34 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", - "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", + "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz", - "integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", + "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.4", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.4", - "@babel/parser": "^7.24.4", - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helpers": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -686,10 +750,11 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.24.1.tgz", - "integrity": "sha512-d5guuzMlPeDfZIbpQ8+g1NaCNuAGBBGNECh0HVqz1sjOeVLh2CEaifuOysCH18URW6R7pqXINvf5PaR/dC6jLQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.24.7.tgz", + "integrity": "sha512-SO5E3bVxDuxyNxM5agFv480YA2HO6ohZbGxbazZdIk3KQOPOGVNw6q78I9/lbviIf95eq6tPozeYnJLbjnC8IA==", "dev": true, + "license": "MIT", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", @@ -700,17 +765,18 @@ }, "peerDependencies": { "@babel/core": "^7.11.0", - "eslint": "^7.5.0 || ^8.0.0" + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" } }, "node_modules/@babel/generator": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", - "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { - "@babel/types": "^7.24.0", + "@babel/types": "^7.24.7", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -720,14 +786,15 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", + "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", + "@babel/compat-data": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -737,67 +804,76 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", "dev": true, + "license": "MIT", "peer": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", - "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { - "@babel/types": "^7.24.0" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", + "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -807,84 +883,91 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", - "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", + "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz", - "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", + "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", - "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -894,10 +977,11 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", - "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", "dev": true, + "license": "MIT", "peer": true, "bin": { "parser": "bin/babel-parser.js" @@ -907,35 +991,37 @@ } }, "node_modules/@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", - "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { - "@babel/code-frame": "^7.24.1", - "@babel/generator": "^7.24.1", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.1", - "@babel/types": "^7.24.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -944,14 +1030,15 @@ } }, "node_modules/@babel/types": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", - "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -963,6 +1050,7 @@ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.3.0" }, @@ -978,6 +1066,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -986,10 +1075,11 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", + "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } @@ -999,6 +1089,7 @@ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -1021,13 +1112,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1038,6 +1131,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -1053,6 +1147,7 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -1065,6 +1160,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1077,16 +1173,18 @@ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@grpc/grpc-js": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.10.6.tgz", - "integrity": "sha512-xP58G7wDQ4TCmN/cMUHh00DS7SRDv/+lC+xFLrTkMIN8h55X5NhZMLYbvy7dSELP15qlI6hPhNCRWVMtZMwqLA==", + "version": "1.10.9", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.10.9.tgz", + "integrity": "sha512-5tcgUctCG0qoNyfChZifz2tJqbRbXVO9J7X6duFcOjY3HUNCxg5D0ZCK7EP9vIcZ0zRpLU9bWkyCqVCLZ46IbQ==", + "license": "Apache-2.0", "dependencies": { - "@grpc/proto-loader": "^0.7.10", + "@grpc/proto-loader": "^0.7.13", "@js-sdsl/ordered-map": "^4.4.2" }, "engines": { @@ -1094,13 +1192,14 @@ } }, "node_modules/@grpc/proto-loader": { - "version": "0.7.12", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.12.tgz", - "integrity": "sha512-DCVwMxqYzpUCiDMl7hQ384FqP4T3DbNpXU8pt681l3UWCip1WUiD5JrkImUwCB9a7f2cq4CUTmi5r/xIMRPY1Q==", + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.13.tgz", + "integrity": "sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==", + "license": "Apache-2.0", "dependencies": { "lodash.camelcase": "^4.3.0", "long": "^5.0.0", - "protobufjs": "^7.2.4", + "protobufjs": "^7.2.5", "yargs": "^17.7.2" }, "bin": { @@ -1114,7 +1213,9 @@ "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^2.0.2", "debug": "^4.3.1", @@ -1129,6 +1230,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1139,6 +1241,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1151,6 +1254,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -1163,12 +1267,15 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "dev": true + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -1185,6 +1292,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -1196,6 +1304,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -1209,13 +1318,15 @@ "node_modules/@isaacs/string-locale-compare": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", - "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==" + "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", + "license": "ISC" }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -1231,6 +1342,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=6.0.0" @@ -1241,6 +1353,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=6.0.0" @@ -1251,6 +1364,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/@jridgewell/trace-mapping": { @@ -1258,6 +1372,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -1268,6 +1383,7 @@ "version": "4.4.2", "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/js-sdsl" @@ -1277,6 +1393,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@logdna/tail-file/-/tail-file-2.2.0.tgz", "integrity": "sha512-XGSsWDweP80Fks16lwkAUIr54ICyBs6PsI4mpfTLQaWgEJRtY9xEV+PeyDpJ+sJEGZxqINlpmAwe/6tS1pP8Ng==", + "license": "SEE LICENSE IN LICENSE", "engines": { "node": ">=10.3.0" } @@ -1286,6 +1403,7 @@ "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", "dev": true, + "license": "MIT", "dependencies": { "eslint-scope": "5.1.1" } @@ -1295,6 +1413,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -1308,6 +1427,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -1317,6 +1437,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -1329,6 +1450,7 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "license": "ISC", "dependencies": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", @@ -1341,50 +1463,53 @@ } }, "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "license": "ISC", "engines": { "node": "14 || >=16.14" } }, "node_modules/@npmcli/arborist": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-7.4.2.tgz", - "integrity": "sha512-13flK0DTIhG7VEmPtoKFoi+88hIjuZxuZAvnHUTthIFql1Kc51VlsMRpbJPIcDEZHaHkILwFjHRXtCUYdFWvAQ==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-7.5.3.tgz", + "integrity": "sha512-7gbMdDNSYUzi0j2mpb6FoXRg3BxXWplMQZH1MZlvNjSdWFObaUz2Ssvo0Nlh2xmWks1OPo+gpsE6qxpT/5M7lQ==", + "license": "ISC", "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/fs": "^3.1.0", - "@npmcli/installed-package-contents": "^2.0.2", + "@npmcli/fs": "^3.1.1", + "@npmcli/installed-package-contents": "^2.1.0", "@npmcli/map-workspaces": "^3.0.2", - "@npmcli/metavuln-calculator": "^7.0.0", + "@npmcli/metavuln-calculator": "^7.1.1", "@npmcli/name-from-folder": "^2.0.0", "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.0.0", + "@npmcli/package-json": "^5.1.0", "@npmcli/query": "^3.1.0", - "@npmcli/redact": "^1.1.0", - "@npmcli/run-script": "^7.0.2", - "bin-links": "^4.0.1", - "cacache": "^18.0.0", + "@npmcli/redact": "^2.0.0", + "@npmcli/run-script": "^8.1.0", + "bin-links": "^4.0.4", + "cacache": "^18.0.3", "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^7.0.1", - "json-parse-even-better-errors": "^3.0.0", + "hosted-git-info": "^7.0.2", + "json-parse-even-better-errors": "^3.0.2", "json-stringify-nice": "^1.1.4", + "lru-cache": "^10.2.2", "minimatch": "^9.0.4", - "nopt": "^7.0.0", + "nopt": "^7.2.1", "npm-install-checks": "^6.2.0", - "npm-package-arg": "^11.0.1", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^16.2.0", - "npmlog": "^7.0.1", - "pacote": "^17.0.4", + "npm-package-arg": "^11.0.2", + "npm-pick-manifest": "^9.0.1", + "npm-registry-fetch": "^17.0.1", + "pacote": "^18.0.6", "parse-conflict-json": "^3.0.0", - "proc-log": "^3.0.0", + "proc-log": "^4.2.0", + "proggy": "^2.0.0", "promise-all-reject-late": "^1.0.0", "promise-call-limit": "^3.0.1", "read-package-json-fast": "^3.0.2", "semver": "^7.3.7", - "ssri": "^10.0.5", + "ssri": "^10.0.6", "treeverse": "^3.0.0", "walk-up-path": "^3.0.1" }, @@ -1396,23 +1521,19 @@ } }, "node_modules/@npmcli/arborist/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "license": "ISC", "engines": { - "node": ">=10" + "node": "14 || >=16.14" } }, "node_modules/@npmcli/arborist/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -1420,15 +1541,11 @@ "node": ">=10" } }, - "node_modules/@npmcli/arborist/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "license": "ISC", "dependencies": { "semver": "^7.3.5" }, @@ -1436,24 +1553,11 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/fs/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -1461,15 +1565,11 @@ "node": ">=10" } }, - "node_modules/@npmcli/fs/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/@npmcli/git": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.6.tgz", - "integrity": "sha512-4x/182sKXmQkf0EtXxT26GEsaOATpD7WVtza5hrYivWZeo6QefC6xq9KAXrnjtFKBZ4rZwR7aX/zClYYXgtwLw==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.7.tgz", + "integrity": "sha512-WaOVvto604d5IpdCRV2KjQu8PzkfE96d50CQGKgywXh2GxXmDeUO5EWcBC4V57uFyrNqx83+MewuJh3WTR3xPA==", + "license": "ISC", "dependencies": { "@npmcli/promise-spawn": "^7.0.0", "lru-cache": "^10.0.1", @@ -1485,28 +1585,19 @@ } }, "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "license": "ISC", "engines": { "node": "14 || >=16.14" } }, - "node_modules/@npmcli/git/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/@npmcli/git/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -1514,26 +1605,11 @@ "node": ">=10" } }, - "node_modules/@npmcli/git/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/git/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/@npmcli/installed-package-contents": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", + "license": "ISC", "dependencies": { "npm-bundled": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" @@ -1549,6 +1625,7 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.6.tgz", "integrity": "sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==", + "license": "ISC", "dependencies": { "@npmcli/name-from-folder": "^2.0.0", "glob": "^10.2.2", @@ -1560,9 +1637,10 @@ } }, "node_modules/@npmcli/metavuln-calculator": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-7.1.0.tgz", - "integrity": "sha512-D4VZzVLZ4Mw+oUCWyQ6qzlm5SGlrLnhKtZscDwQXFFc1FUPvw69Ibo2E5ZpJAmjFSYkA5UlCievWmREW0JLC3w==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-7.1.1.tgz", + "integrity": "sha512-Nkxf96V0lAx3HCpVda7Vw4P23RILgdi/5K1fmj2tZkWIYLpXAN8k2UVVOsW16TsS5F8Ws2I7Cm+PU1/rsVF47g==", + "license": "ISC", "dependencies": { "cacache": "^18.0.0", "json-parse-even-better-errors": "^3.0.0", @@ -1574,78 +1652,11 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/@npmcli/run-script": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-8.0.0.tgz", - "integrity": "sha512-5noc+eCQmX1W9nlFUe65n5MIteikd3vOA2sEPdXtlUv68KWyHNFZnT/LDRXu/E4nZ5yxjciP30pADr/GQ97W1w==", - "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.0.0", - "@npmcli/promise-spawn": "^7.0.0", - "node-gyp": "^10.0.0", - "proc-log": "^4.0.0", - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/pacote": { - "version": "18.0.2", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-18.0.2.tgz", - "integrity": "sha512-oMxnZQCOZqFZyEh5oJtpMepoub4hoI6EfMUCdbwkBqkFuJ1Dwfz5IMQD344dKbwPPBNZWKwGL/kNvmDubZyvug==", - "dependencies": { - "@npmcli/git": "^5.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/package-json": "^5.1.0", - "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^8.0.0", - "cacache": "^18.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^7.0.2", - "npm-package-arg": "^11.0.0", - "npm-packlist": "^8.0.0", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^16.0.0", - "proc-log": "^4.0.0", - "promise-retry": "^2.0.1", - "sigstore": "^2.2.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/@npmcli/metavuln-calculator/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -1653,15 +1664,11 @@ "node": ">=10" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/@npmcli/name-from-folder": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==", + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -1670,14 +1677,16 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@npmcli/package-json": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.1.0.tgz", - "integrity": "sha512-1aL4TuVrLS9sf8quCLerU3H9J4vtCtgu8VauYozrmEyU57i/EdKleCnsQ7vpnABIH6c9mnTxcH5sFkO3BlV8wQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.0.tgz", + "integrity": "sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ==", + "license": "ISC", "dependencies": { "@npmcli/git": "^5.0.0", "glob": "^10.2.2", @@ -1691,32 +1700,11 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@npmcli/package-json/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/package-json/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/@npmcli/package-json/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -1724,15 +1712,11 @@ "node": ">=10" } }, - "node_modules/@npmcli/package-json/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/@npmcli/promise-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.1.tgz", - "integrity": "sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", + "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", + "license": "ISC", "dependencies": { "which": "^4.0.0" }, @@ -1744,6 +1728,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-3.1.0.tgz", "integrity": "sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ==", + "license": "ISC", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -1752,22 +1737,25 @@ } }, "node_modules/@npmcli/redact": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-1.1.0.tgz", - "integrity": "sha512-PfnWuOkQgu7gCbnSsAisaX7hKOdZ4wSAhAzH3/ph5dSGau52kCRrMMGbiSQLwyTZpgldkZ49b0brkOr1AzGBHQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-2.0.1.tgz", + "integrity": "sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==", + "license": "ISC", "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@npmcli/run-script": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.4.tgz", - "integrity": "sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-8.1.0.tgz", + "integrity": "sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==", + "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^3.0.0", "@npmcli/package-json": "^5.0.0", "@npmcli/promise-spawn": "^7.0.0", "node-gyp": "^10.0.0", + "proc-log": "^4.0.0", "which": "^4.0.0" }, "engines": { @@ -1775,9 +1763,10 @@ } }, "node_modules/@opentelemetry/api": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.8.0.tgz", - "integrity": "sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", "engines": { "node": ">=8.0.0" } @@ -1787,6 +1776,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/api-metrics/-/api-metrics-0.32.0.tgz", "integrity": "sha512-g1WLhpG8B6iuDyZJFRGsR+JKyZ94m5LEmY2f+duEJ9Xb4XRlLHrZvh6G34OH6GJ8iDHxfHb/sWjJ1ZpkI9yGMQ==", "deprecated": "Please use @opentelemetry/api >= 1.3.0", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.0.0" }, @@ -1795,39 +1785,42 @@ } }, "node_modules/@opentelemetry/context-async-hooks": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.23.0.tgz", - "integrity": "sha512-wazGJZDRevibOJ+VgyrT+9+8sybZAxpZx2G7vy30OAtk92OpZCg7HgNxT11NUx0VBDWcRx1dOatMYGOVplQ7QA==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.25.0.tgz", + "integrity": "sha512-sBW313mnMyFg0cp/40BRzrZBWG+581s2j5gIsa5fgGadswyILk4mNFATsqrCOpAx945RDuZ2B7ThQLgor9OpfA==", + "license": "Apache-2.0", "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "node_modules/@opentelemetry/core": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.23.0.tgz", - "integrity": "sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.0.tgz", + "integrity": "sha512-n0B3s8rrqGrasTgNkXLKXzN0fXo+6IYP7M5b7AMsrZM33f/y6DS6kJ0Btd7SespASWq8bgL3taLo0oe0vB52IQ==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/semantic-conventions": "1.25.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "node_modules/@opentelemetry/exporter-zipkin": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.23.0.tgz", - "integrity": "sha512-2LOGvNUGONuIcWhynFaJorVyqv03uZkURScciLmOxvBf2lWTNPEj77br1dCpShIWBM+YlrH7Tc+JXAs+GC7DqA==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.25.0.tgz", + "integrity": "sha512-nnhY0e5DHg8BfUSNCQZoGZnGeqz+zMTeEUOh1dfgtaXmF99uM0QPuTa1i2lH+eZqebP8w1WDWZlewu9FUlHqIg==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.25.0", + "@opentelemetry/resources": "1.25.0", + "@opentelemetry/sdk-trace-base": "1.25.0", + "@opentelemetry/semantic-conventions": "1.25.0" }, "engines": { "node": ">=14" @@ -1840,6 +1833,7 @@ "version": "0.32.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.32.0.tgz", "integrity": "sha512-y6ADjHpkUz/v1nkyyYjsQa/zorhX+0qVGpFvXMcbjU4sHnBnC02c6wcc93sIgZfiQClIWo45TGku1KQxJ5UUbQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/api-metrics": "0.32.0", "require-in-the-middle": "^5.0.3", @@ -1857,6 +1851,7 @@ "version": "0.32.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.32.0.tgz", "integrity": "sha512-Az6wdkPx/Mi26lT9LKFV6GhCA9prwQFPz5eCNSExTnSP49YhQ7XCjzPd2POPeLKt84ICitrBMdE1mj0zbPdLAQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/api-metrics": "0.32.0", "@opentelemetry/instrumentation": "0.32.0", @@ -1873,28 +1868,16 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.6.0.tgz", "integrity": "sha512-aPfcBeLErM/PPiAuAbNFLN5sNbZLc3KZlar27uohllN8Zs6jJbHyJU1y7cMA6W/zuq+thkaG8mujiS+3iD/FWQ==", + "license": "Apache-2.0", "engines": { "node": ">=14" } }, - "node_modules/@opentelemetry/instrumentation/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@opentelemetry/instrumentation/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -1902,107 +1885,94 @@ "node": ">=10" } }, - "node_modules/@opentelemetry/instrumentation/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/@opentelemetry/propagator-b3": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.23.0.tgz", - "integrity": "sha512-cZ6rl8y2bdxYQ4e+zP2CQ+QmuPebaLBLO1skjFpj3eEu7zar+6hBzUP3llMOUupkQeQSwXz+4c8dZ26OhYfG/g==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.25.0.tgz", + "integrity": "sha512-/A+1Tbnf0uwnP51OkoaQlrb9YILdHsoqIISna1MNXpZRzf42xm6LVLb49i+m/zlJoW1e8P4ekcrditR5pfmwog==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "1.23.0" + "@opentelemetry/core": "1.25.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "node_modules/@opentelemetry/propagator-jaeger": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.23.0.tgz", - "integrity": "sha512-6iArixfgIl3ZgzeltQ5jyiKbjZygM+MbM84pXi1HL0Qs4x4Ck5rM6wEtjhZffFnlDMWEkEqrnM0xF6bTfbiMAQ==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.25.0.tgz", + "integrity": "sha512-uwA5xqaPISXeX+YutqbjmzENnCGCvrIXlqIXP5gRoA5N6S3W28p+ExL77TugMKHN5gXklapF67jDfz7lq5ETzQ==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "1.23.0" + "@opentelemetry/core": "1.25.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "node_modules/@opentelemetry/resources": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.23.0.tgz", - "integrity": "sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.25.0.tgz", + "integrity": "sha512-iHjydPMYJ+Li1auveJCq2rp5U2h6Mhq8BidiyE0jfVlDTFyR1ny8AfJHfmFzJ/RAM8vT8L7T21kcmGybxZC7lQ==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.25.0", + "@opentelemetry/semantic-conventions": "1.25.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.23.0.tgz", - "integrity": "sha512-PzBmZM8hBomUqvCddF/5Olyyviayka44O5nDWq673np3ctnvwMOvNrsUORZjKja1zJbwEuD9niAGbnVrz3jwRQ==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.25.0.tgz", + "integrity": "sha512-6+g2fiRQUG39guCsKVeY8ToeuUf3YUnPkN6DXRA1qDmFLprlLvZm9cS6+chgbW70cZJ406FTtSCDnJwxDC5sGQ==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.25.0", + "@opentelemetry/resources": "1.25.0", + "@opentelemetry/semantic-conventions": "1.25.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "node_modules/@opentelemetry/sdk-trace-node": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.23.0.tgz", - "integrity": "sha512-dwnin5Go2r6VzJZkVc9JBPupssWp7j2EFto+S7qRkwQ00WDykWeq3x2Skk7I1Jr448FeBSvGCQVPgV5e6s6O3w==", - "dependencies": { - "@opentelemetry/context-async-hooks": "1.23.0", - "@opentelemetry/core": "1.23.0", - "@opentelemetry/propagator-b3": "1.23.0", - "@opentelemetry/propagator-jaeger": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.25.0.tgz", + "integrity": "sha512-sYdZmNCkqthPpjwCxAJk5aQNLxCOQjT1u3JMGvO6rb3Ic8uFdnzXavP13Md9uYPcZBo+KxetyDhCf0x8wJGRng==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/context-async-hooks": "1.25.0", + "@opentelemetry/core": "1.25.0", + "@opentelemetry/propagator-b3": "1.25.0", + "@opentelemetry/propagator-jaeger": "1.25.0", + "@opentelemetry/sdk-trace-base": "1.25.0", "semver": "^7.5.2" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-node/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "node_modules/@opentelemetry/sdk-trace-node/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -2010,15 +1980,11 @@ "node": ">=10" } }, - "node_modules/@opentelemetry/sdk-trace-node/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.23.0.tgz", - "integrity": "sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.0.tgz", + "integrity": "sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ==", + "license": "Apache-2.0", "engines": { "node": ">=14" } @@ -2027,6 +1993,7 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", "optional": true, "engines": { "node": ">=14" @@ -2037,6 +2004,7 @@ "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, @@ -2047,27 +2015,32 @@ "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/base64": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/codegen": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/eventemitter": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/fetch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", "dependencies": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" @@ -2076,32 +2049,38 @@ "node_modules/@protobufjs/float": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/inquire": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/path": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/pool": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/utf8": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause" }, "node_modules/@pulumi/aws": { - "version": "6.32.0", - "resolved": "https://registry.npmjs.org/@pulumi/aws/-/aws-6.32.0.tgz", - "integrity": "sha512-kXoRn427RjSALvyEwMI5wZibNf8lRlp16vgPfI2n2OT7CLvtmqnI16IRPJ01gVf8I95sku1meKqXwXAQ+2O1Zw==", + "version": "6.42.1", + "resolved": "https://registry.npmjs.org/@pulumi/aws/-/aws-6.42.1.tgz", + "integrity": "sha512-iQfBEl6xa9UL94RkXxtLc18vfA9CQrhKyj+zy5j6f0NXaDurdFE8y1Pi3Q/RlTOMxwVAbyfKs7uR9pnWx+2McQ==", + "license": "Apache-2.0", "dependencies": { "@pulumi/pulumi": "^3.0.0", "builtin-modules": "3.0.0", @@ -2110,13 +2089,14 @@ } }, "node_modules/@pulumi/awsx": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/@pulumi/awsx/-/awsx-2.9.0.tgz", - "integrity": "sha512-HGEVkZ6cL1qBmUCJ7o95C1bsfqW0eXT0lKIVIhlWmKxichBn7MOkzHvIx/s+hgwFNQr7HJsTzH4SmjxdQlQAFA==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@pulumi/awsx/-/awsx-2.13.0.tgz", + "integrity": "sha512-wmPw9dsS7H4wM2Qof4RjYIDX+jItFlmNRql2yE2exemHPqY/IJKotKlUh6eoqhIqXdwHNyV2N8bzX5lH/Cla6Q==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/client-ecs": "^3.405.0", - "@pulumi/aws": "^6.32.0", + "@pulumi/aws": "^6.37.1", "@pulumi/docker": "^4.5.1", "@pulumi/pulumi": "^3.0.0", "@types/aws-lambda": "^8.10.23", @@ -2126,9 +2106,10 @@ } }, "node_modules/@pulumi/docker": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/@pulumi/docker/-/docker-4.5.3.tgz", - "integrity": "sha512-chHRNGzmpdskxJt0MvD0Mt3x4v9zYTssRoGNGCpkVCnicYSV8CUi26J1b6svp+aWK4RNrqmD1ohFHHXIVtSxjA==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/@pulumi/docker/-/docker-4.5.4.tgz", + "integrity": "sha512-0R978Se7+NZIocYIoCAMC2q2sovar7O743zfnVQBSZRFLB+2pdZFqmpHWniM6rZtq/h5rwHsMfbJ/E6UJhihfw==", + "license": "Apache-2.0", "dependencies": { "@pulumi/pulumi": "^3.0.0", "semver": "^5.4.0" @@ -2138,14 +2119,16 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/@pulumi/pulumi": { - "version": "3.114.0", - "resolved": "https://registry.npmjs.org/@pulumi/pulumi/-/pulumi-3.114.0.tgz", - "integrity": "sha512-+GDzWl/Udpw5uRs/DaM4X3Hl8LR4bvdmiHl4PFL9aaSUN+4x3TMIuKsg+IEpfK5apLW34gb3MnIkZZweNcOx5A==", + "version": "3.122.0", + "resolved": "https://registry.npmjs.org/@pulumi/pulumi/-/pulumi-3.122.0.tgz", + "integrity": "sha512-+EXWVJVLL+s2ianhZ4LxgNA9zt4hfgamnuwPr6qW0eBlk5gr906xSQgw4zdk8CIiAW+VT16TfxXk49Vj1BpBrw==", + "license": "Apache-2.0", "dependencies": { "@grpc/grpc-js": "^1.10.1", "@logdna/tail-file": "^2.0.6", @@ -2194,24 +2177,11 @@ } } }, - "node_modules/@pulumi/pulumi/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@pulumi/pulumi/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -2219,22 +2189,19 @@ "node": ">=10" } }, - "node_modules/@pulumi/pulumi/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/@pulumi/query": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@pulumi/query/-/query-0.3.0.tgz", - "integrity": "sha512-xfo+yLRM2zVjVEA4p23IjQWzyWl1ZhWOGobsBqRpIarzLvwNH/RAGaoehdxlhx4X92302DrpdIFgTICMN4P38w==" + "integrity": "sha512-xfo+yLRM2zVjVEA4p23IjQWzyWl1ZhWOGobsBqRpIarzLvwNH/RAGaoehdxlhx4X92302DrpdIFgTICMN4P38w==", + "license": "Apache-2.0" }, "node_modules/@sigstore/bundle": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.1.tgz", - "integrity": "sha512-eqV17lO3EIFqCWK3969Rz+J8MYrRZKw9IBHpSo6DEcEX2c+uzDFOgHE9f2MnyDpfs48LFO4hXmk9KhQ74JzU1g==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.2.tgz", + "integrity": "sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==", + "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.3.1" + "@sigstore/protobuf-specs": "^0.3.2" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -2244,52 +2211,59 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-1.1.0.tgz", "integrity": "sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==", + "license": "Apache-2.0", "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@sigstore/protobuf-specs": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.1.tgz", - "integrity": "sha512-aIL8Z9NsMr3C64jyQzE0XlkEyBLpgEJJFDHLVVStkFV5Q3Il/r/YtY6NJWKQ4cy4AE7spP1IX5Jq7VCAxHHMfQ==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz", + "integrity": "sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw==", + "license": "Apache-2.0", "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@sigstore/sign": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.0.tgz", - "integrity": "sha512-tsAyV6FC3R3pHmKS880IXcDJuiFJiKITO1jxR1qbplcsBkZLBmjrEw5GbC7ikD6f5RU1hr7WnmxB/2kKc1qUWQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.2.tgz", + "integrity": "sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA==", + "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.3.0", + "@sigstore/bundle": "^2.3.2", "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.1", - "make-fetch-happen": "^13.0.0" + "@sigstore/protobuf-specs": "^0.3.2", + "make-fetch-happen": "^13.0.1", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@sigstore/tuf": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.2.tgz", - "integrity": "sha512-mwbY1VrEGU4CO55t+Kl6I7WZzIl+ysSzEYdA1Nv/FTrl2bkeaPXo5PnWZAVfcY2zSdhOpsUTJW67/M2zHXGn5w==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.4.tgz", + "integrity": "sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw==", + "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.3.0", - "tuf-js": "^2.2.0" + "@sigstore/protobuf-specs": "^0.3.2", + "tuf-js": "^2.2.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@sigstore/verify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.0.tgz", - "integrity": "sha512-hQF60nc9yab+Csi4AyoAmilGNfpXT+EXdBgFkP9OgPwIBPwyqVf7JAWPtmqrrrneTmAT6ojv7OlH1f6Ix5BG4Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.1.tgz", + "integrity": "sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==", + "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.3.1", + "@sigstore/bundle": "^2.3.2", "@sigstore/core": "^1.1.0", - "@sigstore/protobuf-specs": "^0.3.1" + "@sigstore/protobuf-specs": "^0.3.2" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -2299,6 +2273,7 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -2307,402 +2282,433 @@ } }, "node_modules/@smithy/abort-controller": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.2.0.tgz", - "integrity": "sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.0.1.tgz", + "integrity": "sha512-Jb7jg4E+C+uvrUQi+h9kbILY6ts6fglKZzseMCHlH9ayq+1f5QdpYf8MV/xppuiN6DAMJAmwGz53GwP3213dmA==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^2.12.0", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/config-resolver": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.2.0.tgz", - "integrity": "sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==", - "dependencies": { - "@smithy/node-config-provider": "^2.3.0", - "@smithy/types": "^2.12.0", - "@smithy/util-config-provider": "^2.3.0", - "@smithy/util-middleware": "^2.2.0", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.2.tgz", + "integrity": "sha512-wUyG6ezpp2sWAvfqmSYTROwFUmJqKV78GLf55WODrosBcT0BAMd9bOLO4HRhynWBgAobPml2cF9ZOdgCe00r+g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^3.1.1", + "@smithy/types": "^3.1.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/core": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.4.2.tgz", - "integrity": "sha512-2fek3I0KZHWJlRLvRTqxTEri+qV0GRHrJIoLFuBMZB4EMg4WgeBGfF0X6abnrNYpq55KJ6R4D6x4f0vLnhzinA==", - "dependencies": { - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/util-middleware": "^2.2.0", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.2.2.tgz", + "integrity": "sha512-bxZr4ZTqS6hMSQGYdcsfFQTFU0MO2xKLbkqZMSRDM+ruQ0nY00lFJUeLhXe7fqohSEd1y5wKu1Ap0bVJPzpmHg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-endpoint": "^3.0.2", + "@smithy/middleware-retry": "^3.0.5", + "@smithy/middleware-serde": "^3.0.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/smithy-client": "^3.1.3", + "@smithy/types": "^3.1.0", + "@smithy/util-middleware": "^3.0.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/credential-provider-imds": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.3.0.tgz", - "integrity": "sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==", - "dependencies": { - "@smithy/node-config-provider": "^2.3.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.1.1.tgz", + "integrity": "sha512-htndP0LwHdE3R3Nam9ZyVWhwPYOmD4xCL79kqvNxy8u/bv0huuy574CSiRY4cvEICgimv8jlVfLeZ7zZqbnB2g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^3.1.1", + "@smithy/property-provider": "^3.1.1", + "@smithy/types": "^3.1.0", + "@smithy/url-parser": "^3.0.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/fetch-http-handler": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.5.0.tgz", - "integrity": "sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==", - "dependencies": { - "@smithy/protocol-http": "^3.3.0", - "@smithy/querystring-builder": "^2.2.0", - "@smithy/types": "^2.12.0", - "@smithy/util-base64": "^2.3.0", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.0.3.tgz", + "integrity": "sha512-31x2MokxJL/u5U/BdElvVRotOGjUcOOvI2pb5TZ02umBLw+vVHImiLn+khbN0SblaFXNRzPoGrKwXylNjV3skw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^4.0.1", + "@smithy/querystring-builder": "^3.0.1", + "@smithy/types": "^3.1.0", + "@smithy/util-base64": "^3.0.0", "tslib": "^2.6.2" } }, "node_modules/@smithy/hash-node": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.2.0.tgz", - "integrity": "sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.1.tgz", + "integrity": "sha512-w2ncjgk2EYO2+WhAsSQA8owzoOSY7IL1qVytlwpnL1pFGWTjIoIh5nROkEKXY51unB63bMGZqDiVoXaFbyKDlg==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^2.12.0", - "@smithy/util-buffer-from": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", + "@smithy/types": "^3.1.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/invalid-dependency": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.2.0.tgz", - "integrity": "sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.1.tgz", + "integrity": "sha512-RSNF/32BKygXKKMyS7koyuAq1rcdW5p5c4EFa77QenBFze9As+JiRnV9OWBh2cB/ejGZalEZjvIrMLHwJl7aGA==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^2.12.0", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" } }, "node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/middleware-content-length": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.2.0.tgz", - "integrity": "sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.1.tgz", + "integrity": "sha512-6QdK/VbrCfXD5/QolE2W/ok6VqxD+SM28Ds8iSlEHXZwv4buLsvWyvoEEy0322K/g5uFgPzBmZjGqesTmPL+yQ==", + "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^3.3.0", - "@smithy/types": "^2.12.0", + "@smithy/protocol-http": "^4.0.1", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/middleware-endpoint": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.5.1.tgz", - "integrity": "sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==", - "dependencies": { - "@smithy/middleware-serde": "^2.3.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-middleware": "^2.2.0", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.0.2.tgz", + "integrity": "sha512-gWEaGYB3Bei17Oiy/F2IlUPpBazNXImytoOdJ1xbrUOaJKAOiUhx8/4FOnYLLJHdAwa9PlvJ2ULda2f/Dnwi9w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^3.0.1", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/shared-ini-file-loader": "^3.1.1", + "@smithy/types": "^3.1.0", + "@smithy/url-parser": "^3.0.1", + "@smithy/util-middleware": "^3.0.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/middleware-retry": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.3.1.tgz", - "integrity": "sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==", - "dependencies": { - "@smithy/node-config-provider": "^2.3.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/service-error-classification": "^2.1.5", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.5.tgz", + "integrity": "sha512-nKAmmea9Wm0d94obPqVgjxW2zzaNemxcTzjgd17LhGKI23D66UQKI5gpoWDsnE+R4tfuZe9dCcw8gmTVEwFpRA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^3.1.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/service-error-classification": "^3.0.1", + "@smithy/smithy-client": "^3.1.3", + "@smithy/types": "^3.1.0", + "@smithy/util-middleware": "^3.0.1", + "@smithy/util-retry": "^3.0.1", "tslib": "^2.6.2", "uuid": "^9.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/middleware-serde": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.3.0.tgz", - "integrity": "sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.1.tgz", + "integrity": "sha512-ak6H/ZRN05r5+SR0/IUc5zOSyh2qp3HReg1KkrnaSLXmncy9lwOjNqybX4L4x55/e5mtVDn1uf/gQ6bw5neJPw==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^2.12.0", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/middleware-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.2.0.tgz", - "integrity": "sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.1.tgz", + "integrity": "sha512-fS5uT//y1SlBdkzIvgmWQ9FufwMXrHSSbuR25ygMy1CRDIZkcBMoF4oTMYNfR9kBlVBcVzlv7joFdNrFuQirPA==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^2.12.0", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/node-config-provider": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.3.0.tgz", - "integrity": "sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.1.tgz", + "integrity": "sha512-z5G7+ysL4yUtMghUd2zrLkecu0mTfnYlt5dR76g/HsFqf7evFazwiZP1ag2EJenGxNBDwDM5g8nm11NPogiUVA==", + "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "@smithy/property-provider": "^3.1.1", + "@smithy/shared-ini-file-loader": "^3.1.1", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/node-http-handler": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.5.0.tgz", - "integrity": "sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==", - "dependencies": { - "@smithy/abort-controller": "^2.2.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/querystring-builder": "^2.2.0", - "@smithy/types": "^2.12.0", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.0.1.tgz", + "integrity": "sha512-hlBI6MuREA4o1wBMEt+QNhUzoDtFFvwR6ecufimlx9D79jPybE/r8kNorphXOi91PgSO9S2fxRjcKCLk7Jw8zA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^3.0.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/querystring-builder": "^3.0.1", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/property-provider": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.2.0.tgz", - "integrity": "sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.1.tgz", + "integrity": "sha512-YknOMZcQkB5on+MU0DvbToCmT2YPtTETMXW0D3+/Iln7ezT+Zm1GMHhCW1dOH/X/+LkkQD9aXEoCX/B10s4Xdw==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^2.12.0", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/protocol-http": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.3.0.tgz", - "integrity": "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.0.1.tgz", + "integrity": "sha512-eBhm9zwcFPEazc654c0BEWtxYAzrw+OhoSf5pkwKzfftWKXRoqEhwOE2Pvn30v0iAdo7Mfsfb6pi1NnZlGCMpg==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^2.12.0", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/querystring-builder": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.2.0.tgz", - "integrity": "sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.1.tgz", + "integrity": "sha512-vKitpnG/2KOMVlx3x1S3FkBH075EROG3wcrcDaNerQNh8yuqnSL23btCD2UyX4i4lpPzNW6VFdxbn2Z25b/g5Q==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^2.12.0", - "@smithy/util-uri-escape": "^2.2.0", + "@smithy/types": "^3.1.0", + "@smithy/util-uri-escape": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/querystring-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.2.0.tgz", - "integrity": "sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.1.tgz", + "integrity": "sha512-Qt8DMC05lVS8NcQx94lfVbZSX+2Ym7032b/JR8AlboAa/D669kPzqb35dkjkvAG6+NWmUchef3ENtrD6F+5n8Q==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^2.12.0", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/service-error-classification": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.5.tgz", - "integrity": "sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.1.tgz", + "integrity": "sha512-ubFUvIePjDCyIzZ+pLETqNC6KXJ/fc6g+/baqel7Zf6kJI/kZKgjwkCI7zbUhoUuOZ/4eA/87YasVu40b/B4bA==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^2.12.0" + "@smithy/types": "^3.1.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.4.0.tgz", - "integrity": "sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.1.tgz", + "integrity": "sha512-nD6tXIX2126/P9e3wqRY1bm9dTtPZwRDyjVOd18G28o+1UOG+kOVgUwujE795HslSuPlEgqzsH5sgNP1hDjj9g==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^2.12.0", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/signature-v4": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.3.0.tgz", - "integrity": "sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "@smithy/types": "^2.12.0", - "@smithy/util-hex-encoding": "^2.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-uri-escape": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-3.1.0.tgz", + "integrity": "sha512-m0/6LW3IQ3/JBcdhqjpkpABPTPhcejqeAn0U877zxBdNLiWAnG2WmCe5MfkUyVuvpFTPQnQwCo/0ZBR4uF5kxg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/types": "^3.1.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-middleware": "^3.0.1", + "@smithy/util-uri-escape": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/smithy-client": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.5.1.tgz", - "integrity": "sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==", - "dependencies": { - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/types": "^2.12.0", - "@smithy/util-stream": "^2.2.0", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.1.3.tgz", + "integrity": "sha512-YVz+akpR5lIIRPJfhE4sqoHYwMys6/33vsFvDof+71FCwa4jkVfMpzKv9TKrG/EDb5TV+YtjdXkwywdqlUOQXA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-endpoint": "^3.0.2", + "@smithy/middleware-stack": "^3.0.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/types": "^3.1.0", + "@smithy/util-stream": "^3.0.3", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/types": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", - "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.1.0.tgz", + "integrity": "sha512-qi4SeCVOUPjhSSZrxxB/mB8DrmuSFUcJnD9KXjuP+7C3LV/KFV4kpuUSH3OHDZgQB9TEH/1sO/Fq/5HyaK9MPw==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/url-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.2.0.tgz", - "integrity": "sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.1.tgz", + "integrity": "sha512-G140IlNFlzYWVCedC4E2d6NycM1dCUbe5CnsGW1hmGt4hYKiGOw0v7lVru9WAn5T2w09QEjl4fOESWjGmCvVmg==", + "license": "Apache-2.0", "dependencies": { - "@smithy/querystring-parser": "^2.2.0", - "@smithy/types": "^2.12.0", + "@smithy/querystring-parser": "^3.0.1", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" } }, "node_modules/@smithy/util-base64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.3.0.tgz", - "integrity": "sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", + "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", + "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-body-length-browser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.2.0.tgz", - "integrity": "sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", + "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" } }, "node_modules/@smithy/util-body-length-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.3.0.tgz", - "integrity": "sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", + "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", + "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", + "@smithy/is-array-buffer": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-config-provider": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.3.0.tgz", - "integrity": "sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", + "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.2.1.tgz", - "integrity": "sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw==", - "dependencies": { - "@smithy/property-provider": "^2.2.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.5.tgz", + "integrity": "sha512-VZkJ+bXCHcNSMhX8EReGyFcc/Err94YGqeEKbbxkVz2TgKlacsoplpi+kxOMVbQq/tq9sQx5ajBKG+nl2GNuxw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^3.1.1", + "@smithy/smithy-client": "^3.1.3", + "@smithy/types": "^3.1.0", "bowser": "^2.11.0", "tslib": "^2.6.2" }, @@ -2711,16 +2717,17 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.3.1.tgz", - "integrity": "sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA==", - "dependencies": { - "@smithy/config-resolver": "^2.2.0", - "@smithy/credential-provider-imds": "^2.3.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.5.tgz", + "integrity": "sha512-jy19cFQA0k4f8VUDFsZVBey3rmI8EuXCw/xh/abdiq6S1qdwdfZ5coviuyYd//LPszf2yWIYkLpvmLF9qbhLGg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^3.0.2", + "@smithy/credential-provider-imds": "^3.1.1", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/property-provider": "^3.1.1", + "@smithy/smithy-client": "^3.1.3", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { @@ -2728,112 +2735,121 @@ } }, "node_modules/@smithy/util-endpoints": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.2.0.tgz", - "integrity": "sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.2.tgz", + "integrity": "sha512-4zFOcBFQvifd2LSD4a1dKvfIWWwh4sWNtS3oZ7mpob/qPPmJseqKB148iT+hWCDsG//TmI+8vjYPgZdvnkYlTg==", + "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^2.3.0", - "@smithy/types": "^2.12.0", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">= 14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-hex-encoding": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.2.0.tgz", - "integrity": "sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", + "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-middleware": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.2.0.tgz", - "integrity": "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.1.tgz", + "integrity": "sha512-WRODCQtUsO7vIvfrdxS8RFPeLKcewYtaCglZsBsedIKSUGIIvMlZT5oh+pCe72I+1L+OjnZuqRNpN2LKhWA4KQ==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^2.12.0", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-retry": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.2.0.tgz", - "integrity": "sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.1.tgz", + "integrity": "sha512-5lRtYm+8fNFEUTdqZXg5M4ppVp40rMIJfR1TpbHAhKQgPIDpWT+iYMaqgnwEbtpi9U1smyUOPv5Sg+M1neOBgw==", + "license": "Apache-2.0", "dependencies": { - "@smithy/service-error-classification": "^2.1.5", - "@smithy/types": "^2.12.0", + "@smithy/service-error-classification": "^3.0.1", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">= 14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.2.0.tgz", - "integrity": "sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==", - "dependencies": { - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/types": "^2.12.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-buffer-from": "^2.2.0", - "@smithy/util-hex-encoding": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.0.3.tgz", + "integrity": "sha512-ztOvXkXKJromRHNzvrLEW/vvTQPnxPBRHA0gR0QX61LnHDgrm4TBT4EQNpWwwHCD1N0nnEL5bEkzo2dt2t34Kg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^3.0.3", + "@smithy/node-http-handler": "^3.0.1", + "@smithy/types": "^3.1.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-uri-escape": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.2.0.tgz", - "integrity": "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", + "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", + "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-waiter": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.2.0.tgz", - "integrity": "sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.0.1.tgz", + "integrity": "sha512-wwnrVQdjQxvWGOAiLmqlEhENGCcDIN+XJ/+usPOgSZObAslrCXgKlkX7rNVwIWW2RhPguTKthvF+4AoO0Z6KpA==", + "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^2.2.0", - "@smithy/types": "^2.12.0", + "@smithy/abort-controller": "^3.0.1", + "@smithy/types": "^3.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@szmarczak/http-timer": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "license": "MIT", "dependencies": { "defer-to-connect": "^2.0.0" }, @@ -2845,31 +2861,35 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", + "license": "MIT", "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@tufjs/models": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.0.tgz", - "integrity": "sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.1.tgz", + "integrity": "sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==", + "license": "MIT", "dependencies": { "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.3" + "minimatch": "^9.0.4" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@types/aws-lambda": { - "version": "8.10.137", - "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.137.tgz", - "integrity": "sha512-YNFwzVarXAOXkjuFxONyDw1vgRNzyH8AuyN19s0bM+ChSu/bzxb5XPxYFLXoqoM+tvgzwR3k7fXcEOW125yJxg==" + "version": "8.10.140", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.140.tgz", + "integrity": "sha512-4Dh3dk2TUcbdfHrX0Al90mNGJDvA9NBiTQPzbrjGi/dLxzKCGOYgT8YQ47jUKNFALkAJAadifq0pzyjIUlhVhg==", + "license": "MIT" }, "node_modules/@types/cacheable-request": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "license": "MIT", "dependencies": { "@types/http-cache-semantics": "*", "@types/keyv": "^3.1.4", @@ -2880,31 +2900,36 @@ "node_modules/@types/google-protobuf": { "version": "3.15.12", "resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.12.tgz", - "integrity": "sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ==" + "integrity": "sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ==", + "license": "MIT" }, "node_modules/@types/http-cache-semantics": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "license": "MIT" }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/keyv": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/node": { - "version": "20.12.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", - "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", + "version": "20.14.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.5.tgz", + "integrity": "sha512-aoRR+fJkZT2l0aGOJhuA8frnCSoNX6W7U2mpNq63+BxBIj5BQFt8rHy627kijCmm63ijdSdwvGgpUsU6MBsZZA==", + "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } @@ -2913,6 +2938,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -2920,32 +2946,37 @@ "node_modules/@types/semver": { "version": "7.5.8", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==" + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "license": "MIT" }, "node_modules/@types/tmp": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.6.tgz", - "integrity": "sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==" + "integrity": "sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==", + "license": "MIT" }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/abbrev": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -2958,6 +2989,7 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -2966,6 +2998,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "license": "MIT", "dependencies": { "debug": "^4.3.4" }, @@ -2977,6 +3010,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -2990,6 +3024,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3005,6 +3040,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } @@ -3014,6 +3050,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "color-convert": "^1.9.0" @@ -3022,23 +3059,11 @@ "node": ">=4" } }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" - }, - "node_modules/are-we-there-yet": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-4.0.2.tgz", - "integrity": "sha512-ncSWAawFhKMJDTdoAeOV+jyW1VCMj5QIAwULIBV0SSR7B/RLPPEQiknKcg/RIIZlUQrxELpsxMiTUoAQ4sIUyg==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } @@ -3048,6 +3073,7 @@ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "is-array-buffer": "^3.0.4" @@ -3064,6 +3090,7 @@ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -3084,6 +3111,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -3104,6 +3132,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -3122,6 +3151,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -3140,6 +3170,7 @@ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.5", @@ -3161,6 +3192,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -3172,10 +3204,11 @@ } }, "node_modules/aws-sdk": { - "version": "2.1605.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1605.0.tgz", - "integrity": "sha512-/wtOuF7WgkbN6YL3xJ+FB54kvIAfnP/DQVDaE6rSYv6ft0xr01Si94NgQWhb5OcFkFfRAC4auZX8PiFNtOi9xQ==", + "version": "2.1643.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1643.0.tgz", + "integrity": "sha512-1k8W0cU7K9rPwPBzv84Z2IE5aT3jhv3Jswn8XerZliiLl1MTj6F4wjxCeY5BpmAv+Zyy4zM0w98M8vVqKeHEeA==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "buffer": "4.9.2", "events": "1.1.1", @@ -3196,6 +3229,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -3203,7 +3237,8 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", @@ -3222,12 +3257,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/bin-links": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.3.tgz", - "integrity": "sha512-obsRaULtJurnfox/MDwgq6Yo9kzbv1CPTk/1/s7Z/61Lezc8IKkFCOXNeVLXz0456WRzBQmSsDWlai2tIhBsfA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.4.tgz", + "integrity": "sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA==", + "license": "ISC", "dependencies": { "cmd-shim": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", @@ -3241,20 +3278,22 @@ "node_modules/bowser": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", - "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "license": "MIT" }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", "dev": true, "funding": [ { @@ -3270,12 +3309,13 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "peer": true, "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "update-browserslist-db": "^1.0.16" }, "bin": { "browserslist": "cli.js" @@ -3288,6 +3328,7 @@ "version": "4.9.2", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "license": "MIT", "dependencies": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", @@ -3297,58 +3338,23 @@ "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" }, "node_modules/builtin-modules": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.0.0.tgz", "integrity": "sha512-hMIeU4K2ilbXV6Uv93ZZ0Avg/M91RaKXucQ+4me2Do1txxBDyDZWCBa5bJSLqoNTRpXTLwEzIk1KmloenDDjhg==", + "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/builtins": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", - "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", - "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/builtins/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/builtins/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/builtins/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/cacache": { - "version": "18.0.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.2.tgz", - "integrity": "sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw==", + "version": "18.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.3.tgz", + "integrity": "sha512-qXCd4rh6I07cnDqh8V48/94Tc/WSfj+o3Gn6NZ0aZovS255bUx8O13uKxRFd2eWG0xgsco7+YItQNPaa5E85hg==", + "license": "ISC", "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", @@ -3368,9 +3374,10 @@ } }, "node_modules/cacache/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "license": "ISC", "engines": { "node": "14 || >=16.14" } @@ -3379,6 +3386,7 @@ "version": "5.0.4", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "license": "MIT", "engines": { "node": ">=10.6.0" } @@ -3387,6 +3395,7 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "license": "MIT", "dependencies": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", @@ -3404,6 +3413,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -3418,6 +3428,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -3437,14 +3448,15 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001612", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001612.tgz", - "integrity": "sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==", + "version": "1.0.30001636", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz", + "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==", "dev": true, "funding": [ { @@ -3460,6 +3472,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "CC-BY-4.0", "peer": true }, "node_modules/chalk": { @@ -3467,6 +3480,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "ansi-styles": "^3.2.1", @@ -3481,6 +3495,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", "engines": { "node": ">=10" } @@ -3489,6 +3504,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "license": "MIT", "engines": { "node": ">=6" } @@ -3497,6 +3513,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -3510,6 +3527,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -3524,6 +3542,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -3534,17 +3553,20 @@ "node_modules/cliui/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" }, "node_modules/cliui/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, "node_modules/cliui/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -3558,6 +3580,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -3574,6 +3597,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "license": "MIT", "dependencies": { "mimic-response": "^1.0.0" }, @@ -3582,9 +3606,10 @@ } }, "node_modules/cmd-shim": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.2.tgz", - "integrity": "sha512-+FFYbB0YLaAkhkcrjkyNLYDiOsFSfRjwjY19LXk/psmMx1z00xlCv7hhQoTGXXIKi+YXHL/iiFo8NqMVQX9nOw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.3.tgz", + "integrity": "sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA==", + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -3594,6 +3619,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "color-name": "1.1.3" @@ -3604,43 +3630,35 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, + "license": "MIT", "peer": true }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "bin": { - "color-support": "bin.js" - } - }, "node_modules/common-ancestor-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", - "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==" + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", + "license": "ISC" }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + "dev": true, + "license": "MIT" }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -3653,12 +3671,14 @@ "node_modules/cross-spawn/node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" }, "node_modules/cross-spawn/node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -3673,6 +3693,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -3685,6 +3706,7 @@ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -3702,6 +3724,7 @@ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -3719,6 +3742,7 @@ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -3732,9 +3756,10 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -3751,6 +3776,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", "dependencies": { "mimic-response": "^3.1.0" }, @@ -3765,6 +3791,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -3776,12 +3803,14 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/defer-to-connect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "license": "MIT", "engines": { "node": ">=10" } @@ -3790,6 +3819,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -3807,6 +3837,7 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -3825,6 +3856,7 @@ "resolved": "https://registry.npmjs.org/@pulumi/docker/-/docker-3.6.1.tgz", "integrity": "sha512-BZME50QkT556v+LvmTXPT8ssB2xxNkp9+msB5xYFEnUnWcdGAx5yUysQw70RJCb+U0GbkJSbxtlgMJgOQf/now==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "@pulumi/pulumi": "^3.0.0", "semver": "^5.4.0" @@ -3834,6 +3866,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", "bin": { "semver": "bin/semver" } @@ -3843,6 +3876,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -3853,24 +3887,28 @@ "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.4.747", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.747.tgz", - "integrity": "sha512-+FnSWZIAvFHbsNVmUxhEqWiaOiPMcfum1GQzlWCg/wLigVtshOsjXHyEFfmt6cFK6+HkS3QOJBv6/3OPumbBfw==", + "version": "1.4.805", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.805.tgz", + "integrity": "sha512-8W4UJwX/w9T0QSzINJckTKG6CYpAUTqsaWcWIsdud3I1FYJcMgW9QqT1/4CBff/pP/TihWh13OmiyY8neto6vw==", "dev": true, + "license": "ISC", "peer": true }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" }, "node_modules/encoding": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "^0.6.2" @@ -3880,15 +3918,17 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", "dependencies": { "once": "^1.4.0" } }, "node_modules/enhanced-resolve": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", - "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -3901,6 +3941,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", "engines": { "node": ">=6" } @@ -3908,13 +3949,15 @@ "node_modules/err-code": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "license": "MIT" }, "node_modules/es-abstract": { "version": "1.23.3", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", @@ -3974,6 +4017,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -3985,6 +4029,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -3994,6 +4039,7 @@ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -4006,6 +4052,7 @@ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4", "has-tostringtag": "^1.0.2", @@ -4020,6 +4067,7 @@ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.0" } @@ -4029,6 +4077,7 @@ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -4045,6 +4094,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -4054,6 +4104,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=0.8.0" @@ -4064,6 +4115,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -4115,10 +4167,11 @@ } }, "node_modules/eslint-compat-utils": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.0.tgz", - "integrity": "sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.5.4" }, @@ -4129,26 +4182,12 @@ "eslint": ">=6.0.0" } }, - "node_modules/eslint-compat-utils/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint-compat-utils/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -4156,17 +4195,12 @@ "node": ">=10" } }, - "node_modules/eslint-compat-utils/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/eslint-config-prettier": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, + "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -4179,6 +4213,7 @@ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", @@ -4190,6 +4225,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -4199,6 +4235,7 @@ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -4216,26 +4253,29 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-plugin-es-x": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.6.0.tgz", - "integrity": "sha512-I0AmeNgevgaTR7y2lrVCJmGYF0rjoznpDvqV/kIkZSZbZ8Rw3eu4cGlvBBULScfkSOCzqKbff5LR4CNrV7mZHA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.7.0.tgz", + "integrity": "sha512-aP3qj8BwiEDPttxQkZdI221DLKq9sI/qHolE2YSQL1/9+xk7dTV+tB1Fz8/IaCA+lnLA1bDEnvaS2LKs0k2Uig==", "dev": true, + "funding": [ + "https://github.com/sponsors/ota-meshi", + "https://opencollective.com/eslint" + ], + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.1.2", "@eslint-community/regexpp": "^4.6.0", - "eslint-compat-utils": "^0.5.0" + "eslint-compat-utils": "^0.5.1" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - }, "peerDependencies": { "eslint": ">=8" } @@ -4245,6 +4285,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.7", "array.prototype.findlastindex": "^1.2.3", @@ -4276,6 +4317,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4286,6 +4328,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -4295,6 +4338,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -4307,6 +4351,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -4315,13 +4360,14 @@ } }, "node_modules/eslint-plugin-n": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.3.1.tgz", - "integrity": "sha512-25+HTtKe1F8U/M4ERmdzbz/xkm/gaY0OYC8Fcv1z/WvpLJ8Xfh9LzJ13JV5uj4QyCUD8kOPJrNjn/3y+tc57Vw==", + "version": "17.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.9.0.tgz", + "integrity": "sha512-CPSaXDXdrT4nsrOrO4mT4VB6FMUkoySRkHWuuJJHVqsIEjIeZgMY1H7AzSwPbDScikBmLN82KeM1u7ixV7PzGg==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "enhanced-resolve": "^5.15.0", + "enhanced-resolve": "^5.17.0", "eslint-plugin-es-x": "^7.5.0", "get-tsconfig": "^4.7.0", "globals": "^15.0.0", @@ -4340,10 +4386,11 @@ } }, "node_modules/eslint-plugin-n/node_modules/globals": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.0.0.tgz", - "integrity": "sha512-m/C/yR4mjO6pXDTm9/R/SpYTAIyaUB4EOzcaaMEl7mds7Mshct9GfejiJNQGjHHbdMPey13Kpu4TMbYi9ex1pw==", + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.6.0.tgz", + "integrity": "sha512-UzcJi88Hw//CurUIRa9Jxb0vgOCcuD/MNjwmXp633cyaRKkCWACkoqHCtfZv43b1kqXGg/fpOa8bwgacCeXsVg==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -4351,26 +4398,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-n/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint-plugin-n/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -4378,17 +4411,12 @@ "node": ">=10" } }, - "node_modules/eslint-plugin-n/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/eslint-plugin-prettier": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", "dev": true, + "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0", "synckit": "^0.8.6" @@ -4415,15 +4443,19 @@ } }, "node_modules/eslint-plugin-promise": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", - "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.4.0.tgz", + "integrity": "sha512-/KWWRaD3fGkVCZsdR0RU53PSthFmoHVhZl+y9+6DqeDLSikLdlUVpVEAmI6iCRR5QyOjBYBqHZV/bdv4DJ4Gtw==", "dev": true, + "license": "ISC", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, "node_modules/eslint-scope": { @@ -4431,6 +4463,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -4444,6 +4477,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10" } @@ -4453,6 +4487,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -4467,13 +4502,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/eslint/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4484,6 +4521,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4500,6 +4538,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -4511,13 +4550,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4530,6 +4571,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -4546,6 +4588,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -4558,6 +4601,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -4567,6 +4611,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -4582,6 +4627,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -4591,6 +4637,7 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -4603,6 +4650,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -4615,6 +4663,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -4627,6 +4676,7 @@ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -4644,6 +4694,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -4655,6 +4706,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -4668,6 +4720,7 @@ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -4680,6 +4733,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -4689,6 +4743,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -4701,6 +4756,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -4710,6 +4766,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -4719,6 +4776,7 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -4727,6 +4785,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", + "license": "MIT", "engines": { "node": ">=0.4.x" } @@ -4735,6 +4794,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -4756,31 +4816,36 @@ "node_modules/exponential-backoff": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", - "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "license": "Apache-2.0" }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-diff": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-xml-parser": { "version": "4.2.5", @@ -4796,6 +4861,7 @@ "url": "https://github.com/sponsors/NaturalIntelligence" } ], + "license": "MIT", "dependencies": { "strnum": "^1.0.5" }, @@ -4808,6 +4874,7 @@ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -4816,6 +4883,7 @@ "version": "6.1.1", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.1.1.tgz", "integrity": "sha512-QfKBVg453Dyn3mr0Q0O+Tkr1r79lOTAKSi9f/Ot4+qVEwxWhav2Z+SudrG9vQjM2aYRMQQZ2/Q1zdA8ACM1pDg==", + "license": "MIT", "peerDependencies": { "picomatch": "3.x" }, @@ -4830,6 +4898,7 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -4842,6 +4911,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -4858,6 +4928,7 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", @@ -4871,20 +4942,23 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } }, "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -4900,6 +4974,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", "engines": { "node": ">=14" }, @@ -4911,6 +4986,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -4922,12 +4998,14 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4937,6 +5015,7 @@ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -4955,62 +5034,17 @@ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gauge": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-5.0.1.tgz", - "integrity": "sha512-CmykPMJGuNan/3S4kZOpvvPYSNqSHANiWnh9XcMU2pSjtBfF0XzZ2p1bFAxTbnFxyBuPxQYHhzwaoOmUdqzvxQ==", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^4.0.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/gauge/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/gauge/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/gauge/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=6.9.0" @@ -5020,6 +5054,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -5028,6 +5063,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -5046,6 +5082,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -5058,6 +5095,7 @@ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "es-errors": "^1.3.0", @@ -5071,10 +5109,11 @@ } }, "node_modules/get-tsconfig": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz", - "integrity": "sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", + "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", "dev": true, + "license": "MIT", "dependencies": { "resolve-pkg-maps": "^1.0.0" }, @@ -5083,21 +5122,22 @@ } }, "node_modules/glob": { - "version": "10.3.12", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", - "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", + "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.10.2" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -5108,6 +5148,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -5120,18 +5161,21 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=4" } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, + "license": "MIT", "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -5143,12 +5187,14 @@ "node_modules/google-protobuf": { "version": "3.21.2", "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz", - "integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==" + "integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==", + "license": "(BSD-3-Clause AND Apache-2.0)" }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -5160,6 +5206,7 @@ "version": "11.8.6", "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "license": "MIT", "dependencies": { "@sindresorhus/is": "^4.0.0", "@szmarczak/http-timer": "^4.0.5", @@ -5183,19 +5230,22 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5205,6 +5255,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=4" @@ -5214,6 +5265,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -5225,6 +5277,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -5236,6 +5289,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -5247,6 +5301,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -5257,15 +5312,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" - }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -5274,9 +5325,10 @@ } }, "node_modules/hosted-git-info": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", - "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "license": "ISC", "dependencies": { "lru-cache": "^10.0.1" }, @@ -5285,9 +5337,10 @@ } }, "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "license": "ISC", "engines": { "node": "14 || >=16.14" } @@ -5295,12 +5348,14 @@ "node_modules/http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "license": "BSD-2-Clause" }, "node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -5313,6 +5368,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "license": "MIT", "dependencies": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.0.0" @@ -5325,6 +5381,7 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "license": "MIT", "dependencies": { "agent-base": "^7.0.2", "debug": "4" @@ -5337,6 +5394,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } @@ -5345,6 +5403,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -5356,21 +5415,24 @@ "node_modules/ieee754": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "license": "BSD-3-Clause" }, "node_modules/ignore": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/ignore-walk": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.4.tgz", - "integrity": "sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", + "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", + "license": "ISC", "dependencies": { "minimatch": "^9.0.0" }, @@ -5383,6 +5445,7 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -5398,6 +5461,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -5406,6 +5470,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", "engines": { "node": ">=8" } @@ -5414,7 +5479,9 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -5423,12 +5490,14 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" }, "node_modules/ini": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "license": "ISC", "engines": { "node": ">=10" } @@ -5438,6 +5507,7 @@ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.0", @@ -5451,6 +5521,7 @@ "version": "9.0.5", "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "license": "MIT", "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" @@ -5462,12 +5533,14 @@ "node_modules/ip-address/node_modules/sprintf-js": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "license": "BSD-3-Clause" }, "node_modules/is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -5484,6 +5557,7 @@ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1" @@ -5500,6 +5574,7 @@ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, + "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" }, @@ -5512,6 +5587,7 @@ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -5527,6 +5603,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -5538,6 +5615,7 @@ "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "license": "MIT", "dependencies": { "hasown": "^2.0.0" }, @@ -5550,6 +5628,7 @@ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "dev": true, + "license": "MIT", "dependencies": { "is-typed-array": "^1.1.13" }, @@ -5565,6 +5644,7 @@ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -5580,6 +5660,7 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5588,6 +5669,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", "engines": { "node": ">=8" } @@ -5596,6 +5678,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -5611,6 +5694,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -5621,13 +5705,15 @@ "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "license": "MIT" }, "node_modules/is-negative-zero": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -5640,6 +5726,7 @@ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -5655,6 +5742,7 @@ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5664,6 +5752,7 @@ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -5680,6 +5769,7 @@ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7" }, @@ -5694,6 +5784,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", "engines": { "node": ">=8" }, @@ -5706,6 +5797,7 @@ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -5721,6 +5813,7 @@ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -5735,6 +5828,7 @@ "version": "1.1.13", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "license": "MIT", "dependencies": { "which-typed-array": "^1.1.14" }, @@ -5750,6 +5844,7 @@ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -5760,20 +5855,23 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" }, "node_modules/isexe": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "license": "ISC", "engines": { "node": ">=16" } }, "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", + "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -5791,6 +5889,7 @@ "version": "0.16.0", "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", + "license": "Apache-2.0", "engines": { "node": ">= 0.6.0" } @@ -5800,12 +5899,14 @@ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -5817,13 +5918,15 @@ "node_modules/jsbn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "license": "MIT" }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, + "license": "MIT", "peer": true, "bin": { "jsesc": "bin/jsesc" @@ -5835,12 +5938,14 @@ "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT" }, "node_modules/json-parse-even-better-errors": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", - "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "license": "MIT", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -5849,18 +5954,21 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stringify-nice": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==", + "license": "ISC", "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -5870,6 +5978,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "license": "MIT", "peer": true, "bin": { "json5": "lib/cli.js" @@ -5884,22 +5993,26 @@ "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "engines": [ "node >= 0.2.0" - ] + ], + "license": "MIT" }, "node_modules/just-diff": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-6.0.2.tgz", - "integrity": "sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==" + "integrity": "sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==", + "license": "MIT" }, "node_modules/just-diff-apply": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.5.0.tgz", - "integrity": "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==" + "integrity": "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==", + "license": "MIT" }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -5909,6 +6022,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -5922,6 +6036,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -5935,23 +6050,27 @@ "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/long": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "license": "Apache-2.0" }, "node_modules/lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "license": "MIT", "engines": { "node": ">=8" } @@ -5961,15 +6080,17 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, + "license": "ISC", "peer": true, "dependencies": { "yallist": "^3.0.2" } }, "node_modules/make-fetch-happen": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz", - "integrity": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", + "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", + "license": "ISC", "dependencies": { "@npmcli/agent": "^2.0.0", "cacache": "^18.0.0", @@ -5980,6 +6101,7 @@ "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", + "proc-log": "^4.2.0", "promise-retry": "^2.0.1", "ssri": "^10.0.0" }, @@ -5990,12 +6112,14 @@ "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" }, "node_modules/mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -6007,6 +6131,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", "engines": { "node": ">=6" } @@ -6015,6 +6140,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "license": "MIT", "engines": { "node": ">=4" } @@ -6023,6 +6149,7 @@ "version": "9.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6037,14 +6164,16 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -6053,6 +6182,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -6061,9 +6191,10 @@ } }, "node_modules/minipass-fetch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", - "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "license": "MIT", "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", @@ -6080,6 +6211,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -6091,6 +6223,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -6101,37 +6234,14 @@ "node_modules/minipass-flush/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "node_modules/minipass-json-stream/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-json-stream/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" }, "node_modules/minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -6143,6 +6253,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -6153,12 +6264,14 @@ "node_modules/minipass-pipeline/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" }, "node_modules/minipass-sized": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -6170,6 +6283,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -6180,12 +6294,14 @@ "node_modules/minipass-sized/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" }, "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -6198,6 +6314,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -6208,12 +6325,14 @@ "node_modules/minizlib/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -6224,23 +6343,27 @@ "node_modules/module-details-from-path": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", - "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" + "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==", + "license": "MIT" }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6249,6 +6372,7 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.1.0.tgz", "integrity": "sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==", + "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", @@ -6268,24 +6392,20 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/node-gyp/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, + "node_modules/node-gyp/node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "license": "ISC", "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/node-gyp/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -6293,22 +6413,19 @@ "node": ">=10" } }, - "node_modules/node-gyp/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/node-releases": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/nopt": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", - "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "license": "ISC", "dependencies": { "abbrev": "^2.0.0" }, @@ -6320,9 +6437,10 @@ } }, "node_modules/normalize-package-data": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", - "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.1.tgz", + "integrity": "sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ==", + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^7.0.0", "is-core-module": "^2.8.1", @@ -6333,24 +6451,11 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/normalize-package-data/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -6358,15 +6463,11 @@ "node": ">=10" } }, - "node_modules/normalize-package-data/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/normalize-url": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -6375,9 +6476,10 @@ } }, "node_modules/npm-bundled": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", - "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", + "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", + "license": "ISC", "dependencies": { "npm-normalize-package-bin": "^3.0.0" }, @@ -6389,6 +6491,7 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", + "license": "BSD-2-Clause", "dependencies": { "semver": "^7.1.1" }, @@ -6396,24 +6499,11 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-install-checks/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/npm-install-checks/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -6421,15 +6511,11 @@ "node": ">=10" } }, - "node_modules/npm-install-checks/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/npm-normalize-package-bin": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -6438,6 +6524,7 @@ "version": "11.0.2", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.2.tgz", "integrity": "sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw==", + "license": "ISC", "dependencies": { "hosted-git-info": "^7.0.0", "proc-log": "^4.0.0", @@ -6448,32 +6535,11 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm-package-arg/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm-package-arg/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/npm-package-arg/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -6481,15 +6547,11 @@ "node": ">=10" } }, - "node_modules/npm-package-arg/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/npm-packlist": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", + "license": "ISC", "dependencies": { "ignore-walk": "^6.0.4" }, @@ -6498,9 +6560,10 @@ } }, "node_modules/npm-pick-manifest": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.0.0.tgz", - "integrity": "sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.0.1.tgz", + "integrity": "sha512-Udm1f0l2nXb3wxDpKjfohwgdFUSV50UVwzEIpDXVsbDMXVIEF81a/i0UhuQbhrPMMmdiq3+YMFLFIRVLs3hxQw==", + "license": "ISC", "dependencies": { "npm-install-checks": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", @@ -6511,24 +6574,11 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm-pick-manifest/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/npm-pick-manifest/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -6536,21 +6586,17 @@ "node": ">=10" } }, - "node_modules/npm-pick-manifest/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/npm-registry-fetch": { - "version": "16.2.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-16.2.1.tgz", - "integrity": "sha512-8l+7jxhim55S85fjiDGJ1rZXBWGtRLi1OSb4Z3BPLObPuIaeKRlPRiYMSHU4/81ck3t71Z+UwDDl47gcpmfQQA==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-17.1.0.tgz", + "integrity": "sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==", + "license": "ISC", "dependencies": { - "@npmcli/redact": "^1.1.0", + "@npmcli/redact": "^2.0.0", + "jsonparse": "^1.3.1", "make-fetch-happen": "^13.0.0", "minipass": "^7.0.2", "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", "minizlib": "^2.1.2", "npm-package-arg": "^11.0.0", "proc-log": "^4.0.0" @@ -6559,18 +6605,11 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm-registry-fetch/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -6578,25 +6617,12 @@ "node": ">=8" } }, - "node_modules/npmlog": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-7.0.1.tgz", - "integrity": "sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg==", - "dependencies": { - "are-we-there-yet": "^4.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^5.0.0", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6606,6 +6632,7 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -6615,6 +6642,7 @@ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -6633,6 +6661,7 @@ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -6651,6 +6680,7 @@ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -6665,6 +6695,7 @@ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -6681,6 +6712,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -6689,6 +6721,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -6700,17 +6733,18 @@ } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -6720,6 +6754,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "license": "MIT", "engines": { "node": ">=8" } @@ -6729,6 +6764,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -6744,6 +6780,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -6758,6 +6795,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -6769,49 +6807,42 @@ } }, "node_modules/pacote": { - "version": "17.0.7", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-17.0.7.tgz", - "integrity": "sha512-sgvnoUMlkv9xHwDUKjKQFXVyUi8dtJGKp3vg6sYy+TxbDic5RjZCHF3ygv0EJgNRZ2GfRONjlKPUfokJ9lDpwQ==", + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-18.0.6.tgz", + "integrity": "sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==", + "license": "ISC", "dependencies": { "@npmcli/git": "^5.0.0", "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/package-json": "^5.1.0", "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^7.0.0", + "@npmcli/run-script": "^8.0.0", "cacache": "^18.0.0", "fs-minipass": "^3.0.0", "minipass": "^7.0.2", "npm-package-arg": "^11.0.0", "npm-packlist": "^8.0.0", "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^16.0.0", + "npm-registry-fetch": "^17.0.0", "proc-log": "^4.0.0", "promise-retry": "^2.0.1", - "read-package-json": "^7.0.0", - "read-package-json-fast": "^3.0.0", "sigstore": "^2.2.0", "ssri": "^10.0.0", "tar": "^6.1.11" }, "bin": { - "pacote": "lib/bin.js" + "pacote": "bin/index.js" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/pacote/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -6823,6 +6854,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz", "integrity": "sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw==", + "license": "ISC", "dependencies": { "json-parse-even-better-errors": "^3.0.0", "just-diff": "^6.0.0", @@ -6837,6 +6869,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6846,6 +6879,7 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6854,6 +6888,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", "engines": { "node": ">=8" } @@ -6861,42 +6896,47 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" }, "node_modules/path-scurry": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", - "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "license": "ISC", "engines": { "node": "14 || >=16.14" } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true, + "license": "ISC", "peer": true }, "node_modules/picomatch": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -6908,6 +6948,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "license": "MIT", "dependencies": { "find-up": "^6.3.0" }, @@ -6922,6 +6963,7 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "license": "MIT", "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" @@ -6937,6 +6979,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "license": "MIT", "dependencies": { "p-locate": "^6.0.0" }, @@ -6951,6 +6994,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "license": "MIT", "dependencies": { "yocto-queue": "^1.0.0" }, @@ -6965,6 +7009,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "license": "MIT", "dependencies": { "p-limit": "^4.0.0" }, @@ -6979,6 +7024,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -6987,6 +7033,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "license": "MIT", "engines": { "node": ">=12.20" }, @@ -6998,14 +7045,16 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/postcss-selector-parser": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", - "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -7019,15 +7068,17 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", + "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -7043,6 +7094,7 @@ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, + "license": "MIT", "dependencies": { "fast-diff": "^1.1.2" }, @@ -7051,9 +7103,19 @@ } }, "node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/proggy": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/proggy/-/proggy-2.0.0.tgz", + "integrity": "sha512-69agxLtnI8xBs9gUGqEnK26UfiexpHy+KUpBQWabiytQjnn5wFY8rklAi7GRfABIuPNnQ/ik48+LGLkYYJcy4A==", + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -7062,6 +7124,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==", + "license": "ISC", "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -7070,6 +7133,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-3.0.1.tgz", "integrity": "sha512-utl+0x8gIDasV5X+PI5qWEPqH6fJS0pFtQ/4gZ95xfEFb/89dmh+/b895TbFDBLiafBvxD/PGTKfvxl4kH/pQg==", + "license": "ISC", "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -7077,12 +7141,14 @@ "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "license": "ISC" }, "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "license": "MIT", "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -7092,10 +7158,11 @@ } }, "node_modules/protobufjs": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz", - "integrity": "sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.2.tgz", + "integrity": "sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==", "hasInstallScript": true, + "license": "BSD-3-Clause", "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -7118,6 +7185,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -7128,6 +7196,7 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -7159,12 +7228,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -7176,28 +7247,16 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz", "integrity": "sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==", + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/read-package-json": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-7.0.0.tgz", - "integrity": "sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg==", - "dependencies": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, "node_modules/read-package-json-fast": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "license": "ISC", "dependencies": { "json-parse-even-better-errors": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" @@ -7211,6 +7270,7 @@ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "define-properties": "^1.2.1", @@ -7228,6 +7288,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7236,6 +7297,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7244,6 +7306,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.2.0.tgz", "integrity": "sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg==", + "license": "MIT", "dependencies": { "debug": "^4.1.1", "module-details-from-path": "^1.0.3", @@ -7257,6 +7320,7 @@ "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -7272,13 +7336,15 @@ "node_modules/resolve-alpn": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "license": "MIT" }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -7288,6 +7354,7 @@ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } @@ -7296,6 +7363,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "license": "MIT", "dependencies": { "lowercase-keys": "^2.0.0" }, @@ -7307,6 +7375,7 @@ "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "license": "MIT", "engines": { "node": ">= 4" } @@ -7316,6 +7385,7 @@ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -7325,7 +7395,9 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -7341,6 +7413,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -7350,7 +7423,9 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -7371,6 +7446,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -7397,6 +7473,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -7406,6 +7483,7 @@ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "get-intrinsic": "^1.2.4", @@ -7423,13 +7501,15 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/safe-regex-test": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -7446,31 +7526,30 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT", "optional": true }, "node_modules/sax": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" + "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==", + "license": "ISC" }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -7488,6 +7567,7 @@ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -7502,6 +7582,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -7513,6 +7594,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", "engines": { "node": ">=8" } @@ -7520,13 +7602,15 @@ "node_modules/shimmer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", + "license": "BSD-2-Clause" }, "node_modules/side-channel": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -7543,19 +7627,21 @@ "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" }, "node_modules/sigstore": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.3.0.tgz", - "integrity": "sha512-q+o8L2ebiWD1AxD17eglf1pFrl9jtW7FHa0ygqY6EKvibK8JHyq9Z26v9MZXeDiw+RbfOJ9j2v70M10Hd6E06A==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.3.1.tgz", + "integrity": "sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ==", + "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.3.1", + "@sigstore/bundle": "^2.3.2", "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.1", - "@sigstore/sign": "^2.3.0", - "@sigstore/tuf": "^2.3.1", - "@sigstore/verify": "^1.2.0" + "@sigstore/protobuf-specs": "^0.3.2", + "@sigstore/sign": "^2.3.2", + "@sigstore/tuf": "^2.3.4", + "@sigstore/verify": "^1.2.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -7565,6 +7651,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -7574,6 +7661,7 @@ "version": "2.8.3", "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "license": "MIT", "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" @@ -7587,6 +7675,7 @@ "version": "8.0.3", "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", + "license": "MIT", "dependencies": { "agent-base": "^7.1.1", "debug": "^4.3.4", @@ -7600,6 +7689,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -7608,6 +7698,7 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -7617,6 +7708,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -7625,31 +7717,36 @@ "node_modules/spdx-exceptions": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-license-ids": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", - "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==" + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", + "license": "CC0-1.0" }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" }, "node_modules/ssri": { - "version": "10.0.5", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", - "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -7661,6 +7758,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -7678,6 +7776,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7690,12 +7789,14 @@ "node_modules/string-width-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, "node_modules/string-width/node_modules/ansi-regex": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -7707,6 +7808,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -7722,6 +7824,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -7740,6 +7843,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -7754,6 +7858,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -7770,6 +7875,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -7782,6 +7888,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -7794,6 +7901,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -7802,6 +7910,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -7811,6 +7920,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -7821,13 +7931,15 @@ "node_modules/strnum": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "license": "MIT" }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "has-flag": "^3.0.0" @@ -7840,6 +7952,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -7852,6 +7965,7 @@ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", "dev": true, + "license": "MIT", "dependencies": { "@pkgr/core": "^0.1.0", "tslib": "^2.6.2" @@ -7868,6 +7982,7 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -7876,6 +7991,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -7892,6 +8008,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -7903,6 +8020,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -7914,6 +8032,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", "engines": { "node": ">=8" } @@ -7921,18 +8040,21 @@ "node_modules/tar/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tmp": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "license": "MIT", "engines": { "node": ">=14.14" } @@ -7942,6 +8064,7 @@ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=4" @@ -7951,6 +8074,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz", "integrity": "sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==", + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -7960,6 +8084,7 @@ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", @@ -7972,6 +8097,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -7980,18 +8106,20 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" }, "node_modules/tuf-js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.0.tgz", - "integrity": "sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.1.tgz", + "integrity": "sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==", + "license": "MIT", "dependencies": { - "@tufjs/models": "2.0.0", + "@tufjs/models": "2.0.1", "debug": "^4.3.4", - "make-fetch-happen": "^13.0.0" + "make-fetch-happen": "^13.0.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -8002,6 +8130,7 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -8014,6 +8143,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -8026,6 +8156,7 @@ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -8040,6 +8171,7 @@ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -8059,6 +8191,7 @@ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -8079,6 +8212,7 @@ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -8099,6 +8233,7 @@ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -8112,12 +8247,14 @@ "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "license": "MIT" }, "node_modules/unique-filename": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "license": "ISC", "dependencies": { "unique-slug": "^4.0.0" }, @@ -8129,6 +8266,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" }, @@ -8140,15 +8278,16 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "license": "MIT", "engines": { "node": ">=4", "yarn": "*" } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", "dev": true, "funding": [ { @@ -8164,10 +8303,11 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "peer": true, "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -8181,6 +8321,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -8189,6 +8330,7 @@ "version": "0.10.3", "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==", + "license": "MIT", "dependencies": { "punycode": "1.3.2", "querystring": "0.2.0" @@ -8197,12 +8339,14 @@ "node_modules/url/node_modules/punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "license": "MIT" }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -8214,7 +8358,8 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" }, "node_modules/uuid": { "version": "9.0.1", @@ -8224,6 +8369,7 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -8232,18 +8378,17 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, "node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "dependencies": { - "builtins": "^5.0.0" - }, + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -8251,12 +8396,14 @@ "node_modules/walk-up-path": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", - "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==" + "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==", + "license": "ISC" }, "node_modules/which": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, @@ -8272,6 +8419,7 @@ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, + "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -8287,6 +8435,7 @@ "version": "1.1.15", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -8301,36 +8450,21 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/wide-align/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/wide-align/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, "node_modules/wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -8348,6 +8482,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -8364,6 +8499,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8378,6 +8514,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8388,17 +8525,20 @@ "node_modules/wrap-ansi-cjs/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" }, "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -8412,6 +8552,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -8423,6 +8564,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -8434,6 +8576,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -8447,12 +8590,14 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" }, "node_modules/write-file-atomic": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" @@ -8465,6 +8610,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", "engines": { "node": ">=14" }, @@ -8476,6 +8622,7 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "license": "MIT", "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" @@ -8488,6 +8635,7 @@ "version": "11.0.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "license": "MIT", "engines": { "node": ">=4.0" } @@ -8496,6 +8644,7 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", "engines": { "node": ">=10" } @@ -8505,12 +8654,14 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true, + "license": "ISC", "peer": true }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -8528,6 +8679,7 @@ "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", "engines": { "node": ">=12" } @@ -8535,12 +8687,14 @@ "node_modules/yargs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, "node_modules/yargs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -8555,6 +8709,7 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, diff --git a/.ops/aws-setup/package.json b/.ops/aws-setup/package.json index da7ec175c4..469f3ec2ae 100644 --- a/.ops/aws-setup/package.json +++ b/.ops/aws-setup/package.json @@ -10,20 +10,20 @@ "lint:check:prettier": "prettier --check --ignore-path .prettierignore **/*.{css,scss,json,md}" }, "dependencies": { - "@pulumi/pulumi": "3.114.0", - "@pulumi/aws": "6.32.0", - "@pulumi/awsx": "2.9.0" + "@pulumi/pulumi": "3.122.0", + "@pulumi/aws": "6.42.1", + "@pulumi/awsx": "2.13.0" }, "devDependencies": { - "@babel/eslint-parser": "7.24.1", - "@types/node": "20.12.7", + "@babel/eslint-parser": "7.24.7", + "@types/node": "20.14.5", "eslint": "8.57.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-import": "2.29.1", - "eslint-plugin-n": "17.3.1", + "eslint-plugin-n": "17.9.0", "eslint-plugin-prettier": "5.1.3", - "eslint-plugin-promise": "6.1.1", - "prettier": "3.2.5" + "eslint-plugin-promise": "6.4.0", + "prettier": "3.3.2" }, "eslintConfig": { "root": true, diff --git a/.ops/ecamp3-logging/.gitignore b/.ops/ecamp3-logging/.gitignore new file mode 100644 index 0000000000..413d4a36b1 --- /dev/null +++ b/.ops/ecamp3-logging/.gitignore @@ -0,0 +1 @@ +/charts diff --git a/.ops/ecamp3-logging/.helmignore b/.ops/ecamp3-logging/.helmignore new file mode 100644 index 0000000000..78b6b3690b --- /dev/null +++ b/.ops/ecamp3-logging/.helmignore @@ -0,0 +1 @@ +/deploy.sh diff --git a/.ops/ecamp3-logging/Chart.lock b/.ops/ecamp3-logging/Chart.lock new file mode 100644 index 0000000000..81b17466fa --- /dev/null +++ b/.ops/ecamp3-logging/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: fluent-operator + repository: https://fluent.github.io/helm-charts + version: 2.9.0 +digest: sha256:1fa862d7f86a135cf0bdc05acf46d6a50b32a8d3658a6128dabe307ffdf37bdb +generated: "2024-06-15T12:44:22.4681549Z" diff --git a/.ops/ecamp3-logging/Chart.yaml b/.ops/ecamp3-logging/Chart.yaml new file mode 100644 index 0000000000..a25499725c --- /dev/null +++ b/.ops/ecamp3-logging/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +name: ecamp3-logging +description: Helm chart for deploying ecamp3-logging on Kubernetes +home: https://github.com/ecamp/ecamp3 + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +appVersion: 0.1.0 + +dependencies: + - name: fluent-operator + version: 2.9.0 + repository: https://fluent.github.io/helm-charts diff --git a/.ops/ecamp3-logging/README.md b/.ops/ecamp3-logging/README.md new file mode 100644 index 0000000000..f93c253928 --- /dev/null +++ b/.ops/ecamp3-logging/README.md @@ -0,0 +1,41 @@ +# ecamp3-logging + +This is a helm chart to deploy an EFFK Stack (Elasticsearch, fluentbit, fluentd, Kibana) to a cluster where +ecamp3 is running. + +## Prerequisites + +You need to add the fluent helm repository: + +```shell +helm repo add fluent https://fluent.github.io/helm-charts +helm repo update +``` + +## Provisioning of Kibana Configuration + +There are 2 scripts to help create a consistent configuration between +different clusters. You need [curl](https://github.com/curl/curl) and [jq](https://github.com/jqlang/jq) for the scripts +to work. + +To store the current dashboard, index-pattern and search in [kibana-objects.ndjson](files%2Fkibana%2Fkibana-objects.ndjson), +you can do the following: + +```shell +kubectl -n ecamp3-logging port-forward services/kibana 5601:5601 +sh files/kibana/dump-kibana-objects.sh +``` + +To restore [kibana-objects.ndjson](files%2Fkibana%2Fkibana-objects.ndjson) to a cluster, you can do the follwing: + +```shell +kubectl -n ecamp3-logging port-forward services/kibana 5601:5601 +sh files/kibana/restore-kibana-objects.sh +``` + +To diff the deployment +```shell +helm template \ + --namespace ecamp3-logging --no-hooks --skip-tests \ + ecamp3-logging . | kubectl diff --namespace ecamp3-logging -f - | batcat -l diff - +``` diff --git a/.ops/ecamp3-logging/deploy.sh b/.ops/ecamp3-logging/deploy.sh new file mode 100755 index 0000000000..0d09d4db9c --- /dev/null +++ b/.ops/ecamp3-logging/deploy.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +set -e + +SCRIPT_DIR=$(realpath "$(dirname "$0")") +cd $SCRIPT_DIR + +if [ $# -ne 1 ]; then + echo "Usage: $0 " + echo "(or other environments)" + exit 1 +fi + +# to debug: --dry-run --debug +helm dep build +helm upgrade --install ecamp3-logging \ + --namespace=ecamp3-logging \ + --create-namespace \ + $SCRIPT_DIR \ + --values $SCRIPT_DIR/values.yaml \ + --values $SCRIPT_DIR/values-$1.yaml diff --git a/.ops/ecamp3-logging/files/kibana/dump-kibana-objects.sh b/.ops/ecamp3-logging/files/kibana/dump-kibana-objects.sh new file mode 100755 index 0000000000..974670df2e --- /dev/null +++ b/.ops/ecamp3-logging/files/kibana/dump-kibana-objects.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -e + +SCRIPT_DIR=$(realpath "$(dirname "$0")") + +KIBANA_HOST=${KIBANA_HOST:-localhost:5601} + +curl -X POST $KIBANA_HOST/api/saved_objects/_export \ + -H 'kbn-xsrf: true' \ + -H 'Content-Type: application/json' \ + -d ' + { + "type": [ + "dashboard", + "index-pattern", + "search" + ], + "excludeExportDetails": true + }' \ + --silent \ + | jq -S \ + > $SCRIPT_DIR/kibana-objects.ndjson diff --git a/.ops/ecamp3-logging/files/kibana/kibana-objects.ndjson b/.ops/ecamp3-logging/files/kibana/kibana-objects.ndjson new file mode 100644 index 0000000000..50316cb84b --- /dev/null +++ b/.ops/ecamp3-logging/files/kibana/kibana-objects.ndjson @@ -0,0 +1,146 @@ +{ + "attributes": { + "fieldAttrs": "{\"container.name\":{\"count\":2},\"kubernetes.labels.app_kubernetes_io/name\":{\"count\":2},\"kubernetes.labels.app_kubernetes_io/part-of\":{\"count\":1},\"message\":{\"count\":3},\"requestUrl\":{\"count\":1},\"kubernetes.deployment.name\":{\"count\":2},\"kubernetes.labels.app.kubernetes.io/instance\":{\"count\":1},\"kubernetes.pod_name\":{\"count\":1},\"log\":{\"count\":1}}", + "fieldFormatMap": "{}", + "fields": "[]", + "name": "log-index-pattern", + "runtimeFieldMap": "{}", + "sourceFilters": "[]", + "timeFieldName": "@timestamp", + "title": "logstash-*", + "typeMeta": "{}" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2024-04-23T19:38:23.524Z", + "id": "e270616c-823f-485b-b1e5-0d3435383b91", + "managed": false, + "references": [], + "sort": [ + 1713901103524, + 5 + ], + "type": "index-pattern", + "typeMigrationVersion": "8.0.0", + "updated_at": "2024-04-23T19:38:23.524Z", + "version": "WzUsMV0=" +} +{ + "attributes": { + "columns": [ + "kubernetes.labels.app.kubernetes.io/instance", + "kubernetes.pod_name", + "requestUrl", + "escapedUrl", + "escapedUrlWithoutQuery", + "log" + ], + "description": "", + "grid": { + "columns": { + "kubernetes.labels.app.kubernetes.io/instance": { + "width": 143 + }, + "kubernetes.pod_name": { + "width": 174 + } + } + }, + "hideChart": false, + "isTextBasedQuery": false, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "sort": [ + [ + "@timestamp", + "desc" + ] + ], + "timeRestore": false, + "title": "Search", + "usesAdHocDataView": false, + "viewMode": "documents" + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2024-04-23T19:38:23.524Z", + "id": "02e434c0-01a0-11ef-84f3-475f3a574907", + "managed": false, + "references": [ + { + "id": "e270616c-823f-485b-b1e5-0d3435383b91", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "sort": [ + 1713901103524, + 17 + ], + "type": "search", + "typeMigrationVersion": "10.2.0", + "updated_at": "2024-04-23T19:38:23.524Z", + "version": "WzE2LDJd" +} +{ + "attributes": { + "controlGroupInput": { + "chainingSystem": "HIERARCHICAL", + "controlStyle": "oneLine", + "ignoreParentSettingsJSON": "{\"ignoreFilters\":false,\"ignoreQuery\":false,\"ignoreTimerange\":false,\"ignoreValidations\":false}", + "panelsJSON": "{\"cfe99476-a962-4988-8ddf-e2c15995c2a2\":{\"type\":\"optionsListControl\",\"order\":0,\"grow\":true,\"width\":\"medium\",\"explicitInput\":{\"id\":\"cfe99476-a962-4988-8ddf-e2c15995c2a2\",\"fieldName\":\"kubernetes.labels.app.kubernetes.io/instance.keyword\",\"title\":\"Deployment\",\"grow\":true,\"width\":\"medium\",\"selectedOptions\":[],\"enhancements\":{}}}}" + }, + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"8.10.2\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"abec7a0c-b69b-4eae-8f64-9b77d8548555\"},\"panelIndex\":\"abec7a0c-b69b-4eae-8f64-9b77d8548555\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"e270616c-823f-485b-b1e5-0d3435383b91\",\"name\":\"indexpattern-datasource-layer-bb76a1ab-de9b-40ac-bc6c-5eeca64f616b\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"area_stacked\",\"layers\":[{\"layerId\":\"bb76a1ab-de9b-40ac-bc6c-5eeca64f616b\",\"seriesType\":\"area_stacked\",\"accessors\":[\"083fd753-b44b-431d-87ad-e8aa13b2688f\"],\"layerType\":\"data\",\"splitAccessor\":\"603c118f-36b2-4e67-92f3-85c77a133b2e\",\"xAccessor\":\"66fd69ef-88f7-4002-8c09-c1416a5d4d6c\"}],\"valuesInLegend\":false},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"bb76a1ab-de9b-40ac-bc6c-5eeca64f616b\":{\"columns\":{\"603c118f-36b2-4e67-92f3-85c77a133b2e\":{\"label\":\"Top 500 values of json.httpRequest.status\",\"dataType\":\"number\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"json.httpRequest.status\",\"isBucketed\":true,\"params\":{\"size\":500,\"orderBy\":{\"type\":\"alphabetical\",\"fallback\":false},\"orderDirection\":\"asc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false}},\"66fd69ef-88f7-4002-8c09-c1416a5d4d6c\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"5m\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"083fd753-b44b-431d-87ad-e8aa13b2688fX0\":{\"label\":\"Part of unique_count(json.httpRequest.status)\",\"dataType\":\"number\",\"operationType\":\"unique_count\",\"scale\":\"ratio\",\"sourceField\":\"json.httpRequest.status\",\"isBucketed\":false,\"params\":{\"emptyAsNull\":false},\"customLabel\":true},\"083fd753-b44b-431d-87ad-e8aa13b2688f\":{\"label\":\"unique_count(json.httpRequest.status)\",\"dataType\":\"number\",\"operationType\":\"formula\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"formula\":\"unique_count(json.httpRequest.status)\",\"isFormulaBroken\":false},\"references\":[\"083fd753-b44b-431d-87ad-e8aa13b2688fX0\"]}},\"columnOrder\":[\"603c118f-36b2-4e67-92f3-85c77a133b2e\",\"66fd69ef-88f7-4002-8c09-c1416a5d4d6c\",\"083fd753-b44b-431d-87ad-e8aa13b2688f\",\"083fd753-b44b-431d-87ad-e8aa13b2688fX0\"],\"sampling\":0.01,\"ignoreGlobalFilters\":false,\"incompleteColumns\":{}}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"enhancements\":{}}},{\"version\":\"8.10.2\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"2a435cc4-cf49-4522-a01c-5de034306ae0\"},\"panelIndex\":\"2a435cc4-cf49-4522-a01c-5de034306ae0\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsDatatable\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"e270616c-823f-485b-b1e5-0d3435383b91\",\"name\":\"indexpattern-datasource-layer-835bca0b-3409-43fd-b02e-8d90334ea396\"}],\"state\":{\"visualization\":{\"columns\":[{\"columnId\":\"f7399748-ce1c-4df4-89f4-e3e30a67a023\",\"isTransposed\":false},{\"isTransposed\":false,\"columnId\":\"2548689a-01e7-4752-9373-8b3bcb13c670\"},{\"columnId\":\"dfffbbfd-1a5e-409d-9dfd-1cdf36bb6d01\",\"isTransposed\":false},{\"columnId\":\"e5ce64f2-d8df-49aa-9fec-983ead94cb12\",\"isTransposed\":false}],\"layerId\":\"835bca0b-3409-43fd-b02e-8d90334ea396\",\"layerType\":\"data\"},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"835bca0b-3409-43fd-b02e-8d90334ea396\":{\"columns\":{\"f7399748-ce1c-4df4-89f4-e3e30a67a023\":{\"label\":\"90th % of request time\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"json.httpRequest.request_time_seconds\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":90},\"customLabel\":true},\"2548689a-01e7-4752-9373-8b3bcb13c670\":{\"label\":\"#\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"dfffbbfd-1a5e-409d-9dfd-1cdf36bb6d01\":{\"label\":\"Median of request time\",\"dataType\":\"number\",\"operationType\":\"median\",\"sourceField\":\"json.httpRequest.request_time_seconds\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"e5ce64f2-d8df-49aa-9fec-983ead94cb12\":{\"label\":\"Top 20 values of escapedUrl.keyword\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"escapedUrl.keyword\",\"isBucketed\":true,\"params\":{\"size\":20,\"orderBy\":{\"type\":\"column\",\"columnId\":\"f7399748-ce1c-4df4-89f4-e3e30a67a023\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false}}},\"columnOrder\":[\"e5ce64f2-d8df-49aa-9fec-983ead94cb12\",\"f7399748-ce1c-4df4-89f4-e3e30a67a023\",\"dfffbbfd-1a5e-409d-9dfd-1cdf36bb6d01\",\"2548689a-01e7-4752-9373-8b3bcb13c670\"],\"sampling\":1,\"ignoreGlobalFilters\":false,\"incompleteColumns\":{}}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"enhancements\":{}}},{\"version\":\"8.10.2\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"30f417c9-8766-433d-994c-8f1d5a1c25d0\"},\"panelIndex\":\"30f417c9-8766-433d-994c-8f1d5a1c25d0\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsDatatable\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"e270616c-823f-485b-b1e5-0d3435383b91\",\"name\":\"indexpattern-datasource-layer-81072a4c-add7-4e53-86ef-48835dda22fc\"}],\"state\":{\"visualization\":{\"columns\":[{\"columnId\":\"3b58a496-25c2-4214-843a-ea61ff397fd3\",\"isTransposed\":false},{\"columnId\":\"a11ec684-1bc7-422b-a656-e1aea15d9e2b\",\"isTransposed\":false},{\"columnId\":\"12224576-d26b-4fc0-8074-1ad971fe6286\",\"isTransposed\":false},{\"columnId\":\"62cef7d1-2da6-460e-bd1f-2f40fc9a545c\",\"isTransposed\":false}],\"layerId\":\"81072a4c-add7-4e53-86ef-48835dda22fc\",\"layerType\":\"data\"},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"81072a4c-add7-4e53-86ef-48835dda22fc\":{\"columns\":{\"3b58a496-25c2-4214-843a-ea61ff397fd3\":{\"label\":\"200 Response\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"json.httpRequest.status\",\"filter\":{\"query\":\"json.httpRequest.status >= 200 and json.httpRequest.status < 300\",\"language\":\"kuery\"},\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"a11ec684-1bc7-422b-a656-e1aea15d9e2b\":{\"label\":\"500 Responses\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"filter\":{\"query\":\"json.httpRequest.status >= 500\",\"language\":\"kuery\"},\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"12224576-d26b-4fc0-8074-1ad971fe6286\":{\"label\":\"400 Responses\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"filter\":{\"query\":\"json.httpRequest.status >= 400 AND json.httpRequest.status < 500\",\"language\":\"kuery\"},\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"62cef7d1-2da6-460e-bd1f-2f40fc9a545c\":{\"label\":\"Top 20 values of escapedUrlWithoutQuery.keyword\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"escapedUrlWithoutQuery.keyword\",\"isBucketed\":true,\"params\":{\"size\":20,\"orderBy\":{\"type\":\"column\",\"columnId\":\"a11ec684-1bc7-422b-a656-e1aea15d9e2b\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false}}},\"columnOrder\":[\"62cef7d1-2da6-460e-bd1f-2f40fc9a545c\",\"3b58a496-25c2-4214-843a-ea61ff397fd3\",\"12224576-d26b-4fc0-8074-1ad971fe6286\",\"a11ec684-1bc7-422b-a656-e1aea15d9e2b\"],\"sampling\":1,\"ignoreGlobalFilters\":false,\"incompleteColumns\":{}}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"enhancements\":{}}},{\"version\":\"8.10.2\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"f8ee43e1-4387-45e6-80be-c0301a4dc991\"},\"panelIndex\":\"f8ee43e1-4387-45e6-80be-c0301a4dc991\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsDatatable\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"e270616c-823f-485b-b1e5-0d3435383b91\",\"name\":\"indexpattern-datasource-layer-835bca0b-3409-43fd-b02e-8d90334ea396\"}],\"state\":{\"visualization\":{\"columns\":[{\"columnId\":\"f7399748-ce1c-4df4-89f4-e3e30a67a023\",\"isTransposed\":false},{\"isTransposed\":false,\"columnId\":\"2548689a-01e7-4752-9373-8b3bcb13c670\"},{\"columnId\":\"dfffbbfd-1a5e-409d-9dfd-1cdf36bb6d01\",\"isTransposed\":false},{\"columnId\":\"6a02ef93-f314-42f2-bca1-65af849ad659\",\"isTransposed\":false}],\"layerId\":\"835bca0b-3409-43fd-b02e-8d90334ea396\",\"layerType\":\"data\"},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"835bca0b-3409-43fd-b02e-8d90334ea396\":{\"columns\":{\"f7399748-ce1c-4df4-89f4-e3e30a67a023\":{\"label\":\"90th % of request time\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"json.httpRequest.request_time_seconds\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":90},\"customLabel\":true},\"2548689a-01e7-4752-9373-8b3bcb13c670\":{\"label\":\"#\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"dfffbbfd-1a5e-409d-9dfd-1cdf36bb6d01\":{\"label\":\"Median of request time\",\"dataType\":\"number\",\"operationType\":\"median\",\"sourceField\":\"json.httpRequest.request_time_seconds\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"6a02ef93-f314-42f2-bca1-65af849ad659\":{\"label\":\"Top 20 values of escapedUrlWithoutQuery.keyword\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"escapedUrlWithoutQuery.keyword\",\"isBucketed\":true,\"params\":{\"size\":20,\"orderBy\":{\"type\":\"column\",\"columnId\":\"f7399748-ce1c-4df4-89f4-e3e30a67a023\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false,\"secondaryFields\":[]}}},\"columnOrder\":[\"6a02ef93-f314-42f2-bca1-65af849ad659\",\"f7399748-ce1c-4df4-89f4-e3e30a67a023\",\"dfffbbfd-1a5e-409d-9dfd-1cdf36bb6d01\",\"2548689a-01e7-4752-9373-8b3bcb13c670\"],\"sampling\":1,\"ignoreGlobalFilters\":false,\"incompleteColumns\":{}}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"enhancements\":{}},\"title\":\"\"},{\"version\":\"8.10.2\",\"type\":\"search\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"40571518-d954-4816-be14-f9583498400b\"},\"panelIndex\":\"40571518-d954-4816-be14-f9583498400b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_40571518-d954-4816-be14-f9583498400b\"}]", + "timeRestore": false, + "title": "ecamp3", + "version": 1 + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2024-04-23T19:38:23.524Z", + "id": "cbf725c0-705f-11ee-bdbe-0de3df9703e1", + "managed": false, + "references": [ + { + "id": "e270616c-823f-485b-b1e5-0d3435383b91", + "name": "abec7a0c-b69b-4eae-8f64-9b77d8548555:indexpattern-datasource-layer-bb76a1ab-de9b-40ac-bc6c-5eeca64f616b", + "type": "index-pattern" + }, + { + "id": "e270616c-823f-485b-b1e5-0d3435383b91", + "name": "2a435cc4-cf49-4522-a01c-5de034306ae0:indexpattern-datasource-layer-835bca0b-3409-43fd-b02e-8d90334ea396", + "type": "index-pattern" + }, + { + "id": "e270616c-823f-485b-b1e5-0d3435383b91", + "name": "30f417c9-8766-433d-994c-8f1d5a1c25d0:indexpattern-datasource-layer-81072a4c-add7-4e53-86ef-48835dda22fc", + "type": "index-pattern" + }, + { + "id": "e270616c-823f-485b-b1e5-0d3435383b91", + "name": "f8ee43e1-4387-45e6-80be-c0301a4dc991:indexpattern-datasource-layer-835bca0b-3409-43fd-b02e-8d90334ea396", + "type": "index-pattern" + }, + { + "id": "02e434c0-01a0-11ef-84f3-475f3a574907", + "name": "40571518-d954-4816-be14-f9583498400b:panel_40571518-d954-4816-be14-f9583498400b", + "type": "search" + }, + { + "id": "e270616c-823f-485b-b1e5-0d3435383b91", + "name": "controlGroup_cfe99476-a962-4988-8ddf-e2c15995c2a2:optionsListDataView", + "type": "index-pattern" + } + ], + "sort": [ + 1713901103524, + 14 + ], + "type": "dashboard", + "typeMigrationVersion": "8.9.0", + "updated_at": "2024-04-23T19:38:23.524Z", + "version": "WzcsMV0=" +} diff --git a/.ops/ecamp3-logging/files/kibana/restore-kibana-objects.sh b/.ops/ecamp3-logging/files/kibana/restore-kibana-objects.sh new file mode 100755 index 0000000000..330bcd5e41 --- /dev/null +++ b/.ops/ecamp3-logging/files/kibana/restore-kibana-objects.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +SCRIPT_DIR=$(realpath "$(dirname "$0")") + +KIBANA_HOST=${KIBANA_HOST:-localhost:5601} + +tmp_file=/tmp/$(uuidgen).ndjson + +cat $SCRIPT_DIR/kibana-objects.ndjson | jq -c > $tmp_file + +curl -X POST "$KIBANA_HOST/api/saved_objects/_import?createNewCopies=false&overwrite=true" \ + -H "kbn-xsrf: true" \ + --form file=@$tmp_file diff --git a/.ops/ecamp3-logging/templates/_helpers.tpl b/.ops/ecamp3-logging/templates/_helpers.tpl new file mode 100644 index 0000000000..1f753487a7 --- /dev/null +++ b/.ops/ecamp3-logging/templates/_helpers.tpl @@ -0,0 +1,20 @@ +{{/* +Common labels +*/}} +{{- define "app.commonLabels" -}} +chart: {{ .Chart.Name }} +helm.sh/chart: {{ .Chart.Name }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Common selector labels +*/}} +{{- define "app.commonSelectorLabels" -}} +app.kubernetes.io/instance: {{ .Release.Name }} +app.kubernetes.io/part-of: {{ .Chart.Name }} +chart: {{ .Chart.Name }} +{{- end }} diff --git a/.ops/ecamp3-logging/templates/elasticsearch/elasticsearch_service.yaml b/.ops/ecamp3-logging/templates/elasticsearch/elasticsearch_service.yaml new file mode 100644 index 0000000000..54ad1ec93e --- /dev/null +++ b/.ops/ecamp3-logging/templates/elasticsearch/elasticsearch_service.yaml @@ -0,0 +1,19 @@ +kind: Service +apiVersion: v1 +metadata: + name: elasticsearch + namespace: {{ .Release.Namespace }} + labels: + app: elasticsearch + {{- include "app.commonLabels" . | nindent 4 }} + {{- include "app.commonSelectorLabels" . | nindent 4 }} +spec: + selector: + app: elasticsearch + {{- include "app.commonSelectorLabels" . | nindent 4 }} + clusterIP: None + ports: + - port: 9200 + name: rest + - port: 9300 + name: inter-node diff --git a/.ops/ecamp3-logging/templates/elasticsearch/elasticsearch_stateful_set.yaml b/.ops/ecamp3-logging/templates/elasticsearch/elasticsearch_stateful_set.yaml new file mode 100644 index 0000000000..28e52bdbcb --- /dev/null +++ b/.ops/ecamp3-logging/templates/elasticsearch/elasticsearch_stateful_set.yaml @@ -0,0 +1,88 @@ +{{- $resourceLimitInMb := .Values.elasticsearch.elasticNode.resources.limits.memory | replace "Mi" "" | int -}} +{{- $javaResources := div $resourceLimitInMb 2 -}} +{{- $minHeapSpace := $javaResources -}} +{{- $maxHeapSpace := $javaResources -}} + +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: elasticsearch-cluster + namespace: {{ .Release.Namespace }} + labels: + {{- include "app.commonLabels" . | nindent 4 }} + {{- include "app.commonSelectorLabels" . | nindent 4 }} +spec: + serviceName: elasticsearch + replicas: 1 + selector: + matchLabels: + app: elasticsearch + {{- include "app.commonSelectorLabels" . | nindent 6 }} + template: + metadata: + labels: + app: elasticsearch + {{- include "app.commonLabels" . | nindent 8 }} + {{- include "app.commonSelectorLabels" . | nindent 8 }} + spec: + containers: + - name: elasticsearch + image: "docker.elastic.co/elasticsearch/elasticsearch:{{ .Values.elastic.version }}" + resources: + {{- toYaml .Values.elasticsearch.elasticNode.resources | nindent 12 }} + ports: + - containerPort: 9200 + name: rest + protocol: TCP + - containerPort: 9300 + name: inter-node + protocol: TCP + volumeMounts: + - name: data + mountPath: /usr/share/elasticsearch/data + env: + - name: cluster.name + value: ecamp3-logs + - name: xpack.security.enabled + value: "false" + - name: node.name + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: cluster.initial_master_nodes + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: ES_JAVA_OPTS + value: "-Xms{{ $minHeapSpace }}m -Xmx{{ $maxHeapSpace }}m" + initContainers: + - name: fix-permissions + image: busybox + command: [ "sh", "-c", "chown -R 1000:1000 /usr/share/elasticsearch/data" ] + securityContext: + privileged: true + volumeMounts: + - name: data + mountPath: /usr/share/elasticsearch/data + - name: increase-vm-max-map + image: busybox + command: [ "sysctl", "-w", "vm.max_map_count=262144" ] + securityContext: + privileged: true + - name: increase-fd-ulimit + image: busybox + command: [ "sh", "-c", "ulimit -n 65536" ] + securityContext: + privileged: true + volumeClaimTemplates: + - metadata: + name: data + labels: + app: elasticsearch + {{- include "app.commonLabels" . | nindent 10 }} + {{- include "app.commonSelectorLabels" . | nindent 10 }} + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: {{ .Values.elasticsearch.persistence.storageClassName }} + resources: + {{- toYaml .Values.elasticsearch.persistence.resources | nindent 10 }} diff --git a/.ops/ecamp3-logging/templates/fluentd/fluentd_clusterfilter.yaml b/.ops/ecamp3-logging/templates/fluentd/fluentd_clusterfilter.yaml new file mode 100644 index 0000000000..b6218ef2c5 --- /dev/null +++ b/.ops/ecamp3-logging/templates/fluentd/fluentd_clusterfilter.yaml @@ -0,0 +1,50 @@ +# from: https://stackoverflow.com/questions/41991128/parsing-inner-json-inside-fluentd +apiVersion: fluentd.fluent.io/v1alpha1 +kind: ClusterFilter +metadata: + name: cluster-filters + labels: + filter.fluentd.fluent.io/enabled: "true" + {{- include "app.commonLabels" . | nindent 4 }} + {{- include "app.commonSelectorLabels" . | nindent 4 }} +spec: + filters: + - customPlugin: + config: | + + @type parser + key_name log + reserve_data true + remove_key_name_field false + hash_value_field json + + @type multi_format + + format json + + + format none + + + + + @type record_transformer + enable_ruby + + requestUrl ${if record['json'] && record['json']['httpRequest'] && record['json']['httpRequest']['requestUrl']; then record['json']['httpRequest']['requestUrl']; else nil; end} + + + + @type record_transformer + enable_ruby + + escapedUrl ${if record['requestUrl']; then record['requestUrl'].gsub(/\/[0-9a-f]{6,}\/?/, "/{id}/").gsub(/%2F[0-9a-f]{6,}(%2F)?/, "%2F{id}%2F"); else nil; end} + + + + @type record_transformer + enable_ruby + + escapedUrlWithoutQuery ${if record['escapedUrl']; then record['escapedUrl'].gsub(/\?.*$/, ""); else nil; end} + + diff --git a/.ops/ecamp3-logging/templates/fluentd/fluentd_output_elasticsearch.yaml b/.ops/ecamp3-logging/templates/fluentd/fluentd_output_elasticsearch.yaml new file mode 100644 index 0000000000..61558b2627 --- /dev/null +++ b/.ops/ecamp3-logging/templates/fluentd/fluentd_output_elasticsearch.yaml @@ -0,0 +1,24 @@ +{{- if .Values.fluentd.output.elasticsearch.enable -}} +apiVersion: fluentd.fluent.io/v1alpha1 +kind: ClusterOutput +metadata: + name: fluentd-output-elasticsearch + labels: + output.fluentd.fluent.io/enabled: "true" + {{- include "app.commonLabels" . | nindent 4 }} + {{- include "app.commonSelectorLabels" . | nindent 4 }} +spec: + outputs: + - elasticsearch: + host: {{ .Values.fluentd.output.elasticsearch.host }} + port: {{ .Values.fluentd.output.elasticsearch.port }} + scheme: {{ .Values.fluentd.output.elasticsearch.scheme }} + logstashFormat: true + logstashPrefix: {{ .Values.fluentd.output.elasticsearch.logstashPrefix }} + sslVerify: {{ .Values.fluentd.output.elasticsearch.sslVerify }} + {{- if .Values.fluentd.output.elasticsearch.buffer }} + buffer: + type: {{ .Values.fluentd.output.elasticsearch.buffer.type }} + path: {{ .Values.fluentd.output.elasticsearch.buffer.path }} + {{- end }} +{{- end }} diff --git a/.ops/ecamp3-logging/templates/kibana/kibana_deployment.yaml b/.ops/ecamp3-logging/templates/kibana/kibana_deployment.yaml new file mode 100644 index 0000000000..04e45f5f27 --- /dev/null +++ b/.ops/ecamp3-logging/templates/kibana/kibana_deployment.yaml @@ -0,0 +1,32 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: kibana + namespace: {{ .Release.Namespace }} + labels: + app: kibana + {{- include "app.commonLabels" . | nindent 4 }} + {{- include "app.commonSelectorLabels" . | nindent 4 }} +spec: + replicas: 1 + selector: + matchLabels: + app: kibana + {{- include "app.commonSelectorLabels" . | nindent 6 }} + template: + metadata: + labels: + app: kibana + {{- include "app.commonLabels" . | nindent 8 }} + {{- include "app.commonSelectorLabels" . | nindent 8 }} + spec: + containers: + - name: kibana + image: "docker.elastic.co/kibana/kibana:{{ .Values.elastic.version }}" + resources: + {{- toYaml .Values.elasticsearch.elasticNode.resources | nindent 12 }} + env: + - name: ELASTICSEARCH_URL + value: http://elasticsearch:9200 + ports: + - containerPort: 5601 diff --git a/.ops/ecamp3-logging/templates/kibana/kibana_service.yaml b/.ops/ecamp3-logging/templates/kibana/kibana_service.yaml new file mode 100644 index 0000000000..aba8fb94a7 --- /dev/null +++ b/.ops/ecamp3-logging/templates/kibana/kibana_service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: kibana + namespace: {{ .Release.Namespace }} + labels: + app: kibana + {{- include "app.commonLabels" . | nindent 4 }} + {{- include "app.commonSelectorLabels" . | nindent 4 }} +spec: + ports: + - port: 5601 + selector: + app: kibana + {{- include "app.commonSelectorLabels" . | nindent 4 }} diff --git a/.caddy/config-cache/.gitkeep b/.ops/ecamp3-logging/values-dev.yaml similarity index 100% rename from .caddy/config-cache/.gitkeep rename to .ops/ecamp3-logging/values-dev.yaml diff --git a/.ops/ecamp3-logging/values-prod.yaml b/.ops/ecamp3-logging/values-prod.yaml new file mode 100644 index 0000000000..e7d28e085b --- /dev/null +++ b/.ops/ecamp3-logging/values-prod.yaml @@ -0,0 +1,7 @@ +elasticsearch: + elasticNode: + resources: + requests: + memory: 1500Mi + limits: + memory: 1500Mi diff --git a/.ops/ecamp3-logging/values.yaml b/.ops/ecamp3-logging/values.yaml new file mode 100644 index 0000000000..3cbbffd45a --- /dev/null +++ b/.ops/ecamp3-logging/values.yaml @@ -0,0 +1,57 @@ +fluent-operator: + containerRuntime: containerd + fluentbit: + enable: true + input: + tail: + enable: true + systemd: + enable: false + filter: + kubernetes: + labels: true + annotations: true + output: + stdout: + # enable to debug fluentbit + enable: false + fluentd: + watchedNamespaces: + - default + - ingress-nginx + enable: true + +fluentd: + output: + elasticsearch: + enable: true + scheme: http + host: "elasticsearch.ecamp3-logging.svc.cluster.local" + port: 9200 + index: "kubernetes" + suppressTypeName: true + +elastic: + version: 8.13.2 + +elasticsearch: + elasticNode: + resources: + requests: + memory: 1000Mi + limits: + memory: 1000Mi + persistence: + storageClassName: do-block-storage + resources: + requests: + storage: 10Gi + +kibana: + name: kibana + version: + resources: + requests: + memory: 500Mi + limits: + memory: 1Gi diff --git a/.ops/observability/prometheus-values-dev.yml b/.ops/observability/prometheus-values-dev.yml index e20b3f6a45..892f22954a 100644 --- a/.ops/observability/prometheus-values-dev.yml +++ b/.ops/observability/prometheus-values-dev.yml @@ -31,6 +31,16 @@ prometheus: - default endpoints: - port: "api-metrics" + - name: "varnish" + selector: + matchLabels: + app.kubernetes.io/instance: ecamp3-dev + app.kubernetes.io/name: ecamp3-api-cache + namespaceSelector: + matchNames: + - default + endpoints: + - port: "api-cache-metrics" prometheusSpec: storageSpec: volumeClaimTemplate: diff --git a/.ops/ops-dashboard/.gitignore b/.ops/ops-dashboard/.gitignore new file mode 100644 index 0000000000..1c8f7e5516 --- /dev/null +++ b/.ops/ops-dashboard/.gitignore @@ -0,0 +1,2 @@ +/charts +/values.access.yaml diff --git a/.ops/ops-dashboard/.helmignore b/.ops/ops-dashboard/.helmignore new file mode 100644 index 0000000000..da0a9bca95 --- /dev/null +++ b/.ops/ops-dashboard/.helmignore @@ -0,0 +1,2 @@ +/deploy.sh +/values.access.yaml diff --git a/.ops/ops-dashboard/Chart.lock b/.ops/ops-dashboard/Chart.lock new file mode 100644 index 0000000000..500c7ee2a5 --- /dev/null +++ b/.ops/ops-dashboard/Chart.lock @@ -0,0 +1,15 @@ +dependencies: +- name: oauth2-proxy + repository: https://oauth2-proxy.github.io/manifests + version: 7.7.8 +- name: kubernetes-dashboard + repository: https://kubernetes.github.io/dashboard/ + version: 7.5.0 +- name: oauth2-proxy + repository: https://oauth2-proxy.github.io/manifests + version: 7.7.8 +- name: oauth2-proxy + repository: https://oauth2-proxy.github.io/manifests + version: 7.7.8 +digest: sha256:f9b17e1baea84cb28bc95ced9cb03677fe2958a5e84f64417752dd7713e89946 +generated: "2024-06-27T17:28:04.700183132Z" diff --git a/.ops/ops-dashboard/Chart.yaml b/.ops/ops-dashboard/Chart.yaml new file mode 100644 index 0000000000..1d6f933464 --- /dev/null +++ b/.ops/ops-dashboard/Chart.yaml @@ -0,0 +1,41 @@ +apiVersion: v2 +name: ops-dashboard +description: Helm chart for deploying ops-dashboard cluster +home: https://github.com/ecamp/ecamp3 + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +appVersion: 0.1.0 + +dependencies: + - name: oauth2-proxy + alias: grafana-proxy + version: 7.7.8 + repository: https://oauth2-proxy.github.io/manifests + - name: kubernetes-dashboard + version: 7.5.0 + repository: https://kubernetes.github.io/dashboard/ + - name: oauth2-proxy + alias: kubernetes-dashboard-proxy + version: 7.7.8 + repository: https://oauth2-proxy.github.io/manifests + - name: oauth2-proxy + alias: logging-proxy + version: 7.7.8 + repository: https://oauth2-proxy.github.io/manifests diff --git a/.ops/ops-dashboard/README.md b/.ops/ops-dashboard/README.md new file mode 100644 index 0000000000..c836b3f7bb --- /dev/null +++ b/.ops/ops-dashboard/README.md @@ -0,0 +1,44 @@ +# ops-dashboard + +This is a helm chart to deploy an oauth2-proxy and a homer dashboard. +Then the ecamp3-developers can use their github login +to see our applications like graphana, kibana, kubernetes-dashboard... + +## Prerequisites + +You need the oauth2-proxy helm chart: + +```shell +helm repo add oauth2-proxy https://oauth2-proxy.github.io/manifests +helm repo update +``` + +You also need the kubernetes-dashboard helm chart: + +```shell +helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/ +helm repo update +``` + +## Deployment + +First, make sure you don't overwrite the configuration currently applied: + +```shell +helm -n ops-dashboard get values ops-dashboard +``` + +Fill in the values for values.access.yaml according to demo.values.access.yaml + +```shell +cp demo.values.access.yaml values.access.yaml +``` + +To diff the deployment +```shell +helm template \ + --namespace ops-dashboard --no-hooks --skip-tests \ + ops-dashboard . \ + --values values.yaml \ + --values values.access.yaml | kubectl diff --namespace ops-dashboard -f - | batcat -l diff - +``` diff --git a/.ops/ops-dashboard/demo.values.access.yaml b/.ops/ops-dashboard/demo.values.access.yaml new file mode 100644 index 0000000000..10ef4e3b6e --- /dev/null +++ b/.ops/ops-dashboard/demo.values.access.yaml @@ -0,0 +1,46 @@ +grafana-proxy: + ingress: + hosts: + # dev, stage or prod grafana url + - dev-grafana.ecamp3.ch + extraArgs: + # dev, stage or prod grafana url + whitelist-domain: dev-grafana.ecamp3.ch + config: + # OAuth client ID + clientID: "" + # OAuth client secret + clientSecret: "" + # Create a new secret with the following command + # openssl rand -base64 32 | head -c 32 | base64 + cookieSecret: "" +kubernetes-dashboard-proxy: + ingress: + hosts: + # dev, stage or prod kubernetes-dashboard url + - dev-kubernetes-dashboard.ecamp3.ch + extraArgs: + # dev, stage or prod kubernetes-dashboard url + whitelist-domain: dev-kubernetes-dashboard.ecamp3.ch + config: + # OAuth client ID + clientID: "" + # OAuth client secret + clientSecret: "" + # use the same cookieSecret as above + cookieSecret: "" +logging-proxy: + config: + # OAuth client ID + clientID: + # OAuth client secret + clientSecret: + # use the same cookieSecret as above + cookieSecret: + extraArgs: + # dev, stage or prod kubernetes-dashboard url + whitelist-domain: dev-logging.ecamp3.ch + ingress: + hosts: + # dev, stage or prod kubernetes-dashboard url + - dev-logging.ecamp3.ch diff --git a/.ops/ops-dashboard/deploy.sh b/.ops/ops-dashboard/deploy.sh new file mode 100755 index 0000000000..806b773556 --- /dev/null +++ b/.ops/ops-dashboard/deploy.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -e + +SCRIPT_DIR=$(realpath "$(dirname "$0")") +cd $SCRIPT_DIR + +# to debug: --dry-run --debug +helm dep build && helm upgrade --install ops-dashboard --namespace=ops-dashboard --create-namespace $SCRIPT_DIR --values $SCRIPT_DIR/values.yaml --values $SCRIPT_DIR/values.access.yaml diff --git a/.ops/ops-dashboard/templates/kubernetes_dashboard_cluster_admin_cluster_role_binding.yaml b/.ops/ops-dashboard/templates/kubernetes_dashboard_cluster_admin_cluster_role_binding.yaml new file mode 100644 index 0000000000..fbf107f55f --- /dev/null +++ b/.ops/ops-dashboard/templates/kubernetes_dashboard_cluster_admin_cluster_role_binding.yaml @@ -0,0 +1,13 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: kubernetes-dashboard-admin-user + namespace: {{ .Release.Namespace }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-admin +subjects: + - kind: ServiceAccount + name: kubernetes-dashboard-admin-user + namespace: {{ .Release.Namespace }} diff --git a/.ops/ops-dashboard/templates/kubernetes_dashboard_cluster_admin_user.yaml b/.ops/ops-dashboard/templates/kubernetes_dashboard_cluster_admin_user.yaml new file mode 100644 index 0000000000..c2af68339e --- /dev/null +++ b/.ops/ops-dashboard/templates/kubernetes_dashboard_cluster_admin_user.yaml @@ -0,0 +1,5 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: kubernetes-dashboard-admin-user + namespace: {{ .Release.Namespace }} diff --git a/.ops/ops-dashboard/values.yaml b/.ops/ops-dashboard/values.yaml new file mode 100644 index 0000000000..9b64e924a0 --- /dev/null +++ b/.ops/ops-dashboard/values.yaml @@ -0,0 +1,25 @@ +grafana-proxy: + ingress: + enabled: true + className: nginx + extraArgs: + provider: github + github-org: ecamp + upstream: http://kube-prometheus-stack-grafana.kube-prometheus-stack.svc.cluster.local:80 +kubernetes-dashboard-proxy: + ingress: + enabled: true + className: nginx + extraArgs: + provider: github + github-org: ecamp + upstream: https://ops-dashboard-kong-proxy.ops-dashboard.svc.cluster.local + ssl-upstream-insecure-skip-verify: true +logging-proxy: + ingress: + enabled: true + className: nginx + extraArgs: + provider: github + github-org: ecamp + upstream: http://kibana.ecamp3-logging.svc.cluster.local:5601 diff --git a/.vscode/launch.json b/.vscode/launch.json index 59a1fa179e..d41e061217 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -12,7 +12,7 @@ "port": 9003, "log": true, "pathMappings": { - "/srv/api": "${workspaceRoot}/api" + "/app": "${workspaceRoot}/api" } }, { diff --git a/api/.dockerignore b/api/.dockerignore index 40128c8bb1..942ffc005f 100644 --- a/api/.dockerignore +++ b/api/.dockerignore @@ -11,6 +11,10 @@ **/.gitattributes **/.gitignore **/.gitmodules +**/compose.*.yaml +**/compose.*.yml +**/compose.yaml +**/compose.yml **/docker-compose.*.yaml **/docker-compose.*.yml **/docker-compose.yaml diff --git a/api/.env b/api/.env index 112327d4d3..c09c3d6eb7 100644 --- a/api/.env +++ b/api/.env @@ -17,6 +17,8 @@ TRUSTED_PROXIES=::1,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 ADDITIONAL_TRUSTED_HOSTS=localhost COOKIE_PREFIX=localhost_ +VARNISH_API_URL=http://http-cache:8081 +API_CACHE_ENABLED=true ###> symfony/framework-bundle ### APP_ENV=dev diff --git a/api/.vscode/launch.json b/api/.vscode/launch.json index 2e00728428..ee03f1c99b 100644 --- a/api/.vscode/launch.json +++ b/api/.vscode/launch.json @@ -12,7 +12,7 @@ "port": 9003, "log": true, "pathMappings": { - "/srv/api": "${workspaceRoot}" + "/app": "${workspaceRoot}" } }, { diff --git a/api/Dockerfile b/api/Dockerfile index 40400389d4..3c3941991f 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -1,49 +1,39 @@ -#syntax=docker/dockerfile:1.7 +#syntax=docker/dockerfile:1.8 + +# Adapted from https://github.com/api-platform/api-platform/blob/fa1c5808305d7cadbf7b8392e0fddb6e80fb2092/api/Dockerfile + +# Versions +FROM dunglas/frankenphp:1.1-php8.3.7 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 # https://docs.docker.com/compose/compose-file/#target +# Base FrankenPHP image +FROM frankenphp_upstream AS frankenphp_base -# https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact - -# renovate: datasource=docker depName=php -ARG PHP_VERSION=8.3.6 - -# renovate: datasource=docker depName=alpine -ARG ALPINE_VERSION=3.18 - -# renovate: datasource=docker depName=caddy -ARG CADDY_VERSION=2.7.6 - -# "php" stage -FROM php:${PHP_VERSION}-fpm-alpine${ALPINE_VERSION} AS api_platform_php - -# build for production -ARG APP_ENV=prod - -WORKDIR /srv/api - -# php extensions installer: https://github.com/mlocati/docker-php-extension-installer -COPY --from=mlocati/php-extension-installer --link /usr/bin/install-php-extensions /usr/local/bin/ +WORKDIR /app # persistent / runtime deps -RUN apk add --no-cache \ +# hadolint ignore=DL3008 +RUN apt-get update && apt-get install --no-install-recommends -y \ acl \ - fcgi \ file \ gettext \ git \ - gnu-libiconv \ patch \ - ; + && rm -rf /var/lib/apt/lists/* -# install gnu-libiconv and set LD_PRELOAD env to make iconv work fully on Alpine image. -# see https://github.com/docker-library/php/issues/240#issuecomment-763112749 -ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so +# https://getcomposer.org/doc/03-cli.md#composer-allow-superuser +ENV COMPOSER_ALLOW_SUPERUSER=1 +ENV COMPOSER_HOME=/tmp/composer +ENV COMPOSER_CACHE_DIR=/tmp/composer/cache +RUN mkdir -p /tmp/composer/cache +RUN chmod ugo+w /tmp/composer/cache RUN set -eux; \ install-php-extensions \ + @composer \ intl \ zip \ apcu \ @@ -57,46 +47,51 @@ RUN set -eux; \ ###< doctrine/doctrine-bundle ### ###< recipes ### -# Copy development php.ini -RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" COPY --link docker/php/conf.d/api-platform.ini $PHP_INI_DIR/conf.d/ -COPY --link docker/php/conf.d/api-platform.prod.ini $PHP_INI_DIR/conf.d/ +COPY --link --chmod=755 docker/php/docker-entrypoint.sh /usr/local/bin/docker-entrypoint +COPY --link --chmod=755 docker/php/migrate-database.sh /usr/local/bin/migrate-database -COPY --link docker/php/php-fpm.d/zz-docker.conf /usr/local/etc/php-fpm.d/zz-docker.conf -COPY --link docker/php/php-fpm.d/www.conf /usr/local/etc/php-fpm.d/www.conf +ENTRYPOINT ["docker-entrypoint"] -RUN mkdir -p /var/run/php +HEALTHCHECK --start-period=60s CMD curl -f http://localhost:2019/metrics || exit 1 +CMD [ "frankenphp", "run", "--config", "/etc/caddy/Caddyfile" ] -COPY --link docker/php/docker-healthcheck.sh /usr/local/bin/docker-healthcheck -RUN chmod +x /usr/local/bin/docker-healthcheck +# Dev FrankenPHP image +FROM frankenphp_base AS frankenphp_dev +ENV APP_ENV=dev XDEBUG_MODE=off -HEALTHCHECK --interval=10s --timeout=3s --retries=3 CMD ["docker-healthcheck"] +RUN mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini" -COPY --link docker/php/migrate-database.sh /usr/local/bin/migrate-database -RUN chmod +x /usr/local/bin/migrate-database +COPY --link docker/php/conf.d/api-platform.dev.ini $PHP_INI_DIR/conf.d/ +COPY --link docker/caddy/Caddyfile /etc/caddy/Caddyfile -COPY docker/php/docker-entrypoint.sh /usr/local/bin/docker-entrypoint -RUN chmod +x /usr/local/bin/docker-entrypoint +# renovate: datasource=github-tags depName=xdebug/xdebug +ARG XDEBUG_VERSION=3.3.2 +RUN set -eux; \ + install-php-extensions \ + xdebug-$XDEBUG_VERSION \ + pcov \ + ; -ENTRYPOINT ["docker-entrypoint"] -CMD ["php-fpm"] +CMD [ "frankenphp", "run", "--config", "/etc/caddy/Caddyfile", "--watch" ] -# https://getcomposer.org/doc/03-cli.md#composer-allow-superuser -ENV COMPOSER_ALLOW_SUPERUSER=1 -ENV PATH="${PATH}:/root/.composer/vendor/bin" -ENV COMPOSER_HOME=/tmp/composer -ENV COMPOSER_CACHE_DIR=/tmp/composer/cache -RUN mkdir -p /tmp/composer/cache -RUN chmod ugo+w /tmp/composer/cache +# Prod FrankenPHP image +FROM frankenphp_base AS frankenphp_prod -COPY --from=composer:2.7 /usr/bin/composer /usr/bin/composer +ENV APP_ENV=prod +#ENV FRANKENPHP_CONFIG="import worker.Caddyfile" + +RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" + +COPY --link docker/php/conf.d/api-platform.prod.ini $PHP_INI_DIR/conf.d/ +COPY --link docker/caddy/Caddyfile.prod /etc/caddy/Caddyfile +#COPY --link docker/caddy/worker.Caddyfile /etc/caddy/worker.Caddyfile # prevent the reinstallation of vendors at every changes in the source code -COPY composer.json composer.lock symfony.lock ./ +COPY --link composer.* symfony.* ./ COPY --link patch patch/ RUN set -eux; \ - composer install --prefer-dist --no-dev --no-autoloader --no-scripts --no-progress; \ - composer clear-cache + composer install --no-cache --prefer-dist --no-dev --no-autoloader --no-scripts --no-progress # copy only specifically what we need COPY --link .env ./ @@ -114,36 +109,6 @@ RUN set -eux; \ composer dump-autoload --classmap-authoritative --no-dev; \ composer dump-env prod; \ composer run-script --no-dev post-install-cmd; \ - chmod +x bin/console; sync - - -# Debug stage, for using XDebug -FROM api_platform_php as api_platform_php_dev -ENV APP_ENV=dev XDEBUG_MODE=off - -RUN rm $PHP_INI_DIR/conf.d/api-platform.prod.ini; \ - mv "$PHP_INI_DIR/php.ini" "$PHP_INI_DIR/php.ini-production"; \ - mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini" -COPY --link docker/php/conf.d/api-platform.dev.ini $PHP_INI_DIR/conf.d/ - -# renovate: datasource=github-tags depName=xdebug/xdebug -ARG XDEBUG_VERSION=3.3.2 -RUN set -eux; \ - install-php-extensions \ - xdebug-$XDEBUG_VERSION \ - pcov \ - ; - -# "caddy" stage -# depends on the "php" stage above -FROM caddy:${CADDY_VERSION} AS api_platform_caddy - -WORKDIR /srv/api - -COPY --from=api_platform_php --link /srv/api/public public/ -COPY --link docker/caddy/Caddyfile /etc/caddy/Caddyfile - -FROM api_platform_caddy AS api_platform_caddy_prod -COPY --link docker/caddy/Caddyfile.prod /etc/caddy/Caddyfile + chmod +x bin/console; sync; diff --git a/api/bin/console b/api/bin/console index c933dc535d..d8d530e2c3 100755 --- a/api/bin/console +++ b/api/bin/console @@ -4,6 +4,10 @@ use App\Kernel; use Symfony\Bundle\FrameworkBundle\Console\Application; +if (!is_dir(dirname(__DIR__).'/vendor')) { + throw new LogicException('Dependencies are missing. Try running "composer install".'); +} + if (!is_file(dirname(__DIR__).'/vendor/autoload_runtime.php')) { throw new LogicException('Symfony Runtime is missing. Try running "composer require symfony/runtime".'); } diff --git a/api/composer.json b/api/composer.json index 02321af25f..1f8b5f4c14 100644 --- a/api/composer.json +++ b/api/composer.json @@ -5,67 +5,70 @@ "php": ">=8.1.0", "ext-ctype": "*", "ext-iconv": "*", - "api-platform/core": "3.2.20", + "api-platform/core": "3.3.6", "composer/package-versions-deprecated": "1.11.99", "cweagans/composer-patches": "1.7.3", "doctrine/doctrine-bundle": "2.12.0", - "doctrine/doctrine-migrations-bundle": "3.3.0", - "doctrine/orm": "2.19.4", + "doctrine/doctrine-migrations-bundle": "3.3.1", + "doctrine/orm": "2.19.6", "exercise/htmlpurifier-bundle": "5.0", + "friendsofsymfony/http-cache": "3.0.0", + "friendsofsymfony/http-cache-bundle": "3.0.1", "google/recaptcha": "1.3.0", "guzzlehttp/guzzle": "7.8.1", "knpuniversity/oauth2-client-bundle": "2.18.1", "league/oauth2-google": "4.0.1", - "lexik/jwt-authentication-bundle": "2.21.0", - "nelmio/cors-bundle": "2.4.0", - "phpdocumentor/reflection-docblock": "5.4.0", + "lexik/jwt-authentication-bundle": "3.0.0", + "nelmio/cors-bundle": "2.5.0", + "phpdocumentor/reflection-docblock": "5.4.1", "phpmyadmin/sql-parser": "5.9.0", "ramsey/uuid": "4.7.6", "rize/uri-template": "0.3.6", "sentry/sentry-symfony": "4.14.0", - "stof/doctrine-extensions-bundle": "1.11.0", + "stof/doctrine-extensions-bundle": "1.12.0", "swaggest/json-schema": "0.12.42", - "symfony/asset": "7.0.3", - "symfony/console": "7.0.6", - "symfony/dotenv": "7.0.4", - "symfony/expression-language": "7.0.3", + "symfony/asset": "7.1.1", + "symfony/console": "7.1.2", + "symfony/dotenv": "7.1.1", + "symfony/expression-language": "7.1.1", "symfony/flex": "2.4.5", - "symfony/framework-bundle": "7.0.6", - "symfony/intl": "7.0.3", - "symfony/mailer": "7.0.6", + "symfony/framework-bundle": "7.1.2", + "symfony/http-client": "7.1.2", + "symfony/intl": "7.1.1", + "symfony/mailer": "7.1.2", "symfony/monolog-bundle": "3.10.0", - "symfony/property-access": "7.0.6", - "symfony/property-info": "7.0.6", - "symfony/runtime": "7.0.3", - "symfony/security-bundle": "7.0.6", - "symfony/serializer": "7.0.6", - "symfony/translation": "7.0.4", - "symfony/twig-bundle": "7.0.4", - "symfony/validator": "7.0.6", - "symfony/yaml": "7.0.3", + "symfony/property-access": "7.1.1", + "symfony/property-info": "7.1.2", + "symfony/runtime": "7.1.1", + "symfony/security-bundle": "7.1.2", + "symfony/serializer": "7.1.2", + "symfony/translation": "7.1.1", + "symfony/twig-bundle": "7.1.1", + "symfony/validator": "7.1.2", + "symfony/yaml": "7.1.1", "twig/cssinliner-extra": "^3.4", "twig/extra-bundle": "^3.4", - "webonyx/graphql-php": "15.11.1" + "webonyx/graphql-php": "15.12.5" }, "require-dev": { - "friendsofphp/php-cs-fixer": "3.54.0", + "friendsofphp/php-cs-fixer": "3.59.3", "hautelook/alice-bundle": "2.13.0", "justinrainbow/json-schema": "5.2.13", "php-coveralls/php-coveralls": "2.7.0", - "phpstan/phpstan": "1.10.67", - "phpunit/phpunit": "10.5.20", - "rector/rector": "1.0.4", - "spatie/phpunit-snapshot-assertions": "5.1.5", - "symfony/browser-kit": "7.0.3", - "symfony/css-selector": "7.0.3", - "symfony/debug-bundle": "7.0.3", - "symfony/http-client": "7.0.6", - "symfony/maker-bundle": "1.59.0", - "symfony/phpunit-bridge": "7.0.6", - "symfony/stopwatch": "7.0.3", - "symfony/var-dumper": "7.0.6", - "symfony/web-profiler-bundle": "7.0.4", - "vimeo/psalm": "5.23.1" + "phpspec/prophecy-phpunit": "2.2", + "phpstan/phpstan": "1.11.5", + "phpunit/phpunit": "10.5.24", + "rector/rector": "1.2.0", + "spatie/phpunit-snapshot-assertions": "5.1.6", + "symfony/browser-kit": "7.1.1", + "symfony/css-selector": "7.1.1", + "symfony/debug-bundle": "7.1.1", + "symfony/maker-bundle": "1.60.0", + "symfony/phpunit-bridge": "7.1.2", + "symfony/stopwatch": "7.1.1", + "symfony/var-dumper": "7.1.2", + "symfony/web-profiler-bundle": "7.1.2", + "vimeo/psalm": "5.25.0" }, "config": { "optimize-autoloader": true, @@ -74,7 +77,6 @@ }, "sort-packages": true, "allow-plugins": { - "composer/package-versions-deprecated": true, "cweagans/composer-patches": true, "php-http/discovery": false, "symfony/flex": true, diff --git a/api/composer.lock b/api/composer.lock index 172ad2cdeb..304ca42802 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": "ed5a7ae0d3aa101e16ec9a1febebbd07", + "content-hash": "bfebc6445fe96781904efa59547d852f", "packages": [ { "name": "api-platform/core", - "version": "v3.2.20", + "version": "v3.3.6", "source": { "type": "git", "url": "https://github.com/api-platform/core.git", - "reference": "875cc155e556541c0591b0c182ed64dcc41b9984" + "reference": "c7f25dc6c7ca82ade7f8a0e5d63393b25b4a2db5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/core/zipball/875cc155e556541c0591b0c182ed64dcc41b9984", - "reference": "875cc155e556541c0591b0c182ed64dcc41b9984", + "url": "https://api.github.com/repos/api-platform/core/zipball/c7f25dc6c7ca82ade7f8a0e5d63393b25b4a2db5", + "reference": "c7f25dc6c7ca82ade7f8a0e5d63393b25b4a2db5", "shasum": "" }, "require": { @@ -26,13 +26,13 @@ "psr/cache": "^1.0 || ^2.0 || ^3.0", "psr/container": "^1.0 || ^2.0", "symfony/deprecation-contracts": "^3.1", - "symfony/http-foundation": "^6.1 || ^7.0", - "symfony/http-kernel": "^6.1 || ^7.0", - "symfony/property-access": "^6.1 || ^7.0", - "symfony/property-info": "^6.1 || ^7.0", - "symfony/serializer": "^6.1 || ^7.0", + "symfony/http-foundation": "^6.4 || ^7.0", + "symfony/http-kernel": "^6.4 || ^7.0", + "symfony/property-access": "^6.4 || ^7.0", + "symfony/property-info": "^6.4 || ^7.0", + "symfony/serializer": "^6.4 || ^7.0", "symfony/translation-contracts": "^3.3", - "symfony/web-link": "^6.1 || ^7.0", + "symfony/web-link": "^6.4 || ^7.0", "willdurand/negotiation": "^3.0" }, "conflict": { @@ -44,6 +44,7 @@ "elasticsearch/elasticsearch": ">=8.0,<8.4", "phpspec/prophecy": "<1.15", "phpunit/phpunit": "<9.5", + "symfony/framework-bundle": "6.4.6 || 7.0.6", "symfony/var-exporter": "<6.1.1" }, "require-dev": { @@ -66,47 +67,48 @@ "phpspec/prophecy-phpunit": "^2.0", "phpstan/extension-installer": "^1.1", "phpstan/phpdoc-parser": "^1.13", - "phpstan/phpstan": "^1.1", + "phpstan/phpstan": "^1.10", "phpstan/phpstan-doctrine": "^1.0", "phpstan/phpstan-phpunit": "^1.0", "phpstan/phpstan-symfony": "^1.0", - "phpunit/phpunit": "^9.5", + "phpunit/phpunit": "^9.6", "psr/log": "^1.0 || ^2.0 || ^3.0", "ramsey/uuid": "^3.9.7 || ^4.0", "ramsey/uuid-doctrine": "^1.4 || ^2.0", "sebastian/comparator": "<5.0", "soyuka/contexts": "v3.3.9", + "soyuka/pmu": "^0.0.2", "soyuka/stubs-mongodb": "^1.0", - "symfony/asset": "^6.1 || ^7.0", - "symfony/browser-kit": "^6.1 || ^7.0", - "symfony/cache": "^6.1 || ^7.0", - "symfony/config": "^6.1 || ^7.0", - "symfony/console": "^6.1 || ^7.0", - "symfony/css-selector": "^6.1 || ^7.0", - "symfony/dependency-injection": "^6.1 || ^7.0.12", - "symfony/doctrine-bridge": "^6.1 || ^7.0", - "symfony/dom-crawler": "^6.1 || ^7.0", - "symfony/error-handler": "^6.1 || ^7.0", - "symfony/event-dispatcher": "^6.1 || ^7.0", - "symfony/expression-language": "^6.1 || ^7.0", - "symfony/finder": "^6.1 || ^7.0", - "symfony/form": "^6.1 || ^7.0", - "symfony/framework-bundle": "^6.1 || ^7.0", - "symfony/http-client": "^6.1 || ^7.0", - "symfony/intl": "^6.1 || ^7.0", + "symfony/asset": "^6.4 || ^7.0", + "symfony/browser-kit": "^6.4 || ^7.0", + "symfony/cache": "^6.4 || ^7.0", + "symfony/config": "^6.4 || ^7.0", + "symfony/console": "^6.4 || ^7.0", + "symfony/css-selector": "^6.4 || ^7.0", + "symfony/dependency-injection": "^6.4 || ^7.0.12", + "symfony/doctrine-bridge": "^6.4 || ^7.0", + "symfony/dom-crawler": "^6.4 || ^7.0", + "symfony/error-handler": "^6.4 || ^7.0", + "symfony/event-dispatcher": "^6.4 || ^7.0", + "symfony/expression-language": "^6.4 || ^7.0", + "symfony/finder": "^6.4 || ^7.0", + "symfony/form": "^6.4 || ^7.0", + "symfony/framework-bundle": "^6.4 || ^7.0", + "symfony/http-client": "^6.4 || ^7.0", + "symfony/intl": "^6.4 || ^7.0", "symfony/maker-bundle": "^1.24", "symfony/mercure-bundle": "*", - "symfony/messenger": "^6.1 || ^7.0", - "symfony/phpunit-bridge": "^6.1 || ^7.0", - "symfony/routing": "^6.1 || ^7.0", - "symfony/security-bundle": "^6.1 || ^7.0", - "symfony/security-core": "^6.1 || ^7.0", - "symfony/stopwatch": "^6.1 || ^7.0", - "symfony/twig-bundle": "^6.1 || ^7.0", - "symfony/uid": "^6.1 || ^7.0", - "symfony/validator": "^6.1 || ^7.0", - "symfony/web-profiler-bundle": "^6.1 || ^7.0", - "symfony/yaml": "^6.1 || ^7.0", + "symfony/messenger": "^6.4 || ^7.0", + "symfony/phpunit-bridge": "^6.4.1 || ^7.0", + "symfony/routing": "^6.4 || ^7.0", + "symfony/security-bundle": "^6.4 || ^7.0", + "symfony/security-core": "^6.4 || ^7.0", + "symfony/stopwatch": "^6.4 || ^7.0", + "symfony/twig-bundle": "^6.4 || ^7.0", + "symfony/uid": "^6.4 || ^7.0", + "symfony/validator": "^6.4 || ^7.0", + "symfony/web-profiler-bundle": "^6.4 || ^7.0", + "symfony/yaml": "^6.4 || ^7.0", "twig/twig": "^1.42.3 || ^2.12 || ^3.0", "webonyx/graphql-php": "^14.0 || ^15.0" }, @@ -134,8 +136,28 @@ "dev-main": "3.3.x-dev" }, "symfony": { - "require": "^6.1 || ^7.0" - } + "require": "^6.4 || ^7.0" + }, + "projects": [ + "api-platform/doctrine-common", + "api-platform/doctrine-orm", + "api-platform/doctrine-odm", + "api-platform/metadata", + "api-platform/json-schema", + "api-platform/elasticsearch", + "api-platform/jsonld", + "api-platform/hydra", + "api-platform/openapi", + "api-platform/graphql", + "api-platform/http-cache", + "api-platform/documentation", + "api-platform/parameter-validator", + "api-platform/ramsey-uuid", + "api-platform/serializer", + "api-platform/state", + "api-platform/symfony", + "api-platform/validator" + ] }, "autoload": { "psr-4": { @@ -168,9 +190,9 @@ ], "support": { "issues": "https://github.com/api-platform/core/issues", - "source": "https://github.com/api-platform/core/tree/v3.2.20" + "source": "https://github.com/api-platform/core/tree/v3.3.6" }, - "time": "2024-04-03T15:33:10+00:00" + "time": "2024-06-14T07:14:21+00:00" }, { "name": "behat/transliterator", @@ -740,16 +762,16 @@ }, { "name": "doctrine/dbal", - "version": "3.8.3", + "version": "3.8.6", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "db922ba9436b7b18a23d1653a0b41ff2369ca41c" + "reference": "b7411825cf7efb7e51f9791dea19d86e43b399a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/db922ba9436b7b18a23d1653a0b41ff2369ca41c", - "reference": "db922ba9436b7b18a23d1653a0b41ff2369ca41c", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/b7411825cf7efb7e51f9791dea19d86e43b399a1", + "reference": "b7411825cf7efb7e51f9791dea19d86e43b399a1", "shasum": "" }, "require": { @@ -765,12 +787,12 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.58", - "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.16", + "phpstan/phpstan": "1.11.5", + "phpstan/phpstan-strict-rules": "^1.6", + "phpunit/phpunit": "9.6.19", "psalm/plugin-phpunit": "0.18.4", "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.9.0", + "squizlabs/php_codesniffer": "3.10.1", "symfony/cache": "^5.4|^6.0|^7.0", "symfony/console": "^4.4|^5.4|^6.0|^7.0", "vimeo/psalm": "4.30.0" @@ -833,7 +855,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.8.3" + "source": "https://github.com/doctrine/dbal/tree/3.8.6" }, "funding": [ { @@ -849,7 +871,7 @@ "type": "tidelift" } ], - "time": "2024-03-03T15:55:06+00:00" + "time": "2024-06-19T10:38:17+00:00" }, { "name": "doctrine/deprecations", @@ -1020,16 +1042,16 @@ }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.3.0", + "version": "3.3.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "1dd42906a5fb9c5960723e2ebb45c68006493835" + "reference": "715b62c31a5894afcb2b2cdbbc6607d7dd0580c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/1dd42906a5fb9c5960723e2ebb45c68006493835", - "reference": "1dd42906a5fb9c5960723e2ebb45c68006493835", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/715b62c31a5894afcb2b2cdbbc6607d7dd0580c0", + "reference": "715b62c31a5894afcb2b2cdbbc6607d7dd0580c0", "shasum": "" }, "require": { @@ -1040,6 +1062,7 @@ "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { + "composer/semver": "^3.0", "doctrine/coding-standard": "^12", "doctrine/orm": "^2.6 || ^3", "doctrine/persistence": "^2.0 || ^3 ", @@ -1091,7 +1114,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.3.0" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.3.1" }, "funding": [ { @@ -1107,20 +1130,20 @@ "type": "tidelift" } ], - "time": "2023-11-13T19:44:41+00:00" + "time": "2024-05-14T20:32:18+00:00" }, { "name": "doctrine/event-manager", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32" + "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/750671534e0241a7c50ea5b43f67e23eb5c96f32", - "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/b680156fa328f1dfd874fd48c7026c41570b9c6e", + "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e", "shasum": "" }, "require": { @@ -1130,10 +1153,10 @@ "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^10", + "doctrine/coding-standard": "^12", "phpstan/phpstan": "^1.8.8", - "phpunit/phpunit": "^9.5", - "vimeo/psalm": "^4.28" + "phpunit/phpunit": "^10.5", + "vimeo/psalm": "^5.24" }, "type": "library", "autoload": { @@ -1182,7 +1205,7 @@ ], "support": { "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/2.0.0" + "source": "https://github.com/doctrine/event-manager/tree/2.0.1" }, "funding": [ { @@ -1198,7 +1221,7 @@ "type": "tidelift" } ], - "time": "2022-10-12T20:59:15+00:00" + "time": "2024-05-22T20:47:39+00:00" }, { "name": "doctrine/inflector", @@ -1542,16 +1565,16 @@ }, { "name": "doctrine/orm", - "version": "2.19.4", + "version": "2.19.6", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "b27489348658cd718d18005de37b94f7f8561467" + "reference": "c1bb2ccf4b19c845f91ff7c4c01dc7cbba7f4073" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/b27489348658cd718d18005de37b94f7f8561467", - "reference": "b27489348658cd718d18005de37b94f7f8561467", + "url": "https://api.github.com/repos/doctrine/orm/zipball/c1bb2ccf4b19c845f91ff7c4c01dc7cbba7f4073", + "reference": "c1bb2ccf4b19c845f91ff7c4c01dc7cbba7f4073", "shasum": "" }, "require": { @@ -1580,14 +1603,14 @@ "doctrine/annotations": "^1.13 || ^2", "doctrine/coding-standard": "^9.0.2 || ^12.0", "phpbench/phpbench": "^0.16.10 || ^1.0", - "phpstan/phpstan": "~1.4.10 || 1.10.59", + "phpstan/phpstan": "~1.4.10 || 1.11.1", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "psr/log": "^1 || ^2 || ^3", "squizlabs/php_codesniffer": "3.7.2", "symfony/cache": "^4.4 || ^5.4 || ^6.4 || ^7.0", "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2 || ^7.0", "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "vimeo/psalm": "4.30.0 || 5.22.2" + "vimeo/psalm": "4.30.0 || 5.24.0" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -1637,22 +1660,22 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.19.4" + "source": "https://github.com/doctrine/orm/tree/2.19.6" }, - "time": "2024-04-15T13:11:10+00:00" + "time": "2024-06-26T17:24:40+00:00" }, { "name": "doctrine/persistence", - "version": "3.3.2", + "version": "3.3.3", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "477da35bd0255e032826f440b94b3e37f2d56f42" + "reference": "b337726451f5d530df338fc7f68dee8781b49779" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/477da35bd0255e032826f440b94b3e37f2d56f42", - "reference": "477da35bd0255e032826f440b94b3e37f2d56f42", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/b337726451f5d530df338fc7f68dee8781b49779", + "reference": "b337726451f5d530df338fc7f68dee8781b49779", "shasum": "" }, "require": { @@ -1664,15 +1687,14 @@ "doctrine/common": "<2.10" }, "require-dev": { - "composer/package-versions-deprecated": "^1.11", - "doctrine/coding-standard": "^11", + "doctrine/coding-standard": "^12", "doctrine/common": "^3.0", - "phpstan/phpstan": "1.9.4", + "phpstan/phpstan": "1.11.1", "phpstan/phpstan-phpunit": "^1", "phpstan/phpstan-strict-rules": "^1.1", "phpunit/phpunit": "^8.5 || ^9.5", "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "vimeo/psalm": "4.30.0 || 5.3.0" + "vimeo/psalm": "4.30.0 || 5.24.0" }, "type": "library", "autoload": { @@ -1721,7 +1743,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/3.3.2" + "source": "https://github.com/doctrine/persistence/tree/3.3.3" }, "funding": [ { @@ -1737,27 +1759,30 @@ "type": "tidelift" } ], - "time": "2024-03-12T14:54:36+00:00" + "time": "2024-06-20T10:14:30+00:00" }, { "name": "doctrine/sql-formatter", - "version": "1.2.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "a321d114e0a18e6497f8a2cd6f890e000cc17ecc" + "reference": "d1ac84aef745c69ea034929eb6d65a6908b675cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/a321d114e0a18e6497f8a2cd6f890e000cc17ecc", - "reference": "a321d114e0a18e6497f8a2cd6f890e000cc17ecc", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/d1ac84aef745c69ea034929eb6d65a6908b675cc", + "reference": "d1ac84aef745c69ea034929eb6d65a6908b675cc", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4" + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", + "vimeo/psalm": "^5.24" }, "bin": [ "bin/sql-formatter" @@ -1787,9 +1812,9 @@ ], "support": { "issues": "https://github.com/doctrine/sql-formatter/issues", - "source": "https://github.com/doctrine/sql-formatter/tree/1.2.0" + "source": "https://github.com/doctrine/sql-formatter/tree/1.4.0" }, - "time": "2023-08-16T21:49:04+00:00" + "time": "2024-05-08T08:12:09+00:00" }, { "name": "egulias/email-validator", @@ -1980,18 +2005,200 @@ }, "time": "2023-11-17T15:01:25+00:00" }, + { + "name": "friendsofsymfony/http-cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfSymfony/FOSHttpCache.git", + "reference": "2b2ccae740c164c55ea43c6ccf5fca3011d00537" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfSymfony/FOSHttpCache/zipball/2b2ccae740c164c55ea43c6ccf5fca3011d00537", + "reference": "2b2ccae740c164c55ea43c6ccf5fca3011d00537", + "shasum": "" + }, + "require": { + "php": "^8.1", + "php-http/async-client-implementation": "^1.1.0 || ^2.0", + "php-http/client-common": "^1.1.0 || ^2.0", + "php-http/discovery": "^1.12", + "psr/http-client-implementation": "^1.0 || ^2.0", + "psr/http-factory": "^1.0", + "symfony/event-dispatcher": "^6.4 || ^7.0", + "symfony/options-resolver": "^6.4 || ^7.0" + }, + "conflict": { + "toflar/psr6-symfony-http-cache-store": "<2.2.1" + }, + "require-dev": { + "mockery/mockery": "^1.6.0", + "monolog/monolog": "^1.0", + "php-http/guzzle7-adapter": "^1", + "php-http/mock-client": "^1.6.0", + "phpunit/phpunit": "^10.5", + "symfony/http-kernel": "^6.4|| ^7.0", + "symfony/process": "^6.4|| ^7.0" + }, + "suggest": { + "friendsofsymfony/http-cache-bundle": "For integration with the Symfony framework", + "monolog/monolog": "For logging issues while invalidating", + "phpunit/phpunit": "To build tests with the WebServerSubscriber, ^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "FOS\\HttpCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Liip AG", + "homepage": "http://www.liip.ch/" + }, + { + "name": "Driebit", + "email": "tech@driebit.nl", + "homepage": "http://www.driebit.nl" + }, + { + "name": "Community contributions", + "homepage": "https://github.com/friendsofsymfony/FOSHttpCache/contributors" + } + ], + "description": "Tools to manage HTTP caching proxies with PHP", + "homepage": "https://github.com/friendsofsymfony/FOSHttpCache", + "keywords": [ + "caching", + "http", + "invalidation", + "nginx", + "purge", + "varnish" + ], + "support": { + "issues": "https://github.com/FriendsOfSymfony/FOSHttpCache/issues", + "source": "https://github.com/FriendsOfSymfony/FOSHttpCache/tree/3.0.0" + }, + "time": "2024-05-04T18:09:55+00:00" + }, + { + "name": "friendsofsymfony/http-cache-bundle", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfSymfony/FOSHttpCacheBundle.git", + "reference": "4a7e7fe7ff2ddb5a5d4e69c9b59bff52ab08bc16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfSymfony/FOSHttpCacheBundle/zipball/4a7e7fe7ff2ddb5a5d4e69c9b59bff52ab08bc16", + "reference": "4a7e7fe7ff2ddb5a5d4e69c9b59bff52ab08bc16", + "shasum": "" + }, + "require": { + "friendsofsymfony/http-cache": "^2.15 || ^3.0", + "php": "^8.1", + "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" + }, + "conflict": { + "symfony/monolog-bridge": "<3.4.4", + "twig/twig": "<1.12.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.54", + "guzzlehttp/guzzle": "^7.2", + "jean-beru/fos-http-cache-cloudfront": "^1.1", + "matthiasnoback/symfony-config-test": "^4.3.0 || ^5.1", + "matthiasnoback/symfony-dependency-injection-test": "^4.3.1 || ^5.0", + "mockery/mockery": "^1.6.9", + "monolog/monolog": "*", + "php-http/discovery": "^1.13", + "php-http/guzzle7-adapter": "^0.1.1", + "php-http/httplug": "^2.2.0", + "php-http/message": "^1.0 || ^2.0", + "phpstan/extension-installer": "^1.3", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-symfony": "^1.3", + "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", + "twig/twig": "^v3.8" + }, + "suggest": { + "jean-beru/fos-http-cache-cloudfront": "To use CloudFront proxy", + "sensio/framework-extra-bundle": "For Tagged Cache Invalidation", + "symfony/console": "To send invalidation requests from the command line", + "symfony/expression-language": "For Tagged Cache Invalidation" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "FOS\\HttpCacheBundle\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Liip AG", + "homepage": "http://www.liip.ch/" + }, + { + "name": "Driebit", + "email": "tech@driebit.nl", + "homepage": "http://www.driebit.nl" + }, + { + "name": "Community contributions", + "homepage": "https://github.com/friendsofsymfony/FOSHttpCacheBundle/contributors" + } + ], + "description": "Set path based HTTP cache headers and send invalidation requests to your HTTP cache", + "homepage": "https://github.com/FriendsOfSymfony/FOSHttpCacheBundle", + "keywords": [ + "caching", + "esi", + "http", + "invalidation", + "purge", + "varnish" + ], + "support": { + "issues": "https://github.com/FriendsOfSymfony/FOSHttpCacheBundle/issues", + "source": "https://github.com/FriendsOfSymfony/FOSHttpCacheBundle/tree/3.0.1" + }, + "time": "2024-05-07T09:23:49+00:00" + }, { "name": "gedmo/doctrine-extensions", - "version": "v3.15.0", + "version": "v3.16.1", "source": { "type": "git", "url": "https://github.com/doctrine-extensions/DoctrineExtensions.git", - "reference": "2a89103f4984d8970f3855284c8c04e6e6a63c0f" + "reference": "e85560ed96f977b8c29428a99222cb2ef2f0e80d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/2a89103f4984d8970f3855284c8c04e6e6a63c0f", - "reference": "2a89103f4984d8970f3855284c8c04e6e6a63c0f", + "url": "https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/e85560ed96f977b8c29428a99222cb2ef2f0e80d", + "reference": "e85560ed96f977b8c29428a99222cb2ef2f0e80d", "shasum": "" }, "require": { @@ -2010,7 +2217,7 @@ "doctrine/annotations": "<1.13 || >=3.0", "doctrine/dbal": "<3.2 || >=4.0", "doctrine/mongodb-odm": "<2.3 || >=3.0", - "doctrine/orm": "<2.14.0 || 2.16.0 || 2.16.1 || >=3.0" + "doctrine/orm": "<2.14.0 || 2.16.0 || 2.16.1 || >=4.0" }, "require-dev": { "doctrine/annotations": "^1.13 || ^2.0", @@ -2018,16 +2225,18 @@ "doctrine/dbal": "^3.2", "doctrine/doctrine-bundle": "^2.3", "doctrine/mongodb-odm": "^2.3", - "doctrine/orm": "^2.14.0", + "doctrine/orm": "^2.14.0 || ^3.0", "friendsofphp/php-cs-fixer": "^3.14.0", "nesbot/carbon": "^2.71 || ^3.0", - "phpstan/phpstan": "^1.10.2", - "phpstan/phpstan-doctrine": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-doctrine": "^1.4", + "phpstan/phpstan-phpunit": "^1.4", "phpunit/phpunit": "^9.6", - "rector/rector": "^0.19", + "rector/rector": "^1.1", "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/doctrine-bridge": "^5.4 || ^6.0 || ^7.0", "symfony/phpunit-bridge": "^6.0 || ^7.0", + "symfony/uid": "^5.4 || ^6.0 || ^7.0", "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { @@ -2037,7 +2246,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.13-dev" + "dev-main": "3.x-dev" } }, "autoload": { @@ -2085,7 +2294,7 @@ "support": { "email": "gediminas.morkevicius@gmail.com", "issues": "https://github.com/doctrine-extensions/DoctrineExtensions/issues", - "source": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.15.0", + "source": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.16.1", "wiki": "https://github.com/Atlantic18/DoctrineExtensions/tree/main/doc" }, "funding": [ @@ -2106,7 +2315,7 @@ "type": "github" } ], - "time": "2024-02-12T15:17:22+00:00" + "time": "2024-06-25T16:22:14+00:00" }, { "name": "google/recaptcha", @@ -2926,47 +3135,43 @@ }, { "name": "lexik/jwt-authentication-bundle", - "version": "v2.21.0", + "version": "v3.0.0", "source": { "type": "git", "url": "https://github.com/lexik/LexikJWTAuthenticationBundle.git", - "reference": "d57159da3f572b42ab609630edb6e27d71b37eca" + "reference": "b20c4ae7fdfe1d7422c7099a141cc9eb64627310" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lexik/LexikJWTAuthenticationBundle/zipball/d57159da3f572b42ab609630edb6e27d71b37eca", - "reference": "d57159da3f572b42ab609630edb6e27d71b37eca", + "url": "https://api.github.com/repos/lexik/LexikJWTAuthenticationBundle/zipball/b20c4ae7fdfe1d7422c7099a141cc9eb64627310", + "reference": "b20c4ae7fdfe1d7422c7099a141cc9eb64627310", "shasum": "" }, "require": { "ext-openssl": "*", - "lcobucci/clock": "^1.2|^2.0|^3.0", - "lcobucci/jwt": "^3.4.6|^4.1|^5.0", - "namshi/jose": "^7.2", - "php": ">=7.1", - "symfony/config": "^4.4|^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^4.4|^5.4|^6.0|^7.0", + "lcobucci/clock": "^3.0", + "lcobucci/jwt": "^5.0", + "php": ">=8.2", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", "symfony/deprecation-contracts": "^2.4|^3.0", - "symfony/event-dispatcher": "^4.4|^5.4|^6.0|^7.0", - "symfony/http-foundation": "^4.4|^5.4|^6.0|^7.0", - "symfony/http-kernel": "^4.4|^5.4|^6.0|^7.0", - "symfony/property-access": "^4.4|^5.4|^6.0|^7.0", - "symfony/security-bundle": "^4.4|^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/security-bundle": "^6.4|^7.0", "symfony/translation-contracts": "^1.0|^2.0|^3.0" }, - "conflict": { - "symfony/console": "<4.4" - }, "require-dev": { - "symfony/browser-kit": "^5.4|^6.0|^7.0", - "symfony/console": "^4.4|^5.4|^6.0|^7.0", - "symfony/dom-crawler": "^5.4|^6.0|^7.0", - "symfony/filesystem": "^4.4|^5.4|^6.0|^7.0", - "symfony/framework-bundle": "^4.4|^5.4|^6.0|^7.0", - "symfony/phpunit-bridge": "^7.0.1", - "symfony/security-guard": "^4.4|^5.4|^6.0|^7.0", - "symfony/var-dumper": "^4.4|^5.4|^6.0|^7.0", - "symfony/yaml": "^4.4|^5.4|^6.0|^7.0" + "api-platform/core": "^3.0", + "symfony/browser-kit": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/filesystem": "^6.4|^7.0", + "symfony/framework-bundle": "^6.4|^7.0", + "symfony/phpunit-bridge": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" }, "suggest": { "gesdinet/jwt-refresh-token-bundle": "Implements a refresh token system over Json Web Tokens in Symfony", @@ -3029,7 +3234,7 @@ ], "support": { "issues": "https://github.com/lexik/LexikJWTAuthenticationBundle/issues", - "source": "https://github.com/lexik/LexikJWTAuthenticationBundle/tree/v2.21.0" + "source": "https://github.com/lexik/LexikJWTAuthenticationBundle/tree/v3.0.0" }, "funding": [ { @@ -3041,7 +3246,7 @@ "type": "tidelift" } ], - "time": "2024-04-27T15:46:45+00:00" + "time": "2024-05-05T17:49:24+00:00" }, { "name": "monolog/monolog", @@ -3144,85 +3349,18 @@ ], "time": "2024-04-12T21:02:21+00:00" }, - { - "name": "namshi/jose", - "version": "7.2.3", - "source": { - "type": "git", - "url": "https://github.com/namshi/jose.git", - "reference": "89a24d7eb3040e285dd5925fcad992378b82bcff" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/namshi/jose/zipball/89a24d7eb3040e285dd5925fcad992378b82bcff", - "reference": "89a24d7eb3040e285dd5925fcad992378b82bcff", - "shasum": "" - }, - "require": { - "ext-date": "*", - "ext-hash": "*", - "ext-json": "*", - "ext-pcre": "*", - "ext-spl": "*", - "php": ">=5.5", - "symfony/polyfill-php56": "^1.0" - }, - "require-dev": { - "phpseclib/phpseclib": "^2.0", - "phpunit/phpunit": "^4.5|^5.0", - "satooshi/php-coveralls": "^1.0" - }, - "suggest": { - "ext-openssl": "Allows to use OpenSSL as crypto engine.", - "phpseclib/phpseclib": "Allows to use Phpseclib as crypto engine, use version ^2.0." - }, - "type": "library", - "autoload": { - "psr-4": { - "Namshi\\JOSE\\": "src/Namshi/JOSE/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alessandro Nadalin", - "email": "alessandro.nadalin@gmail.com" - }, - { - "name": "Alessandro Cinelli (cirpo)", - "email": "alessandro.cinelli@gmail.com" - } - ], - "description": "JSON Object Signing and Encryption library for PHP.", - "keywords": [ - "JSON Web Signature", - "JSON Web Token", - "JWS", - "json", - "jwt", - "token" - ], - "support": { - "issues": "https://github.com/namshi/jose/issues", - "source": "https://github.com/namshi/jose/tree/master" - }, - "time": "2016-12-05T07:27:31+00:00" - }, { "name": "nelmio/cors-bundle", - "version": "2.4.0", + "version": "2.5.0", "source": { "type": "git", "url": "https://github.com/nelmio/NelmioCorsBundle.git", - "reference": "78fcdb91f76b080a1008133def9c7f613833933d" + "reference": "3a526fe025cd20e04a6a11370cf5ab28dbb5a544" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/78fcdb91f76b080a1008133def9c7f613833933d", - "reference": "78fcdb91f76b080a1008133def9c7f613833933d", + "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/3a526fe025cd20e04a6a11370cf5ab28dbb5a544", + "reference": "3a526fe025cd20e04a6a11370cf5ab28dbb5a544", "shasum": "" }, "require": { @@ -3269,9 +3407,9 @@ ], "support": { "issues": "https://github.com/nelmio/NelmioCorsBundle/issues", - "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.4.0" + "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.5.0" }, - "time": "2023-11-30T16:41:19+00:00" + "time": "2024-06-24T21:25:28+00:00" }, { "name": "php-http/client-common", @@ -3709,16 +3847,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.4.0", + "version": "5.4.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "298d2febfe79d03fe714eb871d5538da55205b1a" + "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/298d2febfe79d03fe714eb871d5538da55205b1a", - "reference": "298d2febfe79d03fe714eb871d5538da55205b1a", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", + "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", "shasum": "" }, "require": { @@ -3767,9 +3905,9 @@ "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.4.0" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.4.1" }, - "time": "2024-04-09T21:13:58+00:00" + "time": "2024-05-21T05:55:05+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -3967,16 +4105,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.28.0", + "version": "1.29.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb" + "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb", - "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fcaefacf2d5c417e928405b71b400d4ce10daaf4", + "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4", "shasum": "" }, "require": { @@ -4008,9 +4146,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/1.28.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.1" }, - "time": "2024-04-03T18:51:33+00:00" + "time": "2024-05-31T08:52:43+00:00" }, { "name": "psr/cache", @@ -4266,20 +4404,20 @@ }, { "name": "psr/http-factory", - "version": "1.0.2", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-factory.git", - "reference": "e616d01114759c4c489f93b099585439f795fe35" + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", - "reference": "e616d01114759c4c489f93b099585439f795fe35", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", "shasum": "" }, "require": { - "php": ">=7.0.0", + "php": ">=7.1", "psr/http-message": "^1.0 || ^2.0" }, "type": "library", @@ -4303,7 +4441,7 @@ "homepage": "https://www.php-fig.org/" } ], - "description": "Common interfaces for PSR-7 HTTP message factories", + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", "keywords": [ "factory", "http", @@ -4315,9 +4453,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/1.0.2" + "source": "https://github.com/php-fig/http-factory" }, - "time": "2023-04-10T20:10:41+00:00" + "time": "2024-04-15T12:06:14+00:00" }, { "name": "psr/http-message", @@ -5038,16 +5176,16 @@ }, { "name": "stof/doctrine-extensions-bundle", - "version": "v1.11.0", + "version": "v1.12.0", "source": { "type": "git", "url": "https://github.com/stof/StofDoctrineExtensionsBundle.git", - "reference": "9f7023e4c8a1c00a5627d41c1027a3f89e477630" + "reference": "473ae65598fa4160654c350e139e20ee75d9a91a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/stof/StofDoctrineExtensionsBundle/zipball/9f7023e4c8a1c00a5627d41c1027a3f89e477630", - "reference": "9f7023e4c8a1c00a5627d41c1027a3f89e477630", + "url": "https://api.github.com/repos/stof/StofDoctrineExtensionsBundle/zipball/473ae65598fa4160654c350e139e20ee75d9a91a", + "reference": "473ae65598fa4160654c350e139e20ee75d9a91a", "shasum": "" }, "require": { @@ -5112,9 +5250,9 @@ ], "support": { "issues": "https://github.com/stof/StofDoctrineExtensionsBundle/issues", - "source": "https://github.com/stof/StofDoctrineExtensionsBundle/tree/v1.11.0" + "source": "https://github.com/stof/StofDoctrineExtensionsBundle/tree/v1.12.0" }, - "time": "2024-02-13T14:43:20+00:00" + "time": "2024-06-10T12:27:27+00:00" }, { "name": "swaggest/json-diff", @@ -5212,16 +5350,16 @@ }, { "name": "symfony/asset", - "version": "v7.0.3", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "3ae493792fc17cc31b84e231f30f2d154575f171" + "reference": "8970de4a0cedd34e097c0f5c502a614780b9ca43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/3ae493792fc17cc31b84e231f30f2d154575f171", - "reference": "3ae493792fc17cc31b84e231f30f2d154575f171", + "url": "https://api.github.com/repos/symfony/asset/zipball/8970de4a0cedd34e097c0f5c502a614780b9ca43", + "reference": "8970de4a0cedd34e097c0f5c502a614780b9ca43", "shasum": "" }, "require": { @@ -5261,7 +5399,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v7.0.3" + "source": "https://github.com/symfony/asset/tree/v7.1.1" }, "funding": [ { @@ -5277,20 +5415,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/cache", - "version": "v7.0.6", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "2d0d3f92c74c445410d05374908b03e0a1131e2b" + "reference": "e933e1d947ffb88efcdd34a2bd51561cab7deaae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/2d0d3f92c74c445410d05374908b03e0a1131e2b", - "reference": "2d0d3f92c74c445410d05374908b03e0a1131e2b", + "url": "https://api.github.com/repos/symfony/cache/zipball/e933e1d947ffb88efcdd34a2bd51561cab7deaae", + "reference": "e933e1d947ffb88efcdd34a2bd51561cab7deaae", "shasum": "" }, "require": { @@ -5298,6 +5436,7 @@ "psr/cache": "^2.0|^3.0", "psr/log": "^1.1|^2|^3", "symfony/cache-contracts": "^2.5|^3", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/service-contracts": "^2.5|^3", "symfony/var-exporter": "^6.4|^7.0" }, @@ -5357,7 +5496,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.0.6" + "source": "https://github.com/symfony/cache/tree/v7.1.2" }, "funding": [ { @@ -5373,20 +5512,20 @@ "type": "tidelift" } ], - "time": "2024-03-27T19:55:25+00:00" + "time": "2024-06-11T13:32:38+00:00" }, { "name": "symfony/cache-contracts", - "version": "v3.4.2", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "2c9db6509a1b21dad229606897639d3284f54b2a" + "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/2c9db6509a1b21dad229606897639d3284f54b2a", - "reference": "2c9db6509a1b21dad229606897639d3284f54b2a", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/df6a1a44c890faded49a5fca33c2d5c5fd3c2197", + "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197", "shasum": "" }, "require": { @@ -5396,7 +5535,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -5433,7 +5572,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.4.2" + "source": "https://github.com/symfony/cache-contracts/tree/v3.5.0" }, "funding": [ { @@ -5449,20 +5588,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/clock", - "version": "v7.0.5", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", - "reference": "8b9d08887353d627d5f6c3bf3373b398b49051c2" + "reference": "3dfc8b084853586de51dd1441c6242c76a28cbe7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/8b9d08887353d627d5f6c3bf3373b398b49051c2", - "reference": "8b9d08887353d627d5f6c3bf3373b398b49051c2", + "url": "https://api.github.com/repos/symfony/clock/zipball/3dfc8b084853586de51dd1441c6242c76a28cbe7", + "reference": "3dfc8b084853586de51dd1441c6242c76a28cbe7", "shasum": "" }, "require": { @@ -5507,7 +5646,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.0.5" + "source": "https://github.com/symfony/clock/tree/v7.1.1" }, "funding": [ { @@ -5523,26 +5662,26 @@ "type": "tidelift" } ], - "time": "2024-03-02T12:46:12+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/config", - "version": "v7.0.6", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "7fc7e18a73ec8125fd95928c0340470d64760deb" + "reference": "2210fc99fa42a259eb6c89d1f724ce0c4d62d5d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/7fc7e18a73ec8125fd95928c0340470d64760deb", - "reference": "7fc7e18a73ec8125fd95928c0340470d64760deb", + "url": "https://api.github.com/repos/symfony/config/zipball/2210fc99fa42a259eb6c89d1f724ce0c4d62d5d2", + "reference": "2210fc99fa42a259eb6c89d1f724ce0c4d62d5d2", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/filesystem": "^6.4|^7.0", + "symfony/filesystem": "^7.1", "symfony/polyfill-ctype": "~1.8" }, "conflict": { @@ -5582,7 +5721,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.0.6" + "source": "https://github.com/symfony/config/tree/v7.1.1" }, "funding": [ { @@ -5598,20 +5737,20 @@ "type": "tidelift" } ], - "time": "2024-03-27T19:55:25+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/console", - "version": "v7.0.6", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "fde915cd8e7eb99b3d531d3d5c09531429c3f9e5" + "reference": "0aa29ca177f432ab68533432db0de059f39c92ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/fde915cd8e7eb99b3d531d3d5c09531429c3f9e5", - "reference": "fde915cd8e7eb99b3d531d3d5c09531429c3f9e5", + "url": "https://api.github.com/repos/symfony/console/zipball/0aa29ca177f432ab68533432db0de059f39c92ae", + "reference": "0aa29ca177f432ab68533432db0de059f39c92ae", "shasum": "" }, "require": { @@ -5675,7 +5814,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.0.6" + "source": "https://github.com/symfony/console/tree/v7.1.2" }, "funding": [ { @@ -5691,20 +5830,20 @@ "type": "tidelift" } ], - "time": "2024-04-01T11:04:53+00:00" + "time": "2024-06-28T10:03:55+00:00" }, { "name": "symfony/css-selector", - "version": "v7.0.3", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "ec60a4edf94e63b0556b6a0888548bb400a3a3be" + "reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/ec60a4edf94e63b0556b6a0888548bb400a3a3be", - "reference": "ec60a4edf94e63b0556b6a0888548bb400a3a3be", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/1c7cee86c6f812896af54434f8ce29c8d94f9ff4", + "reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4", "shasum": "" }, "require": { @@ -5740,7 +5879,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.0.3" + "source": "https://github.com/symfony/css-selector/tree/v7.1.1" }, "funding": [ { @@ -5756,27 +5895,27 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/dependency-injection", - "version": "v7.0.6", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "ff57b5c7d518c39eeb4e69dc0d1ec70723a117b9" + "reference": "6e108cded928bdafaf1da3fabe30dd5af20e36b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/ff57b5c7d518c39eeb4e69dc0d1ec70723a117b9", - "reference": "ff57b5c7d518c39eeb4e69dc0d1ec70723a117b9", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/6e108cded928bdafaf1da3fabe30dd5af20e36b9", + "reference": "6e108cded928bdafaf1da3fabe30dd5af20e36b9", "shasum": "" }, "require": { "php": ">=8.2", "psr/container": "^1.1|^2.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/service-contracts": "^3.3", + "symfony/service-contracts": "^3.5", "symfony/var-exporter": "^6.4|^7.0" }, "conflict": { @@ -5820,7 +5959,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.0.6" + "source": "https://github.com/symfony/dependency-injection/tree/v7.1.2" }, "funding": [ { @@ -5836,20 +5975,20 @@ "type": "tidelift" } ], - "time": "2024-03-28T09:20:36+00:00" + "time": "2024-06-28T10:03:55+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.4.0", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", "shasum": "" }, "require": { @@ -5858,7 +5997,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -5887,7 +6026,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" }, "funding": [ { @@ -5903,26 +6042,27 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/doctrine-bridge", - "version": "v7.0.6", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "929527febf8e134eaba620de1f9396da1db0df85" + "reference": "2c36eca96f111ada35b648a4d6e8aa61f354e4d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/929527febf8e134eaba620de1f9396da1db0df85", - "reference": "929527febf8e134eaba620de1f9396da1db0df85", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/2c36eca96f111ada35b648a4d6e8aa61f354e4d4", + "reference": "2c36eca96f111ada35b648a4d6e8aa61f354e4d4", "shasum": "" }, "require": { "doctrine/event-manager": "^2", "doctrine/persistence": "^3.1", "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3" @@ -5963,6 +6103,7 @@ "symfony/security-core": "^6.4|^7.0", "symfony/stopwatch": "^6.4|^7.0", "symfony/translation": "^6.4|^7.0", + "symfony/type-info": "^7.1", "symfony/uid": "^6.4|^7.0", "symfony/validator": "^6.4|^7.0", "symfony/var-dumper": "^6.4|^7.0" @@ -5993,7 +6134,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v7.0.6" + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.1.1" }, "funding": [ { @@ -6009,20 +6150,20 @@ "type": "tidelift" } ], - "time": "2024-03-19T09:29:21+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/dotenv", - "version": "v7.0.4", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "8017ea2f0ff4fbda6ae1bf3f5409d5ecff982067" + "reference": "efa715ec40c098f2fba62444f4fd75d0d4248ede" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/8017ea2f0ff4fbda6ae1bf3f5409d5ecff982067", - "reference": "8017ea2f0ff4fbda6ae1bf3f5409d5ecff982067", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/efa715ec40c098f2fba62444f4fd75d0d4248ede", + "reference": "efa715ec40c098f2fba62444f4fd75d0d4248ede", "shasum": "" }, "require": { @@ -6067,7 +6208,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v7.0.4" + "source": "https://github.com/symfony/dotenv/tree/v7.1.1" }, "funding": [ { @@ -6083,20 +6224,20 @@ "type": "tidelift" } ], - "time": "2024-02-09T10:53:15+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/error-handler", - "version": "v7.0.6", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "46a4cc138f799886d4bd70477c55c699d3e9dfc8" + "reference": "2412d3dddb5c9ea51a39cfbff1c565fc9844ca32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/46a4cc138f799886d4bd70477c55c699d3e9dfc8", - "reference": "46a4cc138f799886d4bd70477c55c699d3e9dfc8", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/2412d3dddb5c9ea51a39cfbff1c565fc9844ca32", + "reference": "2412d3dddb5c9ea51a39cfbff1c565fc9844ca32", "shasum": "" }, "require": { @@ -6142,7 +6283,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.0.6" + "source": "https://github.com/symfony/error-handler/tree/v7.1.2" }, "funding": [ { @@ -6158,20 +6299,20 @@ "type": "tidelift" } ], - "time": "2024-03-19T11:57:22+00:00" + "time": "2024-06-25T19:55:06+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.0.3", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e" + "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/834c28d533dd0636f910909d01b9ff45cc094b5e", - "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", + "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", "shasum": "" }, "require": { @@ -6222,7 +6363,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.3" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.1.1" }, "funding": [ { @@ -6238,20 +6379,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.4.2", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "4e64b49bf370ade88e567de29465762e316e4224" + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/4e64b49bf370ade88e567de29465762e316e4224", - "reference": "4e64b49bf370ade88e567de29465762e316e4224", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", "shasum": "" }, "require": { @@ -6261,7 +6402,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -6298,7 +6439,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.2" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" }, "funding": [ { @@ -6314,25 +6455,26 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/expression-language", - "version": "v7.0.3", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "0877c599cb260c9614f9229c0a2090d6919fd621" + "reference": "463cb95f80c14136175f4e03f7f6199b01c6b8b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/0877c599cb260c9614f9229c0a2090d6919fd621", - "reference": "0877c599cb260c9614f9229c0a2090d6919fd621", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/463cb95f80c14136175f4e03f7f6199b01c6b8b4", + "reference": "463cb95f80c14136175f4e03f7f6199b01c6b8b4", "shasum": "" }, "require": { "php": ">=8.2", "symfony/cache": "^6.4|^7.0", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3" }, "type": "library", @@ -6361,7 +6503,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v7.0.3" + "source": "https://github.com/symfony/expression-language/tree/v7.1.1" }, "funding": [ { @@ -6377,20 +6519,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/filesystem", - "version": "v7.0.6", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "408105dff4c104454100730bdfd1a9cdd993f04d" + "reference": "92a91985250c251de9b947a14bb2c9390b1a562c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/408105dff4c104454100730bdfd1a9cdd993f04d", - "reference": "408105dff4c104454100730bdfd1a9cdd993f04d", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/92a91985250c251de9b947a14bb2c9390b1a562c", + "reference": "92a91985250c251de9b947a14bb2c9390b1a562c", "shasum": "" }, "require": { @@ -6398,6 +6540,9 @@ "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, + "require-dev": { + "symfony/process": "^6.4|^7.0" + }, "type": "library", "autoload": { "psr-4": { @@ -6424,7 +6569,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.0.6" + "source": "https://github.com/symfony/filesystem/tree/v7.1.2" }, "funding": [ { @@ -6440,20 +6585,20 @@ "type": "tidelift" } ], - "time": "2024-03-21T19:37:36+00:00" + "time": "2024-06-28T10:03:55+00:00" }, { "name": "symfony/finder", - "version": "v7.0.0", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56" + "reference": "fbb0ba67688b780efbc886c1a0a0948dcf7205d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/6e5688d69f7cfc4ed4a511e96007e06c2d34ce56", - "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56", + "url": "https://api.github.com/repos/symfony/finder/zipball/fbb0ba67688b780efbc886c1a0a0948dcf7205d6", + "reference": "fbb0ba67688b780efbc886c1a0a0948dcf7205d6", "shasum": "" }, "require": { @@ -6488,7 +6633,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.0.0" + "source": "https://github.com/symfony/finder/tree/v7.1.1" }, "funding": [ { @@ -6504,7 +6649,7 @@ "type": "tidelift" } ], - "time": "2023-10-31T17:59:56+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/flex", @@ -6573,16 +6718,16 @@ }, { "name": "symfony/framework-bundle", - "version": "v7.0.6", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "5ebf6771f92d135c2bdbda7133998feb74713658" + "reference": "54a84f49658e2e87167396b2259a55e55e11f4a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/5ebf6771f92d135c2bdbda7133998feb74713658", - "reference": "5ebf6771f92d135c2bdbda7133998feb74713658", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/54a84f49658e2e87167396b2259a55e55e11f4a2", + "reference": "54a84f49658e2e87167396b2259a55e55e11f4a2", "shasum": "" }, "require": { @@ -6591,11 +6736,11 @@ "php": ">=8.2", "symfony/cache": "^6.4|^7.0", "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dependency-injection": "^7.1", "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^6.4|^7.0", "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/filesystem": "^6.4|^7.0", + "symfony/filesystem": "^7.1", "symfony/finder": "^6.4|^7.0", "symfony/http-foundation": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", @@ -6666,6 +6811,7 @@ "symfony/string": "^6.4|^7.0", "symfony/translation": "^6.4|^7.0", "symfony/twig-bundle": "^6.4|^7.0", + "symfony/type-info": "^7.1", "symfony/uid": "^6.4|^7.0", "symfony/validator": "^6.4|^7.0", "symfony/web-link": "^6.4|^7.0", @@ -6699,7 +6845,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.0.6" + "source": "https://github.com/symfony/framework-bundle/tree/v7.1.2" }, "funding": [ { @@ -6715,25 +6861,26 @@ "type": "tidelift" } ], - "time": "2024-03-27T19:55:25+00:00" + "time": "2024-06-28T08:00:31+00:00" }, { "name": "symfony/http-client", - "version": "v7.0.6", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "6e70473909f46fe5dd3b994a0f1b20ecb6b2f858" + "reference": "90ace27d17ccc9afc6f7ec0081e8529fb0e29425" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/6e70473909f46fe5dd3b994a0f1b20ecb6b2f858", - "reference": "6e70473909f46fe5dd3b994a0f1b20ecb6b2f858", + "url": "https://api.github.com/repos/symfony/http-client/zipball/90ace27d17ccc9afc6f7ec0081e8529fb0e29425", + "reference": "90ace27d17ccc9afc6f7ec0081e8529fb0e29425", "shasum": "" }, "require": { "php": ">=8.2", "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-client-contracts": "^3.4.1", "symfony/service-contracts": "^2.5|^3" }, @@ -6760,6 +6907,7 @@ "symfony/http-kernel": "^6.4|^7.0", "symfony/messenger": "^6.4|^7.0", "symfony/process": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0", "symfony/stopwatch": "^6.4|^7.0" }, "type": "library", @@ -6791,7 +6939,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.0.6" + "source": "https://github.com/symfony/http-client/tree/v7.1.2" }, "funding": [ { @@ -6807,20 +6955,20 @@ "type": "tidelift" } ], - "time": "2024-04-01T20:49:44+00:00" + "time": "2024-06-28T08:00:31+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v3.4.2", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "b6b5c876b3a4ed74460e2c5ac53bbce2f12e2a7e" + "reference": "20414d96f391677bf80078aa55baece78b82647d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/b6b5c876b3a4ed74460e2c5ac53bbce2f12e2a7e", - "reference": "b6b5c876b3a4ed74460e2c5ac53bbce2f12e2a7e", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/20414d96f391677bf80078aa55baece78b82647d", + "reference": "20414d96f391677bf80078aa55baece78b82647d", "shasum": "" }, "require": { @@ -6829,7 +6977,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -6869,7 +7017,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.4.2" + "source": "https://github.com/symfony/http-client-contracts/tree/v3.5.0" }, "funding": [ { @@ -6885,20 +7033,20 @@ "type": "tidelift" } ], - "time": "2024-04-01T18:51:09+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.0.6", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "8789625dcf36e5fbf753014678a1e090f1bc759c" + "reference": "74d171d5b6a1d9e4bfee09a41937c17a7536acfa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8789625dcf36e5fbf753014678a1e090f1bc759c", - "reference": "8789625dcf36e5fbf753014678a1e090f1bc759c", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/74d171d5b6a1d9e4bfee09a41937c17a7536acfa", + "reference": "74d171d5b6a1d9e4bfee09a41937c17a7536acfa", "shasum": "" }, "require": { @@ -6946,7 +7094,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.0.6" + "source": "https://github.com/symfony/http-foundation/tree/v7.1.1" }, "funding": [ { @@ -6962,25 +7110,26 @@ "type": "tidelift" } ], - "time": "2024-03-19T11:46:48+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.0.6", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "34c872391046d59af804af62d4573b829cfe4824" + "reference": "ae3fa717db4d41a55d14c2bd92399e37cf5bc0f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/34c872391046d59af804af62d4573b829cfe4824", - "reference": "34c872391046d59af804af62d4573b829cfe4824", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/ae3fa717db4d41a55d14c2bd92399e37cf5bc0f6", + "reference": "ae3fa717db4d41a55d14c2bd92399e37cf5bc0f6", "shasum": "" }, "require": { "php": ">=8.2", "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^6.4|^7.0", "symfony/event-dispatcher": "^6.4|^7.0", "symfony/http-foundation": "^6.4|^7.0", @@ -7021,14 +7170,15 @@ "symfony/finder": "^6.4|^7.0", "symfony/http-client-contracts": "^2.5|^3", "symfony/process": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", + "symfony/property-access": "^7.1", "symfony/routing": "^6.4|^7.0", - "symfony/serializer": "^6.4.4|^7.0.4", + "symfony/serializer": "^7.1", "symfony/stopwatch": "^6.4|^7.0", "symfony/translation": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3", "symfony/uid": "^6.4|^7.0", "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0", "symfony/var-exporter": "^6.4|^7.0", "twig/twig": "^3.0.4" }, @@ -7058,7 +7208,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.0.6" + "source": "https://github.com/symfony/http-kernel/tree/v7.1.2" }, "funding": [ { @@ -7074,28 +7224,31 @@ "type": "tidelift" } ], - "time": "2024-04-03T06:12:25+00:00" + "time": "2024-06-28T13:13:31+00:00" }, { "name": "symfony/intl", - "version": "v7.0.3", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "295995df4acf6790a35b9ce6ec32b313efb11ff8" + "reference": "66c1ecda092b1130ada2cf5f59dacfd5b6e9c99c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/295995df4acf6790a35b9ce6ec32b313efb11ff8", - "reference": "295995df4acf6790a35b9ce6ec32b313efb11ff8", + "url": "https://api.github.com/repos/symfony/intl/zipball/66c1ecda092b1130ada2cf5f59dacfd5b6e9c99c", + "reference": "66c1ecda092b1130ada2cf5f59dacfd5b6e9c99c", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/string": "<7.1" }, "require-dev": { "symfony/filesystem": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", "symfony/var-exporter": "^6.4|^7.0" }, "type": "library", @@ -7104,7 +7257,8 @@ "Symfony\\Component\\Intl\\": "" }, "exclude-from-classmap": [ - "/Tests/" + "/Tests/", + "/Resources/data/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7140,7 +7294,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v7.0.3" + "source": "https://github.com/symfony/intl/tree/v7.1.1" }, "funding": [ { @@ -7156,20 +7310,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/mailer", - "version": "v7.0.6", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "eb0c3187c7ddfde12d8aa0e1fa5fb29e730a41e0" + "reference": "8fcff0af9043c8f8a8e229437cea363e282f9aee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/eb0c3187c7ddfde12d8aa0e1fa5fb29e730a41e0", - "reference": "eb0c3187c7ddfde12d8aa0e1fa5fb29e730a41e0", + "url": "https://api.github.com/repos/symfony/mailer/zipball/8fcff0af9043c8f8a8e229437cea363e282f9aee", + "reference": "8fcff0af9043c8f8a8e229437cea363e282f9aee", "shasum": "" }, "require": { @@ -7220,7 +7374,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.0.6" + "source": "https://github.com/symfony/mailer/tree/v7.1.2" }, "funding": [ { @@ -7236,20 +7390,20 @@ "type": "tidelift" } ], - "time": "2024-03-28T09:20:36+00:00" + "time": "2024-06-28T08:00:31+00:00" }, { "name": "symfony/mime", - "version": "v7.0.6", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "99362408c9abdf8c7cadcf0529b6fc8b16f5ace2" + "reference": "26a00b85477e69a4bab63b66c5dce64f18b0cbfc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/99362408c9abdf8c7cadcf0529b6fc8b16f5ace2", - "reference": "99362408c9abdf8c7cadcf0529b6fc8b16f5ace2", + "url": "https://api.github.com/repos/symfony/mime/zipball/26a00b85477e69a4bab63b66c5dce64f18b0cbfc", + "reference": "26a00b85477e69a4bab63b66c5dce64f18b0cbfc", "shasum": "" }, "require": { @@ -7262,7 +7416,7 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/mailer": "<6.4", - "symfony/serializer": "<6.4" + "symfony/serializer": "<6.4.3|>7.0,<7.0.3" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", @@ -7272,7 +7426,7 @@ "symfony/process": "^6.4|^7.0", "symfony/property-access": "^6.4|^7.0", "symfony/property-info": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0" + "symfony/serializer": "^6.4.3|^7.0.3" }, "type": "library", "autoload": { @@ -7304,7 +7458,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.0.6" + "source": "https://github.com/symfony/mime/tree/v7.1.2" }, "funding": [ { @@ -7320,20 +7474,20 @@ "type": "tidelift" } ], - "time": "2024-03-21T19:37:36+00:00" + "time": "2024-06-28T10:03:55+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v7.0.3", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "5d4f188e60d1e38a1d9d4bb6fbbbc13111dff2b1" + "reference": "727be11ae17bb1c5a7f600753b9a1bf0cc0ec3b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/5d4f188e60d1e38a1d9d4bb6fbbbc13111dff2b1", - "reference": "5d4f188e60d1e38a1d9d4bb6fbbbc13111dff2b1", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/727be11ae17bb1c5a7f600753b9a1bf0cc0ec3b8", + "reference": "727be11ae17bb1c5a7f600753b9a1bf0cc0ec3b8", "shasum": "" }, "require": { @@ -7382,7 +7536,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v7.0.3" + "source": "https://github.com/symfony/monolog-bridge/tree/v7.1.1" }, "funding": [ { @@ -7398,7 +7552,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/monolog-bundle", @@ -7483,16 +7637,16 @@ }, { "name": "symfony/options-resolver", - "version": "v7.0.0", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "700ff4096e346f54cb628ea650767c8130f1001f" + "reference": "47aa818121ed3950acd2b58d1d37d08a94f9bf55" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/700ff4096e346f54cb628ea650767c8130f1001f", - "reference": "700ff4096e346f54cb628ea650767c8130f1001f", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/47aa818121ed3950acd2b58d1d37d08a94f9bf55", + "reference": "47aa818121ed3950acd2b58d1d37d08a94f9bf55", "shasum": "" }, "require": { @@ -7530,7 +7684,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.0.0" + "source": "https://github.com/symfony/options-resolver/tree/v7.1.1" }, "funding": [ { @@ -7546,20 +7700,20 @@ "type": "tidelift" } ], - "time": "2023-08-08T10:20:21+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/password-hasher", - "version": "v7.0.4", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "0eba656c16ecdf5588b3ddd2b2337b06173d839f" + "reference": "4ad96eb7cf9e2f8f133ada95f2b8021769061662" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/0eba656c16ecdf5588b3ddd2b2337b06173d839f", - "reference": "0eba656c16ecdf5588b3ddd2b2337b06173d839f", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/4ad96eb7cf9e2f8f133ada95f2b8021769061662", + "reference": "4ad96eb7cf9e2f8f133ada95f2b8021769061662", "shasum": "" }, "require": { @@ -7602,7 +7756,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v7.0.4" + "source": "https://github.com/symfony/password-hasher/tree/v7.1.1" }, "funding": [ { @@ -7618,20 +7772,20 @@ "type": "tidelift" } ], - "time": "2024-02-12T11:15:03+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "a287ed7475f85bf6f61890146edbc932c0fff919" + "reference": "a6e83bdeb3c84391d1dfe16f42e40727ce524a5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919", - "reference": "a287ed7475f85bf6f61890146edbc932c0fff919", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a6e83bdeb3c84391d1dfe16f42e40727ce524a5c", + "reference": "a6e83bdeb3c84391d1dfe16f42e40727ce524a5c", "shasum": "" }, "require": { @@ -7686,7 +7840,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.30.0" }, "funding": [ { @@ -7702,35 +7856,43 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { - "name": "symfony/polyfill-php56", - "version": "v1.20.0", + "name": "symfony/polyfill-php83", + "version": "v1.30.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675" + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", - "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9", + "reference": "dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9", "shasum": "" }, "require": { "php": ">=7.1" }, - "type": "metapackage", + "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.20-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" @@ -7745,7 +7907,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -7754,7 +7916,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php56/tree/v1.20.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.30.0" }, "funding": [ { @@ -7770,42 +7932,36 @@ "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2024-06-19T12:35:24+00:00" }, { - "name": "symfony/polyfill-php83", - "version": "v1.29.0", + "name": "symfony/property-access", + "version": "v7.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "86fcae159633351e5fd145d1c47de6c528f8caff" + "url": "https://github.com/symfony/property-access.git", + "reference": "74e39e6a6276b8e384f34c6ddbc10a6c9a60193a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/86fcae159633351e5fd145d1c47de6c528f8caff", - "reference": "86fcae159633351e5fd145d1c47de6c528f8caff", + "url": "https://api.github.com/repos/symfony/property-access/zipball/74e39e6a6276b8e384f34c6ddbc10a6c9a60193a", + "reference": "74e39e6a6276b8e384f34c6ddbc10a6c9a60193a", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-php80": "^1.14" + "php": ">=8.2", + "symfony/property-info": "^6.4|^7.0" }, - "type": "library", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "require-dev": { + "symfony/cache": "^6.4|^7.0" }, + "type": "library", "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Php83\\": "" + "Symfony\\Component\\PropertyAccess\\": "" }, - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7814,86 +7970,15 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.29.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-01-29T20:11:03+00:00" - }, - { - "name": "symfony/property-access", - "version": "v7.0.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/property-access.git", - "reference": "1c268ba954ccc5e78cf035b391abb67759e24423" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/1c268ba954ccc5e78cf035b391abb67759e24423", - "reference": "1c268ba954ccc5e78cf035b391abb67759e24423", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/property-info": "^6.4|^7.0" - }, - "require-dev": { - "symfony/cache": "^6.4|^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\PropertyAccess\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides functions to read and write from/to an object or array using a simple string notation", + "description": "Provides functions to read and write from/to an object or array using a simple string notation", "homepage": "https://symfony.com", "keywords": [ "access", @@ -7907,7 +7992,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v7.0.6" + "source": "https://github.com/symfony/property-access/tree/v7.1.1" }, "funding": [ { @@ -7923,25 +8008,26 @@ "type": "tidelift" } ], - "time": "2024-03-19T11:57:22+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/property-info", - "version": "v7.0.6", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "b8844ddce7d53f78b57ec9be59da80fceddf3167" + "reference": "d7b91e4aa07e822a9b935fc29a7254c12d502f16" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/b8844ddce7d53f78b57ec9be59da80fceddf3167", - "reference": "b8844ddce7d53f78b57ec9be59da80fceddf3167", + "url": "https://api.github.com/repos/symfony/property-info/zipball/d7b91e4aa07e822a9b935fc29a7254c12d502f16", + "reference": "d7b91e4aa07e822a9b935fc29a7254c12d502f16", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/string": "^6.4|^7.0" + "symfony/string": "^6.4|^7.0", + "symfony/type-info": "^7.1" }, "conflict": { "phpdocumentor/reflection-docblock": "<5.2", @@ -7990,7 +8076,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.0.6" + "source": "https://github.com/symfony/property-info/tree/v7.1.2" }, "funding": [ { @@ -8006,20 +8092,20 @@ "type": "tidelift" } ], - "time": "2024-03-28T09:20:36+00:00" + "time": "2024-06-26T07:21:35+00:00" }, { "name": "symfony/psr-http-message-bridge", - "version": "v7.0.6", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "fbc500cbcb64d3ea7469f019ab7aa717b320ff3f" + "reference": "9a5dbb606da711f5d40a7596ad577856f9402140" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/fbc500cbcb64d3ea7469f019ab7aa717b320ff3f", - "reference": "fbc500cbcb64d3ea7469f019ab7aa717b320ff3f", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/9a5dbb606da711f5d40a7596ad577856f9402140", + "reference": "9a5dbb606da711f5d40a7596ad577856f9402140", "shasum": "" }, "require": { @@ -8073,7 +8159,7 @@ "psr-7" ], "support": { - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v7.0.6" + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v7.1.1" }, "funding": [ { @@ -8089,20 +8175,20 @@ "type": "tidelift" } ], - "time": "2024-03-28T09:20:36+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/routing", - "version": "v7.0.6", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "cded64e5bbf9f31786f1055fcc76718fdd77519c" + "reference": "60c31bab5c45af7f13091b87deb708830f3c96c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/cded64e5bbf9f31786f1055fcc76718fdd77519c", - "reference": "cded64e5bbf9f31786f1055fcc76718fdd77519c", + "url": "https://api.github.com/repos/symfony/routing/zipball/60c31bab5c45af7f13091b87deb708830f3c96c0", + "reference": "60c31bab5c45af7f13091b87deb708830f3c96c0", "shasum": "" }, "require": { @@ -8154,7 +8240,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.0.6" + "source": "https://github.com/symfony/routing/tree/v7.1.1" }, "funding": [ { @@ -8170,20 +8256,20 @@ "type": "tidelift" } ], - "time": "2024-03-28T21:02:11+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/runtime", - "version": "v7.0.3", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "ef2c2fd4b40fb8cd22221154399ad8888e81cdb5" + "reference": "ea34522c447dd91a2b31cb330ee4540a56ba53f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/ef2c2fd4b40fb8cd22221154399ad8888e81cdb5", - "reference": "ef2c2fd4b40fb8cd22221154399ad8888e81cdb5", + "url": "https://api.github.com/repos/symfony/runtime/zipball/ea34522c447dd91a2b31cb330ee4540a56ba53f6", + "reference": "ea34522c447dd91a2b31cb330ee4540a56ba53f6", "shasum": "" }, "require": { @@ -8233,7 +8319,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v7.0.3" + "source": "https://github.com/symfony/runtime/tree/v7.1.1" }, "funding": [ { @@ -8249,20 +8335,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-05-31T14:55:39+00:00" }, { "name": "symfony/security-bundle", - "version": "v7.0.6", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "96a9e4eaf76514674d8ffd6127d8ec1204b72e7f" + "reference": "a6746372202512d2c75ba9bdbc36e15022a56c42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/96a9e4eaf76514674d8ffd6127d8ec1204b72e7f", - "reference": "96a9e4eaf76514674d8ffd6127d8ec1204b72e7f", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/a6746372202512d2c75ba9bdbc36e15022a56c42", + "reference": "a6746372202512d2c75ba9bdbc36e15022a56c42", "shasum": "" }, "require": { @@ -8278,7 +8364,7 @@ "symfony/password-hasher": "^6.4|^7.0", "symfony/security-core": "^6.4|^7.0", "symfony/security-csrf": "^6.4|^7.0", - "symfony/security-http": "^6.4|^7.0", + "symfony/security-http": "^7.1", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -8311,12 +8397,7 @@ "symfony/validator": "^6.4|^7.0", "symfony/yaml": "^6.4|^7.0", "twig/twig": "^3.0.4", - "web-token/jwt-checker": "^3.1", - "web-token/jwt-signature-algorithm-ecdsa": "^3.1", - "web-token/jwt-signature-algorithm-eddsa": "^3.1", - "web-token/jwt-signature-algorithm-hmac": "^3.1", - "web-token/jwt-signature-algorithm-none": "^3.1", - "web-token/jwt-signature-algorithm-rsa": "^3.1" + "web-token/jwt-library": "^3.3.2" }, "type": "symfony-bundle", "autoload": { @@ -8344,7 +8425,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v7.0.6" + "source": "https://github.com/symfony/security-bundle/tree/v7.1.2" }, "funding": [ { @@ -8360,20 +8441,20 @@ "type": "tidelift" } ], - "time": "2024-03-15T12:53:12+00:00" + "time": "2024-06-28T10:35:32+00:00" }, { "name": "symfony/security-core", - "version": "v7.0.3", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "72b9d961a5dcd21e6bc29b99df51a9000a15dde0" + "reference": "d615960211a11913e70f8576e5c38cd05d90ec3f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/72b9d961a5dcd21e6bc29b99df51a9000a15dde0", - "reference": "72b9d961a5dcd21e6bc29b99df51a9000a15dde0", + "url": "https://api.github.com/repos/symfony/security-core/zipball/d615960211a11913e70f8576e5c38cd05d90ec3f", + "reference": "d615960211a11913e70f8576e5c38cd05d90ec3f", "shasum": "" }, "require": { @@ -8383,6 +8464,7 @@ "symfony/service-contracts": "^2.5|^3" }, "conflict": { + "symfony/dependency-injection": "<6.4", "symfony/event-dispatcher": "<6.4", "symfony/http-foundation": "<6.4", "symfony/ldap": "<6.4", @@ -8394,6 +8476,7 @@ "psr/container": "^1.1|^2.0", "psr/log": "^1|^2|^3", "symfony/cache": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", "symfony/event-dispatcher": "^6.4|^7.0", "symfony/expression-language": "^6.4|^7.0", "symfony/http-foundation": "^6.4|^7.0", @@ -8428,7 +8511,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v7.0.3" + "source": "https://github.com/symfony/security-core/tree/v7.1.2" }, "funding": [ { @@ -8444,20 +8527,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-06-28T08:00:31+00:00" }, { "name": "symfony/security-csrf", - "version": "v7.0.3", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "f0f724e599f069b768e335e4bdf795726c7dfe8e" + "reference": "27cd1bce9d7f3457a152a6ca9790712d6954dd21" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/f0f724e599f069b768e335e4bdf795726c7dfe8e", - "reference": "f0f724e599f069b768e335e4bdf795726c7dfe8e", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/27cd1bce9d7f3457a152a6ca9790712d6954dd21", + "reference": "27cd1bce9d7f3457a152a6ca9790712d6954dd21", "shasum": "" }, "require": { @@ -8496,7 +8579,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v7.0.3" + "source": "https://github.com/symfony/security-csrf/tree/v7.1.1" }, "funding": [ { @@ -8512,24 +8595,25 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/security-http", - "version": "v7.0.4", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "f3a70a937128f47366821a9f4b5dbfaa0ba9c862" + "reference": "e9dc3ef093dac3d4982fcd96002525aa7a1d6989" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/f3a70a937128f47366821a9f4b5dbfaa0ba9c862", - "reference": "f3a70a937128f47366821a9f4b5dbfaa0ba9c862", + "url": "https://api.github.com/repos/symfony/security-http/zipball/e9dc3ef093dac3d4982fcd96002525aa7a1d6989", + "reference": "e9dc3ef093dac3d4982fcd96002525aa7a1d6989", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-foundation": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", "symfony/polyfill-mbstring": "~1.0", @@ -8549,13 +8633,13 @@ "symfony/cache": "^6.4|^7.0", "symfony/clock": "^6.4|^7.0", "symfony/expression-language": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", "symfony/http-client-contracts": "^3.0", "symfony/rate-limiter": "^6.4|^7.0", "symfony/routing": "^6.4|^7.0", "symfony/security-csrf": "^6.4|^7.0", "symfony/translation": "^6.4|^7.0", - "web-token/jwt-checker": "^3.1", - "web-token/jwt-signature-algorithm-ecdsa": "^3.1" + "web-token/jwt-library": "^3.3.2" }, "type": "library", "autoload": { @@ -8583,7 +8667,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v7.0.4" + "source": "https://github.com/symfony/security-http/tree/v7.1.2" }, "funding": [ { @@ -8599,24 +8683,25 @@ "type": "tidelift" } ], - "time": "2024-02-26T07:52:39+00:00" + "time": "2024-06-25T19:55:06+00:00" }, { "name": "symfony/serializer", - "version": "v7.0.6", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "dbdc0c04c28ac53de1fa35f92fca26e9b1345d98" + "reference": "d2077674aaaff02a95f290de512aa358947e6bbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/dbdc0c04c28ac53de1fa35f92fca26e9b1345d98", - "reference": "dbdc0c04c28ac53de1fa35f92fca26e9b1345d98", + "url": "https://api.github.com/repos/symfony/serializer/zipball/d2077674aaaff02a95f290de512aa358947e6bbe", + "reference": "d2077674aaaff02a95f290de512aa358947e6bbe", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8" }, "conflict": { @@ -8646,6 +8731,7 @@ "symfony/property-access": "^6.4|^7.0", "symfony/property-info": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3", + "symfony/type-info": "^7.1", "symfony/uid": "^6.4|^7.0", "symfony/validator": "^6.4|^7.0", "symfony/var-dumper": "^6.4|^7.0", @@ -8678,7 +8764,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v7.0.6" + "source": "https://github.com/symfony/serializer/tree/v7.1.2" }, "funding": [ { @@ -8694,25 +8780,26 @@ "type": "tidelift" } ], - "time": "2024-03-28T09:20:36+00:00" + "time": "2024-06-28T07:42:43+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.4.2", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "11bbf19a0fb7b36345861e85c5768844c552906e" + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/11bbf19a0fb7b36345861e85c5768844c552906e", - "reference": "11bbf19a0fb7b36345861e85c5768844c552906e", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", "shasum": "" }, "require": { "php": ">=8.1", - "psr/container": "^1.1|^2.0" + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "ext-psr": "<1.1|>=2" @@ -8720,7 +8807,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -8760,7 +8847,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.4.2" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" }, "funding": [ { @@ -8776,20 +8863,20 @@ "type": "tidelift" } ], - "time": "2023-12-19T21:51:00+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/stopwatch", - "version": "v7.0.3", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "983900d6fddf2b0cbaacacbbad07610854bd8112" + "reference": "5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/983900d6fddf2b0cbaacacbbad07610854bd8112", - "reference": "983900d6fddf2b0cbaacacbbad07610854bd8112", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d", + "reference": "5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d", "shasum": "" }, "require": { @@ -8822,7 +8909,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.0.3" + "source": "https://github.com/symfony/stopwatch/tree/v7.1.1" }, "funding": [ { @@ -8838,20 +8925,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/string", - "version": "v7.0.4", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f5832521b998b0bec40bee688ad5de98d4cf111b" + "reference": "14221089ac66cf82e3cf3d1c1da65de305587ff8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f5832521b998b0bec40bee688ad5de98d4cf111b", - "reference": "f5832521b998b0bec40bee688ad5de98d4cf111b", + "url": "https://api.github.com/repos/symfony/string/zipball/14221089ac66cf82e3cf3d1c1da65de305587ff8", + "reference": "14221089ac66cf82e3cf3d1c1da65de305587ff8", "shasum": "" }, "require": { @@ -8865,6 +8952,7 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { + "symfony/emoji": "^7.1", "symfony/error-handler": "^6.4|^7.0", "symfony/http-client": "^6.4|^7.0", "symfony/intl": "^6.4|^7.0", @@ -8908,7 +8996,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.0.4" + "source": "https://github.com/symfony/string/tree/v7.1.2" }, "funding": [ { @@ -8924,20 +9012,20 @@ "type": "tidelift" } ], - "time": "2024-02-01T13:17:36+00:00" + "time": "2024-06-28T09:27:18+00:00" }, { "name": "symfony/translation", - "version": "v7.0.4", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "5b75e872f7d135d7abb4613809fadc8d9f3d30a0" + "reference": "cf5ae136e124fc7681b34ce9fac9d5b9ae8ceee3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/5b75e872f7d135d7abb4613809fadc8d9f3d30a0", - "reference": "5b75e872f7d135d7abb4613809fadc8d9f3d30a0", + "url": "https://api.github.com/repos/symfony/translation/zipball/cf5ae136e124fc7681b34ce9fac9d5b9ae8ceee3", + "reference": "cf5ae136e124fc7681b34ce9fac9d5b9ae8ceee3", "shasum": "" }, "require": { @@ -9002,7 +9090,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.0.4" + "source": "https://github.com/symfony/translation/tree/v7.1.1" }, "funding": [ { @@ -9018,20 +9106,20 @@ "type": "tidelift" } ], - "time": "2024-02-22T20:27:20+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.4.2", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "43810bdb2ddb5400e5c5e778e27b210a0ca83b6b" + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/43810bdb2ddb5400e5c5e778e27b210a0ca83b6b", - "reference": "43810bdb2ddb5400e5c5e778e27b210a0ca83b6b", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", "shasum": "" }, "require": { @@ -9040,7 +9128,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -9080,7 +9168,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.4.2" + "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0" }, "funding": [ { @@ -9096,26 +9184,26 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/twig-bridge", - "version": "v7.0.6", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "1d5745dac2e043553177a3b88a76b99c2a2f6c2e" + "reference": "96e6e12a63db80bcedefc012042d2cb2d1a015f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/1d5745dac2e043553177a3b88a76b99c2a2f6c2e", - "reference": "1d5745dac2e043553177a3b88a76b99c2a2f6c2e", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/96e6e12a63db80bcedefc012042d2cb2d1a015f8", + "reference": "96e6e12a63db80bcedefc012042d2cb2d1a015f8", "shasum": "" }, "require": { "php": ">=8.2", "symfony/translation-contracts": "^2.5|^3", - "twig/twig": "^3.0.4" + "twig/twig": "^3.9" }, "conflict": { "phpdocumentor/reflection-docblock": "<3.2.2", @@ -9137,6 +9225,7 @@ "symfony/asset-mapper": "^6.4|^7.0", "symfony/console": "^6.4|^7.0", "symfony/dependency-injection": "^6.4|^7.0", + "symfony/emoji": "^7.1", "symfony/expression-language": "^6.4|^7.0", "symfony/finder": "^6.4|^7.0", "symfony/form": "^6.4|^7.0", @@ -9188,7 +9277,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v7.0.6" + "source": "https://github.com/symfony/twig-bridge/tree/v7.1.1" }, "funding": [ { @@ -9204,20 +9293,20 @@ "type": "tidelift" } ], - "time": "2024-03-28T21:02:11+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/twig-bundle", - "version": "v7.0.4", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "acab2368f53491e018bf31ef48b39df55a6812ef" + "reference": "d48c2f08c2f315e749f0e18fc4945b7be8afe1e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/acab2368f53491e018bf31ef48b39df55a6812ef", - "reference": "acab2368f53491e018bf31ef48b39df55a6812ef", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/d48c2f08c2f315e749f0e18fc4945b7be8afe1e5", + "reference": "d48c2f08c2f315e749f0e18fc4945b7be8afe1e5", "shasum": "" }, "require": { @@ -9272,7 +9361,89 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v7.0.4" + "source": "https://github.com/symfony/twig-bundle/tree/v7.1.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-05-31T14:57:53+00:00" + }, + { + "name": "symfony/type-info", + "version": "v7.1.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/type-info.git", + "reference": "60b28eb733f1453287f1263ed305b96091e0d1dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/type-info/zipball/60b28eb733f1453287f1263ed305b96091e0d1dc", + "reference": "60b28eb733f1453287f1263ed305b96091e0d1dc", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/container": "^1.1|^2.0" + }, + "conflict": { + "phpstan/phpdoc-parser": "<1.0", + "symfony/dependency-injection": "<6.4", + "symfony/property-info": "<6.4" + }, + "require-dev": { + "phpstan/phpdoc-parser": "^1.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\TypeInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mathias Arlaud", + "email": "mathias.arlaud@gmail.com" + }, + { + "name": "Baptiste LEDUC", + "email": "baptiste.leduc@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Extracts PHP types information.", + "homepage": "https://symfony.com", + "keywords": [ + "PHPStan", + "phpdoc", + "symfony", + "type" + ], + "support": { + "source": "https://github.com/symfony/type-info/tree/v7.1.1" }, "funding": [ { @@ -9288,24 +9459,25 @@ "type": "tidelift" } ], - "time": "2024-02-15T11:33:06+00:00" + "time": "2024-05-31T14:59:31+00:00" }, { "name": "symfony/validator", - "version": "v7.0.6", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "a2df2c63b7944a162dee86ab8065f2f91b7d6e36" + "reference": "bed12b7d5bd4dac452db5fa6203331c876b489e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/a2df2c63b7944a162dee86ab8065f2f91b7d6e36", - "reference": "a2df2c63b7944a162dee86ab8065f2f91b7d6e36", + "url": "https://api.github.com/repos/symfony/validator/zipball/bed12b7d5bd4dac452db5fa6203331c876b489e7", + "reference": "bed12b7d5bd4dac452db5fa6203331c876b489e7", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php83": "^1.27", @@ -9338,6 +9510,7 @@ "symfony/property-access": "^6.4|^7.0", "symfony/property-info": "^6.4|^7.0", "symfony/translation": "^6.4.3|^7.0.3", + "symfony/type-info": "^7.1", "symfony/yaml": "^6.4|^7.0" }, "type": "library", @@ -9346,7 +9519,8 @@ "Symfony\\Component\\Validator\\": "" }, "exclude-from-classmap": [ - "/Tests/" + "/Tests/", + "/Resources/bin/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -9366,7 +9540,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.0.6" + "source": "https://github.com/symfony/validator/tree/v7.1.2" }, "funding": [ { @@ -9382,20 +9556,20 @@ "type": "tidelift" } ], - "time": "2024-03-28T09:20:36+00:00" + "time": "2024-06-25T19:55:06+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.0.6", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "66d13dc207d5dab6b4f4c2b5460efe1bea29dbfb" + "reference": "5857c57c6b4b86524c08cf4f4bc95327270a816d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/66d13dc207d5dab6b4f4c2b5460efe1bea29dbfb", - "reference": "66d13dc207d5dab6b4f4c2b5460efe1bea29dbfb", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/5857c57c6b4b86524c08cf4f4bc95327270a816d", + "reference": "5857c57c6b4b86524c08cf4f4bc95327270a816d", "shasum": "" }, "require": { @@ -9449,7 +9623,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.0.6" + "source": "https://github.com/symfony/var-dumper/tree/v7.1.2" }, "funding": [ { @@ -9465,20 +9639,20 @@ "type": "tidelift" } ], - "time": "2024-03-19T11:57:22+00:00" + "time": "2024-06-28T08:00:31+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.0.6", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "c74c568d2a15a1d407cf40d61ea82bc2d521e27b" + "reference": "b80a669a2264609f07f1667f891dbfca25eba44c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/c74c568d2a15a1d407cf40d61ea82bc2d521e27b", - "reference": "c74c568d2a15a1d407cf40d61ea82bc2d521e27b", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/b80a669a2264609f07f1667f891dbfca25eba44c", + "reference": "b80a669a2264609f07f1667f891dbfca25eba44c", "shasum": "" }, "require": { @@ -9525,7 +9699,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.0.6" + "source": "https://github.com/symfony/var-exporter/tree/v7.1.2" }, "funding": [ { @@ -9541,20 +9715,20 @@ "type": "tidelift" } ], - "time": "2024-03-20T21:25:22+00:00" + "time": "2024-06-28T08:00:31+00:00" }, { "name": "symfony/web-link", - "version": "v7.0.3", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/web-link.git", - "reference": "855a347feb2ecfc1d1a379c739aff956d4cbec00" + "reference": "63f90aa0054bfd9a091d2f5cf465958f1030638f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-link/zipball/855a347feb2ecfc1d1a379c739aff956d4cbec00", - "reference": "855a347feb2ecfc1d1a379c739aff956d4cbec00", + "url": "https://api.github.com/repos/symfony/web-link/zipball/63f90aa0054bfd9a091d2f5cf465958f1030638f", + "reference": "63f90aa0054bfd9a091d2f5cf465958f1030638f", "shasum": "" }, "require": { @@ -9608,7 +9782,7 @@ "push" ], "support": { - "source": "https://github.com/symfony/web-link/tree/v7.0.3" + "source": "https://github.com/symfony/web-link/tree/v7.1.1" }, "funding": [ { @@ -9624,20 +9798,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/yaml", - "version": "v7.0.3", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "2d4fca631c00700597e9442a0b2451ce234513d3" + "reference": "fa34c77015aa6720469db7003567b9f772492bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/2d4fca631c00700597e9442a0b2451ce234513d3", - "reference": "2d4fca631c00700597e9442a0b2451ce234513d3", + "url": "https://api.github.com/repos/symfony/yaml/zipball/fa34c77015aa6720469db7003567b9f772492bf2", + "reference": "fa34c77015aa6720469db7003567b9f772492bf2", "shasum": "" }, "require": { @@ -9679,7 +9853,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.0.3" + "source": "https://github.com/symfony/yaml/tree/v7.1.1" }, "funding": [ { @@ -9695,7 +9869,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -9752,16 +9926,16 @@ }, { "name": "twig/cssinliner-extra", - "version": "v3.9.0", + "version": "v3.10.0", "source": { "type": "git", "url": "https://github.com/twigphp/cssinliner-extra.git", - "reference": "419e3e98431da91e8051ffdb447725d10935285d" + "reference": "10e88e9a887b646c58e3d670383208f15295dd22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/cssinliner-extra/zipball/419e3e98431da91e8051ffdb447725d10935285d", - "reference": "419e3e98431da91e8051ffdb447725d10935285d", + "url": "https://api.github.com/repos/twigphp/cssinliner-extra/zipball/10e88e9a887b646c58e3d670383208f15295dd22", + "reference": "10e88e9a887b646c58e3d670383208f15295dd22", "shasum": "" }, "require": { @@ -9805,7 +9979,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/cssinliner-extra/tree/v3.9.0" + "source": "https://github.com/twigphp/cssinliner-extra/tree/v3.10.0" }, "funding": [ { @@ -9817,20 +9991,20 @@ "type": "tidelift" } ], - "time": "2023-12-10T19:34:32+00:00" + "time": "2024-05-11T07:35:57+00:00" }, { "name": "twig/extra-bundle", - "version": "v3.9.3", + "version": "v3.10.0", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "ef6869adf1fdab66f7e495771a7ba01496ffc0d5" + "reference": "cdc6e23aeb7f4953c1039568c3439aab60c56454" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/ef6869adf1fdab66f7e495771a7ba01496ffc0d5", - "reference": "ef6869adf1fdab66f7e495771a7ba01496ffc0d5", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/cdc6e23aeb7f4953c1039568c3439aab60c56454", + "reference": "cdc6e23aeb7f4953c1039568c3439aab60c56454", "shasum": "" }, "require": { @@ -9879,7 +10053,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.9.3" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.10.0" }, "funding": [ { @@ -9891,20 +10065,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:24:21+00:00" + "time": "2024-05-11T07:35:57+00:00" }, { "name": "twig/twig", - "version": "v3.9.3", + "version": "v3.10.3", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "a842d75fed59cdbcbd3a3ad7fb9eb768fc350d58" + "reference": "67f29781ffafa520b0bbfbd8384674b42db04572" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/a842d75fed59cdbcbd3a3ad7fb9eb768fc350d58", - "reference": "a842d75fed59cdbcbd3a3ad7fb9eb768fc350d58", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/67f29781ffafa520b0bbfbd8384674b42db04572", + "reference": "67f29781ffafa520b0bbfbd8384674b42db04572", "shasum": "" }, "require": { @@ -9958,7 +10132,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.9.3" + "source": "https://github.com/twigphp/Twig/tree/v3.10.3" }, "funding": [ { @@ -9970,7 +10144,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T11:59:33+00:00" + "time": "2024-05-16T10:04:27+00:00" }, { "name": "webmozart/assert", @@ -10032,16 +10206,16 @@ }, { "name": "webonyx/graphql-php", - "version": "v15.11.1", + "version": "v15.12.5", "source": { "type": "git", "url": "https://github.com/webonyx/graphql-php.git", - "reference": "ab4ff2719b101dc3bfc3aaaf800edc21a98c56dc" + "reference": "7bcd31d1dcf67781ed5cb493b22c519c539c05e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/ab4ff2719b101dc3bfc3aaaf800edc21a98c56dc", - "reference": "ab4ff2719b101dc3bfc3aaaf800edc21a98c56dc", + "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/7bcd31d1dcf67781ed5cb493b22c519c539c05e6", + "reference": "7bcd31d1dcf67781ed5cb493b22c519c539c05e6", "shasum": "" }, "require": { @@ -10054,15 +10228,15 @@ "amphp/http-server": "^2.1", "dms/phpunit-arraysubset-asserts": "dev-master", "ergebnis/composer-normalize": "^2.28", - "friendsofphp/php-cs-fixer": "3.51.0", + "friendsofphp/php-cs-fixer": "3.59.3", "mll-lab/php-cs-fixer-config": "^5", "nyholm/psr7": "^1.5", "phpbench/phpbench": "^1.2", "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "1.10.59", - "phpstan/phpstan-phpunit": "1.3.16", - "phpstan/phpstan-strict-rules": "1.5.2", - "phpunit/phpunit": "^9.5 || ^10", + "phpstan/phpstan": "1.11.5", + "phpstan/phpstan-phpunit": "1.4.0", + "phpstan/phpstan-strict-rules": "1.6.0", + "phpunit/phpunit": "^9.5 || ^10.5.21", "psr/http-message": "^1 || ^2", "react/http": "^1.6", "react/promise": "^2.0 || ^3.0", @@ -10094,7 +10268,7 @@ ], "support": { "issues": "https://github.com/webonyx/graphql-php/issues", - "source": "https://github.com/webonyx/graphql-php/tree/v15.11.1" + "source": "https://github.com/webonyx/graphql-php/tree/v15.12.5" }, "funding": [ { @@ -10102,7 +10276,7 @@ "type": "open_collective" } ], - "time": "2024-03-11T10:21:05+00:00" + "time": "2024-06-23T11:30:58+00:00" }, { "name": "willdurand/negotiation", @@ -10322,18 +10496,82 @@ ], "time": "2024-04-13T18:00:56+00:00" }, + { + "name": "clue/ndjson-react", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/clue/reactphp-ndjson.git", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/clue/reactphp-ndjson/zipball/392dc165fce93b5bb5c637b67e59619223c931b0", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0", + "shasum": "" + }, + "require": { + "php": ">=5.3", + "react/stream": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", + "react/event-loop": "^1.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Clue\\React\\NDJson\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering" + } + ], + "description": "Streaming newline-delimited JSON (NDJSON) parser and encoder for ReactPHP.", + "homepage": "https://github.com/clue/reactphp-ndjson", + "keywords": [ + "NDJSON", + "json", + "jsonlines", + "newline", + "reactphp", + "streaming" + ], + "support": { + "issues": "https://github.com/clue/reactphp-ndjson/issues", + "source": "https://github.com/clue/reactphp-ndjson/tree/v1.3.0" + }, + "funding": [ + { + "url": "https://clue.engineering/support", + "type": "custom" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2022-12-23T10:58:28+00:00" + }, { "name": "composer/pcre", - "version": "3.1.3", + "version": "3.1.4", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8" + "reference": "04229f163664973f68f38f6f73d917799168ef24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", - "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", + "url": "https://api.github.com/repos/composer/pcre/zipball/04229f163664973f68f38f6f73d917799168ef24", + "reference": "04229f163664973f68f38f6f73d917799168ef24", "shasum": "" }, "require": { @@ -10375,7 +10613,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.3" + "source": "https://github.com/composer/pcre/tree/3.1.4" }, "funding": [ { @@ -10391,7 +10629,7 @@ "type": "tidelift" } ], - "time": "2024-03-19T10:26:25+00:00" + "time": "2024-05-27T13:40:54+00:00" }, { "name": "composer/semver", @@ -10476,16 +10714,16 @@ }, { "name": "composer/xdebug-handler", - "version": "3.0.4", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "4f988f8fdf580d53bdb2d1278fe93d1ed5462255" + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/4f988f8fdf580d53bdb2d1278fe93d1ed5462255", - "reference": "4f988f8fdf580d53bdb2d1278fe93d1ed5462255", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", "shasum": "" }, "require": { @@ -10522,7 +10760,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/3.0.4" + "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" }, "funding": [ { @@ -10538,7 +10776,7 @@ "type": "tidelift" } ], - "time": "2024-03-26T18:29:49+00:00" + "time": "2024-05-06T16:37:16+00:00" }, { "name": "dnoegel/php-xdg-base-dir", @@ -10661,6 +10899,53 @@ ], "time": "2023-11-24T11:18:31+00:00" }, + { + "name": "evenement/evenement", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/igorw/evenement.git", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "require-dev": { + "phpunit/phpunit": "^9 || ^6" + }, + "type": "library", + "autoload": { + "psr-4": { + "Evenement\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + } + ], + "description": "Événement is a very simple event dispatching library for PHP", + "keywords": [ + "event-dispatcher", + "event-emitter" + ], + "support": { + "issues": "https://github.com/igorw/evenement/issues", + "source": "https://github.com/igorw/evenement/tree/v3.0.2" + }, + "time": "2023-08-08T05:53:35+00:00" + }, { "name": "fakerphp/faker", "version": "v1.23.1", @@ -10888,25 +11173,32 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.54.0", + "version": "v3.59.3", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "2aecbc8640d7906c38777b3dcab6f4ca79004d08" + "reference": "30ba9ecc2b0e5205e578fe29973c15653d9bfd29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/2aecbc8640d7906c38777b3dcab6f4ca79004d08", - "reference": "2aecbc8640d7906c38777b3dcab6f4ca79004d08", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/30ba9ecc2b0e5205e578fe29973c15653d9bfd29", + "reference": "30ba9ecc2b0e5205e578fe29973c15653d9bfd29", "shasum": "" }, "require": { + "clue/ndjson-react": "^1.0", "composer/semver": "^3.4", "composer/xdebug-handler": "^3.0.3", "ext-filter": "*", "ext-json": "*", "ext-tokenizer": "*", + "fidry/cpu-core-counter": "^1.0", "php": "^7.4 || ^8.0", + "react/child-process": "^0.6.5", + "react/event-loop": "^1.0", + "react/promise": "^2.0 || ^3.0", + "react/socket": "^1.0", + "react/stream": "^1.0", "sebastian/diff": "^4.0 || ^5.0 || ^6.0", "symfony/console": "^5.4 || ^6.0 || ^7.0", "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", @@ -10920,16 +11212,16 @@ "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "facile-it/paraunit": "^1.3 || ^2.0", - "infection/infection": "^0.27.11", + "facile-it/paraunit": "^1.3 || ^2.3", + "infection/infection": "^0.29.5", "justinrainbow/json-schema": "^5.2", "keradus/cli-executor": "^2.1", "mikey179/vfsstream": "^1.6.11", "php-coveralls/php-coveralls": "^2.7", "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", - "phpunit/phpunit": "^9.6 || ^10.5.5 || ^11.0.2", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.5", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.5", + "phpunit/phpunit": "^9.6.19 || ^10.5.21 || ^11.2", "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0", "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, @@ -10944,7 +11236,10 @@ "autoload": { "psr-4": { "PhpCsFixer\\": "src/" - } + }, + "exclude-from-classmap": [ + "src/Fixer/Internal/*" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10969,7 +11264,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.54.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.59.3" }, "funding": [ { @@ -10977,7 +11272,7 @@ "type": "github" } ], - "time": "2024-04-17T08:12:13+00:00" + "time": "2024-06-16T14:17:03+00:00" }, { "name": "hautelook/alice-bundle", @@ -11058,12 +11353,12 @@ "version": "v5.2.13", "source": { "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", + "url": "https://github.com/jsonrainbow/json-schema.git", "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793", + "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793", "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793", "shasum": "" }, @@ -11118,8 +11413,8 @@ "schema" ], "support": { - "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/v5.2.13" + "issues": "https://github.com/jsonrainbow/json-schema/issues", + "source": "https://github.com/jsonrainbow/json-schema/tree/v5.2.13" }, "time": "2023-09-26T02:20:38+00:00" }, @@ -11192,16 +11487,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.11.1", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", "shasum": "" }, "require": { @@ -11209,11 +11504,12 @@ }, "conflict": { "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" + "doctrine/common": "<2.13.3 || >=3 <3.2.2" }, "require-dev": { "doctrine/collections": "^1.6.8", "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", @@ -11239,7 +11535,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" }, "funding": [ { @@ -11247,7 +11543,7 @@ "type": "tidelift" } ], - "time": "2023-03-08T13:26:56+00:00" + "time": "2024-06-12T14:39:25+00:00" }, { "name": "nelmio/alice", @@ -11653,43 +11949,164 @@ "time": "2023-11-22T10:21:01+00:00" }, { - "name": "phpstan/phpstan", - "version": "1.10.67", + "name": "phpspec/prophecy", + "version": "v1.19.0", "source": { "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "16ddbe776f10da6a95ebd25de7c1dbed397dc493" + "url": "https://github.com/phpspec/prophecy.git", + "reference": "67a759e7d8746d501c41536ba40cd9c0a07d6a87" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/16ddbe776f10da6a95ebd25de7c1dbed397dc493", - "reference": "16ddbe776f10da6a95ebd25de7c1dbed397dc493", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/67a759e7d8746d501c41536ba40cd9c0a07d6a87", + "reference": "67a759e7d8746d501c41536ba40cd9c0a07d6a87", "shasum": "" }, "require": { - "php": "^7.2|^8.0" + "doctrine/instantiator": "^1.2 || ^2.0", + "php": "^7.2 || 8.0.* || 8.1.* || 8.2.* || 8.3.*", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0 || ^5.0 || ^6.0", + "sebastian/recursion-context": "^3.0 || ^4.0 || ^5.0 || ^6.0" }, - "conflict": { - "phpstan/phpstan-shim": "*" + "require-dev": { + "phpspec/phpspec": "^6.0 || ^7.0", + "phpstan/phpstan": "^1.9", + "phpunit/phpunit": "^8.0 || ^9.0 || ^10.0" }, - "bin": [ - "phpstan", - "phpstan.phar" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, "autoload": { - "files": [ - "bootstrap.php" - ] + "psr-4": { + "Prophecy\\": "src/Prophecy" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "PHPStan - PHP Static Analysis Tool", + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", "keywords": [ + "Double", + "Dummy", "dev", - "static analysis" + "fake", + "mock", + "spy", + "stub" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/v1.19.0" + }, + "time": "2024-02-29T11:52:51+00:00" + }, + { + "name": "phpspec/prophecy-phpunit", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy-phpunit.git", + "reference": "16e1247e139434bce0bac09848bc5c8d882940fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy-phpunit/zipball/16e1247e139434bce0bac09848bc5c8d882940fc", + "reference": "16e1247e139434bce0bac09848bc5c8d882940fc", + "shasum": "" + }, + "require": { + "php": "^7.3 || ^8", + "phpspec/prophecy": "^1.18", + "phpunit/phpunit": "^9.1 || ^10.1 || ^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\PhpUnit\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christophe Coevoet", + "email": "stof@notk.org" + } + ], + "description": "Integrating the Prophecy mocking library in PHPUnit test cases", + "homepage": "http://phpspec.net", + "keywords": [ + "phpunit", + "prophecy" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy-phpunit/issues", + "source": "https://github.com/phpspec/prophecy-phpunit/tree/v2.2.0" + }, + "time": "2024-03-01T08:33:58+00:00" + }, + { + "name": "phpstan/phpstan", + "version": "1.11.5", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "490f0ae1c92b082f154681d7849aee776a7c1443" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/490f0ae1c92b082f154681d7849aee776a7c1443", + "reference": "490f0ae1c92b082f154681d7849aee776a7c1443", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" ], "support": { "docs": "https://phpstan.org/user-guide/getting-started", @@ -11708,7 +12125,7 @@ "type": "github" } ], - "time": "2024-04-16T07:22:02+00:00" + "time": "2024-06-17T15:10:54+00:00" }, { "name": "phpunit/php-code-coverage", @@ -12033,16 +12450,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.20", + "version": "10.5.24", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "547d314dc24ec1e177720d45c6263fb226cc2ae3" + "reference": "5f124e3e3e561006047b532fd0431bf5bb6b9015" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/547d314dc24ec1e177720d45c6263fb226cc2ae3", - "reference": "547d314dc24ec1e177720d45c6263fb226cc2ae3", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5f124e3e3e561006047b532fd0431bf5bb6b9015", + "reference": "5f124e3e3e561006047b532fd0431bf5bb6b9015", "shasum": "" }, "require": { @@ -12114,7 +12531,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.20" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.24" }, "funding": [ { @@ -12130,25 +12547,555 @@ "type": "tidelift" } ], - "time": "2024-04-24T06:32:35+00:00" + "time": "2024-06-20T13:09:54+00:00" + }, + { + "name": "react/cache", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/cache.git", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/promise": "^3.0 || ^2.0 || ^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, Promise-based cache interface for ReactPHP", + "keywords": [ + "cache", + "caching", + "promise", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/cache/issues", + "source": "https://github.com/reactphp/cache/tree/v1.2.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2022-11-30T15:59:55+00:00" + }, + { + "name": "react/child-process", + "version": "v0.6.5", + "source": { + "type": "git", + "url": "https://github.com/reactphp/child-process.git", + "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/child-process/zipball/e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", + "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/event-loop": "^1.2", + "react/stream": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35", + "react/socket": "^1.8", + "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\ChildProcess\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven library for executing child processes with ReactPHP.", + "keywords": [ + "event-driven", + "process", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/child-process/issues", + "source": "https://github.com/reactphp/child-process/tree/v0.6.5" + }, + "funding": [ + { + "url": "https://github.com/WyriHaximus", + "type": "github" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2022-09-16T13:41:56+00:00" + }, + { + "name": "react/dns", + "version": "v1.13.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/dns.git", + "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/dns/zipball/eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/cache": "^1.0 || ^0.6 || ^0.5", + "react/event-loop": "^1.2", + "react/promise": "^3.2 || ^2.7 || ^1.2.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4.3 || ^3 || ^2", + "react/promise-timer": "^1.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Dns\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async DNS resolver for ReactPHP", + "keywords": [ + "async", + "dns", + "dns-resolver", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/dns/issues", + "source": "https://github.com/reactphp/dns/tree/v1.13.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-13T14:18:03+00:00" + }, + { + "name": "react/event-loop", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/event-loop.git", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "suggest": { + "ext-pcntl": "For signal handling support when using the StreamSelectLoop" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\EventLoop\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", + "keywords": [ + "asynchronous", + "event-loop" + ], + "support": { + "issues": "https://github.com/reactphp/event-loop/issues", + "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-11-13T13:48:05+00:00" + }, + { + "name": "react/promise", + "version": "v3.2.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63", + "shasum": "" + }, + "require": { + "php": ">=7.1.0" + }, + "require-dev": { + "phpstan/phpstan": "1.10.39 || 1.4.10", + "phpunit/phpunit": "^9.6 || ^7.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "React\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "support": { + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v3.2.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-05-24T10:39:05+00:00" + }, + { + "name": "react/socket", + "version": "v1.15.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/socket.git", + "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/socket/zipball/216d3aec0b87f04a40ca04f481e6af01bdd1d038", + "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/dns": "^1.11", + "react/event-loop": "^1.2", + "react/promise": "^3 || ^2.6 || ^1.2.1", + "react/stream": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4 || ^3 || ^2", + "react/promise-stream": "^1.4", + "react/promise-timer": "^1.10" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Socket\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", + "keywords": [ + "Connection", + "Socket", + "async", + "reactphp", + "stream" + ], + "support": { + "issues": "https://github.com/reactphp/socket/issues", + "source": "https://github.com/reactphp/socket/tree/v1.15.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-12-15T11:02:10+00:00" + }, + { + "name": "react/stream", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/stream.git", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/stream/zipball/1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.8", + "react/event-loop": "^1.2" + }, + "require-dev": { + "clue/stream-filter": "~1.2", + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Stream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", + "keywords": [ + "event-driven", + "io", + "non-blocking", + "pipe", + "reactphp", + "readable", + "stream", + "writable" + ], + "support": { + "issues": "https://github.com/reactphp/stream/issues", + "source": "https://github.com/reactphp/stream/tree/v1.4.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-11T12:45:25+00:00" }, { "name": "rector/rector", - "version": "1.0.4", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "6e04d0eb087aef707fa0c5686d33d6ff61f4a555" + "reference": "2fa387553db22b6f9bcccf5ff16f2c2c18a52a65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/6e04d0eb087aef707fa0c5686d33d6ff61f4a555", - "reference": "6e04d0eb087aef707fa0c5686d33d6ff61f4a555", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/2fa387553db22b6f9bcccf5ff16f2c2c18a52a65", + "reference": "2fa387553db22b6f9bcccf5ff16f2c2c18a52a65", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.10.57" + "phpstan/phpstan": "^1.11" }, "conflict": { "rector/rector-doctrine": "*", @@ -12181,7 +13128,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/1.0.4" + "source": "https://github.com/rectorphp/rector/tree/1.2.0" }, "funding": [ { @@ -12189,7 +13136,7 @@ "type": "github" } ], - "time": "2024-04-05T09:01:07+00:00" + "time": "2024-07-01T14:24:45+00:00" }, { "name": "sebastian/cli-parser", @@ -13109,16 +14056,16 @@ }, { "name": "spatie/array-to-xml", - "version": "3.2.3", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/spatie/array-to-xml.git", - "reference": "c95fd4db94ec199f798d4b5b4a81757bd20d88ab" + "reference": "f56b220fe2db1ade4c88098d83413ebdfc3bf876" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/c95fd4db94ec199f798d4b5b4a81757bd20d88ab", - "reference": "c95fd4db94ec199f798d4b5b4a81757bd20d88ab", + "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/f56b220fe2db1ade4c88098d83413ebdfc3bf876", + "reference": "f56b220fe2db1ade4c88098d83413ebdfc3bf876", "shasum": "" }, "require": { @@ -13131,6 +14078,11 @@ "spatie/pest-plugin-snapshots": "^1.1" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, "autoload": { "psr-4": { "Spatie\\ArrayToXml\\": "src" @@ -13156,7 +14108,7 @@ "xml" ], "support": { - "source": "https://github.com/spatie/array-to-xml/tree/3.2.3" + "source": "https://github.com/spatie/array-to-xml/tree/3.3.0" }, "funding": [ { @@ -13168,20 +14120,20 @@ "type": "github" } ], - "time": "2024-02-07T10:39:02+00:00" + "time": "2024-05-01T10:20:27+00:00" }, { "name": "spatie/phpunit-snapshot-assertions", - "version": "5.1.5", + "version": "5.1.6", "source": { "type": "git", "url": "https://github.com/spatie/phpunit-snapshot-assertions.git", - "reference": "fe84650c4cfb8f51ecf5146f4089369fafea2c94" + "reference": "61e2eb567713c89987895b8f514a7a4d3bff89c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/phpunit-snapshot-assertions/zipball/fe84650c4cfb8f51ecf5146f4089369fafea2c94", - "reference": "fe84650c4cfb8f51ecf5146f4089369fafea2c94", + "url": "https://api.github.com/repos/spatie/phpunit-snapshot-assertions/zipball/61e2eb567713c89987895b8f514a7a4d3bff89c9", + "reference": "61e2eb567713c89987895b8f514a7a4d3bff89c9", "shasum": "" }, "require": { @@ -13237,7 +14189,7 @@ ], "support": { "issues": "https://github.com/spatie/phpunit-snapshot-assertions/issues", - "source": "https://github.com/spatie/phpunit-snapshot-assertions/tree/5.1.5" + "source": "https://github.com/spatie/phpunit-snapshot-assertions/tree/5.1.6" }, "funding": [ { @@ -13245,20 +14197,20 @@ "type": "custom" } ], - "time": "2024-02-20T10:04:25+00:00" + "time": "2024-05-03T07:53:03+00:00" }, { "name": "symfony/browser-kit", - "version": "v7.0.3", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "725d5b15681685ac17b20b575254c75639722488" + "reference": "9c13742e3175b5815e272b981876ae329bec2040" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/725d5b15681685ac17b20b575254c75639722488", - "reference": "725d5b15681685ac17b20b575254c75639722488", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/9c13742e3175b5815e272b981876ae329bec2040", + "reference": "9c13742e3175b5815e272b981876ae329bec2040", "shasum": "" }, "require": { @@ -13297,7 +14249,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v7.0.3" + "source": "https://github.com/symfony/browser-kit/tree/v7.1.1" }, "funding": [ { @@ -13313,20 +14265,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/debug-bundle", - "version": "v7.0.3", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/debug-bundle.git", - "reference": "b0db5c443883ce5c10c2265c77feb9833c3d9d6d" + "reference": "aa024d28ce7ce0c6a16ee57c066838bece92893f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/b0db5c443883ce5c10c2265c77feb9833c3d9d6d", - "reference": "b0db5c443883ce5c10c2265c77feb9833c3d9d6d", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/aa024d28ce7ce0c6a16ee57c066838bece92893f", + "reference": "aa024d28ce7ce0c6a16ee57c066838bece92893f", "shasum": "" }, "require": { @@ -13371,7 +14323,7 @@ "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug-bundle/tree/v7.0.3" + "source": "https://github.com/symfony/debug-bundle/tree/v7.1.1" }, "funding": [ { @@ -13387,20 +14339,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-05-31T14:55:39+00:00" }, { "name": "symfony/dom-crawler", - "version": "v7.0.4", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "6cb272cbec4dc7a30a853d2931766b03bea92dda" + "reference": "01ce8174447f1f1dd33a5854b01beef79061d9fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/6cb272cbec4dc7a30a853d2931766b03bea92dda", - "reference": "6cb272cbec4dc7a30a853d2931766b03bea92dda", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/01ce8174447f1f1dd33a5854b01beef79061d9fa", + "reference": "01ce8174447f1f1dd33a5854b01beef79061d9fa", "shasum": "" }, "require": { @@ -13438,7 +14390,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v7.0.4" + "source": "https://github.com/symfony/dom-crawler/tree/v7.1.1" }, "funding": [ { @@ -13454,20 +14406,20 @@ "type": "tidelift" } ], - "time": "2024-02-12T11:15:03+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/maker-bundle", - "version": "v1.59.0", + "version": "v1.60.0", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "1f02b59b98003b2c1f51bc8f178aee5cbf36779c" + "reference": "c305a02a22974670f359d4274c9431e1a191f559" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/1f02b59b98003b2c1f51bc8f178aee5cbf36779c", - "reference": "1f02b59b98003b2c1f51bc8f178aee5cbf36779c", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/c305a02a22974670f359d4274c9431e1a191f559", + "reference": "c305a02a22974670f359d4274c9431e1a191f559", "shasum": "" }, "require": { @@ -13530,7 +14482,7 @@ ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.59.0" + "source": "https://github.com/symfony/maker-bundle/tree/v1.60.0" }, "funding": [ { @@ -13546,20 +14498,20 @@ "type": "tidelift" } ], - "time": "2024-04-27T21:12:25+00:00" + "time": "2024-06-10T06:03:18+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v7.0.6", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "a014167aa1f66cb9990675840da65609d3e61612" + "reference": "8eb63f1c0e2001f97b3cd9ed550b18765cdeb1c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/a014167aa1f66cb9990675840da65609d3e61612", - "reference": "a014167aa1f66cb9990675840da65609d3e61612", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/8eb63f1c0e2001f97b3cd9ed550b18765cdeb1c8", + "reference": "8eb63f1c0e2001f97b3cd9ed550b18765cdeb1c8", "shasum": "" }, "require": { @@ -13591,7 +14543,8 @@ "Symfony\\Bridge\\PhpUnit\\": "" }, "exclude-from-classmap": [ - "/Tests/" + "/Tests/", + "/bin/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -13611,7 +14564,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v7.0.6" + "source": "https://github.com/symfony/phpunit-bridge/tree/v7.1.2" }, "funding": [ { @@ -13627,20 +14580,20 @@ "type": "tidelift" } ], - "time": "2024-03-19T11:57:22+00:00" + "time": "2024-06-25T19:55:06+00:00" }, { "name": "symfony/process", - "version": "v7.0.4", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "0e7727191c3b71ebec6d529fa0e50a01ca5679e9" + "reference": "febf90124323a093c7ee06fdb30e765ca3c20028" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/0e7727191c3b71ebec6d529fa0e50a01ca5679e9", - "reference": "0e7727191c3b71ebec6d529fa0e50a01ca5679e9", + "url": "https://api.github.com/repos/symfony/process/zipball/febf90124323a093c7ee06fdb30e765ca3c20028", + "reference": "febf90124323a093c7ee06fdb30e765ca3c20028", "shasum": "" }, "require": { @@ -13672,7 +14625,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.0.4" + "source": "https://github.com/symfony/process/tree/v7.1.1" }, "funding": [ { @@ -13688,20 +14641,20 @@ "type": "tidelift" } ], - "time": "2024-02-22T20:27:20+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v7.0.4", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "542daea1345fe181cbfd52db00717174a838ea0a" + "reference": "82b22245d9f3ef8ccb1d55d4e8ade8bc3885c302" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/542daea1345fe181cbfd52db00717174a838ea0a", - "reference": "542daea1345fe181cbfd52db00717174a838ea0a", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/82b22245d9f3ef8ccb1d55d4e8ade8bc3885c302", + "reference": "82b22245d9f3ef8ccb1d55d4e8ade8bc3885c302", "shasum": "" }, "require": { @@ -13711,7 +14664,7 @@ "symfony/http-kernel": "^6.4|^7.0", "symfony/routing": "^6.4|^7.0", "symfony/twig-bundle": "^6.4|^7.0", - "twig/twig": "^3.0.4" + "twig/twig": "^3.10" }, "conflict": { "symfony/form": "<6.4", @@ -13753,7 +14706,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.0.4" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.1.2" }, "funding": [ { @@ -13769,7 +14722,7 @@ "type": "tidelift" } ], - "time": "2024-02-22T20:27:20+00:00" + "time": "2024-06-25T19:55:06+00:00" }, { "name": "theofidry/alice-data-fixtures", @@ -13919,16 +14872,16 @@ }, { "name": "vimeo/psalm", - "version": "5.23.1", + "version": "5.25.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "8471a896ccea3526b26d082f4461eeea467f10a4" + "reference": "01a8eb06b9e9cc6cfb6a320bf9fb14331919d505" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/8471a896ccea3526b26d082f4461eeea467f10a4", - "reference": "8471a896ccea3526b26d082f4461eeea467f10a4", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/01a8eb06b9e9cc6cfb6a320bf9fb14331919d505", + "reference": "01a8eb06b9e9cc6cfb6a320bf9fb14331919d505", "shasum": "" }, "require": { @@ -14025,7 +14978,7 @@ "issues": "https://github.com/vimeo/psalm/issues", "source": "https://github.com/vimeo/psalm" }, - "time": "2024-03-11T20:33:46+00:00" + "time": "2024-06-16T15:08:35+00:00" } ], "aliases": [], diff --git a/api/config/bundles.php b/api/config/bundles.php index 30b23fc306..204c2b254d 100644 --- a/api/config/bundles.php +++ b/api/config/bundles.php @@ -5,6 +5,7 @@ use Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle; use Exercise\HTMLPurifierBundle\ExerciseHTMLPurifierBundle; use Fidry\AliceDataFixtures\Bridge\Symfony\FidryAliceDataFixturesBundle; +use FOS\HttpCacheBundle\FOSHttpCacheBundle; use Hautelook\AliceBundle\HautelookAliceBundle; use KnpU\OAuth2ClientBundle\KnpUOAuth2ClientBundle; use Lexik\Bundle\JWTAuthenticationBundle\LexikJWTAuthenticationBundle; @@ -42,4 +43,5 @@ KnpUOAuth2ClientBundle::class => ['all' => true], SentryBundle::class => ['all' => true], TwigExtraBundle::class => ['all' => true], + FOSHttpCacheBundle::class => ['all' => true], ]; diff --git a/api/config/packages/api_platform.yaml b/api/config/packages/api_platform.yaml index 9f9f543e06..e6a16a6af6 100644 --- a/api/config/packages/api_platform.yaml +++ b/api/config/packages/api_platform.yaml @@ -2,6 +2,7 @@ api_platform: title: eCamp v3 version: 1.0.0 show_webby: false + enable_link_security: true mapping: paths: - '%kernel.project_dir%/src/Entity' @@ -27,8 +28,9 @@ api_platform: versions: [3] defaults: stateless: true - cache_headers: - vary: ['Content-Type', 'Authorization', 'Origin'] + extra_properties: + standard_put: true + rfc_7807_compliant_errors: false pagination_enabled: false itemOperations: [ 'get', 'patch', 'delete' ] collection_operations: @@ -39,3 +41,4 @@ api_platform: skip_null_values: false order: createTime: DESC + keep_legacy_inflector: false diff --git a/api/config/packages/doctrine.yaml b/api/config/packages/doctrine.yaml index 1f948e1541..fb25b29cac 100644 --- a/api/config/packages/doctrine.yaml +++ b/api/config/packages/doctrine.yaml @@ -18,12 +18,16 @@ doctrine: naming_strategy: App\Util\CamelPascalNamingStrategy auto_mapping: true report_fields_where_declared: true + validate_xml_mapping: false mappings: App: + type: attribute is_bundle: false dir: '%kernel.project_dir%/src/Entity' prefix: 'App\Entity' alias: App + controller_resolver: + auto_mapping: true schema_ignore_classes: - App\Entity\CampRootContentNode diff --git a/api/config/packages/framework.yaml b/api/config/packages/framework.yaml index 321c4496e3..e3ef193849 100644 --- a/api/config/packages/framework.yaml +++ b/api/config/packages/framework.yaml @@ -2,12 +2,12 @@ framework: secret: '%env(APP_SECRET)%' #csrf_protection: true + annotations: false http_method_override: false handle_all_throwables: true trusted_proxies: '%env(TRUSTED_PROXIES)%' trusted_hosts: - localhost - - caddy - '%env(ADDITIONAL_TRUSTED_HOSTS)%' # See https://caddyserver.com/docs/caddyfile/directives/reverse_proxy#headers trusted_headers: diff --git a/api/config/packages/http_cache.yaml b/api/config/packages/http_cache.yaml new file mode 100644 index 0000000000..63f8ee24fe --- /dev/null +++ b/api/config/packages/http_cache.yaml @@ -0,0 +1,35 @@ +parameters: + app.httpCache.matchPath: '^/(content_types|camps/[0-9a-f]*/categories)' + +fos_http_cache: + debug: + enabled: true # this sets the X-Cache-Debug response header; can be removed later-on + tags: + enabled: true + response_header: xkey + max_header_value_length: 4096 + separator: ' ' + cache_manager: + custom_proxy_client: App\HttpCache\VarnishProxyClient + cache_control: + defaults: + overwrite: true + rules: + # matches /content_types endpoint + # matches /camps/133/categories endpoint + - + match: + path: '%app.httpCache.matchPath%' + headers: + overwrite: true + cache_control: { public: true, max_age: 0, s_maxage: 3600 } + vary: [Accept, Content-Type, Authorization, Origin] + + # match everything else to set defaults + - + match: + path: ^/ + headers: + overwrite: true + cache_control: { no-cache: true, private: true } + vary: [Accept, Content-Type, Authorization, Origin] \ No newline at end of file diff --git a/api/config/packages/performance_test/http_cache.yaml b/api/config/packages/performance_test/http_cache.yaml new file mode 100644 index 0000000000..ccab94157b --- /dev/null +++ b/api/config/packages/performance_test/http_cache.yaml @@ -0,0 +1,2 @@ +imports: + - resource: ../test/http_cache.yaml diff --git a/api/config/packages/test/http_cache.yaml b/api/config/packages/test/http_cache.yaml new file mode 100644 index 0000000000..419340180e --- /dev/null +++ b/api/config/packages/test/http_cache.yaml @@ -0,0 +1,5 @@ +fos_http_cache: + proxy_client: + noop: ~ + cache_manager: + custom_proxy_client: fos_http_cache.proxy_client.noop diff --git a/api/config/packages/twig.yaml b/api/config/packages/twig.yaml index f9f4cc539b..3f795d921e 100644 --- a/api/config/packages/twig.yaml +++ b/api/config/packages/twig.yaml @@ -1,5 +1,5 @@ twig: - default_path: '%kernel.project_dir%/templates' + file_name_pattern: '*.twig' when@test: twig: diff --git a/api/config/services.yaml b/api/config/services.yaml index e61e1a7c99..7c2d7d2558 100644 --- a/api/config/services.yaml +++ b/api/config/services.yaml @@ -4,6 +4,7 @@ # Put parameters here that don't need to change on each machine where the app is deployed # https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration parameters: + app.httpCache.maxHeaderSize: 31500 # lower than Vanish default http_resp_size (32k) services: # default configuration for services in *this* file @@ -147,6 +148,40 @@ services: tags: - { name: kernel.event_listener, event: lexik_jwt_authentication.on_jwt_created, method: onJWTCreated } + App\HttpCache\PurgeHttpCacheListener: + arguments: + - '@api_platform.iri_converter' + - '@api_platform.resource_class_resolver' + - '@api_platform.property_accessor' + tags: + - { name: doctrine.event_listener, event: preUpdate } + - { name: doctrine.event_listener, event: onFlush } + - { name: doctrine.event_listener, event: postFlush } + + api_platform.http_cache.tag_collector: + class: App\HttpCache\TagCollector + + App\HttpCache\AddCollectionTagsListener: + tags: + - { name: kernel.event_listener, event: kernel.response, method: onKernelResponse, priority: 12 } + + App\HttpCache\CacheControlListener: + arguments: + $apiCacheEnabled: '%env(API_CACHE_ENABLED)%' + $maxHeaderSize: '%app.httpCache.maxHeaderSize%' + $headerKey: '%fos_http_cache.tag_handler.response_header%' + tags: + - { name: kernel.event_listener, event: kernel.response, method: onKernelResponse, priority: -1 } # priority -1, executed after FOSHttpCacheBundle Listeners + + App\HttpCache\VarnishProxyClient: + arguments: + $apiCacheEnabled: '%env(API_CACHE_ENABLED)%' + $varnishApiUrl: '%env(VARNISH_API_URL)%' + + App\HttpCache\ResponseTagger: + arguments: + $matchPath: '%app.httpCache.matchPath%' + # Entity Filter App\Doctrine\FilterByCurrentUserExtension: tags: diff --git a/api/docker/caddy/Caddyfile b/api/docker/caddy/Caddyfile index 2a080206d7..bf5924d1f5 100644 --- a/api/docker/caddy/Caddyfile +++ b/api/docker/caddy/Caddyfile @@ -1,6 +1,12 @@ { - # Debug - {$CADDY_DEBUG} + {$CADDY_GLOBAL_OPTIONS} + + frankenphp { + {$FRANKENPHP_CONFIG} + } + + # https://caddyserver.com/docs/caddyfile/directives#sorting-algorithm + order php_server before file_server auto_https disable_redirects # make it possible to connect from remote host to admin endpoint @@ -14,6 +20,8 @@ } } +{$CADDY_EXTRA_CONFIG} + :3000 { log { level DEBUG @@ -44,15 +52,32 @@ :3001 { route { - root * /srv/api/public + root * /app/public + + encode { + zstd + br + gzip + + match { + header Content-Type text/* + header Content-Type application/json* + header Content-Type application/javascript* + header Content-Type application/xhtml+xml* + header Content-Type application/atom+xml* + header Content-Type application/rss+xml* + header Content-Type image/svg+xml* + # Custom formats supported + header Content-Type application/ld+json* + } + } # Add links to the API docs if not set explicitly (e.g. the PWA) header ?Link `; rel="www.w3.org/ns/hydra/core#apiDocumentation"` - php_fastcgi unix//var/run/php/php-fpm.sock { - env HTTP_X_FORWARDED_PREFIX {header.X-Forwarded-Prefix} - } - encode zstd gzip - file_server + # Disable Topics tracking if not enabled explicitly: https://github.com/jkarlin/topics + header ?Permissions-Policy "browsing-topics=()" + + php_server } } diff --git a/api/docker/caddy/Caddyfile.prod b/api/docker/caddy/Caddyfile.prod index e8ed39a389..4311891b43 100644 --- a/api/docker/caddy/Caddyfile.prod +++ b/api/docker/caddy/Caddyfile.prod @@ -1,6 +1,12 @@ { - # Debug - {$CADDY_DEBUG} + {$CADDY_GLOBAL_OPTIONS} + + frankenphp { + {$FRANKENPHP_CONFIG} + } + + # https://caddyserver.com/docs/caddyfile/directives#sorting-algorithm + order php_server before file_server http_port 3001 https_port 3443 @@ -16,19 +22,38 @@ } } -{$SERVER_NAME} +{$CADDY_EXTRA_CONFIG} + + +{$SERVER_NAME:localhost} { + log -log + root * /app/public -route { - root * /srv/api/public + encode { + zstd + br + gzip + + match { + header Content-Type text/* + header Content-Type application/json* + header Content-Type application/javascript* + header Content-Type application/xhtml+xml* + header Content-Type application/atom+xml* + header Content-Type application/rss+xml* + header Content-Type image/svg+xml* + # Custom formats supported + header Content-Type application/ld+json* + header Content-Type application/hal+json* + } + } # Add links to the API docs if not set explicitly (e.g. the PWA) header ?Link `; rel="http://www.w3.org/ns/hydra/core#apiDocumentation"` - php_fastcgi unix//var/run/php/php-fpm.sock { - env HTTP_X_FORWARDED_PREFIX {header.X-Forwarded-Prefix} - } - encode zstd gzip - file_server + # Disable Topics tracking if not enabled explicitly: https://github.com/jkarlin/topics + header ?Permissions-Policy "browsing-topics=()" + + php_server } diff --git a/api/docker/php/conf.d/api-platform.dev.ini b/api/docker/php/conf.d/api-platform.dev.ini index 91eb01519c..ea217ae806 100644 --- a/api/docker/php/conf.d/api-platform.dev.ini +++ b/api/docker/php/conf.d/api-platform.dev.ini @@ -2,4 +2,4 @@ ; See https://github.com/docker/for-linux/issues/264 ; The `client_host` below may optionally be replaced with `discover_client_host=yes` ; Add `start_with_request=yes` to start debug session on each request -xdebug.client_host = 'host.docker.internal' \ No newline at end of file +xdebug.client_host = host.docker.internal \ No newline at end of file diff --git a/api/docker/php/conf.d/api-platform.prod.ini b/api/docker/php/conf.d/api-platform.prod.ini index 85ba89ea05..1986286e80 100644 --- a/api/docker/php/conf.d/api-platform.prod.ini +++ b/api/docker/php/conf.d/api-platform.prod.ini @@ -1,2 +1,2 @@ -opcache.preload_user=www-data -opcache.preload=/srv/api/config/preload.php +opcache.preload_user=root +opcache.preload=/app/config/preload.php diff --git a/api/docker/php/docker-entrypoint.sh b/api/docker/php/docker-entrypoint.sh index 2f245f6aa5..6fd12c7659 100755 --- a/api/docker/php/docker-entrypoint.sh +++ b/api/docker/php/docker-entrypoint.sh @@ -1,12 +1,7 @@ #!/bin/sh set -e -# first arg is `-f` or `--some-option` -if [ "${1#-}" != "$1" ]; then - set -- php-fpm "$@" -fi - -if [ "$1" = 'php-fpm' ] || [ "$1" = 'php' ] || [ "$1" = 'bin/console' ] || [ "$1" = 'composer' ] || [ "$1" = 'bin/phpunit' ]; then +if [ "$1" = 'frankenphp' ] || [ "$1" = 'php' ] || [ "$1" = 'bin/console' ] || [ "$1" = 'composer' ] || [ "$1" = 'bin/phpunit' ]; then if [ "$APP_ENV" = 'prod' ]; then setfacl -R -m u:www-data:rwX -m u:"$(whoami)":rwX var @@ -28,7 +23,7 @@ if [ "$1" = 'php-fpm' ] || [ "$1" = 'php' ] || [ "$1" = 'bin/console' ] || [ "$1 composer install --prefer-dist --no-progress --no-interaction - if grep -q DATABASE_URL= .env; then + if grep -q ^DATABASE_URL= .env; then migrate-database || exit 1 migrate-database -e test || exit 1 fi diff --git a/api/docker/php/docker-healthcheck.sh b/api/docker/php/docker-healthcheck.sh deleted file mode 100755 index f322de5b47..0000000000 --- a/api/docker/php/docker-healthcheck.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -set -e - -if env -i REQUEST_METHOD=GET SCRIPT_NAME=/ping SCRIPT_FILENAME=/ping cgi-fcgi -bind -connect /var/run/php/php-fpm.sock; then - exit 0 -fi - -exit 1 diff --git a/api/docker/php/migrate-database.sh b/api/docker/php/migrate-database.sh index 7de3d4df3f..1c19591556 100755 --- a/api/docker/php/migrate-database.sh +++ b/api/docker/php/migrate-database.sh @@ -23,5 +23,5 @@ else fi if [ "$( find ./migrations -iname '*.php' -print -quit )" ]; then - php bin/console doctrine:migrations:migrate --no-interaction "$@" + php bin/console doctrine:migrations:migrate --no-interaction --all-or-nothing "$@" fi diff --git a/api/docker/php/php-fpm.d/www.conf b/api/docker/php/php-fpm.d/www.conf deleted file mode 100644 index d183a34938..0000000000 --- a/api/docker/php/php-fpm.d/www.conf +++ /dev/null @@ -1,463 +0,0 @@ -; Start a new pool named 'www'. -; the variable $pool can be used in any directive and will be replaced by the -; pool name ('www' here) -[www] - -; Per pool prefix -; It only applies on the following directives: -; - 'access.log' -; - 'slowlog' -; - 'listen' (unixsocket) -; - 'chroot' -; - 'chdir' -; - 'php_values' -; - 'php_admin_values' -; When not set, the global prefix (or NONE) applies instead. -; Note: This directive can also be relative to the global prefix. -; Default Value: none -;prefix = /path/to/pools/$pool - -; Unix user/group of processes -; Note: The user is mandatory. If the group is not set, the default user's group -; will be used. -user = www-data -group = www-data - -; The address on which to accept FastCGI requests. -; Valid syntaxes are: -; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on -; a specific port; -; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on -; a specific port; -; 'port' - to listen on a TCP socket to all addresses -; (IPv6 and IPv4-mapped) on a specific port; -; '/path/to/unix/socket' - to listen on a unix socket. -; Note: This value is mandatory. -listen = 127.0.0.1:9000 - -; Set listen(2) backlog. -; Default Value: 511 (-1 on FreeBSD and OpenBSD) -;listen.backlog = 511 - -; Set permissions for unix socket, if one is used. In Linux, read/write -; permissions must be set in order to allow connections from a web server. Many -; BSD-derived systems allow connections regardless of permissions. The owner -; and group can be specified either by name or by their numeric IDs. -; Default Values: user and group are set as the running user -; mode is set to 0660 -;listen.owner = www-data -;listen.group = www-data -;listen.mode = 0660 -; When POSIX Access Control Lists are supported you can set them using -; these options, value is a comma separated list of user/group names. -; When set, listen.owner and listen.group are ignored -;listen.acl_users = -;listen.acl_groups = - -; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect. -; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original -; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address -; must be separated by a comma. If this value is left blank, connections will be -; accepted from any ip address. -; Default Value: any -;listen.allowed_clients = 127.0.0.1 - -; Specify the nice(2) priority to apply to the pool processes (only if set) -; The value can vary from -19 (highest priority) to 20 (lower priority) -; Note: - It will only work if the FPM master process is launched as root -; - The pool processes will inherit the master process priority -; unless it specified otherwise -; Default Value: no set -; process.priority = -19 - -; Set the process dumpable flag (PR_SET_DUMPABLE prctl) even if the process user -; or group is different than the master process user. It allows to create process -; core dump and ptrace the process for the pool user. -; Default Value: no -; process.dumpable = yes - -; Choose how the process manager will control the number of child processes. -; Possible Values: -; static - a fixed number (pm.max_children) of child processes; -; dynamic - the number of child processes are set dynamically based on the -; following directives. With this process management, there will be -; always at least 1 children. -; pm.max_children - the maximum number of children that can -; be alive at the same time. -; pm.start_servers - the number of children created on startup. -; pm.min_spare_servers - the minimum number of children in 'idle' -; state (waiting to process). If the number -; of 'idle' processes is less than this -; number then some children will be created. -; pm.max_spare_servers - the maximum number of children in 'idle' -; state (waiting to process). If the number -; of 'idle' processes is greater than this -; number then some children will be killed. -; pm.max_spawn_rate - the maximum number of rate to spawn child -; processes at once. -; ondemand - no children are created at startup. Children will be forked when -; new requests will connect. The following parameter are used: -; pm.max_children - the maximum number of children that -; can be alive at the same time. -; pm.process_idle_timeout - The number of seconds after which -; an idle process will be killed. -; Note: This value is mandatory. -pm = static - -; The number of child processes to be created when pm is set to 'static' and the -; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'. -; This value sets the limit on the number of simultaneous requests that will be -; served. Equivalent to the ApacheMaxClients directive with mpm_prefork. -; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP -; CGI. The below defaults are based on a server without much resources. Don't -; forget to tweak pm.* to fit your needs. -; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand' -; Note: This value is mandatory. -pm.max_children = 6 - -; The number of child processes created on startup. -; Note: Used only when pm is set to 'dynamic' -; Default Value: (min_spare_servers + max_spare_servers) / 2 -;pm.start_servers = 2 - -; The desired minimum number of idle server processes. -; Note: Used only when pm is set to 'dynamic' -; Note: Mandatory when pm is set to 'dynamic' -;pm.min_spare_servers = 1 - -; The desired maximum number of idle server processes. -; Note: Used only when pm is set to 'dynamic' -; Note: Mandatory when pm is set to 'dynamic' -;pm.max_spare_servers = 3 - -; The number of rate to spawn child processes at once. -; Note: Used only when pm is set to 'dynamic' -; Note: Mandatory when pm is set to 'dynamic' -; Default Value: 32 -;pm.max_spawn_rate = 32 - -; The number of seconds after which an idle process will be killed. -; Note: Used only when pm is set to 'ondemand' -; Default Value: 10s -;pm.process_idle_timeout = 10s; - -; The number of requests each child process should execute before respawning. -; This can be useful to work around memory leaks in 3rd party libraries. For -; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS. -; Default Value: 0 -pm.max_requests = 1000 - -; The URI to view the FPM status page. If this value is not set, no URI will be -; recognized as a status page. It shows the following information: -; pool - the name of the pool; -; process manager - static, dynamic or ondemand; -; start time - the date and time FPM has started; -; start since - number of seconds since FPM has started; -; accepted conn - the number of request accepted by the pool; -; listen queue - the number of request in the queue of pending -; connections (see backlog in listen(2)); -; max listen queue - the maximum number of requests in the queue -; of pending connections since FPM has started; -; listen queue len - the size of the socket queue of pending connections; -; idle processes - the number of idle processes; -; active processes - the number of active processes; -; total processes - the number of idle + active processes; -; max active processes - the maximum number of active processes since FPM -; has started; -; max children reached - number of times, the process limit has been reached, -; when pm tries to start more children (works only for -; pm 'dynamic' and 'ondemand'); -; Value are updated in real time. -; Example output: -; pool: www -; process manager: static -; start time: 01/Jul/2011:17:53:49 +0200 -; start since: 62636 -; accepted conn: 190460 -; listen queue: 0 -; max listen queue: 1 -; listen queue len: 42 -; idle processes: 4 -; active processes: 11 -; total processes: 15 -; max active processes: 12 -; max children reached: 0 -; -; By default the status page output is formatted as text/plain. Passing either -; 'html', 'xml' or 'json' in the query string will return the corresponding -; output syntax. Example: -; http://www.foo.bar/status -; http://www.foo.bar/status?json -; http://www.foo.bar/status?html -; http://www.foo.bar/status?xml -; -; By default the status page only outputs short status. Passing 'full' in the -; query string will also return status for each pool process. -; Example: -; http://www.foo.bar/status?full -; http://www.foo.bar/status?json&full -; http://www.foo.bar/status?html&full -; http://www.foo.bar/status?xml&full -; The Full status returns for each process: -; pid - the PID of the process; -; state - the state of the process (Idle, Running, ...); -; start time - the date and time the process has started; -; start since - the number of seconds since the process has started; -; requests - the number of requests the process has served; -; request duration - the duration in µs of the requests; -; request method - the request method (GET, POST, ...); -; request URI - the request URI with the query string; -; content length - the content length of the request (only with POST); -; user - the user (PHP_AUTH_USER) (or '-' if not set); -; script - the main script called (or '-' if not set); -; last request cpu - the %cpu the last request consumed -; it's always 0 if the process is not in Idle state -; because CPU calculation is done when the request -; processing has terminated; -; last request memory - the max amount of memory the last request consumed -; it's always 0 if the process is not in Idle state -; because memory calculation is done when the request -; processing has terminated; -; If the process is in Idle state, then informations are related to the -; last request the process has served. Otherwise informations are related to -; the current request being served. -; Example output: -; ************************ -; pid: 31330 -; state: Running -; start time: 01/Jul/2011:17:53:49 +0200 -; start since: 63087 -; requests: 12808 -; request duration: 1250261 -; request method: GET -; request URI: /test_mem.php?N=10000 -; content length: 0 -; user: - -; script: /home/fat/web/docs/php/test_mem.php -; last request cpu: 0.00 -; last request memory: 0 -; -; Note: There is a real-time FPM status monitoring sample web page available -; It's available in: /usr/local/share/php/fpm/status.html -; -; Note: The value must start with a leading slash (/). The value can be -; anything, but it may not be a good idea to use the .php extension or it -; may conflict with a real PHP file. -; Default Value: not set -;pm.status_path = /status - -; The address on which to accept FastCGI status request. This creates a new -; invisible pool that can handle requests independently. This is useful -; if the main pool is busy with long running requests because it is still possible -; to get the status before finishing the long running requests. -; -; Valid syntaxes are: -; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on -; a specific port; -; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on -; a specific port; -; 'port' - to listen on a TCP socket to all addresses -; (IPv6 and IPv4-mapped) on a specific port; -; '/path/to/unix/socket' - to listen on a unix socket. -; Default Value: value of the listen option -;pm.status_listen = 127.0.0.1:9001 - -; The ping URI to call the monitoring page of FPM. If this value is not set, no -; URI will be recognized as a ping page. This could be used to test from outside -; that FPM is alive and responding, or to -; - create a graph of FPM availability (rrd or such); -; - remove a server from a group if it is not responding (load balancing); -; - trigger alerts for the operating team (24/7). -; Note: The value must start with a leading slash (/). The value can be -; anything, but it may not be a good idea to use the .php extension or it -; may conflict with a real PHP file. -; Default Value: not set -;ping.path = /ping - -; This directive may be used to customize the response of a ping request. The -; response is formatted as text/plain with a 200 response code. -; Default Value: pong -;ping.response = pong - -; The access log file -; Default: not set -;access.log = log/$pool.access.log - -; The access log format. -; The following syntax is allowed -; %%: the '%' character -; %C: %CPU used by the request -; it can accept the following format: -; - %{user}C for user CPU only -; - %{system}C for system CPU only -; - %{total}C for user + system CPU (default) -; %d: time taken to serve the request -; it can accept the following format: -; - %{seconds}d (default) -; - %{milliseconds}d -; - %{milli}d -; - %{microseconds}d -; - %{micro}d -; %e: an environment variable (same as $_ENV or $_SERVER) -; it must be associated with embraces to specify the name of the env -; variable. Some examples: -; - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e -; - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e -; %f: script filename -; %l: content-length of the request (for POST request only) -; %m: request method -; %M: peak of memory allocated by PHP -; it can accept the following format: -; - %{bytes}M (default) -; - %{kilobytes}M -; - %{kilo}M -; - %{megabytes}M -; - %{mega}M -; %n: pool name -; %o: output header -; it must be associated with embraces to specify the name of the header: -; - %{Content-Type}o -; - %{X-Powered-By}o -; - %{Transfert-Encoding}o -; - .... -; %p: PID of the child that serviced the request -; %P: PID of the parent of the child that serviced the request -; %q: the query string -; %Q: the '?' character if query string exists -; %r: the request URI (without the query string, see %q and %Q) -; %R: remote IP address -; %s: status (response code) -; %t: server time the request was received -; it can accept a strftime(3) format: -; %d/%b/%Y:%H:%M:%S %z (default) -; The strftime(3) format must be encapsulated in a %{}t tag -; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t -; %T: time the log has been written (the request has finished) -; it can accept a strftime(3) format: -; %d/%b/%Y:%H:%M:%S %z (default) -; The strftime(3) format must be encapsulated in a %{}t tag -; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t -; %u: remote user -; -; Default: "%R - %u %t \"%m %r\" %s" -;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{milli}d %{kilo}M %C%%" - -; The log file for slow requests -; Default Value: not set -; Note: slowlog is mandatory if request_slowlog_timeout is set -;slowlog = log/$pool.log.slow - -; The timeout for serving a single request after which a PHP backtrace will be -; dumped to the 'slowlog' file. A value of '0s' means 'off'. -; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) -; Default Value: 0 -;request_slowlog_timeout = 0 - -; Depth of slow log stack trace. -; Default Value: 20 -;request_slowlog_trace_depth = 20 - -; The timeout for serving a single request after which the worker process will -; be killed. This option should be used when the 'max_execution_time' ini option -; does not stop script execution for some reason. A value of '0' means 'off'. -; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) -; Default Value: 0 -;request_terminate_timeout = 0 - -; The timeout set by 'request_terminate_timeout' ini option is not engaged after -; application calls 'fastcgi_finish_request' or when application has finished and -; shutdown functions are being called (registered via register_shutdown_function). -; This option will enable timeout limit to be applied unconditionally -; even in such cases. -; Default Value: no -;request_terminate_timeout_track_finished = no - -; Set open file descriptor rlimit. -; Default Value: system defined value -;rlimit_files = 1024 - -; Set max core size rlimit. -; Possible Values: 'unlimited' or an integer greater or equal to 0 -; Default Value: system defined value -;rlimit_core = 0 - -; Chroot to this directory at the start. This value must be defined as an -; absolute path. When this value is not set, chroot is not used. -; Note: you can prefix with '$prefix' to chroot to the pool prefix or one -; of its subdirectories. If the pool prefix is not set, the global prefix -; will be used instead. -; Note: chrooting is a great security feature and should be used whenever -; possible. However, all PHP paths will be relative to the chroot -; (error_log, sessions.save_path, ...). -; Default Value: not set -;chroot = - -; Chdir to this directory at the start. -; Note: relative path can be used. -; Default Value: current directory or / when chroot -;chdir = /var/www - -; Redirect worker stdout and stderr into main error log. If not set, stdout and -; stderr will be redirected to /dev/null according to FastCGI specs. -; Note: on highloaded environment, this can cause some delay in the page -; process time (several ms). -; Default Value: no -;catch_workers_output = yes - -; Decorate worker output with prefix and suffix containing information about -; the child that writes to the log and if stdout or stderr is used as well as -; log level and time. This options is used only if catch_workers_output is yes. -; Settings to "no" will output data as written to the stdout or stderr. -; Default value: yes -;decorate_workers_output = no - -; Clear environment in FPM workers -; Prevents arbitrary environment variables from reaching FPM worker processes -; by clearing the environment in workers before env vars specified in this -; pool configuration are added. -; Setting to "no" will make all environment variables available to PHP code -; via getenv(), $_ENV and $_SERVER. -; Default Value: yes -;clear_env = no - -; Limits the extensions of the main script FPM will allow to parse. This can -; prevent configuration mistakes on the web server side. You should only limit -; FPM to .php extensions to prevent malicious users to use other extensions to -; execute php code. -; Note: set an empty value to allow all extensions. -; Default Value: .php -;security.limit_extensions = .php .php3 .php4 .php5 .php7 - -; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from -; the current environment. -; Default Value: clean env -;env[HOSTNAME] = $HOSTNAME -;env[PATH] = /usr/local/bin:/usr/bin:/bin -;env[TMP] = /tmp -;env[TMPDIR] = /tmp -;env[TEMP] = /tmp - -; Additional php.ini defines, specific to this pool of workers. These settings -; overwrite the values previously defined in the php.ini. The directives are the -; same as the PHP SAPI: -; php_value/php_flag - you can set classic ini defines which can -; be overwritten from PHP call 'ini_set'. -; php_admin_value/php_admin_flag - these directives won't be overwritten by -; PHP call 'ini_set' -; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no. - -; Defining 'extension' will load the corresponding shared extension from -; extension_dir. Defining 'disable_functions' or 'disable_classes' will not -; overwrite previously defined php.ini values, but will append the new value -; instead. - -; Note: path INI options can be relative and will be expanded with the prefix -; (pool, global or /usr/local) - -; Default Value: nothing is defined by default except the values in php.ini and -; specified at startup with the -d argument -;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com -;php_flag[display_errors] = off -;php_admin_value[error_log] = /var/log/fpm-php.www.log -;php_admin_flag[log_errors] = on -;php_admin_value[memory_limit] = 32M \ No newline at end of file diff --git a/api/docker/php/php-fpm.d/zz-docker.conf b/api/docker/php/php-fpm.d/zz-docker.conf deleted file mode 100644 index 9f454cdadd..0000000000 --- a/api/docker/php/php-fpm.d/zz-docker.conf +++ /dev/null @@ -1,8 +0,0 @@ -[global] -daemonize = no -process_control_timeout = 20 - -[www] -listen = /var/run/php/php-fpm.sock -listen.mode = 0666 -ping.path = /ping diff --git a/api/docker/varnish/vcl/_config.vcl b/api/docker/varnish/vcl/_config.vcl new file mode 100644 index 0000000000..980a1cac54 --- /dev/null +++ b/api/docker/varnish/vcl/_config.vcl @@ -0,0 +1,4 @@ +backend default { + .host = "api"; + .port = "3000"; +} \ No newline at end of file diff --git a/api/docker/varnish/vcl/default.vcl b/api/docker/varnish/vcl/default.vcl new file mode 100644 index 0000000000..15df5b7472 --- /dev/null +++ b/api/docker/varnish/vcl/default.vcl @@ -0,0 +1,103 @@ +vcl 4.0; + +import std; +import xkey; +import cookie; +import var; + +include "./_config.vcl"; +include "./fos_tags_xkey.vcl"; +include "./fos_debug.vcl"; + +sub vcl_recv { + + var.set("originalUrl", req.http.X-Forwarded-Prefix + req.url); + + if(var.get("originalUrl") ~ "^/api/varnish/healthcheck") { + return(synth(200,"OK")); + } + + # Support xkey purge requests + # see https://raw.githubusercontent.com/varnish/varnish-modules/master/src/vmod_xkey.vcc + call fos_tags_xkey_recv; + + # exclude other services (frontend, print, etc.) + if (var.get("originalUrl") !~ "^/api") { + return(pass); + } + + # exclude API documentation, profiler and graphql endpoint + if (var.get("originalUrl") ~ "^/api/docs" + || var.get("originalUrl") ~ "^/api/graphql" + || var.get("originalUrl") ~ "^/api/bundles" + || var.get("originalUrl") ~ "^/api/contexts" + || var.get("originalUrl") ~ "^/api/_profiler" + || var.get("originalUrl") ~ "^/api/_wdt") { + return(pass); + } + + # exclude any format other than HAL + if (req.url !~ "\.jsonhal$" && req.http.Accept !~ "application/hal\+json"){ + return(pass); + } + + # exclude any request with query parameters, until cache handling of query params is properly implemented + if (req.url ~ "\?"){ + return(pass); + } + + # Extract JWT cookie for later use in vcl_hash + # Failsafe: Pass cache if JWT cookie is not set (also for example, if COOKIE_PREFIX is not properly configured) + if (req.http.Cookie) { + cookie.parse(req.http.Cookie); + cookie.keep(std.getenv("COOKIE_PREFIX") + "jwt_hp," + std.getenv("COOKIE_PREFIX") + "jwt_s"); + + if(cookie.get_string() == ""){ + return(pass); + } + + var.set("JWT", cookie.get_string()); + } +} + +sub vcl_hash { + # Include JWT cookies in cache hash + hash_data(var.get("JWT")); + + # using URL (=path), but not using Host/ServerIP; this allows to share cache between print & normal API calls + hash_data(req.url); + + return(lookup); +} + +sub vcl_req_cookie { + # Varnish by default disables caching whenever the request header "Cookie" is set in the request (default safe behavior) + # this bypasses the default behaviour; this is safe because we included "Cookie" in the "Vary" header + return (hash); +} + +sub vcl_backend_response { + if (bereq.uncacheable) { + return (deliver); + } + call vcl_beresp_stale; + + # Varnish by default disables caching whenever the reponse header "Set-Cookie" is set in the request (default safe behavior) + # commenting the following line bypasses the default behaviour + # call vcl_beresp_cookie; + + call vcl_beresp_control; + call vcl_beresp_vary; + return (deliver); +} + +sub vcl_deliver { + call fos_tags_xkey_deliver; + call fos_debug_deliver; + + # reset cache control header to avoid caching by any other upstream proxies + if (resp.http.Content-Type ~ "application/hal\+json"){ + set resp.http.Cache-Control = "no-cache, private"; + } +} + diff --git a/api/docker/varnish/vcl/fos_debug.vcl b/api/docker/varnish/vcl/fos_debug.vcl new file mode 100644 index 0000000000..1b3adebe30 --- /dev/null +++ b/api/docker/varnish/vcl/fos_debug.vcl @@ -0,0 +1,21 @@ +/* + * This file is part of the FOSHttpCache package. + * + * (c) FriendsOfSymfony + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +sub fos_debug_deliver { + # Add X-Cache header if debugging is enabled + if (resp.http.X-Cache-Debug) { + if (obj.hits > 0) { + set resp.http.X-Cache = "HIT"; + } else if (obj.uncacheable) { + set resp.http.X-Cache = "PASS"; + } else { + set resp.http.X-Cache = "MISS"; + } + } +} diff --git a/api/docker/varnish/vcl/fos_tags_xkey.vcl b/api/docker/varnish/vcl/fos_tags_xkey.vcl new file mode 100644 index 0000000000..ea2e468d1e --- /dev/null +++ b/api/docker/varnish/vcl/fos_tags_xkey.vcl @@ -0,0 +1,45 @@ +/* + * This file is part of the FOSHttpCache package. + * + * (c) FriendsOfSymfony + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +import xkey; + +sub fos_tags_xkey_recv { + if (req.method == "PURGEKEYS") { + + # only allow purge requests on port 8081 + if (std.port(server.ip) != 8081) { + return (synth(405, "Not allowed")); + } + + # If neither of the headers are provided we return 400 to simplify detecting wrong configuration + if (!req.http.xkey-purge && !req.http.xkey-softpurge) { + return (synth(400, "Neither header XKey-Purge or XKey-SoftPurge set")); + } + + # Based on provided header invalidate (purge) and/or expire (softpurge) the tagged content + set req.http.n-gone = 0; + set req.http.n-softgone = 0; + if (req.http.xkey-purge) { + set req.http.n-gone = xkey.purge(req.http.xkey-purge); + } + + if (req.http.xkey-softpurge) { + set req.http.n-softgone = xkey.softpurge(req.http.xkey-softpurge); + } + + return (synth(200, "Purged "+req.http.n-gone+" objects, expired "+req.http.n-softgone+" objects")); + } +} + +sub fos_tags_xkey_deliver { + if (!resp.http.X-Cache-Debug) { + // Remove tag headers when delivering to non debug client + unset resp.http.xkey; + } +} diff --git a/api/migrations/dev-data/data.sql b/api/migrations/dev-data/data.sql index 54ddc32e28..807e1f3b54 100644 --- a/api/migrations/dev-data/data.sql +++ b/api/migrations/dev-data/data.sql @@ -988,36 +988,36 @@ INSERT INTO public.activity (id, title, location, campid, categoryid, rootconten -INSERT INTO public.camp_collaboration (id, inviteemail, invitekeyhash, status, role, collaborationacceptedby, createtime, updatetime, userid, campid) VALUES - ('237abf0bd057', 'e.mail2@test.com', 'myInviteKey2', 'invited', 'member', NULL, '2022-01-23 16:19:10', '2022-01-23 16:19:10', NULL, '6430aecc5422'), - ('0e524d43e799', NULL, NULL, 'established', 'manager', NULL, '2022-01-23 16:19:10', '2022-01-23 16:19:10', 'e7b00084dabf', '6430aecc5422'), - ('2c313fa367b3', NULL, NULL, 'established', 'manager', NULL, '2022-01-23 16:19:10', '2022-01-23 16:19:10', '3b41dca5c568', 'e5027d852487'), - ('2b3cf1ce6341', 'x@z.com', 'd12ntPWBK0qmPxfMGg/QRWh98XE=', 'invited', 'member', NULL, '2023-08-08 08:03:06', '2023-08-08 08:03:06', NULL, '3c79b99ab424'), - ('dba39edd9910', NULL, NULL, 'established', 'member', NULL, '2023-08-08 07:59:24', '2023-08-08 08:11:28', 'bee7cf5b3871', '3c79b99ab424'), - ('c88fd78c90ea', NULL, NULL, 'established', 'manager', NULL, '2023-08-08 07:58:53', '2023-08-08 08:12:12', 'caeba9f7e728', '3c79b99ab424'), - ('5111b2972441', 'inactive@test.com', 'Vazgl+0DsuUKrcTezKxA+KmBgOA=', 'inactive', 'member', NULL, '2023-08-08 07:59:53', '2023-08-08 09:18:22', NULL, '3c79b99ab424'), - ('68694999fa8d', NULL, NULL, 'established', 'manager', NULL, '2023-08-08 09:22:58', '2023-08-08 09:22:58', '9145944210a7', '6973c230d6b1'), - ('3229d273decd', NULL, '5eO+mQd6F+AQwCITx5mV8dX9/6U=', 'invited', 'manager', NULL, '2023-08-08 09:38:27', '2023-08-08 09:43:11', '130684395770', '6973c230d6b1'), - ('7cae64a7800c', 'e.mail@test.com', '7FUv2lrEcRjMbW/Nb1mTkBaAPOs=', 'invited', 'member', NULL, '2023-08-08 09:37:38', '2023-08-08 09:43:21', NULL, '6973c230d6b1'), - ('878426563205', NULL, NULL, 'established', 'guest', NULL, '2023-08-08 09:36:41', '2023-08-08 09:43:52', '48f00685a292', '6973c230d6b1'), - ('d27ca1d0e6e4', NULL, NULL, 'established', 'member', NULL, '2023-08-08 09:36:01', '2023-08-08 09:44:19', 'bae69a1c9fcc', '6973c230d6b1'), - ('c463d2a19847', NULL, NULL, 'established', 'member', NULL, '2023-08-08 09:38:01', '2023-08-08 09:44:50', 'caeba9f7e728', '6973c230d6b1'), - ('763c0d181b63', NULL, NULL, 'established', 'manager', NULL, '2023-08-08 09:37:16', '2023-08-08 09:45:21', 'bee7cf5b3871', '6973c230d6b1'), - ('b7d93b2fa1be', NULL, 'mLdsTtaGGptPYSZLUDgX8sAFO54=', 'established', 'member', NULL, '2023-08-12 19:10:49', '2023-08-12 19:10:49', 'a2f4f3879c85', '9c2447aefe38'), - ('ac1cd0bcbd69', NULL, 'V30YTcBqBqs5xS7HrFM4ODRrzbw=', 'established', 'member', NULL, '2023-08-12 19:10:28', '2023-08-12 19:10:28', 'a3d9d86dc23b', '9c2447aefe38'), - ('8be6d2f6f7dc', NULL, 'ru6jsdD9fODk8+p8wmI909rJPkQ=', 'established', 'manager', NULL, '2023-08-12 19:11:03', '2023-08-12 19:11:03', '566aea2c2759', '9c2447aefe38'), - ('0e26982c9895', NULL, 'ao9OQRgXWBpCVaD4lGQaUFzvKwI=', 'established', 'member', NULL, '2023-08-12 19:10:14', '2023-08-12 19:10:14', 'dac7116e02ed', '9c2447aefe38'), - ('b2f127cb410f', NULL, NULL, 'established', 'manager', NULL, '2023-08-13 06:32:29', '2023-08-13 06:32:29', 'dac7116e02ed', '0969e3c95dfc'), - ('d806a59915f8', NULL, 'SuP47raE2s/2hGLsdBiO/icIU0E=', 'established', 'member', NULL, '2023-08-13 10:29:25', '2023-08-13 10:29:25', 'a3d9d86dc23b', '0969e3c95dfc'), - ('7db6a9ffc210', NULL, 'yyXTSd6kGh7kNENlcGDeYtq4ftQ=', 'established', 'guest', NULL, '2023-08-13 10:29:47', '2023-08-13 10:29:47', 'a2f4f3879c85', '0969e3c95dfc'), - ('60a470e1aff6', NULL, 'uGXywHjal9lK+rcdtRBcXh8y5qA=', 'established', 'manager', NULL, '2023-08-13 10:29:55', '2023-08-13 10:29:55', '566aea2c2759', '0969e3c95dfc'), - ('d1c0a4522283', NULL, NULL, 'established', 'manager', NULL, '2023-09-29 23:24:38', '2023-09-29 23:24:38', 'dac7116e02ed', '70ca971c992f'), - ('5b24ce470d9f', NULL, 'XisYzAgXUozfJA1M/y39ow8t5Vw=', 'established', 'member', NULL, '2023-09-29 23:27:54', '2023-09-29 23:27:54', 'a3d9d86dc23b', '70ca971c992f'), - ('46d14f7c072c', NULL, '4KCuIMWvkGVAjSBtAnG5QcesOrI=', 'established', 'manager', NULL, '2023-09-29 23:41:30', '2023-09-29 23:41:30', 'a2f4f3879c85', '70ca971c992f'), - ('b0bdb7202a9d', NULL, NULL, 'established', 'manager', NULL, '2023-08-08 07:53:12', '2023-08-08 07:53:12', '9145944210a7', '3c79b99ab424'), - ('b00054c3c03e', NULL, 'XC/b4erYO0iZZTBEXOi3n/4AH9w=', 'established', 'guest', NULL, '2023-08-13 10:29:08', '2023-08-13 10:29:08', '9145944210a7', '0969e3c95dfc'), - ('10d8f02ce5b4', NULL, 'n1MKxMj1RWkrcSmNfHdjUxKV3QY=', 'established', 'guest', NULL, '2023-09-29 23:25:49', '2023-09-29 23:25:49', '9145944210a7', '70ca971c992f'), - ('b32db30637c8', NULL, 'AC/b4erYO0iZZTBEXOi3n/4AH9w=', 'invited', 'manager', NULL, '2023-08-12 17:41:55', '2023-08-12 17:41:55', '9145944210a7', '9c2447aefe38'); +INSERT INTO public.camp_collaboration (id, inviteemail, invitekeyhash, status, role, createtime, updatetime, userid, campid) VALUES + ('237abf0bd057', 'e.mail2@test.com', 'myInviteKey2', 'invited', 'member', '2022-01-23 16:19:10', '2022-01-23 16:19:10', NULL, '6430aecc5422'), + ('0e524d43e799', NULL, NULL, 'established', 'manager', '2022-01-23 16:19:10', '2022-01-23 16:19:10', 'e7b00084dabf', '6430aecc5422'), + ('2c313fa367b3', NULL, NULL, 'established', 'manager', '2022-01-23 16:19:10', '2022-01-23 16:19:10', '3b41dca5c568', 'e5027d852487'), + ('2b3cf1ce6341', 'x@z.com', 'd12ntPWBK0qmPxfMGg/QRWh98XE=', 'invited', 'member', '2023-08-08 08:03:06', '2023-08-08 08:03:06', NULL, '3c79b99ab424'), + ('dba39edd9910', NULL, NULL, 'established', 'member', '2023-08-08 07:59:24', '2023-08-08 08:11:28', 'bee7cf5b3871', '3c79b99ab424'), + ('c88fd78c90ea', NULL, NULL, 'established', 'manager', '2023-08-08 07:58:53', '2023-08-08 08:12:12', 'caeba9f7e728', '3c79b99ab424'), + ('5111b2972441', 'inactive@test.com', 'Vazgl+0DsuUKrcTezKxA+KmBgOA=', 'inactive', 'member', '2023-08-08 07:59:53', '2023-08-08 09:18:22', NULL, '3c79b99ab424'), + ('68694999fa8d', NULL, NULL, 'established', 'manager', '2023-08-08 09:22:58', '2023-08-08 09:22:58', '9145944210a7', '6973c230d6b1'), + ('3229d273decd', NULL, '5eO+mQd6F+AQwCITx5mV8dX9/6U=', 'invited', 'manager', '2023-08-08 09:38:27', '2023-08-08 09:43:11', '130684395770', '6973c230d6b1'), + ('7cae64a7800c', 'e.mail@test.com', '7FUv2lrEcRjMbW/Nb1mTkBaAPOs=', 'invited', 'member', '2023-08-08 09:37:38', '2023-08-08 09:43:21', NULL, '6973c230d6b1'), + ('878426563205', NULL, NULL, 'established', 'guest', '2023-08-08 09:36:41', '2023-08-08 09:43:52', '48f00685a292', '6973c230d6b1'), + ('d27ca1d0e6e4', NULL, NULL, 'established', 'member', '2023-08-08 09:36:01', '2023-08-08 09:44:19', 'bae69a1c9fcc', '6973c230d6b1'), + ('c463d2a19847', NULL, NULL, 'established', 'member', '2023-08-08 09:38:01', '2023-08-08 09:44:50', 'caeba9f7e728', '6973c230d6b1'), + ('763c0d181b63', NULL, NULL, 'established', 'manager', '2023-08-08 09:37:16', '2023-08-08 09:45:21', 'bee7cf5b3871', '6973c230d6b1'), + ('b7d93b2fa1be', NULL, 'mLdsTtaGGptPYSZLUDgX8sAFO54=', 'established', 'member', '2023-08-12 19:10:49', '2023-08-12 19:10:49', 'a2f4f3879c85', '9c2447aefe38'), + ('ac1cd0bcbd69', NULL, 'V30YTcBqBqs5xS7HrFM4ODRrzbw=', 'established', 'member', '2023-08-12 19:10:28', '2023-08-12 19:10:28', 'a3d9d86dc23b', '9c2447aefe38'), + ('8be6d2f6f7dc', NULL, 'ru6jsdD9fODk8+p8wmI909rJPkQ=', 'established', 'manager', '2023-08-12 19:11:03', '2023-08-12 19:11:03', '566aea2c2759', '9c2447aefe38'), + ('0e26982c9895', NULL, 'ao9OQRgXWBpCVaD4lGQaUFzvKwI=', 'established', 'member', '2023-08-12 19:10:14', '2023-08-12 19:10:14', 'dac7116e02ed', '9c2447aefe38'), + ('b2f127cb410f', NULL, NULL, 'established', 'manager', '2023-08-13 06:32:29', '2023-08-13 06:32:29', 'dac7116e02ed', '0969e3c95dfc'), + ('d806a59915f8', NULL, 'SuP47raE2s/2hGLsdBiO/icIU0E=', 'established', 'member', '2023-08-13 10:29:25', '2023-08-13 10:29:25', 'a3d9d86dc23b', '0969e3c95dfc'), + ('7db6a9ffc210', NULL, 'yyXTSd6kGh7kNENlcGDeYtq4ftQ=', 'established', 'guest', '2023-08-13 10:29:47', '2023-08-13 10:29:47', 'a2f4f3879c85', '0969e3c95dfc'), + ('60a470e1aff6', NULL, 'uGXywHjal9lK+rcdtRBcXh8y5qA=', 'established', 'manager', '2023-08-13 10:29:55', '2023-08-13 10:29:55', '566aea2c2759', '0969e3c95dfc'), + ('d1c0a4522283', NULL, NULL, 'established', 'manager', '2023-09-29 23:24:38', '2023-09-29 23:24:38', 'dac7116e02ed', '70ca971c992f'), + ('5b24ce470d9f', NULL, 'XisYzAgXUozfJA1M/y39ow8t5Vw=', 'established', 'member', '2023-09-29 23:27:54', '2023-09-29 23:27:54', 'a3d9d86dc23b', '70ca971c992f'), + ('46d14f7c072c', NULL, '4KCuIMWvkGVAjSBtAnG5QcesOrI=', 'established', 'manager', '2023-09-29 23:41:30', '2023-09-29 23:41:30', 'a2f4f3879c85', '70ca971c992f'), + ('b0bdb7202a9d', NULL, NULL, 'established', 'manager', '2023-08-08 07:53:12', '2023-08-08 07:53:12', '9145944210a7', '3c79b99ab424'), + ('b00054c3c03e', NULL, 'XC/b4erYO0iZZTBEXOi3n/4AH9w=', 'established', 'guest', '2023-08-13 10:29:08', '2023-08-13 10:29:08', '9145944210a7', '0969e3c95dfc'), + ('10d8f02ce5b4', NULL, 'n1MKxMj1RWkrcSmNfHdjUxKV3QY=', 'established', 'guest', '2023-09-29 23:25:49', '2023-09-29 23:25:49', '9145944210a7', '70ca971c992f'), + ('b32db30637c8', NULL, 'AC/b4erYO0iZZTBEXOi3n/4AH9w=', 'invited', 'manager', '2023-08-12 17:41:55', '2023-08-12 17:41:55', '9145944210a7', '9c2447aefe38'); diff --git a/api/migrations/prod-data/data.sql b/api/migrations/prod-data/data.sql index af9e6442f6..8b2d462002 100644 --- a/api/migrations/prod-data/data.sql +++ b/api/migrations/prod-data/data.sql @@ -95,10 +95,10 @@ INSERT INTO public.category (id, categoryprototypeid, short, name, color, number -INSERT INTO public.camp_collaboration (id, inviteemail, invitekeyhash, status, role, collaborationacceptedby, createtime, updatetime, userid, campid) VALUES - ('71c07d3be9f3', NULL, NULL, 'established', 'manager', NULL, '2022-10-08 20:13:50', '2022-10-08 20:13:50', '8adf80011c2b', '75b3572a338e'), - ('77b7a7e51080', NULL, NULL, 'established', 'manager', NULL, '2022-10-08 20:41:53', '2022-10-08 20:41:53', '8adf80011c2b', '497f974e7d5d'), - ('1c7985ab4c7a', NULL, NULL, 'established', 'manager', NULL, '2022-10-08 20:49:03', '2022-10-08 20:49:03', '8adf80011c2b', 'f92fe1cd1ae9'); +INSERT INTO public.camp_collaboration (id, inviteemail, invitekeyhash, status, role, createtime, updatetime, userid, campid) VALUES + ('71c07d3be9f3', NULL, NULL, 'established', 'manager', '2022-10-08 20:13:50', '2022-10-08 20:13:50', '8adf80011c2b', '75b3572a338e'), + ('77b7a7e51080', NULL, NULL, 'established', 'manager', '2022-10-08 20:41:53', '2022-10-08 20:41:53', '8adf80011c2b', '497f974e7d5d'), + ('1c7985ab4c7a', NULL, NULL, 'established', 'manager', '2022-10-08 20:49:03', '2022-10-08 20:49:03', '8adf80011c2b', 'f92fe1cd1ae9'); diff --git a/api/migrations/schema/Version20240507154923.php b/api/migrations/schema/Version20240507154923.php new file mode 100644 index 0000000000..048dafca53 --- /dev/null +++ b/api/migrations/schema/Version20240507154923.php @@ -0,0 +1,27 @@ +addSql('ALTER TABLE camp_collaboration ADD color VARCHAR(8) DEFAULT NULL'); + $this->addSql('ALTER TABLE camp_collaboration ADD abbreviation TEXT DEFAULT NULL'); + } + + public function down(Schema $schema): void { + $this->addSql('ALTER TABLE camp_collaboration DROP abbreviation'); + $this->addSql('ALTER TABLE camp_collaboration DROP color'); + } +} diff --git a/api/migrations/schema/Version20240619081247.php b/api/migrations/schema/Version20240619081247.php new file mode 100644 index 0000000000..e12627e71a --- /dev/null +++ b/api/migrations/schema/Version20240619081247.php @@ -0,0 +1,25 @@ +addSql('ALTER TABLE camp_collaboration DROP collaborationacceptedby'); + } + + public function down(Schema $schema): void { + $this->addSql('ALTER TABLE camp_collaboration ADD collaborationacceptedby TEXT DEFAULT NULL'); + } +} diff --git a/api/phpunit.xml.dist b/api/phpunit.xml.dist index ddab476963..33057b2e7c 100644 --- a/api/phpunit.xml.dist +++ b/api/phpunit.xml.dist @@ -32,12 +32,7 @@ - - + src diff --git a/api/src/Entity/ActivityProgressLabel.php b/api/src/Entity/ActivityProgressLabel.php index ef6d2fc1ae..e4805e7819 100644 --- a/api/src/Entity/ActivityProgressLabel.php +++ b/api/src/Entity/ActivityProgressLabel.php @@ -36,6 +36,8 @@ validationContext: ['groups' => ['Default', 'update']] ), new Delete( + validate: true, + validationContext: ['groups' => ['delete']], security: 'is_granted("CAMP_MANAGER", object)' ), new GetCollection( diff --git a/api/src/Entity/BaseEntity.php b/api/src/Entity/BaseEntity.php index 4d601bd499..58f4a8af42 100644 --- a/api/src/Entity/BaseEntity.php +++ b/api/src/Entity/BaseEntity.php @@ -11,7 +11,7 @@ #[ORM\MappedSuperclass] #[ORM\Index(columns: ['createTime'])] #[ORM\Index(columns: ['updateTime'])] -abstract class BaseEntity { +abstract class BaseEntity implements HasId { /** * An internal, unique, randomly generated identifier of this entity. */ diff --git a/api/src/Entity/Camp.php b/api/src/Entity/Camp.php index 272b5822c0..eea7559c5e 100644 --- a/api/src/Entity/Camp.php +++ b/api/src/Entity/Camp.php @@ -101,7 +101,11 @@ class Camp extends BaseEntity implements BelongsToCampInterface, CopyFromPrototy /** * Types of programme, such as sports activities or meal times. */ - #[ApiProperty(writable: false, example: '["/categories/1a2b3c4d"]')] + #[ApiProperty( + writable: false, + uriTemplate: Category::CAMP_SUBRESOURCE_URI_TEMPLATE, + example: '"/camp/1a2b3c4d/categories"' + )] #[Groups(['read'])] #[ORM\OneToMany(targetEntity: Category::class, mappedBy: 'camp', orphanRemoval: true, cascade: ['persist'])] public Collection $categories; diff --git a/api/src/Entity/CampCollaboration.php b/api/src/Entity/CampCollaboration.php index d26edbe1fb..2aceb2dc1d 100644 --- a/api/src/Entity/CampCollaboration.php +++ b/api/src/Entity/CampCollaboration.php @@ -44,6 +44,8 @@ validationContext: ['groups' => ['Default', 'update']] ), new Delete( + validate: true, + validationContext: ['groups' => ['delete']], security: 'is_granted("CAMP_MEMBER", object) or is_granted("CAMP_MANAGER", object)' ), new Patch( @@ -200,9 +202,25 @@ class CampCollaboration extends BaseEntity implements BelongsToCampInterface { #[ORM\Column(type: 'string', length: 16, nullable: false)] public string $role; - #[ApiProperty(readable: false, writable: false)] + /** + * The color of the avatar as a hex color string. + */ + #[InputFilter\Trim] + #[Assert\Regex(pattern: '/^#[0-9a-zA-Z]{6}$/')] + #[ApiProperty(example: '#4DBB52')] + #[Groups(['read', 'write'])] + #[ORM\Column(type: 'string', length: 8, nullable: true)] + public ?string $color = null; + + /** + * The abbreviation in the avatar. + */ + #[InputFilter\Trim] + #[Assert\Length(max: 2, countUnit: Assert\Length::COUNT_GRAPHEMES)] + #[ApiProperty(example: 'AB')] + #[Groups(['read', 'write'])] #[ORM\Column(type: 'text', nullable: true)] - public ?string $collaborationAcceptedBy = null; + public ?string $abbreviation = null; public function __construct() { parent::__construct(); diff --git a/api/src/Entity/Category.php b/api/src/Entity/Category.php index 6889d971aa..03fccdd46c 100644 --- a/api/src/Entity/Category.php +++ b/api/src/Entity/Category.php @@ -9,6 +9,7 @@ use ApiPlatform\Metadata\Delete; use ApiPlatform\Metadata\Get; use ApiPlatform\Metadata\GetCollection; +use ApiPlatform\Metadata\Link; use ApiPlatform\Metadata\Patch; use ApiPlatform\Metadata\Post; use App\InputFilter; @@ -43,7 +44,9 @@ ), new Delete( processor: CategoryRemoveProcessor::class, - security: 'is_granted("CAMP_MEMBER", object) or is_granted("CAMP_MANAGER", object)' + security: 'is_granted("CAMP_MEMBER", object) or is_granted("CAMP_MANAGER", object)', + validate: true, + validationContext: ['groups' => ['delete']], ), new GetCollection( security: 'is_authenticated()' @@ -54,6 +57,17 @@ normalizationContext: self::ITEM_NORMALIZATION_CONTEXT, securityPostDenormalize: 'is_granted("CAMP_MEMBER", object) or is_granted("CAMP_MANAGER", object)' ), + new GetCollection( + name: 'BelongsToCamp_App\Entity\Category_get_collection', + uriTemplate: self::CAMP_SUBRESOURCE_URI_TEMPLATE, + uriVariables: [ + 'campId' => new Link( + fromClass: Camp::class, + toProperty: 'camp', + security: 'is_granted("CAMP_COLLABORATOR", camp) or is_granted("CAMP_IS_PROTOTYPE", camp)' + ), + ], + ), ], denormalizationContext: ['groups' => ['write']], normalizationContext: ['groups' => ['read']], @@ -65,6 +79,8 @@ class Category extends BaseEntity implements BelongsToCampInterface, CopyFromPro use ClassInfoTrait; use HasRootContentNodeTrait; + public const CAMP_SUBRESOURCE_URI_TEMPLATE = '/camps/{campId}/categories.{_format}'; + public const ITEM_NORMALIZATION_CONTEXT = [ 'groups' => [ 'read', diff --git a/api/src/Entity/ContentNode/MaterialNode.php b/api/src/Entity/ContentNode/MaterialNode.php index f537686492..a4095b3e4a 100644 --- a/api/src/Entity/ContentNode/MaterialNode.php +++ b/api/src/Entity/ContentNode/MaterialNode.php @@ -58,8 +58,6 @@ class MaterialNode extends ContentNode { public function __construct() { parent::__construct(); $this->materialItems = new ArrayCollection(); - - parent::__construct(); } /** diff --git a/api/src/Entity/Day.php b/api/src/Entity/Day.php index 7b490cf5ef..51e75a7114 100644 --- a/api/src/Entity/Day.php +++ b/api/src/Entity/Day.php @@ -8,6 +8,7 @@ use ApiPlatform\Metadata\ApiResource; use ApiPlatform\Metadata\Get; use ApiPlatform\Metadata\GetCollection; +use ApiPlatform\Metadata\Link; use App\Repository\DayRepository; use App\Serializer\Normalizer\RelatedCollectionLink; use Doctrine\Common\Collections\ArrayCollection; @@ -33,6 +34,18 @@ normalizationContext: self::COLLECTION_NORMALIZATION_CONTEXT, security: 'is_authenticated()' ), + new GetCollection( + uriTemplate: self::PERIOD_SUBRESOURCE_URI_TEMPLATE, + uriVariables: [ + 'periodId' => new Link( + toProperty: 'period', + fromClass: Period::class, + security: 'is_granted("CAMP_COLLABORATOR", period) or is_granted("CAMP_IS_PROTOTYPE", period)' + ), + ], + normalizationContext: self::COLLECTION_NORMALIZATION_CONTEXT, + security: 'is_fully_authenticated()', + ), ], denormalizationContext: ['groups' => ['write']], normalizationContext: ['groups' => ['read']], @@ -43,6 +56,8 @@ #[ORM\Entity(repositoryClass: DayRepository::class)] #[ORM\UniqueConstraint(name: 'offset_period_idx', columns: ['periodId', 'dayOffset'])] class Day extends BaseEntity implements BelongsToCampInterface { + public const PERIOD_SUBRESOURCE_URI_TEMPLATE = '/periods/{periodId}/days{._format}'; + public const ITEM_NORMALIZATION_CONTEXT = [ 'groups' => [ 'read', @@ -61,7 +76,11 @@ class Day extends BaseEntity implements BelongsToCampInterface { /** * The list of people who have a whole-day responsibility on this day. */ - #[ApiProperty(writable: false, example: '["/day_responsibles/1a2b3c4d"]')] + #[ApiProperty( + writable: false, + uriTemplate: DayResponsible::DAY_SUBRESOURCE_URI_TEMPLATE, + example: '/days/1a2b3c4d/day_responsibles' + )] #[Groups(['read'])] #[ORM\OneToMany(targetEntity: DayResponsible::class, mappedBy: 'day', orphanRemoval: true)] public Collection $dayResponsibles; @@ -161,7 +180,10 @@ public function getEnd(): ?\DateTime { /** * @return DayResponsible[] */ - #[ApiProperty(readableLink: true)] + #[ApiProperty( + readableLink: true, + uriTemplate: DayResponsible::DAY_SUBRESOURCE_URI_TEMPLATE, + )] #[SerializedName('dayResponsibles')] #[Groups(['Day:DayResponsibles'])] public function getEmbeddedDayResponsibles(): array { diff --git a/api/src/Entity/DayResponsible.php b/api/src/Entity/DayResponsible.php index a4acf15864..eba2b6cb46 100644 --- a/api/src/Entity/DayResponsible.php +++ b/api/src/Entity/DayResponsible.php @@ -9,6 +9,7 @@ use ApiPlatform\Metadata\Delete; use ApiPlatform\Metadata\Get; use ApiPlatform\Metadata\GetCollection; +use ApiPlatform\Metadata\Link; use ApiPlatform\Metadata\Post; use App\Repository\DayResponsibleRepository; use App\Validator\AssertBelongsToSameCamp; @@ -31,6 +32,16 @@ new GetCollection( security: 'is_authenticated()' ), + new GetCollection( + uriTemplate: self::DAY_SUBRESOURCE_URI_TEMPLATE, + uriVariables: [ + 'dayId' => new Link( + toProperty: 'day', + fromClass: Day::class, + security: 'is_granted("CAMP_COLLABORATOR", day) or is_granted("CAMP_IS_PROTOTYPE", day)' + ), + ], + ), new Post( securityPostDenormalize: 'is_granted("CAMP_MEMBER", object) or is_granted("CAMP_MANAGER", object)' ), @@ -46,6 +57,8 @@ #[ORM\Entity(repositoryClass: DayResponsibleRepository::class)] #[ORM\UniqueConstraint(name: 'day_campCollaboration_unique', columns: ['dayId', 'campCollaborationId'])] class DayResponsible extends BaseEntity implements BelongsToCampInterface { + public const DAY_SUBRESOURCE_URI_TEMPLATE = '/days/{dayId}/day_responsibles{._format}'; + /** * The day on which the person is responsible. */ diff --git a/api/src/Entity/HasId.php b/api/src/Entity/HasId.php new file mode 100644 index 0000000000..7bbf61c545 --- /dev/null +++ b/api/src/Entity/HasId.php @@ -0,0 +1,7 @@ + ['delete']] ), new GetCollection( security: 'is_authenticated()' diff --git a/api/src/Entity/Period.php b/api/src/Entity/Period.php index f4f768646e..bdecf059f7 100644 --- a/api/src/Entity/Period.php +++ b/api/src/Entity/Period.php @@ -43,6 +43,7 @@ ), new Delete( security: 'is_granted("CAMP_MEMBER", object) or is_granted("CAMP_MANAGER", object)', + validate: true, validationContext: ['groups' => ['delete', 'Period:delete']] ), new GetCollection( @@ -68,7 +69,11 @@ class Period extends BaseEntity implements BelongsToCampInterface { /** * The days in this time period. These are generated automatically. */ - #[ApiProperty(writable: false, example: '["/days?period=/periods/1a2b3c4d"]')] + #[ApiProperty( + writable: false, + uriTemplate: Day::PERIOD_SUBRESOURCE_URI_TEMPLATE, + example: '/periods/1a2b3c4d/days' + )] #[Groups(['read'])] #[ORM\OneToMany(targetEntity: Day::class, mappedBy: 'period', orphanRemoval: true, cascade: ['persist'])] #[ORM\OrderBy(['dayOffset' => 'ASC'])] @@ -80,7 +85,11 @@ class Period extends BaseEntity implements BelongsToCampInterface { * * @var Collection */ - #[ApiProperty(writable: false, example: '["/schedule_entries/1a2b3c4d"]')] + #[ApiProperty( + writable: false, + uriTemplate: ScheduleEntry::PERIOD_SUBRESOURCE_URI_TEMPLATE, + example: '/periods/1a2b3c4d/schedule_entries' + )] #[Groups(['read'])] #[ORM\OneToMany(targetEntity: ScheduleEntry::class, mappedBy: 'period')] #[ORM\OrderBy(['startOffset' => 'ASC', 'left' => 'ASC', 'endOffset' => 'DESC', 'id' => 'ASC'])] @@ -178,7 +187,10 @@ public function __construct() { /** * @return Day[] */ - #[ApiProperty(readableLink: true)] + #[ApiProperty( + readableLink: true, + uriTemplate: Day::PERIOD_SUBRESOURCE_URI_TEMPLATE, + )] #[SerializedName('days')] #[Groups('Period:Days')] public function getEmbeddedDays(): array { diff --git a/api/src/Entity/ScheduleEntry.php b/api/src/Entity/ScheduleEntry.php index d526998ff6..b5424bdabf 100644 --- a/api/src/Entity/ScheduleEntry.php +++ b/api/src/Entity/ScheduleEntry.php @@ -9,6 +9,7 @@ use ApiPlatform\Metadata\Delete; use ApiPlatform\Metadata\Get; use ApiPlatform\Metadata\GetCollection; +use ApiPlatform\Metadata\Link; use ApiPlatform\Metadata\Patch; use ApiPlatform\Metadata\Post; use App\Doctrine\Filter\ExpressionDateTimeFilter; @@ -37,11 +38,23 @@ ), new Delete( security: 'is_granted("CAMP_MEMBER", object) or is_granted("CAMP_MANAGER", object)', + validate: true, validationContext: ['groups' => ['delete', 'ScheduleEntry:delete']] ), new GetCollection( security: 'is_authenticated()' ), + new GetCollection( + uriTemplate: self::PERIOD_SUBRESOURCE_URI_TEMPLATE, + uriVariables: [ + 'periodId' => new Link( + toProperty: 'period', + fromClass: Period::class, + security: 'is_granted("CAMP_COLLABORATOR", period) or is_granted("CAMP_IS_PROTOTYPE", period)' + ), + ], + security: 'is_fully_authenticated()', + ), new Post( denormalizationContext: ['groups' => ['write', 'create']], normalizationContext: self::ITEM_NORMALIZATION_CONTEXT, @@ -61,6 +74,8 @@ #[ORM\Index(columns: ['startOffset'])] #[ORM\Index(columns: ['endOffset'])] class ScheduleEntry extends BaseEntity implements BelongsToCampInterface { + public const PERIOD_SUBRESOURCE_URI_TEMPLATE = '/periods/{periodId}/schedule_entries{._format}'; + public const ITEM_NORMALIZATION_CONTEXT = [ 'groups' => ['read', 'ScheduleEntry:Activity'], 'swagger_definition_name' => 'read', diff --git a/api/src/EventListener/ValidateDeleteRequestsListener.php b/api/src/EventListener/ValidateDeleteRequestsListener.php deleted file mode 100644 index 9b0eb00e3e..0000000000 --- a/api/src/EventListener/ValidateDeleteRequestsListener.php +++ /dev/null @@ -1,46 +0,0 @@ - ['validateDeleteRequest', 64], - ]; - } - - /** - * @throws ResourceClassNotFoundException - */ - public function validateDeleteRequest(ViewEvent $event): void { - $controllerResult = $event->getControllerResult(); - $request = $event->getRequest(); - - if (!$request->isMethod('DELETE') - || !($attributes = RequestAttributesExtractor::extractAttributes($request)) - || !$attributes['receive'] - ) { - return; - } - - $resourceMetadata = $this->resourceMetadataCollectionFactory->create($attributes['resource_class']); - - $validationGroups = $resourceMetadata->getOperation($attributes['operation_name'])->getValidationContext()['groups'] ?? ['delete']; - $this->validator->validate($controllerResult, ['groups' => $validationGroups]); - } -} diff --git a/api/src/HttpCache/AddCollectionTagsListener.php b/api/src/HttpCache/AddCollectionTagsListener.php new file mode 100644 index 0000000000..c89cd25908 --- /dev/null +++ b/api/src/HttpCache/AddCollectionTagsListener.php @@ -0,0 +1,57 @@ +resourceMetadataCollectionFactory = $resourceMetadataCollectionFactory; + } + + public function onKernelResponse(ResponseEvent $event): void { + $request = $event->getRequest(); + $operation = $this->initializeOperation($request); + + if ( + (!$attributes = RequestAttributesExtractor::extractAttributes($request)) + || $request->attributes->get('_api_platform_disable_listeners') + ) { + return; + } + + if ($operation instanceof CollectionOperationInterface) { + // Allows to purge collections + $uriVariables = $this->getOperationUriVariables($operation, $request->attributes->all(), $attributes['resource_class']); + $iri = $this->iriConverter->getIriFromResource($attributes['resource_class'], UrlGeneratorInterface::ABS_PATH, $operation, ['uri_variables' => $uriVariables]); + + if (!$iri) { + return; + } + + $this->responseTagger->addTags([$iri]); + } + } +} diff --git a/api/src/HttpCache/CacheControlListener.php b/api/src/HttpCache/CacheControlListener.php new file mode 100644 index 0000000000..494c533494 --- /dev/null +++ b/api/src/HttpCache/CacheControlListener.php @@ -0,0 +1,37 @@ +apiCacheEnabled = filter_var($apiCacheEnabled, FILTER_VALIDATE_BOOLEAN); + $this->maxHeaderSize = intval($maxHeaderSize); + } + + public function onKernelResponse(ResponseEvent $event): void { + $response = $event->getResponse(); + $headerSize = strlen($response->headers->__toString()); + + if (!$this->apiCacheEnabled || $headerSize > $this->maxHeaderSize) { + $response->headers->remove('cache-control'); + $response->setCache(['no_cache' => true, 'private' => true]); + + $response->headers->remove($this->headerKey); + + return; + } + } +} diff --git a/api/src/HttpCache/PurgeHttpCacheListener.php b/api/src/HttpCache/PurgeHttpCacheListener.php new file mode 100644 index 0000000000..b204d4a852 --- /dev/null +++ b/api/src/HttpCache/PurgeHttpCacheListener.php @@ -0,0 +1,295 @@ +getEntityChangeSet(); + $objectManager = method_exists($eventArgs, 'getObjectManager') ? $eventArgs->getObjectManager() : $eventArgs->getEntityManager(); + $associationMappings = $objectManager->getClassMetadata(ClassUtils::getClass($eventArgs->getObject()))->getAssociationMappings(); + + foreach ($changeSet as $key => $value) { + if (!isset($associationMappings[$key])) { + continue; + } + $mappings = $associationMappings[$key]; + $relatedProperty = $mappings['isOwningSide'] ? $mappings['inversedBy'] : $mappings['mappedBy']; + if (!$relatedProperty) { + continue; + } + + $this->addTagsFor($value[0], $relatedProperty); + $this->addTagsFor($value[1], $relatedProperty); + } + } + + /** + * Collects tags from inserted, updated and deleted entities, including relations. + */ + public function onFlush(OnFlushEventArgs $eventArgs): void { + /** @var EntityManagerInterface */ + $em = method_exists($eventArgs, 'getObjectManager') ? $eventArgs->getObjectManager() : $eventArgs->getEntityManager(); + $uow = $em->getUnitOfWork(); + + foreach ($uow->getScheduledEntityInsertions() as $entity) { + $this->gatherResourceTags($em, $entity); + $this->gatherRelationTags($em, $entity); + } + + foreach ($uow->getScheduledEntityUpdates() as $entity) { + $originalEntity = $this->getOriginalEntity($entity, $em); + $this->addTagForItem($entity); + $this->gatherResourceTags($em, $entity, $originalEntity); + } + + foreach ($uow->getScheduledEntityDeletions() as $entity) { + $originalEntity = $this->getOriginalEntity($entity, $em); + $this->addTagForItem($originalEntity); + $this->gatherResourceTags($em, $originalEntity); + $this->gatherRelationTags($em, $originalEntity); + } + + // trigger cache purges for changes on many-to-many relations + // for some reason, changes to Many-To-Many relations are not included in the preUpdate changeSet + foreach ($uow->getScheduledCollectionUpdates() as $collection) { + $this->addTagsForManyToManyRelations($collection, $collection->getInsertDiff()); + $this->addTagsForManyToManyRelations($collection, $collection->getDeleteDiff()); + } + foreach ($uow->getScheduledCollectionDeletions() as $collection) { + $this->addTagsForManyToManyRelations($collection, $collection->getDeleteDiff()); + } + } + + /** + * Purges tags collected during this request, and clears the tag list. + */ + public function postFlush(): void { + $this->cacheManager->flush(); + } + + private function addTagsForManyToManyRelations($collection, $entities) { + $associationMapping = $collection->getMapping(); + + if (ClassMetadataInfo::MANY_TO_MANY !== $associationMapping['type']) { + return; + } + + foreach ($entities as $entity) { + $relatedProperty = $associationMapping['isOwningSide'] ? $associationMapping['inversedBy'] : $associationMapping['mappedBy']; + if (!$relatedProperty) { + continue; + } + + $this->addTagForItem($entity, $relatedProperty); + } + } + + /** + * Computes the original state of the entity based on the current entity and on the changeset. + */ + private function getOriginalEntity($entity, $em) { + $uow = $em->getUnitOfWork(); + $changeSet = $uow->getEntityChangeSet($entity); + $classMetadata = $em->getClassMetadata(ClassUtils::getClass($entity)); + + $originalEntity = clone $entity; + $em->detach($originalEntity); + foreach ($changeSet as $key => $value) { + $classMetadata->setFieldValue($originalEntity, $key, $value[0]); + } + + return $originalEntity; + } + + /** + * Purges all collections (GetCollection operations), in which entity is listed on top level. + * + * If oldEntity is provided, purge is only done if the IRI of the collection has changed + * (e.g. for updating period on a ScheduleEntry and the IRI changes from /periods/1/schedule_entries to /periods/2/schedule_entries) + */ + private function gatherResourceTags(EntityManagerInterface $em, object $entity, ?object $oldEntity = null): void { + $entityClass = $this->getObjectClass($entity); + if (!$this->resourceClassResolver->isResourceClass($entityClass)) { + return; + } + + $resourceClass = $this->resourceClassResolver->getResourceClass($entity); + $this->gatherResourceTagsForClass($resourceClass, $entity, $oldEntity); + + // also purge parent classes (e.g. /content_nodes) + $classMetadata = $em->getClassMetadata(ClassUtils::getClass($entity)); + foreach ($classMetadata->parentClasses as $parentClass) { + $this->gatherResourceTagsForClass($parentClass, $entity, $oldEntity); + } + } + + private function gatherResourceTagsForClass(string $resourceClass, object $entity, ?object $oldEntity = null): void { + $resourceMetadataCollection = $this->resourceMetadataCollectionFactory->create($resourceClass); + $resourceIterator = $resourceMetadataCollection->getIterator(); + while ($resourceIterator->valid()) { + /** @var ApiResource $metadata */ + $metadata = $resourceIterator->current(); + + foreach ($metadata->getOperations() ?? [] as $operation) { + if ($operation instanceof GetCollection) { + $this->invalidateCollection($operation, $entity, $oldEntity); + } + } + $resourceIterator->next(); + } + } + + /** + * Purges a single collection (GetCollection operation). + * + * If oldEntity is provided, purge is only done if the IRI of the collection has changed + * (e.g. for updating period on a ScheduleEntry and the IRI changes from /periods/1/schedule_entries to /periods/2/schedule_entries) + */ + private function invalidateCollection(GetCollection $operation, object $entity, ?object $oldEntity = null): void { + $iri = $this->iriConverter->getIriFromResource($entity, UrlGeneratorInterface::ABS_PATH, $operation); + + if (!$iri) { + return; + } + + if (!$oldEntity) { + $this->cacheManager->invalidateTags([$iri]); + + return; + } + + $oldIri = $this->iriConverter->getIriFromResource($oldEntity, UrlGeneratorInterface::ABS_PATH, $operation); + if ($oldIri && $iri !== $oldIri) { + $this->cacheManager->invalidateTags([$iri]); + $this->cacheManager->invalidateTags([$oldIri]); + } + } + + /** + * Invalidate all relation tags of foreign objects ($relatedObject), in which $entity appears. + * + * @psalm-suppress UndefinedClass + */ + private function gatherRelationTags(EntityManagerInterface $em, object $entity): void { + $associationMappings = $em->getClassMetadata(ClassUtils::getClass($entity))->getAssociationMappings(); + + foreach ($associationMappings as $property => $associationMapping) { + // @phpstan-ignore-next-line + if (class_exists(AssociationMapping::class) && $associationMapping instanceof AssociationMapping && ($associationMapping->targetEntity ?? null) && !$this->resourceClassResolver->isResourceClass($associationMapping->targetEntity)) { + return; + } + + // @phpstan-ignore-next-line + if (\is_array($associationMapping) + && \array_key_exists('targetEntity', $associationMapping) + && !$this->resourceClassResolver->isResourceClass($associationMapping['targetEntity'])) { + return; + } + + $relatedProperty = $associationMapping['isOwningSide'] ? $associationMapping['inversedBy'] : $associationMapping['mappedBy']; + if (!$relatedProperty) { + continue; + } + + if (!$this->propertyAccessor->isReadable($entity, $property)) { + continue; + } + $relatedObject = $this->propertyAccessor->getValue($entity, $property); + if ($relatedObject === $entity) { + continue; + } + + $this->addTagsFor( + $relatedObject, + $relatedProperty + ); + } + } + + private function addTagsFor(mixed $value, ?string $property = null): void { + if (!$value || \is_scalar($value)) { + return; + } + + if (!is_iterable($value)) { + $this->addTagForItem($value, $property); + + return; + } + + if ($value instanceof PersistentCollection) { + $value = clone $value; + } + + foreach ($value as $v) { + $this->addTagForItem($v, $property); + } + } + + private function addTagForItem(mixed $value, ?string $property = null): void { + if (!$this->resourceClassResolver->isResourceClass($this->getObjectClass($value))) { + return; + } + + try { + if ($value instanceof BaseEntity) { + $iri = $value->getId(); + } else { + $iri = $this->iriConverter->getIriFromResource($value); + } + if ($iri && $property) { + $iri .= self::IRI_RELATION_DELIMITER.$property; + } + if ($iri) { + $this->cacheManager->invalidateTags([$iri]); + } + } catch (InvalidArgumentException|RuntimeException) { + } + } +} diff --git a/api/src/HttpCache/ResponseTagger.php b/api/src/HttpCache/ResponseTagger.php new file mode 100644 index 0000000000..73f6c34a56 --- /dev/null +++ b/api/src/HttpCache/ResponseTagger.php @@ -0,0 +1,46 @@ + + */ +class ResponseTagger { + public function __construct( + private string $matchPath, + private SymfonyResponseTagger $responseTagger, + private RequestStack $requestStack + ) {} + + /** + * Add tags to be set on the response. + * + * Only adds tags for requests that are cacheable + * + * @param string[] $tags List of tags to add + */ + public function addTags(array $tags) { + if ($this->isCacheable()) { + $this->responseTagger->addTags($tags); + } + } + + private function isCacheable(): bool { + $request = $this->requestStack->getCurrentRequest(); + + if (!$request->isMethodCacheable()) { + return false; + } + + $requestUri = $request->getRequestUri(); + + return (bool) preg_match('{'.$this->matchPath.'}', $requestUri); + } +} diff --git a/api/src/HttpCache/TagCollector.php b/api/src/HttpCache/TagCollector.php new file mode 100644 index 0000000000..1b05aec8c7 --- /dev/null +++ b/api/src/HttpCache/TagCollector.php @@ -0,0 +1,91 @@ + + */ +class TagCollector implements TagCollectorInterface { + public const IRI_RELATION_DELIMITER = '#'; + + public function __construct(private ResponseTagger $responseTagger) {} + + /** + * Collect cache tags for cache invalidation. + * + * @param array&array{iri?: string, data?: mixed, object?: mixed, property_metadata?: \ApiPlatform\Metadata\ApiProperty, api_attribute?: string, resources?: array, request_uri?: string, root_operation?: Operation} $context + */ + public function collect(array $context = []): void { + $iri = $context['iri'] ?? null; + $object = $context['object'] ?? null; + + if ($object && $object instanceof HasId) { + $iri = $object->getId(); + } + + if (!$iri) { + return; + } + + if (isset($context['property_metadata'])) { + $this->addCacheTagsForRelation($context, $iri, $context['property_metadata']); + + return; + } + + // Don't include "link-only" resources (=non fully embedded resources) + if ($this->isLinkOnly($context)) { + return; + } + + $this->addCacheTagForResource($iri); + } + + private function addCacheTagForResource(string $iri): void { + $this->responseTagger->addTags([$iri]); + } + + private function addCacheTagsForRelation(array $context, string $iri, ApiProperty $propertyMetadata): void { + if (isset($propertyMetadata->getExtraProperties()['cacheDependencies'])) { + foreach ($propertyMetadata->getExtraProperties()['cacheDependencies'] as $dependency) { + $cacheTag = $iri.PurgeHttpCacheListener::IRI_RELATION_DELIMITER.$dependency; + $this->responseTagger->addTags([$cacheTag]); + } + + return; + } + + $cacheTag = $iri.PurgeHttpCacheListener::IRI_RELATION_DELIMITER.$context['api_attribute']; + $this->responseTagger->addTags([$cacheTag]); + } + + /** + * Returns true, if a resource was normalized into a link only + * Returns false, if a resource was normalized into a fully embedded resource. + */ + private function isLinkOnly(array $context): bool { + $format = $context['format'] ?? null; + $data = $context['data'] ?? null; + + // resource was normalized into JSONAPI link format + if ('jsonapi' === $format && isset($data['data']) && \is_array($data['data']) && array_keys($data['data']) === ['type', 'id']) { + return true; + } + + // resource was normalized into a string IRI only + if (\in_array($format, ['jsonld', 'jsonhal'], true) && \is_string($data)) { + return true; + } + + return false; + } +} diff --git a/api/src/HttpCache/VarnishProxyClient.php b/api/src/HttpCache/VarnishProxyClient.php new file mode 100644 index 0000000000..93206a2829 --- /dev/null +++ b/api/src/HttpCache/VarnishProxyClient.php @@ -0,0 +1,82 @@ +apiCacheEnabled = filter_var($apiCacheEnabled, FILTER_VALIDATE_BOOLEAN); + + if ($this->isCacheEnabled()) { + parent::__construct( + new HttpDispatcher([$varnishApiUrl]), + [ + 'tag_mode' => 'purgekeys', + 'tags_header' => 'xkey-purge', + ] + ); + } + } + + public function ban(array $headers): static { + if ($this->isCacheEnabled()) { + return parent::ban($headers); + } + + return $this; + } + + public function banPath($path, $contentType = null, $hosts = null): static { + if ($this->isCacheEnabled()) { + return parent::banPath($path, $contentType, $hosts); + } + + return $this; + } + + public function invalidateTags(array $tags): static { + if ($this->isCacheEnabled()) { + return parent::invalidateTags($tags); + } + + return $this; + } + + public function purge($url, array $headers = []): static { + if ($this->isCacheEnabled()) { + return parent::purge($url, $headers); + } + + return $this; + } + + public function refresh($url, array $headers = []): static { + if ($this->isCacheEnabled()) { + return parent::refresh(${$url}, $headers); + } + + return $this; + } + + public function flush(): int { + if ($this->isCacheEnabled()) { + return parent::flush(); + } + + return 0; + } + + private function isCacheEnabled() { + return $this->apiCacheEnabled && '' !== $this->varnishApiUrl; + } +} diff --git a/api/src/Metadata/Resource/Factory/UriTemplateFactory.php b/api/src/Metadata/Resource/Factory/UriTemplateFactory.php index 29bfac99f6..442bd86cb7 100644 --- a/api/src/Metadata/Resource/Factory/UriTemplateFactory.php +++ b/api/src/Metadata/Resource/Factory/UriTemplateFactory.php @@ -68,9 +68,11 @@ public function createFromResourceClass(string $resourceClass): array { $getCollectionOperation = OperationHelper::findOneByType($resourceMetadataCollection, GetCollection::class); $baseUri = $this->iriConverter->getIriFromResource($resourceClass, UrlGeneratorInterface::ABS_PATH, $getCollectionOperation); + $relativeUri = $this->iriConverter->getIriFromResource($resourceClass, UrlGeneratorInterface::REL_PATH, $getCollectionOperation); + $idParameter = $this->getIdParameter($resourceMetadataCollection); $queryParameters = $this->getQueryParameters($resourceClass, $resourceMetadataCollection); - $additionalPathParameter = $this->allowsActionParameter($resourceMetadataCollection) ? '{/action}' : ''; + $additionalPathParameter = $this->allowsActionParameter($relativeUri, $resourceMetadataCollection) ? '{/action}' : ''; return [ $baseUri.$idParameter.$additionalPathParameter.$queryParameters, @@ -150,18 +152,19 @@ protected function getPaginationParameters(ResourceMetadataCollection $resourceM return $parameters; } - protected function allowsActionParameter(ResourceMetadataCollection $resourceMetadataCollection): bool { + protected function allowsActionParameter(string $uriTemplateBase, ResourceMetadataCollection $resourceMetadataCollection): bool { foreach ($resourceMetadataCollection->getIterator()->current()->getOperations() as $operation) { /* * Matches: - * {/inviteKey}/find - * users{/id}/activate + * - invitations/{/inviteKey}/find + * - /users{/id}/activate * * Does not match: - * profiles{/id} + * - profiles{/id} + * - any uriTemplate, which doesn't start with the same $uriTemplateBase */ if ($operation instanceof HttpOperation) { - if (preg_match('/^.*\\/?{.*}\\/.+$/', $operation->getUriTemplate() ?? '')) { + if (preg_match('/^\/?'.preg_quote($uriTemplateBase, '/').'.*\/?{.*}\/.+$/', $operation->getUriTemplate() ?? '')) { return true; } } diff --git a/api/src/OAuth/JWTStateOAuth2Client.php b/api/src/OAuth/JWTStateOAuth2Client.php index c02383a54d..063f28de8d 100644 --- a/api/src/OAuth/JWTStateOAuth2Client.php +++ b/api/src/OAuth/JWTStateOAuth2Client.php @@ -31,7 +31,7 @@ * longer-living token and with parts of the cookie available to JavaScript. */ class JWTStateOAuth2Client extends OAuth2Client implements OAuth2ClientInterface { - public const JWT_TTL = 300; // seconds, i.e. 5 minutes of validity for the JWT token + public const JWT_TTL = 900; // seconds, i.e. 15 minutes of validity for the JWT token public function __construct( AbstractProvider $provider, @@ -101,7 +101,7 @@ public function redirect(array $scopes = [], array $options = []): RedirectRespo /** * Checks the validity of the temporary JWT cookie, and checks that the state parameter is correct. * Any irregularities would indicate someone tampering with the login system (or someone taking longer - * than 5 minutes to authenticate with the external service...) + * than 15 minutes to authenticate with the external service...) * After this custom state parameter check, we delegate to the original implementation to finish the OAuth * flow. * @@ -109,6 +109,10 @@ public function redirect(array $scopes = [], array $options = []): RedirectRespo */ public function getAccessToken(array $options = []): AccessTokenInterface { $jwt = $this->getCurrentRequest()->cookies->get($this->getCookieName($this->cookiePrefix)); + if (null === $jwt) { + throw new InvalidStateException('Expired state'); + } + $actualState = $this->getCurrentRequest()->get('state'); try { diff --git a/api/src/Repository/MaterialItemRepository.php b/api/src/Repository/MaterialItemRepository.php index 1244de82d9..27b514cf7b 100644 --- a/api/src/Repository/MaterialItemRepository.php +++ b/api/src/Repository/MaterialItemRepository.php @@ -19,8 +19,6 @@ * @method MaterialItem[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) */ class MaterialItemRepository extends ServiceEntityRepository implements CanFilterByUserInterface { - use FiltersByCampCollaboration; - public function __construct(ManagerRegistry $registry) { parent::__construct($registry, MaterialItem::class); } diff --git a/api/src/Security/OAuth/GoogleAuthenticator.php b/api/src/Security/OAuth/GoogleAuthenticator.php index b03e8a72e2..459673b7c2 100644 --- a/api/src/Security/OAuth/GoogleAuthenticator.php +++ b/api/src/Security/OAuth/GoogleAuthenticator.php @@ -12,6 +12,7 @@ use Lexik\Bundle\JWTAuthenticationBundle\Encoder\JWTEncoderInterface; use Lexik\Bundle\JWTAuthenticationBundle\Security\Http\Authentication\AuthenticationSuccessHandler; use Symfony\Bundle\SecurityBundle\Security; +use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -100,6 +101,6 @@ public function onAuthenticationSuccess(Request $request, TokenInterface $token, public function onAuthenticationFailure(Request $request, AuthenticationException $exception): ?Response { $message = strtr($exception->getMessageKey(), $exception->getMessageData()); - return new Response($message, Response::HTTP_FORBIDDEN); + return new JsonResponse(['message' => $message, 'code' => Response::HTTP_FORBIDDEN], Response::HTTP_FORBIDDEN); } } diff --git a/api/src/Security/OAuth/HitobitoAuthenticator.php b/api/src/Security/OAuth/HitobitoAuthenticator.php index 7b814e570e..4f6859ef42 100644 --- a/api/src/Security/OAuth/HitobitoAuthenticator.php +++ b/api/src/Security/OAuth/HitobitoAuthenticator.php @@ -13,6 +13,7 @@ use Lexik\Bundle\JWTAuthenticationBundle\Encoder\JWTEncoderInterface; use Lexik\Bundle\JWTAuthenticationBundle\Security\Http\Authentication\AuthenticationSuccessHandler; use Symfony\Bundle\SecurityBundle\Security; +use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -107,6 +108,6 @@ public function onAuthenticationSuccess(Request $request, TokenInterface $token, public function onAuthenticationFailure(Request $request, AuthenticationException $exception): ?Response { $message = strtr($exception->getMessageKey(), $exception->getMessageData()); - return new Response($message, Response::HTTP_FORBIDDEN); + return new JsonResponse(['message' => $message, 'code' => Response::HTTP_FORBIDDEN], Response::HTTP_FORBIDDEN); } } diff --git a/api/src/Security/Voter/CampIsPrototypeVoter.php b/api/src/Security/Voter/CampIsPrototypeVoter.php index 9bdf0a1ebe..c03a1f91b4 100644 --- a/api/src/Security/Voter/CampIsPrototypeVoter.php +++ b/api/src/Security/Voter/CampIsPrototypeVoter.php @@ -4,6 +4,8 @@ use App\Entity\BelongsToCampInterface; use App\Entity\BelongsToContentNodeTreeInterface; +use App\Entity\Camp; +use App\HttpCache\ResponseTagger; use App\Util\GetCampFromContentNodeTrait; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; @@ -17,6 +19,7 @@ class CampIsPrototypeVoter extends Voter { public function __construct( private readonly EntityManagerInterface $em, + private readonly ResponseTagger $responseTagger ) {} protected function supports($attribute, $subject): bool { @@ -34,6 +37,12 @@ protected function voteOnAttribute(string $attribute, mixed $subject, TokenInter return true; } - return $camp->isPrototype; + if ($camp->isPrototype) { + $this->responseTagger->addTags([$camp->getId()]); + + return true; + } + + return false; } } diff --git a/api/src/Security/Voter/CampRoleVoter.php b/api/src/Security/Voter/CampRoleVoter.php index eb9da39e0c..7ffcd3119d 100644 --- a/api/src/Security/Voter/CampRoleVoter.php +++ b/api/src/Security/Voter/CampRoleVoter.php @@ -4,8 +4,10 @@ use App\Entity\BelongsToCampInterface; use App\Entity\BelongsToContentNodeTreeInterface; +use App\Entity\Camp; use App\Entity\CampCollaboration; use App\Entity\User; +use App\HttpCache\ResponseTagger; use App\Util\GetCampFromContentNodeTrait; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; @@ -26,6 +28,7 @@ class CampRoleVoter extends Voter { public function __construct( private readonly EntityManagerInterface $em, + private readonly ResponseTagger $responseTagger ) {} protected function supports($attribute, $subject): bool { @@ -48,12 +51,20 @@ protected function voteOnAttribute(string $attribute, mixed $subject, TokenInter return true; } - return $camp->collaborations + $campCollaboration = $camp->collaborations ->filter(self::withStatus(CampCollaboration::STATUS_ESTABLISHED)) ->filter(self::ofUser($user)) ->filter(self::withRole($attribute)) - ->exists(fn () => true) + ->first() ; + + if ($campCollaboration) { + $this->responseTagger->addTags([$campCollaboration->getId()]); + + return true; + } + + return false; } private static function withStatus($status) { diff --git a/api/src/Serializer/Normalizer/RelatedCollectionLinkNormalizer.php b/api/src/Serializer/Normalizer/RelatedCollectionLinkNormalizer.php index ad9cace4ad..10b5701b6c 100644 --- a/api/src/Serializer/Normalizer/RelatedCollectionLinkNormalizer.php +++ b/api/src/Serializer/Normalizer/RelatedCollectionLinkNormalizer.php @@ -2,7 +2,7 @@ namespace App\Serializer\Normalizer; -use ApiPlatform\Api\FilterInterface; +use ApiPlatform\Doctrine\Common\Filter\SearchFilterInterface; use ApiPlatform\Doctrine\Common\PropertyHelperTrait; use ApiPlatform\Doctrine\Orm\Filter\SearchFilter; use ApiPlatform\Exception\ResourceClassNotFoundException; @@ -22,7 +22,6 @@ use Symfony\Component\DependencyInjection\ServiceLocator; use Symfony\Component\PropertyAccess\PropertyAccessorInterface; use Symfony\Component\Routing\RouterInterface; -use Symfony\Component\Serializer\NameConverter\AdvancedNameConverterInterface; use Symfony\Component\Serializer\NameConverter\NameConverterInterface; use Symfony\Component\Serializer\Normalizer\NormalizerInterface; use Symfony\Component\Serializer\SerializerAwareInterface; @@ -140,7 +139,8 @@ public function setSerializer(SerializerInterface $serializer): void { public function getRelatedCollectionHref($object, $rel, array $context = []): string { $resourceClass = $this->getObjectClass($object); - if ($this->nameConverter instanceof AdvancedNameConverterInterface) { + if ($this->nameConverter instanceof NameConverterInterface) { + // @phpstan-ignore-next-line $rel = $this->nameConverter->denormalize($rel, $resourceClass, null, array_merge($context, ['groups' => ['read']])); } @@ -239,7 +239,7 @@ private function exactSearchFilterExists(string $resourceClass, mixed $propertyN $filterIds = OperationHelper::findOneByType($resourceMetadataCollection, GetCollection::class)?->getFilters() ?? []; return 0 < count(array_filter($filterIds, function ($filterId) use ($resourceClass, $propertyName) { - /** @var FilterInterface $filter */ + /** @var SearchFilterInterface $filter */ $filter = $this->filterLocator->get($filterId); if (!$filter instanceof SearchFilter) { return false; diff --git a/api/src/State/ResetPasswordCreateProcessor.php b/api/src/State/ResetPasswordCreateProcessor.php index e7f43e7356..ffabb57e39 100644 --- a/api/src/State/ResetPasswordCreateProcessor.php +++ b/api/src/State/ResetPasswordCreateProcessor.php @@ -15,7 +15,7 @@ use Symfony\Component\PasswordHasher\PasswordHasherInterface; /** - * @implements ProcessorInterface + * @implements ProcessorInterface */ class ResetPasswordCreateProcessor implements ProcessorInterface { public function __construct( @@ -29,7 +29,7 @@ public function __construct( /** * @param ResetPassword $data */ - public function process($data, Operation $operation, array $uriVariables = [], array $context = []): ResetPassword { + public function process($data, Operation $operation, array $uriVariables = [], array $context = []): null { $resp = $this->reCaptcha->verify($data->recaptchaToken); if (!$resp->isSuccess()) { throw new HttpException(422, 'ReCaptcha failed'); @@ -38,7 +38,7 @@ public function process($data, Operation $operation, array $uriVariables = [], a $user = $this->userRepository->loadUserByIdentifier($data->email); if (null == $user) { - return $data; + return null; } $resetKey = IdGenerator::generateRandomHexString(64); @@ -49,7 +49,7 @@ public function process($data, Operation $operation, array $uriVariables = [], a $this->mailService->sendPasswordResetLink($user, $data); - return $data; + return null; } private function getResetKeyHasher(): PasswordHasherInterface { diff --git a/api/src/Util/ClassInfoTrait.php b/api/src/Util/ClassInfoTrait.php index 2ed9318530..af5f150d49 100644 --- a/api/src/Util/ClassInfoTrait.php +++ b/api/src/Util/ClassInfoTrait.php @@ -29,7 +29,7 @@ private function getObjectClass(object $object): string { */ private function getRealClassName(string $className): string { // __CG__: Doctrine Common Marker for Proxy (ODM < 2.0 and ORM < 3.0) - $positionCg = strrpos($className, '\\__CG__\\'); + $positionCg = strrpos($className, '\__CG__\\'); if (false === $positionCg) { return $className; diff --git a/api/symfony.lock b/api/symfony.lock index fd5d68de4c..af5c74d665 100644 --- a/api/symfony.lock +++ b/api/symfony.lock @@ -168,6 +168,9 @@ "friendsofphp/proxy-manager-lts": { "version": "v1.0.3" }, + "friendsofsymfony/http-cache-bundle": { + "version": "2.16.2" + }, "gedmo/doctrine-extensions": { "version": "v3.0.5" }, @@ -260,9 +263,6 @@ "myclabs/deep-copy": { "version": "1.10.2" }, - "namshi/jose": { - "version": "7.2.3" - }, "nelmio/alice": { "version": "3.2", "recipe": { @@ -342,9 +342,6 @@ "phpmyadmin/sql-parser": { "version": "5.5.0" }, - "phpspec/prophecy": { - "version": "1.14.0" - }, "phpstan/phpstan": { "version": "1.1.2" }, @@ -682,9 +679,6 @@ "symfony/polyfill-intl-idn": { "version": "v1.23.0" }, - "symfony/polyfill-php56": { - "version": "v1.20.0" - }, "symfony/polyfill-uuid": { "version": "v1.25.0" }, diff --git a/api/tests/Api/CampCollaborations/ListCampCollaborationsTest.php b/api/tests/Api/CampCollaborations/ListCampCollaborationsTest.php index 8ce744e353..06975241fe 100644 --- a/api/tests/Api/CampCollaborations/ListCampCollaborationsTest.php +++ b/api/tests/Api/CampCollaborations/ListCampCollaborationsTest.php @@ -114,6 +114,6 @@ public function testSqlQueryCount() { $client->enableProfiler(); $client->request('GET', '/camp_collaborations'); - $this->assertSqlQueryCount($client, 25); + $this->assertSqlQueryCount($client, 22); } } diff --git a/api/tests/Api/CampCollaborations/ReadCampCollaborationTest.php b/api/tests/Api/CampCollaborations/ReadCampCollaborationTest.php index 8c9eaf027f..a9916e6211 100644 --- a/api/tests/Api/CampCollaborations/ReadCampCollaborationTest.php +++ b/api/tests/Api/CampCollaborations/ReadCampCollaborationTest.php @@ -126,6 +126,6 @@ public function testSqlQueryCount() { $client->enableProfiler(); $client->request('GET', '/camp_collaborations/'.$campCollaboration->getId()); - $this->assertSqlQueryCount($client, 15); + $this->assertSqlQueryCount($client, 14); } } diff --git a/api/tests/Api/Camps/ReadCampTest.php b/api/tests/Api/Camps/ReadCampTest.php index 664b1556dd..df95ce9973 100644 --- a/api/tests/Api/Camps/ReadCampTest.php +++ b/api/tests/Api/Camps/ReadCampTest.php @@ -45,7 +45,7 @@ public function testGetSingleCampIsAllowedForGuest() { /** @var Camp $camp */ $camp = static::getFixture('camp1'); $user = static::getFixture('user3guest'); - static::createClientWithCredentials(['email' => $user->getEmail()])->request('GET', '/camps/'.$camp->getId()); + $response = static::createClientWithCredentials(['email' => $user->getEmail()])->request('GET', '/camps/'.$camp->getId()); $this->assertResponseStatusCodeSame(200); $this->assertJsonContains([ 'id' => $camp->getId(), @@ -64,9 +64,15 @@ public function testGetSingleCampIsAllowedForGuest() { 'materialLists' => ['href' => '/material_lists?camp=%2Fcamps%2F'.$camp->getId()], 'campCollaborations' => ['href' => '/camp_collaborations?camp=%2Fcamps%2F'.$camp->getId()], 'periods' => ['href' => '/periods?camp=%2Fcamps%2F'.$camp->getId()], - 'categories' => ['href' => '/categories?camp=%2Fcamps%2F'.$camp->getId()], + 'categories' => ['href' => "/camps/{$camp->getId()}/categories"], ], ]); + + $responseArray = $response->toArray(); + $period1 = static::getFixture('period1'); + $period2 = static::getFixture('period2'); + $this->assertEquals("/periods/{$period2->getId()}/days", $responseArray['_embedded']['periods'][0]['_links']['days']['href']); + $this->assertEquals("/periods/{$period1->getId()}/days", $responseArray['_embedded']['periods'][1]['_links']['days']['href']); } public function testGetSingleCampIsAllowedForMember() { @@ -92,7 +98,7 @@ public function testGetSingleCampIsAllowedForMember() { 'materialLists' => ['href' => '/material_lists?camp=%2Fcamps%2F'.$camp->getId()], 'campCollaborations' => ['href' => '/camp_collaborations?camp=%2Fcamps%2F'.$camp->getId()], 'periods' => ['href' => '/periods?camp=%2Fcamps%2F'.$camp->getId()], - 'categories' => ['href' => '/categories?camp=%2Fcamps%2F'.$camp->getId()], + 'categories' => ['href' => "/camps/{$camp->getId()}/categories"], ], ]); } @@ -119,7 +125,7 @@ public function testGetSingleCampIsAllowedForManager() { 'materialLists' => ['href' => '/material_lists?camp=%2Fcamps%2F'.$camp->getId()], 'campCollaborations' => ['href' => '/camp_collaborations?camp=%2Fcamps%2F'.$camp->getId()], 'periods' => ['href' => '/periods?camp=%2Fcamps%2F'.$camp->getId()], - 'categories' => ['href' => '/categories?camp=%2Fcamps%2F'.$camp->getId()], + 'categories' => ['href' => "/camps/{$camp->getId()}/categories"], ], ]); } diff --git a/api/tests/Api/Categories/CreateCategoryTest.php b/api/tests/Api/Categories/CreateCategoryTest.php index 14a0b76f42..5c29dfe60a 100644 --- a/api/tests/Api/Categories/CreateCategoryTest.php +++ b/api/tests/Api/Categories/CreateCategoryTest.php @@ -552,6 +552,26 @@ public function testCreateCategoryFromCopySourceActivityAcrossCamp() { $this->assertResponseStatusCodeSame(201); } + public function testCreateCategoryPurgesCacheTags() { + $client = static::createClientWithCredentials(); + $cacheManager = $this->mockCacheManager(); + + $client->request('POST', '/categories', ['json' => $this->getExampleWritePayload()]); + + $this->assertResponseStatusCodeSame(201); + + $camp1 = static::getFixture('camp1'); + $contentType = static::getFixture('contentTypeSafetyConcept'); + self::assertEqualsCanonicalizing([ + '/categories', + '/camps/'.$camp1->getId().'/categories', + '/content_nodes', + '/content_node/column_layouts', + $camp1->getId().'#categories', + $contentType->getId().'#categories', + ], $cacheManager->getInvalidatedTags()); + } + /** * @throws RedirectionExceptionInterface * @throws DecodingExceptionInterface diff --git a/api/tests/Api/Categories/DeleteCategoryTest.php b/api/tests/Api/Categories/DeleteCategoryTest.php index 9b3732cbbd..267da567e4 100644 --- a/api/tests/Api/Categories/DeleteCategoryTest.php +++ b/api/tests/Api/Categories/DeleteCategoryTest.php @@ -97,4 +97,27 @@ public function testDeleteCategoryValidatesThatCategoryHasNoActivities() { 'detail' => 'activities: It\'s not possible to delete a category as long as it has an activity linked to it.', ]); } + + public function testDeleteCategoryPurgesCacheTags() { + $client = static::createClientWithCredentials(); + $cacheManager = $this->mockCacheManager(); + + $category = static::getFixture('categoryWithNoActivities'); + $client->request('DELETE', '/categories/'.$category->getId()); + + $this->assertResponseStatusCodeSame(204); + + $camp = $category->getCamp(); + $rootContentNode = $category->getRootContentNode(); + self::assertEqualsCanonicalizing([ + $category->getId(), + '/categories', + '/camps/'.$camp->getId().'/categories', + $camp->getId().'#categories', + '/content_nodes', + '/content_node/column_layouts', + $rootContentNode->getId(), + $rootContentNode->getId().'#rootDescendants', + ], $cacheManager->getInvalidatedTags()); + } } diff --git a/api/tests/Api/Categories/ListCategoriesTest.php b/api/tests/Api/Categories/ListCategoriesTest.php index a4cd979b39..5458b62cac 100644 --- a/api/tests/Api/Categories/ListCategoriesTest.php +++ b/api/tests/Api/Categories/ListCategoriesTest.php @@ -96,4 +96,33 @@ public function testListCategoriesFilteredByCampPrototypeIsAllowedForUnrelatedUs ['href' => $this->getIriFor('category1campPrototype')], ], $response->toArray()['_links']['items']); } + + public function testListCategoriesAsCampSubresourceIsAllowedForCollaborator() { + $camp = static::getFixture('camp1'); + $response = static::createClientWithCredentials()->request('GET', '/camps/'.$camp->getId().'/categories'); + $this->assertResponseStatusCodeSame(200); + $this->assertJsonContains([ + 'totalItems' => 3, + '_links' => [ + 'items' => [], + ], + '_embedded' => [ + 'items' => [], + ], + ]); + $this->assertEqualsCanonicalizing([ + ['href' => $this->getIriFor('category1')], + ['href' => $this->getIriFor('category2')], + ['href' => $this->getIriFor('categoryWithNoActivities')], + ], $response->toArray()['_links']['items']); + } + + public function testListCategoriesAsCampSubresourceIsDeniedForUnrelatedUser() { + $camp = static::getFixture('camp1'); + static::createClientWithCredentials(['email' => static::$fixtures['user4unrelated']->getEmail()]) + ->request('GET', '/camps/'.$camp->getId().'/categories') + ; + + $this->assertResponseStatusCodeSame(404); + } } diff --git a/api/tests/Api/Categories/UpdateCategoryTest.php b/api/tests/Api/Categories/UpdateCategoryTest.php index 4422e2b37a..92d3429565 100644 --- a/api/tests/Api/Categories/UpdateCategoryTest.php +++ b/api/tests/Api/Categories/UpdateCategoryTest.php @@ -511,4 +511,30 @@ public function testPatchCategoryValidatesInvalidNumberingStyle() { ], ]); } + + public function testPatchCategoryPurgesCacheTags() { + $client = static::createClientWithCredentials(); + $cacheManager = $this->mockCacheManager(); + + $category = static::getFixture('category1'); + $client->request('PATCH', '/categories/'.$category->getId(), ['json' => [ + 'short' => 'LP', + 'preferredContentTypes' => [ + $this->getIriFor('contentTypeColumnLayout'), + $this->getIriFor('contentTypeNotes'), + ], + ], 'headers' => ['Content-Type' => 'application/merge-patch+json']]); + + $this->assertResponseStatusCodeSame(200); + + $contentTypeColumnLayout = static::getFixture('contentTypeColumnLayout'); + $contentTypeNotes = static::getFixture('contentTypeNotes'); + $contentTypeSafetyConcept = static::getFixture('contentTypeSafetyConcept'); + self::assertEqualsCanonicalizing([ + $category->getId(), + $contentTypeColumnLayout->getId().'#categories', + $contentTypeNotes->getId().'#categories', + $contentTypeSafetyConcept->getId().'#categories', // SafetyConcept was previously in the list, so this is purged because it was removed + ], $cacheManager->getInvalidatedTags()); + } } diff --git a/api/tests/Api/ContentNodes/CreateContentNodeTestCase.php b/api/tests/Api/ContentNodes/CreateContentNodeTestCase.php index afe3107a1e..8fdaa2f327 100644 --- a/api/tests/Api/ContentNodes/CreateContentNodeTestCase.php +++ b/api/tests/Api/ContentNodes/CreateContentNodeTestCase.php @@ -254,6 +254,21 @@ public function testCreateResponseStructureMatchesReadResponseStructure() { assertThat($createArray, CompatibleHalResponse::isHalCompatibleWith($getItemResponse->toArray())); } + public function testCreatePurgesCacheTags() { + $client = static::createClientWithCredentials(); + $cacheManager = $this->mockCacheManager(); + + $client->request('POST', $this->endpoint, ['json' => $this->getExampleWritePayload()]); + + $this->assertResponseStatusCodeSame(201); + self::assertEqualsCanonicalizing([ + '/content_nodes', + $this->endpoint, + $this->defaultParent->getRoot()->getId().'#rootDescendants', + $this->defaultParent->getId().'#children', + ], $cacheManager->getInvalidatedTags()); + } + public static function getContentNodesWhichCannotHaveChildren(): array { return [ ContentNode\MaterialNode::class => [ diff --git a/api/tests/Api/ContentNodes/RootColumnLayout/UpdateRootColumnLayoutTest.php b/api/tests/Api/ContentNodes/RootColumnLayout/UpdateRootColumnLayoutTest.php index e9737718f3..80f18a63bd 100644 --- a/api/tests/Api/ContentNodes/RootColumnLayout/UpdateRootColumnLayoutTest.php +++ b/api/tests/Api/ContentNodes/RootColumnLayout/UpdateRootColumnLayoutTest.php @@ -62,7 +62,7 @@ public function testPatchColumnLayoutValidatesMissingParent() { 'violations' => [ [ 'propertyPath' => 'parent', - 'message' => 'This value should be of type App\\Entity\\ContentNode.', + 'message' => 'This value should be of type App\Entity\ContentNode.', ], ], ]); diff --git a/api/tests/Api/DayResponsibles/ListDayResponsiblesTest.php b/api/tests/Api/DayResponsibles/ListDayResponsiblesTest.php index 0ff94edf5b..b7be9a39c5 100644 --- a/api/tests/Api/DayResponsibles/ListDayResponsiblesTest.php +++ b/api/tests/Api/DayResponsibles/ListDayResponsiblesTest.php @@ -101,4 +101,31 @@ public function testListDayResponsiblesFilteredByDayInCampPrototypeIsAllowedForU ['href' => $this->getIriFor('dayResponsible1day1period1campPrototype')], ], $response->toArray()['_links']['items']); } + + public function testListDayResponsiblesAsDaySubresourceIsAllowedForCollaborator() { + $day = static::getFixture('day1period1'); + $response = static::createClientWithCredentials()->request('GET', '/days/'.$day->getId().'/day_responsibles'); + $this->assertResponseStatusCodeSame(200); + $this->assertJsonContains([ + 'totalItems' => 1, + '_links' => [ + 'items' => [], + ], + '_embedded' => [ + 'items' => [], + ], + ]); + $this->assertEqualsCanonicalizing([ + ['href' => $this->getIriFor('dayResponsible1')], + ], $response->toArray()['_links']['items']); + } + + public function testListDayResponsiblesAsDaySubresourceIsDeniedForUnrelatedUser() { + $day = static::getFixture('day1period1'); + $response = static::createClientWithCredentials(['email' => static::$fixtures['user4unrelated']->getEmail()]) + ->request('GET', '/days/'.$day->getId().'/day_responsibles') + ; + + $this->assertResponseStatusCodeSame(404); + } } diff --git a/api/tests/Api/Days/ListDaysTest.php b/api/tests/Api/Days/ListDaysTest.php index 3962596481..3dfe5b307f 100644 --- a/api/tests/Api/Days/ListDaysTest.php +++ b/api/tests/Api/Days/ListDaysTest.php @@ -122,4 +122,33 @@ public function testListDaysFilteredByPeriodInCampPrototypeIsAllowedForCollabora ['href' => $this->getIriFor('day1period1campPrototype')], ], $response->toArray()['_links']['items']); } + + public function testListDaysAsPeriodSubresourceIsAllowedForCollaborator() { + $period = static::getFixture('period1'); + $response = static::createClientWithCredentials()->request('GET', '/periods/'.$period->getId().'/days'); + $this->assertResponseStatusCodeSame(200); + $this->assertJsonContains([ + 'totalItems' => 3, + '_links' => [ + 'items' => [], + ], + '_embedded' => [ + 'items' => [], + ], + ]); + $this->assertEqualsCanonicalizing([ + ['href' => $this->getIriFor('day1period1')], + ['href' => $this->getIriFor('day2period1')], + ['href' => $this->getIriFor('day3period1')], + ], $response->toArray()['_links']['items']); + } + + public function testListDaysAsPeriodSubresourceIsDeniedForUnrelatedUser() { + $period = static::getFixture('period1'); + $response = static::createClientWithCredentials(['email' => static::$fixtures['user4unrelated']->getEmail()]) + ->request('GET', '/periods/'.$period->getId().'/days') + ; + + $this->assertResponseStatusCodeSame(404); + } } diff --git a/api/tests/Api/Days/ReadDayTest.php b/api/tests/Api/Days/ReadDayTest.php index a43af3a9d4..306334cdbb 100644 --- a/api/tests/Api/Days/ReadDayTest.php +++ b/api/tests/Api/Days/ReadDayTest.php @@ -62,7 +62,7 @@ public function testGetSingleDayIsAllowedForGuest() { '_links' => [ 'period' => ['href' => $this->getIriFor('period1')], 'scheduleEntries' => ['href' => '/schedule_entries?period=%2Fperiods%2F'.$day->period->getId().'&start%5Bstrictly_before%5D='.urlencode($end).'&end%5Bafter%5D='.urlencode($start)], - 'dayResponsibles' => ['href' => '/day_responsibles?day=%2Fdays%2F'.$day->getId()], + 'dayResponsibles' => ['href' => '/days/'.$day->getId().'/day_responsibles'], ], ]); } @@ -83,7 +83,7 @@ public function testGetSingleDayIsAllowedForMember() { '_links' => [ 'period' => ['href' => $this->getIriFor('period1')], 'scheduleEntries' => ['href' => '/schedule_entries?period=%2Fperiods%2F'.$day->period->getId().'&start%5Bstrictly_before%5D='.urlencode($end).'&end%5Bafter%5D='.urlencode($start)], - 'dayResponsibles' => ['href' => '/day_responsibles?day=%2Fdays%2F'.$day->getId()], + 'dayResponsibles' => ['href' => '/days/'.$day->getId().'/day_responsibles'], ], ]); } @@ -102,7 +102,7 @@ public function testGetSingleDayIsAllowedForManager() { '_links' => [ 'period' => ['href' => $this->getIriFor('period1')], 'scheduleEntries' => ['href' => '/schedule_entries?period=%2Fperiods%2F'.$day->period->getId().'&start%5Bstrictly_before%5D='.urlencode($end).'&end%5Bafter%5D='.urlencode($start)], - 'dayResponsibles' => ['href' => '/day_responsibles?day=%2Fdays%2F'.$day->getId()], + 'dayResponsibles' => ['href' => '/days/'.$day->getId().'/day_responsibles'], ], ]); } @@ -121,7 +121,7 @@ public function testGetSingleDayFromCampPrototypeIsAllowedForUnrelatedUser() { '_links' => [ 'period' => ['href' => $this->getIriFor('period1campPrototype')], 'scheduleEntries' => ['href' => '/schedule_entries?period=%2Fperiods%2F'.$day->period->getId().'&start%5Bstrictly_before%5D='.urlencode($end).'&end%5Bafter%5D='.urlencode($start)], - 'dayResponsibles' => ['href' => '/day_responsibles?day=%2Fdays%2F'.$day->getId()], + 'dayResponsibles' => ['href' => '/days/'.$day->getId().'/day_responsibles'], ], ]); } diff --git a/api/tests/Api/ECampApiTestCase.php b/api/tests/Api/ECampApiTestCase.php index 7ec5c7fcde..33c60b0e51 100644 --- a/api/tests/Api/ECampApiTestCase.php +++ b/api/tests/Api/ECampApiTestCase.php @@ -16,9 +16,11 @@ use App\Entity\User; use App\Metadata\Resource\OperationHelper; use App\Repository\ProfileRepository; +use App\Tests\HttpCache\CacheManagerMock; use App\Util\ArrayDeepSort; use Doctrine\Bundle\DoctrineBundle\DataCollector\DoctrineDataCollector; use Doctrine\ORM\EntityManagerInterface; +use FOS\HttpCacheBundle\CacheManager; use Hautelook\AliceBundle\PhpUnit\FixtureStore; use Hautelook\AliceBundle\PhpUnit\RefreshDatabaseTrait; use Spatie\Snapshots\MatchesSnapshots; @@ -360,6 +362,16 @@ protected function assertMatchesResponseSnapshot(ResponseInterface $response): v $this->assertMatchesJsonSnapshot($sortedResponseArray); } + /** + * mocks CacheManager. + */ + protected function mockCacheManager(): CacheManagerMock { + $cacheManager = new CacheManagerMock(); + static::getContainer()->set(CacheManager::class, $cacheManager); + + return $cacheManager; + } + private static function escapeValues(mixed &$object): void { if (!is_array($object)) { $object = 'escaped_value'; diff --git a/api/tests/Api/FirewallTest.php b/api/tests/Api/FirewallTest.php index 23fb030853..12442d5254 100644 --- a/api/tests/Api/FirewallTest.php +++ b/api/tests/Api/FirewallTest.php @@ -1,9 +1,9 @@ enableProfiler(); $client->request('GET', $endpoint); + /** + * @var DoctrineDataCollector + */ $collector = $client->getProfile()->getCollector('db'); /* * 3 is: @@ -42,12 +45,12 @@ public function testProtectedEndpointsDontResultInQuery(string $endpoint) { assertThat($collector->getQueryCount(), equalTo(3)); } - public static function getProtectedEnpoints(): array { - $protectedEnpoints = array_filter(self::getEndPoints(), function (string $endpoint) { + public static function getProtectedEndpoints(): array { + $protectedEndpoints = array_filter(self::getEndPoints(), function (string $endpoint) { return self::isProtectedByFirewall($endpoint); }); - return ParametrizedTestHelper::asParameterTestSets($protectedEnpoints); + return ParametrizedTestHelper::asParameterTestSets($protectedEndpoints); } /** @@ -57,12 +60,15 @@ public static function getProtectedEnpoints(): array { * @throws ServerExceptionInterface * @throws TransportExceptionInterface */ - #[DataProvider('getUnprotectedEnpoints')] + #[DataProvider('getUnprotectedEndpoints')] public function testUnprotectedEndpointsMayResultInQuery(string $endpoint) { $client = self::createBasicClient(); $client->enableProfiler(); $client->request('GET', $endpoint); + /** + * @var DoctrineDataCollector + */ $collector = $client->getProfile()->getCollector('db'); /* * 3 is: @@ -73,12 +79,12 @@ public function testUnprotectedEndpointsMayResultInQuery(string $endpoint) { assertThat($collector->getQueryCount(), greaterThanOrEqual(3)); } - public static function getUnprotectedEnpoints() { - $protectedEnpoints = array_filter(self::getEndPoints(), function (string $endpoint) { + public static function getUnprotectedEndpoints() { + $protectedEndpoints = array_filter(self::getEndPoints(), function (string $endpoint) { return !self::isProtectedByFirewall($endpoint); }); - return ParametrizedTestHelper::asParameterTestSets($protectedEnpoints); + return ParametrizedTestHelper::asParameterTestSets($protectedEndpoints); } /** @@ -96,7 +102,7 @@ private static function getEndPoints() { $responseArray = $response->toArray(); $onlyUrls = array_map(fn (array $item) => $item['href'], $responseArray['_links']); - return array_map(fn (string $uriTemplate) => preg_replace('/\\{[^}]*}/', '', $uriTemplate), $onlyUrls); + return array_map(fn (string $uriTemplate) => preg_replace('/\{[^}]*}/', '', $uriTemplate), $onlyUrls); } private static function isProtectedByFirewall(mixed $endpoint): bool { diff --git a/api/tests/Api/Periods/ReadPeriodTest.php b/api/tests/Api/Periods/ReadPeriodTest.php index d382408357..fd32d9febc 100644 --- a/api/tests/Api/Periods/ReadPeriodTest.php +++ b/api/tests/Api/Periods/ReadPeriodTest.php @@ -62,8 +62,8 @@ public function testGetSinglePeriodIsAllowedForGuest() { '_links' => [ 'camp' => ['href' => $this->getIriFor('camp1')], 'materialItems' => ['href' => '/material_items?period=%2Fperiods%2F'.$period->getId()], - 'days' => ['href' => '/days?period=%2Fperiods%2F'.$period->getId()], - 'scheduleEntries' => ['href' => '/schedule_entries?period=%2Fperiods%2F'.$period->getId()], + 'days' => ['href' => '/periods/'.$period->getId().'/days'], + 'scheduleEntries' => ['href' => '/periods/'.$period->getId().'/schedule_entries'], 'contentNodes' => ['href' => '/content_nodes?period=%2Fperiods%2F'.$period->getId()], 'dayResponsibles' => ['href' => '/day_responsibles?day.period=%2Fperiods%2F'.$period->getId()], ], @@ -86,8 +86,8 @@ public function testGetSinglePeriodIsAllowedForMember() { '_links' => [ 'camp' => ['href' => $this->getIriFor('camp1')], 'materialItems' => ['href' => '/material_items?period=%2Fperiods%2F'.$period->getId()], - 'days' => ['href' => '/days?period=%2Fperiods%2F'.$period->getId()], - 'scheduleEntries' => ['href' => '/schedule_entries?period=%2Fperiods%2F'.$period->getId()], + 'days' => ['href' => '/periods/'.$period->getId().'/days'], + 'scheduleEntries' => ['href' => '/periods/'.$period->getId().'/schedule_entries'], ], ]); } @@ -105,8 +105,8 @@ public function testGetSinglePeriodIsAllowedForManager() { '_links' => [ 'camp' => ['href' => $this->getIriFor('camp1')], 'materialItems' => ['href' => '/material_items?period=%2Fperiods%2F'.$period->getId()], - 'days' => ['href' => '/days?period=%2Fperiods%2F'.$period->getId()], - 'scheduleEntries' => ['href' => '/schedule_entries?period=%2Fperiods%2F'.$period->getId()], + 'days' => ['href' => '/periods/'.$period->getId().'/days'], + 'scheduleEntries' => ['href' => '/periods/'.$period->getId().'/schedule_entries'], ], ]); } diff --git a/api/tests/Api/ScheduleEntries/ListScheduleEntriesTest.php b/api/tests/Api/ScheduleEntries/ListScheduleEntriesTest.php index 65189423d2..340021470a 100644 --- a/api/tests/Api/ScheduleEntries/ListScheduleEntriesTest.php +++ b/api/tests/Api/ScheduleEntries/ListScheduleEntriesTest.php @@ -375,4 +375,33 @@ public function testListScheduleEntriesFilteredByInvalidEndDoesntFilter() { ['href' => $this->getIriFor('scheduleEntry2period1campPrototype')], ], $response->toArray()['_links']['items']); } + + public function testListScheduleEntriesAsPeriodSubresourceIsAllowedForCollaborator() { + $period = static::getFixture('period1'); + $response = static::createClientWithCredentials()->request('GET', '/periods/'.$period->getId().'/schedule_entries'); + $this->assertResponseStatusCodeSame(200); + $this->assertJsonContains([ + 'totalItems' => 3, + '_links' => [ + 'items' => [], + ], + '_embedded' => [ + 'items' => [], + ], + ]); + $this->assertEqualsCanonicalizing([ + ['href' => $this->getIriFor('scheduleEntry1')], + ['href' => $this->getIriFor('scheduleEntry2')], + ['href' => $this->getIriFor('scheduleEntry1period1camp1')], + ], $response->toArray()['_links']['items']); + } + + public function testListScheduleEntriesAsPeriodSubresourceIsDeniedForUnrelatedUser() { + $period = static::getFixture('period1'); + $response = static::createClientWithCredentials(['email' => static::$fixtures['user4unrelated']->getEmail()]) + ->request('GET', '/periods/'.$period->getId().'/schedule_entries') + ; + + $this->assertResponseStatusCodeSame(404); + } } diff --git a/api/tests/Api/SnapshotTests/EndpointPerformanceTest.php b/api/tests/Api/SnapshotTests/EndpointPerformanceTest.php index 25f5c6e864..bf6c72231d 100644 --- a/api/tests/Api/SnapshotTests/EndpointPerformanceTest.php +++ b/api/tests/Api/SnapshotTests/EndpointPerformanceTest.php @@ -15,7 +15,6 @@ use function PHPUnit\Framework\assertThat; use function PHPUnit\Framework\equalTo; use function PHPUnit\Framework\greaterThanOrEqual; -use function PHPUnit\Framework\lessThan; use function PHPUnit\Framework\lessThanOrEqual; use function PHPUnit\Framework\logicalAnd; @@ -64,10 +63,16 @@ public function testPerformanceDidNotChangeForStableEndpoints() { $not200Responses = array_filter($responseCodes, fn ($value) => 200 != $value); assertThat($not200Responses, equalTo([])); + if (static::isPerformanceTestDebugOutput()) { + var_dump($queryExecutionTime); + } + $endpointsWithTooLongExecutionTime = array_filter($queryExecutionTime, fn ($value) => MAX_EXECUTION_TIME_SECONDS < $value); - assertThat($endpointsWithTooLongExecutionTime, equalTo([])); $this->assertMatchesSnapshot($numberOfQueries, new ECampYamlSnapshotDriver()); + if ([] !== $endpointsWithTooLongExecutionTime) { + self::markTestSkipped('Some endpoints have too long execution time, were: '.implode(',', array_keys($endpointsWithTooLongExecutionTime))); + } } /** @@ -82,10 +87,14 @@ public function testNumberOfQueriesDidNotChangeForContentNodeCollectionEndpoints if ('test' !== $this->getEnvironment()) { self::markTestSkipped(__FUNCTION__.' is only run in test environment, not in '.$this->getEnvironment()); } - list($statusCode, $queryCount) = $this->measurePerformanceFor($collectionEndpoint); + list($statusCode, $queryCount, $executionTimeSeconds) = $this->measurePerformanceFor($collectionEndpoint); assertThat($statusCode, equalTo(200)); + if (static::isPerformanceTestDebugOutput()) { + echo "{$collectionEndpoint}: {$executionTimeSeconds}\n"; + } + $queryCountRanges = self::getContentNodeEndpointQueryCountRanges()[$collectionEndpoint]; assertThat( $queryCount, @@ -116,7 +125,9 @@ public function testNumberOfQueriesDidNotChangeForContentNodeItemEndpoints(strin assertThat($statusCode, equalTo(200)); - assertThat($executionTimeSeconds, lessThan(MAX_EXECUTION_TIME_SECONDS)); + if (static::isPerformanceTestDebugOutput()) { + echo "{$collectionEndpoint}: {$executionTimeSeconds}\n"; + } $queryCountRanges = self::getContentNodeEndpointQueryCountRanges()[$collectionEndpoint.'/item']; assertThat( @@ -126,6 +137,10 @@ public function testNumberOfQueriesDidNotChangeForContentNodeItemEndpoints(strin lessThanOrEqual($queryCountRanges[1]), ) ); + + if ($executionTimeSeconds > MAX_EXECUTION_TIME_SECONDS) { + self::markTestSkipped("Endpoint {$collectionEndpoint} has too long execution time: {$executionTimeSeconds}"); + } } /** @@ -201,7 +216,7 @@ private static function getCollectionEndpoints() { $responseArray = $response->toArray(); $onlyUrls = array_map(fn (array $item) => $item['href'], $responseArray['_links']); - $withoutParameters = array_map(fn (string $uriTemplate) => preg_replace('/\\{[^}]*}/', '', $uriTemplate), $onlyUrls); + $withoutParameters = array_map(fn (string $uriTemplate) => preg_replace('/\{[^}]*}/', '', $uriTemplate), $onlyUrls); $normalEndpoints = array_filter($withoutParameters, function (string $endpoint) { // @noinspection PhpDuplicateMatchArmBodyInspection return match ($endpoint) { @@ -249,4 +264,8 @@ private function getFixtureFor(string $collectionEndpoint) { private function getEnvironment(): string { return static::$kernel->getContainer()->getParameter('kernel.environment'); } + + private static function isPerformanceTestDebugOutput(): bool { + return 'true' === getenv('PERFORMANCE_TEST_DEBUG_OUTPUT'); + } } diff --git a/api/tests/Api/SnapshotTests/ResponseSnapshotTest.php b/api/tests/Api/SnapshotTests/ResponseSnapshotTest.php index 84d0636807..a329fe240b 100644 --- a/api/tests/Api/SnapshotTests/ResponseSnapshotTest.php +++ b/api/tests/Api/SnapshotTests/ResponseSnapshotTest.php @@ -102,7 +102,7 @@ public static function getCollectionEndpoints() { $responseArray = $response->toArray(); $onlyUrls = array_map(fn (array $item) => $item['href'], $responseArray['_links']); - $withoutParameters = array_map(fn (string $uriTemplate) => preg_replace('/\\{[^}]*}/', '', $uriTemplate), $onlyUrls); + $withoutParameters = array_map(fn (string $uriTemplate) => preg_replace('/\{[^}]*}/', '', $uriTemplate), $onlyUrls); $normalEndpoints = array_filter($withoutParameters, function (string $endpoint) { // @noinspection PhpDuplicateMatchArmBodyInspection return match ($endpoint) { diff --git a/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testGetCollectionMatchesStructure with data set camp_collaborations__1.json b/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testGetCollectionMatchesStructure with data set camp_collaborations__1.json index cd375a7770..44110ee299 100644 --- a/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testGetCollectionMatchesStructure with data set camp_collaborations__1.json +++ b/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testGetCollectionMatchesStructure with data set camp_collaborations__1.json @@ -61,6 +61,8 @@ }, "user": "escaped_value" }, + "abbreviation": "escaped_value", + "color": "escaped_value", "id": "escaped_value", "inviteEmail": "escaped_value", "role": "escaped_value", @@ -139,6 +141,8 @@ "href": "escaped_value" } }, + "abbreviation": "escaped_value", + "color": "escaped_value", "id": "escaped_value", "inviteEmail": "escaped_value", "role": "escaped_value", @@ -217,6 +221,8 @@ "href": "escaped_value" } }, + "abbreviation": "escaped_value", + "color": "escaped_value", "id": "escaped_value", "inviteEmail": "escaped_value", "role": "escaped_value", @@ -295,6 +301,8 @@ "href": "escaped_value" } }, + "abbreviation": "escaped_value", + "color": "escaped_value", "id": "escaped_value", "inviteEmail": "escaped_value", "role": "escaped_value", @@ -373,6 +381,8 @@ "href": "escaped_value" } }, + "abbreviation": "escaped_value", + "color": "escaped_value", "id": "escaped_value", "inviteEmail": "escaped_value", "role": "escaped_value", @@ -451,6 +461,8 @@ "href": "escaped_value" } }, + "abbreviation": "escaped_value", + "color": "escaped_value", "id": "escaped_value", "inviteEmail": "escaped_value", "role": "escaped_value", @@ -529,6 +541,8 @@ "href": "escaped_value" } }, + "abbreviation": "escaped_value", + "color": "escaped_value", "id": "escaped_value", "inviteEmail": "escaped_value", "role": "escaped_value", @@ -607,6 +621,8 @@ "href": "escaped_value" } }, + "abbreviation": "escaped_value", + "color": "escaped_value", "id": "escaped_value", "inviteEmail": "escaped_value", "role": "escaped_value", @@ -685,6 +701,8 @@ "href": "escaped_value" } }, + "abbreviation": "escaped_value", + "color": "escaped_value", "id": "escaped_value", "inviteEmail": "escaped_value", "role": "escaped_value", @@ -763,6 +781,8 @@ "href": "escaped_value" } }, + "abbreviation": "escaped_value", + "color": "escaped_value", "id": "escaped_value", "inviteEmail": "escaped_value", "role": "escaped_value", @@ -841,6 +861,8 @@ "href": "escaped_value" } }, + "abbreviation": "escaped_value", + "color": "escaped_value", "id": "escaped_value", "inviteEmail": "escaped_value", "role": "escaped_value", @@ -919,6 +941,8 @@ "href": "escaped_value" } }, + "abbreviation": "escaped_value", + "color": "escaped_value", "id": "escaped_value", "inviteEmail": "escaped_value", "role": "escaped_value", diff --git a/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testGetItemMatchesStructure with data set camp_collaborations__1.json b/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testGetItemMatchesStructure with data set camp_collaborations__1.json index 2c1376f8fa..b3c5bec5b1 100644 --- a/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testGetItemMatchesStructure with data set camp_collaborations__1.json +++ b/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testGetItemMatchesStructure with data set camp_collaborations__1.json @@ -71,6 +71,8 @@ "href": "escaped_value" } }, + "abbreviation": "escaped_value", + "color": "escaped_value", "id": "escaped_value", "inviteEmail": "escaped_value", "role": "escaped_value", diff --git a/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testGetItemMatchesStructure with data set camps__1.json b/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testGetItemMatchesStructure with data set camps__1.json index 6739d732be..6eb4f736b4 100644 --- a/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testGetItemMatchesStructure with data set camps__1.json +++ b/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testGetItemMatchesStructure with data set camps__1.json @@ -14,6 +14,8 @@ }, "user": "escaped_value" }, + "abbreviation": "escaped_value", + "color": "escaped_value", "id": "escaped_value", "inviteEmail": "escaped_value", "role": "escaped_value", @@ -45,6 +47,8 @@ "href": "escaped_value" } }, + "abbreviation": "escaped_value", + "color": "escaped_value", "id": "escaped_value", "inviteEmail": "escaped_value", "role": "escaped_value", @@ -76,6 +80,8 @@ "href": "escaped_value" } }, + "abbreviation": "escaped_value", + "color": "escaped_value", "id": "escaped_value", "inviteEmail": "escaped_value", "role": "escaped_value", @@ -107,6 +113,8 @@ "href": "escaped_value" } }, + "abbreviation": "escaped_value", + "color": "escaped_value", "id": "escaped_value", "inviteEmail": "escaped_value", "role": "escaped_value", @@ -138,6 +146,8 @@ "href": "escaped_value" } }, + "abbreviation": "escaped_value", + "color": "escaped_value", "id": "escaped_value", "inviteEmail": "escaped_value", "role": "escaped_value", @@ -169,6 +179,8 @@ "href": "escaped_value" } }, + "abbreviation": "escaped_value", + "color": "escaped_value", "id": "escaped_value", "inviteEmail": "escaped_value", "role": "escaped_value", diff --git a/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testOpenApiSpecMatchesSnapshot__1.yml b/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testOpenApiSpecMatchesSnapshot__1.yml index 7ff127bad6..a68fa412dd 100644 --- a/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testOpenApiSpecMatchesSnapshot__1.yml +++ b/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testOpenApiSpecMatchesSnapshot__1.yml @@ -402,10 +402,117 @@ components: - scheduleEntries - title type: object - Activity.jsonapi-read: + Activity.jsonapi: deprecated: false description: 'A piece of programme that will be carried out once or multiple times in a camp.' properties: + activityResponsibles: + items: + $ref: '#/components/schemas/ActivityResponsible.jsonapi' + readOnly: true + type: array + contentNodes: + description: 'All the content nodes that make up the tree of programme content.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + data: + properties: + attributes: + properties: + _id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + location: + description: "The physical location where this activity's programme will be carried out." + example: Spielwiese + maxLength: 64 + type: string + title: + description: 'The title of this activity that is shown in the picasso.' + example: Sportolympiade + maxLength: 32 + type: string + required: + - location + - title + type: object + id: + type: string + relationships: + properties: + activityResponsibles: + properties: { data: { items: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object }, type: array } } + camp: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + category: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + contentNodes: + properties: { data: { items: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object }, type: array } } + progressLabel: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + rootContentNode: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + scheduleEntries: + properties: { data: { items: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object }, type: array } } + required: + - activityResponsibles + - category + - scheduleEntries + type: object + type: + type: string + required: + - id + - type + type: object + included: + description: 'Related resources requested via the "include" query parameter.' + externalDocs: + url: 'https://jsonapi.org/format/#fetching-includes' + items: + anyOf: + - [] + - + $ref: '#/components/schemas/ScheduleEntry.jsonapi' + - + $ref: '#/components/schemas/ScheduleEntry.jsonapi' + - + $ref: '#/components/schemas/ScheduleEntry.jsonapi' + - + $ref: '#/components/schemas/ScheduleEntry.jsonapi' + - + $ref: '#/components/schemas/ScheduleEntry.jsonapi' + - + $ref: '#/components/schemas/ScheduleEntry.jsonapi' + readOnly: true + type: array + scheduleEntries: + items: + $ref: '#/components/schemas/ScheduleEntry.jsonapi' + readOnly: true + type: array + type: object + Activity.jsonhal-read: + deprecated: false + description: 'A piece of programme that will be carried out once or multiple times in a camp.' + properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object activityResponsibles: description: 'The list of people that are responsible for planning or carrying out this activity.' items: @@ -455,7 +562,7 @@ components: - 'null' - string rootContentNode: - $ref: '#/components/schemas/ColumnLayout.jsonapi-read' + $ref: '#/components/schemas/ColumnLayout.jsonhal-read' description: |- The programme contents, organized as a tree of content nodes. The root content node cannot be exchanged, but all the contents attached to it can. @@ -485,13 +592,22 @@ components: - scheduleEntries - title type: object - Activity.jsonapi-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: + Activity.jsonhal-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: deprecated: false description: 'A piece of programme that will be carried out once or multiple times in a camp.' properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object activityResponsibles: items: - $ref: '#/components/schemas/ActivityResponsible.jsonapi-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' + $ref: '#/components/schemas/ActivityResponsible.jsonhal-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' readOnly: true type: array camp: @@ -530,12 +646,12 @@ components: progressLabel: anyOf: - - $ref: '#/components/schemas/ActivityProgressLabel.jsonapi-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' + $ref: '#/components/schemas/ActivityProgressLabel.jsonhal-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' - type: 'null' readOnly: true rootContentNode: - $ref: '#/components/schemas/ColumnLayout.jsonapi-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' + $ref: '#/components/schemas/ColumnLayout.jsonhal-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' description: |- The programme contents, organized as a tree of content nodes. The root content node cannot be exchanged, but all the contents attached to it can. @@ -543,7 +659,7 @@ components: readOnly: true scheduleEntries: items: - $ref: '#/components/schemas/ScheduleEntry.jsonapi-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' + $ref: '#/components/schemas/ScheduleEntry.jsonhal-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' readOnly: true type: array title: @@ -558,13 +674,22 @@ components: - scheduleEntries - title type: object - Activity.jsonapi-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + Activity.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: deprecated: false description: 'A piece of programme that will be carried out once or multiple times in a camp.' properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object activityResponsibles: items: - $ref: '#/components/schemas/ActivityResponsible.jsonapi-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + $ref: '#/components/schemas/ActivityResponsible.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' readOnly: true type: array camp: @@ -576,7 +701,7 @@ components: category: anyOf: - - $ref: '#/components/schemas/Category.jsonapi-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + $ref: '#/components/schemas/Category.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' - type: 'null' readOnly: true @@ -603,12 +728,12 @@ components: progressLabel: anyOf: - - $ref: '#/components/schemas/ActivityProgressLabel.jsonapi-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + $ref: '#/components/schemas/ActivityProgressLabel.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' - type: 'null' readOnly: true rootContentNode: - $ref: '#/components/schemas/ColumnLayout.jsonapi-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + $ref: '#/components/schemas/ColumnLayout.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' description: |- The programme contents, organized as a tree of content nodes. The root content node cannot be exchanged, but all the contents attached to it can. @@ -616,7 +741,7 @@ components: readOnly: true scheduleEntries: items: - $ref: '#/components/schemas/ScheduleEntry.jsonapi-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + $ref: '#/components/schemas/ScheduleEntry.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' readOnly: true type: array title: @@ -631,10 +756,19 @@ components: - scheduleEntries - title type: object - Activity.jsonapi-read_ScheduleEntry.Activity: + Activity.jsonhal-read_ScheduleEntry.Activity: deprecated: false description: '' properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object activityResponsibles: description: 'The list of people that are responsible for planning or carrying out this activity.' items: @@ -684,7 +818,7 @@ components: - 'null' - string rootContentNode: - $ref: '#/components/schemas/ColumnLayout.jsonapi-read_ScheduleEntry.Activity' + $ref: '#/components/schemas/ColumnLayout.jsonhal-read_ScheduleEntry.Activity' description: |- The programme contents, organized as a tree of content nodes. The root content node cannot be exchanged, but all the contents attached to it can. @@ -714,43 +848,19 @@ components: - scheduleEntries - title type: object - Activity.jsonapi-write: - deprecated: false - description: 'A piece of programme that will be carried out once or multiple times in a camp.' - properties: - category: - description: |- - The category to which this activity belongs. The category determines color and numbering scheme - of the activity, and is used for marking similar activities. Must be in the same camp as the activity. - example: /categories/1a2b3c4d - format: iri-reference - type: string - location: - description: "The physical location where this activity's programme will be carried out." - example: Spielwiese - maxLength: 64 - type: string - progressLabel: - description: 'The current assigned ProgressLabel.' - example: /progress_labels/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - title: - description: 'The title of this activity that is shown in the picasso.' - example: Sportolympiade - maxLength: 32 - type: string - required: - - category - - location - - title - type: object - Activity.jsonapi-write_create: + Activity.jsonhal-write_create: deprecated: false description: 'A piece of programme that will be carried out once or multiple times in a camp.' properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object category: description: |- The category to which this activity belongs. The category determines color and numbering scheme @@ -785,7 +895,7 @@ components: period: /periods/1a2b3c4a start: '2023-05-01T15:00:00+00:00' items: - $ref: '#/components/schemas/ScheduleEntry.jsonapi-write_create' + $ref: '#/components/schemas/ScheduleEntry.jsonhal-write_create' minItems: 1 type: array title: @@ -799,19 +909,33 @@ components: - scheduleEntries - title type: object - Activity.jsonhal-read: + Activity.jsonld-read: deprecated: false description: 'A piece of programme that will be carried out once or multiple times in a camp.' properties: - _links: - properties: - self: + '@context': + oneOf: + - + additionalProperties: true properties: - href: - format: iri-reference + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] type: string + required: + - '@vocab' + - hydra type: object - type: object + - + type: string + readOnly: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string activityResponsibles: description: 'The list of people that are responsible for planning or carrying out this activity.' items: @@ -861,7 +985,7 @@ components: - 'null' - string rootContentNode: - $ref: '#/components/schemas/ColumnLayout.jsonhal-read' + $ref: '#/components/schemas/ColumnLayout.jsonld-read' description: |- The programme contents, organized as a tree of content nodes. The root content node cannot be exchanged, but all the contents attached to it can. @@ -891,22 +1015,19 @@ components: - scheduleEntries - title type: object - Activity.jsonhal-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: + Activity.jsonld-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: deprecated: false description: 'A piece of programme that will be carried out once or multiple times in a camp.' properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string activityResponsibles: items: - $ref: '#/components/schemas/ActivityResponsible.jsonhal-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' + $ref: '#/components/schemas/ActivityResponsible.jsonld-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' readOnly: true type: array camp: @@ -945,12 +1066,12 @@ components: progressLabel: anyOf: - - $ref: '#/components/schemas/ActivityProgressLabel.jsonhal-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' + $ref: '#/components/schemas/ActivityProgressLabel.jsonld-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' - type: 'null' readOnly: true rootContentNode: - $ref: '#/components/schemas/ColumnLayout.jsonhal-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' + $ref: '#/components/schemas/ColumnLayout.jsonld-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' description: |- The programme contents, organized as a tree of content nodes. The root content node cannot be exchanged, but all the contents attached to it can. @@ -958,7 +1079,7 @@ components: readOnly: true scheduleEntries: items: - $ref: '#/components/schemas/ScheduleEntry.jsonhal-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' + $ref: '#/components/schemas/ScheduleEntry.jsonld-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' readOnly: true type: array title: @@ -973,22 +1094,36 @@ components: - scheduleEntries - title type: object - Activity.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + Activity.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: deprecated: false description: 'A piece of programme that will be carried out once or multiple times in a camp.' properties: - _links: - properties: - self: + '@context': + oneOf: + - + additionalProperties: true properties: - href: - format: iri-reference + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] type: string + required: + - '@vocab' + - hydra type: object - type: object + - + type: string + readOnly: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string activityResponsibles: items: - $ref: '#/components/schemas/ActivityResponsible.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + $ref: '#/components/schemas/ActivityResponsible.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' readOnly: true type: array camp: @@ -1000,7 +1135,7 @@ components: category: anyOf: - - $ref: '#/components/schemas/Category.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + $ref: '#/components/schemas/Category.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' - type: 'null' readOnly: true @@ -1027,12 +1162,12 @@ components: progressLabel: anyOf: - - $ref: '#/components/schemas/ActivityProgressLabel.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + $ref: '#/components/schemas/ActivityProgressLabel.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' - type: 'null' readOnly: true rootContentNode: - $ref: '#/components/schemas/ColumnLayout.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + $ref: '#/components/schemas/ColumnLayout.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' description: |- The programme contents, organized as a tree of content nodes. The root content node cannot be exchanged, but all the contents attached to it can. @@ -1040,7 +1175,7 @@ components: readOnly: true scheduleEntries: items: - $ref: '#/components/schemas/ScheduleEntry.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + $ref: '#/components/schemas/ScheduleEntry.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' readOnly: true type: array title: @@ -1055,24 +1190,38 @@ components: - scheduleEntries - title type: object - Activity.jsonhal-read_ScheduleEntry.Activity: + Activity.jsonld-read_ScheduleEntry.Activity: deprecated: false description: '' properties: - _links: - properties: - self: + '@context': + oneOf: + - + additionalProperties: true properties: - href: - format: iri-reference + '@vocab': type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra type: object - type: object - activityResponsibles: - description: 'The list of people that are responsible for planning or carrying out this activity.' - items: - example: 'https://example.com/' - format: iri-reference + - + type: string + readOnly: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + activityResponsibles: + description: 'The list of people that are responsible for planning or carrying out this activity.' + items: + example: 'https://example.com/' + format: iri-reference type: string readOnly: true type: array @@ -1117,7 +1266,7 @@ components: - 'null' - string rootContentNode: - $ref: '#/components/schemas/ColumnLayout.jsonhal-read_ScheduleEntry.Activity' + $ref: '#/components/schemas/ColumnLayout.jsonld-read_ScheduleEntry.Activity' description: |- The programme contents, organized as a tree of content nodes. The root content node cannot be exchanged, but all the contents attached to it can. @@ -1147,19 +1296,10 @@ components: - scheduleEntries - title type: object - Activity.jsonhal-write_create: + Activity.jsonld-write_create: deprecated: false description: 'A piece of programme that will be carried out once or multiple times in a camp.' properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object category: description: |- The category to which this activity belongs. The category determines color and numbering scheme @@ -1194,7 +1334,7 @@ components: period: /periods/1a2b3c4a start: '2023-05-01T15:00:00+00:00' items: - $ref: '#/components/schemas/ScheduleEntry.jsonhal-write_create' + $ref: '#/components/schemas/ScheduleEntry.jsonld-write_create' minItems: 1 type: array title: @@ -1208,451 +1348,203 @@ components: - scheduleEntries - title type: object - Activity.jsonld-read: + ActivityProgressLabel-read: deprecated: false - description: 'A piece of programme that will be carried out once or multiple times in a camp.' + description: |- + Progress labels in a camp. + To each activity one label can be assigned. properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - activityResponsibles: - description: 'The list of people that are responsible for planning or carrying out this activity.' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array camp: - description: 'The camp to which this activity belongs.' + description: 'The camp to which this label belongs.' example: /camps/1a2b3c4d format: iri-reference - readOnly: true - type: string - category: - description: |- - The category to which this activity belongs. The category determines color and numbering scheme - of the activity, and is used for marking similar activities. Must be in the same camp as the activity. - example: /categories/1a2b3c4d - format: iri-reference type: string - contentNodes: - description: 'All the content nodes that make up the tree of programme content.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - location: - description: "The physical location where this activity's programme will be carried out." - example: Spielwiese - maxLength: 64 - type: string - progressLabel: - description: 'The current assigned ProgressLabel.' - example: /progress_labels/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - rootContentNode: - $ref: '#/components/schemas/ColumnLayout.jsonld-read' - description: |- - The programme contents, organized as a tree of content nodes. The root content node cannot be - exchanged, but all the contents attached to it can. - example: /content_nodes/1a2b3c4d - readOnly: true - scheduleEntries: - description: "The list of points in time when this activity's programme will be carried out." - example: - - - end: '2023-05-01T16:00:00+00:00' - period: /periods/1a2b3c4a - start: '2023-05-01T15:00:00+00:00' - items: - example: 'https://example.com/' - format: iri-reference - type: string - type: array + position: + default: -1 + example: -1 + type: integer title: - description: 'The title of this activity that is shown in the picasso.' - example: Sportolympiade + example: Planned maxLength: 32 type: string required: - - activityResponsibles - - category - - location - - scheduleEntries + - camp + - position - title type: object - Activity.jsonld-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: + ActivityProgressLabel-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: deprecated: false - description: 'A piece of programme that will be carried out once or multiple times in a camp.' + description: '' properties: - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - activityResponsibles: - items: - $ref: '#/components/schemas/ActivityResponsible.jsonld-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' - readOnly: true - type: array camp: - description: 'The camp to which this activity belongs.' + description: 'The camp to which this label belongs.' example: /camps/1a2b3c4d format: iri-reference - readOnly: true - type: string - category: - description: |- - The category to which this activity belongs. The category determines color and numbering scheme - of the activity, and is used for marking similar activities. Must be in the same camp as the activity. - example: /categories/1a2b3c4d - format: iri-reference type: string - contentNodes: - description: 'All the content nodes that make up the tree of programme content.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - location: - description: "The physical location where this activity's programme will be carried out." - example: Spielwiese - maxLength: 64 - type: string - progressLabel: - anyOf: - - - $ref: '#/components/schemas/ActivityProgressLabel.jsonld-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' - - - type: 'null' - readOnly: true - rootContentNode: - $ref: '#/components/schemas/ColumnLayout.jsonld-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' - description: |- - The programme contents, organized as a tree of content nodes. The root content node cannot be - exchanged, but all the contents attached to it can. - example: /content_nodes/1a2b3c4d - readOnly: true - scheduleEntries: - items: - $ref: '#/components/schemas/ScheduleEntry.jsonld-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' - readOnly: true - type: array + position: + default: -1 + example: -1 + type: integer title: - description: 'The title of this activity that is shown in the picasso.' - example: Sportolympiade + example: Planned maxLength: 32 type: string required: - - activityResponsibles - - category - - location - - scheduleEntries + - camp + - position - title type: object - Activity.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + ActivityProgressLabel-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: deprecated: false - description: 'A piece of programme that will be carried out once or multiple times in a camp.' + description: '' properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - activityResponsibles: - items: - $ref: '#/components/schemas/ActivityResponsible.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' - readOnly: true - type: array camp: - description: 'The camp to which this activity belongs.' + description: 'The camp to which this label belongs.' example: /camps/1a2b3c4d format: iri-reference - readOnly: true type: string - category: - anyOf: - - - $ref: '#/components/schemas/Category.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' - - - type: 'null' - readOnly: true - contentNodes: - description: 'All the content nodes that make up the tree of programme content.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - location: - description: "The physical location where this activity's programme will be carried out." - example: Spielwiese - maxLength: 64 - type: string - progressLabel: - anyOf: - - - $ref: '#/components/schemas/ActivityProgressLabel.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' - - - type: 'null' - readOnly: true - rootContentNode: - $ref: '#/components/schemas/ColumnLayout.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' - description: |- - The programme contents, organized as a tree of content nodes. The root content node cannot be - exchanged, but all the contents attached to it can. - example: /content_nodes/1a2b3c4d - readOnly: true - scheduleEntries: - items: - $ref: '#/components/schemas/ScheduleEntry.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' - readOnly: true - type: array + position: + default: -1 + example: -1 + type: integer title: - description: 'The title of this activity that is shown in the picasso.' - example: Sportolympiade + example: Planned maxLength: 32 type: string required: - - activityResponsibles - - category - - location - - scheduleEntries + - camp + - position - title type: object - Activity.jsonld-read_ScheduleEntry.Activity: + ActivityProgressLabel-write: deprecated: false - description: '' + description: |- + Progress labels in a camp. + To each activity one label can be assigned. properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - activityResponsibles: - description: 'The list of people that are responsible for planning or carrying out this activity.' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - camp: - description: 'The camp to which this activity belongs.' - example: /camps/1a2b3c4d - format: iri-reference - readOnly: true - type: string - category: - description: |- - The category to which this activity belongs. The category determines color and numbering scheme - of the activity, and is used for marking similar activities. Must be in the same camp as the activity. - example: /categories/1a2b3c4d - format: iri-reference - type: string - contentNodes: - description: 'All the content nodes that make up the tree of programme content.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - location: - description: "The physical location where this activity's programme will be carried out." - example: Spielwiese - maxLength: 64 - type: string - progressLabel: - description: 'The current assigned ProgressLabel.' - example: /progress_labels/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - rootContentNode: - $ref: '#/components/schemas/ColumnLayout.jsonld-read_ScheduleEntry.Activity' - description: |- - The programme contents, organized as a tree of content nodes. The root content node cannot be - exchanged, but all the contents attached to it can. - example: /content_nodes/1a2b3c4d - readOnly: true - scheduleEntries: - description: "The list of points in time when this activity's programme will be carried out." - example: - - - end: '2023-05-01T16:00:00+00:00' - period: /periods/1a2b3c4a - start: '2023-05-01T15:00:00+00:00' - items: - example: 'https://example.com/' - format: iri-reference - type: string - type: array + position: + default: -1 + example: -1 + type: integer title: - description: 'The title of this activity that is shown in the picasso.' - example: Sportolympiade + example: Planned maxLength: 32 type: string required: - - activityResponsibles - - category - - location - - scheduleEntries + - position - title type: object - Activity.jsonld-write_create: + ActivityProgressLabel-write_create: deprecated: false - description: 'A piece of programme that will be carried out once or multiple times in a camp.' + description: |- + Progress labels in a camp. + To each activity one label can be assigned. properties: - category: - description: |- - The category to which this activity belongs. The category determines color and numbering scheme - of the activity, and is used for marking similar activities. Must be in the same camp as the activity. - example: /categories/1a2b3c4d - format: iri-reference - type: string - copyActivitySource: - description: 'Copy contents from this source activity.' - example: /activities/1a2b3c4d + camp: + description: 'The camp to which this label belongs.' + example: /camps/1a2b3c4d format: iri-reference - type: - - 'null' - - string - location: - description: "The physical location where this activity's programme will be carried out." - example: Spielwiese - maxLength: 64 type: string - progressLabel: - description: 'The current assigned ProgressLabel.' - example: /progress_labels/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - scheduleEntries: - description: "The list of points in time when this activity's programme will be carried out." - example: - - - end: '2023-05-01T16:00:00+00:00' - period: /periods/1a2b3c4a - start: '2023-05-01T15:00:00+00:00' - items: - $ref: '#/components/schemas/ScheduleEntry.jsonld-write_create' - minItems: 1 - type: array + position: + default: -1 + example: -1 + type: integer title: - description: 'The title of this activity that is shown in the picasso.' - example: Sportolympiade + example: Planned maxLength: 32 type: string required: - - category - - location - - scheduleEntries + - camp + - position - title type: object - ActivityProgressLabel-read: + ActivityProgressLabel.jsonapi: + deprecated: false + description: |- + Progress labels in a camp. + To each activity one label can be assigned. + properties: + data: + properties: + attributes: + properties: + _id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + position: + default: -1 + example: -1 + type: integer + title: + example: Planned + maxLength: 32 + type: string + required: + - position + - title + type: object + id: + type: string + relationships: + properties: + camp: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + required: + - camp + type: object + type: + type: string + required: + - id + - type + type: object + included: + description: 'Related resources requested via the "include" query parameter.' + externalDocs: + url: 'https://jsonapi.org/format/#fetching-includes' + items: + anyOf: + - + $ref: '#/components/schemas/Camp.jsonapi' + readOnly: true + type: array + type: object + ActivityProgressLabel.jsonhal-read: deprecated: false description: |- Progress labels in a camp. To each activity one label can be assigned. properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object camp: description: 'The camp to which this label belongs.' example: /camps/1a2b3c4d @@ -1677,10 +1569,19 @@ components: - position - title type: object - ActivityProgressLabel-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: + ActivityProgressLabel.jsonhal-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: deprecated: false description: '' properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object camp: description: 'The camp to which this label belongs.' example: /camps/1a2b3c4d @@ -1705,10 +1606,19 @@ components: - position - title type: object - ActivityProgressLabel-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + ActivityProgressLabel.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: deprecated: false description: '' properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object camp: description: 'The camp to which this label belongs.' example: /camps/1a2b3c4d @@ -1733,30 +1643,21 @@ components: - position - title type: object - ActivityProgressLabel-write: - deprecated: false - description: |- - Progress labels in a camp. - To each activity one label can be assigned. - properties: - position: - default: -1 - example: -1 - type: integer - title: - example: Planned - maxLength: 32 - type: string - required: - - position - - title - type: object - ActivityProgressLabel-write_create: + ActivityProgressLabel.jsonhal-write_create: deprecated: false description: |- Progress labels in a camp. To each activity one label can be assigned. properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object camp: description: 'The camp to which this label belongs.' example: /camps/1a2b3c4d @@ -1775,12 +1676,35 @@ components: - position - title type: object - ActivityProgressLabel.jsonapi-read: + ActivityProgressLabel.jsonld-read: deprecated: false description: |- Progress labels in a camp. To each activity one label can be assigned. properties: + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string + readOnly: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string camp: description: 'The camp to which this label belongs.' example: /camps/1a2b3c4d @@ -1805,10 +1729,33 @@ components: - position - title type: object - ActivityProgressLabel.jsonapi-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: + ActivityProgressLabel.jsonld-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: deprecated: false description: '' properties: + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string + readOnly: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string camp: description: 'The camp to which this label belongs.' example: /camps/1a2b3c4d @@ -1833,10 +1780,33 @@ components: - position - title type: object - ActivityProgressLabel.jsonapi-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + ActivityProgressLabel.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: deprecated: false description: '' properties: + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string + readOnly: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string camp: description: 'The camp to which this label belongs.' example: /camps/1a2b3c4d @@ -1861,25 +1831,7 @@ components: - position - title type: object - ActivityProgressLabel.jsonapi-write: - deprecated: false - description: |- - Progress labels in a camp. - To each activity one label can be assigned. - properties: - position: - default: -1 - example: -1 - type: integer - title: - example: Planned - maxLength: 32 - type: string - required: - - position - - title - type: object - ActivityProgressLabel.jsonapi-write_create: + ActivityProgressLabel.jsonld-write_create: deprecated: false description: |- Progress labels in a camp. @@ -1903,24 +1855,18 @@ components: - position - title type: object - ActivityProgressLabel.jsonhal-read: + ActivityResponsible-read: deprecated: false - description: |- - Progress labels in a camp. - To each activity one label can be assigned. + description: 'A person that is responsible for planning or carrying out an activity.' properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - camp: - description: 'The camp to which this label belongs.' - example: /camps/1a2b3c4d + activity: + description: 'The activity that the person is responsible for.' + example: /activities/1a2b3c4d + format: iri-reference + type: string + campCollaboration: + description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' + example: /camp_collaborations/1a2b3c4d format: iri-reference type: string id: @@ -1929,35 +1875,22 @@ components: maxLength: 16 readOnly: true type: string - position: - default: -1 - example: -1 - type: integer - title: - example: Planned - maxLength: 32 - type: string required: - - camp - - position - - title + - activity + - campCollaboration type: object - ActivityProgressLabel.jsonhal-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: + ActivityResponsible-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: deprecated: false description: '' properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - camp: - description: 'The camp to which this label belongs.' - example: /camps/1a2b3c4d + activity: + description: 'The activity that the person is responsible for.' + example: /activities/1a2b3c4d + format: iri-reference + type: string + campCollaboration: + description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' + example: /camp_collaborations/1a2b3c4d format: iri-reference type: string id: @@ -1966,35 +1899,22 @@ components: maxLength: 16 readOnly: true type: string - position: - default: -1 - example: -1 - type: integer - title: - example: Planned - maxLength: 32 - type: string required: - - camp - - position - - title + - activity + - campCollaboration type: object - ActivityProgressLabel.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + ActivityResponsible-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: deprecated: false description: '' properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - camp: - description: 'The camp to which this label belongs.' - example: /camps/1a2b3c4d + activity: + description: 'The activity that the person is responsible for.' + example: /activities/1a2b3c4d + format: iri-reference + type: string + campCollaboration: + description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' + example: /camp_collaborations/1a2b3c4d format: iri-reference type: string id: @@ -2003,57 +1923,203 @@ components: maxLength: 16 readOnly: true type: string - position: - default: -1 - example: -1 - type: integer - title: - example: Planned - maxLength: 32 + required: + - activity + - campCollaboration + type: object + ActivityResponsible-write: + deprecated: false + description: 'A person that is responsible for planning or carrying out an activity.' + properties: + activity: + description: 'The activity that the person is responsible for.' + example: /activities/1a2b3c4d + format: iri-reference + type: string + campCollaboration: + description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' + example: /camp_collaborations/1a2b3c4d + format: iri-reference type: string required: - - camp - - position - - title + - activity + - campCollaboration type: object - ActivityProgressLabel.jsonhal-write_create: + ActivityResponsible.jsonapi: deprecated: false - description: |- - Progress labels in a camp. - To each activity one label can be assigned. + description: 'A person that is responsible for planning or carrying out an activity.' properties: - _links: + data: properties: - self: + attributes: properties: - href: - format: iri-reference + _id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true type: string type: object + id: + type: string + relationships: + properties: + activity: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + campCollaboration: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + required: + - activity + - campCollaboration + type: object + type: + type: string + required: + - id + - type type: object - camp: - description: 'The camp to which this label belongs.' - example: /camps/1a2b3c4d + included: + description: 'Related resources requested via the "include" query parameter.' + externalDocs: + url: 'https://jsonapi.org/format/#fetching-includes' + items: + anyOf: + - + $ref: '#/components/schemas/Activity.jsonapi' + - + $ref: '#/components/schemas/Activity.jsonapi' + readOnly: true + type: array + type: object + ActivityResponsible.jsonhal-read: + deprecated: false + description: 'A person that is responsible for planning or carrying out an activity.' + properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + activity: + description: 'The activity that the person is responsible for.' + example: /activities/1a2b3c4d format: iri-reference type: string - position: - default: -1 - example: -1 - type: integer - title: - example: Planned - maxLength: 32 + campCollaboration: + description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' + example: /camp_collaborations/1a2b3c4d + format: iri-reference + type: string + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true type: string required: - - camp - - position - - title + - activity + - campCollaboration type: object - ActivityProgressLabel.jsonld-read: + ActivityResponsible.jsonhal-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: deprecated: false - description: |- - Progress labels in a camp. - To each activity one label can be assigned. + description: '' + properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + activity: + description: 'The activity that the person is responsible for.' + example: /activities/1a2b3c4d + format: iri-reference + type: string + campCollaboration: + description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' + example: /camp_collaborations/1a2b3c4d + format: iri-reference + type: string + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + required: + - activity + - campCollaboration + type: object + ActivityResponsible.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + deprecated: false + description: '' + properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + activity: + description: 'The activity that the person is responsible for.' + example: /activities/1a2b3c4d + format: iri-reference + type: string + campCollaboration: + description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' + example: /camp_collaborations/1a2b3c4d + format: iri-reference + type: string + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + required: + - activity + - campCollaboration + type: object + ActivityResponsible.jsonhal-write: + deprecated: false + description: 'A person that is responsible for planning or carrying out an activity.' + properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + activity: + description: 'The activity that the person is responsible for.' + example: /activities/1a2b3c4d + format: iri-reference + type: string + campCollaboration: + description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' + example: /camp_collaborations/1a2b3c4d + format: iri-reference + type: string + required: + - activity + - campCollaboration + type: object + ActivityResponsible.jsonld-read: + deprecated: false + description: 'A person that is responsible for planning or carrying out an activity.' properties: '@context': oneOf: @@ -2078,9 +2144,14 @@ components: '@type': readOnly: true type: string - camp: - description: 'The camp to which this label belongs.' - example: /camps/1a2b3c4d + activity: + description: 'The activity that the person is responsible for.' + example: /activities/1a2b3c4d + format: iri-reference + type: string + campCollaboration: + description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' + example: /camp_collaborations/1a2b3c4d format: iri-reference type: string id: @@ -2089,20 +2160,11 @@ components: maxLength: 16 readOnly: true type: string - position: - default: -1 - example: -1 - type: integer - title: - example: Planned - maxLength: 32 - type: string required: - - camp - - position - - title + - activity + - campCollaboration type: object - ActivityProgressLabel.jsonld-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: + ActivityResponsible.jsonld-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: deprecated: false description: '' properties: @@ -2129,9 +2191,14 @@ components: '@type': readOnly: true type: string - camp: - description: 'The camp to which this label belongs.' - example: /camps/1a2b3c4d + activity: + description: 'The activity that the person is responsible for.' + example: /activities/1a2b3c4d + format: iri-reference + type: string + campCollaboration: + description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' + example: /camp_collaborations/1a2b3c4d format: iri-reference type: string id: @@ -2140,20 +2207,11 @@ components: maxLength: 16 readOnly: true type: string - position: - default: -1 - example: -1 - type: integer - title: - example: Planned - maxLength: 32 - type: string required: - - camp - - position - - title + - activity + - campCollaboration type: object - ActivityProgressLabel.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + ActivityResponsible.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: deprecated: false description: '' properties: @@ -2180,58 +2238,6 @@ components: '@type': readOnly: true type: string - camp: - description: 'The camp to which this label belongs.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - position: - default: -1 - example: -1 - type: integer - title: - example: Planned - maxLength: 32 - type: string - required: - - camp - - position - - title - type: object - ActivityProgressLabel.jsonld-write_create: - deprecated: false - description: |- - Progress labels in a camp. - To each activity one label can be assigned. - properties: - camp: - description: 'The camp to which this label belongs.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - position: - default: -1 - example: -1 - type: integer - title: - example: Planned - maxLength: 32 - type: string - required: - - camp - - position - - title - type: object - ActivityResponsible-read: - deprecated: false - description: 'A person that is responsible for planning or carrying out an activity.' - properties: activity: description: 'The activity that the person is responsible for.' example: /activities/1a2b3c4d @@ -2252,9 +2258,9 @@ components: - activity - campCollaboration type: object - ActivityResponsible-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: + ActivityResponsible.jsonld-write: deprecated: false - description: '' + description: 'A person that is responsible for planning or carrying out an activity.' properties: activity: description: 'The activity that the person is responsible for.' @@ -2266,71 +2272,95 @@ components: example: /camp_collaborations/1a2b3c4d format: iri-reference type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string required: - activity - campCollaboration type: object - ActivityResponsible-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + Camp-read: deprecated: false - description: '' + description: |- + The main entity that eCamp is designed to manage. Contains programme which may be + distributed across multiple time periods. properties: - activity: - description: 'The activity that the person is responsible for.' - example: /activities/1a2b3c4d - format: iri-reference - type: string - campCollaboration: - description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' - example: /camp_collaborations/1a2b3c4d - format: iri-reference - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 + activities: + description: |- + All the programme that will be carried out during the camp. An activity may be carried out + multiple times in the same camp. + example: '/activities?camp=%2Fcamps%2F1a2b3c4d' + items: + example: 'https://example.com/' + format: iri-reference + type: string readOnly: true - type: string - required: - - activity - - campCollaboration - type: object - ActivityResponsible-write: - deprecated: false - description: 'A person that is responsible for planning or carrying out an activity.' - properties: - activity: - description: 'The activity that the person is responsible for.' - example: /activities/1a2b3c4d - format: iri-reference - type: string - campCollaboration: - description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' - example: /camp_collaborations/1a2b3c4d - format: iri-reference - type: string - required: - - activity - - campCollaboration - type: object - ActivityResponsible.jsonapi-read: - deprecated: false - description: 'A person that is responsible for planning or carrying out an activity.' - properties: - activity: - description: 'The activity that the person is responsible for.' - example: /activities/1a2b3c4d + type: array + addressCity: + description: 'The name of the town where the camp will take place.' + example: Hintertüpfingen + maxLength: 128 + type: + - 'null' + - string + addressName: + description: 'A textual description of the location of the camp.' + example: 'Wiese hinter der alten Mühle' + maxLength: 128 + type: + - 'null' + - string + addressStreet: + description: 'The street name and number (if any) of the location of the camp.' + example: 'Schönriedweg 23' + maxLength: 128 + type: + - 'null' + - string + addressZipcode: + description: 'The zipcode of the location of the camp.' + example: '1234' + maxLength: 128 + type: + - 'null' + - string + campCollaborations: + items: + example: 'https://example.com/' + format: iri-reference + type: string + type: array + categories: + description: 'Types of programme, such as sports activities or meal times.' + example: '"/camp/1a2b3c4d/categories"' format: iri-reference + readOnly: true type: string - campCollaboration: - description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' - example: /camp_collaborations/1a2b3c4d + coachName: + description: 'The name of the Y+S coach who is in charge of the camp.' + example: 'Albert Anderegg' + maxLength: 64 + type: + - 'null' + - string + courseKind: + description: 'The official name for the type of this course.' + example: 'PBS AG 123-23' + maxLength: 64 + type: + - 'null' + - string + courseNumber: + description: 'The official course number, identifying this course.' + example: 'PBS AG 123-23' + maxLength: 64 + type: + - 'null' + - string + creator: + description: |- + The person that created the camp. This value never changes, even when the person + leaves the camp. + example: 'https://example.com/' format: iri-reference + readOnly: true type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' @@ -2338,98 +2368,192 @@ components: maxLength: 16 readOnly: true type: string - required: - - activity - - campCollaboration - type: object - ActivityResponsible.jsonapi-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: - deprecated: false - description: '' - properties: - activity: - description: 'The activity that the person is responsible for.' - example: /activities/1a2b3c4d - format: iri-reference - type: string - campCollaboration: - description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' - example: /camp_collaborations/1a2b3c4d - format: iri-reference + isPrototype: + description: 'Whether this camp may serve as a template for creating other camps.' + example: true + readOnly: true + type: boolean + kind: + description: 'Rough categorization of the camp (house, tent, traveling, summer, autumn).' + example: Zeltlager + maxLength: 64 + type: + - 'null' + - string + materialLists: + description: |- + Lists for collecting the required materials needed for carrying out the programme. Each collaborator + has a material list, and there may be more, such as shopping lists. + example: '["/material_lists/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + motto: + description: "The thematic topic (if any) of the camp's programme and storyline." + example: Piraten + maxLength: 128 + type: + - 'null' + - string + name: + description: 'A short name for the camp.' + example: 'SoLa 2022' + maxLength: 32 type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 + organizer: + description: 'The name of the organization which plans and carries out the camp.' + example: 'Pfadi Luftig' + maxLength: 64 + type: + - 'null' + - string + periods: + description: 'The time periods of the camp, there must be at least one. Periods in a camp may not overlap.' + example: + - + description: Hauptlager + end: '2022-01-08' + start: '2022-01-01' + items: + example: 'https://example.com/' + format: iri-reference + type: string + type: array + printYSLogoOnPicasso: + description: 'Whether the Y+S logo should be printed on the picasso of this camp.' + example: true + type: boolean + profiles: + description: 'All profiles of the users collaborating in this camp.' + example: '/profiles?user.collaborations.camp=%2Fcamps%2F1a2b3c4d' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + progressLabels: + description: 'All the progress labels within this camp.' + example: '["/progress_labels/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string readOnly: true + type: array + title: + description: 'The full title of the camp.' + example: 'Abteilungs-Sommerlager 2022' + maxLength: 32 type: string + trainingAdvisorName: + description: 'The name of the training advisor who is in charge of the course.' + example: 'Albert Anderegg' + maxLength: 64 + type: + - 'null' + - string required: - - activity - - campCollaboration + - activities + - campCollaborations + - categories + - materialLists + - name + - periods + - printYSLogoOnPicasso + - progressLabels + - title type: object - ActivityResponsible.jsonapi-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + Camp-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: deprecated: false - description: '' + description: |- + The main entity that eCamp is designed to manage. Contains programme which may be + distributed across multiple time periods. properties: - activity: - description: 'The activity that the person is responsible for.' - example: /activities/1a2b3c4d - format: iri-reference - type: string - campCollaboration: - description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' - example: /camp_collaborations/1a2b3c4d - format: iri-reference - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 + activities: + description: |- + All the programme that will be carried out during the camp. An activity may be carried out + multiple times in the same camp. + example: '/activities?camp=%2Fcamps%2F1a2b3c4d' + items: + example: 'https://example.com/' + format: iri-reference + type: string readOnly: true - type: string - required: - - activity - - campCollaboration - type: object - ActivityResponsible.jsonapi-write: - deprecated: false - description: 'A person that is responsible for planning or carrying out an activity.' - properties: - activity: - description: 'The activity that the person is responsible for.' - example: /activities/1a2b3c4d - format: iri-reference - type: string - campCollaboration: - description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' - example: /camp_collaborations/1a2b3c4d - format: iri-reference - type: string - required: - - activity - - campCollaboration - type: object - ActivityResponsible.jsonhal-read: - deprecated: false - description: 'A person that is responsible for planning or carrying out an activity.' - properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - activity: - description: 'The activity that the person is responsible for.' - example: /activities/1a2b3c4d + type: array + addressCity: + description: 'The name of the town where the camp will take place.' + example: Hintertüpfingen + maxLength: 128 + type: + - 'null' + - string + addressName: + description: 'A textual description of the location of the camp.' + example: 'Wiese hinter der alten Mühle' + maxLength: 128 + type: + - 'null' + - string + addressStreet: + description: 'The street name and number (if any) of the location of the camp.' + example: 'Schönriedweg 23' + maxLength: 128 + type: + - 'null' + - string + addressZipcode: + description: 'The zipcode of the location of the camp.' + example: '1234' + maxLength: 128 + type: + - 'null' + - string + campCollaborations: + description: |- + The people working on planning and carrying out the camp. Only collaborators have access + to the camp's contents. + items: + $ref: '#/components/schemas/CampCollaboration-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + readOnly: true + type: array + categories: + description: 'Types of programme, such as sports activities or meal times.' + example: '"/camp/1a2b3c4d/categories"' format: iri-reference + readOnly: true type: string - campCollaboration: - description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' - example: /camp_collaborations/1a2b3c4d + coachName: + description: 'The name of the Y+S coach who is in charge of the camp.' + example: 'Albert Anderegg' + maxLength: 64 + type: + - 'null' + - string + courseKind: + description: 'The official name for the type of this course.' + example: 'PBS AG 123-23' + maxLength: 64 + type: + - 'null' + - string + courseNumber: + description: 'The official course number, identifying this course.' + example: 'PBS AG 123-23' + maxLength: 64 + type: + - 'null' + - string + creator: + description: |- + The person that created the camp. This value never changes, even when the person + leaves the camp. + example: 'https://example.com/' format: iri-reference + readOnly: true type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' @@ -2437,267 +2561,101 @@ components: maxLength: 16 readOnly: true type: string - required: - - activity - - campCollaboration - type: object - ActivityResponsible.jsonhal-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: - deprecated: false - description: '' - properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - activity: - description: 'The activity that the person is responsible for.' - example: /activities/1a2b3c4d - format: iri-reference - type: string - campCollaboration: - description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' - example: /camp_collaborations/1a2b3c4d - format: iri-reference + isPrototype: + description: 'Whether this camp may serve as a template for creating other camps.' + example: true + readOnly: true + type: boolean + kind: + description: 'Rough categorization of the camp (house, tent, traveling, summer, autumn).' + example: Zeltlager + maxLength: 64 + type: + - 'null' + - string + materialLists: + description: |- + Lists for collecting the required materials needed for carrying out the programme. Each collaborator + has a material list, and there may be more, such as shopping lists. + example: '["/material_lists/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + motto: + description: "The thematic topic (if any) of the camp's programme and storyline." + example: Piraten + maxLength: 128 + type: + - 'null' + - string + name: + description: 'A short name for the camp.' + example: 'SoLa 2022' + maxLength: 32 type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 + organizer: + description: 'The name of the organization which plans and carries out the camp.' + example: 'Pfadi Luftig' + maxLength: 64 + type: + - 'null' + - string + periods: + items: + $ref: '#/components/schemas/Period-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + readOnly: true + type: array + printYSLogoOnPicasso: + description: 'Whether the Y+S logo should be printed on the picasso of this camp.' + example: true + type: boolean + profiles: + description: 'All profiles of the users collaborating in this camp.' + example: '/profiles?user.collaborations.camp=%2Fcamps%2F1a2b3c4d' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + progressLabels: + description: 'All the progress labels within this camp.' + example: '["/progress_labels/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string readOnly: true + type: array + title: + description: 'The full title of the camp.' + example: 'Abteilungs-Sommerlager 2022' + maxLength: 32 type: string + trainingAdvisorName: + description: 'The name of the training advisor who is in charge of the course.' + example: 'Albert Anderegg' + maxLength: 64 + type: + - 'null' + - string required: - - activity - - campCollaboration + - activities + - campCollaborations + - categories + - materialLists + - name + - periods + - printYSLogoOnPicasso + - progressLabels + - title type: object - ActivityResponsible.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + Camp-read_CampCollaboration.Camp_CampCollaboration.User: deprecated: false description: '' - properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - activity: - description: 'The activity that the person is responsible for.' - example: /activities/1a2b3c4d - format: iri-reference - type: string - campCollaboration: - description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' - example: /camp_collaborations/1a2b3c4d - format: iri-reference - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - required: - - activity - - campCollaboration - type: object - ActivityResponsible.jsonhal-write: - deprecated: false - description: 'A person that is responsible for planning or carrying out an activity.' - properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - activity: - description: 'The activity that the person is responsible for.' - example: /activities/1a2b3c4d - format: iri-reference - type: string - campCollaboration: - description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' - example: /camp_collaborations/1a2b3c4d - format: iri-reference - type: string - required: - - activity - - campCollaboration - type: object - ActivityResponsible.jsonld-read: - deprecated: false - description: 'A person that is responsible for planning or carrying out an activity.' - properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - activity: - description: 'The activity that the person is responsible for.' - example: /activities/1a2b3c4d - format: iri-reference - type: string - campCollaboration: - description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' - example: /camp_collaborations/1a2b3c4d - format: iri-reference - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - required: - - activity - - campCollaboration - type: object - ActivityResponsible.jsonld-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: - deprecated: false - description: '' - properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - activity: - description: 'The activity that the person is responsible for.' - example: /activities/1a2b3c4d - format: iri-reference - type: string - campCollaboration: - description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' - example: /camp_collaborations/1a2b3c4d - format: iri-reference - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - required: - - activity - - campCollaboration - type: object - ActivityResponsible.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: - deprecated: false - description: '' - properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - activity: - description: 'The activity that the person is responsible for.' - example: /activities/1a2b3c4d - format: iri-reference - type: string - campCollaboration: - description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' - example: /camp_collaborations/1a2b3c4d - format: iri-reference - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - required: - - activity - - campCollaboration - type: object - ActivityResponsible.jsonld-write: - deprecated: false - description: 'A person that is responsible for planning or carrying out an activity.' - properties: - activity: - description: 'The activity that the person is responsible for.' - example: /activities/1a2b3c4d - format: iri-reference - type: string - campCollaboration: - description: 'The person that is responsible. Must be a collaborator in the same camp as the activity.' - example: /camp_collaborations/1a2b3c4d - format: iri-reference - type: string - required: - - activity - - campCollaboration - type: object - Camp-read: - deprecated: false - description: |- - The main entity that eCamp is designed to manage. Contains programme which may be - distributed across multiple time periods. properties: activities: description: |- @@ -2746,13 +2704,10 @@ components: type: array categories: description: 'Types of programme, such as sports activities or meal times.' - example: '["/categories/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + example: '"/camp/1a2b3c4d/categories"' + format: iri-reference readOnly: true - type: array + type: string coachName: description: 'The name of the Y+S coach who is in charge of the camp.' example: 'Albert Anderegg' @@ -2887,11 +2842,9 @@ components: - progressLabels - title type: object - Camp-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: + Camp-read_Period.Camp_Period.Days: deprecated: false - description: |- - The main entity that eCamp is designed to manage. Contains programme which may be - distributed across multiple time periods. + description: '' properties: activities: description: |- @@ -2933,22 +2886,17 @@ components: - 'null' - string campCollaborations: - description: |- - The people working on planning and carrying out the camp. Only collaborators have access - to the camp's contents. - items: - $ref: '#/components/schemas/CampCollaboration-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' - readOnly: true - type: array - categories: - description: 'Types of programme, such as sports activities or meal times.' - example: '["/categories/1a2b3c4d"]' items: example: 'https://example.com/' format: iri-reference type: string - readOnly: true type: array + categories: + description: 'Types of programme, such as sports activities or meal times.' + example: '"/camp/1a2b3c4d/categories"' + format: iri-reference + readOnly: true + type: string coachName: description: 'The name of the Y+S coach who is in charge of the camp.' example: 'Albert Anderegg' @@ -3027,9 +2975,16 @@ components: - 'null' - string periods: + description: 'The time periods of the camp, there must be at least one. Periods in a camp may not overlap.' + example: + - + description: Hauptlager + end: '2022-01-08' + start: '2022-01-01' items: - $ref: '#/components/schemas/Period-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' - readOnly: true + example: 'https://example.com/' + format: iri-reference + type: string type: array printYSLogoOnPicasso: description: 'Whether the Y+S logo should be printed on the picasso of this camp.' @@ -3076,21 +3031,12 @@ components: - progressLabels - title type: object - Camp-read_CampCollaboration.Camp_CampCollaboration.User: + Camp-write_create: deprecated: false - description: '' - properties: - activities: - description: |- - All the programme that will be carried out during the camp. An activity may be carried out - multiple times in the same camp. - example: '/activities?camp=%2Fcamps%2F1a2b3c4d' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array + description: |- + The main entity that eCamp is designed to manage. Contains programme which may be + distributed across multiple time periods. + properties: addressCity: description: 'The name of the town where the camp will take place.' example: Hintertüpfingen @@ -3119,21 +3065,14 @@ components: type: - 'null' - string - campCollaborations: - items: - example: 'https://example.com/' - format: iri-reference - type: string - type: array - categories: - description: 'Types of programme, such as sports activities or meal times.' - example: '["/categories/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array + campPrototype: + description: 'The prototype camp that will be used as a template to create this camp.' + example: /camps/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + writeOnly: true coachName: description: 'The name of the Y+S coach who is in charge of the camp.' example: 'Albert Anderegg' @@ -3155,25 +3094,6 @@ components: type: - 'null' - string - creator: - description: |- - The person that created the camp. This value never changes, even when the person - leaves the camp. - example: 'https://example.com/' - format: iri-reference - readOnly: true - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - isPrototype: - description: 'Whether this camp may serve as a template for creating other camps.' - example: true - readOnly: true - type: boolean kind: description: 'Rough categorization of the camp (house, tent, traveling, summer, autumn).' example: Zeltlager @@ -3181,17 +3101,6 @@ components: type: - 'null' - string - materialLists: - description: |- - Lists for collecting the required materials needed for carrying out the programme. Each collaborator - has a material list, and there may be more, such as shopping lists. - example: '["/material_lists/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array motto: description: "The thematic topic (if any) of the camp's programme and storyline." example: Piraten @@ -3219,32 +3128,13 @@ components: end: '2022-01-08' start: '2022-01-01' items: - example: 'https://example.com/' - format: iri-reference - type: string + $ref: '#/components/schemas/Period-write_create' + minItems: 1 type: array printYSLogoOnPicasso: description: 'Whether the Y+S logo should be printed on the picasso of this camp.' example: true type: boolean - profiles: - description: 'All profiles of the users collaborating in this camp.' - example: '/profiles?user.collaborations.camp=%2Fcamps%2F1a2b3c4d' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - progressLabels: - description: 'All the progress labels within this camp.' - example: '["/progress_labels/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array title: description: 'The full title of the camp.' example: 'Abteilungs-Sommerlager 2022' @@ -3258,31 +3148,17 @@ components: - 'null' - string required: - - activities - - campCollaborations - - categories - - materialLists - name - periods - printYSLogoOnPicasso - - progressLabels - title type: object - Camp-read_Period.Camp_Period.Days: + Camp-write_update: deprecated: false - description: '' + description: |- + The main entity that eCamp is designed to manage. Contains programme which may be + distributed across multiple time periods. properties: - activities: - description: |- - All the programme that will be carried out during the camp. An activity may be carried out - multiple times in the same camp. - example: '/activities?camp=%2Fcamps%2F1a2b3c4d' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array addressCity: description: 'The name of the town where the camp will take place.' example: Hintertüpfingen @@ -3311,21 +3187,6 @@ components: type: - 'null' - string - campCollaborations: - items: - example: 'https://example.com/' - format: iri-reference - type: string - type: array - categories: - description: 'Types of programme, such as sports activities or meal times.' - example: '["/categories/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array coachName: description: 'The name of the Y+S coach who is in charge of the camp.' example: 'Albert Anderegg' @@ -3347,25 +3208,6 @@ components: type: - 'null' - string - creator: - description: |- - The person that created the camp. This value never changes, even when the person - leaves the camp. - example: 'https://example.com/' - format: iri-reference - readOnly: true - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - isPrototype: - description: 'Whether this camp may serve as a template for creating other camps.' - example: true - readOnly: true - type: boolean kind: description: 'Rough categorization of the camp (house, tent, traveling, summer, autumn).' example: Zeltlager @@ -3373,17 +3215,6 @@ components: type: - 'null' - string - materialLists: - description: |- - Lists for collecting the required materials needed for carrying out the programme. Each collaborator - has a material list, and there may be more, such as shopping lists. - example: '["/material_lists/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array motto: description: "The thematic topic (if any) of the camp's programme and storyline." example: Piraten @@ -3403,40 +3234,10 @@ components: type: - 'null' - string - periods: - description: 'The time periods of the camp, there must be at least one. Periods in a camp may not overlap.' - example: - - - description: Hauptlager - end: '2022-01-08' - start: '2022-01-01' - items: - example: 'https://example.com/' - format: iri-reference - type: string - type: array printYSLogoOnPicasso: description: 'Whether the Y+S logo should be printed on the picasso of this camp.' example: true type: boolean - profiles: - description: 'All profiles of the users collaborating in this camp.' - example: '/profiles?user.collaborations.camp=%2Fcamps%2F1a2b3c4d' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - progressLabels: - description: 'All the progress labels within this camp.' - example: '["/progress_labels/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array title: description: 'The full title of the camp.' example: 'Abteilungs-Sommerlager 2022' @@ -3450,246 +3251,197 @@ components: - 'null' - string required: - - activities - - campCollaborations - - categories - - materialLists - name - - periods - printYSLogoOnPicasso - - progressLabels - title type: object - Camp-write_create: + Camp.jsonapi: deprecated: false description: |- The main entity that eCamp is designed to manage. Contains programme which may be distributed across multiple time periods. properties: - addressCity: - description: 'The name of the town where the camp will take place.' - example: Hintertüpfingen - maxLength: 128 - type: - - 'null' - - string - addressName: - description: 'A textual description of the location of the camp.' - example: 'Wiese hinter der alten Mühle' - maxLength: 128 - type: - - 'null' - - string - addressStreet: - description: 'The street name and number (if any) of the location of the camp.' - example: 'Schönriedweg 23' - maxLength: 128 - type: - - 'null' - - string - addressZipcode: - description: 'The zipcode of the location of the camp.' - example: '1234' - maxLength: 128 - type: - - 'null' - - string - campPrototype: - description: 'The prototype camp that will be used as a template to create this camp.' - example: /camps/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - writeOnly: true - coachName: - description: 'The name of the Y+S coach who is in charge of the camp.' - example: 'Albert Anderegg' - maxLength: 64 - type: - - 'null' - - string - courseKind: - description: 'The official name for the type of this course.' - example: 'PBS AG 123-23' - maxLength: 64 - type: - - 'null' - - string - courseNumber: - description: 'The official course number, identifying this course.' - example: 'PBS AG 123-23' - maxLength: 64 - type: - - 'null' - - string - kind: - description: 'Rough categorization of the camp (house, tent, traveling, summer, autumn).' - example: Zeltlager - maxLength: 64 - type: - - 'null' - - string - motto: - description: "The thematic topic (if any) of the camp's programme and storyline." - example: Piraten - maxLength: 128 - type: - - 'null' - - string - name: - description: 'A short name for the camp.' - example: 'SoLa 2022' - maxLength: 32 - type: string - organizer: - description: 'The name of the organization which plans and carries out the camp.' - example: 'Pfadi Luftig' - maxLength: 64 - type: - - 'null' - - string + campCollaborations: + description: |- + The people working on planning and carrying out the camp. Only collaborators have access + to the camp's contents. + items: + $ref: '#/components/schemas/CampCollaboration.jsonapi' + readOnly: true + type: array + data: + properties: + attributes: + properties: + _id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + addressCity: + description: 'The name of the town where the camp will take place.' + example: Hintertüpfingen + maxLength: 128 + type: ['null', string] + addressName: + description: 'A textual description of the location of the camp.' + example: 'Wiese hinter der alten Mühle' + maxLength: 128 + type: ['null', string] + addressStreet: + description: 'The street name and number (if any) of the location of the camp.' + example: 'Schönriedweg 23' + maxLength: 128 + type: ['null', string] + addressZipcode: + description: 'The zipcode of the location of the camp.' + example: '1234' + maxLength: 128 + type: ['null', string] + coachName: + description: 'The name of the Y+S coach who is in charge of the camp.' + example: 'Albert Anderegg' + maxLength: 64 + type: ['null', string] + courseKind: + description: 'The official name for the type of this course.' + example: 'PBS AG 123-23' + maxLength: 64 + type: ['null', string] + courseNumber: + description: 'The official course number, identifying this course.' + example: 'PBS AG 123-23' + maxLength: 64 + type: ['null', string] + isPrototype: + description: 'Whether this camp may serve as a template for creating other camps.' + example: true + readOnly: true + type: boolean + kind: + description: 'Rough categorization of the camp (house, tent, traveling, summer, autumn).' + example: Zeltlager + maxLength: 64 + type: ['null', string] + motto: + description: "The thematic topic (if any) of the camp's programme and storyline." + example: Piraten + maxLength: 128 + type: ['null', string] + name: + description: 'A short name for the camp.' + example: 'SoLa 2022' + maxLength: 32 + type: string + organizer: + description: 'The name of the organization which plans and carries out the camp.' + example: 'Pfadi Luftig' + maxLength: 64 + type: ['null', string] + printYSLogoOnPicasso: + description: 'Whether the Y+S logo should be printed on the picasso of this camp.' + example: true + type: boolean + title: + description: 'The full title of the camp.' + example: 'Abteilungs-Sommerlager 2022' + maxLength: 32 + type: string + trainingAdvisorName: + description: 'The name of the training advisor who is in charge of the course.' + example: 'Albert Anderegg' + maxLength: 64 + type: ['null', string] + required: + - name + - printYSLogoOnPicasso + - title + type: object + id: + type: string + relationships: + properties: + activities: + properties: { data: { items: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object }, type: array } } + campCollaborations: + properties: { data: { items: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object }, type: array } } + categories: + properties: { data: { items: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object }, type: array } } + creator: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + materialLists: + properties: { data: { items: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object }, type: array } } + periods: + properties: { data: { items: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object }, type: array } } + progressLabels: + properties: { data: { items: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object }, type: array } } + required: + - activities + - campCollaborations + - categories + - materialLists + - periods + - progressLabels + type: object + type: + type: string + required: + - id + - type + type: object + included: + description: 'Related resources requested via the "include" query parameter.' + externalDocs: + url: 'https://jsonapi.org/format/#fetching-includes' + items: + anyOf: + - + $ref: '#/components/schemas/CampCollaboration.jsonapi' + - + $ref: '#/components/schemas/CampCollaboration.jsonapi' + - + $ref: '#/components/schemas/CampCollaboration.jsonapi' + - + $ref: '#/components/schemas/CampCollaboration.jsonapi' + - + $ref: '#/components/schemas/CampCollaboration.jsonapi' + - + $ref: '#/components/schemas/CampCollaboration.jsonapi' + - + $ref: '#/components/schemas/CampCollaboration.jsonapi' + readOnly: true + type: array periods: - description: 'The time periods of the camp, there must be at least one. Periods in a camp may not overlap.' - example: - - - description: Hauptlager - end: '2022-01-08' - start: '2022-01-01' items: - $ref: '#/components/schemas/Period-write_create' - minItems: 1 + $ref: '#/components/schemas/Period.jsonapi' + readOnly: true + type: array + profiles: + description: 'All profiles of the users collaborating in this camp.' + example: '/profiles?user.collaborations.camp=%2Fcamps%2F1a2b3c4d' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true type: array - printYSLogoOnPicasso: - description: 'Whether the Y+S logo should be printed on the picasso of this camp.' - example: true - type: boolean - title: - description: 'The full title of the camp.' - example: 'Abteilungs-Sommerlager 2022' - maxLength: 32 - type: string - trainingAdvisorName: - description: 'The name of the training advisor who is in charge of the course.' - example: 'Albert Anderegg' - maxLength: 64 - type: - - 'null' - - string - required: - - name - - periods - - printYSLogoOnPicasso - - title - type: object - Camp-write_update: - deprecated: false - description: |- - The main entity that eCamp is designed to manage. Contains programme which may be - distributed across multiple time periods. - properties: - addressCity: - description: 'The name of the town where the camp will take place.' - example: Hintertüpfingen - maxLength: 128 - type: - - 'null' - - string - addressName: - description: 'A textual description of the location of the camp.' - example: 'Wiese hinter der alten Mühle' - maxLength: 128 - type: - - 'null' - - string - addressStreet: - description: 'The street name and number (if any) of the location of the camp.' - example: 'Schönriedweg 23' - maxLength: 128 - type: - - 'null' - - string - addressZipcode: - description: 'The zipcode of the location of the camp.' - example: '1234' - maxLength: 128 - type: - - 'null' - - string - coachName: - description: 'The name of the Y+S coach who is in charge of the camp.' - example: 'Albert Anderegg' - maxLength: 64 - type: - - 'null' - - string - courseKind: - description: 'The official name for the type of this course.' - example: 'PBS AG 123-23' - maxLength: 64 - type: - - 'null' - - string - courseNumber: - description: 'The official course number, identifying this course.' - example: 'PBS AG 123-23' - maxLength: 64 - type: - - 'null' - - string - kind: - description: 'Rough categorization of the camp (house, tent, traveling, summer, autumn).' - example: Zeltlager - maxLength: 64 - type: - - 'null' - - string - motto: - description: "The thematic topic (if any) of the camp's programme and storyline." - example: Piraten - maxLength: 128 - type: - - 'null' - - string - name: - description: 'A short name for the camp.' - example: 'SoLa 2022' - maxLength: 32 - type: string - organizer: - description: 'The name of the organization which plans and carries out the camp.' - example: 'Pfadi Luftig' - maxLength: 64 - type: - - 'null' - - string - printYSLogoOnPicasso: - description: 'Whether the Y+S logo should be printed on the picasso of this camp.' - example: true - type: boolean - title: - description: 'The full title of the camp.' - example: 'Abteilungs-Sommerlager 2022' - maxLength: 32 - type: string - trainingAdvisorName: - description: 'The name of the training advisor who is in charge of the course.' - example: 'Albert Anderegg' - maxLength: 64 - type: - - 'null' - - string - required: - - name - - printYSLogoOnPicasso - - title type: object - Camp.jsonapi-read: + Camp.jsonhal-read: deprecated: false description: |- The main entity that eCamp is designed to manage. Contains programme which may be distributed across multiple time periods. properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object activities: description: |- All the programme that will be carried out during the camp. An activity may be carried out @@ -3737,13 +3489,10 @@ components: type: array categories: description: 'Types of programme, such as sports activities or meal times.' - example: '["/categories/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + example: '"/camp/1a2b3c4d/categories"' + format: iri-reference readOnly: true - type: array + type: string coachName: description: 'The name of the Y+S coach who is in charge of the camp.' example: 'Albert Anderegg' @@ -3878,12 +3627,21 @@ components: - progressLabels - title type: object - Camp.jsonapi-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: + Camp.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: deprecated: false description: |- The main entity that eCamp is designed to manage. Contains programme which may be distributed across multiple time periods. properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object activities: description: |- All the programme that will be carried out during the camp. An activity may be carried out @@ -3928,18 +3686,15 @@ components: The people working on planning and carrying out the camp. Only collaborators have access to the camp's contents. items: - $ref: '#/components/schemas/CampCollaboration.jsonapi-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + $ref: '#/components/schemas/CampCollaboration.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' readOnly: true type: array categories: description: 'Types of programme, such as sports activities or meal times.' - example: '["/categories/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + example: '"/camp/1a2b3c4d/categories"' + format: iri-reference readOnly: true - type: array + type: string coachName: description: 'The name of the Y+S coach who is in charge of the camp.' example: 'Albert Anderegg' @@ -4019,7 +3774,7 @@ components: - string periods: items: - $ref: '#/components/schemas/Period.jsonapi-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + $ref: '#/components/schemas/Period.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' readOnly: true type: array printYSLogoOnPicasso: @@ -4067,10 +3822,19 @@ components: - progressLabels - title type: object - Camp.jsonapi-read_CampCollaboration.Camp_CampCollaboration.User: + Camp.jsonhal-read_CampCollaboration.Camp_CampCollaboration.User: deprecated: false description: '' properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object activities: description: |- All the programme that will be carried out during the camp. An activity may be carried out @@ -4118,13 +3882,10 @@ components: type: array categories: description: 'Types of programme, such as sports activities or meal times.' - example: '["/categories/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + example: '"/camp/1a2b3c4d/categories"' + format: iri-reference readOnly: true - type: array + type: string coachName: description: 'The name of the Y+S coach who is in charge of the camp.' example: 'Albert Anderegg' @@ -4259,10 +4020,19 @@ components: - progressLabels - title type: object - Camp.jsonapi-read_Period.Camp_Period.Days: + Camp.jsonhal-read_Period.Camp_Period.Days: deprecated: false description: '' properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object activities: description: |- All the programme that will be carried out during the camp. An activity may be carried out @@ -4310,13 +4080,10 @@ components: type: array categories: description: 'Types of programme, such as sports activities or meal times.' - example: '["/categories/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + example: '"/camp/1a2b3c4d/categories"' + format: iri-reference readOnly: true - type: array + type: string coachName: description: 'The name of the Y+S coach who is in charge of the camp.' example: 'Albert Anderegg' @@ -4451,12 +4218,21 @@ components: - progressLabels - title type: object - Camp.jsonapi-write_create: + Camp.jsonhal-write_create: deprecated: false description: |- The main entity that eCamp is designed to manage. Contains programme which may be distributed across multiple time periods. properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object addressCity: description: 'The name of the town where the camp will take place.' example: Hintertüpfingen @@ -4548,7 +4324,7 @@ components: end: '2022-01-08' start: '2022-01-01' items: - $ref: '#/components/schemas/Period.jsonapi-write_create' + $ref: '#/components/schemas/Period.jsonhal-write_create' minItems: 1 type: array printYSLogoOnPicasso: @@ -4573,123 +4349,35 @@ components: - printYSLogoOnPicasso - title type: object - Camp.jsonapi-write_update: - deprecated: false - description: |- - The main entity that eCamp is designed to manage. Contains programme which may be - distributed across multiple time periods. - properties: - addressCity: - description: 'The name of the town where the camp will take place.' - example: Hintertüpfingen - maxLength: 128 - type: - - 'null' - - string - addressName: - description: 'A textual description of the location of the camp.' - example: 'Wiese hinter der alten Mühle' - maxLength: 128 - type: - - 'null' - - string - addressStreet: - description: 'The street name and number (if any) of the location of the camp.' - example: 'Schönriedweg 23' - maxLength: 128 - type: - - 'null' - - string - addressZipcode: - description: 'The zipcode of the location of the camp.' - example: '1234' - maxLength: 128 - type: - - 'null' - - string - coachName: - description: 'The name of the Y+S coach who is in charge of the camp.' - example: 'Albert Anderegg' - maxLength: 64 - type: - - 'null' - - string - courseKind: - description: 'The official name for the type of this course.' - example: 'PBS AG 123-23' - maxLength: 64 - type: - - 'null' - - string - courseNumber: - description: 'The official course number, identifying this course.' - example: 'PBS AG 123-23' - maxLength: 64 - type: - - 'null' - - string - kind: - description: 'Rough categorization of the camp (house, tent, traveling, summer, autumn).' - example: Zeltlager - maxLength: 64 - type: - - 'null' - - string - motto: - description: "The thematic topic (if any) of the camp's programme and storyline." - example: Piraten - maxLength: 128 - type: - - 'null' - - string - name: - description: 'A short name for the camp.' - example: 'SoLa 2022' - maxLength: 32 - type: string - organizer: - description: 'The name of the organization which plans and carries out the camp.' - example: 'Pfadi Luftig' - maxLength: 64 - type: - - 'null' - - string - printYSLogoOnPicasso: - description: 'Whether the Y+S logo should be printed on the picasso of this camp.' - example: true - type: boolean - title: - description: 'The full title of the camp.' - example: 'Abteilungs-Sommerlager 2022' - maxLength: 32 - type: string - trainingAdvisorName: - description: 'The name of the training advisor who is in charge of the course.' - example: 'Albert Anderegg' - maxLength: 64 - type: - - 'null' - - string - required: - - name - - printYSLogoOnPicasso - - title - type: object - Camp.jsonhal-read: + Camp.jsonld-read: deprecated: false description: |- The main entity that eCamp is designed to manage. Contains programme which may be distributed across multiple time periods. properties: - _links: - properties: - self: + '@context': + oneOf: + - + additionalProperties: true properties: - href: - format: iri-reference + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] type: string + required: + - '@vocab' + - hydra type: object - type: object + - + type: string + readOnly: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string activities: description: |- All the programme that will be carried out during the camp. An activity may be carried out @@ -4737,13 +4425,10 @@ components: type: array categories: description: 'Types of programme, such as sports activities or meal times.' - example: '["/categories/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + example: '"/camp/1a2b3c4d/categories"' + format: iri-reference readOnly: true - type: array + type: string coachName: description: 'The name of the Y+S coach who is in charge of the camp.' example: 'Albert Anderegg' @@ -4878,21 +4563,35 @@ components: - progressLabels - title type: object - Camp.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: + Camp.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: deprecated: false description: |- The main entity that eCamp is designed to manage. Contains programme which may be distributed across multiple time periods. properties: - _links: - properties: - self: + '@context': + oneOf: + - + additionalProperties: true properties: - href: - format: iri-reference + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] type: string + required: + - '@vocab' + - hydra type: object - type: object + - + type: string + readOnly: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string activities: description: |- All the programme that will be carried out during the camp. An activity may be carried out @@ -4937,18 +4636,15 @@ components: The people working on planning and carrying out the camp. Only collaborators have access to the camp's contents. items: - $ref: '#/components/schemas/CampCollaboration.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + $ref: '#/components/schemas/CampCollaboration.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' readOnly: true type: array categories: description: 'Types of programme, such as sports activities or meal times.' - example: '["/categories/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + example: '"/camp/1a2b3c4d/categories"' + format: iri-reference readOnly: true - type: array + type: string coachName: description: 'The name of the Y+S coach who is in charge of the camp.' example: 'Albert Anderegg' @@ -5028,7 +4724,7 @@ components: - string periods: items: - $ref: '#/components/schemas/Period.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + $ref: '#/components/schemas/Period.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' readOnly: true type: array printYSLogoOnPicasso: @@ -5076,19 +4772,33 @@ components: - progressLabels - title type: object - Camp.jsonhal-read_CampCollaboration.Camp_CampCollaboration.User: + Camp.jsonld-read_CampCollaboration.Camp_CampCollaboration.User: deprecated: false description: '' properties: - _links: - properties: - self: + '@context': + oneOf: + - + additionalProperties: true properties: - href: - format: iri-reference + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] type: string + required: + - '@vocab' + - hydra type: object - type: object + - + type: string + readOnly: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string activities: description: |- All the programme that will be carried out during the camp. An activity may be carried out @@ -5136,13 +4846,10 @@ components: type: array categories: description: 'Types of programme, such as sports activities or meal times.' - example: '["/categories/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + example: '"/camp/1a2b3c4d/categories"' + format: iri-reference readOnly: true - type: array + type: string coachName: description: 'The name of the Y+S coach who is in charge of the camp.' example: 'Albert Anderegg' @@ -5277,19 +4984,33 @@ components: - progressLabels - title type: object - Camp.jsonhal-read_Period.Camp_Period.Days: + Camp.jsonld-read_Period.Camp_Period.Days: deprecated: false description: '' properties: - _links: - properties: - self: + '@context': + oneOf: + - + additionalProperties: true properties: - href: - format: iri-reference + '@vocab': type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra type: object - type: object + - + type: string + readOnly: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string activities: description: |- All the programme that will be carried out during the camp. An activity may be carried out @@ -5337,13 +5058,10 @@ components: type: array categories: description: 'Types of programme, such as sports activities or meal times.' - example: '["/categories/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + example: '"/camp/1a2b3c4d/categories"' + format: iri-reference readOnly: true - type: array + type: string coachName: description: 'The name of the Y+S coach who is in charge of the camp.' example: 'Albert Anderegg' @@ -5478,21 +5196,12 @@ components: - progressLabels - title type: object - Camp.jsonhal-write_create: + Camp.jsonld-write_create: deprecated: false description: |- The main entity that eCamp is designed to manage. Contains programme which may be distributed across multiple time periods. properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object addressCity: description: 'The name of the town where the camp will take place.' example: Hintertüpfingen @@ -5584,7 +5293,7 @@ components: end: '2022-01-08' start: '2022-01-01' items: - $ref: '#/components/schemas/Period.jsonhal-write_create' + $ref: '#/components/schemas/Period.jsonld-write_create' minItems: 1 type: array printYSLogoOnPicasso: @@ -5609,653 +5318,711 @@ components: - printYSLogoOnPicasso - title type: object - Camp.jsonld-read: + CampCollaboration-read: deprecated: false - description: |- - The main entity that eCamp is designed to manage. Contains programme which may be - distributed across multiple time periods. + description: 'A user participating in some way in the planning or realization of a camp.' properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true + abbreviation: + description: 'The abbreviation in the avatar.' + example: AB + type: + - 'null' + - string + camp: + description: 'The camp that the collaborator is part of. Cannot be changed once the campCollaboration is created.' + example: /camps/1a2b3c4d + format: iri-reference type: string - '@type': + color: + description: 'The color of the avatar as a hex color string.' + example: '#4DBB52' + type: + - 'null' + - string + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d readOnly: true type: string - activities: + inviteEmail: description: |- - All the programme that will be carried out during the camp. An activity may be carried out - multiple times in the same camp. - example: '/activities?camp=%2Fcamps%2F1a2b3c4d' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - addressCity: - description: 'The name of the town where the camp will take place.' - example: Hintertüpfingen - maxLength: 128 + The receiver email address of the invitation email, in case the collaboration does not yet have + a user account. Either this field or the user field should be null. + example: some-email@example.com type: - 'null' - string - addressName: - description: 'A textual description of the location of the camp.' - example: 'Wiese hinter der alten Mühle' - maxLength: 128 + role: + description: |- + The role that this person has in the camp. Depending on the role, the collaborator might have + different access rights. There must always be at least one manager in a camp. + example: member + type: string + status: + default: invited + description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' + example: inactive + type: string + user: + description: 'The person that is collaborating in the camp. Cannot be changed once the campCollaboration is established.' + example: /users/1a2b3c4d + format: iri-reference type: - 'null' - string - addressStreet: - description: 'The street name and number (if any) of the location of the camp.' - example: 'Schönriedweg 23' - maxLength: 128 + type: object + CampCollaboration-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: + deprecated: false + description: '' + properties: + abbreviation: + description: 'The abbreviation in the avatar.' + example: AB + maxLength: 2 type: - 'null' - string - addressZipcode: - description: 'The zipcode of the location of the camp.' - example: '1234' - maxLength: 128 + camp: + description: 'The camp that the collaborator is part of. Cannot be changed once the campCollaboration is created.' + example: /camps/1a2b3c4d + format: iri-reference + type: string + color: + description: 'The color of the avatar as a hex color string.' + example: '#4DBB52' + maxLength: 8 + pattern: '^(#[0-9a-zA-Z]{6})$' type: - 'null' - string - campCollaborations: - items: - example: 'https://example.com/' - format: iri-reference - type: string - type: array - categories: - description: 'Types of programme, such as sports activities or meal times.' - example: '["/categories/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 readOnly: true - type: array - coachName: - description: 'The name of the Y+S coach who is in charge of the camp.' - example: 'Albert Anderegg' - maxLength: 64 + type: string + inviteEmail: + description: |- + The receiver email address of the invitation email, in case the collaboration does not yet have + a user account. Either this field or the user field should be null. + example: some-email@example.com + externalDocs: + url: 'https://schema.org/email' + format: email + maxLength: 128 + minLength: 1 type: - 'null' - string - courseKind: - description: 'The official name for the type of this course.' - example: 'PBS AG 123-23' - maxLength: 64 + role: + description: |- + The role that this person has in the camp. Depending on the role, the collaborator might have + different access rights. There must always be at least one manager in a camp. + enum: + - guest + - manager + - member + example: member + maxLength: 16 + type: string + status: + default: invited + description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' + enum: + - established + - inactive + - invited + example: inactive + maxLength: 16 + type: string + user: + anyOf: + - + $ref: '#/components/schemas/User-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + - + type: 'null' + readOnly: true + required: + - camp + - role + - status + type: object + CampCollaboration-read_CampCollaboration.Camp_CampCollaboration.User: + deprecated: false + description: 'A user participating in some way in the planning or realization of a camp.' + properties: + abbreviation: + description: 'The abbreviation in the avatar.' + example: AB + maxLength: 2 type: - 'null' - string - courseNumber: - description: 'The official course number, identifying this course.' - example: 'PBS AG 123-23' - maxLength: 64 + camp: + anyOf: + - + $ref: '#/components/schemas/Camp-read_CampCollaboration.Camp_CampCollaboration.User' + - + type: 'null' + readOnly: true + color: + description: 'The color of the avatar as a hex color string.' + example: '#4DBB52' + maxLength: 8 + pattern: '^(#[0-9a-zA-Z]{6})$' type: - 'null' - string - creator: - description: |- - The person that created the camp. This value never changes, even when the person - leaves the camp. - example: 'https://example.com/' - format: iri-reference - readOnly: true - type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - isPrototype: - description: 'Whether this camp may serve as a template for creating other camps.' - example: true - readOnly: true - type: boolean - kind: - description: 'Rough categorization of the camp (house, tent, traveling, summer, autumn).' - example: Zeltlager - maxLength: 64 - type: - - 'null' - - string - materialLists: + inviteEmail: description: |- - Lists for collecting the required materials needed for carrying out the programme. Each collaborator - has a material list, and there may be more, such as shopping lists. - example: '["/material_lists/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - motto: - description: "The thematic topic (if any) of the camp's programme and storyline." - example: Piraten + The receiver email address of the invitation email, in case the collaboration does not yet have + a user account. Either this field or the user field should be null. + example: some-email@example.com + externalDocs: + url: 'https://schema.org/email' + format: email maxLength: 128 + minLength: 1 type: - 'null' - string - name: - description: 'A short name for the camp.' - example: 'SoLa 2022' - maxLength: 32 - type: string - organizer: - description: 'The name of the organization which plans and carries out the camp.' - example: 'Pfadi Luftig' - maxLength: 64 - type: - - 'null' - - string - periods: - description: 'The time periods of the camp, there must be at least one. Periods in a camp may not overlap.' - example: + role: + description: |- + The role that this person has in the camp. Depending on the role, the collaborator might have + different access rights. There must always be at least one manager in a camp. + enum: + - guest + - manager + - member + example: member + maxLength: 16 + type: string + status: + default: invited + description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' + enum: + - established + - inactive + - invited + example: inactive + maxLength: 16 + type: string + user: + anyOf: - - description: Hauptlager - end: '2022-01-08' - start: '2022-01-01' - items: - example: 'https://example.com/' - format: iri-reference - type: string - type: array - printYSLogoOnPicasso: - description: 'Whether the Y+S logo should be printed on the picasso of this camp.' - example: true - type: boolean - profiles: - description: 'All profiles of the users collaborating in this camp.' - example: '/profiles?user.collaborations.camp=%2Fcamps%2F1a2b3c4d' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - progressLabels: - description: 'All the progress labels within this camp.' - example: '["/progress_labels/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + $ref: '#/components/schemas/User-read_CampCollaboration.Camp_CampCollaboration.User' + - + type: 'null' readOnly: true - type: array - title: - description: 'The full title of the camp.' - example: 'Abteilungs-Sommerlager 2022' - maxLength: 32 - type: string - trainingAdvisorName: - description: 'The name of the training advisor who is in charge of the course.' - example: 'Albert Anderegg' - maxLength: 64 - type: - - 'null' - - string required: - - activities - - campCollaborations - - categories - - materialLists - - name - - periods - - printYSLogoOnPicasso - - progressLabels - - title + - camp + - role + - status type: object - Camp.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: + CampCollaboration-resend_invitation: deprecated: false - description: |- - The main entity that eCamp is designed to manage. Contains programme which may be - distributed across multiple time periods. + description: 'A user participating in some way in the planning or realization of a camp.' + type: object + CampCollaboration-write_create: + deprecated: false + description: 'A user participating in some way in the planning or realization of a camp.' properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - activities: - description: |- - All the programme that will be carried out during the camp. An activity may be carried out - multiple times in the same camp. - example: '/activities?camp=%2Fcamps%2F1a2b3c4d' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - addressCity: - description: 'The name of the town where the camp will take place.' - example: Hintertüpfingen - maxLength: 128 - type: - - 'null' - - string - addressName: - description: 'A textual description of the location of the camp.' - example: 'Wiese hinter der alten Mühle' - maxLength: 128 + abbreviation: + description: 'The abbreviation in the avatar.' + example: AB + maxLength: 2 type: - 'null' - string - addressStreet: - description: 'The street name and number (if any) of the location of the camp.' - example: 'Schönriedweg 23' - maxLength: 128 + camp: + description: 'The camp that the collaborator is part of. Cannot be changed once the campCollaboration is created.' + example: /camps/1a2b3c4d + format: iri-reference + type: string + color: + description: 'The color of the avatar as a hex color string.' + example: '#4DBB52' + maxLength: 8 + pattern: '^(#[0-9a-zA-Z]{6})$' type: - 'null' - string - addressZipcode: - description: 'The zipcode of the location of the camp.' - example: '1234' + inviteEmail: + description: |- + The receiver email address of the invitation email, in case the collaboration does not yet have + a user account. Either this field or the user field should be null. + example: some-email@example.com + externalDocs: + url: 'https://schema.org/email' + format: email maxLength: 128 + minLength: 1 type: - 'null' - string - campCollaborations: + role: description: |- - The people working on planning and carrying out the camp. Only collaborators have access - to the camp's contents. - items: - $ref: '#/components/schemas/CampCollaboration.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' - readOnly: true - type: array - categories: - description: 'Types of programme, such as sports activities or meal times.' - example: '["/categories/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - coachName: - description: 'The name of the Y+S coach who is in charge of the camp.' - example: 'Albert Anderegg' - maxLength: 64 + The role that this person has in the camp. Depending on the role, the collaborator might have + different access rights. There must always be at least one manager in a camp. + enum: + - guest + - manager + - member + example: member + maxLength: 16 + type: string + user: + description: 'The person that is collaborating in the camp. Cannot be changed once the campCollaboration is established.' + example: /users/1a2b3c4d + format: iri-reference type: - 'null' - string - courseKind: - description: 'The official name for the type of this course.' - example: 'PBS AG 123-23' - maxLength: 64 + required: + - camp + - role + type: object + CampCollaboration-write_update: + deprecated: false + description: 'A user participating in some way in the planning or realization of a camp.' + properties: + abbreviation: + description: 'The abbreviation in the avatar.' + example: AB + maxLength: 2 type: - 'null' - string - courseNumber: - description: 'The official course number, identifying this course.' - example: 'PBS AG 123-23' - maxLength: 64 + color: + description: 'The color of the avatar as a hex color string.' + example: '#4DBB52' + maxLength: 8 + pattern: '^(#[0-9a-zA-Z]{6})$' type: - 'null' - string - creator: + role: description: |- - The person that created the camp. This value never changes, even when the person - leaves the camp. - example: 'https://example.com/' - format: iri-reference - readOnly: true + The role that this person has in the camp. Depending on the role, the collaborator might have + different access rights. There must always be at least one manager in a camp. + enum: + - guest + - manager + - member + example: member + maxLength: 16 type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d + status: + default: invited + description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' + enum: + - established + - inactive + - invited + example: inactive maxLength: 16 - readOnly: true type: string - isPrototype: - description: 'Whether this camp may serve as a template for creating other camps.' - example: true - readOnly: true - type: boolean - kind: - description: 'Rough categorization of the camp (house, tent, traveling, summer, autumn).' - example: Zeltlager - maxLength: 64 - type: - - 'null' - - string - materialLists: - description: |- - Lists for collecting the required materials needed for carrying out the programme. Each collaborator - has a material list, and there may be more, such as shopping lists. - example: '["/material_lists/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - motto: - description: "The thematic topic (if any) of the camp's programme and storyline." - example: Piraten - maxLength: 128 - type: - - 'null' - - string - name: - description: 'A short name for the camp.' - example: 'SoLa 2022' - maxLength: 32 - type: string - organizer: - description: 'The name of the organization which plans and carries out the camp.' - example: 'Pfadi Luftig' - maxLength: 64 - type: - - 'null' - - string - periods: - items: - $ref: '#/components/schemas/Period.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' - readOnly: true - type: array - printYSLogoOnPicasso: - description: 'Whether the Y+S logo should be printed on the picasso of this camp.' - example: true - type: boolean - profiles: - description: 'All profiles of the users collaborating in this camp.' - example: '/profiles?user.collaborations.camp=%2Fcamps%2F1a2b3c4d' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - progressLabels: - description: 'All the progress labels within this camp.' - example: '["/progress_labels/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - title: - description: 'The full title of the camp.' - example: 'Abteilungs-Sommerlager 2022' - maxLength: 32 - type: string - trainingAdvisorName: - description: 'The name of the training advisor who is in charge of the course.' - example: 'Albert Anderegg' - maxLength: 64 - type: - - 'null' - - string required: - - activities - - campCollaborations - - categories - - materialLists - - name - - periods - - printYSLogoOnPicasso - - progressLabels - - title + - role + - status type: object - Camp.jsonld-read_CampCollaboration.Camp_CampCollaboration.User: + CampCollaboration.jsonapi: deprecated: false - description: '' + description: 'A user participating in some way in the planning or realization of a camp.' properties: - '@context': - oneOf: - - - additionalProperties: true + data: + properties: + attributes: properties: - '@vocab': + _id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] + abbreviation: + description: 'The abbreviation in the avatar.' + example: AB + maxLength: 2 + type: ['null', string] + color: + description: 'The color of the avatar as a hex color string.' + example: '#4DBB52' + maxLength: 8 + pattern: '^(#[0-9a-zA-Z]{6})$' + type: ['null', string] + inviteEmail: + description: |- + The receiver email address of the invitation email, in case the collaboration does not yet have + a user account. Either this field or the user field should be null. + example: some-email@example.com + externalDocs: { url: 'https://schema.org/email' } + format: email + maxLength: 128 + minLength: 1 + readOnly: true + type: ['null', string] + role: + description: |- + The role that this person has in the camp. Depending on the role, the collaborator might have + different access rights. There must always be at least one manager in a camp. + enum: [guest, manager, member] + example: member + maxLength: 16 + type: string + status: + default: invited + description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' + enum: [established, inactive, invited] + example: inactive + maxLength: 16 + readOnly: true type: string required: - - '@vocab' - - hydra + - role + - status type: object - - + id: type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - activities: - description: |- - All the programme that will be carried out during the camp. An activity may be carried out - multiple times in the same camp. - example: '/activities?camp=%2Fcamps%2F1a2b3c4d' + relationships: + properties: + camp: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + user: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + required: + - camp + type: object + type: + type: string + required: + - id + - type + type: object + included: + description: 'Related resources requested via the "include" query parameter.' + externalDocs: + url: 'https://jsonapi.org/format/#fetching-includes' items: - example: 'https://example.com/' - format: iri-reference - type: string + anyOf: + - + $ref: '#/components/schemas/User.jsonapi' + - + $ref: '#/components/schemas/User.jsonapi' readOnly: true type: array - addressCity: - description: 'The name of the town where the camp will take place.' - example: Hintertüpfingen - maxLength: 128 - type: - - 'null' - - string - addressName: - description: 'A textual description of the location of the camp.' - example: 'Wiese hinter der alten Mühle' - maxLength: 128 - type: - - 'null' - - string - addressStreet: - description: 'The street name and number (if any) of the location of the camp.' - example: 'Schönriedweg 23' - maxLength: 128 + type: object + CampCollaboration.jsonhal-read: + deprecated: false + description: 'A user participating in some way in the planning or realization of a camp.' + properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + abbreviation: + description: 'The abbreviation in the avatar.' + example: AB type: - 'null' - string - addressZipcode: - description: 'The zipcode of the location of the camp.' - example: '1234' - maxLength: 128 + camp: + description: 'The camp that the collaborator is part of. Cannot be changed once the campCollaboration is created.' + example: /camps/1a2b3c4d + format: iri-reference + type: string + color: + description: 'The color of the avatar as a hex color string.' + example: '#4DBB52' type: - 'null' - string - campCollaborations: - items: - example: 'https://example.com/' - format: iri-reference - type: string - type: array - categories: - description: 'Types of programme, such as sports activities or meal times.' - example: '["/categories/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d readOnly: true - type: array - coachName: - description: 'The name of the Y+S coach who is in charge of the camp.' - example: 'Albert Anderegg' - maxLength: 64 + type: string + inviteEmail: + description: |- + The receiver email address of the invitation email, in case the collaboration does not yet have + a user account. Either this field or the user field should be null. + example: some-email@example.com type: - 'null' - string - courseKind: - description: 'The official name for the type of this course.' - example: 'PBS AG 123-23' - maxLength: 64 + role: + description: |- + The role that this person has in the camp. Depending on the role, the collaborator might have + different access rights. There must always be at least one manager in a camp. + example: member + type: string + status: + default: invited + description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' + example: inactive + type: string + user: + description: 'The person that is collaborating in the camp. Cannot be changed once the campCollaboration is established.' + example: /users/1a2b3c4d + format: iri-reference type: - 'null' - string - courseNumber: - description: 'The official course number, identifying this course.' - example: 'PBS AG 123-23' - maxLength: 64 + type: object + CampCollaboration.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: + deprecated: false + description: '' + properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + abbreviation: + description: 'The abbreviation in the avatar.' + example: AB + maxLength: 2 type: - 'null' - string - creator: - description: |- - The person that created the camp. This value never changes, even when the person - leaves the camp. - example: 'https://example.com/' + camp: + description: 'The camp that the collaborator is part of. Cannot be changed once the campCollaboration is created.' + example: /camps/1a2b3c4d format: iri-reference - readOnly: true type: string + color: + description: 'The color of the avatar as a hex color string.' + example: '#4DBB52' + maxLength: 8 + pattern: '^(#[0-9a-zA-Z]{6})$' + type: + - 'null' + - string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - isPrototype: - description: 'Whether this camp may serve as a template for creating other camps.' - example: true - readOnly: true - type: boolean - kind: - description: 'Rough categorization of the camp (house, tent, traveling, summer, autumn).' - example: Zeltlager - maxLength: 64 - type: - - 'null' - - string - materialLists: + inviteEmail: description: |- - Lists for collecting the required materials needed for carrying out the programme. Each collaborator - has a material list, and there may be more, such as shopping lists. - example: '["/material_lists/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - motto: - description: "The thematic topic (if any) of the camp's programme and storyline." - example: Piraten + The receiver email address of the invitation email, in case the collaboration does not yet have + a user account. Either this field or the user field should be null. + example: some-email@example.com + externalDocs: + url: 'https://schema.org/email' + format: email maxLength: 128 + minLength: 1 type: - 'null' - string - name: - description: 'A short name for the camp.' - example: 'SoLa 2022' - maxLength: 32 + role: + description: |- + The role that this person has in the camp. Depending on the role, the collaborator might have + different access rights. There must always be at least one manager in a camp. + enum: + - guest + - manager + - member + example: member + maxLength: 16 type: string - organizer: - description: 'The name of the organization which plans and carries out the camp.' - example: 'Pfadi Luftig' - maxLength: 64 + status: + default: invited + description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' + enum: + - established + - inactive + - invited + example: inactive + maxLength: 16 + type: string + user: + anyOf: + - + $ref: '#/components/schemas/User.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + - + type: 'null' + readOnly: true + required: + - camp + - role + - status + type: object + CampCollaboration.jsonhal-read_CampCollaboration.Camp_CampCollaboration.User: + deprecated: false + description: 'A user participating in some way in the planning or realization of a camp.' + properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + abbreviation: + description: 'The abbreviation in the avatar.' + example: AB + maxLength: 2 type: - 'null' - string - periods: - description: 'The time periods of the camp, there must be at least one. Periods in a camp may not overlap.' - example: + camp: + anyOf: - - description: Hauptlager - end: '2022-01-08' - start: '2022-01-01' - items: - example: 'https://example.com/' - format: iri-reference - type: string - type: array - printYSLogoOnPicasso: - description: 'Whether the Y+S logo should be printed on the picasso of this camp.' - example: true - type: boolean - profiles: - description: 'All profiles of the users collaborating in this camp.' - example: '/profiles?user.collaborations.camp=%2Fcamps%2F1a2b3c4d' - items: - example: 'https://example.com/' - format: iri-reference - type: string + $ref: '#/components/schemas/Camp.jsonhal-read_CampCollaboration.Camp_CampCollaboration.User' + - + type: 'null' readOnly: true - type: array - progressLabels: - description: 'All the progress labels within this camp.' - example: '["/progress_labels/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + color: + description: 'The color of the avatar as a hex color string.' + example: '#4DBB52' + maxLength: 8 + pattern: '^(#[0-9a-zA-Z]{6})$' + type: + - 'null' + - string + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 readOnly: true - type: array - title: - description: 'The full title of the camp.' - example: 'Abteilungs-Sommerlager 2022' - maxLength: 32 type: string - trainingAdvisorName: - description: 'The name of the training advisor who is in charge of the course.' - example: 'Albert Anderegg' - maxLength: 64 + inviteEmail: + description: |- + The receiver email address of the invitation email, in case the collaboration does not yet have + a user account. Either this field or the user field should be null. + example: some-email@example.com + externalDocs: + url: 'https://schema.org/email' + format: email + maxLength: 128 + minLength: 1 type: - 'null' - string + role: + description: |- + The role that this person has in the camp. Depending on the role, the collaborator might have + different access rights. There must always be at least one manager in a camp. + enum: + - guest + - manager + - member + example: member + maxLength: 16 + type: string + status: + default: invited + description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' + enum: + - established + - inactive + - invited + example: inactive + maxLength: 16 + type: string + user: + anyOf: + - + $ref: '#/components/schemas/User.jsonhal-read_CampCollaboration.Camp_CampCollaboration.User' + - + type: 'null' + readOnly: true required: - - activities - - campCollaborations - - categories - - materialLists - - name - - periods - - printYSLogoOnPicasso - - progressLabels - - title + - camp + - role + - status type: object - Camp.jsonld-read_Period.Camp_Period.Days: + CampCollaboration.jsonhal-write_create: deprecated: false - description: '' + description: 'A user participating in some way in the planning or realization of a camp.' + properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + abbreviation: + description: 'The abbreviation in the avatar.' + example: AB + maxLength: 2 + type: + - 'null' + - string + camp: + description: 'The camp that the collaborator is part of. Cannot be changed once the campCollaboration is created.' + example: /camps/1a2b3c4d + format: iri-reference + type: string + color: + description: 'The color of the avatar as a hex color string.' + example: '#4DBB52' + maxLength: 8 + pattern: '^(#[0-9a-zA-Z]{6})$' + type: + - 'null' + - string + inviteEmail: + description: |- + The receiver email address of the invitation email, in case the collaboration does not yet have + a user account. Either this field or the user field should be null. + example: some-email@example.com + externalDocs: + url: 'https://schema.org/email' + format: email + maxLength: 128 + minLength: 1 + type: + - 'null' + - string + role: + description: |- + The role that this person has in the camp. Depending on the role, the collaborator might have + different access rights. There must always be at least one manager in a camp. + enum: + - guest + - manager + - member + example: member + maxLength: 16 + type: string + user: + description: 'The person that is collaborating in the camp. Cannot be changed once the campCollaboration is established.' + example: /users/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + required: + - camp + - role + type: object + CampCollaboration.jsonld-read: + deprecated: false + description: 'A user participating in some way in the planning or realization of a camp.' properties: '@context': oneOf: @@ -6280,341 +6047,219 @@ components: '@type': readOnly: true type: string - activities: - description: |- - All the programme that will be carried out during the camp. An activity may be carried out - multiple times in the same camp. - example: '/activities?camp=%2Fcamps%2F1a2b3c4d' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - addressCity: - description: 'The name of the town where the camp will take place.' - example: Hintertüpfingen - maxLength: 128 + abbreviation: + description: 'The abbreviation in the avatar.' + example: AB type: - 'null' - string - addressName: - description: 'A textual description of the location of the camp.' - example: 'Wiese hinter der alten Mühle' - maxLength: 128 + camp: + description: 'The camp that the collaborator is part of. Cannot be changed once the campCollaboration is created.' + example: /camps/1a2b3c4d + format: iri-reference + type: string + color: + description: 'The color of the avatar as a hex color string.' + example: '#4DBB52' type: - 'null' - string - addressStreet: - description: 'The street name and number (if any) of the location of the camp.' - example: 'Schönriedweg 23' - maxLength: 128 + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + readOnly: true + type: string + inviteEmail: + description: |- + The receiver email address of the invitation email, in case the collaboration does not yet have + a user account. Either this field or the user field should be null. + example: some-email@example.com type: - 'null' - string - addressZipcode: - description: 'The zipcode of the location of the camp.' - example: '1234' - maxLength: 128 + role: + description: |- + The role that this person has in the camp. Depending on the role, the collaborator might have + different access rights. There must always be at least one manager in a camp. + example: member + type: string + status: + default: invited + description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' + example: inactive + type: string + user: + description: 'The person that is collaborating in the camp. Cannot be changed once the campCollaboration is established.' + example: /users/1a2b3c4d + format: iri-reference type: - 'null' - string - campCollaborations: - items: - example: 'https://example.com/' - format: iri-reference - type: string - type: array - categories: - description: 'Types of programme, such as sports activities or meal times.' - example: '["/categories/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + type: object + CampCollaboration.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: + deprecated: false + description: '' + properties: + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string readOnly: true - type: array - coachName: - description: 'The name of the Y+S coach who is in charge of the camp.' - example: 'Albert Anderegg' - maxLength: 64 + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + abbreviation: + description: 'The abbreviation in the avatar.' + example: AB + maxLength: 2 type: - 'null' - string - courseKind: - description: 'The official name for the type of this course.' - example: 'PBS AG 123-23' - maxLength: 64 + camp: + description: 'The camp that the collaborator is part of. Cannot be changed once the campCollaboration is created.' + example: /camps/1a2b3c4d + format: iri-reference + type: string + color: + description: 'The color of the avatar as a hex color string.' + example: '#4DBB52' + maxLength: 8 + pattern: '^(#[0-9a-zA-Z]{6})$' type: - 'null' - string - courseNumber: - description: 'The official course number, identifying this course.' - example: 'PBS AG 123-23' - maxLength: 64 + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + inviteEmail: + description: |- + The receiver email address of the invitation email, in case the collaboration does not yet have + a user account. Either this field or the user field should be null. + example: some-email@example.com + externalDocs: + url: 'https://schema.org/email' + format: email + maxLength: 128 + minLength: 1 type: - 'null' - string - creator: + role: description: |- - The person that created the camp. This value never changes, even when the person - leaves the camp. - example: 'https://example.com/' - format: iri-reference - readOnly: true + The role that this person has in the camp. Depending on the role, the collaborator might have + different access rights. There must always be at least one manager in a camp. + enum: + - guest + - manager + - member + example: member + maxLength: 16 type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d + status: + default: invited + description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' + enum: + - established + - inactive + - invited + example: inactive maxLength: 16 + type: string + user: + anyOf: + - + $ref: '#/components/schemas/User.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + - + type: 'null' + readOnly: true + required: + - camp + - role + - status + type: object + CampCollaboration.jsonld-read_CampCollaboration.Camp_CampCollaboration.User: + deprecated: false + description: 'A user participating in some way in the planning or realization of a camp.' + properties: + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string + readOnly: true + '@id': readOnly: true type: string - isPrototype: - description: 'Whether this camp may serve as a template for creating other camps.' - example: true + '@type': readOnly: true - type: boolean - kind: - description: 'Rough categorization of the camp (house, tent, traveling, summer, autumn).' - example: Zeltlager - maxLength: 64 + type: string + abbreviation: + description: 'The abbreviation in the avatar.' + example: AB + maxLength: 2 type: - 'null' - string - materialLists: - description: |- - Lists for collecting the required materials needed for carrying out the programme. Each collaborator - has a material list, and there may be more, such as shopping lists. - example: '["/material_lists/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + camp: + anyOf: + - + $ref: '#/components/schemas/Camp.jsonld-read_CampCollaboration.Camp_CampCollaboration.User' + - + type: 'null' readOnly: true - type: array - motto: - description: "The thematic topic (if any) of the camp's programme and storyline." - example: Piraten - maxLength: 128 + color: + description: 'The color of the avatar as a hex color string.' + example: '#4DBB52' + maxLength: 8 + pattern: '^(#[0-9a-zA-Z]{6})$' type: - 'null' - string - name: - description: 'A short name for the camp.' - example: 'SoLa 2022' - maxLength: 32 + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true type: string - organizer: - description: 'The name of the organization which plans and carries out the camp.' - example: 'Pfadi Luftig' - maxLength: 64 - type: - - 'null' - - string - periods: - description: 'The time periods of the camp, there must be at least one. Periods in a camp may not overlap.' - example: - - - description: Hauptlager - end: '2022-01-08' - start: '2022-01-01' - items: - example: 'https://example.com/' - format: iri-reference - type: string - type: array - printYSLogoOnPicasso: - description: 'Whether the Y+S logo should be printed on the picasso of this camp.' - example: true - type: boolean - profiles: - description: 'All profiles of the users collaborating in this camp.' - example: '/profiles?user.collaborations.camp=%2Fcamps%2F1a2b3c4d' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - progressLabels: - description: 'All the progress labels within this camp.' - example: '["/progress_labels/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - title: - description: 'The full title of the camp.' - example: 'Abteilungs-Sommerlager 2022' - maxLength: 32 - type: string - trainingAdvisorName: - description: 'The name of the training advisor who is in charge of the course.' - example: 'Albert Anderegg' - maxLength: 64 - type: - - 'null' - - string - required: - - activities - - campCollaborations - - categories - - materialLists - - name - - periods - - printYSLogoOnPicasso - - progressLabels - - title - type: object - Camp.jsonld-write_create: - deprecated: false - description: |- - The main entity that eCamp is designed to manage. Contains programme which may be - distributed across multiple time periods. - properties: - addressCity: - description: 'The name of the town where the camp will take place.' - example: Hintertüpfingen - maxLength: 128 - type: - - 'null' - - string - addressName: - description: 'A textual description of the location of the camp.' - example: 'Wiese hinter der alten Mühle' - maxLength: 128 - type: - - 'null' - - string - addressStreet: - description: 'The street name and number (if any) of the location of the camp.' - example: 'Schönriedweg 23' - maxLength: 128 - type: - - 'null' - - string - addressZipcode: - description: 'The zipcode of the location of the camp.' - example: '1234' - maxLength: 128 - type: - - 'null' - - string - campPrototype: - description: 'The prototype camp that will be used as a template to create this camp.' - example: /camps/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - writeOnly: true - coachName: - description: 'The name of the Y+S coach who is in charge of the camp.' - example: 'Albert Anderegg' - maxLength: 64 - type: - - 'null' - - string - courseKind: - description: 'The official name for the type of this course.' - example: 'PBS AG 123-23' - maxLength: 64 - type: - - 'null' - - string - courseNumber: - description: 'The official course number, identifying this course.' - example: 'PBS AG 123-23' - maxLength: 64 - type: - - 'null' - - string - kind: - description: 'Rough categorization of the camp (house, tent, traveling, summer, autumn).' - example: Zeltlager - maxLength: 64 - type: - - 'null' - - string - motto: - description: "The thematic topic (if any) of the camp's programme and storyline." - example: Piraten - maxLength: 128 - type: - - 'null' - - string - name: - description: 'A short name for the camp.' - example: 'SoLa 2022' - maxLength: 32 - type: string - organizer: - description: 'The name of the organization which plans and carries out the camp.' - example: 'Pfadi Luftig' - maxLength: 64 - type: - - 'null' - - string - periods: - description: 'The time periods of the camp, there must be at least one. Periods in a camp may not overlap.' - example: - - - description: Hauptlager - end: '2022-01-08' - start: '2022-01-01' - items: - $ref: '#/components/schemas/Period.jsonld-write_create' - minItems: 1 - type: array - printYSLogoOnPicasso: - description: 'Whether the Y+S logo should be printed on the picasso of this camp.' - example: true - type: boolean - title: - description: 'The full title of the camp.' - example: 'Abteilungs-Sommerlager 2022' - maxLength: 32 - type: string - trainingAdvisorName: - description: 'The name of the training advisor who is in charge of the course.' - example: 'Albert Anderegg' - maxLength: 64 - type: - - 'null' - - string - required: - - name - - periods - - printYSLogoOnPicasso - - title - type: object - CampCollaboration-read: - deprecated: false - description: 'A user participating in some way in the planning or realization of a camp.' - properties: - camp: - description: 'The camp that the collaborator is part of. Cannot be changed once the campCollaboration is created.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - inviteEmail: - description: |- - The receiver email address of the invitation email, in case the collaboration does not yet have - a user account. Either this field or the user field should be null. - example: some-email@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 128 - minLength: 1 + inviteEmail: + description: |- + The receiver email address of the invitation email, in case the collaboration does not yet have + a user account. Either this field or the user field should be null. + example: some-email@example.com + externalDocs: + url: 'https://schema.org/email' + format: email + maxLength: 128 + minLength: 1 type: - 'null' - string @@ -6640,32 +6285,41 @@ components: maxLength: 16 type: string user: - description: 'The person that is collaborating in the camp. Cannot be changed once the campCollaboration is established.' - example: /users/1a2b3c4d - format: iri-reference - type: - - 'null' - - string + anyOf: + - + $ref: '#/components/schemas/User.jsonld-read_CampCollaboration.Camp_CampCollaboration.User' + - + type: 'null' + readOnly: true required: - camp - role - status type: object - CampCollaboration-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: + CampCollaboration.jsonld-write_create: deprecated: false - description: '' + description: 'A user participating in some way in the planning or realization of a camp.' properties: + abbreviation: + description: 'The abbreviation in the avatar.' + example: AB + maxLength: 2 + type: + - 'null' + - string camp: description: 'The camp that the collaborator is part of. Cannot be changed once the campCollaboration is created.' example: /camps/1a2b3c4d format: iri-reference type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string + color: + description: 'The color of the avatar as a hex color string.' + example: '#4DBB52' + maxLength: 8 + pattern: '^(#[0-9a-zA-Z]{6})$' + type: + - 'null' + - string inviteEmail: description: |- The receiver email address of the invitation email, in case the collaboration does not yet have @@ -6690,433 +6344,463 @@ components: example: member maxLength: 16 type: string - status: - default: invited - description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' - enum: - - established - - inactive - - invited - example: inactive - maxLength: 16 - type: string user: - anyOf: - - - $ref: '#/components/schemas/User-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' - - - type: 'null' - readOnly: true + description: 'The person that is collaborating in the camp. Cannot be changed once the campCollaboration is established.' + example: /users/1a2b3c4d + format: iri-reference + type: + - 'null' + - string required: - camp - role - - status type: object - CampCollaboration-read_CampCollaboration.Camp_CampCollaboration.User: + Category-read: deprecated: false - description: 'A user participating in some way in the planning or realization of a camp.' - properties: - camp: - anyOf: - - - $ref: '#/components/schemas/Camp-read_CampCollaboration.Camp_CampCollaboration.User' - - - type: 'null' + description: |- + A type of programme, such as sports activities or meal times, is called a category. A category + determines color and numbering scheme of the associated activities, and is used for marking + "similar" activities. A category may contain some skeleton programme which is used as a blueprint + when creating a new activity in the category. + properties: + camp: + description: 'The camp to which this category belongs. May not be changed once the category is created.' + example: /camps/1a2b3c4d + format: iri-reference + type: string + color: + description: 'The color of the activities in this category, as a hex color string.' + example: '#4DBB52' + type: string + contentNodes: + description: 'All the content nodes that make up the tree of programme content.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string readOnly: true + type: array id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d - maxLength: 16 readOnly: true type: string - inviteEmail: - description: |- - The receiver email address of the invitation email, in case the collaboration does not yet have - a user account. Either this field or the user field should be null. - example: some-email@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 128 - minLength: 1 - type: - - 'null' - - string - role: - description: |- - The role that this person has in the camp. Depending on the role, the collaborator might have - different access rights. There must always be at least one manager in a camp. - enum: - - guest - - manager - - member - example: member - maxLength: 16 + name: + description: 'The full name of the category.' + example: Lagersport type: string - status: - default: invited - description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' - enum: - - established - - inactive - - invited - example: inactive - maxLength: 16 + numberingStyle: + default: '1' + description: |- + Specifies whether the schedule entries of the activities in this category should be numbered + using arabic numbers, roman numerals or letters. + example: '1' type: string - user: - anyOf: - - - $ref: '#/components/schemas/User-read_CampCollaboration.Camp_CampCollaboration.User' - - - type: 'null' + preferredContentTypes: + description: 'The content types that are most likely to be useful for planning programme of this category.' + example: '["/content_types/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + type: array + rootContentNode: + $ref: '#/components/schemas/ColumnLayout-read' + description: |- + The programme contents, organized as a tree of content nodes. The root content node cannot be + exchanged, but all the contents attached to it can. + example: /content_nodes/1a2b3c4d readOnly: true - required: - - camp - - role - - status - type: object - CampCollaboration-resend_invitation: - deprecated: false - description: 'A user participating in some way in the planning or realization of a camp.' + short: + description: |- + An abbreviated name of the category, for display in tight spaces, often together with the day and + schedule entry number, e.g. LS 3.a, where LS is the category's short name. + example: LS + type: string type: object - CampCollaboration-write_create: + Category-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: deprecated: false - description: 'A user participating in some way in the planning or realization of a camp.' + description: '' properties: camp: - description: 'The camp that the collaborator is part of. Cannot be changed once the campCollaboration is created.' + description: 'The camp to which this category belongs. May not be changed once the category is created.' example: /camps/1a2b3c4d format: iri-reference type: string - inviteEmail: - description: |- - The receiver email address of the invitation email, in case the collaboration does not yet have - a user account. Either this field or the user field should be null. - example: some-email@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 128 - minLength: 1 - type: - - 'null' - - string - role: - description: |- - The role that this person has in the camp. Depending on the role, the collaborator might have - different access rights. There must always be at least one manager in a camp. - enum: - - guest - - manager - - member - example: member + color: + description: 'The color of the activities in this category, as a hex color string.' + example: '#4DBB52' + maxLength: 8 + pattern: '^(#[0-9a-zA-Z]{6})$' + type: string + contentNodes: + description: 'All the content nodes that make up the tree of programme content.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d maxLength: 16 + readOnly: true type: string - user: - description: 'The person that is collaborating in the camp. Cannot be changed once the campCollaboration is established.' - example: /users/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - required: - - camp - - role - type: object - CampCollaboration-write_update: - deprecated: false - description: 'A user participating in some way in the planning or realization of a camp.' - properties: - role: + name: + description: 'The full name of the category.' + example: Lagersport + maxLength: 32 + type: string + numberingStyle: + default: '1' description: |- - The role that this person has in the camp. Depending on the role, the collaborator might have - different access rights. There must always be at least one manager in a camp. + Specifies whether the schedule entries of the activities in this category should be numbered + using arabic numbers, roman numerals or letters. enum: - - guest - - manager - - member - example: member - maxLength: 16 + - '-' + - '1' + - A + - I + - a + - i + example: '1' + maxLength: 1 type: string - status: - default: invited - description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' - enum: - - established - - inactive - - invited - example: inactive + preferredContentTypes: + description: 'The content types that are most likely to be useful for planning programme of this category.' + example: '["/content_types/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + type: array + rootContentNode: + $ref: '#/components/schemas/ColumnLayout-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + description: |- + The programme contents, organized as a tree of content nodes. The root content node cannot be + exchanged, but all the contents attached to it can. + example: /content_nodes/1a2b3c4d + readOnly: true + short: + description: |- + An abbreviated name of the category, for display in tight spaces, often together with the day and + schedule entry number, e.g. LS 3.a, where LS is the category's short name. + example: LS maxLength: 16 type: string required: - - role - - status + - camp + - color + - name + - numberingStyle + - preferredContentTypes + - short type: object - CampCollaboration.jsonapi-read: + Category-read_Category.PreferredContentTypes_Category.ContentNodes: deprecated: false - description: 'A user participating in some way in the planning or realization of a camp.' + description: |- + A type of programme, such as sports activities or meal times, is called a category. A category + determines color and numbering scheme of the associated activities, and is used for marking + "similar" activities. A category may contain some skeleton programme which is used as a blueprint + when creating a new activity in the category. properties: camp: - description: 'The camp that the collaborator is part of. Cannot be changed once the campCollaboration is created.' + description: 'The camp to which this category belongs. May not be changed once the category is created.' example: /camps/1a2b3c4d format: iri-reference type: string + color: + description: 'The color of the activities in this category, as a hex color string.' + example: '#4DBB52' + maxLength: 8 + pattern: '^(#[0-9a-zA-Z]{6})$' + type: string + contentNodes: + description: 'All the content nodes that make up the tree of programme content.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - inviteEmail: - description: |- - The receiver email address of the invitation email, in case the collaboration does not yet have - a user account. Either this field or the user field should be null. - example: some-email@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 128 - minLength: 1 - type: - - 'null' - - string - role: + name: + description: 'The full name of the category.' + example: Lagersport + maxLength: 32 + type: string + numberingStyle: + default: '1' description: |- - The role that this person has in the camp. Depending on the role, the collaborator might have - different access rights. There must always be at least one manager in a camp. + Specifies whether the schedule entries of the activities in this category should be numbered + using arabic numbers, roman numerals or letters. enum: - - guest - - manager - - member - example: member - maxLength: 16 + - '-' + - '1' + - A + - I + - a + - i + example: '1' + maxLength: 1 type: string - status: - default: invited - description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' - enum: - - established - - inactive - - invited - example: inactive + preferredContentTypes: + items: + $ref: '#/components/schemas/ContentType-read_Category.PreferredContentTypes_Category.ContentNodes' + readOnly: true + type: array + rootContentNode: + $ref: '#/components/schemas/ColumnLayout-read_Category.PreferredContentTypes_Category.ContentNodes' + description: |- + The programme contents, organized as a tree of content nodes. The root content node cannot be + exchanged, but all the contents attached to it can. + example: /content_nodes/1a2b3c4d + readOnly: true + short: + description: |- + An abbreviated name of the category, for display in tight spaces, often together with the day and + schedule entry number, e.g. LS 3.a, where LS is the category's short name. + example: LS maxLength: 16 type: string - user: - description: 'The person that is collaborating in the camp. Cannot be changed once the campCollaboration is established.' - example: /users/1a2b3c4d - format: iri-reference - type: - - 'null' - - string required: - camp - - role - - status + - color + - name + - numberingStyle + - preferredContentTypes + - short type: object - CampCollaboration.jsonapi-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: + Category-write_create: deprecated: false - description: '' + description: |- + A type of programme, such as sports activities or meal times, is called a category. A category + determines color and numbering scheme of the associated activities, and is used for marking + "similar" activities. A category may contain some skeleton programme which is used as a blueprint + when creating a new activity in the category. properties: camp: - description: 'The camp that the collaborator is part of. Cannot be changed once the campCollaboration is created.' + description: 'The camp to which this category belongs. May not be changed once the category is created.' example: /camps/1a2b3c4d format: iri-reference type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true + color: + description: 'The color of the activities in this category, as a hex color string.' + example: '#4DBB52' + maxLength: 8 + pattern: '^(#[0-9a-zA-Z]{6})$' type: string - inviteEmail: - description: |- - The receiver email address of the invitation email, in case the collaboration does not yet have - a user account. Either this field or the user field should be null. - example: some-email@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 128 - minLength: 1 + copyCategorySource: + description: 'Copy contents from this source category or activity.' + example: /categories/1a2b3c4d + format: iri-reference type: - 'null' - string - role: + name: + description: 'The full name of the category.' + example: Lagersport + maxLength: 32 + type: string + numberingStyle: + default: '1' description: |- - The role that this person has in the camp. Depending on the role, the collaborator might have - different access rights. There must always be at least one manager in a camp. + Specifies whether the schedule entries of the activities in this category should be numbered + using arabic numbers, roman numerals or letters. enum: - - guest - - manager - - member - example: member - maxLength: 16 + - '-' + - '1' + - A + - I + - a + - i + example: '1' + maxLength: 1 type: string - status: - default: invited - description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' - enum: - - established - - inactive - - invited - example: inactive + preferredContentTypes: + description: 'The content types that are most likely to be useful for planning programme of this category.' + example: '["/content_types/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + type: array + short: + description: |- + An abbreviated name of the category, for display in tight spaces, often together with the day and + schedule entry number, e.g. LS 3.a, where LS is the category's short name. + example: LS maxLength: 16 type: string - user: - anyOf: - - - $ref: '#/components/schemas/User.jsonapi-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' - - - type: 'null' - readOnly: true required: - camp - - role - - status + - color + - name + - numberingStyle + - preferredContentTypes + - short type: object - CampCollaboration.jsonapi-read_CampCollaboration.Camp_CampCollaboration.User: + Category-write_update: deprecated: false - description: 'A user participating in some way in the planning or realization of a camp.' + description: |- + A type of programme, such as sports activities or meal times, is called a category. A category + determines color and numbering scheme of the associated activities, and is used for marking + "similar" activities. A category may contain some skeleton programme which is used as a blueprint + when creating a new activity in the category. properties: - camp: - anyOf: - - - $ref: '#/components/schemas/Camp.jsonapi-read_CampCollaboration.Camp_CampCollaboration.User' - - - type: 'null' - readOnly: true - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true + color: + description: 'The color of the activities in this category, as a hex color string.' + example: '#4DBB52' + maxLength: 8 + pattern: '^(#[0-9a-zA-Z]{6})$' type: string - inviteEmail: - description: |- - The receiver email address of the invitation email, in case the collaboration does not yet have - a user account. Either this field or the user field should be null. - example: some-email@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 128 - minLength: 1 - type: - - 'null' - - string - role: + name: + description: 'The full name of the category.' + example: Lagersport + maxLength: 32 + type: string + numberingStyle: + default: '1' description: |- - The role that this person has in the camp. Depending on the role, the collaborator might have - different access rights. There must always be at least one manager in a camp. + Specifies whether the schedule entries of the activities in this category should be numbered + using arabic numbers, roman numerals or letters. enum: - - guest - - manager - - member - example: member - maxLength: 16 + - '-' + - '1' + - A + - I + - a + - i + example: '1' + maxLength: 1 type: string - status: - default: invited - description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' - enum: - - established - - inactive - - invited - example: inactive + preferredContentTypes: + description: 'The content types that are most likely to be useful for planning programme of this category.' + example: '["/content_types/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + type: array + short: + description: |- + An abbreviated name of the category, for display in tight spaces, often together with the day and + schedule entry number, e.g. LS 3.a, where LS is the category's short name. + example: LS maxLength: 16 type: string - user: - anyOf: - - - $ref: '#/components/schemas/User.jsonapi-read_CampCollaboration.Camp_CampCollaboration.User' - - - type: 'null' - readOnly: true required: - - camp - - role - - status - type: object - CampCollaboration.jsonapi-resend_invitation: - deprecated: false - description: 'A user participating in some way in the planning or realization of a camp.' + - color + - name + - numberingStyle + - preferredContentTypes + - short type: object - CampCollaboration.jsonapi-write_create: + Category.jsonapi: deprecated: false - description: 'A user participating in some way in the planning or realization of a camp.' + description: |- + A type of programme, such as sports activities or meal times, is called a category. A category + determines color and numbering scheme of the associated activities, and is used for marking + "similar" activities. A category may contain some skeleton programme which is used as a blueprint + when creating a new activity in the category. properties: - camp: - description: 'The camp that the collaborator is part of. Cannot be changed once the campCollaboration is created.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - inviteEmail: - description: |- - The receiver email address of the invitation email, in case the collaboration does not yet have - a user account. Either this field or the user field should be null. - example: some-email@example.com + data: + properties: + attributes: + properties: + _id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + color: + description: 'The color of the activities in this category, as a hex color string.' + example: '#4DBB52' + maxLength: 8 + pattern: '^(#[0-9a-zA-Z]{6})$' + type: string + name: + description: 'The full name of the category.' + example: Lagersport + maxLength: 32 + type: string + numberingStyle: + default: '1' + description: |- + Specifies whether the schedule entries of the activities in this category should be numbered + using arabic numbers, roman numerals or letters. + enum: ['-', '1', A, I, a, i] + example: '1' + maxLength: 1 + type: string + short: + description: |- + An abbreviated name of the category, for display in tight spaces, often together with the day and + schedule entry number, e.g. LS 3.a, where LS is the category's short name. + example: LS + maxLength: 16 + type: string + required: + - color + - name + - numberingStyle + - short + type: object + id: + type: string + relationships: + properties: + camp: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + contentNodes: + properties: { data: { items: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object }, type: array } } + preferredContentTypes: + properties: { data: { items: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object }, type: array } } + rootContentNode: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + required: + - camp + - preferredContentTypes + type: object + type: + type: string + required: + - id + - type + type: object + included: + description: 'Related resources requested via the "include" query parameter.' externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 128 - minLength: 1 - type: - - 'null' - - string - role: - description: |- - The role that this person has in the camp. Depending on the role, the collaborator might have - different access rights. There must always be at least one manager in a camp. - enum: - - guest - - manager - - member - example: member - maxLength: 16 - type: string - user: - description: 'The person that is collaborating in the camp. Cannot be changed once the campCollaboration is established.' - example: /users/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - required: - - camp - - role - type: object - CampCollaboration.jsonapi-write_update: - deprecated: false - description: 'A user participating in some way in the planning or realization of a camp.' - properties: - role: - description: |- - The role that this person has in the camp. Depending on the role, the collaborator might have - different access rights. There must always be at least one manager in a camp. - enum: - - guest - - manager - - member - example: member - maxLength: 16 - type: string - status: - default: invited - description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' - enum: - - established - - inactive - - invited - example: inactive - maxLength: 16 - type: string - required: - - role - - status + url: 'https://jsonapi.org/format/#fetching-includes' + items: + anyOf: + - [] + - + $ref: '#/components/schemas/Camp.jsonapi' + - + $ref: '#/components/schemas/Camp.jsonapi' + - + $ref: '#/components/schemas/Camp.jsonapi' + readOnly: true + type: array type: object - CampCollaboration.jsonhal-read: + Category.jsonhal-read: deprecated: false - description: 'A user participating in some way in the planning or realization of a camp.' + description: |- + A type of programme, such as sports activities or meal times, is called a category. A category + determines color and numbering scheme of the associated activities, and is used for marking + "similar" activities. A category may contain some skeleton programme which is used as a blueprint + when creating a new activity in the category. properties: _links: properties: @@ -7128,63 +6812,62 @@ components: type: object type: object camp: - description: 'The camp that the collaborator is part of. Cannot be changed once the campCollaboration is created.' + description: 'The camp to which this category belongs. May not be changed once the category is created.' example: /camps/1a2b3c4d format: iri-reference type: string + color: + description: 'The color of the activities in this category, as a hex color string.' + example: '#4DBB52' + type: string + contentNodes: + description: 'All the content nodes that make up the tree of programme content.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d - maxLength: 16 readOnly: true type: string - inviteEmail: - description: |- - The receiver email address of the invitation email, in case the collaboration does not yet have - a user account. Either this field or the user field should be null. - example: some-email@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 128 - minLength: 1 - type: - - 'null' - - string - role: + name: + description: 'The full name of the category.' + example: Lagersport + type: string + numberingStyle: + default: '1' description: |- - The role that this person has in the camp. Depending on the role, the collaborator might have - different access rights. There must always be at least one manager in a camp. - enum: - - guest - - manager - - member - example: member - maxLength: 16 + Specifies whether the schedule entries of the activities in this category should be numbered + using arabic numbers, roman numerals or letters. + example: '1' type: string - status: - default: invited - description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' - enum: - - established - - inactive - - invited - example: inactive - maxLength: 16 + preferredContentTypes: + description: 'The content types that are most likely to be useful for planning programme of this category.' + example: '["/content_types/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + type: array + rootContentNode: + $ref: '#/components/schemas/ColumnLayout.jsonhal-read' + description: |- + The programme contents, organized as a tree of content nodes. The root content node cannot be + exchanged, but all the contents attached to it can. + example: /content_nodes/1a2b3c4d + readOnly: true + short: + description: |- + An abbreviated name of the category, for display in tight spaces, often together with the day and + schedule entry number, e.g. LS 3.a, where LS is the category's short name. + example: LS type: string - user: - description: 'The person that is collaborating in the camp. Cannot be changed once the campCollaboration is established.' - example: /users/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - required: - - camp - - role - - status type: object - CampCollaboration.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: + Category.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: deprecated: false description: '' properties: @@ -7198,65 +6881,88 @@ components: type: object type: object camp: - description: 'The camp that the collaborator is part of. Cannot be changed once the campCollaboration is created.' + description: 'The camp to which this category belongs. May not be changed once the category is created.' example: /camps/1a2b3c4d format: iri-reference type: string + color: + description: 'The color of the activities in this category, as a hex color string.' + example: '#4DBB52' + maxLength: 8 + pattern: '^(#[0-9a-zA-Z]{6})$' + type: string + contentNodes: + description: 'All the content nodes that make up the tree of programme content.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - inviteEmail: - description: |- - The receiver email address of the invitation email, in case the collaboration does not yet have - a user account. Either this field or the user field should be null. - example: some-email@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 128 - minLength: 1 - type: - - 'null' - - string - role: + name: + description: 'The full name of the category.' + example: Lagersport + maxLength: 32 + type: string + numberingStyle: + default: '1' description: |- - The role that this person has in the camp. Depending on the role, the collaborator might have - different access rights. There must always be at least one manager in a camp. + Specifies whether the schedule entries of the activities in this category should be numbered + using arabic numbers, roman numerals or letters. enum: - - guest - - manager - - member - example: member - maxLength: 16 + - '-' + - '1' + - A + - I + - a + - i + example: '1' + maxLength: 1 type: string - status: - default: invited - description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' - enum: - - established - - inactive - - invited - example: inactive + preferredContentTypes: + description: 'The content types that are most likely to be useful for planning programme of this category.' + example: '["/content_types/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + type: array + rootContentNode: + $ref: '#/components/schemas/ColumnLayout.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + description: |- + The programme contents, organized as a tree of content nodes. The root content node cannot be + exchanged, but all the contents attached to it can. + example: /content_nodes/1a2b3c4d + readOnly: true + short: + description: |- + An abbreviated name of the category, for display in tight spaces, often together with the day and + schedule entry number, e.g. LS 3.a, where LS is the category's short name. + example: LS maxLength: 16 type: string - user: - anyOf: - - - $ref: '#/components/schemas/User.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' - - - type: 'null' - readOnly: true required: - camp - - role - - status + - color + - name + - numberingStyle + - preferredContentTypes + - short type: object - CampCollaboration.jsonhal-read_CampCollaboration.Camp_CampCollaboration.User: + Category.jsonhal-read_Category.PreferredContentTypes_Category.ContentNodes: deprecated: false - description: 'A user participating in some way in the planning or realization of a camp.' + description: |- + A type of programme, such as sports activities or meal times, is called a category. A category + determines color and numbering scheme of the associated activities, and is used for marking + "similar" activities. A category may contain some skeleton programme which is used as a blueprint + when creating a new activity in the category. properties: _links: properties: @@ -7268,67 +6974,85 @@ components: type: object type: object camp: - anyOf: - - - $ref: '#/components/schemas/Camp.jsonhal-read_CampCollaboration.Camp_CampCollaboration.User' - - - type: 'null' + description: 'The camp to which this category belongs. May not be changed once the category is created.' + example: /camps/1a2b3c4d + format: iri-reference + type: string + color: + description: 'The color of the activities in this category, as a hex color string.' + example: '#4DBB52' + maxLength: 8 + pattern: '^(#[0-9a-zA-Z]{6})$' + type: string + contentNodes: + description: 'All the content nodes that make up the tree of programme content.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string readOnly: true + type: array id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - inviteEmail: - description: |- - The receiver email address of the invitation email, in case the collaboration does not yet have - a user account. Either this field or the user field should be null. - example: some-email@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 128 - minLength: 1 - type: - - 'null' - - string - role: + name: + description: 'The full name of the category.' + example: Lagersport + maxLength: 32 + type: string + numberingStyle: + default: '1' description: |- - The role that this person has in the camp. Depending on the role, the collaborator might have - different access rights. There must always be at least one manager in a camp. + Specifies whether the schedule entries of the activities in this category should be numbered + using arabic numbers, roman numerals or letters. enum: - - guest - - manager - - member - example: member - maxLength: 16 + - '-' + - '1' + - A + - I + - a + - i + example: '1' + maxLength: 1 type: string - status: - default: invited - description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' - enum: - - established - - inactive - - invited - example: inactive + preferredContentTypes: + items: + $ref: '#/components/schemas/ContentType.jsonhal-read_Category.PreferredContentTypes_Category.ContentNodes' + readOnly: true + type: array + rootContentNode: + $ref: '#/components/schemas/ColumnLayout.jsonhal-read_Category.PreferredContentTypes_Category.ContentNodes' + description: |- + The programme contents, organized as a tree of content nodes. The root content node cannot be + exchanged, but all the contents attached to it can. + example: /content_nodes/1a2b3c4d + readOnly: true + short: + description: |- + An abbreviated name of the category, for display in tight spaces, often together with the day and + schedule entry number, e.g. LS 3.a, where LS is the category's short name. + example: LS maxLength: 16 type: string - user: - anyOf: - - - $ref: '#/components/schemas/User.jsonhal-read_CampCollaboration.Camp_CampCollaboration.User' - - - type: 'null' - readOnly: true required: - camp - - role - - status + - color + - name + - numberingStyle + - preferredContentTypes + - short type: object - CampCollaboration.jsonhal-write_create: + Category.jsonhal-write_create: deprecated: false - description: 'A user participating in some way in the planning or realization of a camp.' + description: |- + A type of programme, such as sports activities or meal times, is called a category. A category + determines color and numbering scheme of the associated activities, and is used for marking + "similar" activities. A category may contain some skeleton programme which is used as a blueprint + when creating a new activity in the category. properties: _links: properties: @@ -7340,48 +7064,73 @@ components: type: object type: object camp: - description: 'The camp that the collaborator is part of. Cannot be changed once the campCollaboration is created.' + description: 'The camp to which this category belongs. May not be changed once the category is created.' example: /camps/1a2b3c4d format: iri-reference type: string - inviteEmail: - description: |- - The receiver email address of the invitation email, in case the collaboration does not yet have - a user account. Either this field or the user field should be null. - example: some-email@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 128 - minLength: 1 + color: + description: 'The color of the activities in this category, as a hex color string.' + example: '#4DBB52' + maxLength: 8 + pattern: '^(#[0-9a-zA-Z]{6})$' + type: string + copyCategorySource: + description: 'Copy contents from this source category or activity.' + example: /categories/1a2b3c4d + format: iri-reference type: - 'null' - string - role: + name: + description: 'The full name of the category.' + example: Lagersport + maxLength: 32 + type: string + numberingStyle: + default: '1' description: |- - The role that this person has in the camp. Depending on the role, the collaborator might have - different access rights. There must always be at least one manager in a camp. + Specifies whether the schedule entries of the activities in this category should be numbered + using arabic numbers, roman numerals or letters. enum: - - guest - - manager - - member - example: member + - '-' + - '1' + - A + - I + - a + - i + example: '1' + maxLength: 1 + type: string + preferredContentTypes: + description: 'The content types that are most likely to be useful for planning programme of this category.' + example: '["/content_types/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + type: array + short: + description: |- + An abbreviated name of the category, for display in tight spaces, often together with the day and + schedule entry number, e.g. LS 3.a, where LS is the category's short name. + example: LS maxLength: 16 type: string - user: - description: 'The person that is collaborating in the camp. Cannot be changed once the campCollaboration is established.' - example: /users/1a2b3c4d - format: iri-reference - type: - - 'null' - - string required: - camp - - role + - color + - name + - numberingStyle + - preferredContentTypes + - short type: object - CampCollaboration.jsonld-read: + Category.jsonld-read: deprecated: false - description: 'A user participating in some way in the planning or realization of a camp.' + description: |- + A type of programme, such as sports activities or meal times, is called a category. A category + determines color and numbering scheme of the associated activities, and is used for marking + "similar" activities. A category may contain some skeleton programme which is used as a blueprint + when creating a new activity in the category. properties: '@context': oneOf: @@ -7407,63 +7156,62 @@ components: readOnly: true type: string camp: - description: 'The camp that the collaborator is part of. Cannot be changed once the campCollaboration is created.' + description: 'The camp to which this category belongs. May not be changed once the category is created.' example: /camps/1a2b3c4d format: iri-reference type: string + color: + description: 'The color of the activities in this category, as a hex color string.' + example: '#4DBB52' + type: string + contentNodes: + description: 'All the content nodes that make up the tree of programme content.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d - maxLength: 16 readOnly: true type: string - inviteEmail: - description: |- - The receiver email address of the invitation email, in case the collaboration does not yet have - a user account. Either this field or the user field should be null. - example: some-email@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 128 - minLength: 1 - type: - - 'null' - - string - role: + name: + description: 'The full name of the category.' + example: Lagersport + type: string + numberingStyle: + default: '1' description: |- - The role that this person has in the camp. Depending on the role, the collaborator might have - different access rights. There must always be at least one manager in a camp. - enum: - - guest - - manager - - member - example: member - maxLength: 16 + Specifies whether the schedule entries of the activities in this category should be numbered + using arabic numbers, roman numerals or letters. + example: '1' type: string - status: - default: invited - description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' - enum: - - established - - inactive - - invited - example: inactive - maxLength: 16 + preferredContentTypes: + description: 'The content types that are most likely to be useful for planning programme of this category.' + example: '["/content_types/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + type: array + rootContentNode: + $ref: '#/components/schemas/ColumnLayout.jsonld-read' + description: |- + The programme contents, organized as a tree of content nodes. The root content node cannot be + exchanged, but all the contents attached to it can. + example: /content_nodes/1a2b3c4d + readOnly: true + short: + description: |- + An abbreviated name of the category, for display in tight spaces, often together with the day and + schedule entry number, e.g. LS 3.a, where LS is the category's short name. + example: LS type: string - user: - description: 'The person that is collaborating in the camp. Cannot be changed once the campCollaboration is established.' - example: /users/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - required: - - camp - - role - - status type: object - CampCollaboration.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: + Category.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: deprecated: false description: '' properties: @@ -7491,65 +7239,88 @@ components: readOnly: true type: string camp: - description: 'The camp that the collaborator is part of. Cannot be changed once the campCollaboration is created.' + description: 'The camp to which this category belongs. May not be changed once the category is created.' example: /camps/1a2b3c4d format: iri-reference type: string + color: + description: 'The color of the activities in this category, as a hex color string.' + example: '#4DBB52' + maxLength: 8 + pattern: '^(#[0-9a-zA-Z]{6})$' + type: string + contentNodes: + description: 'All the content nodes that make up the tree of programme content.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - inviteEmail: - description: |- - The receiver email address of the invitation email, in case the collaboration does not yet have - a user account. Either this field or the user field should be null. - example: some-email@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 128 - minLength: 1 - type: - - 'null' - - string - role: + name: + description: 'The full name of the category.' + example: Lagersport + maxLength: 32 + type: string + numberingStyle: + default: '1' description: |- - The role that this person has in the camp. Depending on the role, the collaborator might have - different access rights. There must always be at least one manager in a camp. + Specifies whether the schedule entries of the activities in this category should be numbered + using arabic numbers, roman numerals or letters. enum: - - guest - - manager - - member - example: member - maxLength: 16 + - '-' + - '1' + - A + - I + - a + - i + example: '1' + maxLength: 1 type: string - status: - default: invited - description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' - enum: - - established - - inactive - - invited - example: inactive + preferredContentTypes: + description: 'The content types that are most likely to be useful for planning programme of this category.' + example: '["/content_types/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + type: array + rootContentNode: + $ref: '#/components/schemas/ColumnLayout.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + description: |- + The programme contents, organized as a tree of content nodes. The root content node cannot be + exchanged, but all the contents attached to it can. + example: /content_nodes/1a2b3c4d + readOnly: true + short: + description: |- + An abbreviated name of the category, for display in tight spaces, often together with the day and + schedule entry number, e.g. LS 3.a, where LS is the category's short name. + example: LS maxLength: 16 type: string - user: - anyOf: - - - $ref: '#/components/schemas/User.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' - - - type: 'null' - readOnly: true required: - camp - - role - - status + - color + - name + - numberingStyle + - preferredContentTypes + - short type: object - CampCollaboration.jsonld-read_CampCollaboration.Camp_CampCollaboration.User: + Category.jsonld-read_Category.PreferredContentTypes_Category.ContentNodes: deprecated: false - description: 'A user participating in some way in the planning or realization of a camp.' + description: |- + A type of programme, such as sports activities or meal times, is called a category. A category + determines color and numbering scheme of the associated activities, and is used for marking + "similar" activities. A category may contain some skeleton programme which is used as a blueprint + when creating a new activity in the category. properties: '@context': oneOf: @@ -7575,109 +7346,79 @@ components: readOnly: true type: string camp: - anyOf: - - - $ref: '#/components/schemas/Camp.jsonld-read_CampCollaboration.Camp_CampCollaboration.User' - - - type: 'null' + description: 'The camp to which this category belongs. May not be changed once the category is created.' + example: /camps/1a2b3c4d + format: iri-reference + type: string + color: + description: 'The color of the activities in this category, as a hex color string.' + example: '#4DBB52' + maxLength: 8 + pattern: '^(#[0-9a-zA-Z]{6})$' + type: string + contentNodes: + description: 'All the content nodes that make up the tree of programme content.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string readOnly: true + type: array id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - inviteEmail: - description: |- - The receiver email address of the invitation email, in case the collaboration does not yet have - a user account. Either this field or the user field should be null. - example: some-email@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 128 - minLength: 1 - type: - - 'null' - - string - role: - description: |- - The role that this person has in the camp. Depending on the role, the collaborator might have - different access rights. There must always be at least one manager in a camp. - enum: - - guest - - manager - - member - example: member - maxLength: 16 + name: + description: 'The full name of the category.' + example: Lagersport + maxLength: 32 type: string - status: - default: invited - description: 'Indicates whether the collaborator is still invited, has left the camp, or is participating normally.' + numberingStyle: + default: '1' + description: |- + Specifies whether the schedule entries of the activities in this category should be numbered + using arabic numbers, roman numerals or letters. enum: - - established - - inactive - - invited - example: inactive - maxLength: 16 + - '-' + - '1' + - A + - I + - a + - i + example: '1' + maxLength: 1 type: string - user: - anyOf: - - - $ref: '#/components/schemas/User.jsonld-read_CampCollaboration.Camp_CampCollaboration.User' - - - type: 'null' + preferredContentTypes: + items: + $ref: '#/components/schemas/ContentType.jsonld-read_Category.PreferredContentTypes_Category.ContentNodes' readOnly: true - required: - - camp - - role - - status - type: object - CampCollaboration.jsonld-write_create: - deprecated: false - description: 'A user participating in some way in the planning or realization of a camp.' - properties: - camp: - description: 'The camp that the collaborator is part of. Cannot be changed once the campCollaboration is created.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - inviteEmail: + type: array + rootContentNode: + $ref: '#/components/schemas/ColumnLayout.jsonld-read_Category.PreferredContentTypes_Category.ContentNodes' description: |- - The receiver email address of the invitation email, in case the collaboration does not yet have - a user account. Either this field or the user field should be null. - example: some-email@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 128 - minLength: 1 - type: - - 'null' - - string - role: + The programme contents, organized as a tree of content nodes. The root content node cannot be + exchanged, but all the contents attached to it can. + example: /content_nodes/1a2b3c4d + readOnly: true + short: description: |- - The role that this person has in the camp. Depending on the role, the collaborator might have - different access rights. There must always be at least one manager in a camp. - enum: - - guest - - manager - - member - example: member + An abbreviated name of the category, for display in tight spaces, often together with the day and + schedule entry number, e.g. LS 3.a, where LS is the category's short name. + example: LS maxLength: 16 type: string - user: - description: 'The person that is collaborating in the camp. Cannot be changed once the campCollaboration is established.' - example: /users/1a2b3c4d - format: iri-reference - type: - - 'null' - - string required: - camp - - role + - color + - name + - numberingStyle + - preferredContentTypes + - short type: object - Category-read: + Category.jsonld-write_create: deprecated: false description: |- A type of programme, such as sports activities or meal times, is called a category. A category @@ -7696,21 +7437,13 @@ components: maxLength: 8 pattern: '^(#[0-9a-zA-Z]{6})$' type: string - contentNodes: - description: 'All the content nodes that make up the tree of programme content.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string + copyCategorySource: + description: 'Copy contents from this source category or activity.' + example: /categories/1a2b3c4d + format: iri-reference + type: + - 'null' + - string name: description: 'The full name of the category.' example: Lagersport @@ -7739,13 +7472,6 @@ components: format: iri-reference type: string type: array - rootContentNode: - $ref: '#/components/schemas/ColumnLayout-read' - description: |- - The programme contents, organized as a tree of content nodes. The root content node cannot be - exchanged, but all the contents attached to it can. - example: /content_nodes/1a2b3c4d - readOnly: true short: description: |- An abbreviated name of the category, for display in tight spaces, often together with the day and @@ -7761,23 +7487,12 @@ components: - preferredContentTypes - short type: object - Category-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + ColumnLayout-read: deprecated: false description: '' properties: - camp: - description: 'The camp to which this category belongs. May not be changed once the category is created.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - color: - description: 'The color of the activities in this category, as a hex color string.' - example: '#4DBB52' - maxLength: 8 - pattern: '^(#[0-9a-zA-Z]{6})$' - type: string - contentNodes: - description: 'All the content nodes that make up the tree of programme content.' + children: + description: 'All content nodes that are direct children of this content node.' example: '["/content_nodes/1a2b3c4d"]' items: example: 'https://example.com/' @@ -7785,83 +7500,97 @@ components: type: string readOnly: true type: array + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d + format: iri-reference + type: string + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true + type: string + data: + default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + columns: + - + slot: '1' + width: 12 + items: + type: string + type: + - array + - 'null' id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - name: - description: 'The full name of the category.' - example: Lagersport + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm maxLength: 32 - type: string - numberingStyle: - default: '1' + type: + - 'null' + - string + parent: description: |- - Specifies whether the schedule entries of the activities in this category should be numbered - using arabic numbers, roman numerals or letters. - enum: - - '-' - - '1' - - A - - I - - a - - i - example: '1' - maxLength: 1 - type: string - preferredContentTypes: - description: 'The content types that are most likely to be useful for planning programme of this category.' - example: '["/content_types/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - type: array - rootContentNode: - $ref: '#/components/schemas/ColumnLayout-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + position: + default: -1 description: |- - The programme contents, organized as a tree of content nodes. The root content node cannot be - exchanged, but all the contents attached to it can. + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. example: /content_nodes/1a2b3c4d + format: iri-reference readOnly: true - short: + type: + - 'null' + - string + slot: description: |- - An abbreviated name of the category, for display in tight spaces, often together with the day and - schedule entry number, e.g. LS 3.a, where LS is the category's short name. - example: LS - maxLength: 16 - type: string + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - camp - - color - - name - - numberingStyle - - preferredContentTypes - - short + - children + - contentType + - data + - position type: object - Category-read_Category.PreferredContentTypes_Category.ContentNodes: + ColumnLayout-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: deprecated: false - description: |- - A type of programme, such as sports activities or meal times, is called a category. A category - determines color and numbering scheme of the associated activities, and is used for marking - "similar" activities. A category may contain some skeleton programme which is used as a blueprint - when creating a new activity in the category. + description: '' properties: - camp: - description: 'The camp to which this category belongs. May not be changed once the category is created.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - color: - description: 'The color of the activities in this category, as a hex color string.' - example: '#4DBB52' - maxLength: 8 - pattern: '^(#[0-9a-zA-Z]{6})$' - type: string - contentNodes: - description: 'All the content nodes that make up the tree of programme content.' + children: + description: 'All content nodes that are direct children of this content node.' example: '["/content_nodes/1a2b3c4d"]' items: example: 'https://example.com/' @@ -7869,285 +7598,195 @@ components: type: string readOnly: true type: array - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d + format: iri-reference + type: string + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept readOnly: true type: string - name: - description: 'The full name of the category.' - example: Lagersport - maxLength: 32 - type: string - numberingStyle: - default: '1' + data: + default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' description: |- - Specifies whether the schedule entries of the activities in this category should be numbered - using arabic numbers, roman numerals or letters. - enum: - - '-' - - '1' - - A - - I - - a - - i - example: '1' - maxLength: 1 - type: string - preferredContentTypes: + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + columns: + - + slot: '1' + width: 12 items: - $ref: '#/components/schemas/ContentType-read_Category.PreferredContentTypes_Category.ContentNodes' + type: string + type: + - array + - 'null' + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 readOnly: true - type: array - rootContentNode: - $ref: '#/components/schemas/ColumnLayout-read_Category.PreferredContentTypes_Category.ContentNodes' + type: string + instanceName: description: |- - The programme contents, organized as a tree of content nodes. The root content node cannot be - exchanged, but all the contents attached to it can. - example: /content_nodes/1a2b3c4d - readOnly: true - short: + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 + type: + - 'null' + - string + parent: description: |- - An abbreviated name of the category, for display in tight spaces, often together with the day and - schedule entry number, e.g. LS 3.a, where LS is the category's short name. - example: LS - maxLength: 16 - type: string - required: - - camp - - color - - name - - numberingStyle - - preferredContentTypes - - short - type: object - Category-write_create: - deprecated: false - description: |- - A type of programme, such as sports activities or meal times, is called a category. A category - determines color and numbering scheme of the associated activities, and is used for marking - "similar" activities. A category may contain some skeleton programme which is used as a blueprint - when creating a new activity in the category. - properties: - camp: - description: 'The camp to which this category belongs. May not be changed once the category is created.' - example: /camps/1a2b3c4d + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d format: iri-reference - type: string - color: - description: 'The color of the activities in this category, as a hex color string.' - example: '#4DBB52' - maxLength: 8 - pattern: '^(#[0-9a-zA-Z]{6})$' - type: string - copyCategorySource: - description: 'Copy contents from this source category or activity.' - example: /categories/1a2b3c4d + type: + - 'null' + - string + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. + example: /content_nodes/1a2b3c4d format: iri-reference + readOnly: true type: - 'null' - string - name: - description: 'The full name of the category.' - example: Lagersport - maxLength: 32 - type: string - numberingStyle: - default: '1' + slot: description: |- - Specifies whether the schedule entries of the activities in this category should be numbered - using arabic numbers, roman numerals or letters. - enum: - - '-' - - '1' - - A - - I - - a - - i + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. example: '1' - maxLength: 1 - type: string - preferredContentTypes: - description: 'The content types that are most likely to be useful for planning programme of this category.' - example: '["/content_types/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - type: array - short: - description: |- - An abbreviated name of the category, for display in tight spaces, often together with the day and - schedule entry number, e.g. LS 3.a, where LS is the category's short name. - example: LS - maxLength: 16 - type: string + maxLength: 32 + type: + - 'null' + - string required: - - camp - - color - - name - - numberingStyle - - preferredContentTypes - - short + - children + - contentType + - data + - position type: object - Category-write_update: + ColumnLayout-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: deprecated: false - description: |- - A type of programme, such as sports activities or meal times, is called a category. A category - determines color and numbering scheme of the associated activities, and is used for marking - "similar" activities. A category may contain some skeleton programme which is used as a blueprint - when creating a new activity in the category. + description: '' properties: - color: - description: 'The color of the activities in this category, as a hex color string.' - example: '#4DBB52' - maxLength: 8 - pattern: '^(#[0-9a-zA-Z]{6})$' - type: string - name: - description: 'The full name of the category.' - example: Lagersport - maxLength: 32 - type: string - numberingStyle: - default: '1' - description: |- - Specifies whether the schedule entries of the activities in this category should be numbered - using arabic numbers, roman numerals or letters. - enum: - - '-' - - '1' - - A - - I - - a - - i - example: '1' - maxLength: 1 - type: string - preferredContentTypes: - description: 'The content types that are most likely to be useful for planning programme of this category.' - example: '["/content_types/1a2b3c4d"]' + children: + description: 'All content nodes that are direct children of this content node.' + example: '["/content_nodes/1a2b3c4d"]' items: example: 'https://example.com/' format: iri-reference type: string + readOnly: true type: array - short: + contentType: description: |- - An abbreviated name of the category, for display in tight spaces, often together with the day and - schedule entry number, e.g. LS 3.a, where LS is the category's short name. - example: LS - maxLength: 16 - type: string - required: - - color - - name - - numberingStyle - - preferredContentTypes - - short - type: object - Category.jsonapi-read: - deprecated: false - description: |- - A type of programme, such as sports activities or meal times, is called a category. A category - determines color and numbering scheme of the associated activities, and is used for marking - "similar" activities. A category may contain some skeleton programme which is used as a blueprint - when creating a new activity in the category. - properties: - camp: - description: 'The camp to which this category belongs. May not be changed once the category is created.' - example: /camps/1a2b3c4d + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d format: iri-reference type: string - color: - description: 'The color of the activities in this category, as a hex color string.' - example: '#4DBB52' - maxLength: 8 - pattern: '^(#[0-9a-zA-Z]{6})$' + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true type: string - contentNodes: - description: 'All the content nodes that make up the tree of programme content.' - example: '["/content_nodes/1a2b3c4d"]' + data: + default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + columns: + - + slot: '1' + width: 12 items: - example: 'https://example.com/' - format: iri-reference type: string - readOnly: true - type: array + type: + - array + - 'null' id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - name: - description: 'The full name of the category.' - example: Lagersport + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm maxLength: 32 - type: string - numberingStyle: - default: '1' + type: + - 'null' + - string + parent: description: |- - Specifies whether the schedule entries of the activities in this category should be numbered - using arabic numbers, roman numerals or letters. - enum: - - '-' - - '1' - - A - - I - - a - - i - example: '1' - maxLength: 1 - type: string - preferredContentTypes: - description: 'The content types that are most likely to be useful for planning programme of this category.' - example: '["/content_types/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - type: array - rootContentNode: - $ref: '#/components/schemas/ColumnLayout.jsonapi-read' + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + position: + default: -1 description: |- - The programme contents, organized as a tree of content nodes. The root content node cannot be - exchanged, but all the contents attached to it can. + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. example: /content_nodes/1a2b3c4d + format: iri-reference readOnly: true - short: + type: + - 'null' + - string + slot: description: |- - An abbreviated name of the category, for display in tight spaces, often together with the day and - schedule entry number, e.g. LS 3.a, where LS is the category's short name. - example: LS - maxLength: 16 - type: string + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - camp - - color - - name - - numberingStyle - - preferredContentTypes - - short + - children + - contentType + - data + - position type: object - Category.jsonapi-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + ColumnLayout-read_Category.PreferredContentTypes_Category.ContentNodes: deprecated: false description: '' properties: - camp: - description: 'The camp to which this category belongs. May not be changed once the category is created.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - color: - description: 'The color of the activities in this category, as a hex color string.' - example: '#4DBB52' - maxLength: 8 - pattern: '^(#[0-9a-zA-Z]{6})$' - type: string - contentNodes: - description: 'All the content nodes that make up the tree of programme content.' + children: + description: 'All content nodes that are direct children of this content node.' example: '["/content_nodes/1a2b3c4d"]' items: example: 'https://example.com/' @@ -8155,83 +7794,97 @@ components: type: string readOnly: true type: array + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d + format: iri-reference + type: string + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true + type: string + data: + default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + columns: + - + slot: '1' + width: 12 + items: + type: string + type: + - array + - 'null' id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - name: - description: 'The full name of the category.' - example: Lagersport + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm maxLength: 32 - type: string - numberingStyle: - default: '1' + type: + - 'null' + - string + parent: description: |- - Specifies whether the schedule entries of the activities in this category should be numbered - using arabic numbers, roman numerals or letters. - enum: - - '-' - - '1' - - A - - I - - a - - i - example: '1' - maxLength: 1 - type: string - preferredContentTypes: - description: 'The content types that are most likely to be useful for planning programme of this category.' - example: '["/content_types/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - type: array - rootContentNode: - $ref: '#/components/schemas/ColumnLayout.jsonapi-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + position: + default: -1 description: |- - The programme contents, organized as a tree of content nodes. The root content node cannot be - exchanged, but all the contents attached to it can. + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. example: /content_nodes/1a2b3c4d + format: iri-reference readOnly: true - short: + type: + - 'null' + - string + slot: description: |- - An abbreviated name of the category, for display in tight spaces, often together with the day and - schedule entry number, e.g. LS 3.a, where LS is the category's short name. - example: LS - maxLength: 16 - type: string + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - camp - - color - - name - - numberingStyle - - preferredContentTypes - - short + - children + - contentType + - data + - position type: object - Category.jsonapi-read_Category.PreferredContentTypes_Category.ContentNodes: + ColumnLayout-read_ScheduleEntry.Activity: deprecated: false - description: |- - A type of programme, such as sports activities or meal times, is called a category. A category - determines color and numbering scheme of the associated activities, and is used for marking - "similar" activities. A category may contain some skeleton programme which is used as a blueprint - when creating a new activity in the category. + description: '' properties: - camp: - description: 'The camp to which this category belongs. May not be changed once the category is created.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - color: - description: 'The color of the activities in this category, as a hex color string.' - example: '#4DBB52' - maxLength: 8 - pattern: '^(#[0-9a-zA-Z]{6})$' - type: string - contentNodes: - description: 'All the content nodes that make up the tree of programme content.' + children: + description: 'All content nodes that are direct children of this content node.' example: '["/content_nodes/1a2b3c4d"]' items: example: 'https://example.com/' @@ -8239,214 +7892,223 @@ components: type: string readOnly: true type: array - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d + format: iri-reference type: string - name: - description: 'The full name of the category.' - example: Lagersport - maxLength: 32 + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true type: string - numberingStyle: - default: '1' + data: + default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' description: |- - Specifies whether the schedule entries of the activities in this category should be numbered - using arabic numbers, roman numerals or letters. - enum: - - '-' - - '1' - - A - - I - - a - - i - example: '1' - maxLength: 1 - type: string - preferredContentTypes: + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + columns: + - + slot: '1' + width: 12 items: - $ref: '#/components/schemas/ContentType.jsonapi-read_Category.PreferredContentTypes_Category.ContentNodes' + type: string + type: + - array + - 'null' + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 readOnly: true - type: array - rootContentNode: - $ref: '#/components/schemas/ColumnLayout.jsonapi-read_Category.PreferredContentTypes_Category.ContentNodes' + type: string + instanceName: description: |- - The programme contents, organized as a tree of content nodes. The root content node cannot be - exchanged, but all the contents attached to it can. + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 + type: + - 'null' + - string + parent: + description: |- + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. example: /content_nodes/1a2b3c4d + format: iri-reference readOnly: true - short: + type: + - 'null' + - string + slot: description: |- - An abbreviated name of the category, for display in tight spaces, often together with the day and - schedule entry number, e.g. LS 3.a, where LS is the category's short name. - example: LS - maxLength: 16 - type: string + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - camp - - color - - name - - numberingStyle - - preferredContentTypes - - short + - children + - contentType + - data + - position type: object - Category.jsonapi-write_create: + ColumnLayout-write_create: deprecated: false - description: |- - A type of programme, such as sports activities or meal times, is called a category. A category - determines color and numbering scheme of the associated activities, and is used for marking - "similar" activities. A category may contain some skeleton programme which is used as a blueprint - when creating a new activity in the category. + description: '' properties: - camp: - description: 'The camp to which this category belongs. May not be changed once the category is created.' - example: /camps/1a2b3c4d + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d format: iri-reference type: string - color: - description: 'The color of the activities in this category, as a hex color string.' - example: '#4DBB52' - maxLength: 8 - pattern: '^(#[0-9a-zA-Z]{6})$' - type: string - copyCategorySource: - description: 'Copy contents from this source category or activity.' - example: /categories/1a2b3c4d + data: + default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + columns: + - + slot: '1' + width: 12 + items: + type: string + type: + - array + - 'null' + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 + type: + - 'null' + - string + parent: + description: |- + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d format: iri-reference type: - 'null' - string - name: - description: 'The full name of the category.' - example: Lagersport - maxLength: 32 - type: string - numberingStyle: - default: '1' + position: + default: -1 description: |- - Specifies whether the schedule entries of the activities in this category should be numbered - using arabic numbers, roman numerals or letters. - enum: - - '-' - - '1' - - A - - I - - a - - i - example: '1' - maxLength: 1 - type: string - preferredContentTypes: - description: 'The content types that are most likely to be useful for planning programme of this category.' - example: '["/content_types/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - type: array - short: + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + slot: description: |- - An abbreviated name of the category, for display in tight spaces, often together with the day and - schedule entry number, e.g. LS 3.a, where LS is the category's short name. - example: LS - maxLength: 16 - type: string + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - camp - - color - - name - - numberingStyle - - preferredContentTypes - - short + - contentType + - data + - parent + - position type: object - Category.jsonapi-write_update: + ColumnLayout-write_update: deprecated: false - description: |- - A type of programme, such as sports activities or meal times, is called a category. A category - determines color and numbering scheme of the associated activities, and is used for marking - "similar" activities. A category may contain some skeleton programme which is used as a blueprint - when creating a new activity in the category. + description: '' properties: - color: - description: 'The color of the activities in this category, as a hex color string.' - example: '#4DBB52' - maxLength: 8 - pattern: '^(#[0-9a-zA-Z]{6})$' - type: string - name: - description: 'The full name of the category.' - example: Lagersport - maxLength: 32 - type: string - numberingStyle: - default: '1' + data: + default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' description: |- - Specifies whether the schedule entries of the activities in this category should be numbered - using arabic numbers, roman numerals or letters. - enum: - - '-' - - '1' - - A - - I - - a - - i - example: '1' - maxLength: 1 - type: string - preferredContentTypes: - description: 'The content types that are most likely to be useful for planning programme of this category.' - example: '["/content_types/1a2b3c4d"]' + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + columns: + - + slot: '1' + width: 12 items: - example: 'https://example.com/' - format: iri-reference type: string - type: array - short: + type: + - array + - 'null' + instanceName: description: |- - An abbreviated name of the category, for display in tight spaces, often together with the day and - schedule entry number, e.g. LS 3.a, where LS is the category's short name. - example: LS - maxLength: 16 - type: string + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 + type: + - 'null' + - string + parent: + description: |- + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - color - - name - - numberingStyle - - preferredContentTypes - - short + - data + - position type: object - Category.jsonhal-read: + ColumnLayout.jsonapi: deprecated: false - description: |- - A type of programme, such as sports activities or meal times, is called a category. A category - determines color and numbering scheme of the associated activities, and is used for marking - "similar" activities. A category may contain some skeleton programme which is used as a blueprint - when creating a new activity in the category. + description: '' properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - camp: - description: 'The camp to which this category belongs. May not be changed once the category is created.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - color: - description: 'The color of the activities in this category, as a hex color string.' - example: '#4DBB52' - maxLength: 8 - pattern: '^(#[0-9a-zA-Z]{6})$' - type: string - contentNodes: - description: 'All the content nodes that make up the tree of programme content.' + children: + description: 'All content nodes that are direct children of this content node.' example: '["/content_nodes/1a2b3c4d"]' items: example: 'https://example.com/' @@ -8454,63 +8116,93 @@ components: type: string readOnly: true type: array + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d + format: iri-reference + readOnly: true + type: string + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true + type: string + data: + default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + columns: + - + slot: '1' + width: 12 + items: + type: string + type: + - array + - 'null' id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - name: - description: 'The full name of the category.' - example: Lagersport + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm maxLength: 32 - type: string - numberingStyle: - default: '1' + type: + - 'null' + - string + parent: description: |- - Specifies whether the schedule entries of the activities in this category should be numbered - using arabic numbers, roman numerals or letters. - enum: - - '-' - - '1' - - A - - I - - a - - i - example: '1' - maxLength: 1 - type: string - preferredContentTypes: - description: 'The content types that are most likely to be useful for planning programme of this category.' - example: '["/content_types/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - type: array - rootContentNode: - $ref: '#/components/schemas/ColumnLayout.jsonhal-read' + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + position: + default: -1 description: |- - The programme contents, organized as a tree of content nodes. The root content node cannot be - exchanged, but all the contents attached to it can. + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. example: /content_nodes/1a2b3c4d + format: iri-reference readOnly: true - short: + type: + - 'null' + - string + slot: description: |- - An abbreviated name of the category, for display in tight spaces, often together with the day and - schedule entry number, e.g. LS 3.a, where LS is the category's short name. - example: LS - maxLength: 16 - type: string + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - camp - - color - - name - - numberingStyle - - preferredContentTypes - - short + - children + - contentType + - data + - position type: object - Category.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + ColumnLayout.jsonhal-read: deprecated: false description: '' properties: @@ -8523,19 +8215,8 @@ components: type: string type: object type: object - camp: - description: 'The camp to which this category belongs. May not be changed once the category is created.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - color: - description: 'The color of the activities in this category, as a hex color string.' - example: '#4DBB52' - maxLength: 8 - pattern: '^(#[0-9a-zA-Z]{6})$' - type: string - contentNodes: - description: 'All the content nodes that make up the tree of programme content.' + children: + description: 'All content nodes that are direct children of this content node.' example: '["/content_nodes/1a2b3c4d"]' items: example: 'https://example.com/' @@ -8543,69 +8224,94 @@ components: type: string readOnly: true type: array + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d + format: iri-reference + type: string + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true + type: string + data: + default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + columns: + - + slot: '1' + width: 12 + items: + type: string + type: + - array + - 'null' id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - name: - description: 'The full name of the category.' - example: Lagersport + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm maxLength: 32 - type: string - numberingStyle: - default: '1' + type: + - 'null' + - string + parent: description: |- - Specifies whether the schedule entries of the activities in this category should be numbered - using arabic numbers, roman numerals or letters. - enum: - - '-' - - '1' - - A - - I - - a - - i - example: '1' - maxLength: 1 - type: string - preferredContentTypes: - description: 'The content types that are most likely to be useful for planning programme of this category.' - example: '["/content_types/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - type: array - rootContentNode: - $ref: '#/components/schemas/ColumnLayout.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + position: + default: -1 description: |- - The programme contents, organized as a tree of content nodes. The root content node cannot be - exchanged, but all the contents attached to it can. + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. example: /content_nodes/1a2b3c4d + format: iri-reference readOnly: true - short: + type: + - 'null' + - string + slot: description: |- - An abbreviated name of the category, for display in tight spaces, often together with the day and - schedule entry number, e.g. LS 3.a, where LS is the category's short name. - example: LS - maxLength: 16 - type: string + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - camp - - color - - name - - numberingStyle - - preferredContentTypes - - short + - children + - contentType + - data + - position type: object - Category.jsonhal-read_Category.PreferredContentTypes_Category.ContentNodes: + ColumnLayout.jsonhal-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: deprecated: false - description: |- - A type of programme, such as sports activities or meal times, is called a category. A category - determines color and numbering scheme of the associated activities, and is used for marking - "similar" activities. A category may contain some skeleton programme which is used as a blueprint - when creating a new activity in the category. + description: '' properties: _links: properties: @@ -8616,19 +8322,8 @@ components: type: string type: object type: object - camp: - description: 'The camp to which this category belongs. May not be changed once the category is created.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - color: - description: 'The color of the activities in this category, as a hex color string.' - example: '#4DBB52' - maxLength: 8 - pattern: '^(#[0-9a-zA-Z]{6})$' - type: string - contentNodes: - description: 'All the content nodes that make up the tree of programme content.' + children: + description: 'All content nodes that are direct children of this content node.' example: '["/content_nodes/1a2b3c4d"]' items: example: 'https://example.com/' @@ -8636,66 +8331,94 @@ components: type: string readOnly: true type: array + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d + format: iri-reference + type: string + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true + type: string + data: + default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + columns: + - + slot: '1' + width: 12 + items: + type: string + type: + - array + - 'null' id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - name: - description: 'The full name of the category.' - example: Lagersport + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm maxLength: 32 - type: string - numberingStyle: - default: '1' + type: + - 'null' + - string + parent: description: |- - Specifies whether the schedule entries of the activities in this category should be numbered - using arabic numbers, roman numerals or letters. - enum: - - '-' - - '1' - - A - - I - - a - - i - example: '1' - maxLength: 1 - type: string - preferredContentTypes: - items: - $ref: '#/components/schemas/ContentType.jsonhal-read_Category.PreferredContentTypes_Category.ContentNodes' - readOnly: true - type: array - rootContentNode: - $ref: '#/components/schemas/ColumnLayout.jsonhal-read_Category.PreferredContentTypes_Category.ContentNodes' + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + position: + default: -1 description: |- - The programme contents, organized as a tree of content nodes. The root content node cannot be - exchanged, but all the contents attached to it can. + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. example: /content_nodes/1a2b3c4d + format: iri-reference readOnly: true - short: + type: + - 'null' + - string + slot: description: |- - An abbreviated name of the category, for display in tight spaces, often together with the day and - schedule entry number, e.g. LS 3.a, where LS is the category's short name. - example: LS - maxLength: 16 - type: string + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - camp - - color - - name - - numberingStyle - - preferredContentTypes - - short + - children + - contentType + - data + - position type: object - Category.jsonhal-write_create: + ColumnLayout.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: deprecated: false - description: |- - A type of programme, such as sports activities or meal times, is called a category. A category - determines color and numbering scheme of the associated activities, and is used for marking - "similar" activities. A category may contain some skeleton programme which is used as a blueprint - when creating a new activity in the category. + description: '' properties: _links: properties: @@ -8706,214 +8429,115 @@ components: type: string type: object type: object - camp: - description: 'The camp to which this category belongs. May not be changed once the category is created.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - color: - description: 'The color of the activities in this category, as a hex color string.' - example: '#4DBB52' - maxLength: 8 - pattern: '^(#[0-9a-zA-Z]{6})$' - type: string - copyCategorySource: - description: 'Copy contents from this source category or activity.' - example: /categories/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - name: - description: 'The full name of the category.' - example: Lagersport - maxLength: 32 - type: string - numberingStyle: - default: '1' - description: |- - Specifies whether the schedule entries of the activities in this category should be numbered - using arabic numbers, roman numerals or letters. - enum: - - '-' - - '1' - - A - - I - - a - - i - example: '1' - maxLength: 1 - type: string - preferredContentTypes: - description: 'The content types that are most likely to be useful for planning programme of this category.' - example: '["/content_types/1a2b3c4d"]' + children: + description: 'All content nodes that are direct children of this content node.' + example: '["/content_nodes/1a2b3c4d"]' items: example: 'https://example.com/' format: iri-reference type: string + readOnly: true type: array - short: + contentType: description: |- - An abbreviated name of the category, for display in tight spaces, often together with the day and - schedule entry number, e.g. LS 3.a, where LS is the category's short name. - example: LS - maxLength: 16 - type: string - required: - - camp - - color - - name - - numberingStyle - - preferredContentTypes - - short - type: object - Category.jsonld-read: - deprecated: false - description: |- - A type of programme, such as sports activities or meal times, is called a category. A category - determines color and numbering scheme of the associated activities, and is used for marking - "similar" activities. A category may contain some skeleton programme which is used as a blueprint - when creating a new activity in the category. - properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - camp: - description: 'The camp to which this category belongs. May not be changed once the category is created.' - example: /camps/1a2b3c4d + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d format: iri-reference type: string - color: - description: 'The color of the activities in this category, as a hex color string.' - example: '#4DBB52' - maxLength: 8 - pattern: '^(#[0-9a-zA-Z]{6})$' + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true type: string - contentNodes: - description: 'All the content nodes that make up the tree of programme content.' - example: '["/content_nodes/1a2b3c4d"]' + data: + default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + columns: + - + slot: '1' + width: 12 items: - example: 'https://example.com/' - format: iri-reference type: string - readOnly: true - type: array + type: + - array + - 'null' id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - name: - description: 'The full name of the category.' - example: Lagersport + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm maxLength: 32 - type: string - numberingStyle: - default: '1' + type: + - 'null' + - string + parent: description: |- - Specifies whether the schedule entries of the activities in this category should be numbered - using arabic numbers, roman numerals or letters. - enum: - - '-' - - '1' - - A - - I - - a - - i - example: '1' - maxLength: 1 - type: string - preferredContentTypes: - description: 'The content types that are most likely to be useful for planning programme of this category.' - example: '["/content_types/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - type: array - rootContentNode: - $ref: '#/components/schemas/ColumnLayout.jsonld-read' + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + position: + default: -1 description: |- - The programme contents, organized as a tree of content nodes. The root content node cannot be - exchanged, but all the contents attached to it can. + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. example: /content_nodes/1a2b3c4d + format: iri-reference readOnly: true - short: + type: + - 'null' + - string + slot: description: |- - An abbreviated name of the category, for display in tight spaces, often together with the day and - schedule entry number, e.g. LS 3.a, where LS is the category's short name. - example: LS - maxLength: 16 - type: string + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - camp - - color - - name - - numberingStyle - - preferredContentTypes - - short + - children + - contentType + - data + - position type: object - Category.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + ColumnLayout.jsonhal-read_Category.PreferredContentTypes_Category.ContentNodes: deprecated: false description: '' properties: - '@context': - oneOf: - - - additionalProperties: true + _links: + properties: + self: properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] + href: + format: iri-reference type: string - required: - - '@vocab' - - hydra type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - camp: - description: 'The camp to which this category belongs. May not be changed once the category is created.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - color: - description: 'The color of the activities in this category, as a hex color string.' - example: '#4DBB52' - maxLength: 8 - pattern: '^(#[0-9a-zA-Z]{6})$' - type: string - contentNodes: - description: 'All the content nodes that make up the tree of programme content.' + type: object + children: + description: 'All content nodes that are direct children of this content node.' example: '["/content_nodes/1a2b3c4d"]' items: example: 'https://example.com/' @@ -8921,239 +8545,104 @@ components: type: string readOnly: true type: array + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d + format: iri-reference + type: string + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true + type: string + data: + default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + columns: + - + slot: '1' + width: 12 + items: + type: string + type: + - array + - 'null' id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - name: - description: 'The full name of the category.' - example: Lagersport + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm maxLength: 32 - type: string - numberingStyle: - default: '1' + type: + - 'null' + - string + parent: description: |- - Specifies whether the schedule entries of the activities in this category should be numbered - using arabic numbers, roman numerals or letters. - enum: - - '-' - - '1' - - A - - I - - a - - i - example: '1' - maxLength: 1 - type: string - preferredContentTypes: - description: 'The content types that are most likely to be useful for planning programme of this category.' - example: '["/content_types/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - type: array - rootContentNode: - $ref: '#/components/schemas/ColumnLayout.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' - description: |- - The programme contents, organized as a tree of content nodes. The root content node cannot be - exchanged, but all the contents attached to it can. + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. example: /content_nodes/1a2b3c4d - readOnly: true - short: - description: |- - An abbreviated name of the category, for display in tight spaces, often together with the day and - schedule entry number, e.g. LS 3.a, where LS is the category's short name. - example: LS - maxLength: 16 - type: string - required: - - camp - - color - - name - - numberingStyle - - preferredContentTypes - - short - type: object - Category.jsonld-read_Category.PreferredContentTypes_Category.ContentNodes: - deprecated: false - description: |- - A type of programme, such as sports activities or meal times, is called a category. A category - determines color and numbering scheme of the associated activities, and is used for marking - "similar" activities. A category may contain some skeleton programme which is used as a blueprint - when creating a new activity in the category. - properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - camp: - description: 'The camp to which this category belongs. May not be changed once the category is created.' - example: /camps/1a2b3c4d format: iri-reference - type: string - color: - description: 'The color of the activities in this category, as a hex color string.' - example: '#4DBB52' - maxLength: 8 - pattern: '^(#[0-9a-zA-Z]{6})$' - type: string - contentNodes: - description: 'All the content nodes that make up the tree of programme content.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - name: - description: 'The full name of the category.' - example: Lagersport - maxLength: 32 - type: string - numberingStyle: - default: '1' + type: + - 'null' + - string + position: + default: -1 description: |- - Specifies whether the schedule entries of the activities in this category should be numbered - using arabic numbers, roman numerals or letters. - enum: - - '-' - - '1' - - A - - I - - a - - i - example: '1' - maxLength: 1 - type: string - preferredContentTypes: - items: - $ref: '#/components/schemas/ContentType.jsonld-read_Category.PreferredContentTypes_Category.ContentNodes' - readOnly: true - type: array - rootContentNode: - $ref: '#/components/schemas/ColumnLayout.jsonld-read_Category.PreferredContentTypes_Category.ContentNodes' + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: description: |- - The programme contents, organized as a tree of content nodes. The root content node cannot be - exchanged, but all the contents attached to it can. + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. example: /content_nodes/1a2b3c4d - readOnly: true - short: - description: |- - An abbreviated name of the category, for display in tight spaces, often together with the day and - schedule entry number, e.g. LS 3.a, where LS is the category's short name. - example: LS - maxLength: 16 - type: string - required: - - camp - - color - - name - - numberingStyle - - preferredContentTypes - - short - type: object - Category.jsonld-write_create: - deprecated: false - description: |- - A type of programme, such as sports activities or meal times, is called a category. A category - determines color and numbering scheme of the associated activities, and is used for marking - "similar" activities. A category may contain some skeleton programme which is used as a blueprint - when creating a new activity in the category. - properties: - camp: - description: 'The camp to which this category belongs. May not be changed once the category is created.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - color: - description: 'The color of the activities in this category, as a hex color string.' - example: '#4DBB52' - maxLength: 8 - pattern: '^(#[0-9a-zA-Z]{6})$' - type: string - copyCategorySource: - description: 'Copy contents from this source category or activity.' - example: /categories/1a2b3c4d format: iri-reference + readOnly: true type: - 'null' - string - name: - description: 'The full name of the category.' - example: Lagersport - maxLength: 32 - type: string - numberingStyle: - default: '1' + slot: description: |- - Specifies whether the schedule entries of the activities in this category should be numbered - using arabic numbers, roman numerals or letters. - enum: - - '-' - - '1' - - A - - I - - a - - i + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. example: '1' - maxLength: 1 - type: string - preferredContentTypes: - description: 'The content types that are most likely to be useful for planning programme of this category.' - example: '["/content_types/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - type: array - short: - description: |- - An abbreviated name of the category, for display in tight spaces, often together with the day and - schedule entry number, e.g. LS 3.a, where LS is the category's short name. - example: LS - maxLength: 16 - type: string + maxLength: 32 + type: + - 'null' + - string required: - - camp - - color - - name - - numberingStyle - - preferredContentTypes - - short + - children + - contentType + - data + - position type: object - ColumnLayout-read: + ColumnLayout.jsonhal-read_ScheduleEntry.Activity: deprecated: false description: '' properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object children: description: 'All content nodes that are direct children of this content node.' example: '["/content_nodes/1a2b3c4d"]' @@ -9248,19 +8737,19 @@ components: - data - position type: object - ColumnLayout-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: + ColumnLayout.jsonhal-write_create: deprecated: false description: '' properties: - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object contentType: description: |- Defines the type of this content node. There is a fixed list of types that are implemented @@ -9269,11 +8758,6 @@ components: example: /content_types/1a2b3c4d format: iri-reference type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true - type: string data: default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' description: |- @@ -9289,12 +8773,6 @@ components: type: - array - 'null' - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string instanceName: description: |- An optional name for this content node. This is useful when planning e.g. an alternative @@ -9321,16 +8799,6 @@ components: same parent. The API does not guarantee the uniqueness of parent+slot+position. example: -1 type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference - readOnly: true - type: - - 'null' - - string slot: description: |- The name of the slot in the parent in which this content node resides. The valid slot names @@ -9341,15 +8809,38 @@ components: - 'null' - string required: - - children - contentType - data + - parent - position type: object - ColumnLayout-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + ColumnLayout.jsonld-read: deprecated: false description: '' properties: + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string + readOnly: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string children: description: 'All content nodes that are direct children of this content node.' example: '["/content_nodes/1a2b3c4d"]' @@ -9444,10 +8935,33 @@ components: - data - position type: object - ColumnLayout-read_Category.PreferredContentTypes_Category.ContentNodes: + ColumnLayout.jsonld-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: deprecated: false description: '' properties: + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string + readOnly: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string children: description: 'All content nodes that are direct children of this content node.' example: '["/content_nodes/1a2b3c4d"]' @@ -9542,10 +9056,33 @@ components: - data - position type: object - ColumnLayout-read_ScheduleEntry.Activity: + ColumnLayout.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: deprecated: false description: '' properties: + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string + readOnly: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string children: description: 'All content nodes that are direct children of this content node.' example: '["/content_nodes/1a2b3c4d"]' @@ -9640,10 +9177,42 @@ components: - data - position type: object - ColumnLayout-write_create: + ColumnLayout.jsonld-read_Category.PreferredContentTypes_Category.ContentNodes: deprecated: false description: '' properties: + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string + readOnly: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + children: + description: 'All content nodes that are direct children of this content node.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array contentType: description: |- Defines the type of this content node. There is a fixed list of types that are implemented @@ -9652,6 +9221,11 @@ components: example: /content_types/1a2b3c4d format: iri-reference type: string + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true + type: string data: default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' description: |- @@ -9667,6 +9241,12 @@ components: type: - array - 'null' + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string instanceName: description: |- An optional name for this content node. This is useful when planning e.g. an alternative @@ -9693,66 +9273,16 @@ components: same parent. The API does not guarantee the uniqueness of parent+slot+position. example: -1 type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - contentType - - data - - parent - - position - type: object - ColumnLayout-write_update: - deprecated: false - description: '' - properties: - data: - default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - columns: - - - slot: '1' - width: 12 - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: + root: description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. example: /content_nodes/1a2b3c4d format: iri-reference + readOnly: true type: - 'null' - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer slot: description: |- The name of the slot in the parent in which this content node resides. The valid slot names @@ -9763,13 +9293,38 @@ components: - 'null' - string required: + - children + - contentType - data - position type: object - ColumnLayout.jsonapi-read: + ColumnLayout.jsonld-read_ScheduleEntry.Activity: deprecated: false description: '' properties: + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string + readOnly: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string children: description: 'All content nodes that are direct children of this content node.' example: '["/content_nodes/1a2b3c4d"]' @@ -9864,19 +9419,10 @@ components: - data - position type: object - ColumnLayout.jsonapi-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: + ColumnLayout.jsonld-write_create: deprecated: false description: '' properties: - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array contentType: description: |- Defines the type of this content node. There is a fixed list of types that are implemented @@ -9885,11 +9431,6 @@ components: example: /content_types/1a2b3c4d format: iri-reference type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true - type: string data: default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' description: |- @@ -9905,12 +9446,6 @@ components: type: - array - 'null' - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string instanceName: description: |- An optional name for this content node. This is useful when planning e.g. an alternative @@ -9937,16 +9472,6 @@ components: same parent. The API does not guarantee the uniqueness of parent+slot+position. example: -1 type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference - readOnly: true - type: - - 'null' - - string slot: description: |- The name of the slot in the parent in which this content node resides. The valid slot names @@ -9957,14 +9482,19 @@ components: - 'null' - string required: - - children - contentType - data + - parent - position type: object - ColumnLayout.jsonapi-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + ContentNode-read: deprecated: false - description: '' + description: |- + A piece of information that is part of a programme. ContentNodes may store content such as + one or multiple free text fields, or any other necessary data. Content nodes may also be used + to define layouts. For this purpose, a content node may offer so-called slots, into which other + content nodes may be inserted. In return, a content node may be nested inside a slot in a parent + container content node. This way, a tree of content nodes makes up a complete programme. properties: children: description: 'All content nodes that are direct children of this content node.' @@ -9989,15 +9519,9 @@ components: readOnly: true type: string data: - default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). + description: 'Holds the actual data of the content node.' example: - columns: - - - slot: '1' - width: 12 + text: 'dummy text' items: type: string type: @@ -10057,10 +9581,9 @@ components: required: - children - contentType - - data - position type: object - ColumnLayout.jsonapi-read_Category.PreferredContentTypes_Category.ContentNodes: + ContentNode-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: deprecated: false description: '' properties: @@ -10087,15 +9610,9 @@ components: readOnly: true type: string data: - default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). + description: 'Holds the actual data of the content node.' example: - columns: - - - slot: '1' - width: 12 + text: 'dummy text' items: type: string type: @@ -10155,10 +9672,9 @@ components: required: - children - contentType - - data - position type: object - ColumnLayout.jsonapi-read_ScheduleEntry.Activity: + ContentNode-read_Category.PreferredContentTypes_Category.ContentNodes: deprecated: false description: '' properties: @@ -10185,15 +9701,9 @@ components: readOnly: true type: string data: - default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). + description: 'Holds the actual data of the content node.' example: - columns: - - - slot: '1' - width: 12 + text: 'dummy text' items: type: string type: @@ -10253,13 +9763,26 @@ components: required: - children - contentType - - data - position type: object - ColumnLayout.jsonapi-write_create: + ContentNode.jsonapi: deprecated: false - description: '' + description: |- + A piece of information that is part of a programme. ContentNodes may store content such as + one or multiple free text fields, or any other necessary data. Content nodes may also be used + to define layouts. For this purpose, a content node may offer so-called slots, into which other + content nodes may be inserted. In return, a content node may be nested inside a slot in a parent + container content node. This way, a tree of content nodes makes up a complete programme. properties: + children: + description: 'All content nodes that are direct children of this content node.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array contentType: description: |- Defines the type of this content node. There is a fixed list of types that are implemented @@ -10267,22 +9790,28 @@ components: in a content node. The content type may not be changed once the content node is created. example: /content_types/1a2b3c4d format: iri-reference + readOnly: true + type: string + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true type: string data: - default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). + description: 'Holds the actual data of the content node.' example: - columns: - - - slot: '1' - width: 12 + text: 'dummy text' items: type: string type: - array - 'null' + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string instanceName: description: |- An optional name for this content node. This is useful when planning e.g. an alternative @@ -10309,66 +9838,16 @@ components: same parent. The API does not guarantee the uniqueness of parent+slot+position. example: -1 type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - contentType - - data - - parent - - position - type: object - ColumnLayout.jsonapi-write_update: - deprecated: false - description: '' - properties: - data: - default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - columns: - - - slot: '1' - width: 12 - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: + root: description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. example: /content_nodes/1a2b3c4d format: iri-reference + readOnly: true type: - 'null' - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer slot: description: |- The name of the slot in the parent in which this content node resides. The valid slot names @@ -10379,12 +9858,18 @@ components: - 'null' - string required: - - data + - children + - contentType - position type: object - ColumnLayout.jsonhal-read: + ContentNode.jsonhal-read: deprecated: false - description: '' + description: |- + A piece of information that is part of a programme. ContentNodes may store content such as + one or multiple free text fields, or any other necessary data. Content nodes may also be used + to define layouts. For this purpose, a content node may offer so-called slots, into which other + content nodes may be inserted. In return, a content node may be nested inside a slot in a parent + container content node. This way, a tree of content nodes makes up a complete programme. properties: _links: properties: @@ -10418,15 +9903,9 @@ components: readOnly: true type: string data: - default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). + description: 'Holds the actual data of the content node.' example: - columns: - - - slot: '1' - width: 12 + text: 'dummy text' items: type: string type: @@ -10486,10 +9965,9 @@ components: required: - children - contentType - - data - position type: object - ColumnLayout.jsonhal-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: + ContentNode.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: deprecated: false description: '' properties: @@ -10525,15 +10003,9 @@ components: readOnly: true type: string data: - default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). + description: 'Holds the actual data of the content node.' example: - columns: - - - slot: '1' - width: 12 + text: 'dummy text' items: type: string type: @@ -10593,10 +10065,9 @@ components: required: - children - contentType - - data - position type: object - ColumnLayout.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + ContentNode.jsonhal-read_Category.PreferredContentTypes_Category.ContentNodes: deprecated: false description: '' properties: @@ -10632,15 +10103,9 @@ components: readOnly: true type: string data: - default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). + description: 'Holds the actual data of the content node.' example: - columns: - - - slot: '1' - width: 12 + text: 'dummy text' items: type: string type: @@ -10700,22 +10165,23 @@ components: required: - children - contentType - - data - position type: object - ColumnLayout.jsonhal-read_Category.PreferredContentTypes_Category.ContentNodes: + ContentNode.jsonld-read: deprecated: false - description: '' + description: |- + A piece of information that is part of a programme. ContentNodes may store content such as + one or multiple free text fields, or any other necessary data. Content nodes may also be used + to define layouts. For this purpose, a content node may offer so-called slots, into which other + content nodes may be inserted. In return, a content node may be nested inside a slot in a parent + container content node. This way, a tree of content nodes makes up a complete programme. properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string children: description: 'All content nodes that are direct children of this content node.' example: '["/content_nodes/1a2b3c4d"]' @@ -10739,15 +10205,9 @@ components: readOnly: true type: string data: - default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). + description: 'Holds the actual data of the content node.' example: - columns: - - - slot: '1' - width: 12 + text: 'dummy text' items: type: string type: @@ -10807,22 +10267,35 @@ components: required: - children - contentType - - data - position type: object - ColumnLayout.jsonhal-read_ScheduleEntry.Activity: + ContentNode.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: deprecated: false description: '' properties: - _links: - properties: - self: + '@context': + oneOf: + - + additionalProperties: true properties: - href: - format: iri-reference + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] type: string + required: + - '@vocab' + - hydra type: object - type: object + - + type: string + readOnly: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string children: description: 'All content nodes that are direct children of this content node.' example: '["/content_nodes/1a2b3c4d"]' @@ -10846,15 +10319,9 @@ components: readOnly: true type: string data: - default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). + description: 'Holds the actual data of the content node.' example: - columns: - - - slot: '1' - width: 12 + text: 'dummy text' items: type: string type: @@ -10914,87 +10381,9 @@ components: required: - children - contentType - - data - - position - type: object - ColumnLayout.jsonhal-write_create: - deprecated: false - description: '' - properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - data: - default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - columns: - - - slot: '1' - width: 12 - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - contentType - - data - - parent - position type: object - ColumnLayout.jsonld-read: + ContentNode.jsonld-read_Category.PreferredContentTypes_Category.ContentNodes: deprecated: false description: '' properties: @@ -11044,15 +10433,9 @@ components: readOnly: true type: string data: - default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). + description: 'Holds the actual data of the content node.' example: - columns: - - - slot: '1' - width: 12 + text: 'dummy text' items: type: string type: @@ -11112,254 +10495,264 @@ components: required: - children - contentType - - data - position type: object - ColumnLayout.jsonld-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: + ContentType-read: deprecated: false - description: '' + description: |- + Defines a type of content that can be present in a content node tree. A content type + determines what data can be stored in content nodes of this type, as well as validation, + available slots and jsonConfig settings. properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': + active: + default: true + description: 'Whether this content type is still maintained and recommended for use in new camps.' + example: 'true' readOnly: true - type: string - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' + type: boolean + contentNodes: + description: 'API endpoint link for creating new entities of type entityClass.' + example: '/content_node/column_layouts?contentType=%2Fcontent_types%2F1a2b3c4d' + format: iri-reference items: - example: 'https://example.com/' - format: iri-reference type: string readOnly: true type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' + name: + description: |- + A name in UpperCamelCase of the content type. This value may be used as a technical + identifier of this content type, it is guaranteed to stay fixed. example: SafetyConcept + maxLength: 32 readOnly: true type: string - data: - default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - columns: - - - slot: '1' - width: 12 + required: + - active + - name + type: object + ContentType-read_Category.PreferredContentTypes_Category.ContentNodes: + deprecated: false + description: '' + properties: + active: + default: true + description: 'Whether this content type is still maintained and recommended for use in new camps.' + example: 'true' + readOnly: true + type: boolean + contentNodes: + description: 'API endpoint link for creating new entities of type entityClass.' + example: '/content_node/column_layouts?contentType=%2Fcontent_types%2F1a2b3c4d' + format: iri-reference items: type: string - type: - - array - - 'null' + readOnly: true + type: array id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: + name: description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm + A name in UpperCamelCase of the content type. This value may be used as a technical + identifier of this content type, it is guaranteed to stay fixed. + example: SafetyConcept maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string + type: string required: - - children - - contentType - - data - - position + - active + - name type: object - ColumnLayout.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + ContentType.jsonapi: deprecated: false - description: '' + description: |- + Defines a type of content that can be present in a content node tree. A content type + determines what data can be stored in content nodes of this type, as well as validation, + available slots and jsonConfig settings. properties: - '@context': - oneOf: - - - additionalProperties: true + data: + properties: + attributes: properties: - '@vocab': + _id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] + active: + default: true + description: 'Whether this content type is still maintained and recommended for use in new camps.' + example: 'true' + readOnly: true + type: boolean + contentNodes: + description: 'API endpoint link for creating new entities of type entityClass.' + example: '/content_node/column_layouts?contentType=%2Fcontent_types%2F1a2b3c4d' + format: iri-reference + items: { type: string } + readOnly: true + type: array + entityClass: + description: |- + The name of the internal PHP class that implements all custom behaviour of content nodes + of this type. + readOnly: true + type: string + jsonConfig: + description: |- + Internal configuration for the entityClass, in case the same entityClass is reused + for different content types. + items: { type: string } + readOnly: true + type: [array, 'null'] + name: + description: |- + A name in UpperCamelCase of the content type. This value may be used as a technical + identifier of this content type, it is guaranteed to stay fixed. + example: SafetyConcept + maxLength: 32 + readOnly: true type: string required: - - '@vocab' - - hydra + - active + - entityClass + - name type: object - - + id: type: string + relationships: + properties: + categories: + properties: { data: { items: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object }, type: array } } + required: + - categories + type: object + type: + type: string + required: + - id + - type + type: object + included: + description: 'Related resources requested via the "include" query parameter.' + externalDocs: + url: 'https://jsonapi.org/format/#fetching-includes' + items: + anyOf: + - + $ref: '#/components/schemas/Category.jsonapi' readOnly: true - '@id': - readOnly: true - type: string - '@type': + type: array + type: object + ContentType.jsonhal-read: + deprecated: false + description: |- + Defines a type of content that can be present in a content node tree. A content type + determines what data can be stored in content nodes of this type, as well as validation, + available slots and jsonConfig settings. + properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + active: + default: true + description: 'Whether this content type is still maintained and recommended for use in new camps.' + example: 'true' readOnly: true - type: string - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' + type: boolean + contentNodes: + description: 'API endpoint link for creating new entities of type entityClass.' + example: '/content_node/column_layouts?contentType=%2Fcontent_types%2F1a2b3c4d' + format: iri-reference items: - example: 'https://example.com/' - format: iri-reference type: string readOnly: true type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' + name: + description: |- + A name in UpperCamelCase of the content type. This value may be used as a technical + identifier of this content type, it is guaranteed to stay fixed. example: SafetyConcept + maxLength: 32 readOnly: true type: string - data: - default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - columns: - - - slot: '1' - width: 12 + required: + - active + - name + type: object + ContentType.jsonhal-read_Category.PreferredContentTypes_Category.ContentNodes: + deprecated: false + description: '' + properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + active: + default: true + description: 'Whether this content type is still maintained and recommended for use in new camps.' + example: 'true' + readOnly: true + type: boolean + contentNodes: + description: 'API endpoint link for creating new entities of type entityClass.' + example: '/content_node/column_layouts?contentType=%2Fcontent_types%2F1a2b3c4d' + format: iri-reference items: type: string - type: - - array - - 'null' + readOnly: true + type: array id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: + name: description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm + A name in UpperCamelCase of the content type. This value may be used as a technical + identifier of this content type, it is guaranteed to stay fixed. + example: SafetyConcept maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string + type: string required: - - children - - contentType - - data - - position + - active + - name type: object - ColumnLayout.jsonld-read_Category.PreferredContentTypes_Category.ContentNodes: + ContentType.jsonld-read: deprecated: false - description: '' + description: |- + Defines a type of content that can be present in a content node tree. A content type + determines what data can be stored in content nodes of this type, as well as validation, + available slots and jsonConfig settings. properties: '@context': oneOf: @@ -11384,101 +10777,39 @@ components: '@type': readOnly: true type: string - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + active: + default: true + description: 'Whether this content type is still maintained and recommended for use in new camps.' + example: 'true' readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d + type: boolean + contentNodes: + description: 'API endpoint link for creating new entities of type entityClass.' + example: '/content_node/column_layouts?contentType=%2Fcontent_types%2F1a2b3c4d' format: iri-reference - type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true - type: string - data: - default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - columns: - - - slot: '1' - width: 12 items: type: string - type: - - array - - 'null' + readOnly: true + type: array id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: + name: description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm + A name in UpperCamelCase of the content type. This value may be used as a technical + identifier of this content type, it is guaranteed to stay fixed. + example: SafetyConcept maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string + type: string required: - - children - - contentType - - data - - position + - active + - name type: object - ColumnLayout.jsonld-read_ScheduleEntry.Activity: + ContentType.jsonld-read_Category.PreferredContentTypes_Category.ContentNodes: deprecated: false description: '' properties: @@ -11505,832 +10836,894 @@ components: '@type': readOnly: true type: string - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' + active: + default: true + description: 'Whether this content type is still maintained and recommended for use in new camps.' + example: 'true' + readOnly: true + type: boolean + contentNodes: + description: 'API endpoint link for creating new entities of type entityClass.' + example: '/content_node/column_layouts?contentType=%2Fcontent_types%2F1a2b3c4d' + format: iri-reference items: - example: 'https://example.com/' - format: iri-reference type: string readOnly: true type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' + name: + description: |- + A name in UpperCamelCase of the content type. This value may be used as a technical + identifier of this content type, it is guaranteed to stay fixed. example: SafetyConcept + maxLength: 32 readOnly: true type: string - data: - default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - columns: - - - slot: '1' - width: 12 - items: - type: string + required: + - active + - name + type: object + Credentials: + properties: + identifier: + example: test@example.com + type: string + password: + example: test + type: string + type: object + Day-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: + deprecated: false + description: '' + properties: + dayOffset: + description: "The 0-based offset in days from the period's start date when this day starts." + example: '1' + readOnly: true + type: integer + dayResponsibles: + description: 'The list of people who have a whole-day responsibility on this day.' + example: /days/1a2b3c4d/day_responsibles + format: iri-reference + readOnly: true + type: string + end: + description: 'The end date and time of the day. This is a read-only convenience property.' + example: '2022-01-03T00:00:00+00:00' + format: date + readOnly: true type: - - array - 'null' + - string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d + number: + description: 'The 1-based cardinal number of the day in the period. Not unique within the camp.' + example: '2' + readOnly: true + type: integer + period: + description: 'The time period that this day belongs to.' + example: /periods/1a2b3c4d format: iri-reference + type: string + scheduleEntries: + description: "All scheduleEntries in this day's period which overlap with this day (using midnight as cutoff)." + example: '/schedule_entries?period=%2Fperiods%2F1a2b3c4d&start%5Bstrictly_before%5D=2022-01-03T00%3A00%3A00%2B00%3A00&end%5Bafter%5D=2022-01-02T00%3A00%3A00%2B00%3A00' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + start: + description: 'The start date and time of the day. This is a read-only convenience property.' + example: '2022-01-02T00:00:00+00:00' + format: date + readOnly: true type: - 'null' - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 + required: + - dayOffset + - dayResponsibles + - period + type: object + Day-read_Day.DayResponsibles: + deprecated: false + description: |- + A day in a time period of a camp. This is represented as a reference to the time period + along with a number of days offset from the period's starting date. This is to make it + easier to move the whole periods to different dates. Days are created automatically when + creating or updating periods, and are not writable through the API directly. + properties: + dayOffset: + description: "The 0-based offset in days from the period's start date when this day starts." + example: '1' + readOnly: true type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference + dayResponsibles: + items: + $ref: '#/components/schemas/DayResponsible-read_Day.DayResponsibles' + readOnly: true + type: unknown_type + end: + description: 'The end date and time of the day. This is a read-only convenience property.' + example: '2022-01-03T00:00:00+00:00' + format: date readOnly: true type: - 'null' - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + number: + description: 'The 1-based cardinal number of the day in the period. Not unique within the camp.' + example: '2' + readOnly: true + type: integer + period: + description: 'The time period that this day belongs to.' + example: /periods/1a2b3c4d + format: iri-reference + type: string + scheduleEntries: + description: "All scheduleEntries in this day's period which overlap with this day (using midnight as cutoff)." + example: '/schedule_entries?period=%2Fperiods%2F1a2b3c4d&start%5Bstrictly_before%5D=2022-01-03T00%3A00%3A00%2B00%3A00&end%5Bafter%5D=2022-01-02T00%3A00%3A00%2B00%3A00' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + start: + description: 'The start date and time of the day. This is a read-only convenience property.' + example: '2022-01-02T00:00:00+00:00' + format: date + readOnly: true type: - 'null' - string required: - - children - - contentType - - data - - position + - dayOffset + - dayResponsibles + - period type: object - ColumnLayout.jsonld-write_create: + Day-read_Period.Camp_Period.Days: deprecated: false description: '' properties: - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d + dayOffset: + description: "The 0-based offset in days from the period's start date when this day starts." + example: '1' + readOnly: true + type: integer + dayResponsibles: + description: 'The list of people who have a whole-day responsibility on this day.' + example: /days/1a2b3c4d/day_responsibles format: iri-reference + readOnly: true type: string - data: - default: '{"columns":[{"slot":"1","width":6},{"slot":"2","width":6}]}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - columns: - - - slot: '1' - width: 12 - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 + end: + description: 'The end date and time of the day. This is a read-only convenience property.' + example: '2022-01-03T00:00:00+00:00' + format: date + readOnly: true type: - 'null' - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + number: + description: 'The 1-based cardinal number of the day in the period. Not unique within the camp.' + example: '2' + readOnly: true type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 + period: + description: 'The time period that this day belongs to.' + example: /periods/1a2b3c4d + format: iri-reference + type: string + scheduleEntries: + description: "All scheduleEntries in this day's period which overlap with this day (using midnight as cutoff)." + example: '/schedule_entries?period=%2Fperiods%2F1a2b3c4d&start%5Bstrictly_before%5D=2022-01-03T00%3A00%3A00%2B00%3A00&end%5Bafter%5D=2022-01-02T00%3A00%3A00%2B00%3A00' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + start: + description: 'The start date and time of the day. This is a read-only convenience property.' + example: '2022-01-02T00:00:00+00:00' + format: date + readOnly: true type: - 'null' - string required: - - contentType - - data - - parent - - position + - dayOffset + - dayResponsibles + - period type: object - ContentNode-read: + Day.jsonapi: deprecated: false description: |- - A piece of information that is part of a programme. ContentNodes may store content such as - one or multiple free text fields, or any other necessary data. Content nodes may also be used - to define layouts. For this purpose, a content node may offer so-called slots, into which other - content nodes may be inserted. In return, a content node may be nested inside a slot in a parent - container content node. This way, a tree of content nodes makes up a complete programme. + A day in a time period of a camp. This is represented as a reference to the time period + along with a number of days offset from the period's starting date. This is to make it + easier to move the whole periods to different dates. Days are created automatically when + creating or updating periods, and are not writable through the API directly. properties: - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' + data: + properties: + attributes: + properties: + _id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + dayOffset: + description: "The 0-based offset in days from the period's start date when this day starts." + example: '1' + readOnly: true + type: integer + end: + description: 'The end date and time of the day. This is a read-only convenience property.' + example: '2022-01-03T00:00:00+00:00' + format: date + readOnly: true + type: ['null', string] + number: + description: 'The 1-based cardinal number of the day in the period. Not unique within the camp.' + example: '2' + readOnly: true + type: integer + start: + description: 'The start date and time of the day. This is a read-only convenience property.' + example: '2022-01-02T00:00:00+00:00' + format: date + readOnly: true + type: ['null', string] + required: + - dayOffset + type: object + id: + type: string + relationships: + properties: + dayResponsibles: + properties: { data: { items: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object }, type: array } } + period: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + scheduleEntries: + properties: { data: { items: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object }, type: array } } + required: + - dayResponsibles + - period + type: object + type: + type: string + required: + - id + - type + type: object + included: + description: 'Related resources requested via the "include" query parameter.' + externalDocs: + url: 'https://jsonapi.org/format/#fetching-includes' items: - example: 'https://example.com/' - format: iri-reference - type: string + anyOf: + - + $ref: '#/components/schemas/DayResponsible.jsonapi' + - + $ref: '#/components/schemas/DayResponsible.jsonapi' + - + $ref: '#/components/schemas/DayResponsible.jsonapi' readOnly: true type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d + type: object + Day.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: + deprecated: false + description: '' + properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + dayOffset: + description: "The 0-based offset in days from the period's start date when this day starts." + example: '1' + readOnly: true + type: integer + dayResponsibles: + description: 'The list of people who have a whole-day responsibility on this day.' + example: /days/1a2b3c4d/day_responsibles format: iri-reference - type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept readOnly: true type: string - data: - description: 'Holds the actual data of the content node.' - example: - text: 'dummy text' - items: - type: string + end: + description: 'The end date and time of the day. This is a read-only convenience property.' + example: '2022-01-03T00:00:00+00:00' + format: date + readOnly: true type: - - array - 'null' + - string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 + number: + description: 'The 1-based cardinal number of the day in the period. Not unique within the camp.' + example: '2' + readOnly: true type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d + period: + description: 'The time period that this day belongs to.' + example: /periods/1a2b3c4d format: iri-reference + type: string + scheduleEntries: + description: "All scheduleEntries in this day's period which overlap with this day (using midnight as cutoff)." + example: '/schedule_entries?period=%2Fperiods%2F1a2b3c4d&start%5Bstrictly_before%5D=2022-01-03T00%3A00%3A00%2B00%3A00&end%5Bafter%5D=2022-01-02T00%3A00%3A00%2B00%3A00' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + start: + description: 'The start date and time of the day. This is a read-only convenience property.' + example: '2022-01-02T00:00:00+00:00' + format: date readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 type: - 'null' - string required: - - children - - contentType - - position + - dayOffset + - dayResponsibles + - period type: object - ContentNode-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + Day.jsonhal-read_Day.DayResponsibles: deprecated: false - description: '' + description: |- + A day in a time period of a camp. This is represented as a reference to the time period + along with a number of days offset from the period's starting date. This is to make it + easier to move the whole periods to different dates. Days are created automatically when + creating or updating periods, and are not writable through the API directly. properties: - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + dayOffset: + description: "The 0-based offset in days from the period's start date when this day starts." + example: '1' + readOnly: true + type: integer + dayResponsibles: items: - example: 'https://example.com/' - format: iri-reference - type: string + $ref: '#/components/schemas/DayResponsible.jsonhal-read_Day.DayResponsibles' readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept + type: unknown_type + end: + description: 'The end date and time of the day. This is a read-only convenience property.' + example: '2022-01-03T00:00:00+00:00' + format: date readOnly: true - type: string - data: - description: 'Holds the actual data of the content node.' - example: - text: 'dummy text' - items: - type: string type: - - array - 'null' + - string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 + number: + description: 'The 1-based cardinal number of the day in the period. Not unique within the camp.' + example: '2' + readOnly: true type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d + period: + description: 'The time period that this day belongs to.' + example: /periods/1a2b3c4d format: iri-reference + type: string + scheduleEntries: + description: "All scheduleEntries in this day's period which overlap with this day (using midnight as cutoff)." + example: '/schedule_entries?period=%2Fperiods%2F1a2b3c4d&start%5Bstrictly_before%5D=2022-01-03T00%3A00%3A00%2B00%3A00&end%5Bafter%5D=2022-01-02T00%3A00%3A00%2B00%3A00' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + start: + description: 'The start date and time of the day. This is a read-only convenience property.' + example: '2022-01-02T00:00:00+00:00' + format: date readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 type: - 'null' - string required: - - children - - contentType - - position + - dayOffset + - dayResponsibles + - period type: object - ContentNode-read_Category.PreferredContentTypes_Category.ContentNodes: + Day.jsonhal-read_Period.Camp_Period.Days: deprecated: false description: '' properties: - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + dayOffset: + description: "The 0-based offset in days from the period's start date when this day starts." + example: '1' readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d + type: integer + dayResponsibles: + description: 'The list of people who have a whole-day responsibility on this day.' + example: /days/1a2b3c4d/day_responsibles format: iri-reference - type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept readOnly: true type: string - data: - description: 'Holds the actual data of the content node.' - example: - text: 'dummy text' - items: - type: string + end: + description: 'The end date and time of the day. This is a read-only convenience property.' + example: '2022-01-03T00:00:00+00:00' + format: date + readOnly: true type: - - array - 'null' + - string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 + number: + description: 'The 1-based cardinal number of the day in the period. Not unique within the camp.' + example: '2' + readOnly: true type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d + period: + description: 'The time period that this day belongs to.' + example: /periods/1a2b3c4d format: iri-reference + type: string + scheduleEntries: + description: "All scheduleEntries in this day's period which overlap with this day (using midnight as cutoff)." + example: '/schedule_entries?period=%2Fperiods%2F1a2b3c4d&start%5Bstrictly_before%5D=2022-01-03T00%3A00%3A00%2B00%3A00&end%5Bafter%5D=2022-01-02T00%3A00%3A00%2B00%3A00' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + start: + description: 'The start date and time of the day. This is a read-only convenience property.' + example: '2022-01-02T00:00:00+00:00' + format: date readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 type: - 'null' - string required: - - children - - contentType - - position + - dayOffset + - dayResponsibles + - period type: object - ContentNode.jsonapi-read: + Day.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: deprecated: false - description: |- - A piece of information that is part of a programme. ContentNodes may store content such as - one or multiple free text fields, or any other necessary data. Content nodes may also be used - to define layouts. For this purpose, a content node may offer so-called slots, into which other - content nodes may be inserted. In return, a content node may be nested inside a slot in a parent - container content node. This way, a tree of content nodes makes up a complete programme. + description: '' properties: - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string + readOnly: true + '@id': readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept + '@type': readOnly: true type: string - data: - description: 'Holds the actual data of the content node.' - example: - text: 'dummy text' - items: - type: string + dayOffset: + description: "The 0-based offset in days from the period's start date when this day starts." + example: '1' + readOnly: true + type: integer + dayResponsibles: + description: 'The list of people who have a whole-day responsibility on this day.' + example: /days/1a2b3c4d/day_responsibles + format: iri-reference + readOnly: true + type: string + end: + description: 'The end date and time of the day. This is a read-only convenience property.' + example: '2022-01-03T00:00:00+00:00' + format: date + readOnly: true type: - - array - 'null' + - string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 + number: + description: 'The 1-based cardinal number of the day in the period. Not unique within the camp.' + example: '2' + readOnly: true type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d + period: + description: 'The time period that this day belongs to.' + example: /periods/1a2b3c4d format: iri-reference + type: string + scheduleEntries: + description: "All scheduleEntries in this day's period which overlap with this day (using midnight as cutoff)." + example: '/schedule_entries?period=%2Fperiods%2F1a2b3c4d&start%5Bstrictly_before%5D=2022-01-03T00%3A00%3A00%2B00%3A00&end%5Bafter%5D=2022-01-02T00%3A00%3A00%2B00%3A00' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + start: + description: 'The start date and time of the day. This is a read-only convenience property.' + example: '2022-01-02T00:00:00+00:00' + format: date readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 type: - 'null' - string required: - - children - - contentType - - position + - dayOffset + - dayResponsibles + - period type: object - ContentNode.jsonapi-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + Day.jsonld-read_Day.DayResponsibles: deprecated: false - description: '' + description: |- + A day in a time period of a camp. This is represented as a reference to the time period + along with a number of days offset from the period's starting date. This is to make it + easier to move the whole periods to different dates. Days are created automatically when + creating or updating periods, and are not writable through the API directly. properties: - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string + readOnly: true + '@id': readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept + '@type': readOnly: true type: string - data: - description: 'Holds the actual data of the content node.' - example: - text: 'dummy text' + dayOffset: + description: "The 0-based offset in days from the period's start date when this day starts." + example: '1' + readOnly: true + type: integer + dayResponsibles: items: - type: string + $ref: '#/components/schemas/DayResponsible.jsonld-read_Day.DayResponsibles' + readOnly: true + type: unknown_type + end: + description: 'The end date and time of the day. This is a read-only convenience property.' + example: '2022-01-03T00:00:00+00:00' + format: date + readOnly: true type: - - array - 'null' + - string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 + number: + description: 'The 1-based cardinal number of the day in the period. Not unique within the camp.' + example: '2' + readOnly: true type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d + period: + description: 'The time period that this day belongs to.' + example: /periods/1a2b3c4d format: iri-reference + type: string + scheduleEntries: + description: "All scheduleEntries in this day's period which overlap with this day (using midnight as cutoff)." + example: '/schedule_entries?period=%2Fperiods%2F1a2b3c4d&start%5Bstrictly_before%5D=2022-01-03T00%3A00%3A00%2B00%3A00&end%5Bafter%5D=2022-01-02T00%3A00%3A00%2B00%3A00' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + start: + description: 'The start date and time of the day. This is a read-only convenience property.' + example: '2022-01-02T00:00:00+00:00' + format: date readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 type: - 'null' - string required: - - children - - contentType - - position + - dayOffset + - dayResponsibles + - period type: object - ContentNode.jsonapi-read_Category.PreferredContentTypes_Category.ContentNodes: + Day.jsonld-read_Period.Camp_Period.Days: deprecated: false description: '' properties: - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string + readOnly: true + '@id': readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept + '@type': readOnly: true type: string - data: - description: 'Holds the actual data of the content node.' - example: - text: 'dummy text' - items: - type: string + dayOffset: + description: "The 0-based offset in days from the period's start date when this day starts." + example: '1' + readOnly: true + type: integer + dayResponsibles: + description: 'The list of people who have a whole-day responsibility on this day.' + example: /days/1a2b3c4d/day_responsibles + format: iri-reference + readOnly: true + type: string + end: + description: 'The end date and time of the day. This is a read-only convenience property.' + example: '2022-01-03T00:00:00+00:00' + format: date + readOnly: true type: - - array - 'null' + - string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 + number: + description: 'The 1-based cardinal number of the day in the period. Not unique within the camp.' + example: '2' + readOnly: true type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d + period: + description: 'The time period that this day belongs to.' + example: /periods/1a2b3c4d format: iri-reference + type: string + scheduleEntries: + description: "All scheduleEntries in this day's period which overlap with this day (using midnight as cutoff)." + example: '/schedule_entries?period=%2Fperiods%2F1a2b3c4d&start%5Bstrictly_before%5D=2022-01-03T00%3A00%3A00%2B00%3A00&end%5Bafter%5D=2022-01-02T00%3A00%3A00%2B00%3A00' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + start: + description: 'The start date and time of the day. This is a read-only convenience property.' + example: '2022-01-02T00:00:00+00:00' + format: date readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 type: - 'null' - string required: - - children - - contentType - - position + - dayOffset + - dayResponsibles + - period type: object - ContentNode.jsonhal-read: + DayResponsible-read: deprecated: false - description: |- - A piece of information that is part of a programme. ContentNodes may store content such as - one or multiple free text fields, or any other necessary data. Content nodes may also be used - to define layouts. For this purpose, a content node may offer so-called slots, into which other - content nodes may be inserted. In return, a content node may be nested inside a slot in a parent - container content node. This way, a tree of content nodes makes up a complete programme. + description: 'A person that has some whole-day responsibility on a day in the camp.' properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d + campCollaboration: + description: "The person that is responsible. Must belong to the same camp as the day's period." + example: /camp_collaborations/1a2b3c4d format: iri-reference type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true + day: + description: 'The day on which the person is responsible.' + example: /days/1a2b3c4d + format: iri-reference type: string - data: - description: 'Holds the actual data of the content node.' - example: - text: 'dummy text' - items: - type: string - type: - - array - - 'null' id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d + required: + - campCollaboration + - day + type: object + DayResponsible-read_Day.DayResponsibles: + deprecated: false + description: '' + properties: + campCollaboration: + description: "The person that is responsible. Must belong to the same camp as the day's period." + example: /camp_collaborations/1a2b3c4d format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d + type: string + day: + description: 'The day on which the person is responsible.' + example: /days/1a2b3c4d format: iri-reference + type: string + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string + type: string required: - - children - - contentType - - position + - campCollaboration + - day type: object - ContentNode.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + DayResponsible-write: deprecated: false - description: '' + description: 'A person that has some whole-day responsibility on a day in the camp.' + properties: + campCollaboration: + description: "The person that is responsible. Must belong to the same camp as the day's period." + example: /camp_collaborations/1a2b3c4d + format: iri-reference + type: string + day: + description: 'The day on which the person is responsible.' + example: /days/1a2b3c4d + format: iri-reference + type: string + required: + - campCollaboration + - day + type: object + DayResponsible.jsonapi: + deprecated: false + description: 'A person that has some whole-day responsibility on a day in the camp.' + properties: + data: + properties: + attributes: + properties: + _id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + type: object + id: + type: string + relationships: + properties: + campCollaboration: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + day: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + required: + - campCollaboration + - day + type: object + type: + type: string + required: + - id + - type + type: object + included: + description: 'Related resources requested via the "include" query parameter.' + externalDocs: + url: 'https://jsonapi.org/format/#fetching-includes' + items: + anyOf: + - + $ref: '#/components/schemas/Day.jsonapi' + - + $ref: '#/components/schemas/Day.jsonapi' + readOnly: true + type: array + type: object + DayResponsible.jsonhal-read: + deprecated: false + description: 'A person that has some whole-day responsibility on a day in the camp.' properties: _links: properties: @@ -12341,94 +11734,27 @@ components: type: string type: object type: object - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d + campCollaboration: + description: "The person that is responsible. Must belong to the same camp as the day's period." + example: /camp_collaborations/1a2b3c4d format: iri-reference type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true + day: + description: 'The day on which the person is responsible.' + example: /days/1a2b3c4d + format: iri-reference type: string - data: - description: 'Holds the actual data of the content node.' - example: - text: 'dummy text' - items: - type: string - type: - - array - - 'null' id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference - readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string required: - - children - - contentType - - position + - campCollaboration + - day type: object - ContentNode.jsonhal-read_Category.PreferredContentTypes_Category.ContentNodes: + DayResponsible.jsonhal-read_Day.DayResponsibles: deprecated: false description: '' properties: @@ -12441,198 +11767,56 @@ components: type: string type: object type: object - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d + campCollaboration: + description: "The person that is responsible. Must belong to the same camp as the day's period." + example: /camp_collaborations/1a2b3c4d format: iri-reference type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true + day: + description: 'The day on which the person is responsible.' + example: /days/1a2b3c4d + format: iri-reference type: string - data: - description: 'Holds the actual data of the content node.' - example: - text: 'dummy text' - items: - type: string - type: - - array - - 'null' id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference - readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string required: - - children - - contentType - - position + - campCollaboration + - day type: object - ContentNode.jsonld-read: + DayResponsible.jsonhal-write: deprecated: false - description: |- - A piece of information that is part of a programme. ContentNodes may store content such as - one or multiple free text fields, or any other necessary data. Content nodes may also be used - to define layouts. For this purpose, a content node may offer so-called slots, into which other - content nodes may be inserted. In return, a content node may be nested inside a slot in a parent - container content node. This way, a tree of content nodes makes up a complete programme. + description: 'A person that has some whole-day responsibility on a day in the camp.' properties: - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + campCollaboration: + description: "The person that is responsible. Must belong to the same camp as the day's period." + example: /camp_collaborations/1a2b3c4d format: iri-reference type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true - type: string - data: - description: 'Holds the actual data of the content node.' - example: - text: 'dummy text' - items: - type: string - type: - - array - - 'null' - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d + day: + description: 'The day on which the person is responsible.' + example: /days/1a2b3c4d format: iri-reference - readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string + type: string required: - - children - - contentType - - position + - campCollaboration + - day type: object - ContentNode.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + DayResponsible.jsonld-read: deprecated: false - description: '' + description: 'A person that has some whole-day responsibility on a day in the camp.' properties: '@context': oneOf: @@ -12657,94 +11841,27 @@ components: '@type': readOnly: true type: string - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d + campCollaboration: + description: "The person that is responsible. Must belong to the same camp as the day's period." + example: /camp_collaborations/1a2b3c4d format: iri-reference type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true + day: + description: 'The day on which the person is responsible.' + example: /days/1a2b3c4d + format: iri-reference type: string - data: - description: 'Holds the actual data of the content node.' - example: - text: 'dummy text' - items: - type: string - type: - - array - - 'null' id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference - readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string required: - - children - - contentType - - position + - campCollaboration + - day type: object - ContentNode.jsonld-read_Category.PreferredContentTypes_Category.ContentNodes: + DayResponsible.jsonld-read_Day.DayResponsibles: deprecated: false description: '' properties: @@ -12771,294 +11888,132 @@ components: '@type': readOnly: true type: string - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d + campCollaboration: + description: "The person that is responsible. Must belong to the same camp as the day's period." + example: /camp_collaborations/1a2b3c4d format: iri-reference type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true + day: + description: 'The day on which the person is responsible.' + example: /days/1a2b3c4d + format: iri-reference type: string - data: - description: 'Holds the actual data of the content node.' - example: - text: 'dummy text' - items: - type: string - type: - - array - - 'null' id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference - readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string required: - - children - - contentType - - position + - campCollaboration + - day type: object - ContentType-read: + DayResponsible.jsonld-write: deprecated: false - description: |- - Defines a type of content that can be present in a content node tree. A content type - determines what data can be stored in content nodes of this type, as well as validation, - available slots and jsonConfig settings. + description: 'A person that has some whole-day responsibility on a day in the camp.' properties: - active: - default: true - description: 'Whether this content type is still maintained and recommended for use in new camps.' - example: 'true' - readOnly: true - type: boolean - contentNodes: - description: 'API endpoint link for creating new entities of type entityClass.' - example: '/content_node/column_layouts?contentType=%2Fcontent_types%2F1a2b3c4d' + campCollaboration: + description: "The person that is responsible. Must belong to the same camp as the day's period." + example: /camp_collaborations/1a2b3c4d format: iri-reference - items: - type: string - readOnly: true - type: array - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true type: string - name: - description: |- - A name in UpperCamelCase of the content type. This value may be used as a technical - identifier of this content type, it is guaranteed to stay fixed. - example: SafetyConcept - maxLength: 32 - readOnly: true + day: + description: 'The day on which the person is responsible.' + example: /days/1a2b3c4d + format: iri-reference type: string required: - - active - - name + - campCollaboration + - day type: object - ContentType-read_Category.PreferredContentTypes_Category.ContentNodes: + Invitation-read: deprecated: false - description: '' + description: |- + An invitation for a person to collaborate in a camp. The person may or may not + already have an account. properties: - active: - default: true - description: 'Whether this content type is still maintained and recommended for use in new camps.' - example: 'true' - readOnly: true - type: boolean - contentNodes: - description: 'API endpoint link for creating new entities of type entityClass.' - example: '/content_node/column_layouts?contentType=%2Fcontent_types%2F1a2b3c4d' - format: iri-reference - items: - type: string - readOnly: true - type: array - id: - description: 'An internal, unique, randomly generated identifier of this entity.' + campId: + description: |- + The id of the camp for which this invitation is valid. This is useful for + redirecting the user to the correct place after they accept. example: 1a2b3c4d - maxLength: 16 - readOnly: true type: string - name: + campTitle: description: |- - A name in UpperCamelCase of the content type. This value may be used as a technical - identifier of this content type, it is guaranteed to stay fixed. - example: SafetyConcept - maxLength: 32 - readOnly: true + The full title of the camp for which this invitation is valid. This should help + the user to decide whether to accept or reject the invitation. + example: 'Abteilungs-Sommerlager 2022' type: string - required: - - active - - name - type: object - ContentType.jsonapi-read: - deprecated: false - description: |- - Defines a type of content that can be present in a content node tree. A content type - determines what data can be stored in content nodes of this type, as well as validation, - available slots and jsonConfig settings. - properties: - active: - default: true - description: 'Whether this content type is still maintained and recommended for use in new camps.' - example: 'true' - readOnly: true - type: boolean - contentNodes: - description: 'API endpoint link for creating new entities of type entityClass.' - example: '/content_node/column_layouts?contentType=%2Fcontent_types%2F1a2b3c4d' - format: iri-reference - items: - type: string - readOnly: true - type: array - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - name: + userAlreadyInCamp: description: |- - A name in UpperCamelCase of the content type. This value may be used as a technical - identifier of this content type, it is guaranteed to stay fixed. - example: SafetyConcept - maxLength: 32 - readOnly: true - type: string - required: - - active - - name + Indicates whether the logged in user is already collaborating in the camp, and + can therefore not accept the invitation. + type: + - boolean + - 'null' + userDisplayName: + description: |- + The display name of the user that is invited. May be null in case the user does + not already have an account. + example: 'Robert Baden-Powell' + type: + - 'null' + - string type: object - ContentType.jsonapi-read_Category.PreferredContentTypes_Category.ContentNodes: + Invitation-write: deprecated: false - description: '' - properties: - active: - default: true - description: 'Whether this content type is still maintained and recommended for use in new camps.' - example: 'true' - readOnly: true - type: boolean - contentNodes: - description: 'API endpoint link for creating new entities of type entityClass.' - example: '/content_node/column_layouts?contentType=%2Fcontent_types%2F1a2b3c4d' - format: iri-reference - items: - type: string - readOnly: true - type: array - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - name: - description: |- - A name in UpperCamelCase of the content type. This value may be used as a technical - identifier of this content type, it is guaranteed to stay fixed. - example: SafetyConcept - maxLength: 32 - readOnly: true - type: string - required: - - active - - name + description: |- + An invitation for a person to collaborate in a camp. The person may or may not + already have an account. type: object - ContentType.jsonhal-read: + Invitation.jsonapi: deprecated: false description: |- - Defines a type of content that can be present in a content node tree. A content type - determines what data can be stored in content nodes of this type, as well as validation, - available slots and jsonConfig settings. + An invitation for a person to collaborate in a camp. The person may or may not + already have an account. properties: - _links: + data: properties: - self: + attributes: properties: - href: - format: iri-reference + campId: + description: |- + The id of the camp for which this invitation is valid. This is useful for + redirecting the user to the correct place after they accept. + example: 1a2b3c4d type: string + campTitle: + description: |- + The full title of the camp for which this invitation is valid. This should help + the user to decide whether to accept or reject the invitation. + example: 'Abteilungs-Sommerlager 2022' + type: string + userAlreadyInCamp: + description: |- + Indicates whether the logged in user is already collaborating in the camp, and + can therefore not accept the invitation. + type: [boolean, 'null'] + userDisplayName: + description: |- + The display name of the user that is invited. May be null in case the user does + not already have an account. + example: 'Robert Baden-Powell' + type: ['null', string] type: object + id: + type: string + type: + type: string + required: + - id + - type type: object - active: - default: true - description: 'Whether this content type is still maintained and recommended for use in new camps.' - example: 'true' - readOnly: true - type: boolean - contentNodes: - description: 'API endpoint link for creating new entities of type entityClass.' - example: '/content_node/column_layouts?contentType=%2Fcontent_types%2F1a2b3c4d' - format: iri-reference - items: - type: string - readOnly: true - type: array - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - name: - description: |- - A name in UpperCamelCase of the content type. This value may be used as a technical - identifier of this content type, it is guaranteed to stay fixed. - example: SafetyConcept - maxLength: 32 - readOnly: true - type: string - required: - - active - - name type: object - ContentType.jsonhal-read_Category.PreferredContentTypes_Category.ContentNodes: + Invitation.jsonhal-read: deprecated: false - description: '' + description: |- + An invitation for a person to collaborate in a camp. The person may or may not + already have an account. properties: _links: properties: @@ -13069,44 +12024,39 @@ components: type: string type: object type: object - active: - default: true - description: 'Whether this content type is still maintained and recommended for use in new camps.' - example: 'true' - readOnly: true - type: boolean - contentNodes: - description: 'API endpoint link for creating new entities of type entityClass.' - example: '/content_node/column_layouts?contentType=%2Fcontent_types%2F1a2b3c4d' - format: iri-reference - items: - type: string - readOnly: true - type: array - id: - description: 'An internal, unique, randomly generated identifier of this entity.' + campId: + description: |- + The id of the camp for which this invitation is valid. This is useful for + redirecting the user to the correct place after they accept. example: 1a2b3c4d - maxLength: 16 - readOnly: true type: string - name: + campTitle: description: |- - A name in UpperCamelCase of the content type. This value may be used as a technical - identifier of this content type, it is guaranteed to stay fixed. - example: SafetyConcept - maxLength: 32 - readOnly: true + The full title of the camp for which this invitation is valid. This should help + the user to decide whether to accept or reject the invitation. + example: 'Abteilungs-Sommerlager 2022' type: string - required: - - active - - name + userAlreadyInCamp: + description: |- + Indicates whether the logged in user is already collaborating in the camp, and + can therefore not accept the invitation. + type: + - boolean + - 'null' + userDisplayName: + description: |- + The display name of the user that is invited. May be null in case the user does + not already have an account. + example: 'Robert Baden-Powell' + type: + - 'null' + - string type: object - ContentType.jsonld-read: + Invitation.jsonld-read: deprecated: false description: |- - Defines a type of content that can be present in a content node tree. A content type - determines what data can be stored in content nodes of this type, as well as validation, - available slots and jsonConfig settings. + An invitation for a person to collaborate in a camp. The person may or may not + already have an account. properties: '@context': oneOf: @@ -13131,448 +12081,450 @@ components: '@type': readOnly: true type: string - active: - default: true - description: 'Whether this content type is still maintained and recommended for use in new camps.' - example: 'true' - readOnly: true - type: boolean - contentNodes: - description: 'API endpoint link for creating new entities of type entityClass.' - example: '/content_node/column_layouts?contentType=%2Fcontent_types%2F1a2b3c4d' - format: iri-reference - items: - type: string - readOnly: true - type: array - id: - description: 'An internal, unique, randomly generated identifier of this entity.' + campId: + description: |- + The id of the camp for which this invitation is valid. This is useful for + redirecting the user to the correct place after they accept. example: 1a2b3c4d - maxLength: 16 - readOnly: true type: string - name: + campTitle: description: |- - A name in UpperCamelCase of the content type. This value may be used as a technical - identifier of this content type, it is guaranteed to stay fixed. - example: SafetyConcept - maxLength: 32 - readOnly: true + The full title of the camp for which this invitation is valid. This should help + the user to decide whether to accept or reject the invitation. + example: 'Abteilungs-Sommerlager 2022' type: string - required: - - active - - name + userAlreadyInCamp: + description: |- + Indicates whether the logged in user is already collaborating in the camp, and + can therefore not accept the invitation. + type: + - boolean + - 'null' + userDisplayName: + description: |- + The display name of the user that is invited. May be null in case the user does + not already have an account. + example: 'Robert Baden-Powell' + type: + - 'null' + - string type: object - ContentType.jsonld-read_Category.PreferredContentTypes_Category.ContentNodes: + MaterialItem-read: deprecated: false description: '' properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true + article: + description: 'The name of the item that is required.' + example: Volleyball + maxLength: 64 type: string - active: - default: true - description: 'Whether this content type is still maintained and recommended for use in new camps.' - example: 'true' - readOnly: true - type: boolean - contentNodes: - description: 'API endpoint link for creating new entities of type entityClass.' - example: '/content_node/column_layouts?contentType=%2Fcontent_types%2F1a2b3c4d' - format: iri-reference - items: - type: string - readOnly: true - type: array id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - name: + materialList: description: |- - A name in UpperCamelCase of the content type. This value may be used as a technical - identifier of this content type, it is guaranteed to stay fixed. - example: SafetyConcept - maxLength: 32 - readOnly: true + The list to which this item belongs. Lists are used to keep track of who is + responsible to prepare and bring the item to the camp. + example: /material_lists/1a2b3c4d + format: iri-reference type: string + materialNode: + description: 'The content node to which this item belongs, if it does not belong to a period.' + example: /content_node/material_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + period: + description: 'The period to which this item belongs, if it does not belong to a content node.' + example: /periods/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + quantity: + description: 'The number of items or the amount in the unit of items that are required.' + example: 1.5 + type: + - 'null' + - number + unit: + description: 'An optional unit for measuring the amount of items required.' + example: kg + maxLength: 32 + type: + - 'null' + - string required: - - active - - name + - article + - materialList type: object - Credentials: + MaterialItem-write: + deprecated: false + description: 'A physical item that is needed for carrying out a programme or camp.' properties: - identifier: - example: test@example.com + article: + description: 'The name of the item that is required.' + example: Volleyball type: string - password: - example: test + materialList: + description: |- + The list to which this item belongs. Lists are used to keep track of who is + responsible to prepare and bring the item to the camp. + example: /material_lists/1a2b3c4d + format: iri-reference type: string - type: object - Day-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: - deprecated: false - description: '' - properties: - dayOffset: - description: "The 0-based offset in days from the period's start date when this day starts." - example: '1' - readOnly: true - type: integer - dayResponsibles: - description: 'The list of people who have a whole-day responsibility on this day.' - example: '["/day_responsibles/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - end: - description: 'The end date and time of the day. This is a read-only convenience property.' - example: '2022-01-03T00:00:00+00:00' - format: date - readOnly: true + materialNode: + description: 'The content node to which this item belongs, if it does not belong to a period.' + example: /content_node/material_nodes/1a2b3c4d + format: iri-reference type: - 'null' - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - number: - description: 'The 1-based cardinal number of the day in the period. Not unique within the camp.' - example: '2' - readOnly: true - type: integer period: - description: 'The time period that this day belongs to.' + description: 'The period to which this item belongs, if it does not belong to a content node.' example: /periods/1a2b3c4d format: iri-reference - type: string - scheduleEntries: - description: "All scheduleEntries in this day's period which overlap with this day (using midnight as cutoff)." - example: '/schedule_entries?period=%2Fperiods%2F1a2b3c4d&start%5Bstrictly_before%5D=2022-01-03T00%3A00%3A00%2B00%3A00&end%5Bafter%5D=2022-01-02T00%3A00%3A00%2B00%3A00' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - start: - description: 'The start date and time of the day. This is a read-only convenience property.' - example: '2022-01-02T00:00:00+00:00' - format: date - readOnly: true type: - 'null' - string - required: - - dayOffset - - dayResponsibles - - period + quantity: + description: 'The number of items or the amount in the unit of items that are required.' + example: 1.5 + type: + - 'null' + - number + unit: + description: 'An optional unit for measuring the amount of items required.' + example: kg + type: + - 'null' + - string type: object - Day-read_Day.DayResponsibles: + MaterialItem.jsonapi: deprecated: false - description: |- - A day in a time period of a camp. This is represented as a reference to the time period - along with a number of days offset from the period's starting date. This is to make it - easier to move the whole periods to different dates. Days are created automatically when - creating or updating periods, and are not writable through the API directly. + description: 'A physical item that is needed for carrying out a programme or camp.' properties: - dayOffset: - description: "The 0-based offset in days from the period's start date when this day starts." - example: '1' - readOnly: true - type: integer - dayResponsibles: + data: + properties: + attributes: + properties: + _id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + article: + description: 'The name of the item that is required.' + example: Volleyball + maxLength: 64 + type: string + quantity: + description: 'The number of items or the amount in the unit of items that are required.' + example: 1.5 + type: ['null', number] + unit: + description: 'An optional unit for measuring the amount of items required.' + example: kg + maxLength: 32 + type: ['null', string] + required: + - article + type: object + id: + type: string + relationships: + properties: + materialList: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + materialNode: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + period: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + required: + - materialList + type: object + type: + type: string + required: + - id + - type + type: object + included: + description: 'Related resources requested via the "include" query parameter.' + externalDocs: + url: 'https://jsonapi.org/format/#fetching-includes' items: - $ref: '#/components/schemas/DayResponsible-read_Day.DayResponsibles' + anyOf: + - + $ref: '#/components/schemas/MaterialList.jsonapi' + - + $ref: '#/components/schemas/MaterialList.jsonapi' + - + $ref: '#/components/schemas/MaterialList.jsonapi' readOnly: true type: array - end: - description: 'The end date and time of the day. This is a read-only convenience property.' - example: '2022-01-03T00:00:00+00:00' - format: date - readOnly: true - type: - - 'null' - - string + type: object + MaterialItem.jsonhal-read: + deprecated: false + description: '' + properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + article: + description: 'The name of the item that is required.' + example: Volleyball + maxLength: 64 + type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - number: - description: 'The 1-based cardinal number of the day in the period. Not unique within the camp.' - example: '2' - readOnly: true - type: integer + materialList: + description: |- + The list to which this item belongs. Lists are used to keep track of who is + responsible to prepare and bring the item to the camp. + example: /material_lists/1a2b3c4d + format: iri-reference + type: string + materialNode: + description: 'The content node to which this item belongs, if it does not belong to a period.' + example: /content_node/material_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string period: - description: 'The time period that this day belongs to.' + description: 'The period to which this item belongs, if it does not belong to a content node.' example: /periods/1a2b3c4d format: iri-reference - type: string - scheduleEntries: - description: "All scheduleEntries in this day's period which overlap with this day (using midnight as cutoff)." - example: '/schedule_entries?period=%2Fperiods%2F1a2b3c4d&start%5Bstrictly_before%5D=2022-01-03T00%3A00%3A00%2B00%3A00&end%5Bafter%5D=2022-01-02T00%3A00%3A00%2B00%3A00' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - start: - description: 'The start date and time of the day. This is a read-only convenience property.' - example: '2022-01-02T00:00:00+00:00' - format: date - readOnly: true + type: + - 'null' + - string + quantity: + description: 'The number of items or the amount in the unit of items that are required.' + example: 1.5 + type: + - 'null' + - number + unit: + description: 'An optional unit for measuring the amount of items required.' + example: kg + maxLength: 32 type: - 'null' - string required: - - dayOffset - - dayResponsibles - - period + - article + - materialList type: object - Day-read_Period.Camp_Period.Days: + MaterialItem.jsonhal-write: deprecated: false - description: '' + description: 'A physical item that is needed for carrying out a programme or camp.' properties: - dayOffset: - description: "The 0-based offset in days from the period's start date when this day starts." - example: '1' - readOnly: true - type: integer - dayResponsibles: - description: 'The list of people who have a whole-day responsibility on this day.' - example: '["/day_responsibles/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - end: - description: 'The end date and time of the day. This is a read-only convenience property.' - example: '2022-01-03T00:00:00+00:00' - format: date - readOnly: true + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + article: + description: 'The name of the item that is required.' + example: Volleyball + maxLength: 64 + type: string + materialList: + description: |- + The list to which this item belongs. Lists are used to keep track of who is + responsible to prepare and bring the item to the camp. + example: /material_lists/1a2b3c4d + format: iri-reference + type: string + materialNode: + description: 'The content node to which this item belongs, if it does not belong to a period.' + example: /content_node/material_nodes/1a2b3c4d + format: iri-reference type: - 'null' - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - number: - description: 'The 1-based cardinal number of the day in the period. Not unique within the camp.' - example: '2' - readOnly: true - type: integer period: - description: 'The time period that this day belongs to.' + description: 'The period to which this item belongs, if it does not belong to a content node.' example: /periods/1a2b3c4d format: iri-reference - type: string - scheduleEntries: - description: "All scheduleEntries in this day's period which overlap with this day (using midnight as cutoff)." - example: '/schedule_entries?period=%2Fperiods%2F1a2b3c4d&start%5Bstrictly_before%5D=2022-01-03T00%3A00%3A00%2B00%3A00&end%5Bafter%5D=2022-01-02T00%3A00%3A00%2B00%3A00' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - start: - description: 'The start date and time of the day. This is a read-only convenience property.' - example: '2022-01-02T00:00:00+00:00' - format: date - readOnly: true + type: + - 'null' + - string + quantity: + description: 'The number of items or the amount in the unit of items that are required.' + example: 1.5 + type: + - 'null' + - number + unit: + description: 'An optional unit for measuring the amount of items required.' + example: kg + maxLength: 32 type: - 'null' - string required: - - dayOffset - - dayResponsibles - - period + - article + - materialList type: object - Day.jsonapi-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: + MaterialItem.jsonld-read: deprecated: false description: '' properties: - dayOffset: - description: "The 0-based offset in days from the period's start date when this day starts." - example: '1' + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string readOnly: true - type: integer - dayResponsibles: - description: 'The list of people who have a whole-day responsibility on this day.' - example: '["/day_responsibles/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + '@id': readOnly: true - type: array - end: - description: 'The end date and time of the day. This is a read-only convenience property.' - example: '2022-01-03T00:00:00+00:00' - format: date + type: string + '@type': readOnly: true - type: - - 'null' - - string + type: string + article: + description: 'The name of the item that is required.' + example: Volleyball + maxLength: 64 + type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - number: - description: 'The 1-based cardinal number of the day in the period. Not unique within the camp.' - example: '2' - readOnly: true - type: integer + materialList: + description: |- + The list to which this item belongs. Lists are used to keep track of who is + responsible to prepare and bring the item to the camp. + example: /material_lists/1a2b3c4d + format: iri-reference + type: string + materialNode: + description: 'The content node to which this item belongs, if it does not belong to a period.' + example: /content_node/material_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string period: - description: 'The time period that this day belongs to.' + description: 'The period to which this item belongs, if it does not belong to a content node.' example: /periods/1a2b3c4d format: iri-reference - type: string - scheduleEntries: - description: "All scheduleEntries in this day's period which overlap with this day (using midnight as cutoff)." - example: '/schedule_entries?period=%2Fperiods%2F1a2b3c4d&start%5Bstrictly_before%5D=2022-01-03T00%3A00%3A00%2B00%3A00&end%5Bafter%5D=2022-01-02T00%3A00%3A00%2B00%3A00' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - start: - description: 'The start date and time of the day. This is a read-only convenience property.' - example: '2022-01-02T00:00:00+00:00' - format: date - readOnly: true + type: + - 'null' + - string + quantity: + description: 'The number of items or the amount in the unit of items that are required.' + example: 1.5 + type: + - 'null' + - number + unit: + description: 'An optional unit for measuring the amount of items required.' + example: kg + maxLength: 32 type: - 'null' - string required: - - dayOffset - - dayResponsibles - - period + - article + - materialList type: object - Day.jsonapi-read_Day.DayResponsibles: + MaterialItem.jsonld-write: deprecated: false - description: |- - A day in a time period of a camp. This is represented as a reference to the time period - along with a number of days offset from the period's starting date. This is to make it - easier to move the whole periods to different dates. Days are created automatically when - creating or updating periods, and are not writable through the API directly. + description: 'A physical item that is needed for carrying out a programme or camp.' properties: - dayOffset: - description: "The 0-based offset in days from the period's start date when this day starts." - example: '1' - readOnly: true - type: integer - dayResponsibles: - items: - $ref: '#/components/schemas/DayResponsible.jsonapi-read_Day.DayResponsibles' - readOnly: true - type: array - end: - description: 'The end date and time of the day. This is a read-only convenience property.' - example: '2022-01-03T00:00:00+00:00' - format: date - readOnly: true + article: + description: 'The name of the item that is required.' + example: Volleyball + maxLength: 64 + type: string + materialList: + description: |- + The list to which this item belongs. Lists are used to keep track of who is + responsible to prepare and bring the item to the camp. + example: /material_lists/1a2b3c4d + format: iri-reference + type: string + materialNode: + description: 'The content node to which this item belongs, if it does not belong to a period.' + example: /content_node/material_nodes/1a2b3c4d + format: iri-reference type: - 'null' - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - number: - description: 'The 1-based cardinal number of the day in the period. Not unique within the camp.' - example: '2' - readOnly: true - type: integer period: - description: 'The time period that this day belongs to.' + description: 'The period to which this item belongs, if it does not belong to a content node.' example: /periods/1a2b3c4d format: iri-reference - type: string - scheduleEntries: - description: "All scheduleEntries in this day's period which overlap with this day (using midnight as cutoff)." - example: '/schedule_entries?period=%2Fperiods%2F1a2b3c4d&start%5Bstrictly_before%5D=2022-01-03T00%3A00%3A00%2B00%3A00&end%5Bafter%5D=2022-01-02T00%3A00%3A00%2B00%3A00' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - start: - description: 'The start date and time of the day. This is a read-only convenience property.' - example: '2022-01-02T00:00:00+00:00' - format: date - readOnly: true + type: + - 'null' + - string + quantity: + description: 'The number of items or the amount in the unit of items that are required.' + example: 1.5 + type: + - 'null' + - number + unit: + description: 'An optional unit for measuring the amount of items required.' + example: kg + maxLength: 32 type: - 'null' - string required: - - dayOffset - - dayResponsibles - - period + - article + - materialList type: object - Day.jsonapi-read_Period.Camp_Period.Days: + MaterialList-read: deprecated: false - description: '' + description: |- + A list of material items that someone needs to bring to the camp. A material list + is automatically created for each person collaborating on the camp. properties: - dayOffset: - description: "The 0-based offset in days from the period's start date when this day starts." - example: '1' - readOnly: true - type: integer - dayResponsibles: - description: 'The list of people who have a whole-day responsibility on this day.' - example: '["/day_responsibles/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - end: - description: 'The end date and time of the day. This is a read-only convenience property.' - example: '2022-01-03T00:00:00+00:00' - format: date + camp: + description: 'The camp this material list belongs to.' + example: /camps/1a2b3c4d + format: iri-reference + type: string + campCollaboration: + description: 'The campCollaboration this material list belongs to.' + example: /camp_collaborations/1a2b3c4d + format: iri-reference readOnly: true type: - 'null' @@ -13583,41 +12535,137 @@ components: maxLength: 16 readOnly: true type: string - number: - description: 'The 1-based cardinal number of the day in the period. Not unique within the camp.' - example: '2' + itemCount: + example: 3 readOnly: true type: integer - period: - description: 'The time period that this day belongs to.' - example: /periods/1a2b3c4d - format: iri-reference - type: string - scheduleEntries: - description: "All scheduleEntries in this day's period which overlap with this day (using midnight as cutoff)." - example: '/schedule_entries?period=%2Fperiods%2F1a2b3c4d&start%5Bstrictly_before%5D=2022-01-03T00%3A00%3A00%2B00%3A00&end%5Bafter%5D=2022-01-02T00%3A00%3A00%2B00%3A00' + materialItems: + description: 'The items that are part of this list.' + example: '["/material_items/1a2b3c4d"]' items: example: 'https://example.com/' format: iri-reference type: string readOnly: true type: array - start: - description: 'The start date and time of the day. This is a read-only convenience property.' - example: '2022-01-02T00:00:00+00:00' - format: date - readOnly: true + name: + description: 'The human readable name of the material list.' + example: Lebensmittel + maxLength: 32 type: - 'null' - string required: - - dayOffset - - dayResponsibles - - period + - camp + - materialItems + - name type: object - Day.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: + MaterialList-write: deprecated: false - description: '' + description: |- + A list of material items that someone needs to bring to the camp. A material list + is automatically created for each person collaborating on the camp. + properties: + name: + description: 'The human readable name of the material list.' + example: Lebensmittel + maxLength: 32 + type: + - 'null' + - string + required: + - name + type: object + MaterialList-write_create: + deprecated: false + description: |- + A list of material items that someone needs to bring to the camp. A material list + is automatically created for each person collaborating on the camp. + properties: + camp: + description: 'The camp this material list belongs to.' + example: /camps/1a2b3c4d + format: iri-reference + type: string + name: + description: 'The human readable name of the material list.' + example: Lebensmittel + maxLength: 32 + type: + - 'null' + - string + required: + - camp + - name + type: object + MaterialList.jsonapi: + deprecated: false + description: |- + A list of material items that someone needs to bring to the camp. A material list + is automatically created for each person collaborating on the camp. + properties: + data: + properties: + attributes: + properties: + _id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + itemCount: + example: 3 + readOnly: true + type: integer + name: + description: 'The human readable name of the material list.' + example: Lebensmittel + maxLength: 32 + type: ['null', string] + required: + - name + type: object + id: + type: string + relationships: + properties: + camp: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + campCollaboration: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + materialItems: + properties: { data: { items: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object }, type: array } } + required: + - camp + - materialItems + type: object + type: + type: string + required: + - id + - type + type: object + included: + description: 'Related resources requested via the "include" query parameter.' + externalDocs: + url: 'https://jsonapi.org/format/#fetching-includes' + items: + anyOf: + - + $ref: '#/components/schemas/MaterialList.jsonapi' + - + $ref: '#/components/schemas/MaterialList.jsonapi' + - + $ref: '#/components/schemas/MaterialList.jsonapi' + readOnly: true + type: array + type: object + MaterialList.jsonhal-read: + deprecated: false + description: |- + A list of material items that someone needs to bring to the camp. A material list + is automatically created for each person collaborating on the camp. properties: _links: properties: @@ -13628,24 +12676,15 @@ components: type: string type: object type: object - dayOffset: - description: "The 0-based offset in days from the period's start date when this day starts." - example: '1' - readOnly: true - type: integer - dayResponsibles: - description: 'The list of people who have a whole-day responsibility on this day.' - example: '["/day_responsibles/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - end: - description: 'The end date and time of the day. This is a read-only convenience property.' - example: '2022-01-03T00:00:00+00:00' - format: date + camp: + description: 'The camp this material list belongs to.' + example: /camps/1a2b3c4d + format: iri-reference + type: string + campCollaboration: + description: 'The campCollaboration this material list belongs to.' + example: /camp_collaborations/1a2b3c4d + format: iri-reference readOnly: true type: - 'null' @@ -13656,45 +12695,36 @@ components: maxLength: 16 readOnly: true type: string - number: - description: 'The 1-based cardinal number of the day in the period. Not unique within the camp.' - example: '2' + itemCount: + example: 3 readOnly: true type: integer - period: - description: 'The time period that this day belongs to.' - example: /periods/1a2b3c4d - format: iri-reference - type: string - scheduleEntries: - description: "All scheduleEntries in this day's period which overlap with this day (using midnight as cutoff)." - example: '/schedule_entries?period=%2Fperiods%2F1a2b3c4d&start%5Bstrictly_before%5D=2022-01-03T00%3A00%3A00%2B00%3A00&end%5Bafter%5D=2022-01-02T00%3A00%3A00%2B00%3A00' + materialItems: + description: 'The items that are part of this list.' + example: '["/material_items/1a2b3c4d"]' items: example: 'https://example.com/' format: iri-reference type: string readOnly: true type: array - start: - description: 'The start date and time of the day. This is a read-only convenience property.' - example: '2022-01-02T00:00:00+00:00' - format: date - readOnly: true + name: + description: 'The human readable name of the material list.' + example: Lebensmittel + maxLength: 32 type: - 'null' - string required: - - dayOffset - - dayResponsibles - - period + - camp + - materialItems + - name type: object - Day.jsonhal-read_Day.DayResponsibles: + MaterialList.jsonhal-write_create: deprecated: false description: |- - A day in a time period of a camp. This is represented as a reference to the time period - along with a number of days offset from the period's starting date. This is to make it - easier to move the whole periods to different dates. Days are created automatically when - creating or updating periods, and are not writable through the API directly. + A list of material items that someone needs to bring to the camp. A material list + is automatically created for each person collaborating on the camp. properties: _links: properties: @@ -13705,138 +12735,27 @@ components: type: string type: object type: object - dayOffset: - description: "The 0-based offset in days from the period's start date when this day starts." - example: '1' - readOnly: true - type: integer - dayResponsibles: - items: - $ref: '#/components/schemas/DayResponsible.jsonhal-read_Day.DayResponsibles' - readOnly: true - type: array - end: - description: 'The end date and time of the day. This is a read-only convenience property.' - example: '2022-01-03T00:00:00+00:00' - format: date - readOnly: true - type: - - 'null' - - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - number: - description: 'The 1-based cardinal number of the day in the period. Not unique within the camp.' - example: '2' - readOnly: true - type: integer - period: - description: 'The time period that this day belongs to.' - example: /periods/1a2b3c4d - format: iri-reference - type: string - scheduleEntries: - description: "All scheduleEntries in this day's period which overlap with this day (using midnight as cutoff)." - example: '/schedule_entries?period=%2Fperiods%2F1a2b3c4d&start%5Bstrictly_before%5D=2022-01-03T00%3A00%3A00%2B00%3A00&end%5Bafter%5D=2022-01-02T00%3A00%3A00%2B00%3A00' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - start: - description: 'The start date and time of the day. This is a read-only convenience property.' - example: '2022-01-02T00:00:00+00:00' - format: date - readOnly: true - type: - - 'null' - - string - required: - - dayOffset - - dayResponsibles - - period - type: object - Day.jsonhal-read_Period.Camp_Period.Days: - deprecated: false - description: '' - properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - dayOffset: - description: "The 0-based offset in days from the period's start date when this day starts." - example: '1' - readOnly: true - type: integer - dayResponsibles: - description: 'The list of people who have a whole-day responsibility on this day.' - example: '["/day_responsibles/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - end: - description: 'The end date and time of the day. This is a read-only convenience property.' - example: '2022-01-03T00:00:00+00:00' - format: date - readOnly: true - type: - - 'null' - - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - number: - description: 'The 1-based cardinal number of the day in the period. Not unique within the camp.' - example: '2' - readOnly: true - type: integer - period: - description: 'The time period that this day belongs to.' - example: /periods/1a2b3c4d + camp: + description: 'The camp this material list belongs to.' + example: /camps/1a2b3c4d format: iri-reference type: string - scheduleEntries: - description: "All scheduleEntries in this day's period which overlap with this day (using midnight as cutoff)." - example: '/schedule_entries?period=%2Fperiods%2F1a2b3c4d&start%5Bstrictly_before%5D=2022-01-03T00%3A00%3A00%2B00%3A00&end%5Bafter%5D=2022-01-02T00%3A00%3A00%2B00%3A00' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - start: - description: 'The start date and time of the day. This is a read-only convenience property.' - example: '2022-01-02T00:00:00+00:00' - format: date - readOnly: true + name: + description: 'The human readable name of the material list.' + example: Lebensmittel + maxLength: 32 type: - 'null' - string required: - - dayOffset - - dayResponsibles - - period + - camp + - name type: object - Day.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: + MaterialList.jsonld-read: deprecated: false - description: '' + description: |- + A list of material items that someone needs to bring to the camp. A material list + is automatically created for each person collaborating on the camp. properties: '@context': oneOf: @@ -13861,24 +12780,15 @@ components: '@type': readOnly: true type: string - dayOffset: - description: "The 0-based offset in days from the period's start date when this day starts." - example: '1' - readOnly: true - type: integer - dayResponsibles: - description: 'The list of people who have a whole-day responsibility on this day.' - example: '["/day_responsibles/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - end: - description: 'The end date and time of the day. This is a read-only convenience property.' - example: '2022-01-03T00:00:00+00:00' - format: date + camp: + description: 'The camp this material list belongs to.' + example: /camps/1a2b3c4d + format: iri-reference + type: string + campCollaboration: + description: 'The campCollaboration this material list belongs to.' + example: /camp_collaborations/1a2b3c4d + format: iri-reference readOnly: true type: - 'null' @@ -13889,347 +12799,362 @@ components: maxLength: 16 readOnly: true type: string - number: - description: 'The 1-based cardinal number of the day in the period. Not unique within the camp.' - example: '2' + itemCount: + example: 3 readOnly: true type: integer - period: - description: 'The time period that this day belongs to.' - example: /periods/1a2b3c4d - format: iri-reference - type: string - scheduleEntries: - description: "All scheduleEntries in this day's period which overlap with this day (using midnight as cutoff)." - example: '/schedule_entries?period=%2Fperiods%2F1a2b3c4d&start%5Bstrictly_before%5D=2022-01-03T00%3A00%3A00%2B00%3A00&end%5Bafter%5D=2022-01-02T00%3A00%3A00%2B00%3A00' + materialItems: + description: 'The items that are part of this list.' + example: '["/material_items/1a2b3c4d"]' items: example: 'https://example.com/' format: iri-reference type: string readOnly: true type: array - start: - description: 'The start date and time of the day. This is a read-only convenience property.' - example: '2022-01-02T00:00:00+00:00' - format: date - readOnly: true + name: + description: 'The human readable name of the material list.' + example: Lebensmittel + maxLength: 32 type: - 'null' - string required: - - dayOffset - - dayResponsibles - - period + - camp + - materialItems + - name type: object - Day.jsonld-read_Day.DayResponsibles: + MaterialList.jsonld-write_create: deprecated: false description: |- - A day in a time period of a camp. This is represented as a reference to the time period - along with a number of days offset from the period's starting date. This is to make it - easier to move the whole periods to different dates. Days are created automatically when - creating or updating periods, and are not writable through the API directly. + A list of material items that someone needs to bring to the camp. A material list + is automatically created for each person collaborating on the camp. properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true + camp: + description: 'The camp this material list belongs to.' + example: /camps/1a2b3c4d + format: iri-reference type: string - dayOffset: - description: "The 0-based offset in days from the period's start date when this day starts." - example: '1' - readOnly: true - type: integer - dayResponsibles: - items: - $ref: '#/components/schemas/DayResponsible.jsonld-read_Day.DayResponsibles' - readOnly: true - type: array - end: - description: 'The end date and time of the day. This is a read-only convenience property.' - example: '2022-01-03T00:00:00+00:00' - format: date - readOnly: true + name: + description: 'The human readable name of the material list.' + example: Lebensmittel + maxLength: 32 type: - 'null' - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 + required: + - camp + - name + type: object + MaterialNode-read: + deprecated: false + description: '' + properties: + children: + description: 'All content nodes that are direct children of this content node.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string readOnly: true + type: array + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d + format: iri-reference type: string - number: - description: 'The 1-based cardinal number of the day in the period. Not unique within the camp.' - example: '2' + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept readOnly: true - type: integer - period: - description: 'The time period that this day belongs to.' - example: /periods/1a2b3c4d - format: iri-reference type: string - scheduleEntries: - description: "All scheduleEntries in this day's period which overlap with this day (using midnight as cutoff)." - example: '/schedule_entries?period=%2Fperiods%2F1a2b3c4d&start%5Bstrictly_before%5D=2022-01-03T00%3A00%3A00%2B00%3A00&end%5Bafter%5D=2022-01-02T00%3A00%3A00%2B00%3A00' + data: + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). items: - example: 'https://example.com/' - format: iri-reference type: string + type: + - array + - 'null' + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 readOnly: true + type: string + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 + type: + - 'null' + - string + materialItems: + items: + $ref: '#/components/schemas/MaterialItem-read' type: array - start: - description: 'The start date and time of the day. This is a read-only convenience property.' - example: '2022-01-02T00:00:00+00:00' - format: date + parent: + description: |- + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. + example: /content_nodes/1a2b3c4d + format: iri-reference readOnly: true type: - 'null' - string + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - dayOffset - - dayResponsibles - - period + - children + - contentType + - materialItems + - position type: object - Day.jsonld-read_Period.Camp_Period.Days: + MaterialNode-write_create: deprecated: false description: '' properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d + format: iri-reference type: string - dayOffset: - description: "The 0-based offset in days from the period's start date when this day starts." + data: + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + items: + type: string + type: + - array + - 'null' + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 + type: + - 'null' + - string + parent: + description: |- + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. example: '1' - readOnly: true + maxLength: 32 + type: + - 'null' + - string + required: + - contentType + - parent + - position + type: object + MaterialNode-write_update: + deprecated: false + description: '' + properties: + data: + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + items: + type: string + type: + - array + - 'null' + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 + type: + - 'null' + - string + parent: + description: |- + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 type: integer - dayResponsibles: - description: 'The list of people who have a whole-day responsibility on this day.' - example: '["/day_responsibles/1a2b3c4d"]' + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string + required: + - position + type: object + MaterialNode.jsonapi: + deprecated: false + description: '' + properties: + children: + description: 'All content nodes that are direct children of this content node.' + example: '["/content_nodes/1a2b3c4d"]' items: example: 'https://example.com/' format: iri-reference type: string readOnly: true type: array - end: - description: 'The end date and time of the day. This is a read-only convenience property.' - example: '2022-01-03T00:00:00+00:00' - format: date + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d + format: iri-reference + readOnly: true + type: string + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept readOnly: true + type: string + data: + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + items: + type: string type: + - array - 'null' - - string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - number: - description: 'The 1-based cardinal number of the day in the period. Not unique within the camp.' - example: '2' - readOnly: true - type: integer - period: - description: 'The time period that this day belongs to.' - example: /periods/1a2b3c4d - format: iri-reference - type: string - scheduleEntries: - description: "All scheduleEntries in this day's period which overlap with this day (using midnight as cutoff)." - example: '/schedule_entries?period=%2Fperiods%2F1a2b3c4d&start%5Bstrictly_before%5D=2022-01-03T00%3A00%3A00%2B00%3A00&end%5Bafter%5D=2022-01-02T00%3A00%3A00%2B00%3A00' + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 + type: + - 'null' + - string + materialItems: items: - example: 'https://example.com/' - format: iri-reference - type: string + $ref: '#/components/schemas/MaterialItem.jsonapi' readOnly: true type: array - start: - description: 'The start date and time of the day. This is a read-only convenience property.' - example: '2022-01-02T00:00:00+00:00' - format: date - readOnly: true + parent: + description: |- + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference type: - 'null' - string - required: - - dayOffset - - dayResponsibles - - period - type: object - DayResponsible-read: - deprecated: false - description: 'A person that has some whole-day responsibility on a day in the camp.' - properties: - campCollaboration: - description: "The person that is responsible. Must belong to the same camp as the day's period." - example: /camp_collaborations/1a2b3c4d - format: iri-reference - type: string - day: - description: 'The day on which the person is responsible.' - example: /days/1a2b3c4d - format: iri-reference - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - required: - - campCollaboration - - day - type: object - DayResponsible-read_Day.DayResponsibles: - deprecated: false - description: '' - properties: - campCollaboration: - description: "The person that is responsible. Must belong to the same camp as the day's period." - example: /camp_collaborations/1a2b3c4d - format: iri-reference - type: string - day: - description: 'The day on which the person is responsible.' - example: /days/1a2b3c4d - format: iri-reference - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - required: - - campCollaboration - - day - type: object - DayResponsible-write: - deprecated: false - description: 'A person that has some whole-day responsibility on a day in the camp.' - properties: - campCollaboration: - description: "The person that is responsible. Must belong to the same camp as the day's period." - example: /camp_collaborations/1a2b3c4d - format: iri-reference - type: string - day: - description: 'The day on which the person is responsible.' - example: /days/1a2b3c4d - format: iri-reference - type: string - required: - - campCollaboration - - day - type: object - DayResponsible.jsonapi-read: - deprecated: false - description: 'A person that has some whole-day responsibility on a day in the camp.' - properties: - campCollaboration: - description: "The person that is responsible. Must belong to the same camp as the day's period." - example: /camp_collaborations/1a2b3c4d - format: iri-reference - type: string - day: - description: 'The day on which the person is responsible.' - example: /days/1a2b3c4d + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. + example: /content_nodes/1a2b3c4d format: iri-reference - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 readOnly: true - type: string + type: + - 'null' + - string + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - campCollaboration - - day + - children + - contentType + - materialItems + - position type: object - DayResponsible.jsonapi-read_Day.DayResponsibles: + MaterialNode.jsonhal-read: deprecated: false description: '' - properties: - campCollaboration: - description: "The person that is responsible. Must belong to the same camp as the day's period." - example: /camp_collaborations/1a2b3c4d - format: iri-reference - type: string - day: - description: 'The day on which the person is responsible.' - example: /days/1a2b3c4d - format: iri-reference - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - required: - - campCollaboration - - day - type: object - DayResponsible.jsonapi-write: - deprecated: false - description: 'A person that has some whole-day responsibility on a day in the camp.' - properties: - campCollaboration: - description: "The person that is responsible. Must belong to the same camp as the day's period." - example: /camp_collaborations/1a2b3c4d - format: iri-reference - type: string - day: - description: 'The day on which the person is responsible.' - example: /days/1a2b3c4d - format: iri-reference - type: string - required: - - campCollaboration - - day - type: object - DayResponsible.jsonhal-read: - deprecated: false - description: 'A person that has some whole-day responsibility on a day in the camp.' properties: _links: properties: @@ -14240,62 +13165,101 @@ components: type: string type: object type: object - campCollaboration: - description: "The person that is responsible. Must belong to the same camp as the day's period." - example: /camp_collaborations/1a2b3c4d - format: iri-reference - type: string - day: - description: 'The day on which the person is responsible.' - example: /days/1a2b3c4d - format: iri-reference - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 + children: + description: 'All content nodes that are direct children of this content node.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string readOnly: true - type: string - required: - - campCollaboration - - day - type: object - DayResponsible.jsonhal-read_Day.DayResponsibles: - deprecated: false - description: '' - properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - campCollaboration: - description: "The person that is responsible. Must belong to the same camp as the day's period." - example: /camp_collaborations/1a2b3c4d + type: array + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d format: iri-reference type: string - day: - description: 'The day on which the person is responsible.' - example: /days/1a2b3c4d - format: iri-reference + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true type: string + data: + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + items: + type: string + type: + - array + - 'null' id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 + type: + - 'null' + - string + materialItems: + items: + $ref: '#/components/schemas/MaterialItem.jsonhal-read' + type: array + parent: + description: |- + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. + example: /content_nodes/1a2b3c4d + format: iri-reference + readOnly: true + type: + - 'null' + - string + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - campCollaboration - - day + - children + - contentType + - materialItems + - position type: object - DayResponsible.jsonhal-write: + MaterialNode.jsonhal-write_create: deprecated: false - description: 'A person that has some whole-day responsibility on a day in the camp.' + description: '' properties: _links: properties: @@ -14306,23 +13270,66 @@ components: type: string type: object type: object - campCollaboration: - description: "The person that is responsible. Must belong to the same camp as the day's period." - example: /camp_collaborations/1a2b3c4d + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d format: iri-reference type: string - day: - description: 'The day on which the person is responsible.' - example: /days/1a2b3c4d + data: + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + items: + type: string + type: + - array + - 'null' + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 + type: + - 'null' + - string + parent: + description: |- + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d format: iri-reference - type: string + type: + - 'null' + - string + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - campCollaboration - - day + - contentType + - parent + - position type: object - DayResponsible.jsonld-read: + MaterialNode.jsonld-read: deprecated: false - description: 'A person that has some whole-day responsibility on a day in the camp.' + description: '' properties: '@context': oneOf: @@ -14347,462 +13354,480 @@ components: '@type': readOnly: true type: string - campCollaboration: - description: "The person that is responsible. Must belong to the same camp as the day's period." - example: /camp_collaborations/1a2b3c4d + children: + description: 'All content nodes that are direct children of this content node.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d format: iri-reference type: string - day: - description: 'The day on which the person is responsible.' - example: /days/1a2b3c4d - format: iri-reference + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true type: string + data: + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + items: + type: string + type: + - array + - 'null' id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 + type: + - 'null' + - string + materialItems: + items: + $ref: '#/components/schemas/MaterialItem.jsonld-read' + type: array + parent: + description: |- + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. + example: /content_nodes/1a2b3c4d + format: iri-reference + readOnly: true + type: + - 'null' + - string + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - campCollaboration - - day + - children + - contentType + - materialItems + - position type: object - DayResponsible.jsonld-read_Day.DayResponsibles: + MaterialNode.jsonld-write_create: deprecated: false description: '' properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - campCollaboration: - description: "The person that is responsible. Must belong to the same camp as the day's period." - example: /camp_collaborations/1a2b3c4d - format: iri-reference - type: string - day: - description: 'The day on which the person is responsible.' - example: /days/1a2b3c4d + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d format: iri-reference type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string + data: + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + items: + type: string + type: + - array + - 'null' + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 + type: + - 'null' + - string + parent: + description: |- + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - campCollaboration - - day + - contentType + - parent + - position type: object - DayResponsible.jsonld-write: + MultiSelect-read: deprecated: false - description: 'A person that has some whole-day responsibility on a day in the camp.' + description: '' properties: - campCollaboration: - description: "The person that is responsible. Must belong to the same camp as the day's period." - example: /camp_collaborations/1a2b3c4d + children: + description: 'All content nodes that are direct children of this content node.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d format: iri-reference type: string - day: - description: 'The day on which the person is responsible.' - example: /days/1a2b3c4d - format: iri-reference + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true type: string - required: - - campCollaboration - - day - type: object - Invitation-read: - deprecated: false - description: |- - An invitation for a person to collaborate in a camp. The person may or may not - already have an account. - properties: - campId: + data: description: |- - The id of the camp for which this invitation is valid. This is useful for - redirecting the user to the correct place after they accept. + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + options: + natureAndEnvironment: + checked: true + outdoorTechnique: + checked: false + items: + type: string + type: + - array + - 'null' + id: + description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d + maxLength: 16 + readOnly: true type: string - campTitle: - description: |- - The full title of the camp for which this invitation is valid. This should help - the user to decide whether to accept or reject the invitation. - example: 'Abteilungs-Sommerlager 2022' - type: string - userAlreadyInCamp: + instanceName: description: |- - Indicates whether the logged in user is already collaborating in the camp, and - can therefore not accept the invitation. + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 type: - - boolean - 'null' - userDisplayName: + - string + parent: description: |- - The display name of the user that is invited. May be null in case the user does - not already have an account. - example: 'Robert Baden-Powell' + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference type: - 'null' - string - type: object - Invitation-write: - deprecated: false - description: |- - An invitation for a person to collaborate in a camp. The person may or may not - already have an account. - type: object - Invitation.jsonapi-read: - deprecated: false - description: |- - An invitation for a person to collaborate in a camp. The person may or may not - already have an account. - properties: - campId: - description: |- - The id of the camp for which this invitation is valid. This is useful for - redirecting the user to the correct place after they accept. - example: 1a2b3c4d - type: string - campTitle: + position: + default: -1 description: |- - The full title of the camp for which this invitation is valid. This should help - the user to decide whether to accept or reject the invitation. - example: 'Abteilungs-Sommerlager 2022' - type: string - userAlreadyInCamp: + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: description: |- - Indicates whether the logged in user is already collaborating in the camp, and - can therefore not accept the invitation. + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. + example: /content_nodes/1a2b3c4d + format: iri-reference + readOnly: true type: - - boolean - 'null' - userDisplayName: + - string + slot: description: |- - The display name of the user that is invited. May be null in case the user does - not already have an account. - example: 'Robert Baden-Powell' + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 type: - 'null' - string + required: + - children + - contentType + - position type: object - Invitation.jsonapi-write: - deprecated: false - description: |- - An invitation for a person to collaborate in a camp. The person may or may not - already have an account. - type: object - Invitation.jsonhal-read: + MultiSelect-write_create: deprecated: false - description: |- - An invitation for a person to collaborate in a camp. The person may or may not - already have an account. + description: '' properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - campId: - description: |- - The id of the camp for which this invitation is valid. This is useful for - redirecting the user to the correct place after they accept. - example: 1a2b3c4d - type: string - campTitle: + contentType: description: |- - The full title of the camp for which this invitation is valid. This should help - the user to decide whether to accept or reject the invitation. - example: 'Abteilungs-Sommerlager 2022' + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d + format: iri-reference type: string - userAlreadyInCamp: + data: description: |- - Indicates whether the logged in user is already collaborating in the camp, and - can therefore not accept the invitation. + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + options: + natureAndEnvironment: + checked: true + outdoorTechnique: + checked: false + items: + type: string type: - - boolean + - array - 'null' - userDisplayName: + instanceName: description: |- - The display name of the user that is invited. May be null in case the user does - not already have an account. - example: 'Robert Baden-Powell' + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 type: - 'null' - string - type: object - Invitation.jsonld-read: - deprecated: false - description: |- - An invitation for a person to collaborate in a camp. The person may or may not - already have an account. - properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - campId: - description: |- - The id of the camp for which this invitation is valid. This is useful for - redirecting the user to the correct place after they accept. - example: 1a2b3c4d - type: string - campTitle: - description: |- - The full title of the camp for which this invitation is valid. This should help - the user to decide whether to accept or reject the invitation. - example: 'Abteilungs-Sommerlager 2022' - type: string - userAlreadyInCamp: + parent: description: |- - Indicates whether the logged in user is already collaborating in the camp, and - can therefore not accept the invitation. + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference type: - - boolean - 'null' - userDisplayName: + - string + position: + default: -1 description: |- - The display name of the user that is invited. May be null in case the user does - not already have an account. - example: 'Robert Baden-Powell' + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 type: - 'null' - string + required: + - contentType + - parent + - position type: object - MaterialItem-read: + MultiSelect-write_update: deprecated: false description: '' properties: - article: - description: 'The name of the item that is required.' - example: Volleyball - maxLength: 64 - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - materialList: + data: description: |- - The list to which this item belongs. Lists are used to keep track of who is - responsible to prepare and bring the item to the camp. - example: /material_lists/1a2b3c4d - format: iri-reference - type: string - materialNode: - description: 'The content node to which this item belongs, if it does not belong to a period.' - example: /content_node/material_nodes/1a2b3c4d - format: iri-reference + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + options: + natureAndEnvironment: + checked: true + outdoorTechnique: + checked: false + items: + type: string type: + - array - 'null' - - string - period: - description: 'The period to which this item belongs, if it does not belong to a content node.' - example: /periods/1a2b3c4d - format: iri-reference + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 type: - 'null' - string - quantity: - description: 'The number of items or the amount in the unit of items that are required.' - example: 1.5 + parent: + description: |- + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference type: - 'null' - - number - unit: - description: 'An optional unit for measuring the amount of items required.' - example: kg + - string + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' maxLength: 32 type: - 'null' - string required: - - article - - materialList + - data + - position type: object - MaterialItem-write: + MultiSelect.jsonapi: deprecated: false - description: 'A physical item that is needed for carrying out a programme or camp.' + description: '' properties: - article: - description: 'The name of the item that is required.' - example: Volleyball - type: string - materialList: + children: + description: 'All content nodes that are direct children of this content node.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + contentType: description: |- - The list to which this item belongs. Lists are used to keep track of who is - responsible to prepare and bring the item to the camp. - example: /material_lists/1a2b3c4d + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d format: iri-reference + readOnly: true type: string - materialNode: - description: 'The content node to which this item belongs, if it does not belong to a period.' - example: /content_node/material_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - period: - description: 'The period to which this item belongs, if it does not belong to a content node.' - example: /periods/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - quantity: - description: 'The number of items or the amount in the unit of items that are required.' - example: 1.5 - type: - - 'null' - - number - unit: - description: 'An optional unit for measuring the amount of items required.' - example: kg + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true + type: string + data: + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + options: + natureAndEnvironment: + checked: true + outdoorTechnique: + checked: false + items: + type: string type: + - array - 'null' - - string - type: object - MaterialItem.jsonapi-read: - deprecated: false - description: '' - properties: - article: - description: 'The name of the item that is required.' - example: Volleyball - maxLength: 64 - type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - materialList: + instanceName: description: |- - The list to which this item belongs. Lists are used to keep track of who is - responsible to prepare and bring the item to the camp. - example: /material_lists/1a2b3c4d - format: iri-reference - type: string - materialNode: - description: 'The content node to which this item belongs, if it does not belong to a period.' - example: /content_node/material_nodes/1a2b3c4d - format: iri-reference + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 type: - 'null' - string - period: - description: 'The period to which this item belongs, if it does not belong to a content node.' - example: /periods/1a2b3c4d + parent: + description: |- + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d format: iri-reference type: - 'null' - string - quantity: - description: 'The number of items or the amount in the unit of items that are required.' - example: 1.5 - type: - - 'null' - - number - unit: - description: 'An optional unit for measuring the amount of items required.' - example: kg - maxLength: 32 - type: - - 'null' - - string - required: - - article - - materialList - type: object - MaterialItem.jsonapi-write: - deprecated: false - description: 'A physical item that is needed for carrying out a programme or camp.' - properties: - article: - description: 'The name of the item that is required.' - example: Volleyball - type: string - materialList: + position: + default: -1 description: |- - The list to which this item belongs. Lists are used to keep track of who is - responsible to prepare and bring the item to the camp. - example: /material_lists/1a2b3c4d - format: iri-reference - type: string - materialNode: - description: 'The content node to which this item belongs, if it does not belong to a period.' - example: /content_node/material_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - period: - description: 'The period to which this item belongs, if it does not belong to a content node.' - example: /periods/1a2b3c4d + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. + example: /content_nodes/1a2b3c4d format: iri-reference + readOnly: true type: - 'null' - string - quantity: - description: 'The number of items or the amount in the unit of items that are required.' - example: 1.5 - type: - - 'null' - - number - unit: - description: 'An optional unit for measuring the amount of items required.' - example: kg + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 type: - 'null' - string + required: + - children + - contentType + - position type: object - MaterialItem.jsonhal-read: + MultiSelect.jsonhal-read: deprecated: false description: '' properties: @@ -14815,58 +13840,102 @@ components: type: string type: object type: object - article: - description: 'The name of the item that is required.' - example: Volleyball - maxLength: 64 + children: + description: 'All content nodes that are direct children of this content node.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d + format: iri-reference + type: string + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true type: string + data: + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + options: + natureAndEnvironment: + checked: true + outdoorTechnique: + checked: false + items: + type: string + type: + - array + - 'null' id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - materialList: + instanceName: description: |- - The list to which this item belongs. Lists are used to keep track of who is - responsible to prepare and bring the item to the camp. - example: /material_lists/1a2b3c4d - format: iri-reference - type: string - materialNode: - description: 'The content node to which this item belongs, if it does not belong to a period.' - example: /content_node/material_nodes/1a2b3c4d - format: iri-reference + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 type: - 'null' - string - period: - description: 'The period to which this item belongs, if it does not belong to a content node.' - example: /periods/1a2b3c4d + parent: + description: |- + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d format: iri-reference type: - 'null' - string - quantity: - description: 'The number of items or the amount in the unit of items that are required.' - example: 1.5 + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. + example: /content_nodes/1a2b3c4d + format: iri-reference + readOnly: true type: - 'null' - - number - unit: - description: 'An optional unit for measuring the amount of items required.' - example: kg + - string + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' maxLength: 32 type: - 'null' - string required: - - article - - materialList + - children + - contentType + - position type: object - MaterialItem.jsonhal-write: + MultiSelect.jsonhal-write_create: deprecated: false - description: 'A physical item that is needed for carrying out a programme or camp.' + description: '' properties: _links: properties: @@ -14877,50 +13946,70 @@ components: type: string type: object type: object - article: - description: 'The name of the item that is required.' - example: Volleyball - maxLength: 64 - type: string - materialList: + contentType: description: |- - The list to which this item belongs. Lists are used to keep track of who is - responsible to prepare and bring the item to the camp. - example: /material_lists/1a2b3c4d + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d format: iri-reference type: string - materialNode: - description: 'The content node to which this item belongs, if it does not belong to a period.' - example: /content_node/material_nodes/1a2b3c4d - format: iri-reference + data: + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + options: + natureAndEnvironment: + checked: true + outdoorTechnique: + checked: false + items: + type: string type: + - array - 'null' - - string - period: - description: 'The period to which this item belongs, if it does not belong to a content node.' - example: /periods/1a2b3c4d - format: iri-reference + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 type: - 'null' - string - quantity: - description: 'The number of items or the amount in the unit of items that are required.' - example: 1.5 + parent: + description: |- + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference type: - 'null' - - number - unit: - description: 'An optional unit for measuring the amount of items required.' - example: kg + - string + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' maxLength: 32 type: - 'null' - string required: - - article - - materialList + - contentType + - parent + - position type: object - MaterialItem.jsonld-read: + MultiSelect.jsonld-read: deprecated: false description: '' properties: @@ -14947,133 +14036,225 @@ components: '@type': readOnly: true type: string - article: - description: 'The name of the item that is required.' - example: Volleyball - maxLength: 64 - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - materialList: - description: |- - The list to which this item belongs. Lists are used to keep track of who is - responsible to prepare and bring the item to the camp. - example: /material_lists/1a2b3c4d + children: + description: 'All content nodes that are direct children of this content node.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d format: iri-reference type: string - materialNode: - description: 'The content node to which this item belongs, if it does not belong to a period.' - example: /content_node/material_nodes/1a2b3c4d - format: iri-reference + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true + type: string + data: + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + options: + natureAndEnvironment: + checked: true + outdoorTechnique: + checked: false + items: + type: string + type: + - array + - 'null' + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 type: - 'null' - string - period: - description: 'The period to which this item belongs, if it does not belong to a content node.' - example: /periods/1a2b3c4d + parent: + description: |- + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d format: iri-reference type: - 'null' - string - quantity: - description: 'The number of items or the amount in the unit of items that are required.' - example: 1.5 + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. + example: /content_nodes/1a2b3c4d + format: iri-reference + readOnly: true type: - 'null' - - number - unit: - description: 'An optional unit for measuring the amount of items required.' - example: kg + - string + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' maxLength: 32 type: - 'null' - string required: - - article - - materialList + - children + - contentType + - position type: object - MaterialItem.jsonld-write: + MultiSelect.jsonld-write_create: deprecated: false - description: 'A physical item that is needed for carrying out a programme or camp.' + description: '' properties: - article: - description: 'The name of the item that is required.' - example: Volleyball - maxLength: 64 - type: string - materialList: + contentType: description: |- - The list to which this item belongs. Lists are used to keep track of who is - responsible to prepare and bring the item to the camp. - example: /material_lists/1a2b3c4d + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d format: iri-reference type: string - materialNode: - description: 'The content node to which this item belongs, if it does not belong to a period.' - example: /content_node/material_nodes/1a2b3c4d - format: iri-reference + data: + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + options: + natureAndEnvironment: + checked: true + outdoorTechnique: + checked: false + items: + type: string + type: + - array + - 'null' + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 type: - 'null' - string - period: - description: 'The period to which this item belongs, if it does not belong to a content node.' - example: /periods/1a2b3c4d + parent: + description: |- + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d format: iri-reference type: - 'null' - string - quantity: - description: 'The number of items or the amount in the unit of items that are required.' - example: 1.5 - type: - - 'null' - - number - unit: - description: 'An optional unit for measuring the amount of items required.' - example: kg + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' maxLength: 32 type: - 'null' - string required: - - article - - materialList + - contentType + - parent + - position type: object - MaterialList-read: + Period-read: deprecated: false description: |- - A list of material items that someone needs to bring to the camp. A material list - is automatically created for each person collaborating on the camp. + A time period in which the programme of a camp will take place. There may be multiple + periods in a camp, but they may not overlap. A period is made up of one or more full days. properties: camp: - description: 'The camp this material list belongs to.' + description: 'The camp that this time period belongs to. Cannot be changed once the period is created.' example: /camps/1a2b3c4d format: iri-reference type: string - campCollaboration: - description: 'The campCollaboration this material list belongs to.' - example: /camp_collaborations/1a2b3c4d + contentNodes: + description: 'All the content nodes used in some activity which is carried out (has a schedule entry) in this period.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + dayResponsibles: + description: 'A link to all the DayResponsibles in this period.' + example: '["/day_responsibles/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + days: + description: 'The days in this time period. These are generated automatically.' + example: /periods/1a2b3c4d/days format: iri-reference readOnly: true + type: string + description: + description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' + example: Hauptlager + maxLength: 32 type: - 'null' - string + end: + description: |- + The (inclusive) day at the end of which the period ends, as an ISO date string. Should + not be before "start". + example: '2022-01-08' + format: date + type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - itemCount: - example: 3 - readOnly: true - type: integer materialItems: - description: 'The items that are part of this list.' + description: |- + Material items that are assigned directly to the period, as opposed to individual + activities. example: '["/material_items/1a2b3c4d"]' items: example: 'https://example.com/' @@ -15081,87 +14262,173 @@ components: type: string readOnly: true type: array - name: - description: 'The human readable name of the material list.' - example: Lebensmittel - maxLength: 32 - type: - - 'null' - - string + scheduleEntries: + description: |- + All time slots for programme that are part of this time period. A schedule entry + may span over multiple days, but may not end later than the period. + example: /periods/1a2b3c4d/schedule_entries + format: iri-reference + readOnly: true + type: string + start: + description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' + example: '2022-01-01' + format: date + type: string required: - camp + - days + - description + - end - materialItems - - name + - scheduleEntries + - start type: object - MaterialList-write: + Period-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: deprecated: false - description: |- - A list of material items that someone needs to bring to the camp. A material list - is automatically created for each person collaborating on the camp. - properties: - name: - description: 'The human readable name of the material list.' - example: Lebensmittel - maxLength: 32 - type: - - 'null' - - string - required: - - name - type: object - MaterialList-write_create: - deprecated: false - description: |- - A list of material items that someone needs to bring to the camp. A material list - is automatically created for each person collaborating on the camp. + description: '' properties: camp: - description: 'The camp this material list belongs to.' + description: 'The camp that this time period belongs to. Cannot be changed once the period is created.' example: /camps/1a2b3c4d format: iri-reference type: string - name: - description: 'The human readable name of the material list.' - example: Lebensmittel + contentNodes: + description: 'All the content nodes used in some activity which is carried out (has a schedule entry) in this period.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + dayResponsibles: + description: 'A link to all the DayResponsibles in this period.' + example: '["/day_responsibles/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + days: + items: + $ref: '#/components/schemas/Day-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + readOnly: true + type: unknown_type + description: + description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' + example: Hauptlager maxLength: 32 type: - 'null' - string + end: + description: |- + The (inclusive) day at the end of which the period ends, as an ISO date string. Should + not be before "start". + example: '2022-01-08' + format: date + type: string + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + materialItems: + description: |- + Material items that are assigned directly to the period, as opposed to individual + activities. + example: '["/material_items/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + scheduleEntries: + description: |- + All time slots for programme that are part of this time period. A schedule entry + may span over multiple days, but may not end later than the period. + example: /periods/1a2b3c4d/schedule_entries + format: iri-reference + readOnly: true + type: string + start: + description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' + example: '2022-01-01' + format: date + type: string required: - camp - - name + - days + - description + - end + - materialItems + - scheduleEntries + - start type: object - MaterialList.jsonapi-read: + Period-read_Period.Camp_Period.Days: deprecated: false description: |- - A list of material items that someone needs to bring to the camp. A material list - is automatically created for each person collaborating on the camp. + A time period in which the programme of a camp will take place. There may be multiple + periods in a camp, but they may not overlap. A period is made up of one or more full days. properties: camp: - description: 'The camp this material list belongs to.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - campCollaboration: - description: 'The campCollaboration this material list belongs to.' - example: /camp_collaborations/1a2b3c4d - format: iri-reference + anyOf: + - + $ref: '#/components/schemas/Camp-read_Period.Camp_Period.Days' + - + type: 'null' + readOnly: true + contentNodes: + description: 'All the content nodes used in some activity which is carried out (has a schedule entry) in this period.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string readOnly: true + type: array + dayResponsibles: + description: 'A link to all the DayResponsibles in this period.' + example: '["/day_responsibles/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + days: + items: + $ref: '#/components/schemas/Day-read_Period.Camp_Period.Days' + readOnly: true + type: unknown_type + description: + description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' + example: Hauptlager + maxLength: 32 type: - 'null' - string + end: + description: |- + The (inclusive) day at the end of which the period ends, as an ISO date string. Should + not be before "start". + example: '2022-01-08' + format: date + type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - itemCount: - example: 3 - readOnly: true - type: integer materialItems: - description: 'The items that are part of this list.' + description: |- + Material items that are assigned directly to the period, as opposed to individual + activities. example: '["/material_items/1a2b3c4d"]' items: example: 'https://example.com/' @@ -15169,96 +14436,273 @@ components: type: string readOnly: true type: array - name: - description: 'The human readable name of the material list.' - example: Lebensmittel - maxLength: 32 - type: - - 'null' - - string + scheduleEntries: + description: |- + All time slots for programme that are part of this time period. A schedule entry + may span over multiple days, but may not end later than the period. + example: /periods/1a2b3c4d/schedule_entries + format: iri-reference + readOnly: true + type: string + start: + description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' + example: '2022-01-01' + format: date + type: string required: - camp + - days + - description + - end - materialItems - - name + - scheduleEntries + - start type: object - MaterialList.jsonapi-write: + Period-write: deprecated: false description: |- - A list of material items that someone needs to bring to the camp. A material list - is automatically created for each person collaborating on the camp. + A time period in which the programme of a camp will take place. There may be multiple + periods in a camp, but they may not overlap. A period is made up of one or more full days. properties: - name: - description: 'The human readable name of the material list.' - example: Lebensmittel + description: + description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' + example: Hauptlager maxLength: 32 type: - 'null' - string + end: + description: |- + The (inclusive) day at the end of which the period ends, as an ISO date string. Should + not be before "start". + example: '2022-01-08' + format: date + type: string + moveScheduleEntries: + default: true + description: |- + If the start date of the period is changing, moveScheduleEntries defines what happens with the schedule + entries in the period. + example: true + type: boolean + start: + description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' + example: '2022-01-01' + format: date + type: string required: - - name + - description + - end + - moveScheduleEntries + - start type: object - MaterialList.jsonapi-write_create: + Period-write_create: deprecated: false description: |- - A list of material items that someone needs to bring to the camp. A material list - is automatically created for each person collaborating on the camp. + A time period in which the programme of a camp will take place. There may be multiple + periods in a camp, but they may not overlap. A period is made up of one or more full days. properties: camp: - description: 'The camp this material list belongs to.' + description: 'The camp that this time period belongs to. Cannot be changed once the period is created.' example: /camps/1a2b3c4d format: iri-reference type: string - name: - description: 'The human readable name of the material list.' - example: Lebensmittel + description: + description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' + example: Hauptlager maxLength: 32 type: - 'null' - string + end: + description: |- + The (inclusive) day at the end of which the period ends, as an ISO date string. Should + not be before "start". + example: '2022-01-08' + format: date + type: string + moveScheduleEntries: + default: true + description: |- + If the start date of the period is changing, moveScheduleEntries defines what happens with the schedule + entries in the period. + example: true + type: boolean + start: + description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' + example: '2022-01-01' + format: date + type: string required: - camp - - name + - description + - end + - moveScheduleEntries + - start type: object - MaterialList.jsonhal-read: + Period.jsonapi: deprecated: false description: |- - A list of material items that someone needs to bring to the camp. A material list - is automatically created for each person collaborating on the camp. + A time period in which the programme of a camp will take place. There may be multiple + periods in a camp, but they may not overlap. A period is made up of one or more full days. properties: - _links: + data: properties: - self: + attributes: properties: - href: - format: iri-reference + _id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true type: string + description: + description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' + example: Hauptlager + maxLength: 32 + type: ['null', string] + end: + description: |- + The (inclusive) day at the end of which the period ends, as an ISO date string. Should + not be before "start". + example: '2022-01-08' + format: date + type: string + moveScheduleEntries: + default: true + description: |- + If the start date of the period is changing, moveScheduleEntries defines what happens with the schedule + entries in the period. + example: true + type: boolean + writeOnly: true + start: + description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' + example: '2022-01-01' + format: date + type: string + required: + - description + - end + - moveScheduleEntries + - start type: object - type: object + id: + type: string + relationships: + properties: + camp: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + contentNodes: + properties: { data: { items: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object }, type: array } } + dayResponsibles: + properties: { data: { items: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object }, type: array } } + days: + properties: { data: { items: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object }, type: array } } + materialItems: + properties: { data: { items: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object }, type: array } } + scheduleEntries: + properties: { data: { items: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object }, type: array } } + required: + - camp + - days + - materialItems + - scheduleEntries + type: object + type: + type: string + required: + - id + - type + type: object + included: + description: 'Related resources requested via the "include" query parameter.' + externalDocs: + url: 'https://jsonapi.org/format/#fetching-includes' + items: + anyOf: + - [] + - + $ref: '#/components/schemas/Day.jsonapi' + - + $ref: '#/components/schemas/Day.jsonapi' + - + $ref: '#/components/schemas/Day.jsonapi' + - + $ref: '#/components/schemas/Day.jsonapi' + - + $ref: '#/components/schemas/Day.jsonapi' + readOnly: true + type: array + type: object + Period.jsonhal-read: + deprecated: false + description: |- + A time period in which the programme of a camp will take place. There may be multiple + periods in a camp, but they may not overlap. A period is made up of one or more full days. + properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object camp: - description: 'The camp this material list belongs to.' + description: 'The camp that this time period belongs to. Cannot be changed once the period is created.' example: /camps/1a2b3c4d format: iri-reference type: string - campCollaboration: - description: 'The campCollaboration this material list belongs to.' - example: /camp_collaborations/1a2b3c4d + contentNodes: + description: 'All the content nodes used in some activity which is carried out (has a schedule entry) in this period.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + dayResponsibles: + description: 'A link to all the DayResponsibles in this period.' + example: '["/day_responsibles/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + days: + description: 'The days in this time period. These are generated automatically.' + example: /periods/1a2b3c4d/days format: iri-reference readOnly: true + type: string + description: + description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' + example: Hauptlager + maxLength: 32 type: - 'null' - string + end: + description: |- + The (inclusive) day at the end of which the period ends, as an ISO date string. Should + not be before "start". + example: '2022-01-08' + format: date + type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - itemCount: - example: 3 - readOnly: true - type: integer materialItems: - description: 'The items that are part of this list.' + description: |- + Material items that are assigned directly to the period, as opposed to individual + activities. example: '["/material_items/1a2b3c4d"]' items: example: 'https://example.com/' @@ -15266,23 +14710,31 @@ components: type: string readOnly: true type: array - name: - description: 'The human readable name of the material list.' - example: Lebensmittel - maxLength: 32 - type: - - 'null' - - string + scheduleEntries: + description: |- + All time slots for programme that are part of this time period. A schedule entry + may span over multiple days, but may not end later than the period. + example: /periods/1a2b3c4d/schedule_entries + format: iri-reference + readOnly: true + type: string + start: + description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' + example: '2022-01-01' + format: date + type: string required: - camp + - days + - description + - end - materialItems - - name + - scheduleEntries + - start type: object - MaterialList.jsonhal-write_create: + Period.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: deprecated: false - description: |- - A list of material items that someone needs to bring to the camp. A material list - is automatically created for each person collaborating on the camp. + description: '' properties: _links: properties: @@ -15294,75 +14746,57 @@ components: type: object type: object camp: - description: 'The camp this material list belongs to.' + description: 'The camp that this time period belongs to. Cannot be changed once the period is created.' example: /camps/1a2b3c4d format: iri-reference type: string - name: - description: 'The human readable name of the material list.' - example: Lebensmittel - maxLength: 32 - type: - - 'null' - - string - required: - - camp - - name - type: object - MaterialList.jsonld-read: - deprecated: false - description: |- - A list of material items that someone needs to bring to the camp. A material list - is automatically created for each person collaborating on the camp. - properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': + contentNodes: + description: 'All the content nodes used in some activity which is carried out (has a schedule entry) in this period.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string readOnly: true - type: string - '@type': + type: array + dayResponsibles: + description: 'A link to all the DayResponsibles in this period.' + example: '["/day_responsibles/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string readOnly: true - type: string - camp: - description: 'The camp this material list belongs to.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - campCollaboration: - description: 'The campCollaboration this material list belongs to.' - example: /camp_collaborations/1a2b3c4d - format: iri-reference + type: array + days: + items: + $ref: '#/components/schemas/Day.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' readOnly: true + type: unknown_type + description: + description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' + example: Hauptlager + maxLength: 32 type: - 'null' - string + end: + description: |- + The (inclusive) day at the end of which the period ends, as an ISO date string. Should + not be before "start". + example: '2022-01-08' + format: date + type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - itemCount: - example: 3 - readOnly: true - type: integer materialItems: - description: 'The items that are part of this list.' + description: |- + Material items that are assigned directly to the period, as opposed to individual + activities. example: '["/material_items/1a2b3c4d"]' items: example: 'https://example.com/' @@ -15370,471 +14804,436 @@ components: type: string readOnly: true type: array - name: - description: 'The human readable name of the material list.' - example: Lebensmittel - maxLength: 32 - type: - - 'null' - - string + scheduleEntries: + description: |- + All time slots for programme that are part of this time period. A schedule entry + may span over multiple days, but may not end later than the period. + example: /periods/1a2b3c4d/schedule_entries + format: iri-reference + readOnly: true + type: string + start: + description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' + example: '2022-01-01' + format: date + type: string required: - camp + - days + - description + - end - materialItems - - name + - scheduleEntries + - start type: object - MaterialList.jsonld-write_create: + Period.jsonhal-read_Period.Camp_Period.Days: deprecated: false description: |- - A list of material items that someone needs to bring to the camp. A material list - is automatically created for each person collaborating on the camp. + A time period in which the programme of a camp will take place. There may be multiple + periods in a camp, but they may not overlap. A period is made up of one or more full days. properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object camp: - description: 'The camp this material list belongs to.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - name: - description: 'The human readable name of the material list.' - example: Lebensmittel - maxLength: 32 - type: - - 'null' - - string - required: - - camp - - name - type: object - MaterialNode-read: - deprecated: false - description: '' - properties: - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' + anyOf: + - + $ref: '#/components/schemas/Camp.jsonhal-read_Period.Camp_Period.Days' + - + type: 'null' + readOnly: true + contentNodes: + description: 'All the content nodes used in some activity which is carried out (has a schedule entry) in this period.' + example: '["/content_nodes/1a2b3c4d"]' items: example: 'https://example.com/' format: iri-reference type: string readOnly: true type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true - type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). + dayResponsibles: + description: 'A link to all the DayResponsibles in this period.' + example: '["/day_responsibles/1a2b3c4d"]' items: + example: 'https://example.com/' + format: iri-reference type: string + readOnly: true + type: array + days: + items: + $ref: '#/components/schemas/Day.jsonhal-read_Period.Camp_Period.Days' + readOnly: true + type: unknown_type + description: + description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' + example: Hauptlager + maxLength: 32 type: - - array - 'null' + - string + end: + description: |- + The (inclusive) day at the end of which the period ends, as an ISO date string. Should + not be before "start". + example: '2022-01-08' + format: date + type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string materialItems: + description: |- + Material items that are assigned directly to the period, as opposed to individual + activities. + example: '["/material_items/1a2b3c4d"]' items: - $ref: '#/components/schemas/MaterialItem-read' + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true type: array - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: + scheduleEntries: description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d + All time slots for programme that are part of this time period. A schedule entry + may span over multiple days, but may not end later than the period. + example: /periods/1a2b3c4d/schedule_entries format: iri-reference readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string + type: string + start: + description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' + example: '2022-01-01' + format: date + type: string required: - - children - - contentType + - camp + - days + - description + - end - materialItems - - position + - scheduleEntries + - start type: object - MaterialNode-write_create: + Period.jsonhal-write_create: deprecated: false - description: '' + description: |- + A time period in which the programme of a camp will take place. There may be multiple + periods in a camp, but they may not overlap. A period is made up of one or more full days. properties: - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + camp: + description: 'The camp that this time period belongs to. Cannot be changed once the period is created.' + example: /camps/1a2b3c4d format: iri-reference type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm + description: + description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' + example: Hauptlager maxLength: 32 type: - 'null' - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 + end: description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: + The (inclusive) day at the end of which the period ends, as an ISO date string. Should + not be before "start". + example: '2022-01-08' + format: date + type: string + moveScheduleEntries: + default: true description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string + If the start date of the period is changing, moveScheduleEntries defines what happens with the schedule + entries in the period. + example: true + type: boolean + start: + description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' + example: '2022-01-01' + format: date + type: string required: - - contentType - - parent - - position + - camp + - description + - end + - moveScheduleEntries + - start type: object - MaterialNode-write_update: + Period.jsonld-read: deprecated: false - description: '' + description: |- + A time period in which the programme of a camp will take place. There may be multiple + periods in a camp, but they may not overlap. A period is made up of one or more full days. properties: - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string + readOnly: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + camp: + description: 'The camp that this time period belongs to. Cannot be changed once the period is created.' + example: /camps/1a2b3c4d + format: iri-reference + type: string + contentNodes: + description: 'All the content nodes used in some activity which is carried out (has a schedule entry) in this period.' + example: '["/content_nodes/1a2b3c4d"]' items: + example: 'https://example.com/' + format: iri-reference type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - position - type: object - MaterialNode.jsonapi-read: - deprecated: false - description: '' - properties: - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' + readOnly: true + type: array + dayResponsibles: + description: 'A link to all the DayResponsibles in this period.' + example: '["/day_responsibles/1a2b3c4d"]' items: example: 'https://example.com/' format: iri-reference type: string readOnly: true type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d + days: + description: 'The days in this time period. These are generated automatically.' + example: /periods/1a2b3c4d/days format: iri-reference - type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept readOnly: true type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - items: - type: string + description: + description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' + example: Hauptlager + maxLength: 32 type: - - array - 'null' + - string + end: + description: |- + The (inclusive) day at the end of which the period ends, as an ISO date string. Should + not be before "start". + example: '2022-01-08' + format: date + type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string materialItems: + description: |- + Material items that are assigned directly to the period, as opposed to individual + activities. + example: '["/material_items/1a2b3c4d"]' items: - $ref: '#/components/schemas/MaterialItem.jsonapi-read' + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true type: array - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: + scheduleEntries: description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d + All time slots for programme that are part of this time period. A schedule entry + may span over multiple days, but may not end later than the period. + example: /periods/1a2b3c4d/schedule_entries format: iri-reference readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string + type: string + start: + description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' + example: '2022-01-01' + format: date + type: string required: - - children - - contentType + - camp + - days + - description + - end - materialItems - - position + - scheduleEntries + - start type: object - MaterialNode.jsonapi-write_create: + Period.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: deprecated: false description: '' properties: - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string + readOnly: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + camp: + description: 'The camp that this time period belongs to. Cannot be changed once the period is created.' + example: /camps/1a2b3c4d format: iri-reference type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). + contentNodes: + description: 'All the content nodes used in some activity which is carried out (has a schedule entry) in this period.' + example: '["/content_nodes/1a2b3c4d"]' items: + example: 'https://example.com/' + format: iri-reference type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm + readOnly: true + type: array + dayResponsibles: + description: 'A link to all the DayResponsibles in this period.' + example: '["/day_responsibles/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + days: + items: + $ref: '#/components/schemas/Day.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + readOnly: true + type: unknown_type + description: + description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' + example: Hauptlager maxLength: 32 type: - 'null' - string - parent: + end: description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 + The (inclusive) day at the end of which the period ends, as an ISO date string. Should + not be before "start". + example: '2022-01-08' + format: date + type: string + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + materialItems: description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: + Material items that are assigned directly to the period, as opposed to individual + activities. + example: '["/material_items/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + scheduleEntries: description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - contentType - - parent - - position - type: object - MaterialNode.jsonapi-write_update: - deprecated: false - description: '' - properties: - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d + All time slots for programme that are part of this time period. A schedule entry + may span over multiple days, but may not end later than the period. + example: /periods/1a2b3c4d/schedule_entries format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string + readOnly: true + type: string + start: + description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' + example: '2022-01-01' + format: date + type: string required: - - position + - camp + - days + - description + - end + - materialItems + - scheduleEntries + - start type: object - MaterialNode.jsonhal-read: + Period.jsonld-read_Period.Camp_Period.Days: deprecated: false - description: '' + description: |- + A time period in which the programme of a camp will take place. There may be multiple + periods in a camp, but they may not overlap. A period is made up of one or more full days. properties: - _links: - properties: - self: + '@context': + oneOf: + - + additionalProperties: true properties: - href: - format: iri-reference + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] type: string + required: + - '@vocab' + - hydra type: object - type: object - children: - description: 'All content nodes that are direct children of this content node.' + - + type: string + readOnly: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + camp: + anyOf: + - + $ref: '#/components/schemas/Camp.jsonld-read_Period.Camp_Period.Days' + - + type: 'null' + readOnly: true + contentNodes: + description: 'All the content nodes used in some activity which is carried out (has a schedule entry) in this period.' example: '["/content_nodes/1a2b3c4d"]' items: example: 'https://example.com/' @@ -15842,162 +15241,206 @@ components: type: string readOnly: true type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true - type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). + dayResponsibles: + description: 'A link to all the DayResponsibles in this period.' + example: '["/day_responsibles/1a2b3c4d"]' items: + example: 'https://example.com/' + format: iri-reference type: string + readOnly: true + type: array + days: + items: + $ref: '#/components/schemas/Day.jsonld-read_Period.Camp_Period.Days' + readOnly: true + type: unknown_type + description: + description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' + example: Hauptlager + maxLength: 32 type: - - array - 'null' + - string + end: + description: |- + The (inclusive) day at the end of which the period ends, as an ISO date string. Should + not be before "start". + example: '2022-01-08' + format: date + type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string materialItems: + description: |- + Material items that are assigned directly to the period, as opposed to individual + activities. + example: '["/material_items/1a2b3c4d"]' items: - $ref: '#/components/schemas/MaterialItem.jsonhal-read' + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true type: array - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: + scheduleEntries: description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d + All time slots for programme that are part of this time period. A schedule entry + may span over multiple days, but may not end later than the period. + example: /periods/1a2b3c4d/schedule_entries format: iri-reference readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string + type: string + start: + description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' + example: '2022-01-01' + format: date + type: string required: - - children - - contentType + - camp + - days + - description + - end - materialItems - - position + - scheduleEntries + - start type: object - MaterialNode.jsonhal-write_create: + Period.jsonld-write_create: deprecated: false - description: '' + description: |- + A time period in which the programme of a camp will take place. There may be multiple + periods in a camp, but they may not overlap. A period is made up of one or more full days. properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d + camp: + description: 'The camp that this time period belongs to. Cannot be changed once the period is created.' + example: /camps/1a2b3c4d format: iri-reference type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm + description: + description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' + example: Hauptlager maxLength: 32 type: - 'null' - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 + end: description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: + The (inclusive) day at the end of which the period ends, as an ISO date string. Should + not be before "start". + example: '2022-01-08' + format: date + type: string + moveScheduleEntries: + default: true description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string + If the start date of the period is changing, moveScheduleEntries defines what happens with the schedule + entries in the period. + example: true + type: boolean + start: + description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' + example: '2022-01-01' + format: date + type: string required: - - contentType - - parent - - position + - camp + - description + - end + - moveScheduleEntries + - start type: object - MaterialNode.jsonld-read: + PersonalInvitation-read: deprecated: false - description: '' + description: 'An invitation for a person who already has an account to collaborate in a camp.' + properties: + campId: + description: |- + The id of the camp for which this invitation is valid. This is useful for + redirecting the user to the correct place after they accept. + example: 1a2b3c4d + type: string + campTitle: + description: |- + The full title of the camp for which this invitation is valid. This should help + the user to decide whether to accept or reject the invitation. + example: 'Abteilungs-Sommerlager 2022' + type: string + id: + example: 1a2b3c4d + type: string + type: object + PersonalInvitation-write: + deprecated: false + description: 'An invitation for a person who already has an account to collaborate in a camp.' + type: object + PersonalInvitation.jsonapi: + deprecated: false + description: 'An invitation for a person who already has an account to collaborate in a camp.' + properties: + data: + properties: + attributes: + properties: + _id: + example: 1a2b3c4d + type: string + campId: + description: |- + The id of the camp for which this invitation is valid. This is useful for + redirecting the user to the correct place after they accept. + example: 1a2b3c4d + type: string + campTitle: + description: |- + The full title of the camp for which this invitation is valid. This should help + the user to decide whether to accept or reject the invitation. + example: 'Abteilungs-Sommerlager 2022' + type: string + type: object + id: + type: string + type: + type: string + required: + - id + - type + type: object + type: object + PersonalInvitation.jsonhal-read: + deprecated: false + description: 'An invitation for a person who already has an account to collaborate in a camp.' + properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + campId: + description: |- + The id of the camp for which this invitation is valid. This is useful for + redirecting the user to the correct place after they accept. + example: 1a2b3c4d + type: string + campTitle: + description: |- + The full title of the camp for which this invitation is valid. This should help + the user to decide whether to accept or reject the invitation. + example: 'Abteilungs-Sommerlager 2022' + type: string + id: + example: 1a2b3c4d + type: string + type: object + PersonalInvitation.jsonld-read: + deprecated: false + description: 'An invitation for a person who already has an account to collaborate in a camp.' properties: '@context': oneOf: @@ -16022,604 +15465,485 @@ components: '@type': readOnly: true type: string - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - contentType: + campId: description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true + The id of the camp for which this invitation is valid. This is useful for + redirecting the user to the correct place after they accept. + example: 1a2b3c4d type: string - data: + campTitle: description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - items: - type: string + The full title of the camp for which this invitation is valid. This should help + the user to decide whether to accept or reject the invitation. + example: 'Abteilungs-Sommerlager 2022' + type: string + id: + example: 1a2b3c4d + type: string + type: object + Profile-read: + deprecated: false + description: |- + The profile of a person using eCamp. + The properties available to related eCamp users are here. + Related means that they were or are collaborators in the same camp. + properties: + email: + description: 'Unique email of the user.' + example: bi-pi@example.com + externalDocs: + url: 'https://schema.org/email' + format: email + maxLength: 64 + type: string + firstname: + description: "The user's (optional) first name." + example: Robert + maxLength: 64 type: - - array - 'null' + - string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 + language: + description: 'The optional preferred language of the user, as an ICU language code.' + enum: + - de + - de-CH-scout + - en + - en-CH-scout + - fr + - fr-CH-scout + - it + - it-CH-scout + - rm + - rm-CH-scout + example: en + maxLength: 20 type: - 'null' - string - materialItems: - items: - $ref: '#/components/schemas/MaterialItem.jsonld-read' - type: array - parent: + legalName: description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference + The legal name of the user, for printing on legally relevant + documents. Falls back to the nickname if not complete. + example: 'Robert Baden-Powell' + readOnly: true type: - 'null' - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference - readOnly: true + nickname: + description: "The user's (optional) nickname or scout name." + example: Bi-Pi + maxLength: 32 type: - 'null' - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 + surname: + description: "The user's (optional) last name." + example: Baden-Powell + maxLength: 64 type: - 'null' - string - required: - - children - - contentType - - materialItems - - position - type: object - MaterialNode.jsonld-write_create: - deprecated: false - description: '' - properties: - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d + user: + example: /users/1a2b3c4d format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 + readOnly: true type: - 'null' - string required: - - contentType - - parent - - position + - email type: object - MultiSelect-read: + Profile-read_User.create: deprecated: false description: '' properties: - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true + email: + description: 'Unique email of the user.' + example: bi-pi@example.com + externalDocs: + url: 'https://schema.org/email' + format: email + maxLength: 64 type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - options: - natureAndEnvironment: - checked: true - outdoorTechnique: - checked: false - items: - type: string + firstname: + description: "The user's (optional) first name." + example: Robert + maxLength: 64 type: - - array - 'null' + - string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 + language: + description: 'The optional preferred language of the user, as an ICU language code.' + enum: + - de + - de-CH-scout + - en + - en-CH-scout + - fr + - fr-CH-scout + - it + - it-CH-scout + - rm + - rm-CH-scout + example: en + maxLength: 20 type: - 'null' - string - parent: + legalName: description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference + The legal name of the user, for printing on legally relevant + documents. Falls back to the nickname if not complete. + example: 'Robert Baden-Powell' + readOnly: true type: - 'null' - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference - readOnly: true + nickname: + description: "The user's (optional) nickname or scout name." + example: Bi-Pi + maxLength: 32 type: - 'null' - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 + surname: + description: "The user's (optional) last name." + example: Baden-Powell + maxLength: 64 + type: + - 'null' + - string + user: + example: /users/1a2b3c4d + format: iri-reference + readOnly: true type: - 'null' - string required: - - children - - contentType - - position + - email type: object - MultiSelect-write_create: + Profile-write_create: deprecated: false - description: '' + description: |- + The profile of a person using eCamp. + The properties available to related eCamp users are here. + Related means that they were or are collaborators in the same camp. properties: - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference + email: + description: 'Unique email of the user.' + example: bi-pi@example.com + externalDocs: + url: 'https://schema.org/email' + format: email + maxLength: 64 type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - options: - natureAndEnvironment: - checked: true - outdoorTechnique: - checked: false - items: - type: string + firstname: + description: "The user's (optional) first name." + example: Robert + maxLength: 64 type: - - array - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 + - string + language: + description: 'The optional preferred language of the user, as an ICU language code.' + enum: + - de + - de-CH-scout + - en + - en-CH-scout + - fr + - fr-CH-scout + - it + - it-CH-scout + - rm + - rm-CH-scout + example: en + maxLength: 20 type: - 'null' - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference + newEmail: + description: 'New email.' + example: bi-pi@example.com + externalDocs: + url: 'https://schema.org/email' + format: email type: - 'null' - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' + nickname: + description: "The user's (optional) nickname or scout name." + example: Bi-Pi maxLength: 32 type: - 'null' - string + surname: + description: "The user's (optional) last name." + example: Baden-Powell + maxLength: 64 + type: + - 'null' + - string required: - - contentType - - parent - - position + - email type: object - MultiSelect-write_update: + Profile-write_update: deprecated: false - description: '' + description: |- + The profile of a person using eCamp. + The properties available to related eCamp users are here. + Related means that they were or are collaborators in the same camp. properties: - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - options: - natureAndEnvironment: - checked: true - outdoorTechnique: - checked: false - items: - type: string + firstname: + description: "The user's (optional) first name." + example: Robert + maxLength: 64 type: - - array - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 + - string + language: + description: 'The optional preferred language of the user, as an ICU language code.' + enum: + - de + - de-CH-scout + - en + - en-CH-scout + - fr + - fr-CH-scout + - it + - it-CH-scout + - rm + - rm-CH-scout + example: en + maxLength: 20 type: - 'null' - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference + newEmail: + description: 'New email.' + example: bi-pi@example.com + externalDocs: + url: 'https://schema.org/email' + format: email type: - 'null' - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' + nickname: + description: "The user's (optional) nickname or scout name." + example: Bi-Pi maxLength: 32 type: - 'null' - string - required: - - data - - position + surname: + description: "The user's (optional) last name." + example: Baden-Powell + maxLength: 64 + type: + - 'null' + - string + untrustedEmailKey: + description: 'User input for email verification.' + type: + - 'null' + - string + writeOnly: true type: object - MultiSelect.jsonapi-read: + Profile.jsonapi: deprecated: false - description: '' + description: |- + The profile of a person using eCamp. + The properties available to related eCamp users are here. + Related means that they were or are collaborators in the same camp. properties: - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' + data: + properties: + attributes: + properties: + _id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + email: + description: 'Unique email of the user.' + example: bi-pi@example.com + externalDocs: { url: 'https://schema.org/email' } + format: email + maxLength: 64 + readOnly: true + type: string + firstname: + description: "The user's (optional) first name." + example: Robert + maxLength: 64 + type: ['null', string] + language: + description: 'The optional preferred language of the user, as an ICU language code.' + enum: [de, de-CH-scout, en, en-CH-scout, fr, fr-CH-scout, it, it-CH-scout, rm, rm-CH-scout] + example: en + maxLength: 20 + type: ['null', string] + legalName: + description: |- + The legal name of the user, for printing on legally relevant + documents. Falls back to the nickname if not complete. + example: 'Robert Baden-Powell' + readOnly: true + type: ['null', string] + newEmail: + description: 'New email.' + example: bi-pi@example.com + externalDocs: { url: 'https://schema.org/email' } + format: email + type: ['null', string] + writeOnly: true + nickname: + description: "The user's (optional) nickname or scout name." + example: Bi-Pi + maxLength: 32 + type: ['null', string] + surname: + description: "The user's (optional) last name." + example: Baden-Powell + maxLength: 64 + type: ['null', string] + untrustedEmailKey: + description: 'User input for email verification.' + type: ['null', string] + writeOnly: true + required: + - email + type: object + id: + type: string + relationships: + properties: + user: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + type: object + type: + type: string + required: + - id + - type + type: object + included: + description: 'Related resources requested via the "include" query parameter.' + externalDocs: + url: 'https://jsonapi.org/format/#fetching-includes' items: - example: 'https://example.com/' - format: iri-reference - type: string + anyOf: + - + $ref: '#/components/schemas/Profile.jsonapi' readOnly: true type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true + type: object + Profile.jsonhal-read: + deprecated: false + description: |- + The profile of a person using eCamp. + The properties available to related eCamp users are here. + Related means that they were or are collaborators in the same camp. + properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + email: + description: 'Unique email of the user.' + example: bi-pi@example.com + externalDocs: + url: 'https://schema.org/email' + format: email + maxLength: 64 type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - options: - natureAndEnvironment: - checked: true - outdoorTechnique: - checked: false - items: - type: string + firstname: + description: "The user's (optional) first name." + example: Robert + maxLength: 64 type: - - array - 'null' + - string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 + language: + description: 'The optional preferred language of the user, as an ICU language code.' + enum: + - de + - de-CH-scout + - en + - en-CH-scout + - fr + - fr-CH-scout + - it + - it-CH-scout + - rm + - rm-CH-scout + example: en + maxLength: 20 type: - 'null' - string - parent: + legalName: description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference + The legal name of the user, for printing on legally relevant + documents. Falls back to the nickname if not complete. + example: 'Robert Baden-Powell' + readOnly: true type: - 'null' - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference - readOnly: true + nickname: + description: "The user's (optional) nickname or scout name." + example: Bi-Pi + maxLength: 32 type: - 'null' - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 + surname: + description: "The user's (optional) last name." + example: Baden-Powell + maxLength: 64 type: - 'null' - string - required: - - children - - contentType - - position - type: object - MultiSelect.jsonapi-write_create: - deprecated: false - description: '' - properties: - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - options: - natureAndEnvironment: - checked: true - outdoorTechnique: - checked: false - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - contentType - - parent - - position - type: object - MultiSelect.jsonapi-write_update: - deprecated: false - description: '' - properties: - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - options: - natureAndEnvironment: - checked: true - outdoorTechnique: - checked: false - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d + user: + example: /users/1a2b3c4d format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 + readOnly: true type: - 'null' - string required: - - data - - position + - email type: object - MultiSelect.jsonhal-read: + Profile.jsonhal-read_User.create: deprecated: false description: '' properties: @@ -16632,102 +15956,84 @@ components: type: string type: object type: object - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true + email: + description: 'Unique email of the user.' + example: bi-pi@example.com + externalDocs: + url: 'https://schema.org/email' + format: email + maxLength: 64 type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - options: - natureAndEnvironment: - checked: true - outdoorTechnique: - checked: false - items: - type: string + firstname: + description: "The user's (optional) first name." + example: Robert + maxLength: 64 type: - - array - 'null' + - string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 + language: + description: 'The optional preferred language of the user, as an ICU language code.' + enum: + - de + - de-CH-scout + - en + - en-CH-scout + - fr + - fr-CH-scout + - it + - it-CH-scout + - rm + - rm-CH-scout + example: en + maxLength: 20 type: - 'null' - string - parent: + legalName: description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference + The legal name of the user, for printing on legally relevant + documents. Falls back to the nickname if not complete. + example: 'Robert Baden-Powell' + readOnly: true type: - 'null' - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference - readOnly: true + nickname: + description: "The user's (optional) nickname or scout name." + example: Bi-Pi + maxLength: 32 type: - 'null' - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 + surname: + description: "The user's (optional) last name." + example: Baden-Powell + maxLength: 64 + type: + - 'null' + - string + user: + example: /users/1a2b3c4d + format: iri-reference + readOnly: true type: - 'null' - string required: - - children - - contentType - - position + - email type: object - MultiSelect.jsonhal-write_create: + Profile.jsonhal-write_create: deprecated: false - description: '' + description: |- + The profile of a person using eCamp. + The properties available to related eCamp users are here. + Related means that they were or are collaborators in the same camp. properties: _links: properties: @@ -16738,72 +16044,71 @@ components: type: string type: object type: object - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference + email: + description: 'Unique email of the user.' + example: bi-pi@example.com + externalDocs: + url: 'https://schema.org/email' + format: email + maxLength: 64 type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - options: - natureAndEnvironment: - checked: true - outdoorTechnique: - checked: false - items: - type: string + firstname: + description: "The user's (optional) first name." + example: Robert + maxLength: 64 type: - - array - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 + - string + language: + description: 'The optional preferred language of the user, as an ICU language code.' + enum: + - de + - de-CH-scout + - en + - en-CH-scout + - fr + - fr-CH-scout + - it + - it-CH-scout + - rm + - rm-CH-scout + example: en + maxLength: 20 type: - 'null' - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference + newEmail: + description: 'New email.' + example: bi-pi@example.com + externalDocs: + url: 'https://schema.org/email' + format: email type: - 'null' - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' + nickname: + description: "The user's (optional) nickname or scout name." + example: Bi-Pi maxLength: 32 type: - 'null' - string + surname: + description: "The user's (optional) last name." + example: Baden-Powell + maxLength: 64 + type: + - 'null' + - string required: - - contentType - - parent - - position + - email type: object - MultiSelect.jsonld-read: + Profile.jsonld-read: deprecated: false - description: '' + description: |- + The profile of a person using eCamp. + The properties available to related eCamp users are here. + Related means that they were or are collaborators in the same camp. properties: '@context': oneOf: @@ -16828,627 +16133,462 @@ components: '@type': readOnly: true type: string - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true + email: + description: 'Unique email of the user.' + example: bi-pi@example.com + externalDocs: + url: 'https://schema.org/email' + format: email + maxLength: 64 type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - options: - natureAndEnvironment: - checked: true - outdoorTechnique: - checked: false - items: - type: string + firstname: + description: "The user's (optional) first name." + example: Robert + maxLength: 64 type: - - array - 'null' + - string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference + language: + description: 'The optional preferred language of the user, as an ICU language code.' + enum: + - de + - de-CH-scout + - en + - en-CH-scout + - fr + - fr-CH-scout + - it + - it-CH-scout + - rm + - rm-CH-scout + example: en + maxLength: 20 type: - 'null' - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: + legalName: description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference + The legal name of the user, for printing on legally relevant + documents. Falls back to the nickname if not complete. + example: 'Robert Baden-Powell' readOnly: true type: - 'null' - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' + nickname: + description: "The user's (optional) nickname or scout name." + example: Bi-Pi maxLength: 32 type: - 'null' - string - required: - - children - - contentType - - position - type: object - MultiSelect.jsonld-write_create: - deprecated: false - description: '' - properties: - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - options: - natureAndEnvironment: - checked: true - outdoorTechnique: - checked: false - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 + surname: + description: "The user's (optional) last name." + example: Baden-Powell + maxLength: 64 type: - 'null' - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d + user: + example: /users/1a2b3c4d format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 + readOnly: true type: - 'null' - string required: - - contentType - - parent - - position + - email type: object - Period-read: + Profile.jsonld-read_User.create: deprecated: false - description: |- - A time period in which the programme of a camp will take place. There may be multiple - periods in a camp, but they may not overlap. A period is made up of one or more full days. + description: '' properties: - camp: - description: 'The camp that this time period belongs to. Cannot be changed once the period is created.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - contentNodes: - description: 'All the content nodes used in some activity which is carried out (has a schedule entry) in this period.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string readOnly: true - type: array - dayResponsibles: - description: 'A link to all the DayResponsibles in this period.' - example: '["/day_responsibles/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + '@id': readOnly: true - type: array - days: - description: 'The days in this time period. These are generated automatically.' - example: '["/days?period=/periods/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + type: string + '@type': readOnly: true - type: array - description: - description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' - example: Hauptlager - maxLength: 32 + type: string + email: + description: 'Unique email of the user.' + example: bi-pi@example.com + externalDocs: + url: 'https://schema.org/email' + format: email + maxLength: 64 + type: string + firstname: + description: "The user's (optional) first name." + example: Robert + maxLength: 64 type: - 'null' - string - end: - description: |- - The (inclusive) day at the end of which the period ends, as an ISO date string. Should - not be before "start". - example: '2022-01-08' - format: date - type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - materialItems: - description: |- - Material items that are assigned directly to the period, as opposed to individual - activities. - example: '["/material_items/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - scheduleEntries: + language: + description: 'The optional preferred language of the user, as an ICU language code.' + enum: + - de + - de-CH-scout + - en + - en-CH-scout + - fr + - fr-CH-scout + - it + - it-CH-scout + - rm + - rm-CH-scout + example: en + maxLength: 20 + type: + - 'null' + - string + legalName: description: |- - All time slots for programme that are part of this time period. A schedule entry - may span over multiple days, but may not end later than the period. - example: '["/schedule_entries/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - start: - description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' - example: '2022-01-01' - format: date - type: string - required: - - camp - - days - - description - - end - - materialItems - - scheduleEntries - - start - type: object - Period-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: - deprecated: false - description: '' - properties: - camp: - description: 'The camp that this time period belongs to. Cannot be changed once the period is created.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - contentNodes: - description: 'All the content nodes used in some activity which is carried out (has a schedule entry) in this period.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - dayResponsibles: - description: 'A link to all the DayResponsibles in this period.' - example: '["/day_responsibles/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - days: - items: - $ref: '#/components/schemas/Day-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + The legal name of the user, for printing on legally relevant + documents. Falls back to the nickname if not complete. + example: 'Robert Baden-Powell' readOnly: true - type: array - description: - description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' - example: Hauptlager + type: + - 'null' + - string + nickname: + description: "The user's (optional) nickname or scout name." + example: Bi-Pi maxLength: 32 type: - 'null' - string - end: - description: |- - The (inclusive) day at the end of which the period ends, as an ISO date string. Should - not be before "start". - example: '2022-01-08' - format: date - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - materialItems: - description: |- - Material items that are assigned directly to the period, as opposed to individual - activities. - example: '["/material_items/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - scheduleEntries: - description: |- - All time slots for programme that are part of this time period. A schedule entry - may span over multiple days, but may not end later than the period. - example: '["/schedule_entries/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + surname: + description: "The user's (optional) last name." + example: Baden-Powell + maxLength: 64 + type: + - 'null' + - string + user: + example: /users/1a2b3c4d + format: iri-reference readOnly: true - type: array - start: - description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' - example: '2022-01-01' - format: date - type: string + type: + - 'null' + - string required: - - camp - - days - - description - - end - - materialItems - - scheduleEntries - - start + - email type: object - Period-read_Period.Camp_Period.Days: + Profile.jsonld-write_create: deprecated: false description: |- - A time period in which the programme of a camp will take place. There may be multiple - periods in a camp, but they may not overlap. A period is made up of one or more full days. + The profile of a person using eCamp. + The properties available to related eCamp users are here. + Related means that they were or are collaborators in the same camp. properties: - camp: - anyOf: - - - $ref: '#/components/schemas/Camp-read_Period.Camp_Period.Days' - - - type: 'null' - readOnly: true - contentNodes: - description: 'All the content nodes used in some activity which is carried out (has a schedule entry) in this period.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - dayResponsibles: - description: 'A link to all the DayResponsibles in this period.' - example: '["/day_responsibles/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - days: - items: - $ref: '#/components/schemas/Day-read_Period.Camp_Period.Days' - readOnly: true - type: array - description: - description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' - example: Hauptlager + email: + description: 'Unique email of the user.' + example: bi-pi@example.com + externalDocs: + url: 'https://schema.org/email' + format: email + maxLength: 64 + type: string + firstname: + description: "The user's (optional) first name." + example: Robert + maxLength: 64 + type: + - 'null' + - string + language: + description: 'The optional preferred language of the user, as an ICU language code.' + enum: + - de + - de-CH-scout + - en + - en-CH-scout + - fr + - fr-CH-scout + - it + - it-CH-scout + - rm + - rm-CH-scout + example: en + maxLength: 20 + type: + - 'null' + - string + newEmail: + description: 'New email.' + example: bi-pi@example.com + externalDocs: + url: 'https://schema.org/email' + format: email + type: + - 'null' + - string + nickname: + description: "The user's (optional) nickname or scout name." + example: Bi-Pi maxLength: 32 type: - 'null' - string - end: - description: |- - The (inclusive) day at the end of which the period ends, as an ISO date string. Should - not be before "start". - example: '2022-01-08' - format: date - type: string + surname: + description: "The user's (optional) last name." + example: Baden-Powell + maxLength: 64 + type: + - 'null' + - string + required: + - email + type: object + ResetPassword: + deprecated: false + description: '' + properties: + email: + type: + - 'null' + - string id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - materialItems: - description: |- - Material items that are assigned directly to the period, as opposed to individual - activities. - example: '["/material_items/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - scheduleEntries: - description: |- - All time slots for programme that are part of this time period. A schedule entry - may span over multiple days, but may not end later than the period. - example: '["/schedule_entries/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + description: "$id: base64_encode($email . '#' . $resetKey)." readOnly: true - type: array - start: - description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' - example: '2022-01-01' - format: date - type: string - required: - - camp - - days - - description - - end - - materialItems - - scheduleEntries - - start + type: + - 'null' + - string + password: + maxLength: 128 + minLength: 12 + type: + - 'null' + - string + writeOnly: true + recaptchaToken: + type: + - 'null' + - string + writeOnly: true type: object - Period-write: + ResetPassword-create: deprecated: false - description: |- - A time period in which the programme of a camp will take place. There may be multiple - periods in a camp, but they may not overlap. A period is made up of one or more full days. + description: '' properties: - description: - description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' - example: Hauptlager - maxLength: 32 + email: type: - 'null' - string - end: - description: |- - The (inclusive) day at the end of which the period ends, as an ISO date string. Should - not be before "start". - example: '2022-01-08' - format: date - type: string - moveScheduleEntries: - default: true - description: |- - If the start date of the period is changing, moveScheduleEntries defines what happens with the schedule - entries in the period. - example: true - type: boolean - start: - description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' - example: '2022-01-01' - format: date - type: string - required: - - description - - end - - moveScheduleEntries - - start + recaptchaToken: + type: + - 'null' + - string + writeOnly: true type: object - Period-write_create: + ResetPassword-update: deprecated: false - description: |- - A time period in which the programme of a camp will take place. There may be multiple - periods in a camp, but they may not overlap. A period is made up of one or more full days. + description: '' properties: - camp: - description: 'The camp that this time period belongs to. Cannot be changed once the period is created.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - description: - description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' - example: Hauptlager - maxLength: 32 + password: + maxLength: 128 + minLength: 12 type: - 'null' - string - end: - description: |- - The (inclusive) day at the end of which the period ends, as an ISO date string. Should - not be before "start". - example: '2022-01-08' - format: date - type: string - moveScheduleEntries: - default: true - description: |- - If the start date of the period is changing, moveScheduleEntries defines what happens with the schedule - entries in the period. - example: true - type: boolean - start: - description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' - example: '2022-01-01' - format: date - type: string - required: - - camp - - description - - end - - moveScheduleEntries - - start + writeOnly: true + recaptchaToken: + type: + - 'null' + - string + writeOnly: true type: object - Period.jsonapi-read: + ResetPassword.jsonapi: deprecated: false - description: |- - A time period in which the programme of a camp will take place. There may be multiple - periods in a camp, but they may not overlap. A period is made up of one or more full days. + description: '' properties: - camp: - description: 'The camp that this time period belongs to. Cannot be changed once the period is created.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - contentNodes: - description: 'All the content nodes used in some activity which is carried out (has a schedule entry) in this period.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - dayResponsibles: - description: 'A link to all the DayResponsibles in this period.' - example: '["/day_responsibles/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - days: - description: 'The days in this time period. These are generated automatically.' - example: '["/days?period=/periods/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - description: - description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' - example: Hauptlager - maxLength: 32 + data: + properties: + attributes: + properties: + _id: + description: "$id: base64_encode($email . '#' . $resetKey)." + readOnly: true + type: ['null', string] + email: + type: ['null', string] + password: + maxLength: 128 + minLength: 12 + type: ['null', string] + writeOnly: true + recaptchaToken: + type: ['null', string] + writeOnly: true + type: object + id: + type: string + type: + type: string + required: + - id + - type + type: object + type: object + ResetPassword.jsonhal: + deprecated: false + description: '' + properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + email: type: - 'null' - string - end: - description: |- - The (inclusive) day at the end of which the period ends, as an ISO date string. Should - not be before "start". - example: '2022-01-08' - format: date - type: string id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 + description: "$id: base64_encode($email . '#' . $resetKey)." readOnly: true - type: string - materialItems: - description: |- - Material items that are assigned directly to the period, as opposed to individual - activities. - example: '["/material_items/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + type: + - 'null' + - string + password: + maxLength: 128 + minLength: 12 + type: + - 'null' + - string + writeOnly: true + recaptchaToken: + type: + - 'null' + - string + writeOnly: true + type: object + ResetPassword.jsonhal-create: + deprecated: false + description: '' + properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + email: + type: + - 'null' + - string + recaptchaToken: + type: + - 'null' + - string + writeOnly: true + type: object + ResetPassword.jsonld: + deprecated: false + description: '' + properties: + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string readOnly: true - type: array - scheduleEntries: - description: |- - All time slots for programme that are part of this time period. A schedule entry - may span over multiple days, but may not end later than the period. - example: '["/schedule_entries/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + '@id': readOnly: true - type: array - start: - description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' - example: '2022-01-01' - format: date type: string - required: - - camp - - days - - description - - end - - materialItems - - scheduleEntries - - start + '@type': + readOnly: true + type: string + email: + type: + - 'null' + - string + id: + description: "$id: base64_encode($email . '#' . $resetKey)." + readOnly: true + type: + - 'null' + - string + password: + maxLength: 128 + minLength: 12 + type: + - 'null' + - string + writeOnly: true + recaptchaToken: + type: + - 'null' + - string + writeOnly: true type: object - Period.jsonapi-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: + ResetPassword.jsonld-create: deprecated: false description: '' properties: - camp: - description: 'The camp that this time period belongs to. Cannot be changed once the period is created.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - contentNodes: - description: 'All the content nodes used in some activity which is carried out (has a schedule entry) in this period.' + email: + type: + - 'null' + - string + recaptchaToken: + type: + - 'null' + - string + writeOnly: true + type: object + ResponsiveLayout-read: + deprecated: false + description: '' + properties: + children: + description: 'All content nodes that are direct children of this content node.' example: '["/content_nodes/1a2b3c4d"]' items: example: 'https://example.com/' @@ -17456,272 +16596,232 @@ components: type: string readOnly: true type: array - dayResponsibles: - description: 'A link to all the DayResponsibles in this period.' - example: '["/day_responsibles/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d + format: iri-reference + type: string + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept readOnly: true - type: array - days: + type: string + data: + default: '{"items":[{"slot":"main"},{"slot":"aside-top"},{"slot":"aside-bottom"}]}' + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + items: + - + slot: aside-bottom + - + slot: aside-top + - + slot: main items: - $ref: '#/components/schemas/Day.jsonapi-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' - readOnly: true - type: array - description: - description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' - example: Hauptlager - maxLength: 32 + type: string type: + - array - 'null' - - string - end: - description: |- - The (inclusive) day at the end of which the period ends, as an ISO date string. Should - not be before "start". - example: '2022-01-08' - format: date - type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - materialItems: + instanceName: description: |- - Material items that are assigned directly to the period, as opposed to individual - activities. - example: '["/material_items/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - scheduleEntries: - description: |- - All time slots for programme that are part of this time period. A schedule entry - may span over multiple days, but may not end later than the period. - example: '["/schedule_entries/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - start: - description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' - example: '2022-01-01' - format: date - type: string - required: - - camp - - days - - description - - end - - materialItems - - scheduleEntries - - start - type: object - Period.jsonapi-read_Period.Camp_Period.Days: - deprecated: false - description: |- - A time period in which the programme of a camp will take place. There may be multiple - periods in a camp, but they may not overlap. A period is made up of one or more full days. - properties: - camp: - anyOf: - - - $ref: '#/components/schemas/Camp.jsonapi-read_Period.Camp_Period.Days' - - - type: 'null' - readOnly: true - contentNodes: - description: 'All the content nodes used in some activity which is carried out (has a schedule entry) in this period.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - dayResponsibles: - description: 'A link to all the DayResponsibles in this period.' - example: '["/day_responsibles/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - days: - items: - $ref: '#/components/schemas/Day.jsonapi-read_Period.Camp_Period.Days' - readOnly: true - type: array - description: - description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' - example: Hauptlager + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm maxLength: 32 type: - 'null' - string - end: + parent: description: |- - The (inclusive) day at the end of which the period ends, as an ISO date string. Should - not be before "start". - example: '2022-01-08' - format: date - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - materialItems: + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + position: + default: -1 description: |- - Material items that are assigned directly to the period, as opposed to individual - activities. - example: '["/material_items/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - scheduleEntries: + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: description: |- - All time slots for programme that are part of this time period. A schedule entry - may span over multiple days, but may not end later than the period. - example: '["/schedule_entries/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. + example: /content_nodes/1a2b3c4d + format: iri-reference readOnly: true - type: array - start: - description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' - example: '2022-01-01' - format: date - type: string - required: - - camp - - days - - description - - end - - materialItems - - scheduleEntries - - start - type: object - Period.jsonapi-write: - deprecated: false - description: |- - A time period in which the programme of a camp will take place. There may be multiple - periods in a camp, but they may not overlap. A period is made up of one or more full days. - properties: - description: - description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' - example: Hauptlager - maxLength: 32 type: - 'null' - string - end: - description: |- - The (inclusive) day at the end of which the period ends, as an ISO date string. Should - not be before "start". - example: '2022-01-08' - format: date - type: string - moveScheduleEntries: - default: true + slot: description: |- - If the start date of the period is changing, moveScheduleEntries defines what happens with the schedule - entries in the period. - example: true - type: boolean - start: - description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' - example: '2022-01-01' - format: date - type: string + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - description - - end - - moveScheduleEntries - - start + - children + - contentType + - data + - position type: object - Period.jsonapi-write_create: + ResponsiveLayout-write_create: deprecated: false - description: |- - A time period in which the programme of a camp will take place. There may be multiple - periods in a camp, but they may not overlap. A period is made up of one or more full days. + description: '' properties: - camp: - description: 'The camp that this time period belongs to. Cannot be changed once the period is created.' - example: /camps/1a2b3c4d + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d format: iri-reference type: string - description: - description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' - example: Hauptlager + data: + default: '{"items":[{"slot":"main"},{"slot":"aside-top"},{"slot":"aside-bottom"}]}' + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + items: + - + slot: aside-bottom + - + slot: aside-top + - + slot: main + items: + type: string + type: + - array + - 'null' + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm maxLength: 32 type: - 'null' - string - end: + parent: description: |- - The (inclusive) day at the end of which the period ends, as an ISO date string. Should - not be before "start". - example: '2022-01-08' - format: date - type: string - moveScheduleEntries: - default: true + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + position: + default: -1 description: |- - If the start date of the period is changing, moveScheduleEntries defines what happens with the schedule - entries in the period. - example: true - type: boolean - start: - description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' - example: '2022-01-01' - format: date - type: string + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - camp - - description - - end - - moveScheduleEntries - - start + - contentType + - data + - parent + - position type: object - Period.jsonhal-read: + ResponsiveLayout-write_update: deprecated: false - description: |- - A time period in which the programme of a camp will take place. There may be multiple - periods in a camp, but they may not overlap. A period is made up of one or more full days. + description: '' properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - camp: - description: 'The camp that this time period belongs to. Cannot be changed once the period is created.' - example: /camps/1a2b3c4d + data: + default: '{"items":[{"slot":"main"},{"slot":"aside-top"},{"slot":"aside-bottom"}]}' + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + items: + - + slot: aside-bottom + - + slot: aside-top + - + slot: main + items: + type: string + type: + - array + - 'null' + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 + type: + - 'null' + - string + parent: + description: |- + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d format: iri-reference - type: string - contentNodes: - description: 'All the content nodes used in some activity which is carried out (has a schedule entry) in this period.' + type: + - 'null' + - string + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string + required: + - data + - position + type: object + ResponsiveLayout.jsonapi: + deprecated: false + description: '' + properties: + children: + description: 'All content nodes that are direct children of this content node.' example: '["/content_nodes/1a2b3c4d"]' items: example: 'https://example.com/' @@ -17729,81 +16829,96 @@ components: type: string readOnly: true type: array - dayResponsibles: - description: 'A link to all the DayResponsibles in this period.' - example: '["/day_responsibles/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d + format: iri-reference readOnly: true - type: array - days: - description: 'The days in this time period. These are generated automatically.' - example: '["/days?period=/periods/1a2b3c4d"]' + type: string + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true + type: string + data: + default: '{"items":[{"slot":"main"},{"slot":"aside-top"},{"slot":"aside-bottom"}]}' + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + items: + - + slot: aside-bottom + - + slot: aside-top + - + slot: main items: - example: 'https://example.com/' - format: iri-reference type: string - readOnly: true - type: array - description: - description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' - example: Hauptlager - maxLength: 32 type: + - array - 'null' - - string - end: - description: |- - The (inclusive) day at the end of which the period ends, as an ISO date string. Should - not be before "start". - example: '2022-01-08' - format: date - type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - materialItems: + instanceName: description: |- - Material items that are assigned directly to the period, as opposed to individual - activities. - example: '["/material_items/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - scheduleEntries: + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 + type: + - 'null' + - string + parent: description: |- - All time slots for programme that are part of this time period. A schedule entry - may span over multiple days, but may not end later than the period. - example: '["/schedule_entries/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. + example: /content_nodes/1a2b3c4d + format: iri-reference readOnly: true - type: array - start: - description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' - example: '2022-01-01' - format: date - type: string + type: + - 'null' + - string + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - camp - - days - - description - - end - - materialItems - - scheduleEntries - - start + - children + - contentType + - data + - position type: object - Period.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: + ResponsiveLayout.jsonhal-read: deprecated: false description: '' properties: @@ -17816,13 +16931,8 @@ components: type: string type: object type: object - camp: - description: 'The camp that this time period belongs to. Cannot be changed once the period is created.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - contentNodes: - description: 'All the content nodes used in some activity which is carried out (has a schedule entry) in this period.' + children: + description: 'All content nodes that are direct children of this content node.' example: '["/content_nodes/1a2b3c4d"]' items: example: 'https://example.com/' @@ -17830,81 +16940,97 @@ components: type: string readOnly: true type: array - dayResponsibles: - description: 'A link to all the DayResponsibles in this period.' - example: '["/day_responsibles/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - days: - items: - $ref: '#/components/schemas/Day.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' - readOnly: true - type: array - description: - description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' - example: Hauptlager - maxLength: 32 - type: - - 'null' - - string - end: + contentType: description: |- - The (inclusive) day at the end of which the period ends, as an ISO date string. Should - not be before "start". - example: '2022-01-08' - format: date - type: string + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d + format: iri-reference + type: string + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true + type: string + data: + default: '{"items":[{"slot":"main"},{"slot":"aside-top"},{"slot":"aside-bottom"}]}' + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + items: + - + slot: aside-bottom + - + slot: aside-top + - + slot: main + items: + type: string + type: + - array + - 'null' id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - materialItems: + instanceName: description: |- - Material items that are assigned directly to the period, as opposed to individual - activities. - example: '["/material_items/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - scheduleEntries: + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 + type: + - 'null' + - string + parent: description: |- - All time slots for programme that are part of this time period. A schedule entry - may span over multiple days, but may not end later than the period. - example: '["/schedule_entries/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. + example: /content_nodes/1a2b3c4d + format: iri-reference readOnly: true - type: array - start: - description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' - example: '2022-01-01' - format: date - type: string + type: + - 'null' + - string + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - camp - - days - - description - - end - - materialItems - - scheduleEntries - - start + - children + - contentType + - data + - position type: object - Period.jsonhal-read_Period.Camp_Period.Days: + ResponsiveLayout.jsonhal-write_create: deprecated: false - description: |- - A time period in which the programme of a camp will take place. There may be multiple - periods in a camp, but they may not overlap. A period is made up of one or more full days. + description: '' properties: _links: properties: @@ -17915,1309 +17041,1131 @@ components: type: string type: object type: object - camp: - anyOf: - - - $ref: '#/components/schemas/Camp.jsonhal-read_Period.Camp_Period.Days' - - - type: 'null' - readOnly: true - contentNodes: - description: 'All the content nodes used in some activity which is carried out (has a schedule entry) in this period.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - dayResponsibles: - description: 'A link to all the DayResponsibles in this period.' - example: '["/day_responsibles/1a2b3c4d"]' + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d + format: iri-reference + type: string + data: + default: '{"items":[{"slot":"main"},{"slot":"aside-top"},{"slot":"aside-bottom"}]}' + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + items: + - + slot: aside-bottom + - + slot: aside-top + - + slot: main items: - example: 'https://example.com/' - format: iri-reference type: string - readOnly: true - type: array - days: - items: - $ref: '#/components/schemas/Day.jsonhal-read_Period.Camp_Period.Days' - readOnly: true - type: array - description: - description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' - example: Hauptlager + type: + - array + - 'null' + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm maxLength: 32 type: - 'null' - string - end: + parent: description: |- - The (inclusive) day at the end of which the period ends, as an ISO date string. Should - not be before "start". - example: '2022-01-08' - format: date + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string + required: + - contentType + - data + - parent + - position + type: object + ResponsiveLayout.jsonld-read: + deprecated: false + description: '' + properties: + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string + readOnly: true + '@id': + readOnly: true type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 + '@type': readOnly: true type: string - materialItems: - description: |- - Material items that are assigned directly to the period, as opposed to individual - activities. - example: '["/material_items/1a2b3c4d"]' + children: + description: 'All content nodes that are direct children of this content node.' + example: '["/content_nodes/1a2b3c4d"]' items: example: 'https://example.com/' format: iri-reference type: string readOnly: true type: array - scheduleEntries: + contentType: description: |- - All time slots for programme that are part of this time period. A schedule entry - may span over multiple days, but may not end later than the period. - example: '["/schedule_entries/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - start: - description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' - example: '2022-01-01' - format: date - type: string - required: - - camp - - days - - description - - end - - materialItems - - scheduleEntries - - start - type: object - Period.jsonhal-write_create: - deprecated: false - description: |- - A time period in which the programme of a camp will take place. There may be multiple - periods in a camp, but they may not overlap. A period is made up of one or more full days. - properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - camp: - description: 'The camp that this time period belongs to. Cannot be changed once the period is created.' - example: /camps/1a2b3c4d + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d format: iri-reference type: string - description: - description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' - example: Hauptlager - maxLength: 32 - type: - - 'null' - - string - end: - description: |- - The (inclusive) day at the end of which the period ends, as an ISO date string. Should - not be before "start". - example: '2022-01-08' - format: date - type: string - moveScheduleEntries: - default: true - description: |- - If the start date of the period is changing, moveScheduleEntries defines what happens with the schedule - entries in the period. - example: true - type: boolean - start: - description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' - example: '2022-01-01' - format: date - type: string - required: - - camp - - description - - end - - moveScheduleEntries - - start - type: object - Period.jsonld-read: - deprecated: false - description: |- - A time period in which the programme of a camp will take place. There may be multiple - periods in a camp, but they may not overlap. A period is made up of one or more full days. - properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept readOnly: true type: string - camp: - description: 'The camp that this time period belongs to. Cannot be changed once the period is created.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - contentNodes: - description: 'All the content nodes used in some activity which is carried out (has a schedule entry) in this period.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - dayResponsibles: - description: 'A link to all the DayResponsibles in this period.' - example: '["/day_responsibles/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - days: - description: 'The days in this time period. These are generated automatically.' - example: '["/days?period=/periods/1a2b3c4d"]' + data: + default: '{"items":[{"slot":"main"},{"slot":"aside-top"},{"slot":"aside-bottom"}]}' + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + items: + - + slot: aside-bottom + - + slot: aside-top + - + slot: main items: - example: 'https://example.com/' - format: iri-reference type: string - readOnly: true - type: array - description: - description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' - example: Hauptlager - maxLength: 32 type: + - array - 'null' - - string - end: - description: |- - The (inclusive) day at the end of which the period ends, as an ISO date string. Should - not be before "start". - example: '2022-01-08' - format: date - type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - materialItems: + instanceName: description: |- - Material items that are assigned directly to the period, as opposed to individual - activities. - example: '["/material_items/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - scheduleEntries: + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 + type: + - 'null' + - string + parent: description: |- - All time slots for programme that are part of this time period. A schedule entry - may span over multiple days, but may not end later than the period. - example: '["/schedule_entries/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. + example: /content_nodes/1a2b3c4d + format: iri-reference readOnly: true - type: array - start: - description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' - example: '2022-01-01' - format: date - type: string + type: + - 'null' + - string + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - camp - - days - - description - - end - - materialItems - - scheduleEntries - - start + - children + - contentType + - data + - position type: object - Period.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: + ResponsiveLayout.jsonld-write_create: deprecated: false description: '' properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d + format: iri-reference type: string - '@type': - readOnly: true - type: string - camp: - description: 'The camp that this time period belongs to. Cannot be changed once the period is created.' - example: /camps/1a2b3c4d - format: iri-reference - type: string - contentNodes: - description: 'All the content nodes used in some activity which is carried out (has a schedule entry) in this period.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - dayResponsibles: - description: 'A link to all the DayResponsibles in this period.' - example: '["/day_responsibles/1a2b3c4d"]' + data: + default: '{"items":[{"slot":"main"},{"slot":"aside-top"},{"slot":"aside-bottom"}]}' + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + items: + - + slot: aside-bottom + - + slot: aside-top + - + slot: main items: - example: 'https://example.com/' - format: iri-reference type: string - readOnly: true - type: array - days: - items: - $ref: '#/components/schemas/Day.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' - readOnly: true - type: array - description: - description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' - example: Hauptlager + type: + - array + - 'null' + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm maxLength: 32 type: - 'null' - string - end: + parent: description: |- - The (inclusive) day at the end of which the period ends, as an ISO date string. Should - not be before "start". - example: '2022-01-08' - format: date - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - materialItems: + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference + type: + - 'null' + - string + position: + default: -1 description: |- - Material items that are assigned directly to the period, as opposed to individual - activities. - example: '["/material_items/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - scheduleEntries: + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + slot: description: |- - All time slots for programme that are part of this time period. A schedule entry - may span over multiple days, but may not end later than the period. - example: '["/schedule_entries/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - start: - description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' - example: '2022-01-01' - format: date - type: string + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - camp - - days - - description - - end - - materialItems - - scheduleEntries - - start + - contentType + - data + - parent + - position type: object - Period.jsonld-read_Period.Camp_Period.Days: + ScheduleEntry-read: deprecated: false description: |- - A time period in which the programme of a camp will take place. There may be multiple - periods in a camp, but they may not overlap. A period is made up of one or more full days. + A calendar event in a period of the camp, at which some activity will take place. The start time + is specified as an offset in minutes from the period's start time. properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true + activity: + description: |- + The activity that will take place at the time defined by this schedule entry. Can not be changed + once the schedule entry is created. + example: /activities/1a2b3c4d + format: iri-reference type: string - camp: - anyOf: - - - $ref: '#/components/schemas/Camp.jsonld-read_Period.Camp_Period.Days' - - - type: 'null' - readOnly: true - contentNodes: - description: 'All the content nodes used in some activity which is carried out (has a schedule entry) in this period.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - dayResponsibles: - description: 'A link to all the DayResponsibles in this period.' - example: '["/day_responsibles/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - days: - items: - $ref: '#/components/schemas/Day.jsonld-read_Period.Camp_Period.Days' + day: + description: 'The day on which this schedule entry starts.' + example: /days/1a2b3c4d + format: iri-reference readOnly: true - type: array - description: - description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' - example: Hauptlager - maxLength: 32 type: - 'null' - string + dayNumber: + description: 'The day number of the day on which this schedule entry starts.' + example: '1' + readOnly: true + type: integer end: - description: |- - The (inclusive) day at the end of which the period ends, as an ISO date string. Should - not be before "start". - example: '2022-01-08' - format: date + description: 'End date and time of the schedule entry.' + example: '2022-01-02T01:30:00+00:00' + format: date-time type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d - maxLength: 16 readOnly: true type: string - materialItems: + left: description: |- - Material items that are assigned directly to the period, as opposed to individual - activities. - example: '["/material_items/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + When rendering a period in a calendar view: Specifies how far offset the rendered calendar event + should be from the left border of the day column, as a fractional amount of the width of the whole + day. This is useful to arrange multiple overlapping schedule entries such that all of them are + visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the + API currently does not enforce this. + example: 0.6 + type: + - 'null' + - number + number: + description: |- + Uniquely identifies this schedule entry in the period. This uses the day number, followed + by a period, followed by the cardinal number of the schedule entry in the numbering scheme + defined by the activity's category. + example: 1.b readOnly: true - type: array - scheduleEntries: + type: string + period: + description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' + example: /periods/1a2b3c4d + format: iri-reference + type: string + scheduleEntryNumber: description: |- - All time slots for programme that are part of this time period. A schedule entry - may span over multiple days, but may not end later than the period. - example: '["/schedule_entries/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + The cardinal number of this schedule entry, when chronologically ordering all + schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if + the schedule entry is the second entry with roman numbering on a given day, its + number will be 2. + example: '2' readOnly: true - type: array + type: integer start: - description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' - example: '2022-01-01' - format: date + description: 'Start date and time of the schedule entry.' + example: '2022-01-02T00:00:00+00:00' + format: date-time type: string + width: + default: 1 + description: |- + When rendering a period in a calendar view: Specifies how wide the rendered calendar event should + be, as a fractional amount of the width of the whole day. This is useful to arrange multiple + overlapping schedule entries such that all of them are visible. Should be a decimal number + between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. + example: 0.4 + type: + - 'null' + - number required: - - camp - - days - - description - end - - materialItems - - scheduleEntries - start type: object - Period.jsonld-write_create: + ScheduleEntry-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: deprecated: false - description: |- - A time period in which the programme of a camp will take place. There may be multiple - periods in a camp, but they may not overlap. A period is made up of one or more full days. + description: '' properties: - camp: - description: 'The camp that this time period belongs to. Cannot be changed once the period is created.' - example: /camps/1a2b3c4d + activity: + description: |- + The activity that will take place at the time defined by this schedule entry. Can not be changed + once the schedule entry is created. + example: /activities/1a2b3c4d format: iri-reference type: string - description: - description: 'A free text name for the period. Useful to distinguish multiple periods in the same camp.' - example: Hauptlager - maxLength: 32 + day: + description: 'The day on which this schedule entry starts.' + example: /days/1a2b3c4d + format: iri-reference + readOnly: true type: - 'null' - string + dayNumber: + description: 'The day number of the day on which this schedule entry starts.' + example: '1' + readOnly: true + type: integer end: + description: 'End date and time of the schedule entry.' + example: '2022-01-02T01:30:00+00:00' + format: date-time + type: string + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + left: description: |- - The (inclusive) day at the end of which the period ends, as an ISO date string. Should - not be before "start". - example: '2022-01-08' - format: date + When rendering a period in a calendar view: Specifies how far offset the rendered calendar event + should be from the left border of the day column, as a fractional amount of the width of the whole + day. This is useful to arrange multiple overlapping schedule entries such that all of them are + visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the + API currently does not enforce this. + example: 0.6 + type: + - 'null' + - number + number: + description: |- + Uniquely identifies this schedule entry in the period. This uses the day number, followed + by a period, followed by the cardinal number of the schedule entry in the numbering scheme + defined by the activity's category. + example: 1.b + readOnly: true type: string - moveScheduleEntries: - default: true + period: + description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' + example: /periods/1a2b3c4d + format: iri-reference + type: string + scheduleEntryNumber: description: |- - If the start date of the period is changing, moveScheduleEntries defines what happens with the schedule - entries in the period. - example: true - type: boolean + The cardinal number of this schedule entry, when chronologically ordering all + schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if + the schedule entry is the second entry with roman numbering on a given day, its + number will be 2. + example: '2' + readOnly: true + type: integer start: - description: 'The day on which the period starts, as an ISO date string. Should not be after "end".' - example: '2022-01-01' - format: date + description: 'Start date and time of the schedule entry.' + example: '2022-01-02T00:00:00+00:00' + format: date-time type: string + width: + default: 1 + description: |- + When rendering a period in a calendar view: Specifies how wide the rendered calendar event should + be, as a fractional amount of the width of the whole day. This is useful to arrange multiple + overlapping schedule entries such that all of them are visible. Should be a decimal number + between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. + example: 0.4 + type: + - 'null' + - number required: - - camp - - description + - activity - end - - moveScheduleEntries - start type: object - PersonalInvitation-read: + ScheduleEntry-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: deprecated: false - description: 'An invitation for a person who already has an account to collaborate in a camp.' + description: '' properties: - campId: + activity: description: |- - The id of the camp for which this invitation is valid. This is useful for - redirecting the user to the correct place after they accept. - example: 1a2b3c4d + The activity that will take place at the time defined by this schedule entry. Can not be changed + once the schedule entry is created. + example: /activities/1a2b3c4d + format: iri-reference type: string - campTitle: - description: |- - The full title of the camp for which this invitation is valid. This should help - the user to decide whether to accept or reject the invitation. - example: 'Abteilungs-Sommerlager 2022' + day: + description: 'The day on which this schedule entry starts.' + example: /days/1a2b3c4d + format: iri-reference + readOnly: true + type: + - 'null' + - string + dayNumber: + description: 'The day number of the day on which this schedule entry starts.' + example: '1' + readOnly: true + type: integer + end: + description: 'End date and time of the schedule entry.' + example: '2022-01-02T01:30:00+00:00' + format: date-time type: string id: + description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d + maxLength: 16 + readOnly: true type: string - type: object - PersonalInvitation-write: - deprecated: false - description: 'An invitation for a person who already has an account to collaborate in a camp.' - type: object - PersonalInvitation.jsonapi-read: - deprecated: false - description: 'An invitation for a person who already has an account to collaborate in a camp.' - properties: - campId: + left: description: |- - The id of the camp for which this invitation is valid. This is useful for - redirecting the user to the correct place after they accept. - example: 1a2b3c4d - type: string - campTitle: + When rendering a period in a calendar view: Specifies how far offset the rendered calendar event + should be from the left border of the day column, as a fractional amount of the width of the whole + day. This is useful to arrange multiple overlapping schedule entries such that all of them are + visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the + API currently does not enforce this. + example: 0.6 + type: + - 'null' + - number + number: description: |- - The full title of the camp for which this invitation is valid. This should help - the user to decide whether to accept or reject the invitation. - example: 'Abteilungs-Sommerlager 2022' + Uniquely identifies this schedule entry in the period. This uses the day number, followed + by a period, followed by the cardinal number of the schedule entry in the numbering scheme + defined by the activity's category. + example: 1.b + readOnly: true type: string - id: - example: 1a2b3c4d + period: + description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' + example: /periods/1a2b3c4d + format: iri-reference type: string - type: object - PersonalInvitation.jsonapi-write: - deprecated: false - description: 'An invitation for a person who already has an account to collaborate in a camp.' - type: object - PersonalInvitation.jsonhal-read: - deprecated: false - description: 'An invitation for a person who already has an account to collaborate in a camp.' - properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - campId: + scheduleEntryNumber: description: |- - The id of the camp for which this invitation is valid. This is useful for - redirecting the user to the correct place after they accept. - example: 1a2b3c4d + The cardinal number of this schedule entry, when chronologically ordering all + schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if + the schedule entry is the second entry with roman numbering on a given day, its + number will be 2. + example: '2' + readOnly: true + type: integer + start: + description: 'Start date and time of the schedule entry.' + example: '2022-01-02T00:00:00+00:00' + format: date-time type: string - campTitle: + width: + default: 1 description: |- - The full title of the camp for which this invitation is valid. This should help - the user to decide whether to accept or reject the invitation. - example: 'Abteilungs-Sommerlager 2022' - type: string - id: - example: 1a2b3c4d - type: string + When rendering a period in a calendar view: Specifies how wide the rendered calendar event should + be, as a fractional amount of the width of the whole day. This is useful to arrange multiple + overlapping schedule entries such that all of them are visible. Should be a decimal number + between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. + example: 0.4 + type: + - 'null' + - number + required: + - activity + - end + - start type: object - PersonalInvitation.jsonld-read: + ScheduleEntry-read_ScheduleEntry.Activity: deprecated: false - description: 'An invitation for a person who already has an account to collaborate in a camp.' + description: |- + A calendar event in a period of the camp, at which some activity will take place. The start time + is specified as an offset in minutes from the period's start time. properties: - '@context': - oneOf: + activity: + anyOf: - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object + $ref: '#/components/schemas/Activity-read_ScheduleEntry.Activity' - - type: string - readOnly: true - '@id': + type: 'null' readOnly: true - type: string - '@type': + day: + description: 'The day on which this schedule entry starts.' + example: /days/1a2b3c4d + format: iri-reference readOnly: true - type: string - campId: - description: |- - The id of the camp for which this invitation is valid. This is useful for - redirecting the user to the correct place after they accept. - example: 1a2b3c4d - type: string - campTitle: - description: |- - The full title of the camp for which this invitation is valid. This should help - the user to decide whether to accept or reject the invitation. - example: 'Abteilungs-Sommerlager 2022' - type: string - id: - example: 1a2b3c4d - type: string - type: object - Profile-read: - deprecated: false - description: |- - The profile of a person using eCamp. - The properties available to related eCamp users are here. - Related means that they were or are collaborators in the same camp. - properties: - email: - description: 'Unique email of the user.' - example: bi-pi@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 64 - type: string - firstname: - description: "The user's (optional) first name." - example: Robert - maxLength: 64 type: - 'null' - string + dayNumber: + description: 'The day number of the day on which this schedule entry starts.' + example: '1' + readOnly: true + type: integer + end: + description: 'End date and time of the schedule entry.' + example: '2022-01-02T01:30:00+00:00' + format: date-time + type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - language: - description: 'The optional preferred language of the user, as an ICU language code.' - enum: - - de - - de-CH-scout - - en - - en-CH-scout - - fr - - fr-CH-scout - - it - - it-CH-scout - - rm - - rm-CH-scout - example: en - maxLength: 20 + left: + description: |- + When rendering a period in a calendar view: Specifies how far offset the rendered calendar event + should be from the left border of the day column, as a fractional amount of the width of the whole + day. This is useful to arrange multiple overlapping schedule entries such that all of them are + visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the + API currently does not enforce this. + example: 0.6 type: - 'null' - - string - legalName: + - number + number: description: |- - The legal name of the user, for printing on legally relevant - documents. Falls back to the nickname if not complete. - example: 'Robert Baden-Powell' + Uniquely identifies this schedule entry in the period. This uses the day number, followed + by a period, followed by the cardinal number of the schedule entry in the numbering scheme + defined by the activity's category. + example: 1.b readOnly: true - type: - - 'null' - - string - nickname: - description: "The user's (optional) nickname or scout name." - example: Bi-Pi - maxLength: 32 - type: - - 'null' - - string - surname: - description: "The user's (optional) last name." - example: Baden-Powell - maxLength: 64 - type: - - 'null' - - string - user: - example: /users/1a2b3c4d + type: string + period: + description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' + example: /periods/1a2b3c4d format: iri-reference + type: string + scheduleEntryNumber: + description: |- + The cardinal number of this schedule entry, when chronologically ordering all + schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if + the schedule entry is the second entry with roman numbering on a given day, its + number will be 2. + example: '2' readOnly: true + type: integer + start: + description: 'Start date and time of the schedule entry.' + example: '2022-01-02T00:00:00+00:00' + format: date-time + type: string + width: + default: 1 + description: |- + When rendering a period in a calendar view: Specifies how wide the rendered calendar event should + be, as a fractional amount of the width of the whole day. This is useful to arrange multiple + overlapping schedule entries such that all of them are visible. Should be a decimal number + between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. + example: 0.4 type: - 'null' - - string + - number required: - - email + - activity + - end + - start type: object - Profile-read_User.create: + ScheduleEntry-write: deprecated: false - description: '' + description: |- + A calendar event in a period of the camp, at which some activity will take place. The start time + is specified as an offset in minutes from the period's start time. properties: - email: - description: 'Unique email of the user.' - example: bi-pi@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 64 - type: string - firstname: - description: "The user's (optional) first name." - example: Robert - maxLength: 64 - type: - - 'null' - - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true + end: + description: 'End date and time of the schedule entry.' + example: '2022-01-02T01:30:00+00:00' + format: date-time type: string - language: - description: 'The optional preferred language of the user, as an ICU language code.' - enum: - - de - - de-CH-scout - - en - - en-CH-scout - - fr - - fr-CH-scout - - it - - it-CH-scout - - rm - - rm-CH-scout - example: en - maxLength: 20 - type: - - 'null' - - string - legalName: + left: description: |- - The legal name of the user, for printing on legally relevant - documents. Falls back to the nickname if not complete. - example: 'Robert Baden-Powell' - readOnly: true - type: - - 'null' - - string - nickname: - description: "The user's (optional) nickname or scout name." - example: Bi-Pi - maxLength: 32 - type: - - 'null' - - string - surname: - description: "The user's (optional) last name." - example: Baden-Powell - maxLength: 64 + When rendering a period in a calendar view: Specifies how far offset the rendered calendar event + should be from the left border of the day column, as a fractional amount of the width of the whole + day. This is useful to arrange multiple overlapping schedule entries such that all of them are + visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the + API currently does not enforce this. + example: 0.6 type: - 'null' - - string - user: - example: /users/1a2b3c4d + - number + period: + description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' + example: /periods/1a2b3c4d format: iri-reference - readOnly: true + type: string + start: + description: 'Start date and time of the schedule entry.' + example: '2022-01-02T00:00:00+00:00' + format: date-time + type: string + width: + default: 1 + description: |- + When rendering a period in a calendar view: Specifies how wide the rendered calendar event should + be, as a fractional amount of the width of the whole day. This is useful to arrange multiple + overlapping schedule entries such that all of them are visible. Should be a decimal number + between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. + example: 0.4 type: - 'null' - - string + - number required: - - email + - end + - start type: object - Profile-write_create: + ScheduleEntry-write_create: deprecated: false description: |- - The profile of a person using eCamp. - The properties available to related eCamp users are here. - Related means that they were or are collaborators in the same camp. + A calendar event in a period of the camp, at which some activity will take place. The start time + is specified as an offset in minutes from the period's start time. properties: - email: - description: 'Unique email of the user.' - example: bi-pi@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 64 + activity: + description: |- + The activity that will take place at the time defined by this schedule entry. Can not be changed + once the schedule entry is created. + example: /activities/1a2b3c4d + format: iri-reference type: string - firstname: - description: "The user's (optional) first name." - example: Robert - maxLength: 64 - type: - - 'null' - - string - language: - description: 'The optional preferred language of the user, as an ICU language code.' - enum: - - de - - de-CH-scout - - en - - en-CH-scout - - fr - - fr-CH-scout - - it - - it-CH-scout - - rm - - rm-CH-scout - example: en - maxLength: 20 - type: - - 'null' - - string - newEmail: - description: 'New email.' - example: bi-pi@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - type: - - 'null' - - string - nickname: - description: "The user's (optional) nickname or scout name." - example: Bi-Pi - maxLength: 32 + end: + description: 'End date and time of the schedule entry.' + example: '2022-01-02T01:30:00+00:00' + format: date-time + type: string + left: + description: |- + When rendering a period in a calendar view: Specifies how far offset the rendered calendar event + should be from the left border of the day column, as a fractional amount of the width of the whole + day. This is useful to arrange multiple overlapping schedule entries such that all of them are + visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the + API currently does not enforce this. + example: 0.6 type: - 'null' - - string - surname: - description: "The user's (optional) last name." - example: Baden-Powell - maxLength: 64 + - number + period: + description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' + example: /periods/1a2b3c4d + format: iri-reference + type: string + start: + description: 'Start date and time of the schedule entry.' + example: '2022-01-02T00:00:00+00:00' + format: date-time + type: string + width: + default: 1 + description: |- + When rendering a period in a calendar view: Specifies how wide the rendered calendar event should + be, as a fractional amount of the width of the whole day. This is useful to arrange multiple + overlapping schedule entries such that all of them are visible. Should be a decimal number + between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. + example: 0.4 type: - 'null' - - string + - number required: - - email + - activity + - end + - start type: object - Profile-write_update: + ScheduleEntry.jsonapi: deprecated: false description: |- - The profile of a person using eCamp. - The properties available to related eCamp users are here. - Related means that they were or are collaborators in the same camp. + A calendar event in a period of the camp, at which some activity will take place. The start time + is specified as an offset in minutes from the period's start time. properties: - firstname: - description: "The user's (optional) first name." - example: Robert - maxLength: 64 - type: - - 'null' - - string - language: - description: 'The optional preferred language of the user, as an ICU language code.' - enum: - - de - - de-CH-scout - - en - - en-CH-scout - - fr - - fr-CH-scout - - it - - it-CH-scout - - rm - - rm-CH-scout - example: en - maxLength: 20 - type: - - 'null' - - string - newEmail: - description: 'New email.' - example: bi-pi@example.com + data: + properties: + attributes: + properties: + _id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + dayNumber: + description: 'The day number of the day on which this schedule entry starts.' + example: '1' + readOnly: true + type: integer + end: + description: 'End date and time of the schedule entry.' + example: '2022-01-02T01:30:00+00:00' + format: date-time + type: string + left: + description: |- + When rendering a period in a calendar view: Specifies how far offset the rendered calendar event + should be from the left border of the day column, as a fractional amount of the width of the whole + day. This is useful to arrange multiple overlapping schedule entries such that all of them are + visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the + API currently does not enforce this. + example: 0.6 + type: ['null', number] + number: + description: |- + Uniquely identifies this schedule entry in the period. This uses the day number, followed + by a period, followed by the cardinal number of the schedule entry in the numbering scheme + defined by the activity's category. + example: 1.b + readOnly: true + type: string + scheduleEntryNumber: + description: |- + The cardinal number of this schedule entry, when chronologically ordering all + schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if + the schedule entry is the second entry with roman numbering on a given day, its + number will be 2. + example: '2' + readOnly: true + type: integer + start: + description: 'Start date and time of the schedule entry.' + example: '2022-01-02T00:00:00+00:00' + format: date-time + type: string + width: + default: 1 + description: |- + When rendering a period in a calendar view: Specifies how wide the rendered calendar event should + be, as a fractional amount of the width of the whole day. This is useful to arrange multiple + overlapping schedule entries such that all of them are visible. Should be a decimal number + between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. + example: 0.4 + type: ['null', number] + required: + - end + - start + type: object + id: + type: string + relationships: + properties: + activity: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + day: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + period: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + required: + - activity + type: object + type: + type: string + required: + - id + - type + type: object + included: + description: 'Related resources requested via the "include" query parameter.' externalDocs: - url: 'https://schema.org/email' - format: email - type: - - 'null' - - string - nickname: - description: "The user's (optional) nickname or scout name." - example: Bi-Pi - maxLength: 32 - type: - - 'null' - - string - surname: - description: "The user's (optional) last name." - example: Baden-Powell - maxLength: 64 - type: - - 'null' - - string - untrustedEmailKey: - description: 'User input for email verification.' - type: - - 'null' - - string - writeOnly: true + url: 'https://jsonapi.org/format/#fetching-includes' + items: + anyOf: + - + $ref: '#/components/schemas/Period.jsonapi' + - + $ref: '#/components/schemas/Period.jsonapi' + - + $ref: '#/components/schemas/Period.jsonapi' + readOnly: true + type: array type: object - Profile.jsonapi-read: + ScheduleEntry.jsonhal-read: deprecated: false description: |- - The profile of a person using eCamp. - The properties available to related eCamp users are here. - Related means that they were or are collaborators in the same camp. + A calendar event in a period of the camp, at which some activity will take place. The start time + is specified as an offset in minutes from the period's start time. properties: - email: - description: 'Unique email of the user.' - example: bi-pi@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 64 + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + activity: + description: |- + The activity that will take place at the time defined by this schedule entry. Can not be changed + once the schedule entry is created. + example: /activities/1a2b3c4d + format: iri-reference type: string - firstname: - description: "The user's (optional) first name." - example: Robert - maxLength: 64 + day: + description: 'The day on which this schedule entry starts.' + example: /days/1a2b3c4d + format: iri-reference + readOnly: true type: - 'null' - string + dayNumber: + description: 'The day number of the day on which this schedule entry starts.' + example: '1' + readOnly: true + type: integer + end: + description: 'End date and time of the schedule entry.' + example: '2022-01-02T01:30:00+00:00' + format: date-time + type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d - maxLength: 16 readOnly: true type: string - language: - description: 'The optional preferred language of the user, as an ICU language code.' - enum: - - de - - de-CH-scout - - en - - en-CH-scout - - fr - - fr-CH-scout - - it - - it-CH-scout - - rm - - rm-CH-scout - example: en - maxLength: 20 + left: + description: |- + When rendering a period in a calendar view: Specifies how far offset the rendered calendar event + should be from the left border of the day column, as a fractional amount of the width of the whole + day. This is useful to arrange multiple overlapping schedule entries such that all of them are + visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the + API currently does not enforce this. + example: 0.6 type: - 'null' - - string - legalName: + - number + number: description: |- - The legal name of the user, for printing on legally relevant - documents. Falls back to the nickname if not complete. - example: 'Robert Baden-Powell' + Uniquely identifies this schedule entry in the period. This uses the day number, followed + by a period, followed by the cardinal number of the schedule entry in the numbering scheme + defined by the activity's category. + example: 1.b readOnly: true - type: - - 'null' - - string - nickname: - description: "The user's (optional) nickname or scout name." - example: Bi-Pi - maxLength: 32 - type: - - 'null' - - string - surname: - description: "The user's (optional) last name." - example: Baden-Powell - maxLength: 64 - type: - - 'null' - - string - user: - example: /users/1a2b3c4d + type: string + period: + description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' + example: /periods/1a2b3c4d format: iri-reference + type: string + scheduleEntryNumber: + description: |- + The cardinal number of this schedule entry, when chronologically ordering all + schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if + the schedule entry is the second entry with roman numbering on a given day, its + number will be 2. + example: '2' readOnly: true + type: integer + start: + description: 'Start date and time of the schedule entry.' + example: '2022-01-02T00:00:00+00:00' + format: date-time + type: string + width: + default: 1 + description: |- + When rendering a period in a calendar view: Specifies how wide the rendered calendar event should + be, as a fractional amount of the width of the whole day. This is useful to arrange multiple + overlapping schedule entries such that all of them are visible. Should be a decimal number + between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. + example: 0.4 type: - 'null' - - string + - number required: - - email + - end + - start type: object - Profile.jsonapi-read_User.create: + ScheduleEntry.jsonhal-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: deprecated: false description: '' properties: - email: - description: 'Unique email of the user.' - example: bi-pi@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 64 + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + activity: + description: |- + The activity that will take place at the time defined by this schedule entry. Can not be changed + once the schedule entry is created. + example: /activities/1a2b3c4d + format: iri-reference type: string - firstname: - description: "The user's (optional) first name." - example: Robert - maxLength: 64 + day: + description: 'The day on which this schedule entry starts.' + example: /days/1a2b3c4d + format: iri-reference + readOnly: true type: - 'null' - string + dayNumber: + description: 'The day number of the day on which this schedule entry starts.' + example: '1' + readOnly: true + type: integer + end: + description: 'End date and time of the schedule entry.' + example: '2022-01-02T01:30:00+00:00' + format: date-time + type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - language: - description: 'The optional preferred language of the user, as an ICU language code.' - enum: - - de - - de-CH-scout - - en - - en-CH-scout - - fr - - fr-CH-scout - - it - - it-CH-scout - - rm - - rm-CH-scout - example: en - maxLength: 20 + left: + description: |- + When rendering a period in a calendar view: Specifies how far offset the rendered calendar event + should be from the left border of the day column, as a fractional amount of the width of the whole + day. This is useful to arrange multiple overlapping schedule entries such that all of them are + visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the + API currently does not enforce this. + example: 0.6 type: - 'null' - - string - legalName: + - number + number: description: |- - The legal name of the user, for printing on legally relevant - documents. Falls back to the nickname if not complete. - example: 'Robert Baden-Powell' + Uniquely identifies this schedule entry in the period. This uses the day number, followed + by a period, followed by the cardinal number of the schedule entry in the numbering scheme + defined by the activity's category. + example: 1.b readOnly: true - type: - - 'null' - - string - nickname: - description: "The user's (optional) nickname or scout name." - example: Bi-Pi - maxLength: 32 - type: - - 'null' - - string - surname: - description: "The user's (optional) last name." - example: Baden-Powell - maxLength: 64 - type: - - 'null' - - string - user: - example: /users/1a2b3c4d + type: string + period: + description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' + example: /periods/1a2b3c4d format: iri-reference + type: string + scheduleEntryNumber: + description: |- + The cardinal number of this schedule entry, when chronologically ordering all + schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if + the schedule entry is the second entry with roman numbering on a given day, its + number will be 2. + example: '2' readOnly: true + type: integer + start: + description: 'Start date and time of the schedule entry.' + example: '2022-01-02T00:00:00+00:00' + format: date-time + type: string + width: + default: 1 + description: |- + When rendering a period in a calendar view: Specifies how wide the rendered calendar event should + be, as a fractional amount of the width of the whole day. This is useful to arrange multiple + overlapping schedule entries such that all of them are visible. Should be a decimal number + between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. + example: 0.4 type: - 'null' - - string + - number required: - - email + - activity + - end + - start type: object - Profile.jsonapi-write_create: + ScheduleEntry.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: deprecated: false - description: |- - The profile of a person using eCamp. - The properties available to related eCamp users are here. - Related means that they were or are collaborators in the same camp. + description: '' properties: - email: - description: 'Unique email of the user.' - example: bi-pi@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 64 + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + activity: + description: |- + The activity that will take place at the time defined by this schedule entry. Can not be changed + once the schedule entry is created. + example: /activities/1a2b3c4d + format: iri-reference type: string - firstname: - description: "The user's (optional) first name." - example: Robert - maxLength: 64 - type: - - 'null' - - string - language: - description: 'The optional preferred language of the user, as an ICU language code.' - enum: - - de - - de-CH-scout - - en - - en-CH-scout - - fr - - fr-CH-scout - - it - - it-CH-scout - - rm - - rm-CH-scout - example: en - maxLength: 20 - type: - - 'null' - - string - newEmail: - description: 'New email.' - example: bi-pi@example.com - externalDocs: - url: 'https://schema.org/email' - format: email + day: + description: 'The day on which this schedule entry starts.' + example: /days/1a2b3c4d + format: iri-reference + readOnly: true type: - 'null' - string - nickname: - description: "The user's (optional) nickname or scout name." - example: Bi-Pi - maxLength: 32 - type: - - 'null' - - string - surname: - description: "The user's (optional) last name." - example: Baden-Powell - maxLength: 64 - type: - - 'null' - - string - required: - - email - type: object - Profile.jsonapi-write_update: - deprecated: false - description: |- - The profile of a person using eCamp. - The properties available to related eCamp users are here. - Related means that they were or are collaborators in the same camp. - properties: - firstname: - description: "The user's (optional) first name." - example: Robert - maxLength: 64 - type: - - 'null' - - string - language: - description: 'The optional preferred language of the user, as an ICU language code.' - enum: - - de - - de-CH-scout - - en - - en-CH-scout - - fr - - fr-CH-scout - - it - - it-CH-scout - - rm - - rm-CH-scout - example: en - maxLength: 20 - type: - - 'null' - - string - newEmail: - description: 'New email.' - example: bi-pi@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - type: - - 'null' - - string - nickname: - description: "The user's (optional) nickname or scout name." - example: Bi-Pi - maxLength: 32 - type: - - 'null' - - string - surname: - description: "The user's (optional) last name." - example: Baden-Powell - maxLength: 64 - type: - - 'null' - - string - untrustedEmailKey: - description: 'User input for email verification.' - type: - - 'null' - - string - writeOnly: true - type: object - Profile.jsonhal-read: - deprecated: false - description: |- - The profile of a person using eCamp. - The properties available to related eCamp users are here. - Related means that they were or are collaborators in the same camp. - properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - email: - description: 'Unique email of the user.' - example: bi-pi@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 64 + dayNumber: + description: 'The day number of the day on which this schedule entry starts.' + example: '1' + readOnly: true + type: integer + end: + description: 'End date and time of the schedule entry.' + example: '2022-01-02T01:30:00+00:00' + format: date-time type: string - firstname: - description: "The user's (optional) first name." - example: Robert - maxLength: 64 - type: - - 'null' - - string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - language: - description: 'The optional preferred language of the user, as an ICU language code.' - enum: - - de - - de-CH-scout - - en - - en-CH-scout - - fr - - fr-CH-scout - - it - - it-CH-scout - - rm - - rm-CH-scout - example: en - maxLength: 20 + left: + description: |- + When rendering a period in a calendar view: Specifies how far offset the rendered calendar event + should be from the left border of the day column, as a fractional amount of the width of the whole + day. This is useful to arrange multiple overlapping schedule entries such that all of them are + visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the + API currently does not enforce this. + example: 0.6 type: - 'null' - - string - legalName: + - number + number: description: |- - The legal name of the user, for printing on legally relevant - documents. Falls back to the nickname if not complete. - example: 'Robert Baden-Powell' + Uniquely identifies this schedule entry in the period. This uses the day number, followed + by a period, followed by the cardinal number of the schedule entry in the numbering scheme + defined by the activity's category. + example: 1.b readOnly: true - type: - - 'null' - - string - nickname: - description: "The user's (optional) nickname or scout name." - example: Bi-Pi - maxLength: 32 - type: - - 'null' - - string - surname: - description: "The user's (optional) last name." - example: Baden-Powell - maxLength: 64 - type: - - 'null' - - string - user: - example: /users/1a2b3c4d + type: string + period: + description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' + example: /periods/1a2b3c4d format: iri-reference + type: string + scheduleEntryNumber: + description: |- + The cardinal number of this schedule entry, when chronologically ordering all + schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if + the schedule entry is the second entry with roman numbering on a given day, its + number will be 2. + example: '2' readOnly: true + type: integer + start: + description: 'Start date and time of the schedule entry.' + example: '2022-01-02T00:00:00+00:00' + format: date-time + type: string + width: + default: 1 + description: |- + When rendering a period in a calendar view: Specifies how wide the rendered calendar event should + be, as a fractional amount of the width of the whole day. This is useful to arrange multiple + overlapping schedule entries such that all of them are visible. Should be a decimal number + between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. + example: 0.4 type: - 'null' - - string + - number required: - - email + - activity + - end + - start type: object - Profile.jsonhal-read_User.create: + ScheduleEntry.jsonhal-read_ScheduleEntry.Activity: deprecated: false - description: '' + description: |- + A calendar event in a period of the camp, at which some activity will take place. The start time + is specified as an offset in minutes from the period's start time. properties: _links: properties: @@ -19228,84 +18176,96 @@ components: type: string type: object type: object - email: - description: 'Unique email of the user.' - example: bi-pi@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 64 - type: string - firstname: - description: "The user's (optional) first name." - example: Robert - maxLength: 64 + activity: + anyOf: + - + $ref: '#/components/schemas/Activity.jsonhal-read_ScheduleEntry.Activity' + - + type: 'null' + readOnly: true + day: + description: 'The day on which this schedule entry starts.' + example: /days/1a2b3c4d + format: iri-reference + readOnly: true type: - 'null' - string + dayNumber: + description: 'The day number of the day on which this schedule entry starts.' + example: '1' + readOnly: true + type: integer + end: + description: 'End date and time of the schedule entry.' + example: '2022-01-02T01:30:00+00:00' + format: date-time + type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - language: - description: 'The optional preferred language of the user, as an ICU language code.' - enum: - - de - - de-CH-scout - - en - - en-CH-scout - - fr - - fr-CH-scout - - it - - it-CH-scout - - rm - - rm-CH-scout - example: en - maxLength: 20 - type: - - 'null' - - string - legalName: + left: description: |- - The legal name of the user, for printing on legally relevant - documents. Falls back to the nickname if not complete. - example: 'Robert Baden-Powell' - readOnly: true - type: - - 'null' - - string - nickname: - description: "The user's (optional) nickname or scout name." - example: Bi-Pi - maxLength: 32 - type: - - 'null' - - string - surname: - description: "The user's (optional) last name." - example: Baden-Powell - maxLength: 64 + When rendering a period in a calendar view: Specifies how far offset the rendered calendar event + should be from the left border of the day column, as a fractional amount of the width of the whole + day. This is useful to arrange multiple overlapping schedule entries such that all of them are + visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the + API currently does not enforce this. + example: 0.6 type: - 'null' - - string - user: - example: /users/1a2b3c4d + - number + number: + description: |- + Uniquely identifies this schedule entry in the period. This uses the day number, followed + by a period, followed by the cardinal number of the schedule entry in the numbering scheme + defined by the activity's category. + example: 1.b + readOnly: true + type: string + period: + description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' + example: /periods/1a2b3c4d format: iri-reference + type: string + scheduleEntryNumber: + description: |- + The cardinal number of this schedule entry, when chronologically ordering all + schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if + the schedule entry is the second entry with roman numbering on a given day, its + number will be 2. + example: '2' readOnly: true + type: integer + start: + description: 'Start date and time of the schedule entry.' + example: '2022-01-02T00:00:00+00:00' + format: date-time + type: string + width: + default: 1 + description: |- + When rendering a period in a calendar view: Specifies how wide the rendered calendar event should + be, as a fractional amount of the width of the whole day. This is useful to arrange multiple + overlapping schedule entries such that all of them are visible. Should be a decimal number + between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. + example: 0.4 type: - 'null' - - string + - number required: - - email + - activity + - end + - start type: object - Profile.jsonhal-write_create: + ScheduleEntry.jsonhal-write_create: deprecated: false description: |- - The profile of a person using eCamp. - The properties available to related eCamp users are here. - Related means that they were or are collaborators in the same camp. + A calendar event in a period of the camp, at which some activity will take place. The start time + is specified as an offset in minutes from the period's start time. properties: _links: properties: @@ -19316,71 +18276,60 @@ components: type: string type: object type: object - email: - description: 'Unique email of the user.' - example: bi-pi@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 64 + activity: + description: |- + The activity that will take place at the time defined by this schedule entry. Can not be changed + once the schedule entry is created. + example: /activities/1a2b3c4d + format: iri-reference type: string - firstname: - description: "The user's (optional) first name." - example: Robert - maxLength: 64 - type: - - 'null' - - string - language: - description: 'The optional preferred language of the user, as an ICU language code.' - enum: - - de - - de-CH-scout - - en - - en-CH-scout - - fr - - fr-CH-scout - - it - - it-CH-scout - - rm - - rm-CH-scout - example: en - maxLength: 20 - type: - - 'null' - - string - newEmail: - description: 'New email.' - example: bi-pi@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - type: - - 'null' - - string - nickname: - description: "The user's (optional) nickname or scout name." - example: Bi-Pi - maxLength: 32 + end: + description: 'End date and time of the schedule entry.' + example: '2022-01-02T01:30:00+00:00' + format: date-time + type: string + left: + description: |- + When rendering a period in a calendar view: Specifies how far offset the rendered calendar event + should be from the left border of the day column, as a fractional amount of the width of the whole + day. This is useful to arrange multiple overlapping schedule entries such that all of them are + visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the + API currently does not enforce this. + example: 0.6 type: - 'null' - - string - surname: - description: "The user's (optional) last name." - example: Baden-Powell - maxLength: 64 + - number + period: + description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' + example: /periods/1a2b3c4d + format: iri-reference + type: string + start: + description: 'Start date and time of the schedule entry.' + example: '2022-01-02T00:00:00+00:00' + format: date-time + type: string + width: + default: 1 + description: |- + When rendering a period in a calendar view: Specifies how wide the rendered calendar event should + be, as a fractional amount of the width of the whole day. This is useful to arrange multiple + overlapping schedule entries such that all of them are visible. Should be a decimal number + between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. + example: 0.4 type: - 'null' - - string + - number required: - - email + - activity + - end + - start type: object - Profile.jsonld-read: + ScheduleEntry.jsonld-read: deprecated: false description: |- - The profile of a person using eCamp. - The properties available to related eCamp users are here. - Related means that they were or are collaborators in the same camp. + A calendar event in a period of the camp, at which some activity will take place. The start time + is specified as an offset in minutes from the period's start time. properties: '@context': oneOf: @@ -19405,79 +18354,90 @@ components: '@type': readOnly: true type: string - email: - description: 'Unique email of the user.' - example: bi-pi@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 64 + activity: + description: |- + The activity that will take place at the time defined by this schedule entry. Can not be changed + once the schedule entry is created. + example: /activities/1a2b3c4d + format: iri-reference type: string - firstname: - description: "The user's (optional) first name." - example: Robert - maxLength: 64 + day: + description: 'The day on which this schedule entry starts.' + example: /days/1a2b3c4d + format: iri-reference + readOnly: true type: - 'null' - string + dayNumber: + description: 'The day number of the day on which this schedule entry starts.' + example: '1' + readOnly: true + type: integer + end: + description: 'End date and time of the schedule entry.' + example: '2022-01-02T01:30:00+00:00' + format: date-time + type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d - maxLength: 16 readOnly: true type: string - language: - description: 'The optional preferred language of the user, as an ICU language code.' - enum: - - de - - de-CH-scout - - en - - en-CH-scout - - fr - - fr-CH-scout - - it - - it-CH-scout - - rm - - rm-CH-scout - example: en - maxLength: 20 + left: + description: |- + When rendering a period in a calendar view: Specifies how far offset the rendered calendar event + should be from the left border of the day column, as a fractional amount of the width of the whole + day. This is useful to arrange multiple overlapping schedule entries such that all of them are + visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the + API currently does not enforce this. + example: 0.6 type: - 'null' - - string - legalName: + - number + number: description: |- - The legal name of the user, for printing on legally relevant - documents. Falls back to the nickname if not complete. - example: 'Robert Baden-Powell' + Uniquely identifies this schedule entry in the period. This uses the day number, followed + by a period, followed by the cardinal number of the schedule entry in the numbering scheme + defined by the activity's category. + example: 1.b readOnly: true - type: - - 'null' - - string - nickname: - description: "The user's (optional) nickname or scout name." - example: Bi-Pi - maxLength: 32 - type: - - 'null' - - string - surname: - description: "The user's (optional) last name." - example: Baden-Powell - maxLength: 64 - type: - - 'null' - - string - user: - example: /users/1a2b3c4d + type: string + period: + description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' + example: /periods/1a2b3c4d format: iri-reference + type: string + scheduleEntryNumber: + description: |- + The cardinal number of this schedule entry, when chronologically ordering all + schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if + the schedule entry is the second entry with roman numbering on a given day, its + number will be 2. + example: '2' readOnly: true + type: integer + start: + description: 'Start date and time of the schedule entry.' + example: '2022-01-02T00:00:00+00:00' + format: date-time + type: string + width: + default: 1 + description: |- + When rendering a period in a calendar view: Specifies how wide the rendered calendar event should + be, as a fractional amount of the width of the whole day. This is useful to arrange multiple + overlapping schedule entries such that all of them are visible. Should be a decimal number + between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. + example: 0.4 type: - 'null' - - string + - number required: - - email + - end + - start type: object - Profile.jsonld-read_User.create: + ScheduleEntry.jsonld-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: deprecated: false description: '' properties: @@ -19504,261 +18464,684 @@ components: '@type': readOnly: true type: string - email: - description: 'Unique email of the user.' - example: bi-pi@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 64 + activity: + description: |- + The activity that will take place at the time defined by this schedule entry. Can not be changed + once the schedule entry is created. + example: /activities/1a2b3c4d + format: iri-reference type: string - firstname: - description: "The user's (optional) first name." - example: Robert - maxLength: 64 + day: + description: 'The day on which this schedule entry starts.' + example: /days/1a2b3c4d + format: iri-reference + readOnly: true type: - 'null' - string + dayNumber: + description: 'The day number of the day on which this schedule entry starts.' + example: '1' + readOnly: true + type: integer + end: + description: 'End date and time of the schedule entry.' + example: '2022-01-02T01:30:00+00:00' + format: date-time + type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - language: - description: 'The optional preferred language of the user, as an ICU language code.' - enum: - - de - - de-CH-scout - - en - - en-CH-scout - - fr - - fr-CH-scout - - it - - it-CH-scout - - rm - - rm-CH-scout - example: en - maxLength: 20 + left: + description: |- + When rendering a period in a calendar view: Specifies how far offset the rendered calendar event + should be from the left border of the day column, as a fractional amount of the width of the whole + day. This is useful to arrange multiple overlapping schedule entries such that all of them are + visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the + API currently does not enforce this. + example: 0.6 type: - 'null' - - string - legalName: + - number + number: description: |- - The legal name of the user, for printing on legally relevant - documents. Falls back to the nickname if not complete. - example: 'Robert Baden-Powell' + Uniquely identifies this schedule entry in the period. This uses the day number, followed + by a period, followed by the cardinal number of the schedule entry in the numbering scheme + defined by the activity's category. + example: 1.b + readOnly: true + type: string + period: + description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' + example: /periods/1a2b3c4d + format: iri-reference + type: string + scheduleEntryNumber: + description: |- + The cardinal number of this schedule entry, when chronologically ordering all + schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if + the schedule entry is the second entry with roman numbering on a given day, its + number will be 2. + example: '2' readOnly: true + type: integer + start: + description: 'Start date and time of the schedule entry.' + example: '2022-01-02T00:00:00+00:00' + format: date-time + type: string + width: + default: 1 + description: |- + When rendering a period in a calendar view: Specifies how wide the rendered calendar event should + be, as a fractional amount of the width of the whole day. This is useful to arrange multiple + overlapping schedule entries such that all of them are visible. Should be a decimal number + between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. + example: 0.4 type: - 'null' - - string - nickname: - description: "The user's (optional) nickname or scout name." - example: Bi-Pi - maxLength: 32 + - number + required: + - activity + - end + - start + type: object + ScheduleEntry.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + deprecated: false + description: '' + properties: + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string + readOnly: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + activity: + description: |- + The activity that will take place at the time defined by this schedule entry. Can not be changed + once the schedule entry is created. + example: /activities/1a2b3c4d + format: iri-reference + type: string + day: + description: 'The day on which this schedule entry starts.' + example: /days/1a2b3c4d + format: iri-reference + readOnly: true type: - 'null' - string - surname: - description: "The user's (optional) last name." - example: Baden-Powell - maxLength: 64 + dayNumber: + description: 'The day number of the day on which this schedule entry starts.' + example: '1' + readOnly: true + type: integer + end: + description: 'End date and time of the schedule entry.' + example: '2022-01-02T01:30:00+00:00' + format: date-time + type: string + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + left: + description: |- + When rendering a period in a calendar view: Specifies how far offset the rendered calendar event + should be from the left border of the day column, as a fractional amount of the width of the whole + day. This is useful to arrange multiple overlapping schedule entries such that all of them are + visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the + API currently does not enforce this. + example: 0.6 type: - 'null' - - string - user: - example: /users/1a2b3c4d + - number + number: + description: |- + Uniquely identifies this schedule entry in the period. This uses the day number, followed + by a period, followed by the cardinal number of the schedule entry in the numbering scheme + defined by the activity's category. + example: 1.b + readOnly: true + type: string + period: + description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' + example: /periods/1a2b3c4d format: iri-reference + type: string + scheduleEntryNumber: + description: |- + The cardinal number of this schedule entry, when chronologically ordering all + schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if + the schedule entry is the second entry with roman numbering on a given day, its + number will be 2. + example: '2' readOnly: true + type: integer + start: + description: 'Start date and time of the schedule entry.' + example: '2022-01-02T00:00:00+00:00' + format: date-time + type: string + width: + default: 1 + description: |- + When rendering a period in a calendar view: Specifies how wide the rendered calendar event should + be, as a fractional amount of the width of the whole day. This is useful to arrange multiple + overlapping schedule entries such that all of them are visible. Should be a decimal number + between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. + example: 0.4 type: - 'null' - - string + - number required: - - email + - activity + - end + - start type: object - Profile.jsonld-write_create: + ScheduleEntry.jsonld-read_ScheduleEntry.Activity: deprecated: false description: |- - The profile of a person using eCamp. - The properties available to related eCamp users are here. - Related means that they were or are collaborators in the same camp. + A calendar event in a period of the camp, at which some activity will take place. The start time + is specified as an offset in minutes from the period's start time. properties: - email: - description: 'Unique email of the user.' - example: bi-pi@example.com - externalDocs: - url: 'https://schema.org/email' - format: email - maxLength: 64 + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string + readOnly: true + '@id': + readOnly: true type: string - firstname: - description: "The user's (optional) first name." - example: Robert - maxLength: 64 + '@type': + readOnly: true + type: string + activity: + anyOf: + - + $ref: '#/components/schemas/Activity.jsonld-read_ScheduleEntry.Activity' + - + type: 'null' + readOnly: true + day: + description: 'The day on which this schedule entry starts.' + example: /days/1a2b3c4d + format: iri-reference + readOnly: true type: - 'null' - string - language: - description: 'The optional preferred language of the user, as an ICU language code.' - enum: - - de - - de-CH-scout - - en - - en-CH-scout - - fr - - fr-CH-scout - - it - - it-CH-scout - - rm - - rm-CH-scout - example: en - maxLength: 20 + dayNumber: + description: 'The day number of the day on which this schedule entry starts.' + example: '1' + readOnly: true + type: integer + end: + description: 'End date and time of the schedule entry.' + example: '2022-01-02T01:30:00+00:00' + format: date-time + type: string + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + left: + description: |- + When rendering a period in a calendar view: Specifies how far offset the rendered calendar event + should be from the left border of the day column, as a fractional amount of the width of the whole + day. This is useful to arrange multiple overlapping schedule entries such that all of them are + visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the + API currently does not enforce this. + example: 0.6 type: - 'null' - - string - newEmail: - description: 'New email.' - example: bi-pi@example.com - externalDocs: - url: 'https://schema.org/email' - format: email + - number + number: + description: |- + Uniquely identifies this schedule entry in the period. This uses the day number, followed + by a period, followed by the cardinal number of the schedule entry in the numbering scheme + defined by the activity's category. + example: 1.b + readOnly: true + type: string + period: + description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' + example: /periods/1a2b3c4d + format: iri-reference + type: string + scheduleEntryNumber: + description: |- + The cardinal number of this schedule entry, when chronologically ordering all + schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if + the schedule entry is the second entry with roman numbering on a given day, its + number will be 2. + example: '2' + readOnly: true + type: integer + start: + description: 'Start date and time of the schedule entry.' + example: '2022-01-02T00:00:00+00:00' + format: date-time + type: string + width: + default: 1 + description: |- + When rendering a period in a calendar view: Specifies how wide the rendered calendar event should + be, as a fractional amount of the width of the whole day. This is useful to arrange multiple + overlapping schedule entries such that all of them are visible. Should be a decimal number + between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. + example: 0.4 type: - 'null' - - string - nickname: - description: "The user's (optional) nickname or scout name." - example: Bi-Pi - maxLength: 32 + - number + required: + - activity + - end + - start + type: object + ScheduleEntry.jsonld-write_create: + deprecated: false + description: |- + A calendar event in a period of the camp, at which some activity will take place. The start time + is specified as an offset in minutes from the period's start time. + properties: + activity: + description: |- + The activity that will take place at the time defined by this schedule entry. Can not be changed + once the schedule entry is created. + example: /activities/1a2b3c4d + format: iri-reference + type: string + end: + description: 'End date and time of the schedule entry.' + example: '2022-01-02T01:30:00+00:00' + format: date-time + type: string + left: + description: |- + When rendering a period in a calendar view: Specifies how far offset the rendered calendar event + should be from the left border of the day column, as a fractional amount of the width of the whole + day. This is useful to arrange multiple overlapping schedule entries such that all of them are + visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the + API currently does not enforce this. + example: 0.6 type: - 'null' - - string - surname: - description: "The user's (optional) last name." - example: Baden-Powell - maxLength: 64 + - number + period: + description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' + example: /periods/1a2b3c4d + format: iri-reference + type: string + start: + description: 'Start date and time of the schedule entry.' + example: '2022-01-02T00:00:00+00:00' + format: date-time + type: string + width: + default: 1 + description: |- + When rendering a period in a calendar view: Specifies how wide the rendered calendar event should + be, as a fractional amount of the width of the whole day. This is useful to arrange multiple + overlapping schedule entries such that all of them are visible. Should be a decimal number + between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. + example: 0.4 type: - 'null' - - string + - number required: - - email + - activity + - end + - start type: object - ResetPassword: + SingleText-read: deprecated: false description: '' properties: - email: + children: + description: 'All content nodes that are direct children of this content node.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d + format: iri-reference + type: string + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true + type: string + data: + default: '{"html":""}' + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + html: 'my example text' + items: + type: string type: + - array - 'null' - - string id: - description: "$id: base64_encode($email . '#' . $resetKey)." + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 readOnly: true + type: string + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 type: - 'null' - string - password: - maxLength: 128 - minLength: 12 + parent: + description: |- + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference type: - 'null' - string - writeOnly: true - recaptchaToken: + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. + example: /content_nodes/1a2b3c4d + format: iri-reference + readOnly: true type: - 'null' - string - writeOnly: true + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string + required: + - children + - contentType + - data + - position type: object - ResetPassword-create: + SingleText-write_create: deprecated: false description: '' properties: - email: + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d + format: iri-reference + type: string + data: + default: '{"html":""}' + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + html: 'my example text' + items: + type: string type: + - array - 'null' - - string - recaptchaToken: + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 type: - 'null' - string - writeOnly: true - type: object - ResetPassword-update: - deprecated: false - description: '' - properties: - password: - maxLength: 128 - minLength: 12 + parent: + description: |- + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference type: - 'null' - string - writeOnly: true - recaptchaToken: + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 type: - 'null' - string - writeOnly: true + required: + - contentType + - data + - parent + - position type: object - ResetPassword.jsonapi: + SingleText-write_update: deprecated: false description: '' properties: - email: + data: + default: '{"html":""}' + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + html: 'my example text' + items: + type: string type: + - array - 'null' - - string - id: - description: "$id: base64_encode($email . '#' . $resetKey)." - readOnly: true + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 type: - 'null' - string - password: - maxLength: 128 - minLength: 12 + parent: + description: |- + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference type: - 'null' - string - writeOnly: true - recaptchaToken: + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 type: - 'null' - string - writeOnly: true + required: + - data + - position type: object - ResetPassword.jsonapi-create: + SingleText.jsonapi: deprecated: false description: '' properties: - email: + children: + description: 'All content nodes that are direct children of this content node.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d + format: iri-reference + readOnly: true + type: string + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true + type: string + data: + default: '{"html":""}' + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + html: 'my example text' + items: + type: string + type: + - array + - 'null' + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + instanceName: + description: |- + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 type: - 'null' - string - recaptchaToken: + parent: + description: |- + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d + format: iri-reference type: - 'null' - string - writeOnly: true - type: object - ResetPassword.jsonapi-update: - deprecated: false - description: '' - properties: - password: - maxLength: 128 - minLength: 12 + position: + default: -1 + description: |- + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 + type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. + example: /content_nodes/1a2b3c4d + format: iri-reference + readOnly: true type: - 'null' - string - writeOnly: true - recaptchaToken: + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 type: - 'null' - string - writeOnly: true + required: + - children + - contentType + - data + - position type: object - ResetPassword.jsonhal: + SingleText.jsonhal-read: deprecated: false description: '' properties: @@ -19771,127 +19154,13 @@ components: type: string type: object type: object - email: - type: - - 'null' - - string - id: - description: "$id: base64_encode($email . '#' . $resetKey)." - readOnly: true - type: - - 'null' - - string - password: - maxLength: 128 - minLength: 12 - type: - - 'null' - - string - writeOnly: true - recaptchaToken: - type: - - 'null' - - string - writeOnly: true - type: object - ResetPassword.jsonhal-create: - deprecated: false - description: '' - properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - email: - type: - - 'null' - - string - recaptchaToken: - type: - - 'null' - - string - writeOnly: true - type: object - ResetPassword.jsonld: - deprecated: false - description: '' - properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - email: - type: - - 'null' - - string - id: - description: "$id: base64_encode($email . '#' . $resetKey)." - readOnly: true - type: - - 'null' - - string - password: - maxLength: 128 - minLength: 12 - type: - - 'null' - - string - writeOnly: true - recaptchaToken: - type: - - 'null' - - string - writeOnly: true - type: object - ResetPassword.jsonld-create: - deprecated: false - description: '' - properties: - email: - type: - - 'null' - - string - recaptchaToken: - type: - - 'null' - - string - writeOnly: true - type: object - ResponsiveLayout-read: - deprecated: false - description: '' - properties: - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string + children: + description: 'All content nodes that are direct children of this content node.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string readOnly: true type: array contentType: @@ -19908,18 +19177,12 @@ components: readOnly: true type: string data: - default: '{"items":[{"slot":"main"},{"slot":"aside-top"},{"slot":"aside-bottom"}]}' + default: '{"html":""}' description: |- Holds the actual data of the content node (overridden from abstract class in order to add specific validation). example: - items: - - - slot: aside-bottom - - - slot: aside-top - - - slot: main + html: 'my example text' items: type: string type: @@ -19982,10 +19245,19 @@ components: - data - position type: object - ResponsiveLayout-write_create: + SingleText.jsonhal-write_create: deprecated: false description: '' properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object contentType: description: |- Defines the type of this content node. There is a fixed list of types that are implemented @@ -19995,18 +19267,12 @@ components: format: iri-reference type: string data: - default: '{"items":[{"slot":"main"},{"slot":"aside-top"},{"slot":"aside-bottom"}]}' + default: '{"html":""}' description: |- Holds the actual data of the content node (overridden from abstract class in order to add specific validation). example: - items: - - - slot: aside-bottom - - - slot: aside-top - - - slot: main + html: 'my example text' items: type: string type: @@ -20053,71 +19319,33 @@ components: - parent - position type: object - ResponsiveLayout-write_update: - deprecated: false - description: '' - properties: - data: - default: '{"items":[{"slot":"main"},{"slot":"aside-top"},{"slot":"aside-bottom"}]}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - items: - - - slot: aside-bottom - - - slot: aside-top - - - slot: main - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - data - - position - type: object - ResponsiveLayout.jsonapi-read: + SingleText.jsonld-read: deprecated: false description: '' properties: + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string + readOnly: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string children: description: 'All content nodes that are direct children of this content node.' example: '["/content_nodes/1a2b3c4d"]' @@ -20141,18 +19369,12 @@ components: readOnly: true type: string data: - default: '{"items":[{"slot":"main"},{"slot":"aside-top"},{"slot":"aside-bottom"}]}' + default: '{"html":""}' description: |- Holds the actual data of the content node (overridden from abstract class in order to add specific validation). example: - items: - - - slot: aside-bottom - - - slot: aside-top - - - slot: main + html: 'my example text' items: type: string type: @@ -20215,7 +19437,7 @@ components: - data - position type: object - ResponsiveLayout.jsonapi-write_create: + SingleText.jsonld-write_create: deprecated: false description: '' properties: @@ -20228,18 +19450,12 @@ components: format: iri-reference type: string data: - default: '{"items":[{"slot":"main"},{"slot":"aside-top"},{"slot":"aside-bottom"}]}' + default: '{"html":""}' description: |- Holds the actual data of the content node (overridden from abstract class in order to add specific validation). example: - items: - - - slot: aside-bottom - - - slot: aside-top - - - slot: main + html: 'my example text' items: type: string type: @@ -20286,28 +19502,54 @@ components: - parent - position type: object - ResponsiveLayout.jsonapi-write_update: + Storyboard-read: deprecated: false description: '' properties: - data: - default: '{"items":[{"slot":"main"},{"slot":"aside-top"},{"slot":"aside-bottom"}]}' - description: |- - Holds the actual data of the content node + children: + description: 'All content nodes that are direct children of this content node.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d + format: iri-reference + type: string + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true + type: string + data: + description: |- + Holds the actual data of the content node (overridden from abstract class in order to add specific validation). example: - items: - - - slot: aside-bottom - - - slot: aside-top - - - slot: main + sections: + 186b7ff2-7470-4de4-8783-082c2c189fcd: + column1: '' + column2Html: '' + column3: '' + position: 0 items: type: string type: - array - 'null' + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string instanceName: description: |- An optional name for this content node. This is useful when planning e.g. an alternative @@ -20334,6 +19576,16 @@ components: same parent. The API does not guarantee the uniqueness of parent+slot+position. example: -1 type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. + example: /content_nodes/1a2b3c4d + format: iri-reference + readOnly: true + type: + - 'null' + - string slot: description: |- The name of the slot in the parent in which this content node resides. The valid slot names @@ -20344,31 +19596,14 @@ components: - 'null' - string required: - - data + - children + - contentType - position type: object - ResponsiveLayout.jsonhal-read: + Storyboard-write_create: deprecated: false description: '' properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array contentType: description: |- Defines the type of this content node. There is a fixed list of types that are implemented @@ -20377,35 +19612,22 @@ components: example: /content_types/1a2b3c4d format: iri-reference type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true - type: string data: - default: '{"items":[{"slot":"main"},{"slot":"aside-top"},{"slot":"aside-bottom"}]}' description: |- Holds the actual data of the content node (overridden from abstract class in order to add specific validation). example: - items: - - - slot: aside-bottom - - - slot: aside-top - - - slot: main + sections: + 186b7ff2-7470-4de4-8783-082c2c189fcd: + column1: '' + column2Html: '' + column3: '' + position: 0 items: type: string type: - array - 'null' - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string instanceName: description: |- An optional name for this content node. This is useful when planning e.g. an alternative @@ -20432,16 +19654,6 @@ components: same parent. The API does not guarantee the uniqueness of parent+slot+position. example: -1 type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference - readOnly: true - type: - - 'null' - - string slot: description: |- The name of the slot in the parent in which this content node resides. The valid slot names @@ -20452,45 +19664,25 @@ components: - 'null' - string required: - - children - contentType - - data + - parent - position type: object - ResponsiveLayout.jsonhal-write_create: + Storyboard-write_update: deprecated: false description: '' properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string data: - default: '{"items":[{"slot":"main"},{"slot":"aside-top"},{"slot":"aside-bottom"}]}' description: |- Holds the actual data of the content node (overridden from abstract class in order to add specific validation). example: - items: - - - slot: aside-bottom - - - slot: aside-top - - - slot: main + sections: + 186b7ff2-7470-4de4-8783-082c2c189fcd: + column1: '' + column2Html: '' + column3: '' + position: 0 items: type: string type: @@ -20532,38 +19724,13 @@ components: - 'null' - string required: - - contentType - data - - parent - position type: object - ResponsiveLayout.jsonld-read: + Storyboard.jsonapi: deprecated: false description: '' properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string children: description: 'All content nodes that are direct children of this content node.' example: '["/content_nodes/1a2b3c4d"]' @@ -20580,6 +19747,7 @@ components: in a content node. The content type may not be changed once the content node is created. example: /content_types/1a2b3c4d format: iri-reference + readOnly: true type: string contentTypeName: description: 'The name of the content type of this content node. Read-only, for convenience.' @@ -20587,18 +19755,16 @@ components: readOnly: true type: string data: - default: '{"items":[{"slot":"main"},{"slot":"aside-top"},{"slot":"aside-bottom"}]}' description: |- Holds the actual data of the content node (overridden from abstract class in order to add specific validation). example: - items: - - - slot: aside-bottom - - - slot: aside-top - - - slot: main + sections: + 186b7ff2-7470-4de4-8783-082c2c189fcd: + column1: '' + column2Html: '' + column3: '' + position: 0 items: type: string type: @@ -20658,13 +19824,30 @@ components: required: - children - contentType - - data - position type: object - ResponsiveLayout.jsonld-write_create: + Storyboard.jsonhal-read: deprecated: false description: '' properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + children: + description: 'All content nodes that are direct children of this content node.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array contentType: description: |- Defines the type of this content node. There is a fixed list of types that are implemented @@ -20673,24 +19856,33 @@ components: example: /content_types/1a2b3c4d format: iri-reference type: string + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept + readOnly: true + type: string data: - default: '{"items":[{"slot":"main"},{"slot":"aside-top"},{"slot":"aside-bottom"}]}' description: |- Holds the actual data of the content node (overridden from abstract class in order to add specific validation). example: - items: - - - slot: aside-bottom - - - slot: aside-top - - - slot: main + sections: + 186b7ff2-7470-4de4-8783-082c2c189fcd: + column1: '' + column2Html: '' + column3: '' + position: 0 items: type: string type: - array - 'null' + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string instanceName: description: |- An optional name for this content node. This is useful when planning e.g. an alternative @@ -20717,6 +19909,16 @@ components: same parent. The API does not guarantee the uniqueness of parent+slot+position. example: -1 type: integer + root: + description: |- + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. + example: /content_nodes/1a2b3c4d + format: iri-reference + readOnly: true + type: + - 'null' + - string slot: description: |- The name of the slot in the parent in which this content node resides. The valid slot names @@ -20727,4301 +19929,1459 @@ components: - 'null' - string required: + - children - contentType - - data - - parent - position type: object - ScheduleEntry-read: + Storyboard.jsonhal-write_create: deprecated: false - description: |- - A calendar event in a period of the camp, at which some activity will take place. The start time - is specified as an offset in minutes from the period's start time. + description: '' properties: - activity: - description: |- - The activity that will take place at the time defined by this schedule entry. Can not be changed - once the schedule entry is created. - example: /activities/1a2b3c4d + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + contentType: + description: |- + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d format: iri-reference type: string - day: - description: 'The day on which this schedule entry starts.' - example: /days/1a2b3c4d - format: iri-reference - readOnly: true + data: + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + sections: + 186b7ff2-7470-4de4-8783-082c2c189fcd: + column1: '' + column2Html: '' + column3: '' + position: 0 + items: + type: string type: + - array - 'null' - - string - dayNumber: - description: 'The day number of the day on which this schedule entry starts.' - example: '1' - readOnly: true - type: integer - end: - description: 'End date and time of the schedule entry.' - example: '2022-01-02T01:30:00+00:00' - format: date-time - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - readOnly: true - type: string - left: + instanceName: description: |- - When rendering a period in a calendar view: Specifies how far offset the rendered calendar event - should be from the left border of the day column, as a fractional amount of the width of the whole - day. This is useful to arrange multiple overlapping schedule entries such that all of them are - visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the - API currently does not enforce this. - example: 0.6 + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 type: - 'null' - - number - number: + - string + parent: description: |- - Uniquely identifies this schedule entry in the period. This uses the day number, followed - by a period, followed by the cardinal number of the schedule entry in the numbering scheme - defined by the activity's category. - example: 1.b - readOnly: true - type: string - period: - description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' - example: /periods/1a2b3c4d + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d format: iri-reference - type: string - scheduleEntryNumber: + type: + - 'null' + - string + position: + default: -1 description: |- - The cardinal number of this schedule entry, when chronologically ordering all - schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if - the schedule entry is the second entry with roman numbering on a given day, its - number will be 2. - example: '2' - readOnly: true + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 type: integer - start: - description: 'Start date and time of the schedule entry.' - example: '2022-01-02T00:00:00+00:00' - format: date-time - type: string - width: - default: 1 + slot: description: |- - When rendering a period in a calendar view: Specifies how wide the rendered calendar event should - be, as a fractional amount of the width of the whole day. This is useful to arrange multiple - overlapping schedule entries such that all of them are visible. Should be a decimal number - between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. - example: 0.4 + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 type: - 'null' - - number + - string required: - - end - - start + - contentType + - parent + - position type: object - ScheduleEntry-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: + Storyboard.jsonld-read: deprecated: false description: '' properties: - activity: + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string + readOnly: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + children: + description: 'All content nodes that are direct children of this content node.' + example: '["/content_nodes/1a2b3c4d"]' + items: + example: 'https://example.com/' + format: iri-reference + type: string + readOnly: true + type: array + contentType: description: |- - The activity that will take place at the time defined by this schedule entry. Can not be changed - once the schedule entry is created. - example: /activities/1a2b3c4d + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d format: iri-reference type: string - day: - description: 'The day on which this schedule entry starts.' - example: /days/1a2b3c4d - format: iri-reference + contentTypeName: + description: 'The name of the content type of this content node. Read-only, for convenience.' + example: SafetyConcept readOnly: true + type: string + data: + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + sections: + 186b7ff2-7470-4de4-8783-082c2c189fcd: + column1: '' + column2Html: '' + column3: '' + position: 0 + items: + type: string type: + - array - 'null' - - string - dayNumber: - description: 'The day number of the day on which this schedule entry starts.' - example: '1' - readOnly: true - type: integer - end: - description: 'End date and time of the schedule entry.' - example: '2022-01-02T01:30:00+00:00' - format: date-time - type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - left: + instanceName: description: |- - When rendering a period in a calendar view: Specifies how far offset the rendered calendar event - should be from the left border of the day column, as a fractional amount of the width of the whole - day. This is useful to arrange multiple overlapping schedule entries such that all of them are - visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the - API currently does not enforce this. - example: 0.6 + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 type: - 'null' - - number - number: + - string + parent: description: |- - Uniquely identifies this schedule entry in the period. This uses the day number, followed - by a period, followed by the cardinal number of the schedule entry in the numbering scheme - defined by the activity's category. - example: 1.b - readOnly: true - type: string - period: - description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' - example: /periods/1a2b3c4d + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d format: iri-reference - type: string - scheduleEntryNumber: + type: + - 'null' + - string + position: + default: -1 description: |- - The cardinal number of this schedule entry, when chronologically ordering all - schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if - the schedule entry is the second entry with roman numbering on a given day, its - number will be 2. - example: '2' - readOnly: true + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 type: integer - start: - description: 'Start date and time of the schedule entry.' - example: '2022-01-02T00:00:00+00:00' - format: date-time - type: string - width: - default: 1 + root: description: |- - When rendering a period in a calendar view: Specifies how wide the rendered calendar event should - be, as a fractional amount of the width of the whole day. This is useful to arrange multiple - overlapping schedule entries such that all of them are visible. Should be a decimal number - between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. - example: 0.4 + The content node that is the root of the content node tree. Refers to itself in case this + content node is the root. + example: /content_nodes/1a2b3c4d + format: iri-reference + readOnly: true type: - 'null' - - number + - string + slot: + description: |- + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 + type: + - 'null' + - string required: - - activity - - end - - start + - children + - contentType + - position type: object - ScheduleEntry-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + Storyboard.jsonld-write_create: deprecated: false description: '' properties: - activity: + contentType: description: |- - The activity that will take place at the time defined by this schedule entry. Can not be changed - once the schedule entry is created. - example: /activities/1a2b3c4d + Defines the type of this content node. There is a fixed list of types that are implemented + in eCamp. Depending on the type, different content data and different slots may be allowed + in a content node. The content type may not be changed once the content node is created. + example: /content_types/1a2b3c4d format: iri-reference type: string - day: - description: 'The day on which this schedule entry starts.' - example: /days/1a2b3c4d - format: iri-reference - readOnly: true + data: + description: |- + Holds the actual data of the content node + (overridden from abstract class in order to add specific validation). + example: + sections: + 186b7ff2-7470-4de4-8783-082c2c189fcd: + column1: '' + column2Html: '' + column3: '' + position: 0 + items: + type: string type: + - array - 'null' - - string - dayNumber: - description: 'The day number of the day on which this schedule entry starts.' - example: '1' - readOnly: true - type: integer - end: - description: 'End date and time of the schedule entry.' - example: '2022-01-02T01:30:00+00:00' - format: date-time - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - left: + instanceName: description: |- - When rendering a period in a calendar view: Specifies how far offset the rendered calendar event - should be from the left border of the day column, as a fractional amount of the width of the whole - day. This is useful to arrange multiple overlapping schedule entries such that all of them are - visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the - API currently does not enforce this. - example: 0.6 + An optional name for this content node. This is useful when planning e.g. an alternative + version of the programme suited for bad weather, in addition to the normal version. + example: Schlechtwetterprogramm + maxLength: 32 type: - 'null' - - number - number: + - string + parent: description: |- - Uniquely identifies this schedule entry in the period. This uses the day number, followed - by a period, followed by the cardinal number of the schedule entry in the numbering scheme - defined by the activity's category. - example: 1.b - readOnly: true - type: string - period: - description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' - example: /periods/1a2b3c4d + The parent to which this content node belongs. Is null in case this content node is the + root of a content node tree. For non-root content nodes, the parent can be changed, as long + as the new parent is in the same camp as the old one. + example: /content_nodes/1a2b3c4d format: iri-reference - type: string - scheduleEntryNumber: + type: + - 'null' + - string + position: + default: -1 description: |- - The cardinal number of this schedule entry, when chronologically ordering all - schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if - the schedule entry is the second entry with roman numbering on a given day, its - number will be 2. - example: '2' - readOnly: true + A whole number used for ordering multiple content nodes that are in the same slot of the + same parent. The API does not guarantee the uniqueness of parent+slot+position. + example: -1 type: integer - start: - description: 'Start date and time of the schedule entry.' - example: '2022-01-02T00:00:00+00:00' - format: date-time - type: string - width: - default: 1 + slot: description: |- - When rendering a period in a calendar view: Specifies how wide the rendered calendar event should - be, as a fractional amount of the width of the whole day. This is useful to arrange multiple - overlapping schedule entries such that all of them are visible. Should be a decimal number - between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. - example: 0.4 + The name of the slot in the parent in which this content node resides. The valid slot names + are defined by the content type of the parent. + example: '1' + maxLength: 32 type: - 'null' - - number + - string required: - - activity - - end - - start + - contentType + - parent + - position type: object - ScheduleEntry-read_ScheduleEntry.Activity: + User-activate: deprecated: false description: |- - A calendar event in a period of the camp, at which some activity will take place. The start time - is specified as an offset in minutes from the period's start time. + A person using eCamp. + The properties available for all other eCamp users are here. properties: - activity: - anyOf: - - - $ref: '#/components/schemas/Activity-read_ScheduleEntry.Activity' - - - type: 'null' - readOnly: true - day: - description: 'The day on which this schedule entry starts.' - example: /days/1a2b3c4d - format: iri-reference + activationKey: + description: 'User-Input for activation.' + type: + - 'null' + - string + writeOnly: true + type: object + User-read: + deprecated: false + description: |- + A person using eCamp. + The properties available for all other eCamp users are here. + properties: + displayName: + description: 'A displayable name of the user.' + example: 'Robert Baden-Powell' readOnly: true type: - 'null' - string - dayNumber: - description: 'The day number of the day on which this schedule entry starts.' - example: '1' + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 readOnly: true - type: integer - end: - description: 'End date and time of the schedule entry.' - example: '2022-01-02T01:30:00+00:00' - format: date-time type: string + profile: + example: + email: bi-pi@example.com + firstname: Robert + language: en + nickname: Bi-Pi + surname: Baden-Powell + format: iri-reference + type: string + type: object + User-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: + deprecated: false + description: '' + properties: + displayName: + description: 'A displayable name of the user.' + example: 'Robert Baden-Powell' + readOnly: true + type: + - 'null' + - string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - left: - description: |- - When rendering a period in a calendar view: Specifies how far offset the rendered calendar event - should be from the left border of the day column, as a fractional amount of the width of the whole - day. This is useful to arrange multiple overlapping schedule entries such that all of them are - visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the - API currently does not enforce this. - example: 0.6 + profile: + example: + email: bi-pi@example.com + firstname: Robert + language: en + nickname: Bi-Pi + surname: Baden-Powell + format: iri-reference + type: string + type: object + User-read_CampCollaboration.Camp_CampCollaboration.User: + deprecated: false + description: '' + properties: + displayName: + description: 'A displayable name of the user.' + example: 'Robert Baden-Powell' + readOnly: true type: - 'null' - - number - number: - description: |- - Uniquely identifies this schedule entry in the period. This uses the day number, followed - by a period, followed by the cardinal number of the schedule entry in the numbering scheme - defined by the activity's category. - example: 1.b + - string + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 readOnly: true type: string - period: - description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' - example: /periods/1a2b3c4d + profile: + example: + email: bi-pi@example.com + firstname: Robert + language: en + nickname: Bi-Pi + surname: Baden-Powell format: iri-reference type: string - scheduleEntryNumber: - description: |- - The cardinal number of this schedule entry, when chronologically ordering all - schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if - the schedule entry is the second entry with roman numbering on a given day, its - number will be 2. - example: '2' + type: object + User-read_User.create: + deprecated: false + description: |- + A person using eCamp. + The properties available for all other eCamp users are here. + properties: + displayName: + description: 'A displayable name of the user.' + example: 'Robert Baden-Powell' readOnly: true - type: integer - start: - description: 'Start date and time of the schedule entry.' - example: '2022-01-02T00:00:00+00:00' - format: date-time - type: string - width: - default: 1 - description: |- - When rendering a period in a calendar view: Specifies how wide the rendered calendar event should - be, as a fractional amount of the width of the whole day. This is useful to arrange multiple - overlapping schedule entries such that all of them are visible. Should be a decimal number - between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. - example: 0.4 type: - 'null' - - number + - string + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + profile: + $ref: '#/components/schemas/Profile-read_User.create' + readOnly: true required: - - activity - - end - - start + - profile type: object - ScheduleEntry-write: + User-write: deprecated: false description: |- - A calendar event in a period of the camp, at which some activity will take place. The start time - is specified as an offset in minutes from the period's start time. + A person using eCamp. + The properties available for all other eCamp users are here. properties: - end: - description: 'End date and time of the schedule entry.' - example: '2022-01-02T01:30:00+00:00' - format: date-time - type: string - left: - description: |- - When rendering a period in a calendar view: Specifies how far offset the rendered calendar event - should be from the left border of the day column, as a fractional amount of the width of the whole - day. This is useful to arrange multiple overlapping schedule entries such that all of them are - visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the - API currently does not enforce this. - example: 0.6 - type: - - 'null' - - number - period: - description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' - example: /periods/1a2b3c4d - format: iri-reference - type: string - start: - description: 'Start date and time of the schedule entry.' - example: '2022-01-02T00:00:00+00:00' - format: date-time - type: string - width: - default: 1 + password: description: |- - When rendering a period in a calendar view: Specifies how wide the rendered calendar event should - be, as a fractional amount of the width of the whole day. This is useful to arrange multiple - overlapping schedule entries such that all of them are visible. Should be a decimal number - between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. - example: 0.4 + A new password for this user. At least 12 characters, as is explicitly recommended by OWASP: + https://github.com/OWASP/ASVS/blob/master/4.0/en/0x11-V2-Authentication.md#v21-password-security + 2.1.1: Verify that user set passwords are at least 12 characters in length (after multiple spaces are combined). + example: learning-by-doing-101 + maxLength: 128 + minLength: 12 type: - 'null' - - number - required: - - end - - start + - string + writeOnly: true type: object - ScheduleEntry-write_create: + User-write_create: deprecated: false description: |- - A calendar event in a period of the camp, at which some activity will take place. The start time - is specified as an offset in minutes from the period's start time. + A person using eCamp. + The properties available for all other eCamp users are here. properties: - activity: - description: |- - The activity that will take place at the time defined by this schedule entry. Can not be changed - once the schedule entry is created. - example: /activities/1a2b3c4d - format: iri-reference - type: string - end: - description: 'End date and time of the schedule entry.' - example: '2022-01-02T01:30:00+00:00' - format: date-time - type: string - left: + password: description: |- - When rendering a period in a calendar view: Specifies how far offset the rendered calendar event - should be from the left border of the day column, as a fractional amount of the width of the whole - day. This is useful to arrange multiple overlapping schedule entries such that all of them are - visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the - API currently does not enforce this. - example: 0.6 + A new password for this user. At least 12 characters, as is explicitly recommended by OWASP: + https://github.com/OWASP/ASVS/blob/master/4.0/en/0x11-V2-Authentication.md#v21-password-security + 2.1.1: Verify that user set passwords are at least 12 characters in length (after multiple spaces are combined). + example: learning-by-doing-101 + maxLength: 128 + minLength: 12 type: - 'null' - - number - period: - description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' - example: /periods/1a2b3c4d - format: iri-reference - type: string - start: - description: 'Start date and time of the schedule entry.' - example: '2022-01-02T00:00:00+00:00' - format: date-time - type: string - width: - default: 1 - description: |- - When rendering a period in a calendar view: Specifies how wide the rendered calendar event should - be, as a fractional amount of the width of the whole day. This is useful to arrange multiple - overlapping schedule entries such that all of them are visible. Should be a decimal number - between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. - example: 0.4 + - string + writeOnly: true + profile: + $ref: '#/components/schemas/Profile-write_create' + example: + email: bi-pi@example.com + firstname: Robert + language: en + nickname: Bi-Pi + surname: Baden-Powell + recaptchaToken: + description: 'ReCaptchaToken used on Register-View.' type: - 'null' - - number + - string + writeOnly: true required: - - activity - - end - - start + - password + - profile type: object - ScheduleEntry.jsonapi-read: + User.jsonapi: deprecated: false description: |- - A calendar event in a period of the camp, at which some activity will take place. The start time - is specified as an offset in minutes from the period's start time. + A person using eCamp. + The properties available for all other eCamp users are here. properties: - activity: - description: |- - The activity that will take place at the time defined by this schedule entry. Can not be changed - once the schedule entry is created. - example: /activities/1a2b3c4d - format: iri-reference - type: string - day: - description: 'The day on which this schedule entry starts.' - example: /days/1a2b3c4d - format: iri-reference + data: + properties: + attributes: + properties: + _id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true + type: string + activationKey: + description: 'User-Input for activation.' + type: ['null', string] + writeOnly: true + displayName: + description: 'A displayable name of the user.' + example: 'Robert Baden-Powell' + readOnly: true + type: ['null', string] + password: + description: |- + A new password for this user. At least 12 characters, as is explicitly recommended by OWASP: + https://github.com/OWASP/ASVS/blob/master/4.0/en/0x11-V2-Authentication.md#v21-password-security + 2.1.1: Verify that user set passwords are at least 12 characters in length (after multiple spaces are combined). + example: learning-by-doing-101 + maxLength: 128 + minLength: 12 + type: ['null', string] + writeOnly: true + recaptchaToken: + description: 'ReCaptchaToken used on Register-View.' + type: ['null', string] + writeOnly: true + type: object + id: + type: string + relationships: + properties: + profile: + properties: { data: { properties: { id: { format: iri-reference, type: string }, type: { type: string } }, type: object } } + type: object + type: + type: string + required: + - id + - type + type: object + included: + description: 'Related resources requested via the "include" query parameter.' + externalDocs: + url: 'https://jsonapi.org/format/#fetching-includes' + items: + anyOf: + - + $ref: '#/components/schemas/Profile.jsonapi' + readOnly: true + type: array + type: object + User.jsonhal-read: + deprecated: false + description: |- + A person using eCamp. + The properties available for all other eCamp users are here. + properties: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + displayName: + description: 'A displayable name of the user.' + example: 'Robert Baden-Powell' readOnly: true type: - 'null' - string - dayNumber: - description: 'The day number of the day on which this schedule entry starts.' - example: '1' - readOnly: true - type: integer - end: - description: 'End date and time of the schedule entry.' - example: '2022-01-02T01:30:00+00:00' - format: date-time - type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d + maxLength: 16 readOnly: true type: string - left: - description: |- - When rendering a period in a calendar view: Specifies how far offset the rendered calendar event - should be from the left border of the day column, as a fractional amount of the width of the whole - day. This is useful to arrange multiple overlapping schedule entries such that all of them are - visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the - API currently does not enforce this. - example: 0.6 - type: - - 'null' - - number - number: - description: |- - Uniquely identifies this schedule entry in the period. This uses the day number, followed - by a period, followed by the cardinal number of the schedule entry in the numbering scheme - defined by the activity's category. - example: 1.b - readOnly: true - type: string - period: - description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' - example: /periods/1a2b3c4d + profile: + example: + email: bi-pi@example.com + firstname: Robert + language: en + nickname: Bi-Pi + surname: Baden-Powell format: iri-reference type: string - scheduleEntryNumber: - description: |- - The cardinal number of this schedule entry, when chronologically ordering all - schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if - the schedule entry is the second entry with roman numbering on a given day, its - number will be 2. - example: '2' - readOnly: true - type: integer - start: - description: 'Start date and time of the schedule entry.' - example: '2022-01-02T00:00:00+00:00' - format: date-time - type: string - width: - default: 1 - description: |- - When rendering a period in a calendar view: Specifies how wide the rendered calendar event should - be, as a fractional amount of the width of the whole day. This is useful to arrange multiple - overlapping schedule entries such that all of them are visible. Should be a decimal number - between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. - example: 0.4 - type: - - 'null' - - number - required: - - end - - start type: object - ScheduleEntry.jsonapi-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: + User.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: deprecated: false description: '' properties: - activity: - description: |- - The activity that will take place at the time defined by this schedule entry. Can not be changed - once the schedule entry is created. - example: /activities/1a2b3c4d - format: iri-reference - type: string - day: - description: 'The day on which this schedule entry starts.' - example: /days/1a2b3c4d - format: iri-reference + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + displayName: + description: 'A displayable name of the user.' + example: 'Robert Baden-Powell' readOnly: true type: - 'null' - string - dayNumber: - description: 'The day number of the day on which this schedule entry starts.' - example: '1' - readOnly: true - type: integer - end: - description: 'End date and time of the schedule entry.' - example: '2022-01-02T01:30:00+00:00' - format: date-time - type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - left: - description: |- - When rendering a period in a calendar view: Specifies how far offset the rendered calendar event - should be from the left border of the day column, as a fractional amount of the width of the whole - day. This is useful to arrange multiple overlapping schedule entries such that all of them are - visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the - API currently does not enforce this. - example: 0.6 - type: - - 'null' - - number - number: - description: |- - Uniquely identifies this schedule entry in the period. This uses the day number, followed - by a period, followed by the cardinal number of the schedule entry in the numbering scheme - defined by the activity's category. - example: 1.b - readOnly: true - type: string - period: - description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' - example: /periods/1a2b3c4d + profile: + example: + email: bi-pi@example.com + firstname: Robert + language: en + nickname: Bi-Pi + surname: Baden-Powell format: iri-reference type: string - scheduleEntryNumber: - description: |- - The cardinal number of this schedule entry, when chronologically ordering all - schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if - the schedule entry is the second entry with roman numbering on a given day, its - number will be 2. - example: '2' - readOnly: true - type: integer - start: - description: 'Start date and time of the schedule entry.' - example: '2022-01-02T00:00:00+00:00' - format: date-time - type: string - width: - default: 1 - description: |- - When rendering a period in a calendar view: Specifies how wide the rendered calendar event should - be, as a fractional amount of the width of the whole day. This is useful to arrange multiple - overlapping schedule entries such that all of them are visible. Should be a decimal number - between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. - example: 0.4 - type: - - 'null' - - number - required: - - activity - - end - - start type: object - ScheduleEntry.jsonapi-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + User.jsonhal-read_CampCollaboration.Camp_CampCollaboration.User: deprecated: false description: '' properties: - activity: - description: |- - The activity that will take place at the time defined by this schedule entry. Can not be changed - once the schedule entry is created. - example: /activities/1a2b3c4d - format: iri-reference - type: string - day: - description: 'The day on which this schedule entry starts.' - example: /days/1a2b3c4d - format: iri-reference + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + displayName: + description: 'A displayable name of the user.' + example: 'Robert Baden-Powell' readOnly: true type: - 'null' - string - dayNumber: - description: 'The day number of the day on which this schedule entry starts.' - example: '1' - readOnly: true - type: integer - end: - description: 'End date and time of the schedule entry.' - example: '2022-01-02T01:30:00+00:00' - format: date-time - type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - left: - description: |- - When rendering a period in a calendar view: Specifies how far offset the rendered calendar event - should be from the left border of the day column, as a fractional amount of the width of the whole - day. This is useful to arrange multiple overlapping schedule entries such that all of them are - visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the - API currently does not enforce this. - example: 0.6 - type: - - 'null' - - number - number: - description: |- - Uniquely identifies this schedule entry in the period. This uses the day number, followed - by a period, followed by the cardinal number of the schedule entry in the numbering scheme - defined by the activity's category. - example: 1.b - readOnly: true - type: string - period: - description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' - example: /periods/1a2b3c4d + profile: + example: + email: bi-pi@example.com + firstname: Robert + language: en + nickname: Bi-Pi + surname: Baden-Powell format: iri-reference type: string - scheduleEntryNumber: - description: |- - The cardinal number of this schedule entry, when chronologically ordering all - schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if - the schedule entry is the second entry with roman numbering on a given day, its - number will be 2. - example: '2' - readOnly: true - type: integer - start: - description: 'Start date and time of the schedule entry.' - example: '2022-01-02T00:00:00+00:00' - format: date-time - type: string - width: - default: 1 - description: |- - When rendering a period in a calendar view: Specifies how wide the rendered calendar event should - be, as a fractional amount of the width of the whole day. This is useful to arrange multiple - overlapping schedule entries such that all of them are visible. Should be a decimal number - between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. - example: 0.4 - type: - - 'null' - - number - required: - - activity - - end - - start type: object - ScheduleEntry.jsonapi-read_ScheduleEntry.Activity: + User.jsonhal-read_User.create: deprecated: false description: |- - A calendar event in a period of the camp, at which some activity will take place. The start time - is specified as an offset in minutes from the period's start time. + A person using eCamp. + The properties available for all other eCamp users are here. properties: - activity: - anyOf: - - - $ref: '#/components/schemas/Activity.jsonapi-read_ScheduleEntry.Activity' - - - type: 'null' - readOnly: true - day: - description: 'The day on which this schedule entry starts.' - example: /days/1a2b3c4d - format: iri-reference + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + displayName: + description: 'A displayable name of the user.' + example: 'Robert Baden-Powell' readOnly: true type: - 'null' - string - dayNumber: - description: 'The day number of the day on which this schedule entry starts.' - example: '1' - readOnly: true - type: integer - end: - description: 'End date and time of the schedule entry.' - example: '2022-01-02T01:30:00+00:00' - format: date-time - type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - left: - description: |- - When rendering a period in a calendar view: Specifies how far offset the rendered calendar event - should be from the left border of the day column, as a fractional amount of the width of the whole - day. This is useful to arrange multiple overlapping schedule entries such that all of them are - visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the - API currently does not enforce this. - example: 0.6 - type: - - 'null' - - number - number: - description: |- - Uniquely identifies this schedule entry in the period. This uses the day number, followed - by a period, followed by the cardinal number of the schedule entry in the numbering scheme - defined by the activity's category. - example: 1.b - readOnly: true - type: string - period: - description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' - example: /periods/1a2b3c4d - format: iri-reference - type: string - scheduleEntryNumber: - description: |- - The cardinal number of this schedule entry, when chronologically ordering all - schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if - the schedule entry is the second entry with roman numbering on a given day, its - number will be 2. - example: '2' + profile: + $ref: '#/components/schemas/Profile.jsonhal-read_User.create' readOnly: true - type: integer - start: - description: 'Start date and time of the schedule entry.' - example: '2022-01-02T00:00:00+00:00' - format: date-time - type: string - width: - default: 1 - description: |- - When rendering a period in a calendar view: Specifies how wide the rendered calendar event should - be, as a fractional amount of the width of the whole day. This is useful to arrange multiple - overlapping schedule entries such that all of them are visible. Should be a decimal number - between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. - example: 0.4 - type: - - 'null' - - number required: - - activity - - end - - start + - profile type: object - ScheduleEntry.jsonapi-write: + User.jsonhal-write_create: deprecated: false description: |- - A calendar event in a period of the camp, at which some activity will take place. The start time - is specified as an offset in minutes from the period's start time. + A person using eCamp. + The properties available for all other eCamp users are here. properties: - end: - description: 'End date and time of the schedule entry.' - example: '2022-01-02T01:30:00+00:00' - format: date-time - type: string - left: + _links: + properties: + self: + properties: + href: + format: iri-reference + type: string + type: object + type: object + password: description: |- - When rendering a period in a calendar view: Specifies how far offset the rendered calendar event - should be from the left border of the day column, as a fractional amount of the width of the whole - day. This is useful to arrange multiple overlapping schedule entries such that all of them are - visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the - API currently does not enforce this. - example: 0.6 + A new password for this user. At least 12 characters, as is explicitly recommended by OWASP: + https://github.com/OWASP/ASVS/blob/master/4.0/en/0x11-V2-Authentication.md#v21-password-security + 2.1.1: Verify that user set passwords are at least 12 characters in length (after multiple spaces are combined). + example: learning-by-doing-101 + maxLength: 128 + minLength: 12 type: - 'null' - - number - period: - description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' - example: /periods/1a2b3c4d - format: iri-reference - type: string - start: - description: 'Start date and time of the schedule entry.' - example: '2022-01-02T00:00:00+00:00' - format: date-time - type: string - width: - default: 1 - description: |- - When rendering a period in a calendar view: Specifies how wide the rendered calendar event should - be, as a fractional amount of the width of the whole day. This is useful to arrange multiple - overlapping schedule entries such that all of them are visible. Should be a decimal number - between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. - example: 0.4 + - string + writeOnly: true + profile: + $ref: '#/components/schemas/Profile.jsonhal-write_create' + example: + email: bi-pi@example.com + firstname: Robert + language: en + nickname: Bi-Pi + surname: Baden-Powell + recaptchaToken: + description: 'ReCaptchaToken used on Register-View.' type: - 'null' - - number + - string + writeOnly: true required: - - end - - start + - password + - profile type: object - ScheduleEntry.jsonapi-write_create: + User.jsonld-read: deprecated: false description: |- - A calendar event in a period of the camp, at which some activity will take place. The start time - is specified as an offset in minutes from the period's start time. + A person using eCamp. + The properties available for all other eCamp users are here. properties: - activity: - description: |- - The activity that will take place at the time defined by this schedule entry. Can not be changed - once the schedule entry is created. - example: /activities/1a2b3c4d - format: iri-reference + '@context': + oneOf: + - + additionalProperties: true + properties: + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra + type: object + - + type: string + readOnly: true + '@id': + readOnly: true type: string - end: - description: 'End date and time of the schedule entry.' - example: '2022-01-02T01:30:00+00:00' - format: date-time + '@type': + readOnly: true type: string - left: - description: |- - When rendering a period in a calendar view: Specifies how far offset the rendered calendar event - should be from the left border of the day column, as a fractional amount of the width of the whole - day. This is useful to arrange multiple overlapping schedule entries such that all of them are - visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the - API currently does not enforce this. - example: 0.6 + displayName: + description: 'A displayable name of the user.' + example: 'Robert Baden-Powell' + readOnly: true type: - 'null' - - number - period: - description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' - example: /periods/1a2b3c4d - format: iri-reference + - string + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 + readOnly: true type: string - start: - description: 'Start date and time of the schedule entry.' - example: '2022-01-02T00:00:00+00:00' - format: date-time + profile: + example: + email: bi-pi@example.com + firstname: Robert + language: en + nickname: Bi-Pi + surname: Baden-Powell + format: iri-reference type: string - width: - default: 1 - description: |- - When rendering a period in a calendar view: Specifies how wide the rendered calendar event should - be, as a fractional amount of the width of the whole day. This is useful to arrange multiple - overlapping schedule entries such that all of them are visible. Should be a decimal number - between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. - example: 0.4 - type: - - 'null' - - number - required: - - activity - - end - - start type: object - ScheduleEntry.jsonhal-read: + User.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: deprecated: false - description: |- - A calendar event in a period of the camp, at which some activity will take place. The start time - is specified as an offset in minutes from the period's start time. + description: '' properties: - _links: - properties: - self: + '@context': + oneOf: + - + additionalProperties: true properties: - href: - format: iri-reference + '@vocab': type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] + type: string + required: + - '@vocab' + - hydra type: object - type: object - activity: - description: |- - The activity that will take place at the time defined by this schedule entry. Can not be changed - once the schedule entry is created. - example: /activities/1a2b3c4d - format: iri-reference + - + type: string + readOnly: true + '@id': + readOnly: true type: string - day: - description: 'The day on which this schedule entry starts.' - example: /days/1a2b3c4d - format: iri-reference + '@type': + readOnly: true + type: string + displayName: + description: 'A displayable name of the user.' + example: 'Robert Baden-Powell' readOnly: true type: - 'null' - string - dayNumber: - description: 'The day number of the day on which this schedule entry starts.' - example: '1' - readOnly: true - type: integer - end: - description: 'End date and time of the schedule entry.' - example: '2022-01-02T01:30:00+00:00' - format: date-time - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - readOnly: true - type: string - left: - description: |- - When rendering a period in a calendar view: Specifies how far offset the rendered calendar event - should be from the left border of the day column, as a fractional amount of the width of the whole - day. This is useful to arrange multiple overlapping schedule entries such that all of them are - visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the - API currently does not enforce this. - example: 0.6 - type: - - 'null' - - number - number: - description: |- - Uniquely identifies this schedule entry in the period. This uses the day number, followed - by a period, followed by the cardinal number of the schedule entry in the numbering scheme - defined by the activity's category. - example: 1.b + id: + description: 'An internal, unique, randomly generated identifier of this entity.' + example: 1a2b3c4d + maxLength: 16 readOnly: true type: string - period: - description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' - example: /periods/1a2b3c4d + profile: + example: + email: bi-pi@example.com + firstname: Robert + language: en + nickname: Bi-Pi + surname: Baden-Powell format: iri-reference type: string - scheduleEntryNumber: - description: |- - The cardinal number of this schedule entry, when chronologically ordering all - schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if - the schedule entry is the second entry with roman numbering on a given day, its - number will be 2. - example: '2' - readOnly: true - type: integer - start: - description: 'Start date and time of the schedule entry.' - example: '2022-01-02T00:00:00+00:00' - format: date-time - type: string - width: - default: 1 - description: |- - When rendering a period in a calendar view: Specifies how wide the rendered calendar event should - be, as a fractional amount of the width of the whole day. This is useful to arrange multiple - overlapping schedule entries such that all of them are visible. Should be a decimal number - between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. - example: 0.4 - type: - - 'null' - - number - required: - - end - - start type: object - ScheduleEntry.jsonhal-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: + User.jsonld-read_CampCollaboration.Camp_CampCollaboration.User: deprecated: false description: '' properties: - _links: - properties: - self: + '@context': + oneOf: + - + additionalProperties: true properties: - href: - format: iri-reference + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] type: string + required: + - '@vocab' + - hydra type: object - type: object - activity: - description: |- - The activity that will take place at the time defined by this schedule entry. Can not be changed - once the schedule entry is created. - example: /activities/1a2b3c4d - format: iri-reference + - + type: string + readOnly: true + '@id': + readOnly: true type: string - day: - description: 'The day on which this schedule entry starts.' - example: /days/1a2b3c4d - format: iri-reference + '@type': + readOnly: true + type: string + displayName: + description: 'A displayable name of the user.' + example: 'Robert Baden-Powell' readOnly: true type: - 'null' - string - dayNumber: - description: 'The day number of the day on which this schedule entry starts.' - example: '1' - readOnly: true - type: integer - end: - description: 'End date and time of the schedule entry.' - example: '2022-01-02T01:30:00+00:00' - format: date-time - type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - left: - description: |- - When rendering a period in a calendar view: Specifies how far offset the rendered calendar event - should be from the left border of the day column, as a fractional amount of the width of the whole - day. This is useful to arrange multiple overlapping schedule entries such that all of them are - visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the - API currently does not enforce this. - example: 0.6 - type: - - 'null' - - number - number: - description: |- - Uniquely identifies this schedule entry in the period. This uses the day number, followed - by a period, followed by the cardinal number of the schedule entry in the numbering scheme - defined by the activity's category. - example: 1.b - readOnly: true - type: string - period: - description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' - example: /periods/1a2b3c4d + profile: + example: + email: bi-pi@example.com + firstname: Robert + language: en + nickname: Bi-Pi + surname: Baden-Powell format: iri-reference type: string - scheduleEntryNumber: - description: |- - The cardinal number of this schedule entry, when chronologically ordering all - schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if - the schedule entry is the second entry with roman numbering on a given day, its - number will be 2. - example: '2' - readOnly: true - type: integer - start: - description: 'Start date and time of the schedule entry.' - example: '2022-01-02T00:00:00+00:00' - format: date-time - type: string - width: - default: 1 - description: |- - When rendering a period in a calendar view: Specifies how wide the rendered calendar event should - be, as a fractional amount of the width of the whole day. This is useful to arrange multiple - overlapping schedule entries such that all of them are visible. Should be a decimal number - between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. - example: 0.4 - type: - - 'null' - - number - required: - - activity - - end - - start type: object - ScheduleEntry.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: + User.jsonld-read_User.create: deprecated: false - description: '' + description: |- + A person using eCamp. + The properties available for all other eCamp users are here. properties: - _links: - properties: - self: + '@context': + oneOf: + - + additionalProperties: true properties: - href: - format: iri-reference + '@vocab': + type: string + hydra: + enum: ['http://www.w3.org/ns/hydra/core#'] type: string + required: + - '@vocab' + - hydra type: object - type: object - activity: - description: |- - The activity that will take place at the time defined by this schedule entry. Can not be changed - once the schedule entry is created. - example: /activities/1a2b3c4d - format: iri-reference + - + type: string + readOnly: true + '@id': + readOnly: true type: string - day: - description: 'The day on which this schedule entry starts.' - example: /days/1a2b3c4d - format: iri-reference + '@type': + readOnly: true + type: string + displayName: + description: 'A displayable name of the user.' + example: 'Robert Baden-Powell' readOnly: true type: - 'null' - string - dayNumber: - description: 'The day number of the day on which this schedule entry starts.' - example: '1' - readOnly: true - type: integer - end: - description: 'End date and time of the schedule entry.' - example: '2022-01-02T01:30:00+00:00' - format: date-time - type: string id: description: 'An internal, unique, randomly generated identifier of this entity.' example: 1a2b3c4d maxLength: 16 readOnly: true type: string - left: + profile: + $ref: '#/components/schemas/Profile.jsonld-read_User.create' + readOnly: true + required: + - profile + type: object + User.jsonld-write_create: + deprecated: false + description: |- + A person using eCamp. + The properties available for all other eCamp users are here. + properties: + password: description: |- - When rendering a period in a calendar view: Specifies how far offset the rendered calendar event - should be from the left border of the day column, as a fractional amount of the width of the whole - day. This is useful to arrange multiple overlapping schedule entries such that all of them are - visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the - API currently does not enforce this. - example: 0.6 - type: - - 'null' - - number - number: - description: |- - Uniquely identifies this schedule entry in the period. This uses the day number, followed - by a period, followed by the cardinal number of the schedule entry in the numbering scheme - defined by the activity's category. - example: 1.b - readOnly: true - type: string - period: - description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' - example: /periods/1a2b3c4d - format: iri-reference - type: string - scheduleEntryNumber: - description: |- - The cardinal number of this schedule entry, when chronologically ordering all - schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if - the schedule entry is the second entry with roman numbering on a given day, its - number will be 2. - example: '2' - readOnly: true - type: integer - start: - description: 'Start date and time of the schedule entry.' - example: '2022-01-02T00:00:00+00:00' - format: date-time - type: string - width: - default: 1 - description: |- - When rendering a period in a calendar view: Specifies how wide the rendered calendar event should - be, as a fractional amount of the width of the whole day. This is useful to arrange multiple - overlapping schedule entries such that all of them are visible. Should be a decimal number - between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. - example: 0.4 - type: - - 'null' - - number - required: - - activity - - end - - start - type: object - ScheduleEntry.jsonhal-read_ScheduleEntry.Activity: - deprecated: false - description: |- - A calendar event in a period of the camp, at which some activity will take place. The start time - is specified as an offset in minutes from the period's start time. - properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - activity: - anyOf: - - - $ref: '#/components/schemas/Activity.jsonhal-read_ScheduleEntry.Activity' - - - type: 'null' - readOnly: true - day: - description: 'The day on which this schedule entry starts.' - example: /days/1a2b3c4d - format: iri-reference - readOnly: true + A new password for this user. At least 12 characters, as is explicitly recommended by OWASP: + https://github.com/OWASP/ASVS/blob/master/4.0/en/0x11-V2-Authentication.md#v21-password-security + 2.1.1: Verify that user set passwords are at least 12 characters in length (after multiple spaces are combined). + example: learning-by-doing-101 + maxLength: 128 + minLength: 12 type: - 'null' - string - dayNumber: - description: 'The day number of the day on which this schedule entry starts.' - example: '1' - readOnly: true - type: integer - end: - description: 'End date and time of the schedule entry.' - example: '2022-01-02T01:30:00+00:00' - format: date-time - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - left: - description: |- - When rendering a period in a calendar view: Specifies how far offset the rendered calendar event - should be from the left border of the day column, as a fractional amount of the width of the whole - day. This is useful to arrange multiple overlapping schedule entries such that all of them are - visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the - API currently does not enforce this. - example: 0.6 - type: - - 'null' - - number - number: - description: |- - Uniquely identifies this schedule entry in the period. This uses the day number, followed - by a period, followed by the cardinal number of the schedule entry in the numbering scheme - defined by the activity's category. - example: 1.b - readOnly: true - type: string - period: - description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' - example: /periods/1a2b3c4d - format: iri-reference - type: string - scheduleEntryNumber: - description: |- - The cardinal number of this schedule entry, when chronologically ordering all - schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if - the schedule entry is the second entry with roman numbering on a given day, its - number will be 2. - example: '2' - readOnly: true - type: integer - start: - description: 'Start date and time of the schedule entry.' - example: '2022-01-02T00:00:00+00:00' - format: date-time - type: string - width: - default: 1 - description: |- - When rendering a period in a calendar view: Specifies how wide the rendered calendar event should - be, as a fractional amount of the width of the whole day. This is useful to arrange multiple - overlapping schedule entries such that all of them are visible. Should be a decimal number - between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. - example: 0.4 - type: - - 'null' - - number - required: - - activity - - end - - start - type: object - ScheduleEntry.jsonhal-write_create: - deprecated: false - description: |- - A calendar event in a period of the camp, at which some activity will take place. The start time - is specified as an offset in minutes from the period's start time. - properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - activity: - description: |- - The activity that will take place at the time defined by this schedule entry. Can not be changed - once the schedule entry is created. - example: /activities/1a2b3c4d - format: iri-reference - type: string - end: - description: 'End date and time of the schedule entry.' - example: '2022-01-02T01:30:00+00:00' - format: date-time - type: string - left: - description: |- - When rendering a period in a calendar view: Specifies how far offset the rendered calendar event - should be from the left border of the day column, as a fractional amount of the width of the whole - day. This is useful to arrange multiple overlapping schedule entries such that all of them are - visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the - API currently does not enforce this. - example: 0.6 - type: - - 'null' - - number - period: - description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' - example: /periods/1a2b3c4d - format: iri-reference - type: string - start: - description: 'Start date and time of the schedule entry.' - example: '2022-01-02T00:00:00+00:00' - format: date-time - type: string - width: - default: 1 - description: |- - When rendering a period in a calendar view: Specifies how wide the rendered calendar event should - be, as a fractional amount of the width of the whole day. This is useful to arrange multiple - overlapping schedule entries such that all of them are visible. Should be a decimal number - between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. - example: 0.4 + writeOnly: true + profile: + $ref: '#/components/schemas/Profile.jsonld-write_create' + example: + email: bi-pi@example.com + firstname: Robert + language: en + nickname: Bi-Pi + surname: Baden-Powell + recaptchaToken: + description: 'ReCaptchaToken used on Register-View.' type: - 'null' - - number + - string + writeOnly: true required: - - activity - - end - - start + - password + - profile type: object - ScheduleEntry.jsonld-read: + securitySchemes: + JWT: + bearerFormat: JWT + scheme: bearer + type: http +info: + description: '' + title: 'eCamp v3' + version: 1.0.0 +openapi: 3.1.0 +paths: + /activities: + get: deprecated: false - description: |- - A calendar event in a period of the camp, at which some activity will take place. The start time - is specified as an offset in minutes from the period's start time. - properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - activity: - description: |- - The activity that will take place at the time defined by this schedule entry. Can not be changed - once the schedule entry is created. - example: /activities/1a2b3c4d - format: iri-reference - type: string - day: - description: 'The day on which this schedule entry starts.' - example: /days/1a2b3c4d - format: iri-reference - readOnly: true - type: - - 'null' - - string - dayNumber: - description: 'The day number of the day on which this schedule entry starts.' - example: '1' - readOnly: true - type: integer - end: - description: 'End date and time of the schedule entry.' - example: '2022-01-02T01:30:00+00:00' - format: date-time - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - readOnly: true - type: string - left: - description: |- - When rendering a period in a calendar view: Specifies how far offset the rendered calendar event - should be from the left border of the day column, as a fractional amount of the width of the whole - day. This is useful to arrange multiple overlapping schedule entries such that all of them are - visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the - API currently does not enforce this. - example: 0.6 - type: - - 'null' - - number - number: - description: |- - Uniquely identifies this schedule entry in the period. This uses the day number, followed - by a period, followed by the cardinal number of the schedule entry in the numbering scheme - defined by the activity's category. - example: 1.b - readOnly: true - type: string - period: - description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' - example: /periods/1a2b3c4d - format: iri-reference - type: string - scheduleEntryNumber: - description: |- - The cardinal number of this schedule entry, when chronologically ordering all - schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if - the schedule entry is the second entry with roman numbering on a given day, its - number will be 2. - example: '2' - readOnly: true - type: integer - start: - description: 'Start date and time of the schedule entry.' - example: '2022-01-02T00:00:00+00:00' - format: date-time - type: string - width: - default: 1 - description: |- - When rendering a period in a calendar view: Specifies how wide the rendered calendar event should - be, as a fractional amount of the width of the whole day. This is useful to arrange multiple - overlapping schedule entries such that all of them are visible. Should be a decimal number - between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. - example: 0.4 - type: - - 'null' - - number - required: - - end - - start - type: object - ScheduleEntry.jsonld-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries: - deprecated: false - description: '' - properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - activity: - description: |- - The activity that will take place at the time defined by this schedule entry. Can not be changed - once the schedule entry is created. - example: /activities/1a2b3c4d - format: iri-reference - type: string - day: - description: 'The day on which this schedule entry starts.' - example: /days/1a2b3c4d - format: iri-reference - readOnly: true - type: - - 'null' - - string - dayNumber: - description: 'The day number of the day on which this schedule entry starts.' - example: '1' - readOnly: true - type: integer - end: - description: 'End date and time of the schedule entry.' - example: '2022-01-02T01:30:00+00:00' - format: date-time - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - left: - description: |- - When rendering a period in a calendar view: Specifies how far offset the rendered calendar event - should be from the left border of the day column, as a fractional amount of the width of the whole - day. This is useful to arrange multiple overlapping schedule entries such that all of them are - visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the - API currently does not enforce this. - example: 0.6 - type: - - 'null' - - number - number: - description: |- - Uniquely identifies this schedule entry in the period. This uses the day number, followed - by a period, followed by the cardinal number of the schedule entry in the numbering scheme - defined by the activity's category. - example: 1.b - readOnly: true - type: string - period: - description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' - example: /periods/1a2b3c4d - format: iri-reference - type: string - scheduleEntryNumber: - description: |- - The cardinal number of this schedule entry, when chronologically ordering all - schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if - the schedule entry is the second entry with roman numbering on a given day, its - number will be 2. - example: '2' - readOnly: true - type: integer - start: - description: 'Start date and time of the schedule entry.' - example: '2022-01-02T00:00:00+00:00' - format: date-time - type: string - width: - default: 1 - description: |- - When rendering a period in a calendar view: Specifies how wide the rendered calendar event should - be, as a fractional amount of the width of the whole day. This is useful to arrange multiple - overlapping schedule entries such that all of them are visible. Should be a decimal number - between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. - example: 0.4 - type: - - 'null' - - number - required: - - activity - - end - - start - type: object - ScheduleEntry.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes: - deprecated: false - description: '' - properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - activity: - description: |- - The activity that will take place at the time defined by this schedule entry. Can not be changed - once the schedule entry is created. - example: /activities/1a2b3c4d - format: iri-reference - type: string - day: - description: 'The day on which this schedule entry starts.' - example: /days/1a2b3c4d - format: iri-reference - readOnly: true - type: - - 'null' - - string - dayNumber: - description: 'The day number of the day on which this schedule entry starts.' - example: '1' - readOnly: true - type: integer - end: - description: 'End date and time of the schedule entry.' - example: '2022-01-02T01:30:00+00:00' - format: date-time - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - left: - description: |- - When rendering a period in a calendar view: Specifies how far offset the rendered calendar event - should be from the left border of the day column, as a fractional amount of the width of the whole - day. This is useful to arrange multiple overlapping schedule entries such that all of them are - visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the - API currently does not enforce this. - example: 0.6 - type: - - 'null' - - number - number: - description: |- - Uniquely identifies this schedule entry in the period. This uses the day number, followed - by a period, followed by the cardinal number of the schedule entry in the numbering scheme - defined by the activity's category. - example: 1.b - readOnly: true - type: string - period: - description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' - example: /periods/1a2b3c4d - format: iri-reference - type: string - scheduleEntryNumber: - description: |- - The cardinal number of this schedule entry, when chronologically ordering all - schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if - the schedule entry is the second entry with roman numbering on a given day, its - number will be 2. - example: '2' - readOnly: true - type: integer - start: - description: 'Start date and time of the schedule entry.' - example: '2022-01-02T00:00:00+00:00' - format: date-time - type: string - width: - default: 1 - description: |- - When rendering a period in a calendar view: Specifies how wide the rendered calendar event should - be, as a fractional amount of the width of the whole day. This is useful to arrange multiple - overlapping schedule entries such that all of them are visible. Should be a decimal number - between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. - example: 0.4 - type: - - 'null' - - number - required: - - activity - - end - - start - type: object - ScheduleEntry.jsonld-read_ScheduleEntry.Activity: - deprecated: false - description: |- - A calendar event in a period of the camp, at which some activity will take place. The start time - is specified as an offset in minutes from the period's start time. - properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - activity: - anyOf: - - - $ref: '#/components/schemas/Activity.jsonld-read_ScheduleEntry.Activity' - - - type: 'null' - readOnly: true - day: - description: 'The day on which this schedule entry starts.' - example: /days/1a2b3c4d - format: iri-reference - readOnly: true - type: - - 'null' - - string - dayNumber: - description: 'The day number of the day on which this schedule entry starts.' - example: '1' - readOnly: true - type: integer - end: - description: 'End date and time of the schedule entry.' - example: '2022-01-02T01:30:00+00:00' - format: date-time - type: string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - left: - description: |- - When rendering a period in a calendar view: Specifies how far offset the rendered calendar event - should be from the left border of the day column, as a fractional amount of the width of the whole - day. This is useful to arrange multiple overlapping schedule entries such that all of them are - visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the - API currently does not enforce this. - example: 0.6 - type: - - 'null' - - number - number: - description: |- - Uniquely identifies this schedule entry in the period. This uses the day number, followed - by a period, followed by the cardinal number of the schedule entry in the numbering scheme - defined by the activity's category. - example: 1.b - readOnly: true - type: string - period: - description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' - example: /periods/1a2b3c4d - format: iri-reference - type: string - scheduleEntryNumber: - description: |- - The cardinal number of this schedule entry, when chronologically ordering all - schedule entries WITH THE SAME NUMBERING STYLE that start on the same day. I.e. if - the schedule entry is the second entry with roman numbering on a given day, its - number will be 2. - example: '2' - readOnly: true - type: integer - start: - description: 'Start date and time of the schedule entry.' - example: '2022-01-02T00:00:00+00:00' - format: date-time - type: string - width: - default: 1 - description: |- - When rendering a period in a calendar view: Specifies how wide the rendered calendar event should - be, as a fractional amount of the width of the whole day. This is useful to arrange multiple - overlapping schedule entries such that all of them are visible. Should be a decimal number - between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. - example: 0.4 - type: - - 'null' - - number - required: - - activity - - end - - start - type: object - ScheduleEntry.jsonld-write_create: - deprecated: false - description: |- - A calendar event in a period of the camp, at which some activity will take place. The start time - is specified as an offset in minutes from the period's start time. - properties: - activity: - description: |- - The activity that will take place at the time defined by this schedule entry. Can not be changed - once the schedule entry is created. - example: /activities/1a2b3c4d - format: iri-reference - type: string - end: - description: 'End date and time of the schedule entry.' - example: '2022-01-02T01:30:00+00:00' - format: date-time - type: string - left: - description: |- - When rendering a period in a calendar view: Specifies how far offset the rendered calendar event - should be from the left border of the day column, as a fractional amount of the width of the whole - day. This is useful to arrange multiple overlapping schedule entries such that all of them are - visible. Should be a decimal number between 0 and 1, and left+width should not exceed 1, but the - API currently does not enforce this. - example: 0.6 - type: - - 'null' - - number - period: - description: 'The time period which this schedule entry is part of. Must belong to the same camp as the activity.' - example: /periods/1a2b3c4d - format: iri-reference - type: string - start: - description: 'Start date and time of the schedule entry.' - example: '2022-01-02T00:00:00+00:00' - format: date-time - type: string - width: - default: 1 - description: |- - When rendering a period in a calendar view: Specifies how wide the rendered calendar event should - be, as a fractional amount of the width of the whole day. This is useful to arrange multiple - overlapping schedule entries such that all of them are visible. Should be a decimal number - between 0 and 1, and left+width should not exceed 1, but the API currently does not enforce this. - example: 0.4 - type: - - 'null' - - number - required: - - activity - - end - - start - type: object - SingleText-read: - deprecated: false - description: '' - properties: - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true - type: string - data: - default: '{"html":""}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - html: 'my example text' - items: - type: string - type: - - array - - 'null' - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference - readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - children - - contentType - - data - - position - type: object - SingleText-write_create: - deprecated: false - description: '' - properties: - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - data: - default: '{"html":""}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - html: 'my example text' - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - contentType - - data - - parent - - position - type: object - SingleText-write_update: - deprecated: false - description: '' - properties: - data: - default: '{"html":""}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - html: 'my example text' - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - data - - position - type: object - SingleText.jsonapi-read: - deprecated: false - description: '' - properties: - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true - type: string - data: - default: '{"html":""}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - html: 'my example text' - items: - type: string - type: - - array - - 'null' - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference - readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - children - - contentType - - data - - position - type: object - SingleText.jsonapi-write_create: - deprecated: false - description: '' - properties: - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - data: - default: '{"html":""}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - html: 'my example text' - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - contentType - - data - - parent - - position - type: object - SingleText.jsonapi-write_update: - deprecated: false - description: '' - properties: - data: - default: '{"html":""}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - html: 'my example text' - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - data - - position - type: object - SingleText.jsonhal-read: - deprecated: false - description: '' - properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true - type: string - data: - default: '{"html":""}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - html: 'my example text' - items: - type: string - type: - - array - - 'null' - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference - readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - children - - contentType - - data - - position - type: object - SingleText.jsonhal-write_create: - deprecated: false - description: '' - properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - data: - default: '{"html":""}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - html: 'my example text' - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - contentType - - data - - parent - - position - type: object - SingleText.jsonld-read: - deprecated: false - description: '' - properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true - type: string - data: - default: '{"html":""}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - html: 'my example text' - items: - type: string - type: - - array - - 'null' - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference - readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - children - - contentType - - data - - position - type: object - SingleText.jsonld-write_create: - deprecated: false - description: '' - properties: - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - data: - default: '{"html":""}' - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - html: 'my example text' - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - contentType - - data - - parent - - position - type: object - Storyboard-read: - deprecated: false - description: '' - properties: - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true - type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - sections: - 186b7ff2-7470-4de4-8783-082c2c189fcd: - column1: '' - column2Html: '' - column3: '' - position: 0 - items: - type: string - type: - - array - - 'null' - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference - readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - children - - contentType - - position - type: object - Storyboard-write_create: - deprecated: false - description: '' - properties: - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - sections: - 186b7ff2-7470-4de4-8783-082c2c189fcd: - column1: '' - column2Html: '' - column3: '' - position: 0 - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - contentType - - parent - - position - type: object - Storyboard-write_update: - deprecated: false - description: '' - properties: - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - sections: - 186b7ff2-7470-4de4-8783-082c2c189fcd: - column1: '' - column2Html: '' - column3: '' - position: 0 - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - data - - position - type: object - Storyboard.jsonapi-read: - deprecated: false - description: '' - properties: - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true - type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - sections: - 186b7ff2-7470-4de4-8783-082c2c189fcd: - column1: '' - column2Html: '' - column3: '' - position: 0 - items: - type: string - type: - - array - - 'null' - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference - readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - children - - contentType - - position - type: object - Storyboard.jsonapi-write_create: - deprecated: false - description: '' - properties: - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - sections: - 186b7ff2-7470-4de4-8783-082c2c189fcd: - column1: '' - column2Html: '' - column3: '' - position: 0 - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - contentType - - parent - - position - type: object - Storyboard.jsonapi-write_update: - deprecated: false - description: '' - properties: - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - sections: - 186b7ff2-7470-4de4-8783-082c2c189fcd: - column1: '' - column2Html: '' - column3: '' - position: 0 - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - data - - position - type: object - Storyboard.jsonhal-read: - deprecated: false - description: '' - properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true - type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - sections: - 186b7ff2-7470-4de4-8783-082c2c189fcd: - column1: '' - column2Html: '' - column3: '' - position: 0 - items: - type: string - type: - - array - - 'null' - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference - readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - children - - contentType - - position - type: object - Storyboard.jsonhal-write_create: - deprecated: false - description: '' - properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - sections: - 186b7ff2-7470-4de4-8783-082c2c189fcd: - column1: '' - column2Html: '' - column3: '' - position: 0 - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - contentType - - parent - - position - type: object - Storyboard.jsonld-read: - deprecated: false - description: '' - properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - children: - description: 'All content nodes that are direct children of this content node.' - example: '["/content_nodes/1a2b3c4d"]' - items: - example: 'https://example.com/' - format: iri-reference - type: string - readOnly: true - type: array - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - contentTypeName: - description: 'The name of the content type of this content node. Read-only, for convenience.' - example: SafetyConcept - readOnly: true - type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - sections: - 186b7ff2-7470-4de4-8783-082c2c189fcd: - column1: '' - column2Html: '' - column3: '' - position: 0 - items: - type: string - type: - - array - - 'null' - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - root: - description: |- - The content node that is the root of the content node tree. Refers to itself in case this - content node is the root. - example: /content_nodes/1a2b3c4d - format: iri-reference - readOnly: true - type: - - 'null' - - string - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - children - - contentType - - position - type: object - Storyboard.jsonld-write_create: - deprecated: false - description: '' - properties: - contentType: - description: |- - Defines the type of this content node. There is a fixed list of types that are implemented - in eCamp. Depending on the type, different content data and different slots may be allowed - in a content node. The content type may not be changed once the content node is created. - example: /content_types/1a2b3c4d - format: iri-reference - type: string - data: - description: |- - Holds the actual data of the content node - (overridden from abstract class in order to add specific validation). - example: - sections: - 186b7ff2-7470-4de4-8783-082c2c189fcd: - column1: '' - column2Html: '' - column3: '' - position: 0 - items: - type: string - type: - - array - - 'null' - instanceName: - description: |- - An optional name for this content node. This is useful when planning e.g. an alternative - version of the programme suited for bad weather, in addition to the normal version. - example: Schlechtwetterprogramm - maxLength: 32 - type: - - 'null' - - string - parent: - description: |- - The parent to which this content node belongs. Is null in case this content node is the - root of a content node tree. For non-root content nodes, the parent can be changed, as long - as the new parent is in the same camp as the old one. - example: /content_nodes/1a2b3c4d - format: iri-reference - type: - - 'null' - - string - position: - default: -1 - description: |- - A whole number used for ordering multiple content nodes that are in the same slot of the - same parent. The API does not guarantee the uniqueness of parent+slot+position. - example: -1 - type: integer - slot: - description: |- - The name of the slot in the parent in which this content node resides. The valid slot names - are defined by the content type of the parent. - example: '1' - maxLength: 32 - type: - - 'null' - - string - required: - - contentType - - parent - - position - type: object - User-activate: - deprecated: false - description: |- - A person using eCamp. - The properties available for all other eCamp users are here. - properties: - activationKey: - description: 'User-Input for activation.' - type: - - 'null' - - string - writeOnly: true - type: object - User-read: - deprecated: false - description: |- - A person using eCamp. - The properties available for all other eCamp users are here. - properties: - displayName: - description: 'A displayable name of the user.' - example: 'Robert Baden-Powell' - readOnly: true - type: - - 'null' - - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - profile: - example: - email: bi-pi@example.com - firstname: Robert - language: en - nickname: Bi-Pi - surname: Baden-Powell - format: iri-reference - type: string - type: object - User-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: - deprecated: false - description: '' - properties: - displayName: - description: 'A displayable name of the user.' - example: 'Robert Baden-Powell' - readOnly: true - type: - - 'null' - - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - profile: - example: - email: bi-pi@example.com - firstname: Robert - language: en - nickname: Bi-Pi - surname: Baden-Powell - format: iri-reference - type: string - type: object - User-read_CampCollaboration.Camp_CampCollaboration.User: - deprecated: false - description: '' - properties: - displayName: - description: 'A displayable name of the user.' - example: 'Robert Baden-Powell' - readOnly: true - type: - - 'null' - - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - profile: - example: - email: bi-pi@example.com - firstname: Robert - language: en - nickname: Bi-Pi - surname: Baden-Powell - format: iri-reference - type: string - type: object - User-read_User.create: - deprecated: false - description: |- - A person using eCamp. - The properties available for all other eCamp users are here. - properties: - displayName: - description: 'A displayable name of the user.' - example: 'Robert Baden-Powell' - readOnly: true - type: - - 'null' - - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - profile: - $ref: '#/components/schemas/Profile-read_User.create' - readOnly: true - required: - - profile - type: object - User-write: - deprecated: false - description: |- - A person using eCamp. - The properties available for all other eCamp users are here. - properties: - password: - description: |- - A new password for this user. At least 12 characters, as is explicitly recommended by OWASP: - https://github.com/OWASP/ASVS/blob/master/4.0/en/0x11-V2-Authentication.md#v21-password-security - 2.1.1: Verify that user set passwords are at least 12 characters in length (after multiple spaces are combined). - example: learning-by-doing-101 - maxLength: 128 - minLength: 12 - type: - - 'null' - - string - writeOnly: true - type: object - User-write_create: - deprecated: false - description: |- - A person using eCamp. - The properties available for all other eCamp users are here. - properties: - password: - description: |- - A new password for this user. At least 12 characters, as is explicitly recommended by OWASP: - https://github.com/OWASP/ASVS/blob/master/4.0/en/0x11-V2-Authentication.md#v21-password-security - 2.1.1: Verify that user set passwords are at least 12 characters in length (after multiple spaces are combined). - example: learning-by-doing-101 - maxLength: 128 - minLength: 12 - type: - - 'null' - - string - writeOnly: true - profile: - $ref: '#/components/schemas/Profile-write_create' - example: - email: bi-pi@example.com - firstname: Robert - language: en - nickname: Bi-Pi - surname: Baden-Powell - recaptchaToken: - description: 'ReCaptchaToken used on Register-View.' - type: - - 'null' - - string - writeOnly: true - required: - - password - - profile - type: object - User.jsonapi-activate: - deprecated: false - description: |- - A person using eCamp. - The properties available for all other eCamp users are here. - properties: - activationKey: - description: 'User-Input for activation.' - type: - - 'null' - - string - writeOnly: true - type: object - User.jsonapi-read: - deprecated: false - description: |- - A person using eCamp. - The properties available for all other eCamp users are here. - properties: - displayName: - description: 'A displayable name of the user.' - example: 'Robert Baden-Powell' - readOnly: true - type: - - 'null' - - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - profile: - example: - email: bi-pi@example.com - firstname: Robert - language: en - nickname: Bi-Pi - surname: Baden-Powell - format: iri-reference - type: string - type: object - User.jsonapi-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: - deprecated: false - description: '' - properties: - displayName: - description: 'A displayable name of the user.' - example: 'Robert Baden-Powell' - readOnly: true - type: - - 'null' - - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - profile: - example: - email: bi-pi@example.com - firstname: Robert - language: en - nickname: Bi-Pi - surname: Baden-Powell - format: iri-reference - type: string - type: object - User.jsonapi-read_CampCollaboration.Camp_CampCollaboration.User: - deprecated: false - description: '' - properties: - displayName: - description: 'A displayable name of the user.' - example: 'Robert Baden-Powell' - readOnly: true - type: - - 'null' - - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - profile: - example: - email: bi-pi@example.com - firstname: Robert - language: en - nickname: Bi-Pi - surname: Baden-Powell - format: iri-reference - type: string - type: object - User.jsonapi-read_User.create: - deprecated: false - description: |- - A person using eCamp. - The properties available for all other eCamp users are here. - properties: - displayName: - description: 'A displayable name of the user.' - example: 'Robert Baden-Powell' - readOnly: true - type: - - 'null' - - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - profile: - $ref: '#/components/schemas/Profile.jsonapi-read_User.create' - readOnly: true - required: - - profile - type: object - User.jsonapi-write: - deprecated: false - description: |- - A person using eCamp. - The properties available for all other eCamp users are here. - properties: - password: - description: |- - A new password for this user. At least 12 characters, as is explicitly recommended by OWASP: - https://github.com/OWASP/ASVS/blob/master/4.0/en/0x11-V2-Authentication.md#v21-password-security - 2.1.1: Verify that user set passwords are at least 12 characters in length (after multiple spaces are combined). - example: learning-by-doing-101 - maxLength: 128 - minLength: 12 - type: - - 'null' - - string - writeOnly: true - type: object - User.jsonapi-write_create: - deprecated: false - description: |- - A person using eCamp. - The properties available for all other eCamp users are here. - properties: - password: - description: |- - A new password for this user. At least 12 characters, as is explicitly recommended by OWASP: - https://github.com/OWASP/ASVS/blob/master/4.0/en/0x11-V2-Authentication.md#v21-password-security - 2.1.1: Verify that user set passwords are at least 12 characters in length (after multiple spaces are combined). - example: learning-by-doing-101 - maxLength: 128 - minLength: 12 - type: - - 'null' - - string - writeOnly: true - profile: - $ref: '#/components/schemas/Profile.jsonapi-write_create' - example: - email: bi-pi@example.com - firstname: Robert - language: en - nickname: Bi-Pi - surname: Baden-Powell - recaptchaToken: - description: 'ReCaptchaToken used on Register-View.' - type: - - 'null' - - string - writeOnly: true - required: - - password - - profile - type: object - User.jsonhal-read: - deprecated: false - description: |- - A person using eCamp. - The properties available for all other eCamp users are here. - properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - displayName: - description: 'A displayable name of the user.' - example: 'Robert Baden-Powell' - readOnly: true - type: - - 'null' - - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - profile: - example: - email: bi-pi@example.com - firstname: Robert - language: en - nickname: Bi-Pi - surname: Baden-Powell - format: iri-reference - type: string - type: object - User.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: - deprecated: false - description: '' - properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - displayName: - description: 'A displayable name of the user.' - example: 'Robert Baden-Powell' - readOnly: true - type: - - 'null' - - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - profile: - example: - email: bi-pi@example.com - firstname: Robert - language: en - nickname: Bi-Pi - surname: Baden-Powell - format: iri-reference - type: string - type: object - User.jsonhal-read_CampCollaboration.Camp_CampCollaboration.User: + description: 'Retrieves the collection of Activity resources.' + operationId: api_activities_get_collection + parameters: + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: false + in: query + name: camp + required: false + schema: + type: string + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: true + in: query + name: 'camp[]' + required: false + schema: + items: + type: string + type: array + style: form + responses: + 200: + content: + application/hal+json: + schema: + properties: + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/Activity.jsonhal-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' }, type: array } }, type: object }, { type: object }] } + _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } + itemsPerPage: { minimum: 0, type: integer } + totalItems: { minimum: 0, type: integer } + required: + - _embedded + - _links + type: object + application/json: + schema: + items: + $ref: '#/components/schemas/Activity-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' + type: array + application/ld+json: + schema: + properties: + 'hydra:member': { items: { $ref: '#/components/schemas/Activity.jsonld-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' }, type: array } + 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } + 'hydra:totalItems': { minimum: 0, type: integer } + 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } + required: + - 'hydra:member' + type: object + application/vnd.api+json: + schema: + items: + $ref: '#/components/schemas/Activity.jsonapi' + type: array + text/html: + schema: + items: + $ref: '#/components/schemas/Activity-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' + type: array + description: 'Activity collection' + summary: 'Retrieves the collection of Activity resources.' + tags: + - Activity + parameters: [] + post: deprecated: false - description: '' - properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - displayName: - description: 'A displayable name of the user.' - example: 'Robert Baden-Powell' - readOnly: true - type: - - 'null' - - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - profile: - example: - email: bi-pi@example.com - firstname: Robert - language: en - nickname: Bi-Pi - surname: Baden-Powell - format: iri-reference - type: string - type: object - User.jsonhal-read_User.create: + description: 'Creates a Activity resource.' + operationId: api_activities_post + parameters: [] + requestBody: + content: + application/hal+json: + schema: + $ref: '#/components/schemas/Activity.jsonhal-write_create' + application/json: + schema: + $ref: '#/components/schemas/Activity-write_create' + application/ld+json: + schema: + $ref: '#/components/schemas/Activity.jsonld-write_create' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Activity.jsonapi' + text/html: + schema: + $ref: '#/components/schemas/Activity-write_create' + description: 'The new Activity resource' + required: true + responses: + 201: + content: + application/hal+json: + schema: + $ref: '#/components/schemas/Activity.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + application/json: + schema: + $ref: '#/components/schemas/Activity-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + application/ld+json: + schema: + $ref: '#/components/schemas/Activity.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Activity.jsonapi' + text/html: + schema: + $ref: '#/components/schemas/Activity-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + description: 'Activity resource created' + links: [] + 400: + description: 'Invalid input' + 422: + description: 'Unprocessable entity' + summary: 'Creates a Activity resource.' + tags: + - Activity + '/activities/{id}': + delete: deprecated: false - description: |- - A person using eCamp. - The properties available for all other eCamp users are here. - properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - displayName: - description: 'A displayable name of the user.' - example: 'Robert Baden-Powell' - readOnly: true - type: - - 'null' - - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - profile: - $ref: '#/components/schemas/Profile.jsonhal-read_User.create' - readOnly: true - required: - - profile - type: object - User.jsonhal-write_create: + description: 'Removes the Activity resource.' + operationId: api_activities_id_delete + parameters: + - + allowEmptyValue: false + allowReserved: false + deprecated: false + description: 'Activity identifier' + explode: false + in: path + name: id + required: true + schema: + type: string + style: simple + responses: + 204: + description: 'Activity resource deleted' + 404: + description: 'Resource not found' + summary: 'Removes the Activity resource.' + tags: + - Activity + get: deprecated: false - description: |- - A person using eCamp. - The properties available for all other eCamp users are here. - properties: - _links: - properties: - self: - properties: - href: - format: iri-reference - type: string - type: object - type: object - password: - description: |- - A new password for this user. At least 12 characters, as is explicitly recommended by OWASP: - https://github.com/OWASP/ASVS/blob/master/4.0/en/0x11-V2-Authentication.md#v21-password-security - 2.1.1: Verify that user set passwords are at least 12 characters in length (after multiple spaces are combined). - example: learning-by-doing-101 - maxLength: 128 - minLength: 12 - type: - - 'null' - - string - writeOnly: true - profile: - $ref: '#/components/schemas/Profile.jsonhal-write_create' - example: - email: bi-pi@example.com - firstname: Robert - language: en - nickname: Bi-Pi - surname: Baden-Powell - recaptchaToken: - description: 'ReCaptchaToken used on Register-View.' - type: - - 'null' - - string - writeOnly: true - required: - - password - - profile - type: object - User.jsonld-read: + description: 'Retrieves a Activity resource.' + operationId: api_activities_id_get + parameters: + - + allowEmptyValue: false + allowReserved: false + deprecated: false + description: 'Activity identifier' + explode: false + in: path + name: id + required: true + schema: + type: string + style: simple + responses: + 200: + content: + application/hal+json: + schema: + $ref: '#/components/schemas/Activity.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + application/json: + schema: + $ref: '#/components/schemas/Activity-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + application/ld+json: + schema: + $ref: '#/components/schemas/Activity.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Activity.jsonapi' + text/html: + schema: + $ref: '#/components/schemas/Activity-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + description: 'Activity resource' + 404: + description: 'Resource not found' + summary: 'Retrieves a Activity resource.' + tags: + - Activity + parameters: [] + patch: deprecated: false - description: |- - A person using eCamp. - The properties available for all other eCamp users are here. - properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - displayName: - description: 'A displayable name of the user.' - example: 'Robert Baden-Powell' - readOnly: true - type: - - 'null' - - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - profile: - example: - email: bi-pi@example.com - firstname: Robert - language: en - nickname: Bi-Pi - surname: Baden-Powell - format: iri-reference - type: string - type: object - User.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User: + description: 'Updates the Activity resource.' + operationId: api_activities_id_patch + parameters: + - + allowEmptyValue: false + allowReserved: false + deprecated: false + description: 'Activity identifier' + explode: false + in: path + name: id + required: true + schema: + type: string + style: simple + requestBody: + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/Activity-write' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Activity.jsonapi' + description: 'The updated Activity resource' + required: true + responses: + 200: + content: + application/hal+json: + schema: + $ref: '#/components/schemas/Activity.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + application/json: + schema: + $ref: '#/components/schemas/Activity-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + application/ld+json: + schema: + $ref: '#/components/schemas/Activity.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Activity.jsonapi' + text/html: + schema: + $ref: '#/components/schemas/Activity-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + description: 'Activity resource updated' + links: [] + 400: + description: 'Invalid input' + 404: + description: 'Resource not found' + 422: + description: 'Unprocessable entity' + summary: 'Updates the Activity resource.' + tags: + - Activity + /activity_progress_labels: + get: deprecated: false - description: '' - properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - + description: 'Retrieves the collection of ActivityProgressLabel resources.' + operationId: api_activity_progress_labels_get_collection + parameters: + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: false + in: query + name: camp + required: false + schema: + type: string + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: true + in: query + name: 'camp[]' + required: false + schema: + items: type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - displayName: - description: 'A displayable name of the user.' - example: 'Robert Baden-Powell' - readOnly: true - type: - - 'null' - - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - profile: - example: - email: bi-pi@example.com - firstname: Robert - language: en - nickname: Bi-Pi - surname: Baden-Powell - format: iri-reference - type: string - type: object - User.jsonld-read_CampCollaboration.Camp_CampCollaboration.User: + type: array + style: form + responses: + 200: + content: + application/hal+json: + schema: + properties: + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/ActivityProgressLabel.jsonhal-read' }, type: array } }, type: object }, { type: object }] } + _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } + itemsPerPage: { minimum: 0, type: integer } + totalItems: { minimum: 0, type: integer } + required: + - _embedded + - _links + type: object + application/json: + schema: + items: + $ref: '#/components/schemas/ActivityProgressLabel-read' + type: array + application/ld+json: + schema: + properties: + 'hydra:member': { items: { $ref: '#/components/schemas/ActivityProgressLabel.jsonld-read' }, type: array } + 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } + 'hydra:totalItems': { minimum: 0, type: integer } + 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } + required: + - 'hydra:member' + type: object + application/vnd.api+json: + schema: + items: + $ref: '#/components/schemas/ActivityProgressLabel.jsonapi' + type: array + text/html: + schema: + items: + $ref: '#/components/schemas/ActivityProgressLabel-read' + type: array + description: 'ActivityProgressLabel collection' + summary: 'Retrieves the collection of ActivityProgressLabel resources.' + tags: + - ActivityProgressLabel + parameters: [] + post: + deprecated: false + description: 'Creates a ActivityProgressLabel resource.' + operationId: api_activity_progress_labels_post + parameters: [] + requestBody: + content: + application/hal+json: + schema: + $ref: '#/components/schemas/ActivityProgressLabel.jsonhal-write_create' + application/json: + schema: + $ref: '#/components/schemas/ActivityProgressLabel-write_create' + application/ld+json: + schema: + $ref: '#/components/schemas/ActivityProgressLabel.jsonld-write_create' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/ActivityProgressLabel.jsonapi' + text/html: + schema: + $ref: '#/components/schemas/ActivityProgressLabel-write_create' + description: 'The new ActivityProgressLabel resource' + required: true + responses: + 201: + content: + application/hal+json: + schema: + $ref: '#/components/schemas/ActivityProgressLabel.jsonhal-read' + application/json: + schema: + $ref: '#/components/schemas/ActivityProgressLabel-read' + application/ld+json: + schema: + $ref: '#/components/schemas/ActivityProgressLabel.jsonld-read' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/ActivityProgressLabel.jsonapi' + text/html: + schema: + $ref: '#/components/schemas/ActivityProgressLabel-read' + description: 'ActivityProgressLabel resource created' + links: [] + 400: + description: 'Invalid input' + 422: + description: 'Unprocessable entity' + summary: 'Creates a ActivityProgressLabel resource.' + tags: + - ActivityProgressLabel + '/activity_progress_labels/{id}': + delete: deprecated: false - description: '' - properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - displayName: - description: 'A displayable name of the user.' - example: 'Robert Baden-Powell' - readOnly: true - type: - - 'null' - - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - profile: - example: - email: bi-pi@example.com - firstname: Robert - language: en - nickname: Bi-Pi - surname: Baden-Powell - format: iri-reference - type: string - type: object - User.jsonld-read_User.create: + description: 'Removes the ActivityProgressLabel resource.' + operationId: api_activity_progress_labels_id_delete + parameters: + - + allowEmptyValue: false + allowReserved: false + deprecated: false + description: 'ActivityProgressLabel identifier' + explode: false + in: path + name: id + required: true + schema: + type: string + style: simple + responses: + 204: + description: 'ActivityProgressLabel resource deleted' + 404: + description: 'Resource not found' + summary: 'Removes the ActivityProgressLabel resource.' + tags: + - ActivityProgressLabel + get: deprecated: false - description: |- - A person using eCamp. - The properties available for all other eCamp users are here. - properties: - '@context': - oneOf: - - - additionalProperties: true - properties: - '@vocab': - type: string - hydra: - enum: ['http://www.w3.org/ns/hydra/core#'] - type: string - required: - - '@vocab' - - hydra - type: object - - - type: string - readOnly: true - '@id': - readOnly: true - type: string - '@type': - readOnly: true - type: string - displayName: - description: 'A displayable name of the user.' - example: 'Robert Baden-Powell' - readOnly: true - type: - - 'null' - - string - id: - description: 'An internal, unique, randomly generated identifier of this entity.' - example: 1a2b3c4d - maxLength: 16 - readOnly: true - type: string - profile: - $ref: '#/components/schemas/Profile.jsonld-read_User.create' - readOnly: true - required: - - profile - type: object - User.jsonld-write_create: + description: 'Retrieves a ActivityProgressLabel resource.' + operationId: api_activity_progress_labels_id_get + parameters: + - + allowEmptyValue: false + allowReserved: false + deprecated: false + description: 'ActivityProgressLabel identifier' + explode: false + in: path + name: id + required: true + schema: + type: string + style: simple + responses: + 200: + content: + application/hal+json: + schema: + $ref: '#/components/schemas/ActivityProgressLabel.jsonhal-read' + application/json: + schema: + $ref: '#/components/schemas/ActivityProgressLabel-read' + application/ld+json: + schema: + $ref: '#/components/schemas/ActivityProgressLabel.jsonld-read' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/ActivityProgressLabel.jsonapi' + text/html: + schema: + $ref: '#/components/schemas/ActivityProgressLabel-read' + description: 'ActivityProgressLabel resource' + 404: + description: 'Resource not found' + summary: 'Retrieves a ActivityProgressLabel resource.' + tags: + - ActivityProgressLabel + parameters: [] + patch: deprecated: false - description: |- - A person using eCamp. - The properties available for all other eCamp users are here. - properties: - password: - description: |- - A new password for this user. At least 12 characters, as is explicitly recommended by OWASP: - https://github.com/OWASP/ASVS/blob/master/4.0/en/0x11-V2-Authentication.md#v21-password-security - 2.1.1: Verify that user set passwords are at least 12 characters in length (after multiple spaces are combined). - example: learning-by-doing-101 - maxLength: 128 - minLength: 12 - type: - - 'null' - - string - writeOnly: true - profile: - $ref: '#/components/schemas/Profile.jsonld-write_create' - example: - email: bi-pi@example.com - firstname: Robert - language: en - nickname: Bi-Pi - surname: Baden-Powell - recaptchaToken: - description: 'ReCaptchaToken used on Register-View.' - type: - - 'null' - - string - writeOnly: true - required: - - password - - profile - type: object - securitySchemes: - JWT: - bearerFormat: JWT - scheme: bearer - type: http -info: - description: '' - title: 'eCamp v3' - version: 1.0.0 -openapi: 3.1.0 -paths: - /activities: + description: 'Updates the ActivityProgressLabel resource.' + operationId: api_activity_progress_labels_id_patch + parameters: + - + allowEmptyValue: false + allowReserved: false + deprecated: false + description: 'ActivityProgressLabel identifier' + explode: false + in: path + name: id + required: true + schema: + type: string + style: simple + requestBody: + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/ActivityProgressLabel-write' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/ActivityProgressLabel.jsonapi' + description: 'The updated ActivityProgressLabel resource' + required: true + responses: + 200: + content: + application/hal+json: + schema: + $ref: '#/components/schemas/ActivityProgressLabel.jsonhal-read' + application/json: + schema: + $ref: '#/components/schemas/ActivityProgressLabel-read' + application/ld+json: + schema: + $ref: '#/components/schemas/ActivityProgressLabel.jsonld-read' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/ActivityProgressLabel.jsonapi' + text/html: + schema: + $ref: '#/components/schemas/ActivityProgressLabel-read' + description: 'ActivityProgressLabel resource updated' + links: [] + 400: + description: 'Invalid input' + 404: + description: 'Resource not found' + 422: + description: 'Unprocessable entity' + summary: 'Updates the ActivityProgressLabel resource.' + tags: + - ActivityProgressLabel + /activity_responsibles: get: deprecated: false - description: 'Retrieves the collection of Activity resources.' - operationId: api_activities_get_collection + description: 'Retrieves the collection of ActivityResponsible resources.' + operationId: api_activity_responsibles_get_collection parameters: - allowEmptyValue: true @@ -25030,7 +21390,19 @@ paths: description: '' explode: false in: query - name: camp + name: activity + required: false + schema: + type: string + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: false + in: query + name: activity.camp required: false schema: type: string @@ -25042,7 +21414,21 @@ paths: description: '' explode: true in: query - name: 'camp[]' + name: 'activity.camp[]' + required: false + schema: + items: + type: string + type: array + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: true + in: query + name: 'activity[]' required: false schema: items: @@ -25055,7 +21441,7 @@ paths: application/hal+json: schema: properties: - _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/Activity.jsonhal-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' }, type: array } }, type: object }, { type: object }] } + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/ActivityResponsible.jsonhal-read' }, type: array } }, type: object }, { type: object }] } _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } itemsPerPage: { minimum: 0, type: integer } totalItems: { minimum: 0, type: integer } @@ -25066,12 +21452,12 @@ paths: application/json: schema: items: - $ref: '#/components/schemas/Activity-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' + $ref: '#/components/schemas/ActivityResponsible-read' type: array application/ld+json: schema: properties: - 'hydra:member': { items: { $ref: '#/components/schemas/Activity.jsonld-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' }, type: array } + 'hydra:member': { items: { $ref: '#/components/schemas/ActivityResponsible.jsonld-read' }, type: array } 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } 'hydra:totalItems': { minimum: 0, type: integer } 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } @@ -25081,80 +21467,80 @@ paths: application/vnd.api+json: schema: items: - $ref: '#/components/schemas/Activity.jsonapi-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' + $ref: '#/components/schemas/ActivityResponsible.jsonapi' type: array text/html: schema: items: - $ref: '#/components/schemas/Activity-read_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries' + $ref: '#/components/schemas/ActivityResponsible-read' type: array - description: 'Activity collection' - summary: 'Retrieves the collection of Activity resources.' + description: 'ActivityResponsible collection' + summary: 'Retrieves the collection of ActivityResponsible resources.' tags: - - Activity + - ActivityResponsible parameters: [] post: deprecated: false - description: 'Creates a Activity resource.' - operationId: api_activities_post + description: 'Creates a ActivityResponsible resource.' + operationId: api_activity_responsibles_post parameters: [] requestBody: content: application/hal+json: schema: - $ref: '#/components/schemas/Activity.jsonhal-write_create' + $ref: '#/components/schemas/ActivityResponsible.jsonhal-write' application/json: schema: - $ref: '#/components/schemas/Activity-write_create' + $ref: '#/components/schemas/ActivityResponsible-write' application/ld+json: schema: - $ref: '#/components/schemas/Activity.jsonld-write_create' + $ref: '#/components/schemas/ActivityResponsible.jsonld-write' application/vnd.api+json: schema: - $ref: '#/components/schemas/Activity.jsonapi-write_create' + $ref: '#/components/schemas/ActivityResponsible.jsonapi' text/html: schema: - $ref: '#/components/schemas/Activity-write_create' - description: 'The new Activity resource' + $ref: '#/components/schemas/ActivityResponsible-write' + description: 'The new ActivityResponsible resource' required: true responses: 201: content: application/hal+json: schema: - $ref: '#/components/schemas/Activity.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + $ref: '#/components/schemas/ActivityResponsible.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/Activity-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + $ref: '#/components/schemas/ActivityResponsible-read' application/ld+json: schema: - $ref: '#/components/schemas/Activity.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + $ref: '#/components/schemas/ActivityResponsible.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/Activity.jsonapi-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + $ref: '#/components/schemas/ActivityResponsible.jsonapi' text/html: schema: - $ref: '#/components/schemas/Activity-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' - description: 'Activity resource created' + $ref: '#/components/schemas/ActivityResponsible-read' + description: 'ActivityResponsible resource created' links: [] 400: description: 'Invalid input' 422: description: 'Unprocessable entity' - summary: 'Creates a Activity resource.' + summary: 'Creates a ActivityResponsible resource.' tags: - - Activity - '/activities/{id}': + - ActivityResponsible + '/activity_responsibles/{id}': delete: deprecated: false - description: 'Removes the Activity resource.' - operationId: api_activities_id_delete + description: 'Removes the ActivityResponsible resource.' + operationId: api_activity_responsibles_id_delete parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'Activity identifier' + description: 'ActivityResponsible identifier' explode: false in: path name: id @@ -25164,22 +21550,22 @@ paths: style: simple responses: 204: - description: 'Activity resource deleted' + description: 'ActivityResponsible resource deleted' 404: description: 'Resource not found' - summary: 'Removes the Activity resource.' + summary: 'Removes the ActivityResponsible resource.' tags: - - Activity + - ActivityResponsible get: deprecated: false - description: 'Retrieves a Activity resource.' - operationId: api_activities_id_get + description: 'Retrieves a ActivityResponsible resource.' + operationId: api_activity_responsibles_id_get parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'Activity identifier' + description: 'ActivityResponsible identifier' explode: false in: path name: id @@ -25192,245 +21578,181 @@ paths: content: application/hal+json: schema: - $ref: '#/components/schemas/Activity.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + $ref: '#/components/schemas/ActivityResponsible.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/Activity-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + $ref: '#/components/schemas/ActivityResponsible-read' application/ld+json: schema: - $ref: '#/components/schemas/Activity.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + $ref: '#/components/schemas/ActivityResponsible.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/Activity.jsonapi-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' + $ref: '#/components/schemas/ActivityResponsible.jsonapi' text/html: schema: - $ref: '#/components/schemas/Activity-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' - description: 'Activity resource' + $ref: '#/components/schemas/ActivityResponsible-read' + description: 'ActivityResponsible resource' 404: description: 'Resource not found' - summary: 'Retrieves a Activity resource.' + summary: 'Retrieves a ActivityResponsible resource.' tags: - - Activity + - ActivityResponsible parameters: [] - patch: - deprecated: false - description: 'Updates the Activity resource.' - operationId: api_activities_id_patch + /auth/cevidb: + get: + operationId: oauthCevidbRedirect parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'Activity identifier' + description: '' explode: false in: path - name: id - required: true + name: callback + required: false schema: type: string style: simple - requestBody: - content: - application/merge-patch+json: - schema: - $ref: '#/components/schemas/Activity-write' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/Activity.jsonapi-write' - description: 'The updated Activity resource' - required: true responses: - 200: - content: - application/hal+json: - schema: - $ref: '#/components/schemas/Activity.jsonhal-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' - application/json: - schema: - $ref: '#/components/schemas/Activity-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' - application/ld+json: - schema: - $ref: '#/components/schemas/Activity.jsonld-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/Activity.jsonapi-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' - text/html: - schema: - $ref: '#/components/schemas/Activity-read_Activity.Category_Activity.ActivityProgressLabel_Activity.ActivityResponsibles_Activity.ScheduleEntries_Activity.ContentNodes' - description: 'Activity resource updated' - links: [] - 400: - description: 'Invalid input' - 404: - description: 'Resource not found' - 422: - description: 'Unprocessable entity' - summary: 'Updates the Activity resource.' + 302: + description: 'Redirect to the CeviDB OAuth authorization endpoint' + summary: 'Log in using CeviDB Oauth.' tags: - - Activity - /activity_progress_labels: + - OAuth + parameters: [] + ref: 'CeviDB OAuth' + /auth/google: + get: + operationId: oauthGoogleRedirect + parameters: + - + allowEmptyValue: false + allowReserved: false + deprecated: false + description: '' + explode: false + in: path + name: callback + required: false + schema: + type: string + style: simple + responses: + 302: + description: 'Redirect to the Google OAuth authorization endpoint' + summary: 'Log in using Google Oauth.' + tags: + - OAuth + parameters: [] + ref: 'Google OAuth' + /auth/jubladb: + get: + operationId: oauthJubladbRedirect + parameters: + - + allowEmptyValue: false + allowReserved: false + deprecated: false + description: '' + explode: false + in: path + name: callback + required: false + schema: + type: string + style: simple + responses: + 302: + description: 'Redirect to the JublaDB OAuth authorization endpoint' + summary: 'Log in using JublaDB Oauth.' + tags: + - OAuth + parameters: [] + ref: 'JublaDB OAuth' + /auth/pbsmidata: get: - deprecated: false - description: 'Retrieves the collection of ActivityProgressLabel resources.' - operationId: api_activity_progress_labels_get_collection + operationId: oauthPbsmidataRedirect parameters: - - allowEmptyValue: true + allowEmptyValue: false allowReserved: false deprecated: false description: '' explode: false - in: query - name: camp + in: path + name: callback required: false schema: type: string - style: form - - - allowEmptyValue: true - allowReserved: false - deprecated: false - description: '' - explode: true - in: query - name: 'camp[]' - required: false - schema: - items: - type: string - type: array - style: form + style: simple responses: - 200: - content: - application/hal+json: - schema: - properties: - _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/ActivityProgressLabel.jsonhal-read' }, type: array } }, type: object }, { type: object }] } - _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } - itemsPerPage: { minimum: 0, type: integer } - totalItems: { minimum: 0, type: integer } - required: - - _embedded - - _links - type: object - application/json: - schema: - items: - $ref: '#/components/schemas/ActivityProgressLabel-read' - type: array - application/ld+json: - schema: - properties: - 'hydra:member': { items: { $ref: '#/components/schemas/ActivityProgressLabel.jsonld-read' }, type: array } - 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } - 'hydra:totalItems': { minimum: 0, type: integer } - 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } - required: - - 'hydra:member' - type: object - application/vnd.api+json: - schema: - items: - $ref: '#/components/schemas/ActivityProgressLabel.jsonapi-read' - type: array - text/html: - schema: - items: - $ref: '#/components/schemas/ActivityProgressLabel-read' - type: array - description: 'ActivityProgressLabel collection' - summary: 'Retrieves the collection of ActivityProgressLabel resources.' + 302: + description: 'Redirect to the PBS MiData OAuth authorization endpoint' + summary: 'Log in using PBS MiData Oauth.' tags: - - ActivityProgressLabel + - OAuth + parameters: [] + ref: 'PBS MiData OAuth' + /auth/reset_password: parameters: [] post: deprecated: false - description: 'Creates a ActivityProgressLabel resource.' - operationId: api_activity_progress_labels_post + description: 'Password-Reset-Link will be sent to the given email' + operationId: api_authreset_password_post parameters: [] requestBody: content: application/hal+json: schema: - $ref: '#/components/schemas/ActivityProgressLabel.jsonhal-write_create' + $ref: '#/components/schemas/ResetPassword.jsonhal-create' application/json: schema: - $ref: '#/components/schemas/ActivityProgressLabel-write_create' + $ref: '#/components/schemas/ResetPassword-create' application/ld+json: schema: - $ref: '#/components/schemas/ActivityProgressLabel.jsonld-write_create' + $ref: '#/components/schemas/ResetPassword.jsonld-create' application/vnd.api+json: schema: - $ref: '#/components/schemas/ActivityProgressLabel.jsonapi-write_create' + $ref: '#/components/schemas/ResetPassword.jsonapi' text/html: schema: - $ref: '#/components/schemas/ActivityProgressLabel-write_create' - description: 'The new ActivityProgressLabel resource' + $ref: '#/components/schemas/ResetPassword-create' + description: 'The new ResetPassword resource' required: true responses: - 201: + 204: content: application/hal+json: - schema: - $ref: '#/components/schemas/ActivityProgressLabel.jsonhal-read' + schema: [] application/json: - schema: - $ref: '#/components/schemas/ActivityProgressLabel-read' + schema: [] application/ld+json: - schema: - $ref: '#/components/schemas/ActivityProgressLabel.jsonld-read' + schema: [] application/vnd.api+json: - schema: - $ref: '#/components/schemas/ActivityProgressLabel.jsonapi-read' + schema: [] text/html: - schema: - $ref: '#/components/schemas/ActivityProgressLabel-read' - description: 'ActivityProgressLabel resource created' + schema: [] + description: 'ResetPassword resource created' links: [] 400: description: 'Invalid input' 422: description: 'Unprocessable entity' - summary: 'Creates a ActivityProgressLabel resource.' - tags: - - ActivityProgressLabel - '/activity_progress_labels/{id}': - delete: - deprecated: false - description: 'Removes the ActivityProgressLabel resource.' - operationId: api_activity_progress_labels_id_delete - parameters: - - - allowEmptyValue: false - allowReserved: false - deprecated: false - description: 'ActivityProgressLabel identifier' - explode: false - in: path - name: id - required: true - schema: - type: string - style: simple - responses: - 204: - description: 'ActivityProgressLabel resource deleted' - 404: - description: 'Resource not found' - summary: 'Removes the ActivityProgressLabel resource.' + summary: 'Request Password-Reset-Mail' tags: - - ActivityProgressLabel + - ResetPassword + '/auth/reset_password/{id}': get: deprecated: false - description: 'Retrieves a ActivityProgressLabel resource.' - operationId: api_activity_progress_labels_id_get + description: 'Retrieves a ResetPassword resource.' + operationId: api_authreset_password_id_get parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'ActivityProgressLabel identifier' + description: 'ResetPassword identifier' explode: false in: path name: id @@ -25443,36 +21765,36 @@ paths: content: application/hal+json: schema: - $ref: '#/components/schemas/ActivityProgressLabel.jsonhal-read' + $ref: '#/components/schemas/ResetPassword.jsonhal' application/json: schema: - $ref: '#/components/schemas/ActivityProgressLabel-read' + $ref: '#/components/schemas/ResetPassword' application/ld+json: schema: - $ref: '#/components/schemas/ActivityProgressLabel.jsonld-read' + $ref: '#/components/schemas/ResetPassword.jsonld' application/vnd.api+json: schema: - $ref: '#/components/schemas/ActivityProgressLabel.jsonapi-read' + $ref: '#/components/schemas/ResetPassword.jsonapi' text/html: schema: - $ref: '#/components/schemas/ActivityProgressLabel-read' - description: 'ActivityProgressLabel resource' + $ref: '#/components/schemas/ResetPassword' + description: 'ResetPassword resource' 404: description: 'Resource not found' - summary: 'Retrieves a ActivityProgressLabel resource.' + summary: 'Retrieves a ResetPassword resource.' tags: - - ActivityProgressLabel + - ResetPassword parameters: [] patch: deprecated: false - description: 'Updates the ActivityProgressLabel resource.' - operationId: api_activity_progress_labels_id_patch + description: 'Updates the ResetPassword resource.' + operationId: api_authreset_password_id_patch parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'ActivityProgressLabel identifier' + description: 'ResetPassword identifier' explode: false in: path name: id @@ -25484,31 +21806,31 @@ paths: content: application/merge-patch+json: schema: - $ref: '#/components/schemas/ActivityProgressLabel-write' + $ref: '#/components/schemas/ResetPassword-update' application/vnd.api+json: schema: - $ref: '#/components/schemas/ActivityProgressLabel.jsonapi-write' - description: 'The updated ActivityProgressLabel resource' + $ref: '#/components/schemas/ResetPassword.jsonapi' + description: 'The updated ResetPassword resource' required: true responses: 200: content: application/hal+json: schema: - $ref: '#/components/schemas/ActivityProgressLabel.jsonhal-read' + $ref: '#/components/schemas/ResetPassword.jsonhal' application/json: schema: - $ref: '#/components/schemas/ActivityProgressLabel-read' + $ref: '#/components/schemas/ResetPassword' application/ld+json: schema: - $ref: '#/components/schemas/ActivityProgressLabel.jsonld-read' + $ref: '#/components/schemas/ResetPassword.jsonld' application/vnd.api+json: schema: - $ref: '#/components/schemas/ActivityProgressLabel.jsonapi-read' + $ref: '#/components/schemas/ResetPassword.jsonapi' text/html: schema: - $ref: '#/components/schemas/ActivityProgressLabel-read' - description: 'ActivityProgressLabel resource updated' + $ref: '#/components/schemas/ResetPassword' + description: 'ResetPassword resource updated' links: [] 400: description: 'Invalid input' @@ -25516,14 +21838,50 @@ paths: description: 'Resource not found' 422: description: 'Unprocessable entity' - summary: 'Updates the ActivityProgressLabel resource.' + summary: 'Updates the ResetPassword resource.' tags: - - ActivityProgressLabel - /activity_responsibles: + - ResetPassword + /authentication_token: + parameters: [] + post: + description: 'Creates a user token.' + operationId: login_check_post + requestBody: + content: + application/json: + schema: + properties: + identifier: + nullable: false + type: string + password: + nullable: false + type: string + required: + - identifier + - password + type: object + description: 'The login data' + required: true + responses: + 200: + content: + application/json: + schema: + properties: + token: { nullable: false, readOnly: true, type: string } + required: + - token + type: object + description: 'User token created' + summary: 'Creates a user token.' + tags: + - 'Login Check' + /camp_collaborations: get: deprecated: false - description: 'Retrieves the collection of ActivityResponsible resources.' - operationId: api_activity_responsibles_get_collection + description: 'Retrieves the collection of CampCollaboration resources.' + operationId: api_camp_collaborations_get_collection parameters: - allowEmptyValue: true @@ -25532,7 +21890,7 @@ paths: description: '' explode: false in: query - name: activity + name: activityResponsibles.activity required: false schema: type: string @@ -25544,7 +21902,7 @@ paths: description: '' explode: false in: query - name: activity.camp + name: camp required: false schema: type: string @@ -25556,7 +21914,7 @@ paths: description: '' explode: true in: query - name: 'activity.camp[]' + name: 'activityResponsibles.activity[]' required: false schema: items: @@ -25570,7 +21928,7 @@ paths: description: '' explode: true in: query - name: 'activity[]' + name: 'camp[]' required: false schema: items: @@ -25583,7 +21941,7 @@ paths: application/hal+json: schema: properties: - _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/ActivityResponsible.jsonhal-read' }, type: array } }, type: object }, { type: object }] } + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/CampCollaboration.jsonhal-read_CampCollaboration.Camp_CampCollaboration.User' }, type: array } }, type: object }, { type: object }] } _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } itemsPerPage: { minimum: 0, type: integer } totalItems: { minimum: 0, type: integer } @@ -25594,12 +21952,12 @@ paths: application/json: schema: items: - $ref: '#/components/schemas/ActivityResponsible-read' + $ref: '#/components/schemas/CampCollaboration-read_CampCollaboration.Camp_CampCollaboration.User' type: array application/ld+json: schema: properties: - 'hydra:member': { items: { $ref: '#/components/schemas/ActivityResponsible.jsonld-read' }, type: array } + 'hydra:member': { items: { $ref: '#/components/schemas/CampCollaboration.jsonld-read_CampCollaboration.Camp_CampCollaboration.User' }, type: array } 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } 'hydra:totalItems': { minimum: 0, type: integer } 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } @@ -25609,80 +21967,80 @@ paths: application/vnd.api+json: schema: items: - $ref: '#/components/schemas/ActivityResponsible.jsonapi-read' + $ref: '#/components/schemas/CampCollaboration.jsonapi' type: array text/html: schema: items: - $ref: '#/components/schemas/ActivityResponsible-read' + $ref: '#/components/schemas/CampCollaboration-read_CampCollaboration.Camp_CampCollaboration.User' type: array - description: 'ActivityResponsible collection' - summary: 'Retrieves the collection of ActivityResponsible resources.' + description: 'CampCollaboration collection' + summary: 'Retrieves the collection of CampCollaboration resources.' tags: - - ActivityResponsible + - CampCollaboration parameters: [] post: deprecated: false - description: 'Creates a ActivityResponsible resource.' - operationId: api_activity_responsibles_post + description: 'Also sends an invitation email to the inviteEmail address, if specified.' + operationId: api_camp_collaborations_post parameters: [] requestBody: content: application/hal+json: schema: - $ref: '#/components/schemas/ActivityResponsible.jsonhal-write' + $ref: '#/components/schemas/CampCollaboration.jsonhal-write_create' application/json: schema: - $ref: '#/components/schemas/ActivityResponsible-write' + $ref: '#/components/schemas/CampCollaboration-write_create' application/ld+json: schema: - $ref: '#/components/schemas/ActivityResponsible.jsonld-write' + $ref: '#/components/schemas/CampCollaboration.jsonld-write_create' application/vnd.api+json: schema: - $ref: '#/components/schemas/ActivityResponsible.jsonapi-write' + $ref: '#/components/schemas/CampCollaboration.jsonapi' text/html: schema: - $ref: '#/components/schemas/ActivityResponsible-write' - description: 'The new ActivityResponsible resource' + $ref: '#/components/schemas/CampCollaboration-write_create' + description: 'The new CampCollaboration resource' required: true responses: 201: content: application/hal+json: schema: - $ref: '#/components/schemas/ActivityResponsible.jsonhal-read' + $ref: '#/components/schemas/CampCollaboration.jsonhal-read_CampCollaboration.Camp_CampCollaboration.User' application/json: schema: - $ref: '#/components/schemas/ActivityResponsible-read' + $ref: '#/components/schemas/CampCollaboration-read_CampCollaboration.Camp_CampCollaboration.User' application/ld+json: schema: - $ref: '#/components/schemas/ActivityResponsible.jsonld-read' + $ref: '#/components/schemas/CampCollaboration.jsonld-read_CampCollaboration.Camp_CampCollaboration.User' application/vnd.api+json: schema: - $ref: '#/components/schemas/ActivityResponsible.jsonapi-read' + $ref: '#/components/schemas/CampCollaboration.jsonapi' text/html: schema: - $ref: '#/components/schemas/ActivityResponsible-read' - description: 'ActivityResponsible resource created' + $ref: '#/components/schemas/CampCollaboration-read_CampCollaboration.Camp_CampCollaboration.User' + description: 'CampCollaboration resource created' links: [] 400: description: 'Invalid input' 422: description: 'Unprocessable entity' - summary: 'Creates a ActivityResponsible resource.' + summary: 'Creates a CampCollaboration resource.' tags: - - ActivityResponsible - '/activity_responsibles/{id}': + - CampCollaboration + '/camp_collaborations/{id}': delete: deprecated: false - description: 'Removes the ActivityResponsible resource.' - operationId: api_activity_responsibles_id_delete + description: 'Removes the CampCollaboration resource.' + operationId: api_camp_collaborations_id_delete parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'ActivityResponsible identifier' + description: 'CampCollaboration identifier' explode: false in: path name: id @@ -25692,22 +22050,22 @@ paths: style: simple responses: 204: - description: 'ActivityResponsible resource deleted' + description: 'CampCollaboration resource deleted' 404: description: 'Resource not found' - summary: 'Removes the ActivityResponsible resource.' + summary: 'Removes the CampCollaboration resource.' tags: - - ActivityResponsible + - CampCollaboration get: deprecated: false - description: 'Retrieves a ActivityResponsible resource.' - operationId: api_activity_responsibles_id_get + description: 'Retrieves a CampCollaboration resource.' + operationId: api_camp_collaborations_id_get parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'ActivityResponsible identifier' + description: 'CampCollaboration identifier' explode: false in: path name: id @@ -25720,181 +22078,391 @@ paths: content: application/hal+json: schema: - $ref: '#/components/schemas/ActivityResponsible.jsonhal-read' + $ref: '#/components/schemas/CampCollaboration.jsonhal-read_CampCollaboration.Camp_CampCollaboration.User' application/json: schema: - $ref: '#/components/schemas/ActivityResponsible-read' + $ref: '#/components/schemas/CampCollaboration-read_CampCollaboration.Camp_CampCollaboration.User' application/ld+json: schema: - $ref: '#/components/schemas/ActivityResponsible.jsonld-read' + $ref: '#/components/schemas/CampCollaboration.jsonld-read_CampCollaboration.Camp_CampCollaboration.User' application/vnd.api+json: schema: - $ref: '#/components/schemas/ActivityResponsible.jsonapi-read' + $ref: '#/components/schemas/CampCollaboration.jsonapi' text/html: schema: - $ref: '#/components/schemas/ActivityResponsible-read' - description: 'ActivityResponsible resource' + $ref: '#/components/schemas/CampCollaboration-read_CampCollaboration.Camp_CampCollaboration.User' + description: 'CampCollaboration resource' 404: description: 'Resource not found' - summary: 'Retrieves a ActivityResponsible resource.' + summary: 'Retrieves a CampCollaboration resource.' tags: - - ActivityResponsible + - CampCollaboration parameters: [] - /auth/cevidb: - get: - operationId: oauthCevidbRedirect + patch: + deprecated: false + description: 'Updates the CampCollaboration resource.' + operationId: api_camp_collaborations_id_patch parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: '' + description: 'CampCollaboration identifier' explode: false in: path - name: callback - required: false + name: id + required: true schema: type: string style: simple + requestBody: + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/CampCollaboration-write_update' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/CampCollaboration.jsonapi' + description: 'The updated CampCollaboration resource' + required: true responses: - 302: - description: 'Redirect to the CeviDB OAuth authorization endpoint' - summary: 'Log in using CeviDB Oauth.' + 200: + content: + application/hal+json: + schema: + $ref: '#/components/schemas/CampCollaboration.jsonhal-read_CampCollaboration.Camp_CampCollaboration.User' + application/json: + schema: + $ref: '#/components/schemas/CampCollaboration-read_CampCollaboration.Camp_CampCollaboration.User' + application/ld+json: + schema: + $ref: '#/components/schemas/CampCollaboration.jsonld-read_CampCollaboration.Camp_CampCollaboration.User' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/CampCollaboration.jsonapi' + text/html: + schema: + $ref: '#/components/schemas/CampCollaboration-read_CampCollaboration.Camp_CampCollaboration.User' + description: 'CampCollaboration resource updated' + links: [] + 400: + description: 'Invalid input' + 404: + description: 'Resource not found' + 422: + description: 'Unprocessable entity' + summary: 'Updates the CampCollaboration resource.' tags: - - OAuth + - CampCollaboration + '/camp_collaborations/{id}/resend_invitation': parameters: [] - ref: 'CeviDB OAuth' - /auth/google: - get: - operationId: oauthGoogleRedirect + patch: + deprecated: false + description: 'Updates the CampCollaboration resource.' + operationId: api_camp_collaborations_idresend_invitation_patch parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: '' + description: 'CampCollaboration identifier' explode: false in: path - name: callback - required: false + name: id + required: true schema: type: string style: simple + requestBody: + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/CampCollaboration-resend_invitation' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/CampCollaboration.jsonapi' + description: 'The updated CampCollaboration resource' + required: true responses: - 302: - description: 'Redirect to the Google OAuth authorization endpoint' - summary: 'Log in using Google Oauth.' + 200: + content: + application/hal+json: + schema: + $ref: '#/components/schemas/CampCollaboration.jsonhal-read' + application/json: + schema: + $ref: '#/components/schemas/CampCollaboration-read' + application/ld+json: + schema: + $ref: '#/components/schemas/CampCollaboration.jsonld-read' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/CampCollaboration.jsonapi' + text/html: + schema: + $ref: '#/components/schemas/CampCollaboration-read' + description: 'CampCollaboration resource updated' + links: [] + 400: + description: 'Invalid input' + 404: + description: 'Resource not found' + 422: + description: 'Unprocessable entity' + summary: 'Send the invitation email for this CampCollaboration again. Only possible, if the status is already invited.' tags: - - OAuth - parameters: [] - ref: 'Google OAuth' - /auth/jubladb: + - CampCollaboration + /camps: get: - operationId: oauthJubladbRedirect + deprecated: false + description: 'Retrieves the collection of Camp resources.' + operationId: api_camps_get_collection parameters: - - allowEmptyValue: false + allowEmptyValue: true allowReserved: false deprecated: false description: '' explode: false - in: path - name: callback + in: query + name: isPrototype required: false schema: - type: string - style: simple - responses: - 302: - description: 'Redirect to the JublaDB OAuth authorization endpoint' - summary: 'Log in using JublaDB Oauth.' - tags: - - OAuth - parameters: [] - ref: 'JublaDB OAuth' - /auth/pbsmidata: - get: - operationId: oauthPbsmidataRedirect - parameters: + type: boolean + style: form - - allowEmptyValue: false + allowEmptyValue: true allowReserved: false deprecated: false description: '' - explode: false - in: path - name: callback + explode: true + in: query + name: 'isPrototype[]' required: false schema: - type: string - style: simple + items: + type: boolean + type: array + style: form responses: - 302: - description: 'Redirect to the PBS MiData OAuth authorization endpoint' - summary: 'Log in using PBS MiData Oauth.' + 200: + content: + application/hal+json: + schema: + properties: + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/Camp.jsonhal-read' }, type: array } }, type: object }, { type: object }] } + _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } + itemsPerPage: { minimum: 0, type: integer } + totalItems: { minimum: 0, type: integer } + required: + - _embedded + - _links + type: object + application/json: + schema: + items: + $ref: '#/components/schemas/Camp-read' + type: array + application/ld+json: + schema: + properties: + 'hydra:member': { items: { $ref: '#/components/schemas/Camp.jsonld-read' }, type: array } + 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } + 'hydra:totalItems': { minimum: 0, type: integer } + 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } + required: + - 'hydra:member' + type: object + application/vnd.api+json: + schema: + items: + $ref: '#/components/schemas/Camp.jsonapi' + type: array + text/html: + schema: + items: + $ref: '#/components/schemas/Camp-read' + type: array + description: 'Camp collection' + summary: 'Retrieves the collection of Camp resources.' tags: - - OAuth - parameters: [] - ref: 'PBS MiData OAuth' - /auth/reset_password: + - Camp parameters: [] post: deprecated: false - description: 'Password-Reset-Link will be sent to the given email' - operationId: api_authreset_password_post + description: 'Creates a Camp resource.' + operationId: api_camps_post parameters: [] requestBody: content: application/hal+json: schema: - $ref: '#/components/schemas/ResetPassword.jsonhal-create' + $ref: '#/components/schemas/Camp.jsonhal-write_create' application/json: schema: - $ref: '#/components/schemas/ResetPassword-create' + $ref: '#/components/schemas/Camp-write_create' application/ld+json: schema: - $ref: '#/components/schemas/ResetPassword.jsonld-create' + $ref: '#/components/schemas/Camp.jsonld-write_create' application/vnd.api+json: schema: - $ref: '#/components/schemas/ResetPassword.jsonapi-create' + $ref: '#/components/schemas/Camp.jsonapi' text/html: schema: - $ref: '#/components/schemas/ResetPassword-create' - description: 'The new ResetPassword resource' + $ref: '#/components/schemas/Camp-write_create' + description: 'The new Camp resource' required: true responses: - 204: + 201: content: application/hal+json: - schema: [] + schema: + $ref: '#/components/schemas/Camp.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' application/json: - schema: [] + schema: + $ref: '#/components/schemas/Camp-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' application/ld+json: - schema: [] + schema: + $ref: '#/components/schemas/Camp.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' application/vnd.api+json: - schema: [] + schema: + $ref: '#/components/schemas/Camp.jsonapi' text/html: - schema: [] - description: 'ResetPassword resource created' + schema: + $ref: '#/components/schemas/Camp-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + description: 'Camp resource created' links: [] 400: description: 'Invalid input' 422: description: 'Unprocessable entity' - summary: 'Request Password-Reset-Mail' + summary: 'Creates a Camp resource.' tags: - - ResetPassword - '/auth/reset_password/{id}': + - Camp + '/camps/{campId}/categories': get: deprecated: false - description: 'Retrieves a ResetPassword resource.' - operationId: api_authreset_password_id_get + description: 'Retrieves the collection of Category resources.' + operationId: BelongsToCamp_App\Entity\Category_get_collection parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'ResetPassword identifier' + description: 'Category identifier' + explode: false + in: path + name: campId + required: true + schema: + type: string + style: simple + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: false + in: query + name: camp + required: false + schema: + type: string + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: true + in: query + name: 'camp[]' + required: false + schema: + items: + type: string + type: array + style: form + responses: + 200: + content: + application/hal+json: + schema: + properties: + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/Category.jsonhal-read' }, type: array } }, type: object }, { type: object }] } + _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } + itemsPerPage: { minimum: 0, type: integer } + totalItems: { minimum: 0, type: integer } + required: + - _embedded + - _links + type: object + application/json: + schema: + items: + $ref: '#/components/schemas/Category-read' + type: array + application/ld+json: + schema: + properties: + 'hydra:member': { items: { $ref: '#/components/schemas/Category.jsonld-read' }, type: array } + 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } + 'hydra:totalItems': { minimum: 0, type: integer } + 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } + required: + - 'hydra:member' + type: object + application/vnd.api+json: + schema: + items: + $ref: '#/components/schemas/Category.jsonapi' + type: array + text/html: + schema: + items: + $ref: '#/components/schemas/Category-read' + type: array + description: 'Category collection' + summary: 'Retrieves the collection of Category resources.' + tags: + - Category + parameters: [] + '/camps/{id}': + delete: + deprecated: false + description: 'Removes the Camp resource.' + operationId: api_camps_id_delete + parameters: + - + allowEmptyValue: false + allowReserved: false + deprecated: false + description: 'Camp identifier' + explode: false + in: path + name: id + required: true + schema: + type: string + style: simple + responses: + 204: + description: 'Camp resource deleted' + 404: + description: 'Resource not found' + summary: 'Removes the Camp resource.' + tags: + - Camp + get: + deprecated: false + description: 'Retrieves a Camp resource.' + operationId: api_camps_id_get + parameters: + - + allowEmptyValue: false + allowReserved: false + deprecated: false + description: 'Camp identifier' explode: false in: path name: id @@ -25907,36 +22475,36 @@ paths: content: application/hal+json: schema: - $ref: '#/components/schemas/ResetPassword.jsonhal' + $ref: '#/components/schemas/Camp.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' application/json: schema: - $ref: '#/components/schemas/ResetPassword' + $ref: '#/components/schemas/Camp-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' application/ld+json: schema: - $ref: '#/components/schemas/ResetPassword.jsonld' + $ref: '#/components/schemas/Camp.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' application/vnd.api+json: schema: - $ref: '#/components/schemas/ResetPassword.jsonapi' + $ref: '#/components/schemas/Camp.jsonapi' text/html: schema: - $ref: '#/components/schemas/ResetPassword' - description: 'ResetPassword resource' + $ref: '#/components/schemas/Camp-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + description: 'Camp resource' 404: description: 'Resource not found' - summary: 'Retrieves a ResetPassword resource.' + summary: 'Retrieves a Camp resource.' tags: - - ResetPassword + - Camp parameters: [] patch: deprecated: false - description: 'Updates the ResetPassword resource.' - operationId: api_authreset_password_id_patch + description: 'Updates the Camp resource.' + operationId: api_camps_id_patch parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'ResetPassword identifier' + description: 'Camp identifier' explode: false in: path name: id @@ -25948,31 +22516,31 @@ paths: content: application/merge-patch+json: schema: - $ref: '#/components/schemas/ResetPassword-update' + $ref: '#/components/schemas/Camp-write_update' application/vnd.api+json: schema: - $ref: '#/components/schemas/ResetPassword.jsonapi-update' - description: 'The updated ResetPassword resource' + $ref: '#/components/schemas/Camp.jsonapi' + description: 'The updated Camp resource' required: true responses: 200: content: application/hal+json: schema: - $ref: '#/components/schemas/ResetPassword.jsonhal' + $ref: '#/components/schemas/Camp.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' application/json: schema: - $ref: '#/components/schemas/ResetPassword' + $ref: '#/components/schemas/Camp-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' application/ld+json: schema: - $ref: '#/components/schemas/ResetPassword.jsonld' + $ref: '#/components/schemas/Camp.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' application/vnd.api+json: schema: - $ref: '#/components/schemas/ResetPassword.jsonapi' + $ref: '#/components/schemas/Camp.jsonapi' text/html: schema: - $ref: '#/components/schemas/ResetPassword' - description: 'ResetPassword resource updated' + $ref: '#/components/schemas/Camp-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + description: 'Camp resource updated' links: [] 400: description: 'Invalid input' @@ -25980,63 +22548,15 @@ paths: description: 'Resource not found' 422: description: 'Unprocessable entity' - summary: 'Updates the ResetPassword resource.' - tags: - - ResetPassword - /authentication_token: - parameters: [] - post: - description: 'Creates a user token.' - operationId: login_check_post - requestBody: - content: - application/json: - schema: - properties: - identifier: - nullable: false - type: string - password: - nullable: false - type: string - required: - - identifier - - password - type: object - description: 'The login data' - required: true - responses: - 200: - content: - application/json: - schema: - properties: - token: { nullable: false, readOnly: true, type: string } - required: - - token - type: object - description: 'User token created' - summary: 'Creates a user token.' + summary: 'Updates the Camp resource.' tags: - - 'Login Check' - /camp_collaborations: + - Camp + /categories: get: deprecated: false - description: 'Retrieves the collection of CampCollaboration resources.' - operationId: api_camp_collaborations_get_collection + description: 'Retrieves the collection of Category resources.' + operationId: api_categories_get_collection parameters: - - - allowEmptyValue: true - allowReserved: false - deprecated: false - description: '' - explode: false - in: query - name: activityResponsibles.activity - required: false - schema: - type: string - style: form - allowEmptyValue: true allowReserved: false @@ -26047,21 +22567,7 @@ paths: name: camp required: false schema: - type: string - style: form - - - allowEmptyValue: true - allowReserved: false - deprecated: false - description: '' - explode: true - in: query - name: 'activityResponsibles.activity[]' - required: false - schema: - items: - type: string - type: array + type: string style: form - allowEmptyValue: true @@ -26083,7 +22589,7 @@ paths: application/hal+json: schema: properties: - _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/CampCollaboration.jsonhal-read_CampCollaboration.Camp_CampCollaboration.User' }, type: array } }, type: object }, { type: object }] } + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/Category.jsonhal-read' }, type: array } }, type: object }, { type: object }] } _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } itemsPerPage: { minimum: 0, type: integer } totalItems: { minimum: 0, type: integer } @@ -26094,12 +22600,12 @@ paths: application/json: schema: items: - $ref: '#/components/schemas/CampCollaboration-read_CampCollaboration.Camp_CampCollaboration.User' + $ref: '#/components/schemas/Category-read' type: array application/ld+json: schema: properties: - 'hydra:member': { items: { $ref: '#/components/schemas/CampCollaboration.jsonld-read_CampCollaboration.Camp_CampCollaboration.User' }, type: array } + 'hydra:member': { items: { $ref: '#/components/schemas/Category.jsonld-read' }, type: array } 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } 'hydra:totalItems': { minimum: 0, type: integer } 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } @@ -26109,80 +22615,80 @@ paths: application/vnd.api+json: schema: items: - $ref: '#/components/schemas/CampCollaboration.jsonapi-read_CampCollaboration.Camp_CampCollaboration.User' + $ref: '#/components/schemas/Category.jsonapi' type: array text/html: schema: items: - $ref: '#/components/schemas/CampCollaboration-read_CampCollaboration.Camp_CampCollaboration.User' + $ref: '#/components/schemas/Category-read' type: array - description: 'CampCollaboration collection' - summary: 'Retrieves the collection of CampCollaboration resources.' + description: 'Category collection' + summary: 'Retrieves the collection of Category resources.' tags: - - CampCollaboration + - Category parameters: [] post: deprecated: false - description: 'Also sends an invitation email to the inviteEmail address, if specified.' - operationId: api_camp_collaborations_post + description: 'Creates a Category resource.' + operationId: api_categories_post parameters: [] requestBody: content: application/hal+json: schema: - $ref: '#/components/schemas/CampCollaboration.jsonhal-write_create' + $ref: '#/components/schemas/Category.jsonhal-write_create' application/json: schema: - $ref: '#/components/schemas/CampCollaboration-write_create' + $ref: '#/components/schemas/Category-write_create' application/ld+json: schema: - $ref: '#/components/schemas/CampCollaboration.jsonld-write_create' + $ref: '#/components/schemas/Category.jsonld-write_create' application/vnd.api+json: schema: - $ref: '#/components/schemas/CampCollaboration.jsonapi-write_create' + $ref: '#/components/schemas/Category.jsonapi' text/html: schema: - $ref: '#/components/schemas/CampCollaboration-write_create' - description: 'The new CampCollaboration resource' + $ref: '#/components/schemas/Category-write_create' + description: 'The new Category resource' required: true responses: 201: content: application/hal+json: schema: - $ref: '#/components/schemas/CampCollaboration.jsonhal-read_CampCollaboration.Camp_CampCollaboration.User' + $ref: '#/components/schemas/Category.jsonhal-read_Category.PreferredContentTypes_Category.ContentNodes' application/json: schema: - $ref: '#/components/schemas/CampCollaboration-read_CampCollaboration.Camp_CampCollaboration.User' + $ref: '#/components/schemas/Category-read_Category.PreferredContentTypes_Category.ContentNodes' application/ld+json: schema: - $ref: '#/components/schemas/CampCollaboration.jsonld-read_CampCollaboration.Camp_CampCollaboration.User' + $ref: '#/components/schemas/Category.jsonld-read_Category.PreferredContentTypes_Category.ContentNodes' application/vnd.api+json: schema: - $ref: '#/components/schemas/CampCollaboration.jsonapi-read_CampCollaboration.Camp_CampCollaboration.User' + $ref: '#/components/schemas/Category.jsonapi' text/html: schema: - $ref: '#/components/schemas/CampCollaboration-read_CampCollaboration.Camp_CampCollaboration.User' - description: 'CampCollaboration resource created' + $ref: '#/components/schemas/Category-read_Category.PreferredContentTypes_Category.ContentNodes' + description: 'Category resource created' links: [] 400: description: 'Invalid input' 422: description: 'Unprocessable entity' - summary: 'Creates a CampCollaboration resource.' + summary: 'Creates a Category resource.' tags: - - CampCollaboration - '/camp_collaborations/{id}': + - Category + '/categories/{id}': delete: deprecated: false - description: 'Removes the CampCollaboration resource.' - operationId: api_camp_collaborations_id_delete + description: 'Removes the Category resource.' + operationId: api_categories_id_delete parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'CampCollaboration identifier' + description: 'Category identifier' explode: false in: path name: id @@ -26192,22 +22698,22 @@ paths: style: simple responses: 204: - description: 'CampCollaboration resource deleted' + description: 'Category resource deleted' 404: description: 'Resource not found' - summary: 'Removes the CampCollaboration resource.' + summary: 'Removes the Category resource.' tags: - - CampCollaboration + - Category get: deprecated: false - description: 'Retrieves a CampCollaboration resource.' - operationId: api_camp_collaborations_id_get + description: 'Retrieves a Category resource.' + operationId: api_categories_id_get parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'CampCollaboration identifier' + description: 'Category identifier' explode: false in: path name: id @@ -26220,36 +22726,36 @@ paths: content: application/hal+json: schema: - $ref: '#/components/schemas/CampCollaboration.jsonhal-read_CampCollaboration.Camp_CampCollaboration.User' + $ref: '#/components/schemas/Category.jsonhal-read_Category.PreferredContentTypes_Category.ContentNodes' application/json: schema: - $ref: '#/components/schemas/CampCollaboration-read_CampCollaboration.Camp_CampCollaboration.User' + $ref: '#/components/schemas/Category-read_Category.PreferredContentTypes_Category.ContentNodes' application/ld+json: schema: - $ref: '#/components/schemas/CampCollaboration.jsonld-read_CampCollaboration.Camp_CampCollaboration.User' + $ref: '#/components/schemas/Category.jsonld-read_Category.PreferredContentTypes_Category.ContentNodes' application/vnd.api+json: schema: - $ref: '#/components/schemas/CampCollaboration.jsonapi-read_CampCollaboration.Camp_CampCollaboration.User' + $ref: '#/components/schemas/Category.jsonapi' text/html: schema: - $ref: '#/components/schemas/CampCollaboration-read_CampCollaboration.Camp_CampCollaboration.User' - description: 'CampCollaboration resource' + $ref: '#/components/schemas/Category-read_Category.PreferredContentTypes_Category.ContentNodes' + description: 'Category resource' 404: description: 'Resource not found' - summary: 'Retrieves a CampCollaboration resource.' + summary: 'Retrieves a Category resource.' tags: - - CampCollaboration + - Category parameters: [] patch: deprecated: false - description: 'Updates the CampCollaboration resource.' - operationId: api_camp_collaborations_id_patch + description: 'Updates the Category resource.' + operationId: api_categories_id_patch parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'CampCollaboration identifier' + description: 'Category identifier' explode: false in: path name: id @@ -26261,31 +22767,31 @@ paths: content: application/merge-patch+json: schema: - $ref: '#/components/schemas/CampCollaboration-write_update' + $ref: '#/components/schemas/Category-write_update' application/vnd.api+json: schema: - $ref: '#/components/schemas/CampCollaboration.jsonapi-write_update' - description: 'The updated CampCollaboration resource' + $ref: '#/components/schemas/Category.jsonapi' + description: 'The updated Category resource' required: true responses: 200: content: application/hal+json: schema: - $ref: '#/components/schemas/CampCollaboration.jsonhal-read_CampCollaboration.Camp_CampCollaboration.User' + $ref: '#/components/schemas/Category.jsonhal-read_Category.PreferredContentTypes_Category.ContentNodes' application/json: schema: - $ref: '#/components/schemas/CampCollaboration-read_CampCollaboration.Camp_CampCollaboration.User' + $ref: '#/components/schemas/Category-read_Category.PreferredContentTypes_Category.ContentNodes' application/ld+json: schema: - $ref: '#/components/schemas/CampCollaboration.jsonld-read_CampCollaboration.Camp_CampCollaboration.User' + $ref: '#/components/schemas/Category.jsonld-read_Category.PreferredContentTypes_Category.ContentNodes' application/vnd.api+json: schema: - $ref: '#/components/schemas/CampCollaboration.jsonapi-read_CampCollaboration.Camp_CampCollaboration.User' + $ref: '#/components/schemas/Category.jsonapi' text/html: schema: - $ref: '#/components/schemas/CampCollaboration-read_CampCollaboration.Camp_CampCollaboration.User' - description: 'CampCollaboration resource updated' + $ref: '#/components/schemas/Category-read_Category.PreferredContentTypes_Category.ContentNodes' + description: 'Category resource updated' links: [] 400: description: 'Invalid input' @@ -26293,73 +22799,27 @@ paths: description: 'Resource not found' 422: description: 'Unprocessable entity' - summary: 'Updates the CampCollaboration resource.' + summary: 'Updates the Category resource.' tags: - - CampCollaboration - '/camp_collaborations/{id}/resend_invitation': - parameters: [] - patch: + - Category + /content_node/column_layouts: + get: deprecated: false - description: 'Updates the CampCollaboration resource.' - operationId: api_camp_collaborations_idresend_invitation_patch + description: 'Retrieves the collection of ColumnLayout resources.' + operationId: api_content_nodecolumn_layouts_get_collection parameters: - - allowEmptyValue: false + allowEmptyValue: true allowReserved: false deprecated: false - description: 'CampCollaboration identifier' + description: '' explode: false - in: path - name: id - required: true + in: query + name: contentType + required: false schema: type: string - style: simple - requestBody: - content: - application/merge-patch+json: - schema: - $ref: '#/components/schemas/CampCollaboration-resend_invitation' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/CampCollaboration.jsonapi-resend_invitation' - description: 'The updated CampCollaboration resource' - required: true - responses: - 200: - content: - application/hal+json: - schema: - $ref: '#/components/schemas/CampCollaboration.jsonhal-read' - application/json: - schema: - $ref: '#/components/schemas/CampCollaboration-read' - application/ld+json: - schema: - $ref: '#/components/schemas/CampCollaboration.jsonld-read' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/CampCollaboration.jsonapi-read' - text/html: - schema: - $ref: '#/components/schemas/CampCollaboration-read' - description: 'CampCollaboration resource updated' - links: [] - 400: - description: 'Invalid input' - 404: - description: 'Resource not found' - 422: - description: 'Unprocessable entity' - summary: 'Send the invitation email for this CampCollaboration again. Only possible, if the status is already invited.' - tags: - - CampCollaboration - /camps: - get: - deprecated: false - description: 'Retrieves the collection of Camp resources.' - operationId: api_camps_get_collection - parameters: + style: form - allowEmptyValue: true allowReserved: false @@ -26367,10 +22827,22 @@ paths: description: '' explode: false in: query - name: isPrototype + name: period required: false schema: - type: boolean + type: string + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: false + in: query + name: root + required: false + schema: + type: string style: form - allowEmptyValue: true @@ -26379,11 +22851,25 @@ paths: description: '' explode: true in: query - name: 'isPrototype[]' + name: 'contentType[]' required: false schema: items: - type: boolean + type: string + type: array + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: true + in: query + name: 'root[]' + required: false + schema: + items: + type: string type: array style: form responses: @@ -26392,7 +22878,7 @@ paths: application/hal+json: schema: properties: - _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/Camp.jsonhal-read' }, type: array } }, type: object }, { type: object }] } + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/ColumnLayout.jsonhal-read' }, type: array } }, type: object }, { type: object }] } _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } itemsPerPage: { minimum: 0, type: integer } totalItems: { minimum: 0, type: integer } @@ -26403,12 +22889,12 @@ paths: application/json: schema: items: - $ref: '#/components/schemas/Camp-read' + $ref: '#/components/schemas/ColumnLayout-read' type: array application/ld+json: schema: properties: - 'hydra:member': { items: { $ref: '#/components/schemas/Camp.jsonld-read' }, type: array } + 'hydra:member': { items: { $ref: '#/components/schemas/ColumnLayout.jsonld-read' }, type: array } 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } 'hydra:totalItems': { minimum: 0, type: integer } 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } @@ -26418,80 +22904,80 @@ paths: application/vnd.api+json: schema: items: - $ref: '#/components/schemas/Camp.jsonapi-read' + $ref: '#/components/schemas/ColumnLayout.jsonapi' type: array text/html: schema: items: - $ref: '#/components/schemas/Camp-read' + $ref: '#/components/schemas/ColumnLayout-read' type: array - description: 'Camp collection' - summary: 'Retrieves the collection of Camp resources.' + description: 'ColumnLayout collection' + summary: 'Retrieves the collection of ColumnLayout resources.' tags: - - Camp + - ColumnLayout parameters: [] post: deprecated: false - description: 'Creates a Camp resource.' - operationId: api_camps_post + description: 'Creates a ColumnLayout resource.' + operationId: api_content_nodecolumn_layouts_post parameters: [] requestBody: content: application/hal+json: schema: - $ref: '#/components/schemas/Camp.jsonhal-write_create' + $ref: '#/components/schemas/ColumnLayout.jsonhal-write_create' application/json: schema: - $ref: '#/components/schemas/Camp-write_create' + $ref: '#/components/schemas/ColumnLayout-write_create' application/ld+json: schema: - $ref: '#/components/schemas/Camp.jsonld-write_create' + $ref: '#/components/schemas/ColumnLayout.jsonld-write_create' application/vnd.api+json: schema: - $ref: '#/components/schemas/Camp.jsonapi-write_create' + $ref: '#/components/schemas/ColumnLayout.jsonapi' text/html: schema: - $ref: '#/components/schemas/Camp-write_create' - description: 'The new Camp resource' + $ref: '#/components/schemas/ColumnLayout-write_create' + description: 'The new ColumnLayout resource' required: true responses: 201: content: application/hal+json: schema: - $ref: '#/components/schemas/Camp.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + $ref: '#/components/schemas/ColumnLayout.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/Camp-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + $ref: '#/components/schemas/ColumnLayout-read' application/ld+json: schema: - $ref: '#/components/schemas/Camp.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + $ref: '#/components/schemas/ColumnLayout.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/Camp.jsonapi-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + $ref: '#/components/schemas/ColumnLayout.jsonapi' text/html: schema: - $ref: '#/components/schemas/Camp-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' - description: 'Camp resource created' + $ref: '#/components/schemas/ColumnLayout-read' + description: 'ColumnLayout resource created' links: [] 400: description: 'Invalid input' 422: description: 'Unprocessable entity' - summary: 'Creates a Camp resource.' + summary: 'Creates a ColumnLayout resource.' tags: - - Camp - '/camps/{id}': + - ColumnLayout + '/content_node/column_layouts/{id}': delete: deprecated: false - description: 'Removes the Camp resource.' - operationId: api_camps_id_delete + description: 'Removes the ColumnLayout resource.' + operationId: api_content_nodecolumn_layouts_id_delete parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'Camp identifier' + description: 'ColumnLayout identifier' explode: false in: path name: id @@ -26501,22 +22987,22 @@ paths: style: simple responses: 204: - description: 'Camp resource deleted' + description: 'ColumnLayout resource deleted' 404: description: 'Resource not found' - summary: 'Removes the Camp resource.' + summary: 'Removes the ColumnLayout resource.' tags: - - Camp + - ColumnLayout get: deprecated: false - description: 'Retrieves a Camp resource.' - operationId: api_camps_id_get + description: 'Retrieves a ColumnLayout resource.' + operationId: api_content_nodecolumn_layouts_id_get parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'Camp identifier' + description: 'ColumnLayout identifier' explode: false in: path name: id @@ -26529,36 +23015,36 @@ paths: content: application/hal+json: schema: - $ref: '#/components/schemas/Camp.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + $ref: '#/components/schemas/ColumnLayout.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/Camp-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + $ref: '#/components/schemas/ColumnLayout-read' application/ld+json: schema: - $ref: '#/components/schemas/Camp.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + $ref: '#/components/schemas/ColumnLayout.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/Camp.jsonapi-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + $ref: '#/components/schemas/ColumnLayout.jsonapi' text/html: schema: - $ref: '#/components/schemas/Camp-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' - description: 'Camp resource' + $ref: '#/components/schemas/ColumnLayout-read' + description: 'ColumnLayout resource' 404: description: 'Resource not found' - summary: 'Retrieves a Camp resource.' + summary: 'Retrieves a ColumnLayout resource.' tags: - - Camp + - ColumnLayout parameters: [] patch: deprecated: false - description: 'Updates the Camp resource.' - operationId: api_camps_id_patch + description: 'Updates the ColumnLayout resource.' + operationId: api_content_nodecolumn_layouts_id_patch parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'Camp identifier' + description: 'ColumnLayout identifier' explode: false in: path name: id @@ -26570,31 +23056,31 @@ paths: content: application/merge-patch+json: schema: - $ref: '#/components/schemas/Camp-write_update' + $ref: '#/components/schemas/ColumnLayout-write_update' application/vnd.api+json: schema: - $ref: '#/components/schemas/Camp.jsonapi-write_update' - description: 'The updated Camp resource' + $ref: '#/components/schemas/ColumnLayout.jsonapi' + description: 'The updated ColumnLayout resource' required: true responses: 200: content: application/hal+json: schema: - $ref: '#/components/schemas/Camp.jsonhal-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + $ref: '#/components/schemas/ColumnLayout.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/Camp-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + $ref: '#/components/schemas/ColumnLayout-read' application/ld+json: schema: - $ref: '#/components/schemas/Camp.jsonld-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + $ref: '#/components/schemas/ColumnLayout.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/Camp.jsonapi-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' + $ref: '#/components/schemas/ColumnLayout.jsonapi' text/html: schema: - $ref: '#/components/schemas/Camp-read_Camp.Periods_Period.Days_Camp.CampCollaborations_CampCollaboration.User' - description: 'Camp resource updated' + $ref: '#/components/schemas/ColumnLayout-read' + description: 'ColumnLayout resource updated' links: [] 400: description: 'Invalid input' @@ -26602,14 +23088,14 @@ paths: description: 'Resource not found' 422: description: 'Unprocessable entity' - summary: 'Updates the Camp resource.' + summary: 'Updates the ColumnLayout resource.' tags: - - Camp - /categories: + - ColumnLayout + /content_node/material_nodes: get: deprecated: false - description: 'Retrieves the collection of Category resources.' - operationId: api_categories_get_collection + description: 'Retrieves the collection of MaterialNode resources.' + operationId: api_content_nodematerial_nodes_get_collection parameters: - allowEmptyValue: true @@ -26618,7 +23104,31 @@ paths: description: '' explode: false in: query - name: camp + name: contentType + required: false + schema: + type: string + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: false + in: query + name: period + required: false + schema: + type: string + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: false + in: query + name: root required: false schema: type: string @@ -26630,7 +23140,21 @@ paths: description: '' explode: true in: query - name: 'camp[]' + name: 'contentType[]' + required: false + schema: + items: + type: string + type: array + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: true + in: query + name: 'root[]' required: false schema: items: @@ -26643,7 +23167,7 @@ paths: application/hal+json: schema: properties: - _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/Category.jsonhal-read' }, type: array } }, type: object }, { type: object }] } + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/MaterialNode.jsonhal-read' }, type: array } }, type: object }, { type: object }] } _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } itemsPerPage: { minimum: 0, type: integer } totalItems: { minimum: 0, type: integer } @@ -26654,12 +23178,12 @@ paths: application/json: schema: items: - $ref: '#/components/schemas/Category-read' + $ref: '#/components/schemas/MaterialNode-read' type: array application/ld+json: schema: properties: - 'hydra:member': { items: { $ref: '#/components/schemas/Category.jsonld-read' }, type: array } + 'hydra:member': { items: { $ref: '#/components/schemas/MaterialNode.jsonld-read' }, type: array } 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } 'hydra:totalItems': { minimum: 0, type: integer } 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } @@ -26669,80 +23193,80 @@ paths: application/vnd.api+json: schema: items: - $ref: '#/components/schemas/Category.jsonapi-read' + $ref: '#/components/schemas/MaterialNode.jsonapi' type: array text/html: schema: items: - $ref: '#/components/schemas/Category-read' + $ref: '#/components/schemas/MaterialNode-read' type: array - description: 'Category collection' - summary: 'Retrieves the collection of Category resources.' + description: 'MaterialNode collection' + summary: 'Retrieves the collection of MaterialNode resources.' tags: - - Category + - MaterialNode parameters: [] post: deprecated: false - description: 'Creates a Category resource.' - operationId: api_categories_post + description: 'Creates a MaterialNode resource.' + operationId: api_content_nodematerial_nodes_post parameters: [] requestBody: content: application/hal+json: schema: - $ref: '#/components/schemas/Category.jsonhal-write_create' + $ref: '#/components/schemas/MaterialNode.jsonhal-write_create' application/json: schema: - $ref: '#/components/schemas/Category-write_create' + $ref: '#/components/schemas/MaterialNode-write_create' application/ld+json: schema: - $ref: '#/components/schemas/Category.jsonld-write_create' + $ref: '#/components/schemas/MaterialNode.jsonld-write_create' application/vnd.api+json: schema: - $ref: '#/components/schemas/Category.jsonapi-write_create' + $ref: '#/components/schemas/MaterialNode.jsonapi' text/html: schema: - $ref: '#/components/schemas/Category-write_create' - description: 'The new Category resource' + $ref: '#/components/schemas/MaterialNode-write_create' + description: 'The new MaterialNode resource' required: true responses: 201: content: application/hal+json: schema: - $ref: '#/components/schemas/Category.jsonhal-read_Category.PreferredContentTypes_Category.ContentNodes' + $ref: '#/components/schemas/MaterialNode.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/Category-read_Category.PreferredContentTypes_Category.ContentNodes' + $ref: '#/components/schemas/MaterialNode-read' application/ld+json: schema: - $ref: '#/components/schemas/Category.jsonld-read_Category.PreferredContentTypes_Category.ContentNodes' + $ref: '#/components/schemas/MaterialNode.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/Category.jsonapi-read_Category.PreferredContentTypes_Category.ContentNodes' + $ref: '#/components/schemas/MaterialNode.jsonapi' text/html: schema: - $ref: '#/components/schemas/Category-read_Category.PreferredContentTypes_Category.ContentNodes' - description: 'Category resource created' + $ref: '#/components/schemas/MaterialNode-read' + description: 'MaterialNode resource created' links: [] 400: description: 'Invalid input' 422: description: 'Unprocessable entity' - summary: 'Creates a Category resource.' + summary: 'Creates a MaterialNode resource.' tags: - - Category - '/categories/{id}': + - MaterialNode + '/content_node/material_nodes/{id}': delete: deprecated: false - description: 'Removes the Category resource.' - operationId: api_categories_id_delete + description: 'Removes the MaterialNode resource.' + operationId: api_content_nodematerial_nodes_id_delete parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'Category identifier' + description: 'MaterialNode identifier' explode: false in: path name: id @@ -26752,22 +23276,22 @@ paths: style: simple responses: 204: - description: 'Category resource deleted' + description: 'MaterialNode resource deleted' 404: description: 'Resource not found' - summary: 'Removes the Category resource.' + summary: 'Removes the MaterialNode resource.' tags: - - Category + - MaterialNode get: deprecated: false - description: 'Retrieves a Category resource.' - operationId: api_categories_id_get + description: 'Retrieves a MaterialNode resource.' + operationId: api_content_nodematerial_nodes_id_get parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'Category identifier' + description: 'MaterialNode identifier' explode: false in: path name: id @@ -26780,36 +23304,36 @@ paths: content: application/hal+json: schema: - $ref: '#/components/schemas/Category.jsonhal-read_Category.PreferredContentTypes_Category.ContentNodes' + $ref: '#/components/schemas/MaterialNode.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/Category-read_Category.PreferredContentTypes_Category.ContentNodes' + $ref: '#/components/schemas/MaterialNode-read' application/ld+json: schema: - $ref: '#/components/schemas/Category.jsonld-read_Category.PreferredContentTypes_Category.ContentNodes' + $ref: '#/components/schemas/MaterialNode.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/Category.jsonapi-read_Category.PreferredContentTypes_Category.ContentNodes' + $ref: '#/components/schemas/MaterialNode.jsonapi' text/html: schema: - $ref: '#/components/schemas/Category-read_Category.PreferredContentTypes_Category.ContentNodes' - description: 'Category resource' + $ref: '#/components/schemas/MaterialNode-read' + description: 'MaterialNode resource' 404: description: 'Resource not found' - summary: 'Retrieves a Category resource.' + summary: 'Retrieves a MaterialNode resource.' tags: - - Category + - MaterialNode parameters: [] patch: deprecated: false - description: 'Updates the Category resource.' - operationId: api_categories_id_patch + description: 'Updates the MaterialNode resource.' + operationId: api_content_nodematerial_nodes_id_patch parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'Category identifier' + description: 'MaterialNode identifier' explode: false in: path name: id @@ -26821,31 +23345,31 @@ paths: content: application/merge-patch+json: schema: - $ref: '#/components/schemas/Category-write_update' + $ref: '#/components/schemas/MaterialNode-write_update' application/vnd.api+json: schema: - $ref: '#/components/schemas/Category.jsonapi-write_update' - description: 'The updated Category resource' + $ref: '#/components/schemas/MaterialNode.jsonapi' + description: 'The updated MaterialNode resource' required: true responses: 200: content: application/hal+json: schema: - $ref: '#/components/schemas/Category.jsonhal-read_Category.PreferredContentTypes_Category.ContentNodes' + $ref: '#/components/schemas/MaterialNode.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/Category-read_Category.PreferredContentTypes_Category.ContentNodes' + $ref: '#/components/schemas/MaterialNode-read' application/ld+json: schema: - $ref: '#/components/schemas/Category.jsonld-read_Category.PreferredContentTypes_Category.ContentNodes' + $ref: '#/components/schemas/MaterialNode.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/Category.jsonapi-read_Category.PreferredContentTypes_Category.ContentNodes' + $ref: '#/components/schemas/MaterialNode.jsonapi' text/html: schema: - $ref: '#/components/schemas/Category-read_Category.PreferredContentTypes_Category.ContentNodes' - description: 'Category resource updated' + $ref: '#/components/schemas/MaterialNode-read' + description: 'MaterialNode resource updated' links: [] 400: description: 'Invalid input' @@ -26853,14 +23377,14 @@ paths: description: 'Resource not found' 422: description: 'Unprocessable entity' - summary: 'Updates the Category resource.' + summary: 'Updates the MaterialNode resource.' tags: - - Category - /content_node/column_layouts: + - MaterialNode + /content_node/multi_selects: get: deprecated: false - description: 'Retrieves the collection of ColumnLayout resources.' - operationId: api_content_nodecolumn_layouts_get_collection + description: 'Retrieves the collection of MultiSelect resources.' + operationId: api_content_nodemulti_selects_get_collection parameters: - allowEmptyValue: true @@ -26932,7 +23456,7 @@ paths: application/hal+json: schema: properties: - _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/ColumnLayout.jsonhal-read' }, type: array } }, type: object }, { type: object }] } + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/MultiSelect.jsonhal-read' }, type: array } }, type: object }, { type: object }] } _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } itemsPerPage: { minimum: 0, type: integer } totalItems: { minimum: 0, type: integer } @@ -26943,12 +23467,12 @@ paths: application/json: schema: items: - $ref: '#/components/schemas/ColumnLayout-read' + $ref: '#/components/schemas/MultiSelect-read' type: array application/ld+json: schema: properties: - 'hydra:member': { items: { $ref: '#/components/schemas/ColumnLayout.jsonld-read' }, type: array } + 'hydra:member': { items: { $ref: '#/components/schemas/MultiSelect.jsonld-read' }, type: array } 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } 'hydra:totalItems': { minimum: 0, type: integer } 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } @@ -26958,80 +23482,80 @@ paths: application/vnd.api+json: schema: items: - $ref: '#/components/schemas/ColumnLayout.jsonapi-read' + $ref: '#/components/schemas/MultiSelect.jsonapi' type: array text/html: schema: items: - $ref: '#/components/schemas/ColumnLayout-read' + $ref: '#/components/schemas/MultiSelect-read' type: array - description: 'ColumnLayout collection' - summary: 'Retrieves the collection of ColumnLayout resources.' + description: 'MultiSelect collection' + summary: 'Retrieves the collection of MultiSelect resources.' tags: - - ColumnLayout + - MultiSelect parameters: [] post: deprecated: false - description: 'Creates a ColumnLayout resource.' - operationId: api_content_nodecolumn_layouts_post + description: 'Creates a MultiSelect resource.' + operationId: api_content_nodemulti_selects_post parameters: [] requestBody: content: application/hal+json: schema: - $ref: '#/components/schemas/ColumnLayout.jsonhal-write_create' + $ref: '#/components/schemas/MultiSelect.jsonhal-write_create' application/json: schema: - $ref: '#/components/schemas/ColumnLayout-write_create' + $ref: '#/components/schemas/MultiSelect-write_create' application/ld+json: schema: - $ref: '#/components/schemas/ColumnLayout.jsonld-write_create' + $ref: '#/components/schemas/MultiSelect.jsonld-write_create' application/vnd.api+json: schema: - $ref: '#/components/schemas/ColumnLayout.jsonapi-write_create' + $ref: '#/components/schemas/MultiSelect.jsonapi' text/html: schema: - $ref: '#/components/schemas/ColumnLayout-write_create' - description: 'The new ColumnLayout resource' + $ref: '#/components/schemas/MultiSelect-write_create' + description: 'The new MultiSelect resource' required: true responses: 201: content: application/hal+json: schema: - $ref: '#/components/schemas/ColumnLayout.jsonhal-read' + $ref: '#/components/schemas/MultiSelect.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/ColumnLayout-read' + $ref: '#/components/schemas/MultiSelect-read' application/ld+json: schema: - $ref: '#/components/schemas/ColumnLayout.jsonld-read' + $ref: '#/components/schemas/MultiSelect.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/ColumnLayout.jsonapi-read' + $ref: '#/components/schemas/MultiSelect.jsonapi' text/html: schema: - $ref: '#/components/schemas/ColumnLayout-read' - description: 'ColumnLayout resource created' + $ref: '#/components/schemas/MultiSelect-read' + description: 'MultiSelect resource created' links: [] 400: description: 'Invalid input' 422: description: 'Unprocessable entity' - summary: 'Creates a ColumnLayout resource.' + summary: 'Creates a MultiSelect resource.' tags: - - ColumnLayout - '/content_node/column_layouts/{id}': + - MultiSelect + '/content_node/multi_selects/{id}': delete: deprecated: false - description: 'Removes the ColumnLayout resource.' - operationId: api_content_nodecolumn_layouts_id_delete + description: 'Removes the MultiSelect resource.' + operationId: api_content_nodemulti_selects_id_delete parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'ColumnLayout identifier' + description: 'MultiSelect identifier' explode: false in: path name: id @@ -27041,22 +23565,22 @@ paths: style: simple responses: 204: - description: 'ColumnLayout resource deleted' + description: 'MultiSelect resource deleted' 404: description: 'Resource not found' - summary: 'Removes the ColumnLayout resource.' + summary: 'Removes the MultiSelect resource.' tags: - - ColumnLayout + - MultiSelect get: deprecated: false - description: 'Retrieves a ColumnLayout resource.' - operationId: api_content_nodecolumn_layouts_id_get + description: 'Retrieves a MultiSelect resource.' + operationId: api_content_nodemulti_selects_id_get parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'ColumnLayout identifier' + description: 'MultiSelect identifier' explode: false in: path name: id @@ -27069,36 +23593,36 @@ paths: content: application/hal+json: schema: - $ref: '#/components/schemas/ColumnLayout.jsonhal-read' + $ref: '#/components/schemas/MultiSelect.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/ColumnLayout-read' + $ref: '#/components/schemas/MultiSelect-read' application/ld+json: schema: - $ref: '#/components/schemas/ColumnLayout.jsonld-read' + $ref: '#/components/schemas/MultiSelect.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/ColumnLayout.jsonapi-read' + $ref: '#/components/schemas/MultiSelect.jsonapi' text/html: schema: - $ref: '#/components/schemas/ColumnLayout-read' - description: 'ColumnLayout resource' + $ref: '#/components/schemas/MultiSelect-read' + description: 'MultiSelect resource' 404: description: 'Resource not found' - summary: 'Retrieves a ColumnLayout resource.' + summary: 'Retrieves a MultiSelect resource.' tags: - - ColumnLayout + - MultiSelect parameters: [] patch: deprecated: false - description: 'Updates the ColumnLayout resource.' - operationId: api_content_nodecolumn_layouts_id_patch + description: 'Updates the MultiSelect resource.' + operationId: api_content_nodemulti_selects_id_patch parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'ColumnLayout identifier' + description: 'MultiSelect identifier' explode: false in: path name: id @@ -27110,31 +23634,31 @@ paths: content: application/merge-patch+json: schema: - $ref: '#/components/schemas/ColumnLayout-write_update' + $ref: '#/components/schemas/MultiSelect-write_update' application/vnd.api+json: schema: - $ref: '#/components/schemas/ColumnLayout.jsonapi-write_update' - description: 'The updated ColumnLayout resource' + $ref: '#/components/schemas/MultiSelect.jsonapi' + description: 'The updated MultiSelect resource' required: true responses: 200: content: application/hal+json: schema: - $ref: '#/components/schemas/ColumnLayout.jsonhal-read' + $ref: '#/components/schemas/MultiSelect.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/ColumnLayout-read' + $ref: '#/components/schemas/MultiSelect-read' application/ld+json: schema: - $ref: '#/components/schemas/ColumnLayout.jsonld-read' + $ref: '#/components/schemas/MultiSelect.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/ColumnLayout.jsonapi-read' + $ref: '#/components/schemas/MultiSelect.jsonapi' text/html: schema: - $ref: '#/components/schemas/ColumnLayout-read' - description: 'ColumnLayout resource updated' + $ref: '#/components/schemas/MultiSelect-read' + description: 'MultiSelect resource updated' links: [] 400: description: 'Invalid input' @@ -27142,14 +23666,14 @@ paths: description: 'Resource not found' 422: description: 'Unprocessable entity' - summary: 'Updates the ColumnLayout resource.' + summary: 'Updates the MultiSelect resource.' tags: - - ColumnLayout - /content_node/material_nodes: + - MultiSelect + /content_node/responsive_layouts: get: deprecated: false - description: 'Retrieves the collection of MaterialNode resources.' - operationId: api_content_nodematerial_nodes_get_collection + description: 'Retrieves the collection of ResponsiveLayout resources.' + operationId: api_content_noderesponsive_layouts_get_collection parameters: - allowEmptyValue: true @@ -27221,7 +23745,7 @@ paths: application/hal+json: schema: properties: - _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/MaterialNode.jsonhal-read' }, type: array } }, type: object }, { type: object }] } + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/ResponsiveLayout.jsonhal-read' }, type: array } }, type: object }, { type: object }] } _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } itemsPerPage: { minimum: 0, type: integer } totalItems: { minimum: 0, type: integer } @@ -27232,12 +23756,12 @@ paths: application/json: schema: items: - $ref: '#/components/schemas/MaterialNode-read' + $ref: '#/components/schemas/ResponsiveLayout-read' type: array application/ld+json: schema: properties: - 'hydra:member': { items: { $ref: '#/components/schemas/MaterialNode.jsonld-read' }, type: array } + 'hydra:member': { items: { $ref: '#/components/schemas/ResponsiveLayout.jsonld-read' }, type: array } 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } 'hydra:totalItems': { minimum: 0, type: integer } 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } @@ -27247,80 +23771,80 @@ paths: application/vnd.api+json: schema: items: - $ref: '#/components/schemas/MaterialNode.jsonapi-read' + $ref: '#/components/schemas/ResponsiveLayout.jsonapi' type: array text/html: schema: items: - $ref: '#/components/schemas/MaterialNode-read' + $ref: '#/components/schemas/ResponsiveLayout-read' type: array - description: 'MaterialNode collection' - summary: 'Retrieves the collection of MaterialNode resources.' + description: 'ResponsiveLayout collection' + summary: 'Retrieves the collection of ResponsiveLayout resources.' tags: - - MaterialNode + - ResponsiveLayout parameters: [] post: deprecated: false - description: 'Creates a MaterialNode resource.' - operationId: api_content_nodematerial_nodes_post + description: 'Creates a ResponsiveLayout resource.' + operationId: api_content_noderesponsive_layouts_post parameters: [] requestBody: content: application/hal+json: schema: - $ref: '#/components/schemas/MaterialNode.jsonhal-write_create' + $ref: '#/components/schemas/ResponsiveLayout.jsonhal-write_create' application/json: schema: - $ref: '#/components/schemas/MaterialNode-write_create' + $ref: '#/components/schemas/ResponsiveLayout-write_create' application/ld+json: schema: - $ref: '#/components/schemas/MaterialNode.jsonld-write_create' + $ref: '#/components/schemas/ResponsiveLayout.jsonld-write_create' application/vnd.api+json: schema: - $ref: '#/components/schemas/MaterialNode.jsonapi-write_create' + $ref: '#/components/schemas/ResponsiveLayout.jsonapi' text/html: schema: - $ref: '#/components/schemas/MaterialNode-write_create' - description: 'The new MaterialNode resource' + $ref: '#/components/schemas/ResponsiveLayout-write_create' + description: 'The new ResponsiveLayout resource' required: true responses: 201: content: application/hal+json: schema: - $ref: '#/components/schemas/MaterialNode.jsonhal-read' + $ref: '#/components/schemas/ResponsiveLayout.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/MaterialNode-read' + $ref: '#/components/schemas/ResponsiveLayout-read' application/ld+json: schema: - $ref: '#/components/schemas/MaterialNode.jsonld-read' + $ref: '#/components/schemas/ResponsiveLayout.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/MaterialNode.jsonapi-read' + $ref: '#/components/schemas/ResponsiveLayout.jsonapi' text/html: schema: - $ref: '#/components/schemas/MaterialNode-read' - description: 'MaterialNode resource created' + $ref: '#/components/schemas/ResponsiveLayout-read' + description: 'ResponsiveLayout resource created' links: [] 400: description: 'Invalid input' 422: description: 'Unprocessable entity' - summary: 'Creates a MaterialNode resource.' + summary: 'Creates a ResponsiveLayout resource.' tags: - - MaterialNode - '/content_node/material_nodes/{id}': + - ResponsiveLayout + '/content_node/responsive_layouts/{id}': delete: deprecated: false - description: 'Removes the MaterialNode resource.' - operationId: api_content_nodematerial_nodes_id_delete + description: 'Removes the ResponsiveLayout resource.' + operationId: api_content_noderesponsive_layouts_id_delete parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'MaterialNode identifier' + description: 'ResponsiveLayout identifier' explode: false in: path name: id @@ -27330,22 +23854,22 @@ paths: style: simple responses: 204: - description: 'MaterialNode resource deleted' + description: 'ResponsiveLayout resource deleted' 404: description: 'Resource not found' - summary: 'Removes the MaterialNode resource.' + summary: 'Removes the ResponsiveLayout resource.' tags: - - MaterialNode + - ResponsiveLayout get: deprecated: false - description: 'Retrieves a MaterialNode resource.' - operationId: api_content_nodematerial_nodes_id_get + description: 'Retrieves a ResponsiveLayout resource.' + operationId: api_content_noderesponsive_layouts_id_get parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'MaterialNode identifier' + description: 'ResponsiveLayout identifier' explode: false in: path name: id @@ -27358,36 +23882,36 @@ paths: content: application/hal+json: schema: - $ref: '#/components/schemas/MaterialNode.jsonhal-read' + $ref: '#/components/schemas/ResponsiveLayout.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/MaterialNode-read' + $ref: '#/components/schemas/ResponsiveLayout-read' application/ld+json: schema: - $ref: '#/components/schemas/MaterialNode.jsonld-read' + $ref: '#/components/schemas/ResponsiveLayout.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/MaterialNode.jsonapi-read' + $ref: '#/components/schemas/ResponsiveLayout.jsonapi' text/html: schema: - $ref: '#/components/schemas/MaterialNode-read' - description: 'MaterialNode resource' + $ref: '#/components/schemas/ResponsiveLayout-read' + description: 'ResponsiveLayout resource' 404: description: 'Resource not found' - summary: 'Retrieves a MaterialNode resource.' + summary: 'Retrieves a ResponsiveLayout resource.' tags: - - MaterialNode + - ResponsiveLayout parameters: [] patch: deprecated: false - description: 'Updates the MaterialNode resource.' - operationId: api_content_nodematerial_nodes_id_patch + description: 'Updates the ResponsiveLayout resource.' + operationId: api_content_noderesponsive_layouts_id_patch parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'MaterialNode identifier' + description: 'ResponsiveLayout identifier' explode: false in: path name: id @@ -27399,31 +23923,31 @@ paths: content: application/merge-patch+json: schema: - $ref: '#/components/schemas/MaterialNode-write_update' + $ref: '#/components/schemas/ResponsiveLayout-write_update' application/vnd.api+json: schema: - $ref: '#/components/schemas/MaterialNode.jsonapi-write_update' - description: 'The updated MaterialNode resource' + $ref: '#/components/schemas/ResponsiveLayout.jsonapi' + description: 'The updated ResponsiveLayout resource' required: true responses: 200: content: application/hal+json: schema: - $ref: '#/components/schemas/MaterialNode.jsonhal-read' + $ref: '#/components/schemas/ResponsiveLayout.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/MaterialNode-read' + $ref: '#/components/schemas/ResponsiveLayout-read' application/ld+json: schema: - $ref: '#/components/schemas/MaterialNode.jsonld-read' + $ref: '#/components/schemas/ResponsiveLayout.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/MaterialNode.jsonapi-read' + $ref: '#/components/schemas/ResponsiveLayout.jsonapi' text/html: schema: - $ref: '#/components/schemas/MaterialNode-read' - description: 'MaterialNode resource updated' + $ref: '#/components/schemas/ResponsiveLayout-read' + description: 'ResponsiveLayout resource updated' links: [] 400: description: 'Invalid input' @@ -27431,14 +23955,14 @@ paths: description: 'Resource not found' 422: description: 'Unprocessable entity' - summary: 'Updates the MaterialNode resource.' + summary: 'Updates the ResponsiveLayout resource.' tags: - - MaterialNode - /content_node/multi_selects: + - ResponsiveLayout + /content_node/single_texts: get: deprecated: false - description: 'Retrieves the collection of MultiSelect resources.' - operationId: api_content_nodemulti_selects_get_collection + description: 'Retrieves the collection of SingleText resources.' + operationId: api_content_nodesingle_texts_get_collection parameters: - allowEmptyValue: true @@ -27510,7 +24034,7 @@ paths: application/hal+json: schema: properties: - _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/MultiSelect.jsonhal-read' }, type: array } }, type: object }, { type: object }] } + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/SingleText.jsonhal-read' }, type: array } }, type: object }, { type: object }] } _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } itemsPerPage: { minimum: 0, type: integer } totalItems: { minimum: 0, type: integer } @@ -27521,12 +24045,12 @@ paths: application/json: schema: items: - $ref: '#/components/schemas/MultiSelect-read' + $ref: '#/components/schemas/SingleText-read' type: array application/ld+json: schema: properties: - 'hydra:member': { items: { $ref: '#/components/schemas/MultiSelect.jsonld-read' }, type: array } + 'hydra:member': { items: { $ref: '#/components/schemas/SingleText.jsonld-read' }, type: array } 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } 'hydra:totalItems': { minimum: 0, type: integer } 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } @@ -27536,80 +24060,80 @@ paths: application/vnd.api+json: schema: items: - $ref: '#/components/schemas/MultiSelect.jsonapi-read' + $ref: '#/components/schemas/SingleText.jsonapi' type: array text/html: schema: items: - $ref: '#/components/schemas/MultiSelect-read' + $ref: '#/components/schemas/SingleText-read' type: array - description: 'MultiSelect collection' - summary: 'Retrieves the collection of MultiSelect resources.' + description: 'SingleText collection' + summary: 'Retrieves the collection of SingleText resources.' tags: - - MultiSelect + - SingleText parameters: [] post: deprecated: false - description: 'Creates a MultiSelect resource.' - operationId: api_content_nodemulti_selects_post + description: 'Creates a SingleText resource.' + operationId: api_content_nodesingle_texts_post parameters: [] requestBody: content: application/hal+json: schema: - $ref: '#/components/schemas/MultiSelect.jsonhal-write_create' + $ref: '#/components/schemas/SingleText.jsonhal-write_create' application/json: schema: - $ref: '#/components/schemas/MultiSelect-write_create' + $ref: '#/components/schemas/SingleText-write_create' application/ld+json: schema: - $ref: '#/components/schemas/MultiSelect.jsonld-write_create' + $ref: '#/components/schemas/SingleText.jsonld-write_create' application/vnd.api+json: schema: - $ref: '#/components/schemas/MultiSelect.jsonapi-write_create' + $ref: '#/components/schemas/SingleText.jsonapi' text/html: schema: - $ref: '#/components/schemas/MultiSelect-write_create' - description: 'The new MultiSelect resource' + $ref: '#/components/schemas/SingleText-write_create' + description: 'The new SingleText resource' required: true responses: 201: content: application/hal+json: schema: - $ref: '#/components/schemas/MultiSelect.jsonhal-read' + $ref: '#/components/schemas/SingleText.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/MultiSelect-read' + $ref: '#/components/schemas/SingleText-read' application/ld+json: schema: - $ref: '#/components/schemas/MultiSelect.jsonld-read' + $ref: '#/components/schemas/SingleText.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/MultiSelect.jsonapi-read' + $ref: '#/components/schemas/SingleText.jsonapi' text/html: schema: - $ref: '#/components/schemas/MultiSelect-read' - description: 'MultiSelect resource created' + $ref: '#/components/schemas/SingleText-read' + description: 'SingleText resource created' links: [] 400: description: 'Invalid input' 422: description: 'Unprocessable entity' - summary: 'Creates a MultiSelect resource.' + summary: 'Creates a SingleText resource.' tags: - - MultiSelect - '/content_node/multi_selects/{id}': + - SingleText + '/content_node/single_texts/{id}': delete: deprecated: false - description: 'Removes the MultiSelect resource.' - operationId: api_content_nodemulti_selects_id_delete + description: 'Removes the SingleText resource.' + operationId: api_content_nodesingle_texts_id_delete parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'MultiSelect identifier' + description: 'SingleText identifier' explode: false in: path name: id @@ -27619,22 +24143,22 @@ paths: style: simple responses: 204: - description: 'MultiSelect resource deleted' + description: 'SingleText resource deleted' 404: description: 'Resource not found' - summary: 'Removes the MultiSelect resource.' + summary: 'Removes the SingleText resource.' tags: - - MultiSelect + - SingleText get: deprecated: false - description: 'Retrieves a MultiSelect resource.' - operationId: api_content_nodemulti_selects_id_get + description: 'Retrieves a SingleText resource.' + operationId: api_content_nodesingle_texts_id_get parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'MultiSelect identifier' + description: 'SingleText identifier' explode: false in: path name: id @@ -27647,36 +24171,36 @@ paths: content: application/hal+json: schema: - $ref: '#/components/schemas/MultiSelect.jsonhal-read' + $ref: '#/components/schemas/SingleText.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/MultiSelect-read' + $ref: '#/components/schemas/SingleText-read' application/ld+json: schema: - $ref: '#/components/schemas/MultiSelect.jsonld-read' + $ref: '#/components/schemas/SingleText.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/MultiSelect.jsonapi-read' + $ref: '#/components/schemas/SingleText.jsonapi' text/html: schema: - $ref: '#/components/schemas/MultiSelect-read' - description: 'MultiSelect resource' + $ref: '#/components/schemas/SingleText-read' + description: 'SingleText resource' 404: description: 'Resource not found' - summary: 'Retrieves a MultiSelect resource.' + summary: 'Retrieves a SingleText resource.' tags: - - MultiSelect + - SingleText parameters: [] patch: deprecated: false - description: 'Updates the MultiSelect resource.' - operationId: api_content_nodemulti_selects_id_patch + description: 'Updates the SingleText resource.' + operationId: api_content_nodesingle_texts_id_patch parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'MultiSelect identifier' + description: 'SingleText identifier' explode: false in: path name: id @@ -27688,31 +24212,31 @@ paths: content: application/merge-patch+json: schema: - $ref: '#/components/schemas/MultiSelect-write_update' + $ref: '#/components/schemas/SingleText-write_update' application/vnd.api+json: schema: - $ref: '#/components/schemas/MultiSelect.jsonapi-write_update' - description: 'The updated MultiSelect resource' + $ref: '#/components/schemas/SingleText.jsonapi' + description: 'The updated SingleText resource' required: true responses: 200: content: application/hal+json: schema: - $ref: '#/components/schemas/MultiSelect.jsonhal-read' + $ref: '#/components/schemas/SingleText.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/MultiSelect-read' + $ref: '#/components/schemas/SingleText-read' application/ld+json: schema: - $ref: '#/components/schemas/MultiSelect.jsonld-read' + $ref: '#/components/schemas/SingleText.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/MultiSelect.jsonapi-read' + $ref: '#/components/schemas/SingleText.jsonapi' text/html: schema: - $ref: '#/components/schemas/MultiSelect-read' - description: 'MultiSelect resource updated' + $ref: '#/components/schemas/SingleText-read' + description: 'SingleText resource updated' links: [] 400: description: 'Invalid input' @@ -27720,14 +24244,14 @@ paths: description: 'Resource not found' 422: description: 'Unprocessable entity' - summary: 'Updates the MultiSelect resource.' + summary: 'Updates the SingleText resource.' tags: - - MultiSelect - /content_node/responsive_layouts: + - SingleText + /content_node/storyboards: get: deprecated: false - description: 'Retrieves the collection of ResponsiveLayout resources.' - operationId: api_content_noderesponsive_layouts_get_collection + description: 'Retrieves the collection of Storyboard resources.' + operationId: api_content_nodestoryboards_get_collection parameters: - allowEmptyValue: true @@ -27799,7 +24323,7 @@ paths: application/hal+json: schema: properties: - _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/ResponsiveLayout.jsonhal-read' }, type: array } }, type: object }, { type: object }] } + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/Storyboard.jsonhal-read' }, type: array } }, type: object }, { type: object }] } _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } itemsPerPage: { minimum: 0, type: integer } totalItems: { minimum: 0, type: integer } @@ -27810,12 +24334,12 @@ paths: application/json: schema: items: - $ref: '#/components/schemas/ResponsiveLayout-read' + $ref: '#/components/schemas/Storyboard-read' type: array application/ld+json: schema: properties: - 'hydra:member': { items: { $ref: '#/components/schemas/ResponsiveLayout.jsonld-read' }, type: array } + 'hydra:member': { items: { $ref: '#/components/schemas/Storyboard.jsonld-read' }, type: array } 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } 'hydra:totalItems': { minimum: 0, type: integer } 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } @@ -27825,80 +24349,80 @@ paths: application/vnd.api+json: schema: items: - $ref: '#/components/schemas/ResponsiveLayout.jsonapi-read' + $ref: '#/components/schemas/Storyboard.jsonapi' type: array text/html: schema: items: - $ref: '#/components/schemas/ResponsiveLayout-read' + $ref: '#/components/schemas/Storyboard-read' type: array - description: 'ResponsiveLayout collection' - summary: 'Retrieves the collection of ResponsiveLayout resources.' + description: 'Storyboard collection' + summary: 'Retrieves the collection of Storyboard resources.' tags: - - ResponsiveLayout + - Storyboard parameters: [] post: deprecated: false - description: 'Creates a ResponsiveLayout resource.' - operationId: api_content_noderesponsive_layouts_post + description: 'Creates a Storyboard resource.' + operationId: api_content_nodestoryboards_post parameters: [] requestBody: content: application/hal+json: schema: - $ref: '#/components/schemas/ResponsiveLayout.jsonhal-write_create' + $ref: '#/components/schemas/Storyboard.jsonhal-write_create' application/json: schema: - $ref: '#/components/schemas/ResponsiveLayout-write_create' + $ref: '#/components/schemas/Storyboard-write_create' application/ld+json: schema: - $ref: '#/components/schemas/ResponsiveLayout.jsonld-write_create' + $ref: '#/components/schemas/Storyboard.jsonld-write_create' application/vnd.api+json: schema: - $ref: '#/components/schemas/ResponsiveLayout.jsonapi-write_create' + $ref: '#/components/schemas/Storyboard.jsonapi' text/html: schema: - $ref: '#/components/schemas/ResponsiveLayout-write_create' - description: 'The new ResponsiveLayout resource' + $ref: '#/components/schemas/Storyboard-write_create' + description: 'The new Storyboard resource' required: true responses: 201: content: application/hal+json: schema: - $ref: '#/components/schemas/ResponsiveLayout.jsonhal-read' + $ref: '#/components/schemas/Storyboard.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/ResponsiveLayout-read' + $ref: '#/components/schemas/Storyboard-read' application/ld+json: schema: - $ref: '#/components/schemas/ResponsiveLayout.jsonld-read' + $ref: '#/components/schemas/Storyboard.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/ResponsiveLayout.jsonapi-read' + $ref: '#/components/schemas/Storyboard.jsonapi' text/html: schema: - $ref: '#/components/schemas/ResponsiveLayout-read' - description: 'ResponsiveLayout resource created' + $ref: '#/components/schemas/Storyboard-read' + description: 'Storyboard resource created' links: [] 400: description: 'Invalid input' 422: description: 'Unprocessable entity' - summary: 'Creates a ResponsiveLayout resource.' + summary: 'Creates a Storyboard resource.' tags: - - ResponsiveLayout - '/content_node/responsive_layouts/{id}': + - Storyboard + '/content_node/storyboards/{id}': delete: deprecated: false - description: 'Removes the ResponsiveLayout resource.' - operationId: api_content_noderesponsive_layouts_id_delete + description: 'Removes the Storyboard resource.' + operationId: api_content_nodestoryboards_id_delete parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'ResponsiveLayout identifier' + description: 'Storyboard identifier' explode: false in: path name: id @@ -27908,22 +24432,22 @@ paths: style: simple responses: 204: - description: 'ResponsiveLayout resource deleted' + description: 'Storyboard resource deleted' 404: description: 'Resource not found' - summary: 'Removes the ResponsiveLayout resource.' + summary: 'Removes the Storyboard resource.' tags: - - ResponsiveLayout + - Storyboard get: deprecated: false - description: 'Retrieves a ResponsiveLayout resource.' - operationId: api_content_noderesponsive_layouts_id_get + description: 'Retrieves a Storyboard resource.' + operationId: api_content_nodestoryboards_id_get parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'ResponsiveLayout identifier' + description: 'Storyboard identifier' explode: false in: path name: id @@ -27936,36 +24460,36 @@ paths: content: application/hal+json: schema: - $ref: '#/components/schemas/ResponsiveLayout.jsonhal-read' + $ref: '#/components/schemas/Storyboard.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/ResponsiveLayout-read' + $ref: '#/components/schemas/Storyboard-read' application/ld+json: schema: - $ref: '#/components/schemas/ResponsiveLayout.jsonld-read' + $ref: '#/components/schemas/Storyboard.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/ResponsiveLayout.jsonapi-read' + $ref: '#/components/schemas/Storyboard.jsonapi' text/html: schema: - $ref: '#/components/schemas/ResponsiveLayout-read' - description: 'ResponsiveLayout resource' + $ref: '#/components/schemas/Storyboard-read' + description: 'Storyboard resource' 404: description: 'Resource not found' - summary: 'Retrieves a ResponsiveLayout resource.' + summary: 'Retrieves a Storyboard resource.' tags: - - ResponsiveLayout + - Storyboard parameters: [] patch: deprecated: false - description: 'Updates the ResponsiveLayout resource.' - operationId: api_content_noderesponsive_layouts_id_patch + description: 'Updates the Storyboard resource.' + operationId: api_content_nodestoryboards_id_patch parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'ResponsiveLayout identifier' + description: 'Storyboard identifier' explode: false in: path name: id @@ -27977,31 +24501,31 @@ paths: content: application/merge-patch+json: schema: - $ref: '#/components/schemas/ResponsiveLayout-write_update' + $ref: '#/components/schemas/Storyboard-write_update' application/vnd.api+json: schema: - $ref: '#/components/schemas/ResponsiveLayout.jsonapi-write_update' - description: 'The updated ResponsiveLayout resource' + $ref: '#/components/schemas/Storyboard.jsonapi' + description: 'The updated Storyboard resource' required: true responses: 200: content: application/hal+json: schema: - $ref: '#/components/schemas/ResponsiveLayout.jsonhal-read' + $ref: '#/components/schemas/Storyboard.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/ResponsiveLayout-read' + $ref: '#/components/schemas/Storyboard-read' application/ld+json: schema: - $ref: '#/components/schemas/ResponsiveLayout.jsonld-read' + $ref: '#/components/schemas/Storyboard.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/ResponsiveLayout.jsonapi-read' + $ref: '#/components/schemas/Storyboard.jsonapi' text/html: schema: - $ref: '#/components/schemas/ResponsiveLayout-read' - description: 'ResponsiveLayout resource updated' + $ref: '#/components/schemas/Storyboard-read' + description: 'Storyboard resource updated' links: [] 400: description: 'Invalid input' @@ -28009,14 +24533,14 @@ paths: description: 'Resource not found' 422: description: 'Unprocessable entity' - summary: 'Updates the ResponsiveLayout resource.' + summary: 'Updates the Storyboard resource.' tags: - - ResponsiveLayout - /content_node/single_texts: + - Storyboard + /content_nodes: get: deprecated: false - description: 'Retrieves the collection of SingleText resources.' - operationId: api_content_nodesingle_texts_get_collection + description: 'Retrieves the collection of ContentNode resources.' + operationId: api_content_nodes_get_collection parameters: - allowEmptyValue: true @@ -28088,7 +24612,7 @@ paths: application/hal+json: schema: properties: - _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/SingleText.jsonhal-read' }, type: array } }, type: object }, { type: object }] } + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/ContentNode.jsonhal-read' }, type: array } }, type: object }, { type: object }] } _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } itemsPerPage: { minimum: 0, type: integer } totalItems: { minimum: 0, type: integer } @@ -28099,12 +24623,12 @@ paths: application/json: schema: items: - $ref: '#/components/schemas/SingleText-read' + $ref: '#/components/schemas/ContentNode-read' type: array application/ld+json: schema: properties: - 'hydra:member': { items: { $ref: '#/components/schemas/SingleText.jsonld-read' }, type: array } + 'hydra:member': { items: { $ref: '#/components/schemas/ContentNode.jsonld-read' }, type: array } 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } 'hydra:totalItems': { minimum: 0, type: integer } 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } @@ -28114,147 +24638,105 @@ paths: application/vnd.api+json: schema: items: - $ref: '#/components/schemas/SingleText.jsonapi-read' + $ref: '#/components/schemas/ContentNode.jsonapi' type: array text/html: schema: items: - $ref: '#/components/schemas/SingleText-read' + $ref: '#/components/schemas/ContentNode-read' type: array - description: 'SingleText collection' - summary: 'Retrieves the collection of SingleText resources.' + description: 'ContentNode collection' + summary: 'Retrieves the collection of ContentNode resources.' tags: - - SingleText + - ContentNode parameters: [] - post: - deprecated: false - description: 'Creates a SingleText resource.' - operationId: api_content_nodesingle_texts_post - parameters: [] - requestBody: - content: - application/hal+json: - schema: - $ref: '#/components/schemas/SingleText.jsonhal-write_create' - application/json: - schema: - $ref: '#/components/schemas/SingleText-write_create' - application/ld+json: - schema: - $ref: '#/components/schemas/SingleText.jsonld-write_create' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/SingleText.jsonapi-write_create' - text/html: - schema: - $ref: '#/components/schemas/SingleText-write_create' - description: 'The new SingleText resource' - required: true - responses: - 201: - content: - application/hal+json: - schema: - $ref: '#/components/schemas/SingleText.jsonhal-read' - application/json: - schema: - $ref: '#/components/schemas/SingleText-read' - application/ld+json: - schema: - $ref: '#/components/schemas/SingleText.jsonld-read' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/SingleText.jsonapi-read' - text/html: - schema: - $ref: '#/components/schemas/SingleText-read' - description: 'SingleText resource created' - links: [] - 400: - description: 'Invalid input' - 422: - description: 'Unprocessable entity' - summary: 'Creates a SingleText resource.' - tags: - - SingleText - '/content_node/single_texts/{id}': - delete: + /content_types: + get: deprecated: false - description: 'Removes the SingleText resource.' - operationId: api_content_nodesingle_texts_id_delete + description: 'Retrieves the collection of ContentType resources.' + operationId: api_content_types_get_collection parameters: - - allowEmptyValue: false + allowEmptyValue: true allowReserved: false deprecated: false - description: 'SingleText identifier' + description: '' explode: false - in: path - name: id - required: true + in: query + name: categories + required: false schema: type: string - style: simple - responses: - 204: - description: 'SingleText resource deleted' - 404: - description: 'Resource not found' - summary: 'Removes the SingleText resource.' - tags: - - SingleText - get: - deprecated: false - description: 'Retrieves a SingleText resource.' - operationId: api_content_nodesingle_texts_id_get - parameters: + style: form - - allowEmptyValue: false + allowEmptyValue: true allowReserved: false deprecated: false - description: 'SingleText identifier' - explode: false - in: path - name: id - required: true + description: '' + explode: true + in: query + name: 'categories[]' + required: false schema: - type: string - style: simple + items: + type: string + type: array + style: form responses: 200: content: application/hal+json: schema: - $ref: '#/components/schemas/SingleText.jsonhal-read' + properties: + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/ContentType.jsonhal-read' }, type: array } }, type: object }, { type: object }] } + _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } + itemsPerPage: { minimum: 0, type: integer } + totalItems: { minimum: 0, type: integer } + required: + - _embedded + - _links + type: object application/json: schema: - $ref: '#/components/schemas/SingleText-read' + items: + $ref: '#/components/schemas/ContentType-read' + type: array application/ld+json: schema: - $ref: '#/components/schemas/SingleText.jsonld-read' + properties: + 'hydra:member': { items: { $ref: '#/components/schemas/ContentType.jsonld-read' }, type: array } + 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } + 'hydra:totalItems': { minimum: 0, type: integer } + 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } + required: + - 'hydra:member' + type: object application/vnd.api+json: schema: - $ref: '#/components/schemas/SingleText.jsonapi-read' - text/html: - schema: - $ref: '#/components/schemas/SingleText-read' - description: 'SingleText resource' - 404: - description: 'Resource not found' - summary: 'Retrieves a SingleText resource.' + items: + $ref: '#/components/schemas/ContentType.jsonapi' + type: array + text/html: + schema: + items: + $ref: '#/components/schemas/ContentType-read' + type: array + description: 'ContentType collection' + summary: 'Retrieves the collection of ContentType resources.' tags: - - SingleText + - ContentType parameters: [] - patch: + '/content_types/{id}': + get: deprecated: false - description: 'Updates the SingleText resource.' - operationId: api_content_nodesingle_texts_id_patch + description: 'Retrieves a ContentType resource.' + operationId: api_content_types_id_get parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'SingleText identifier' + description: 'ContentType identifier' explode: false in: path name: id @@ -28262,50 +24744,36 @@ paths: schema: type: string style: simple - requestBody: - content: - application/merge-patch+json: - schema: - $ref: '#/components/schemas/SingleText-write_update' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/SingleText.jsonapi-write_update' - description: 'The updated SingleText resource' - required: true responses: 200: content: application/hal+json: schema: - $ref: '#/components/schemas/SingleText.jsonhal-read' + $ref: '#/components/schemas/ContentType.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/SingleText-read' + $ref: '#/components/schemas/ContentType-read' application/ld+json: schema: - $ref: '#/components/schemas/SingleText.jsonld-read' + $ref: '#/components/schemas/ContentType.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/SingleText.jsonapi-read' + $ref: '#/components/schemas/ContentType.jsonapi' text/html: schema: - $ref: '#/components/schemas/SingleText-read' - description: 'SingleText resource updated' - links: [] - 400: - description: 'Invalid input' + $ref: '#/components/schemas/ContentType-read' + description: 'ContentType resource' 404: description: 'Resource not found' - 422: - description: 'Unprocessable entity' - summary: 'Updates the SingleText resource.' + summary: 'Retrieves a ContentType resource.' tags: - - SingleText - /content_node/storyboards: + - ContentType + parameters: [] + /day_responsibles: get: deprecated: false - description: 'Retrieves the collection of Storyboard resources.' - operationId: api_content_nodestoryboards_get_collection + description: 'Retrieves the collection of DayResponsible resources.' + operationId: api_day_responsibles_get_collection parameters: - allowEmptyValue: true @@ -28314,19 +24782,7 @@ paths: description: '' explode: false in: query - name: contentType - required: false - schema: - type: string - style: form - - - allowEmptyValue: true - allowReserved: false - deprecated: false - description: '' - explode: false - in: query - name: period + name: day required: false schema: type: string @@ -28338,7 +24794,7 @@ paths: description: '' explode: false in: query - name: root + name: day.period required: false schema: type: string @@ -28350,7 +24806,7 @@ paths: description: '' explode: true in: query - name: 'contentType[]' + name: 'day.period[]' required: false schema: items: @@ -28364,7 +24820,7 @@ paths: description: '' explode: true in: query - name: 'root[]' + name: 'day[]' required: false schema: items: @@ -28377,7 +24833,7 @@ paths: application/hal+json: schema: properties: - _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/Storyboard.jsonhal-read' }, type: array } }, type: object }, { type: object }] } + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/DayResponsible.jsonhal-read' }, type: array } }, type: object }, { type: object }] } _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } itemsPerPage: { minimum: 0, type: integer } totalItems: { minimum: 0, type: integer } @@ -28388,12 +24844,12 @@ paths: application/json: schema: items: - $ref: '#/components/schemas/Storyboard-read' + $ref: '#/components/schemas/DayResponsible-read' type: array application/ld+json: schema: properties: - 'hydra:member': { items: { $ref: '#/components/schemas/Storyboard.jsonld-read' }, type: array } + 'hydra:member': { items: { $ref: '#/components/schemas/DayResponsible.jsonld-read' }, type: array } 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } 'hydra:totalItems': { minimum: 0, type: integer } 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } @@ -28403,80 +24859,80 @@ paths: application/vnd.api+json: schema: items: - $ref: '#/components/schemas/Storyboard.jsonapi-read' + $ref: '#/components/schemas/DayResponsible.jsonapi' type: array text/html: schema: items: - $ref: '#/components/schemas/Storyboard-read' + $ref: '#/components/schemas/DayResponsible-read' type: array - description: 'Storyboard collection' - summary: 'Retrieves the collection of Storyboard resources.' + description: 'DayResponsible collection' + summary: 'Retrieves the collection of DayResponsible resources.' tags: - - Storyboard + - DayResponsible parameters: [] post: deprecated: false - description: 'Creates a Storyboard resource.' - operationId: api_content_nodestoryboards_post + description: 'Creates a DayResponsible resource.' + operationId: api_day_responsibles_post parameters: [] requestBody: content: application/hal+json: schema: - $ref: '#/components/schemas/Storyboard.jsonhal-write_create' + $ref: '#/components/schemas/DayResponsible.jsonhal-write' application/json: schema: - $ref: '#/components/schemas/Storyboard-write_create' + $ref: '#/components/schemas/DayResponsible-write' application/ld+json: schema: - $ref: '#/components/schemas/Storyboard.jsonld-write_create' + $ref: '#/components/schemas/DayResponsible.jsonld-write' application/vnd.api+json: schema: - $ref: '#/components/schemas/Storyboard.jsonapi-write_create' + $ref: '#/components/schemas/DayResponsible.jsonapi' text/html: schema: - $ref: '#/components/schemas/Storyboard-write_create' - description: 'The new Storyboard resource' + $ref: '#/components/schemas/DayResponsible-write' + description: 'The new DayResponsible resource' required: true responses: 201: content: application/hal+json: schema: - $ref: '#/components/schemas/Storyboard.jsonhal-read' + $ref: '#/components/schemas/DayResponsible.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/Storyboard-read' + $ref: '#/components/schemas/DayResponsible-read' application/ld+json: schema: - $ref: '#/components/schemas/Storyboard.jsonld-read' + $ref: '#/components/schemas/DayResponsible.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/Storyboard.jsonapi-read' + $ref: '#/components/schemas/DayResponsible.jsonapi' text/html: schema: - $ref: '#/components/schemas/Storyboard-read' - description: 'Storyboard resource created' + $ref: '#/components/schemas/DayResponsible-read' + description: 'DayResponsible resource created' links: [] 400: description: 'Invalid input' 422: description: 'Unprocessable entity' - summary: 'Creates a Storyboard resource.' + summary: 'Creates a DayResponsible resource.' tags: - - Storyboard - '/content_node/storyboards/{id}': + - DayResponsible + '/day_responsibles/{id}': delete: deprecated: false - description: 'Removes the Storyboard resource.' - operationId: api_content_nodestoryboards_id_delete + description: 'Removes the DayResponsible resource.' + operationId: api_day_responsibles_id_delete parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'Storyboard identifier' + description: 'DayResponsible identifier' explode: false in: path name: id @@ -28486,22 +24942,22 @@ paths: style: simple responses: 204: - description: 'Storyboard resource deleted' + description: 'DayResponsible resource deleted' 404: description: 'Resource not found' - summary: 'Removes the Storyboard resource.' + summary: 'Removes the DayResponsible resource.' tags: - - Storyboard + - DayResponsible get: deprecated: false - description: 'Retrieves a Storyboard resource.' - operationId: api_content_nodestoryboards_id_get + description: 'Retrieves a DayResponsible resource.' + operationId: api_day_responsibles_id_get parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'Storyboard identifier' + description: 'DayResponsible identifier' explode: false in: path name: id @@ -28514,100 +24970,146 @@ paths: content: application/hal+json: schema: - $ref: '#/components/schemas/Storyboard.jsonhal-read' + $ref: '#/components/schemas/DayResponsible.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/Storyboard-read' + $ref: '#/components/schemas/DayResponsible-read' application/ld+json: schema: - $ref: '#/components/schemas/Storyboard.jsonld-read' + $ref: '#/components/schemas/DayResponsible.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/Storyboard.jsonapi-read' + $ref: '#/components/schemas/DayResponsible.jsonapi' text/html: schema: - $ref: '#/components/schemas/Storyboard-read' - description: 'Storyboard resource' + $ref: '#/components/schemas/DayResponsible-read' + description: 'DayResponsible resource' 404: description: 'Resource not found' - summary: 'Retrieves a Storyboard resource.' + summary: 'Retrieves a DayResponsible resource.' tags: - - Storyboard + - DayResponsible parameters: [] - patch: + /days: + get: deprecated: false - description: 'Updates the Storyboard resource.' - operationId: api_content_nodestoryboards_id_patch + description: 'Retrieves the collection of Day resources.' + operationId: api_days_get_collection parameters: - - allowEmptyValue: false + allowEmptyValue: true allowReserved: false deprecated: false - description: 'Storyboard identifier' + description: '' explode: false - in: path - name: id - required: true + in: query + name: period + required: false schema: type: string - style: simple - requestBody: - content: - application/merge-patch+json: - schema: - $ref: '#/components/schemas/Storyboard-write_update' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/Storyboard.jsonapi-write_update' - description: 'The updated Storyboard resource' - required: true + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: false + in: query + name: period.camp + required: false + schema: + type: string + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: true + in: query + name: 'period.camp[]' + required: false + schema: + items: + type: string + type: array + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: true + in: query + name: 'period[]' + required: false + schema: + items: + type: string + type: array + style: form responses: 200: content: application/hal+json: schema: - $ref: '#/components/schemas/Storyboard.jsonhal-read' + properties: + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/Day.jsonhal-read_Day.DayResponsibles' }, type: array } }, type: object }, { type: object }] } + _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } + itemsPerPage: { minimum: 0, type: integer } + totalItems: { minimum: 0, type: integer } + required: + - _embedded + - _links + type: object application/json: schema: - $ref: '#/components/schemas/Storyboard-read' + items: + $ref: '#/components/schemas/Day-read_Day.DayResponsibles' + type: array application/ld+json: schema: - $ref: '#/components/schemas/Storyboard.jsonld-read' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/Storyboard.jsonapi-read' - text/html: - schema: - $ref: '#/components/schemas/Storyboard-read' - description: 'Storyboard resource updated' - links: [] - 400: - description: 'Invalid input' - 404: - description: 'Resource not found' - 422: - description: 'Unprocessable entity' - summary: 'Updates the Storyboard resource.' + properties: + 'hydra:member': { items: { $ref: '#/components/schemas/Day.jsonld-read_Day.DayResponsibles' }, type: array } + 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } + 'hydra:totalItems': { minimum: 0, type: integer } + 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } + required: + - 'hydra:member' + type: object + application/vnd.api+json: + schema: + items: + $ref: '#/components/schemas/Day.jsonapi' + type: array + text/html: + schema: + items: + $ref: '#/components/schemas/Day-read_Day.DayResponsibles' + type: array + description: 'Day collection' + summary: 'Retrieves the collection of Day resources.' tags: - - Storyboard - /content_nodes: + - Day + parameters: [] + '/days/{dayId}/day_responsibles': get: deprecated: false - description: 'Retrieves the collection of ContentNode resources.' - operationId: api_content_nodes_get_collection + description: 'Retrieves the collection of DayResponsible resources.' + operationId: api_days_dayIdday_responsibles_get_collection parameters: - - allowEmptyValue: true + allowEmptyValue: false allowReserved: false deprecated: false - description: '' + description: 'DayResponsible identifier' explode: false - in: query - name: contentType - required: false + in: path + name: dayId + required: true schema: type: string - style: form + style: simple - allowEmptyValue: true allowReserved: false @@ -28615,7 +25117,7 @@ paths: description: '' explode: false in: query - name: period + name: day required: false schema: type: string @@ -28627,7 +25129,7 @@ paths: description: '' explode: false in: query - name: root + name: day.period required: false schema: type: string @@ -28639,7 +25141,7 @@ paths: description: '' explode: true in: query - name: 'contentType[]' + name: 'day.period[]' required: false schema: items: @@ -28653,7 +25155,7 @@ paths: description: '' explode: true in: query - name: 'root[]' + name: 'day[]' required: false schema: items: @@ -28666,7 +25168,7 @@ paths: application/hal+json: schema: properties: - _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/ContentNode.jsonhal-read' }, type: array } }, type: object }, { type: object }] } + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/DayResponsible.jsonhal-read' }, type: array } }, type: object }, { type: object }] } _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } itemsPerPage: { minimum: 0, type: integer } totalItems: { minimum: 0, type: integer } @@ -28677,12 +25179,12 @@ paths: application/json: schema: items: - $ref: '#/components/schemas/ContentNode-read' + $ref: '#/components/schemas/DayResponsible-read' type: array application/ld+json: schema: properties: - 'hydra:member': { items: { $ref: '#/components/schemas/ContentNode.jsonld-read' }, type: array } + 'hydra:member': { items: { $ref: '#/components/schemas/DayResponsible.jsonld-read' }, type: array } 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } 'hydra:totalItems': { minimum: 0, type: integer } 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } @@ -28692,108 +25194,133 @@ paths: application/vnd.api+json: schema: items: - $ref: '#/components/schemas/ContentNode.jsonapi-read' + $ref: '#/components/schemas/DayResponsible.jsonapi' type: array text/html: schema: items: - $ref: '#/components/schemas/ContentNode-read' + $ref: '#/components/schemas/DayResponsible-read' type: array - description: 'ContentNode collection' - summary: 'Retrieves the collection of ContentNode resources.' + description: 'DayResponsible collection' + summary: 'Retrieves the collection of DayResponsible resources.' tags: - - ContentNode + - DayResponsible parameters: [] - /content_types: + '/days/{id}': get: deprecated: false - description: 'Retrieves the collection of ContentType resources.' - operationId: api_content_types_get_collection + description: 'Retrieves a Day resource.' + operationId: api_days_id_get parameters: - - allowEmptyValue: true + allowEmptyValue: false allowReserved: false deprecated: false - description: '' + description: 'Day identifier' explode: false - in: query - name: categories - required: false + in: path + name: id + required: true schema: type: string - style: form + style: simple + responses: + 200: + content: + application/hal+json: + schema: + $ref: '#/components/schemas/Day.jsonhal-read_Day.DayResponsibles' + application/json: + schema: + $ref: '#/components/schemas/Day-read_Day.DayResponsibles' + application/ld+json: + schema: + $ref: '#/components/schemas/Day.jsonld-read_Day.DayResponsibles' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Day.jsonapi' + text/html: + schema: + $ref: '#/components/schemas/Day-read_Day.DayResponsibles' + description: 'Day resource' + 404: + description: 'Resource not found' + summary: 'Retrieves a Day resource.' + tags: + - Day + parameters: [] + '/invitations/{inviteKey}/accept': + parameters: [] + patch: + deprecated: false + description: 'Use myInviteKey2 to accept an invitation in dev environment.' + operationId: api_invitations_inviteKeyaccept_patch + parameters: - - allowEmptyValue: true + allowEmptyValue: false allowReserved: false deprecated: false - description: '' - explode: true - in: query - name: 'categories[]' - required: false + description: 'Invitation identifier' + explode: false + in: path + name: inviteKey + required: true schema: - items: - type: string - type: array - style: form + type: string + style: simple + requestBody: + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/Invitation-write' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Invitation.jsonapi' + description: 'The updated Invitation resource' + required: true responses: 200: content: application/hal+json: schema: - properties: - _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/ContentType.jsonhal-read' }, type: array } }, type: object }, { type: object }] } - _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } - itemsPerPage: { minimum: 0, type: integer } - totalItems: { minimum: 0, type: integer } - required: - - _embedded - - _links - type: object + $ref: '#/components/schemas/Invitation.jsonhal-read' application/json: schema: - items: - $ref: '#/components/schemas/ContentType-read' - type: array + $ref: '#/components/schemas/Invitation-read' application/ld+json: schema: - properties: - 'hydra:member': { items: { $ref: '#/components/schemas/ContentType.jsonld-read' }, type: array } - 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } - 'hydra:totalItems': { minimum: 0, type: integer } - 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } - required: - - 'hydra:member' - type: object + $ref: '#/components/schemas/Invitation.jsonld-read' application/vnd.api+json: schema: - items: - $ref: '#/components/schemas/ContentType.jsonapi-read' - type: array + $ref: '#/components/schemas/Invitation.jsonapi' text/html: schema: - items: - $ref: '#/components/schemas/ContentType-read' - type: array - description: 'ContentType collection' - summary: 'Retrieves the collection of ContentType resources.' + $ref: '#/components/schemas/Invitation-read' + description: 'Invitation resource updated' + links: [] + 400: + description: 'Invalid input' + 404: + description: 'Resource not found' + 422: + description: 'Unprocessable entity' + summary: 'Accept an Invitation.' tags: - - ContentType - parameters: [] - '/content_types/{id}': + - Invitation + '/invitations/{inviteKey}/find': get: deprecated: false - description: 'Retrieves a ContentType resource.' - operationId: api_content_types_id_get + description: 'Use myInviteKey to find an invitation in the dev environment.' + operationId: api_invitations_inviteKeyfind_get parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'ContentType identifier' + description: 'Invitation identifier' explode: false in: path - name: id + name: inviteKey required: true schema: type: string @@ -28803,31 +25330,89 @@ paths: content: application/hal+json: schema: - $ref: '#/components/schemas/ContentType.jsonhal-read' + $ref: '#/components/schemas/Invitation.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/ContentType-read' + $ref: '#/components/schemas/Invitation-read' application/ld+json: schema: - $ref: '#/components/schemas/ContentType.jsonld-read' + $ref: '#/components/schemas/Invitation.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/ContentType.jsonapi-read' + $ref: '#/components/schemas/Invitation.jsonapi' text/html: schema: - $ref: '#/components/schemas/ContentType-read' - description: 'ContentType resource' + $ref: '#/components/schemas/Invitation-read' + description: 'Invitation resource' 404: description: 'Resource not found' - summary: 'Retrieves a ContentType resource.' + summary: 'Retrieves a Invitation resource.' tags: - - ContentType + - Invitation parameters: [] - /day_responsibles: + '/invitations/{inviteKey}/reject': + parameters: [] + patch: + deprecated: false + description: 'Use myInviteKey to reject an invitation in dev environment.' + operationId: api_invitations_inviteKeyreject_patch + parameters: + - + allowEmptyValue: false + allowReserved: false + deprecated: false + description: 'Invitation identifier' + explode: false + in: path + name: inviteKey + required: true + schema: + type: string + style: simple + requestBody: + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/Invitation-write' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Invitation.jsonapi' + description: 'The updated Invitation resource' + required: true + responses: + 200: + content: + application/hal+json: + schema: + $ref: '#/components/schemas/Invitation.jsonhal-read' + application/json: + schema: + $ref: '#/components/schemas/Invitation-read' + application/ld+json: + schema: + $ref: '#/components/schemas/Invitation.jsonld-read' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Invitation.jsonapi' + text/html: + schema: + $ref: '#/components/schemas/Invitation-read' + description: 'Invitation resource updated' + links: [] + 400: + description: 'Invalid input' + 404: + description: 'Resource not found' + 422: + description: 'Unprocessable entity' + summary: 'Reject an Invitation.' + tags: + - Invitation + /material_items: get: deprecated: false - description: 'Retrieves the collection of DayResponsible resources.' - operationId: api_day_responsibles_get_collection + description: 'Retrieves the collection of MaterialItem resources.' + operationId: api_material_items_get_collection parameters: - allowEmptyValue: true @@ -28836,7 +25421,7 @@ paths: description: '' explode: false in: query - name: day + name: materialList required: false schema: type: string @@ -28848,7 +25433,19 @@ paths: description: '' explode: false in: query - name: day.period + name: materialNode + required: false + schema: + type: string + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: false + in: query + name: period required: false schema: type: string @@ -28860,7 +25457,7 @@ paths: description: '' explode: true in: query - name: 'day.period[]' + name: 'materialList[]' required: false schema: items: @@ -28874,7 +25471,7 @@ paths: description: '' explode: true in: query - name: 'day[]' + name: 'materialNode[]' required: false schema: items: @@ -28887,7 +25484,7 @@ paths: application/hal+json: schema: properties: - _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/DayResponsible.jsonhal-read' }, type: array } }, type: object }, { type: object }] } + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/MaterialItem.jsonhal-read' }, type: array } }, type: object }, { type: object }] } _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } itemsPerPage: { minimum: 0, type: integer } totalItems: { minimum: 0, type: integer } @@ -28898,12 +25495,12 @@ paths: application/json: schema: items: - $ref: '#/components/schemas/DayResponsible-read' + $ref: '#/components/schemas/MaterialItem-read' type: array application/ld+json: schema: properties: - 'hydra:member': { items: { $ref: '#/components/schemas/DayResponsible.jsonld-read' }, type: array } + 'hydra:member': { items: { $ref: '#/components/schemas/MaterialItem.jsonld-read' }, type: array } 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } 'hydra:totalItems': { minimum: 0, type: integer } 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } @@ -28913,80 +25510,80 @@ paths: application/vnd.api+json: schema: items: - $ref: '#/components/schemas/DayResponsible.jsonapi-read' + $ref: '#/components/schemas/MaterialItem.jsonapi' type: array text/html: schema: items: - $ref: '#/components/schemas/DayResponsible-read' + $ref: '#/components/schemas/MaterialItem-read' type: array - description: 'DayResponsible collection' - summary: 'Retrieves the collection of DayResponsible resources.' + description: 'MaterialItem collection' + summary: 'Retrieves the collection of MaterialItem resources.' tags: - - DayResponsible + - MaterialItem parameters: [] post: deprecated: false - description: 'Creates a DayResponsible resource.' - operationId: api_day_responsibles_post + description: 'Creates a MaterialItem resource.' + operationId: api_material_items_post parameters: [] requestBody: content: application/hal+json: schema: - $ref: '#/components/schemas/DayResponsible.jsonhal-write' + $ref: '#/components/schemas/MaterialItem.jsonhal-write' application/json: schema: - $ref: '#/components/schemas/DayResponsible-write' + $ref: '#/components/schemas/MaterialItem-write' application/ld+json: schema: - $ref: '#/components/schemas/DayResponsible.jsonld-write' + $ref: '#/components/schemas/MaterialItem.jsonld-write' application/vnd.api+json: schema: - $ref: '#/components/schemas/DayResponsible.jsonapi-write' + $ref: '#/components/schemas/MaterialItem.jsonapi' text/html: schema: - $ref: '#/components/schemas/DayResponsible-write' - description: 'The new DayResponsible resource' + $ref: '#/components/schemas/MaterialItem-write' + description: 'The new MaterialItem resource' required: true responses: 201: content: application/hal+json: schema: - $ref: '#/components/schemas/DayResponsible.jsonhal-read' + $ref: '#/components/schemas/MaterialItem.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/DayResponsible-read' + $ref: '#/components/schemas/MaterialItem-read' application/ld+json: schema: - $ref: '#/components/schemas/DayResponsible.jsonld-read' + $ref: '#/components/schemas/MaterialItem.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/DayResponsible.jsonapi-read' + $ref: '#/components/schemas/MaterialItem.jsonapi' text/html: schema: - $ref: '#/components/schemas/DayResponsible-read' - description: 'DayResponsible resource created' + $ref: '#/components/schemas/MaterialItem-read' + description: 'MaterialItem resource created' links: [] 400: description: 'Invalid input' 422: description: 'Unprocessable entity' - summary: 'Creates a DayResponsible resource.' + summary: 'Creates a MaterialItem resource.' tags: - - DayResponsible - '/day_responsibles/{id}': + - MaterialItem + '/material_items/{id}': delete: deprecated: false - description: 'Removes the DayResponsible resource.' - operationId: api_day_responsibles_id_delete + description: 'Removes the MaterialItem resource.' + operationId: api_material_items_id_delete parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'DayResponsible identifier' + description: 'MaterialItem identifier' explode: false in: path name: id @@ -28996,22 +25593,22 @@ paths: style: simple responses: 204: - description: 'DayResponsible resource deleted' + description: 'MaterialItem resource deleted' 404: description: 'Resource not found' - summary: 'Removes the DayResponsible resource.' + summary: 'Removes the MaterialItem resource.' tags: - - DayResponsible + - MaterialItem get: deprecated: false - description: 'Retrieves a DayResponsible resource.' - operationId: api_day_responsibles_id_get + description: 'Retrieves a MaterialItem resource.' + operationId: api_material_items_id_get parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'DayResponsible identifier' + description: 'MaterialItem identifier' explode: false in: path name: id @@ -29024,44 +25621,88 @@ paths: content: application/hal+json: schema: - $ref: '#/components/schemas/DayResponsible.jsonhal-read' + $ref: '#/components/schemas/MaterialItem.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/DayResponsible-read' + $ref: '#/components/schemas/MaterialItem-read' application/ld+json: schema: - $ref: '#/components/schemas/DayResponsible.jsonld-read' + $ref: '#/components/schemas/MaterialItem.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/DayResponsible.jsonapi-read' + $ref: '#/components/schemas/MaterialItem.jsonapi' text/html: schema: - $ref: '#/components/schemas/DayResponsible-read' - description: 'DayResponsible resource' + $ref: '#/components/schemas/MaterialItem-read' + description: 'MaterialItem resource' 404: description: 'Resource not found' - summary: 'Retrieves a DayResponsible resource.' + summary: 'Retrieves a MaterialItem resource.' tags: - - DayResponsible + - MaterialItem parameters: [] - /days: - get: + patch: deprecated: false - description: 'Retrieves the collection of Day resources.' - operationId: api_days_get_collection + description: 'Updates the MaterialItem resource.' + operationId: api_material_items_id_patch parameters: - - allowEmptyValue: true + allowEmptyValue: false allowReserved: false deprecated: false - description: '' + description: 'MaterialItem identifier' explode: false - in: query - name: period - required: false + in: path + name: id + required: true schema: type: string - style: form + style: simple + requestBody: + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/MaterialItem-write' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/MaterialItem.jsonapi' + description: 'The updated MaterialItem resource' + required: true + responses: + 200: + content: + application/hal+json: + schema: + $ref: '#/components/schemas/MaterialItem.jsonhal-read' + application/json: + schema: + $ref: '#/components/schemas/MaterialItem-read' + application/ld+json: + schema: + $ref: '#/components/schemas/MaterialItem.jsonld-read' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/MaterialItem.jsonapi' + text/html: + schema: + $ref: '#/components/schemas/MaterialItem-read' + description: 'MaterialItem resource updated' + links: [] + 400: + description: 'Invalid input' + 404: + description: 'Resource not found' + 422: + description: 'Unprocessable entity' + summary: 'Updates the MaterialItem resource.' + tags: + - MaterialItem + /material_lists: + get: + deprecated: false + description: 'Retrieves the collection of MaterialList resources.' + operationId: api_material_lists_get_collection + parameters: - allowEmptyValue: true allowReserved: false @@ -29069,7 +25710,7 @@ paths: description: '' explode: false in: query - name: period.camp + name: camp required: false schema: type: string @@ -29081,21 +25722,7 @@ paths: description: '' explode: true in: query - name: 'period.camp[]' - required: false - schema: - items: - type: string - type: array - style: form - - - allowEmptyValue: true - allowReserved: false - deprecated: false - description: '' - explode: true - in: query - name: 'period[]' + name: 'camp[]' required: false schema: items: @@ -29108,7 +25735,7 @@ paths: application/hal+json: schema: properties: - _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/Day.jsonhal-read_Day.DayResponsibles' }, type: array } }, type: object }, { type: object }] } + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/MaterialList.jsonhal-read' }, type: array } }, type: object }, { type: object }] } _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } itemsPerPage: { minimum: 0, type: integer } totalItems: { minimum: 0, type: integer } @@ -29119,12 +25746,12 @@ paths: application/json: schema: items: - $ref: '#/components/schemas/Day-read_Day.DayResponsibles' + $ref: '#/components/schemas/MaterialList-read' type: array application/ld+json: schema: properties: - 'hydra:member': { items: { $ref: '#/components/schemas/Day.jsonld-read_Day.DayResponsibles' }, type: array } + 'hydra:member': { items: { $ref: '#/components/schemas/MaterialList.jsonld-read' }, type: array } 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } 'hydra:totalItems': { minimum: 0, type: integer } 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } @@ -29134,133 +25761,108 @@ paths: application/vnd.api+json: schema: items: - $ref: '#/components/schemas/Day.jsonapi-read_Day.DayResponsibles' + $ref: '#/components/schemas/MaterialList.jsonapi' type: array text/html: schema: items: - $ref: '#/components/schemas/Day-read_Day.DayResponsibles' + $ref: '#/components/schemas/MaterialList-read' type: array - description: 'Day collection' - summary: 'Retrieves the collection of Day resources.' - tags: - - Day - parameters: [] - '/days/{id}': - get: - deprecated: false - description: 'Retrieves a Day resource.' - operationId: api_days_id_get - parameters: - - - allowEmptyValue: false - allowReserved: false - deprecated: false - description: 'Day identifier' - explode: false - in: path - name: id - required: true - schema: - type: string - style: simple - responses: - 200: - content: - application/hal+json: - schema: - $ref: '#/components/schemas/Day.jsonhal-read_Day.DayResponsibles' - application/json: - schema: - $ref: '#/components/schemas/Day-read_Day.DayResponsibles' - application/ld+json: - schema: - $ref: '#/components/schemas/Day.jsonld-read_Day.DayResponsibles' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/Day.jsonapi-read_Day.DayResponsibles' - text/html: - schema: - $ref: '#/components/schemas/Day-read_Day.DayResponsibles' - description: 'Day resource' - 404: - description: 'Resource not found' - summary: 'Retrieves a Day resource.' + description: 'MaterialList collection' + summary: 'Retrieves the collection of MaterialList resources.' tags: - - Day - parameters: [] - '/invitations/{inviteKey}/accept': + - MaterialList parameters: [] - patch: + post: deprecated: false - description: 'Use myInviteKey2 to accept an invitation in dev environment.' - operationId: api_invitations_inviteKeyaccept_patch - parameters: - - - allowEmptyValue: false - allowReserved: false - deprecated: false - description: 'Invitation identifier' - explode: false - in: path - name: inviteKey - required: true - schema: - type: string - style: simple + description: 'Creates a MaterialList resource.' + operationId: api_material_lists_post + parameters: [] requestBody: content: - application/merge-patch+json: + application/hal+json: schema: - $ref: '#/components/schemas/Invitation-write' + $ref: '#/components/schemas/MaterialList.jsonhal-write_create' + application/json: + schema: + $ref: '#/components/schemas/MaterialList-write_create' + application/ld+json: + schema: + $ref: '#/components/schemas/MaterialList.jsonld-write_create' application/vnd.api+json: schema: - $ref: '#/components/schemas/Invitation.jsonapi-write' - description: 'The updated Invitation resource' + $ref: '#/components/schemas/MaterialList.jsonapi' + text/html: + schema: + $ref: '#/components/schemas/MaterialList-write_create' + description: 'The new MaterialList resource' required: true responses: - 200: + 201: content: application/hal+json: schema: - $ref: '#/components/schemas/Invitation.jsonhal-read' + $ref: '#/components/schemas/MaterialList.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/Invitation-read' + $ref: '#/components/schemas/MaterialList-read' application/ld+json: schema: - $ref: '#/components/schemas/Invitation.jsonld-read' + $ref: '#/components/schemas/MaterialList.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/Invitation.jsonapi-read' + $ref: '#/components/schemas/MaterialList.jsonapi' text/html: schema: - $ref: '#/components/schemas/Invitation-read' - description: 'Invitation resource updated' + $ref: '#/components/schemas/MaterialList-read' + description: 'MaterialList resource created' links: [] 400: description: 'Invalid input' - 404: - description: 'Resource not found' 422: description: 'Unprocessable entity' - summary: 'Accept an Invitation.' + summary: 'Creates a MaterialList resource.' tags: - - Invitation - '/invitations/{inviteKey}/find': + - MaterialList + '/material_lists/{id}': + delete: + deprecated: false + description: 'Removes the MaterialList resource.' + operationId: api_material_lists_id_delete + parameters: + - + allowEmptyValue: false + allowReserved: false + deprecated: false + description: 'MaterialList identifier' + explode: false + in: path + name: id + required: true + schema: + type: string + style: simple + responses: + 204: + description: 'MaterialList resource deleted' + 404: + description: 'Resource not found' + summary: 'Removes the MaterialList resource.' + tags: + - MaterialList get: deprecated: false - description: 'Use myInviteKey to find an invitation in the dev environment.' - operationId: api_invitations_inviteKeyfind_get + description: 'Retrieves a MaterialList resource.' + operationId: api_material_lists_id_get parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'Invitation identifier' + description: 'MaterialList identifier' explode: false in: path - name: inviteKey + name: id required: true schema: type: string @@ -29270,41 +25872,39 @@ paths: content: application/hal+json: schema: - $ref: '#/components/schemas/Invitation.jsonhal-read' + $ref: '#/components/schemas/MaterialList.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/Invitation-read' + $ref: '#/components/schemas/MaterialList-read' application/ld+json: schema: - $ref: '#/components/schemas/Invitation.jsonld-read' + $ref: '#/components/schemas/MaterialList.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/Invitation.jsonapi-read' + $ref: '#/components/schemas/MaterialList.jsonapi' text/html: schema: - $ref: '#/components/schemas/Invitation-read' - description: 'Invitation resource' + $ref: '#/components/schemas/MaterialList-read' + description: 'MaterialList resource' 404: description: 'Resource not found' - summary: 'Retrieves a Invitation resource.' + summary: 'Retrieves a MaterialList resource.' tags: - - Invitation - parameters: [] - '/invitations/{inviteKey}/reject': + - MaterialList parameters: [] patch: deprecated: false - description: 'Use myInviteKey to reject an invitation in dev environment.' - operationId: api_invitations_inviteKeyreject_patch + description: 'Updates the MaterialList resource.' + operationId: api_material_lists_id_patch parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'Invitation identifier' + description: 'MaterialList identifier' explode: false in: path - name: inviteKey + name: id required: true schema: type: string @@ -29313,31 +25913,31 @@ paths: content: application/merge-patch+json: schema: - $ref: '#/components/schemas/Invitation-write' + $ref: '#/components/schemas/MaterialList-write' application/vnd.api+json: schema: - $ref: '#/components/schemas/Invitation.jsonapi-write' - description: 'The updated Invitation resource' + $ref: '#/components/schemas/MaterialList.jsonapi' + description: 'The updated MaterialList resource' required: true responses: 200: content: application/hal+json: schema: - $ref: '#/components/schemas/Invitation.jsonhal-read' + $ref: '#/components/schemas/MaterialList.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/Invitation-read' + $ref: '#/components/schemas/MaterialList-read' application/ld+json: schema: - $ref: '#/components/schemas/Invitation.jsonld-read' + $ref: '#/components/schemas/MaterialList.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/Invitation.jsonapi-read' + $ref: '#/components/schemas/MaterialList.jsonapi' text/html: schema: - $ref: '#/components/schemas/Invitation-read' - description: 'Invitation resource updated' + $ref: '#/components/schemas/MaterialList-read' + description: 'MaterialList resource updated' links: [] 400: description: 'Invalid input' @@ -29345,14 +25945,14 @@ paths: description: 'Resource not found' 422: description: 'Unprocessable entity' - summary: 'Reject an Invitation.' + summary: 'Updates the MaterialList resource.' tags: - - Invitation - /material_items: + - MaterialList + /periods: get: deprecated: false - description: 'Retrieves the collection of MaterialItem resources.' - operationId: api_material_items_get_collection + description: 'Retrieves the collection of Period resources.' + operationId: api_periods_get_collection parameters: - allowEmptyValue: true @@ -29361,31 +25961,7 @@ paths: description: '' explode: false in: query - name: materialList - required: false - schema: - type: string - style: form - - - allowEmptyValue: true - allowReserved: false - deprecated: false - description: '' - explode: false - in: query - name: materialNode - required: false - schema: - type: string - style: form - - - allowEmptyValue: true - allowReserved: false - deprecated: false - description: '' - explode: false - in: query - name: period + name: camp required: false schema: type: string @@ -29397,21 +25973,7 @@ paths: description: '' explode: true in: query - name: 'materialList[]' - required: false - schema: - items: - type: string - type: array - style: form - - - allowEmptyValue: true - allowReserved: false - deprecated: false - description: '' - explode: true - in: query - name: 'materialNode[]' + name: 'camp[]' required: false schema: items: @@ -29424,7 +25986,7 @@ paths: application/hal+json: schema: properties: - _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/MaterialItem.jsonhal-read' }, type: array } }, type: object }, { type: object }] } + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/Period.jsonhal-read' }, type: array } }, type: object }, { type: object }] } _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } itemsPerPage: { minimum: 0, type: integer } totalItems: { minimum: 0, type: integer } @@ -29435,12 +25997,12 @@ paths: application/json: schema: items: - $ref: '#/components/schemas/MaterialItem-read' + $ref: '#/components/schemas/Period-read' type: array application/ld+json: schema: properties: - 'hydra:member': { items: { $ref: '#/components/schemas/MaterialItem.jsonld-read' }, type: array } + 'hydra:member': { items: { $ref: '#/components/schemas/Period.jsonld-read' }, type: array } 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } 'hydra:totalItems': { minimum: 0, type: integer } 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } @@ -29450,80 +26012,80 @@ paths: application/vnd.api+json: schema: items: - $ref: '#/components/schemas/MaterialItem.jsonapi-read' + $ref: '#/components/schemas/Period.jsonapi' type: array text/html: schema: items: - $ref: '#/components/schemas/MaterialItem-read' + $ref: '#/components/schemas/Period-read' type: array - description: 'MaterialItem collection' - summary: 'Retrieves the collection of MaterialItem resources.' + description: 'Period collection' + summary: 'Retrieves the collection of Period resources.' tags: - - MaterialItem + - Period parameters: [] post: deprecated: false - description: 'Creates a MaterialItem resource.' - operationId: api_material_items_post + description: 'Creates a Period resource.' + operationId: api_periods_post parameters: [] requestBody: content: application/hal+json: schema: - $ref: '#/components/schemas/MaterialItem.jsonhal-write' + $ref: '#/components/schemas/Period.jsonhal-write_create' application/json: schema: - $ref: '#/components/schemas/MaterialItem-write' + $ref: '#/components/schemas/Period-write_create' application/ld+json: schema: - $ref: '#/components/schemas/MaterialItem.jsonld-write' + $ref: '#/components/schemas/Period.jsonld-write_create' application/vnd.api+json: schema: - $ref: '#/components/schemas/MaterialItem.jsonapi-write' + $ref: '#/components/schemas/Period.jsonapi' text/html: schema: - $ref: '#/components/schemas/MaterialItem-write' - description: 'The new MaterialItem resource' + $ref: '#/components/schemas/Period-write_create' + description: 'The new Period resource' required: true responses: 201: content: application/hal+json: schema: - $ref: '#/components/schemas/MaterialItem.jsonhal-read' + $ref: '#/components/schemas/Period.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/MaterialItem-read' + $ref: '#/components/schemas/Period-read' application/ld+json: schema: - $ref: '#/components/schemas/MaterialItem.jsonld-read' + $ref: '#/components/schemas/Period.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/MaterialItem.jsonapi-read' + $ref: '#/components/schemas/Period.jsonapi' text/html: schema: - $ref: '#/components/schemas/MaterialItem-read' - description: 'MaterialItem resource created' + $ref: '#/components/schemas/Period-read' + description: 'Period resource created' links: [] 400: description: 'Invalid input' 422: description: 'Unprocessable entity' - summary: 'Creates a MaterialItem resource.' + summary: 'Creates a Period resource.' tags: - - MaterialItem - '/material_items/{id}': + - Period + '/periods/{id}': delete: deprecated: false - description: 'Removes the MaterialItem resource.' - operationId: api_material_items_id_delete + description: 'Removes the Period resource.' + operationId: api_periods_id_delete parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'MaterialItem identifier' + description: 'Period identifier' explode: false in: path name: id @@ -29533,22 +26095,22 @@ paths: style: simple responses: 204: - description: 'MaterialItem resource deleted' + description: 'Period resource deleted' 404: description: 'Resource not found' - summary: 'Removes the MaterialItem resource.' + summary: 'Removes the Period resource.' tags: - - MaterialItem + - Period get: deprecated: false - description: 'Retrieves a MaterialItem resource.' - operationId: api_material_items_id_get + description: 'Retrieves a Period resource.' + operationId: api_periods_id_get parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'MaterialItem identifier' + description: 'Period identifier' explode: false in: path name: id @@ -29561,36 +26123,36 @@ paths: content: application/hal+json: schema: - $ref: '#/components/schemas/MaterialItem.jsonhal-read' + $ref: '#/components/schemas/Period.jsonhal-read_Period.Camp_Period.Days' application/json: schema: - $ref: '#/components/schemas/MaterialItem-read' + $ref: '#/components/schemas/Period-read_Period.Camp_Period.Days' application/ld+json: schema: - $ref: '#/components/schemas/MaterialItem.jsonld-read' + $ref: '#/components/schemas/Period.jsonld-read_Period.Camp_Period.Days' application/vnd.api+json: schema: - $ref: '#/components/schemas/MaterialItem.jsonapi-read' + $ref: '#/components/schemas/Period.jsonapi' text/html: schema: - $ref: '#/components/schemas/MaterialItem-read' - description: 'MaterialItem resource' + $ref: '#/components/schemas/Period-read_Period.Camp_Period.Days' + description: 'Period resource' 404: description: 'Resource not found' - summary: 'Retrieves a MaterialItem resource.' + summary: 'Retrieves a Period resource.' tags: - - MaterialItem + - Period parameters: [] patch: deprecated: false - description: 'Updates the MaterialItem resource.' - operationId: api_material_items_id_patch + description: 'Updates the Period resource.' + operationId: api_periods_id_patch parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'MaterialItem identifier' + description: 'Period identifier' explode: false in: path name: id @@ -29602,31 +26164,31 @@ paths: content: application/merge-patch+json: schema: - $ref: '#/components/schemas/MaterialItem-write' + $ref: '#/components/schemas/Period-write' application/vnd.api+json: schema: - $ref: '#/components/schemas/MaterialItem.jsonapi-write' - description: 'The updated MaterialItem resource' + $ref: '#/components/schemas/Period.jsonapi' + description: 'The updated Period resource' required: true responses: 200: content: application/hal+json: schema: - $ref: '#/components/schemas/MaterialItem.jsonhal-read' + $ref: '#/components/schemas/Period.jsonhal-read' application/json: schema: - $ref: '#/components/schemas/MaterialItem-read' + $ref: '#/components/schemas/Period-read' application/ld+json: schema: - $ref: '#/components/schemas/MaterialItem.jsonld-read' + $ref: '#/components/schemas/Period.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/MaterialItem.jsonapi-read' + $ref: '#/components/schemas/Period.jsonapi' text/html: schema: - $ref: '#/components/schemas/MaterialItem-read' - description: 'MaterialItem resource updated' + $ref: '#/components/schemas/Period-read' + description: 'Period resource updated' links: [] 400: description: 'Invalid input' @@ -29634,15 +26196,27 @@ paths: description: 'Resource not found' 422: description: 'Unprocessable entity' - summary: 'Updates the MaterialItem resource.' + summary: 'Updates the Period resource.' tags: - - MaterialItem - /material_lists: + - Period + '/periods/{periodId}/days': get: deprecated: false - description: 'Retrieves the collection of MaterialList resources.' - operationId: api_material_lists_get_collection + description: 'Retrieves the collection of Day resources.' + operationId: api_periods_periodIddays_get_collection parameters: + - + allowEmptyValue: false + allowReserved: false + deprecated: false + description: 'Day identifier' + explode: false + in: path + name: periodId + required: true + schema: + type: string + style: simple - allowEmptyValue: true allowReserved: false @@ -29650,7 +26224,19 @@ paths: description: '' explode: false in: query - name: camp + name: period + required: false + schema: + type: string + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: false + in: query + name: period.camp required: false schema: type: string @@ -29662,7 +26248,21 @@ paths: description: '' explode: true in: query - name: 'camp[]' + name: 'period.camp[]' + required: false + schema: + items: + type: string + type: array + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: true + in: query + name: 'period[]' required: false schema: items: @@ -29675,7 +26275,7 @@ paths: application/hal+json: schema: properties: - _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/MaterialList.jsonhal-read' }, type: array } }, type: object }, { type: object }] } + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/Day.jsonhal-read_Day.DayResponsibles' }, type: array } }, type: object }, { type: object }] } _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } itemsPerPage: { minimum: 0, type: integer } totalItems: { minimum: 0, type: integer } @@ -29686,12 +26286,12 @@ paths: application/json: schema: items: - $ref: '#/components/schemas/MaterialList-read' + $ref: '#/components/schemas/Day-read_Day.DayResponsibles' type: array application/ld+json: schema: properties: - 'hydra:member': { items: { $ref: '#/components/schemas/MaterialList.jsonld-read' }, type: array } + 'hydra:member': { items: { $ref: '#/components/schemas/Day.jsonld-read_Day.DayResponsibles' }, type: array } 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } 'hydra:totalItems': { minimum: 0, type: integer } 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } @@ -29701,199 +26301,144 @@ paths: application/vnd.api+json: schema: items: - $ref: '#/components/schemas/MaterialList.jsonapi-read' + $ref: '#/components/schemas/Day.jsonapi' type: array text/html: schema: items: - $ref: '#/components/schemas/MaterialList-read' + $ref: '#/components/schemas/Day-read_Day.DayResponsibles' type: array - description: 'MaterialList collection' - summary: 'Retrieves the collection of MaterialList resources.' + description: 'Day collection' + summary: 'Retrieves the collection of Day resources.' tags: - - MaterialList + - Day parameters: [] - post: - deprecated: false - description: 'Creates a MaterialList resource.' - operationId: api_material_lists_post - parameters: [] - requestBody: - content: - application/hal+json: - schema: - $ref: '#/components/schemas/MaterialList.jsonhal-write_create' - application/json: - schema: - $ref: '#/components/schemas/MaterialList-write_create' - application/ld+json: - schema: - $ref: '#/components/schemas/MaterialList.jsonld-write_create' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/MaterialList.jsonapi-write_create' - text/html: - schema: - $ref: '#/components/schemas/MaterialList-write_create' - description: 'The new MaterialList resource' - required: true - responses: - 201: - content: - application/hal+json: - schema: - $ref: '#/components/schemas/MaterialList.jsonhal-read' - application/json: - schema: - $ref: '#/components/schemas/MaterialList-read' - application/ld+json: - schema: - $ref: '#/components/schemas/MaterialList.jsonld-read' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/MaterialList.jsonapi-read' - text/html: - schema: - $ref: '#/components/schemas/MaterialList-read' - description: 'MaterialList resource created' - links: [] - 400: - description: 'Invalid input' - 422: - description: 'Unprocessable entity' - summary: 'Creates a MaterialList resource.' - tags: - - MaterialList - '/material_lists/{id}': - delete: + '/periods/{periodId}/schedule_entries': + get: deprecated: false - description: 'Removes the MaterialList resource.' - operationId: api_material_lists_id_delete + description: 'Retrieves the collection of ScheduleEntry resources.' + operationId: api_periods_periodIdschedule_entries_get_collection parameters: - allowEmptyValue: false allowReserved: false deprecated: false - description: 'MaterialList identifier' + description: 'ScheduleEntry identifier' explode: false in: path - name: id + name: periodId required: true schema: type: string style: simple - responses: - 204: - description: 'MaterialList resource deleted' - 404: - description: 'Resource not found' - summary: 'Removes the MaterialList resource.' - tags: - - MaterialList - get: - deprecated: false - description: 'Retrieves a MaterialList resource.' - operationId: api_material_lists_id_get - parameters: - - allowEmptyValue: false + allowEmptyValue: true allowReserved: false deprecated: false - description: 'MaterialList identifier' + description: '' explode: false - in: path - name: id - required: true + in: query + name: activity + required: false schema: type: string - style: simple - responses: - 200: - content: - application/hal+json: - schema: - $ref: '#/components/schemas/MaterialList.jsonhal-read' - application/json: - schema: - $ref: '#/components/schemas/MaterialList-read' - application/ld+json: - schema: - $ref: '#/components/schemas/MaterialList.jsonld-read' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/MaterialList.jsonapi-read' - text/html: - schema: - $ref: '#/components/schemas/MaterialList-read' - description: 'MaterialList resource' - 404: - description: 'Resource not found' - summary: 'Retrieves a MaterialList resource.' - tags: - - MaterialList - parameters: [] - patch: - deprecated: false - description: 'Updates the MaterialList resource.' - operationId: api_material_lists_id_patch - parameters: + style: form - - allowEmptyValue: false + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: false + in: query + name: 'end[after]' + required: false + schema: + type: string + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: false + in: query + name: 'end[before]' + required: false + schema: + type: string + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: false + in: query + name: 'end[strictly_after]' + required: false + schema: + type: string + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: false + in: query + name: 'end[strictly_before]' + required: false + schema: + type: string + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: false + in: query + name: period + required: false + schema: + type: string + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: false + in: query + name: 'start[after]' + required: false + schema: + type: string + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: false + in: query + name: 'start[before]' + required: false + schema: + type: string + style: form + - + allowEmptyValue: true allowReserved: false deprecated: false - description: 'MaterialList identifier' + description: '' explode: false - in: path - name: id - required: true + in: query + name: 'start[strictly_after]' + required: false schema: type: string - style: simple - requestBody: - content: - application/merge-patch+json: - schema: - $ref: '#/components/schemas/MaterialList-write' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/MaterialList.jsonapi-write' - description: 'The updated MaterialList resource' - required: true - responses: - 200: - content: - application/hal+json: - schema: - $ref: '#/components/schemas/MaterialList.jsonhal-read' - application/json: - schema: - $ref: '#/components/schemas/MaterialList-read' - application/ld+json: - schema: - $ref: '#/components/schemas/MaterialList.jsonld-read' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/MaterialList.jsonapi-read' - text/html: - schema: - $ref: '#/components/schemas/MaterialList-read' - description: 'MaterialList resource updated' - links: [] - 400: - description: 'Invalid input' - 404: - description: 'Resource not found' - 422: - description: 'Unprocessable entity' - summary: 'Updates the MaterialList resource.' - tags: - - MaterialList - /periods: - get: - deprecated: false - description: 'Retrieves the collection of Period resources.' - operationId: api_periods_get_collection - parameters: + style: form - allowEmptyValue: true allowReserved: false @@ -29901,7 +26446,7 @@ paths: description: '' explode: false in: query - name: camp + name: 'start[strictly_before]' required: false schema: type: string @@ -29913,7 +26458,21 @@ paths: description: '' explode: true in: query - name: 'camp[]' + name: 'activity[]' + required: false + schema: + items: + type: string + type: array + style: form + - + allowEmptyValue: true + allowReserved: false + deprecated: false + description: '' + explode: true + in: query + name: 'period[]' required: false schema: items: @@ -29926,7 +26485,7 @@ paths: application/hal+json: schema: properties: - _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/Period.jsonhal-read' }, type: array } }, type: object }, { type: object }] } + _embedded: { anyOf: [{ properties: { item: { items: { $ref: '#/components/schemas/ScheduleEntry.jsonhal-read' }, type: array } }, type: object }, { type: object }] } _links: { properties: { first: { properties: { href: { format: iri-reference, type: string } }, type: object }, last: { properties: { href: { format: iri-reference, type: string } }, type: object }, next: { properties: { href: { format: iri-reference, type: string } }, type: object }, previous: { properties: { href: { format: iri-reference, type: string } }, type: object }, self: { properties: { href: { format: iri-reference, type: string } }, type: object } }, type: object } itemsPerPage: { minimum: 0, type: integer } totalItems: { minimum: 0, type: integer } @@ -29937,12 +26496,12 @@ paths: application/json: schema: items: - $ref: '#/components/schemas/Period-read' + $ref: '#/components/schemas/ScheduleEntry-read' type: array application/ld+json: schema: properties: - 'hydra:member': { items: { $ref: '#/components/schemas/Period.jsonld-read' }, type: array } + 'hydra:member': { items: { $ref: '#/components/schemas/ScheduleEntry.jsonld-read' }, type: array } 'hydra:search': { properties: { '@type': { type: string }, 'hydra:mapping': { items: { properties: { '@type': { type: string }, property: { type: ['null', string] }, required: { type: boolean }, variable: { type: string } }, type: object }, type: array }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string } }, type: object } 'hydra:totalItems': { minimum: 0, type: integer } 'hydra:view': { example: { '@id': string, 'hydra:first': string, 'hydra:last': string, 'hydra:next': string, 'hydra:previous': string, type: string }, properties: { '@id': { format: iri-reference, type: string }, '@type': { type: string }, 'hydra:first': { format: iri-reference, type: string }, 'hydra:last': { format: iri-reference, type: string }, 'hydra:next': { format: iri-reference, type: string }, 'hydra:previous': { format: iri-reference, type: string } }, type: object } @@ -29952,193 +26511,18 @@ paths: application/vnd.api+json: schema: items: - $ref: '#/components/schemas/Period.jsonapi-read' + $ref: '#/components/schemas/ScheduleEntry.jsonapi' type: array text/html: schema: items: - $ref: '#/components/schemas/Period-read' + $ref: '#/components/schemas/ScheduleEntry-read' type: array - description: 'Period collection' - summary: 'Retrieves the collection of Period resources.' - tags: - - Period - parameters: [] - post: - deprecated: false - description: 'Creates a Period resource.' - operationId: api_periods_post - parameters: [] - requestBody: - content: - application/hal+json: - schema: - $ref: '#/components/schemas/Period.jsonhal-write_create' - application/json: - schema: - $ref: '#/components/schemas/Period-write_create' - application/ld+json: - schema: - $ref: '#/components/schemas/Period.jsonld-write_create' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/Period.jsonapi-write_create' - text/html: - schema: - $ref: '#/components/schemas/Period-write_create' - description: 'The new Period resource' - required: true - responses: - 201: - content: - application/hal+json: - schema: - $ref: '#/components/schemas/Period.jsonhal-read' - application/json: - schema: - $ref: '#/components/schemas/Period-read' - application/ld+json: - schema: - $ref: '#/components/schemas/Period.jsonld-read' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/Period.jsonapi-read' - text/html: - schema: - $ref: '#/components/schemas/Period-read' - description: 'Period resource created' - links: [] - 400: - description: 'Invalid input' - 422: - description: 'Unprocessable entity' - summary: 'Creates a Period resource.' - tags: - - Period - '/periods/{id}': - delete: - deprecated: false - description: 'Removes the Period resource.' - operationId: api_periods_id_delete - parameters: - - - allowEmptyValue: false - allowReserved: false - deprecated: false - description: 'Period identifier' - explode: false - in: path - name: id - required: true - schema: - type: string - style: simple - responses: - 204: - description: 'Period resource deleted' - 404: - description: 'Resource not found' - summary: 'Removes the Period resource.' - tags: - - Period - get: - deprecated: false - description: 'Retrieves a Period resource.' - operationId: api_periods_id_get - parameters: - - - allowEmptyValue: false - allowReserved: false - deprecated: false - description: 'Period identifier' - explode: false - in: path - name: id - required: true - schema: - type: string - style: simple - responses: - 200: - content: - application/hal+json: - schema: - $ref: '#/components/schemas/Period.jsonhal-read_Period.Camp_Period.Days' - application/json: - schema: - $ref: '#/components/schemas/Period-read_Period.Camp_Period.Days' - application/ld+json: - schema: - $ref: '#/components/schemas/Period.jsonld-read_Period.Camp_Period.Days' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/Period.jsonapi-read_Period.Camp_Period.Days' - text/html: - schema: - $ref: '#/components/schemas/Period-read_Period.Camp_Period.Days' - description: 'Period resource' - 404: - description: 'Resource not found' - summary: 'Retrieves a Period resource.' + description: 'ScheduleEntry collection' + summary: 'Retrieves the collection of ScheduleEntry resources.' tags: - - Period + - ScheduleEntry parameters: [] - patch: - deprecated: false - description: 'Updates the Period resource.' - operationId: api_periods_id_patch - parameters: - - - allowEmptyValue: false - allowReserved: false - deprecated: false - description: 'Period identifier' - explode: false - in: path - name: id - required: true - schema: - type: string - style: simple - requestBody: - content: - application/merge-patch+json: - schema: - $ref: '#/components/schemas/Period-write' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/Period.jsonapi-write' - description: 'The updated Period resource' - required: true - responses: - 200: - content: - application/hal+json: - schema: - $ref: '#/components/schemas/Period.jsonhal-read' - application/json: - schema: - $ref: '#/components/schemas/Period-read' - application/ld+json: - schema: - $ref: '#/components/schemas/Period.jsonld-read' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/Period.jsonapi-read' - text/html: - schema: - $ref: '#/components/schemas/Period-read' - description: 'Period resource updated' - links: [] - 400: - description: 'Invalid input' - 404: - description: 'Resource not found' - 422: - description: 'Unprocessable entity' - summary: 'Updates the Period resource.' - tags: - - Period /personal_invitations: get: deprecated: false @@ -30177,7 +26561,7 @@ paths: application/vnd.api+json: schema: items: - $ref: '#/components/schemas/PersonalInvitation.jsonapi-read' + $ref: '#/components/schemas/PersonalInvitation.jsonapi' type: array text/html: schema: @@ -30221,7 +26605,7 @@ paths: $ref: '#/components/schemas/PersonalInvitation.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/PersonalInvitation.jsonapi-read' + $ref: '#/components/schemas/PersonalInvitation.jsonapi' text/html: schema: $ref: '#/components/schemas/PersonalInvitation-read' @@ -30258,7 +26642,7 @@ paths: $ref: '#/components/schemas/PersonalInvitation-write' application/vnd.api+json: schema: - $ref: '#/components/schemas/PersonalInvitation.jsonapi-write' + $ref: '#/components/schemas/PersonalInvitation.jsonapi' description: 'The updated PersonalInvitation resource' required: true responses: @@ -30275,7 +26659,7 @@ paths: $ref: '#/components/schemas/PersonalInvitation.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/PersonalInvitation.jsonapi-read' + $ref: '#/components/schemas/PersonalInvitation.jsonapi' text/html: schema: $ref: '#/components/schemas/PersonalInvitation-read' @@ -30316,7 +26700,7 @@ paths: $ref: '#/components/schemas/PersonalInvitation-write' application/vnd.api+json: schema: - $ref: '#/components/schemas/PersonalInvitation.jsonapi-write' + $ref: '#/components/schemas/PersonalInvitation.jsonapi' description: 'The updated PersonalInvitation resource' required: true responses: @@ -30333,7 +26717,7 @@ paths: $ref: '#/components/schemas/PersonalInvitation.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/PersonalInvitation.jsonapi-read' + $ref: '#/components/schemas/PersonalInvitation.jsonapi' text/html: schema: $ref: '#/components/schemas/PersonalInvitation-read' @@ -30412,7 +26796,7 @@ paths: application/vnd.api+json: schema: items: - $ref: '#/components/schemas/Profile.jsonapi-read' + $ref: '#/components/schemas/Profile.jsonapi' type: array text/html: schema: @@ -30456,7 +26840,7 @@ paths: $ref: '#/components/schemas/Profile.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/Profile.jsonapi-read' + $ref: '#/components/schemas/Profile.jsonapi' text/html: schema: $ref: '#/components/schemas/Profile-read' @@ -30491,7 +26875,7 @@ paths: $ref: '#/components/schemas/Profile-write_update' application/vnd.api+json: schema: - $ref: '#/components/schemas/Profile.jsonapi-write_update' + $ref: '#/components/schemas/Profile.jsonapi' description: 'The updated Profile resource' required: true responses: @@ -30508,7 +26892,7 @@ paths: $ref: '#/components/schemas/Profile.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/Profile.jsonapi-read' + $ref: '#/components/schemas/Profile.jsonapi' text/html: schema: $ref: '#/components/schemas/Profile-read' @@ -30709,7 +27093,7 @@ paths: application/vnd.api+json: schema: items: - $ref: '#/components/schemas/ScheduleEntry.jsonapi-read' + $ref: '#/components/schemas/ScheduleEntry.jsonapi' type: array text/html: schema: @@ -30739,7 +27123,7 @@ paths: $ref: '#/components/schemas/ScheduleEntry.jsonld-write_create' application/vnd.api+json: schema: - $ref: '#/components/schemas/ScheduleEntry.jsonapi-write_create' + $ref: '#/components/schemas/ScheduleEntry.jsonapi' text/html: schema: $ref: '#/components/schemas/ScheduleEntry-write_create' @@ -30759,7 +27143,7 @@ paths: $ref: '#/components/schemas/ScheduleEntry.jsonld-read_ScheduleEntry.Activity' application/vnd.api+json: schema: - $ref: '#/components/schemas/ScheduleEntry.jsonapi-read_ScheduleEntry.Activity' + $ref: '#/components/schemas/ScheduleEntry.jsonapi' text/html: schema: $ref: '#/components/schemas/ScheduleEntry-read_ScheduleEntry.Activity' @@ -30829,7 +27213,7 @@ paths: $ref: '#/components/schemas/ScheduleEntry.jsonld-read_ScheduleEntry.Activity' application/vnd.api+json: schema: - $ref: '#/components/schemas/ScheduleEntry.jsonapi-read_ScheduleEntry.Activity' + $ref: '#/components/schemas/ScheduleEntry.jsonapi' text/html: schema: $ref: '#/components/schemas/ScheduleEntry-read_ScheduleEntry.Activity' @@ -30864,7 +27248,7 @@ paths: $ref: '#/components/schemas/ScheduleEntry-write' application/vnd.api+json: schema: - $ref: '#/components/schemas/ScheduleEntry.jsonapi-write' + $ref: '#/components/schemas/ScheduleEntry.jsonapi' description: 'The updated ScheduleEntry resource' required: true responses: @@ -30881,7 +27265,7 @@ paths: $ref: '#/components/schemas/ScheduleEntry.jsonld-read_ScheduleEntry.Activity' application/vnd.api+json: schema: - $ref: '#/components/schemas/ScheduleEntry.jsonapi-read_ScheduleEntry.Activity' + $ref: '#/components/schemas/ScheduleEntry.jsonapi' text/html: schema: $ref: '#/components/schemas/ScheduleEntry-read_ScheduleEntry.Activity' @@ -30934,7 +27318,7 @@ paths: application/vnd.api+json: schema: items: - $ref: '#/components/schemas/User.jsonapi-read' + $ref: '#/components/schemas/User.jsonapi' type: array text/html: schema: @@ -30964,7 +27348,7 @@ paths: $ref: '#/components/schemas/User.jsonld-write_create' application/vnd.api+json: schema: - $ref: '#/components/schemas/User.jsonapi-write_create' + $ref: '#/components/schemas/User.jsonapi' text/html: schema: $ref: '#/components/schemas/User-write_create' @@ -30984,7 +27368,7 @@ paths: $ref: '#/components/schemas/User.jsonld-read_User.create' application/vnd.api+json: schema: - $ref: '#/components/schemas/User.jsonapi-read_User.create' + $ref: '#/components/schemas/User.jsonapi' text/html: schema: $ref: '#/components/schemas/User-read_User.create' @@ -31054,7 +27438,7 @@ paths: $ref: '#/components/schemas/User.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/User.jsonapi-read' + $ref: '#/components/schemas/User.jsonapi' text/html: schema: $ref: '#/components/schemas/User-read' @@ -31089,7 +27473,7 @@ paths: $ref: '#/components/schemas/User-write' application/vnd.api+json: schema: - $ref: '#/components/schemas/User.jsonapi-write' + $ref: '#/components/schemas/User.jsonapi' description: 'The updated User resource' required: true responses: @@ -31106,7 +27490,7 @@ paths: $ref: '#/components/schemas/User.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/User.jsonapi-read' + $ref: '#/components/schemas/User.jsonapi' text/html: schema: $ref: '#/components/schemas/User-read' @@ -31147,7 +27531,7 @@ paths: $ref: '#/components/schemas/User-activate' application/vnd.api+json: schema: - $ref: '#/components/schemas/User.jsonapi-activate' + $ref: '#/components/schemas/User.jsonapi' description: 'The updated User resource' required: true responses: @@ -31164,7 +27548,7 @@ paths: $ref: '#/components/schemas/User.jsonld-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/User.jsonapi-read' + $ref: '#/components/schemas/User.jsonapi' text/html: schema: $ref: '#/components/schemas/User-read' @@ -31185,3 +27569,4 @@ servers: description: '' url: / tags: [] +webhooks: [] diff --git a/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testRootEndpointMatchesSnapshot__1.json b/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testRootEndpointMatchesSnapshot__1.json index b99465930a..aa4cf669b9 100644 --- a/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testRootEndpointMatchesSnapshot__1.json +++ b/api/tests/Api/SnapshotTests/__snapshots__/ResponseSnapshotTest__testRootEndpointMatchesSnapshot__1.json @@ -88,7 +88,7 @@ "templated": true }, "personalInvitations": { - "href": "/personal_invitations{/id}{/action}", + "href": "\/personal_invitations{\/id}{\/action}", "templated": true }, "profiles": { diff --git a/api/tests/Api/SnapshotTests/__snapshots__/performance_test_EndpointPerformanceTest__testPerformanceDidNotChangeForStableEndpoints__1.yml b/api/tests/Api/SnapshotTests/__snapshots__/performance_test_EndpointPerformanceTest__testPerformanceDidNotChangeForStableEndpoints__1.yml index ac2912b370..b8edfa35ed 100644 --- a/api/tests/Api/SnapshotTests/__snapshots__/performance_test_EndpointPerformanceTest__testPerformanceDidNotChangeForStableEndpoints__1.yml +++ b/api/tests/Api/SnapshotTests/__snapshots__/performance_test_EndpointPerformanceTest__testPerformanceDidNotChangeForStableEndpoints__1.yml @@ -4,16 +4,16 @@ /activity_progress_labels/item: 7 /activity_responsibles: 6 /activity_responsibles/item: 8 -/camps: 39 -/camps/item: 38 -/camp_collaborations: 25 -/camp_collaborations/item: 25 +/camps: 36 +/camps/item: 31 +/camp_collaborations: 22 +/camp_collaborations/item: 24 /categories: 11 /categories/item: 9 /content_types: 6 /content_types/item: 6 -/days: 17 -/days/item: 11 +/days: 26 +/days/item: 12 /day_responsibles: 6 /day_responsibles/item: 9 /material_items: 207 @@ -21,7 +21,7 @@ /material_lists: 6 /material_lists/item: 7 /periods: 6 -/periods/item: 29 +/periods/item: 27 /profiles: 6 /profiles/item: 6 /schedule_entries: 23 @@ -30,8 +30,8 @@ '/activities?camp=': 213 '/activity_progress_labels?camp=': 6 '/activity_responsibles?activity.camp=': 6 -'/camp_collaborations?camp=': 13 -'/camp_collaborations?activityResponsibles.activity=': 25 +'/camp_collaborations?camp=': 12 +'/camp_collaborations?activityResponsibles.activity=': 24 '/categories?camp=': 9 '/content_types?categories=': 6 '/day_responsibles?day.period=': 6 diff --git a/api/tests/Api/SnapshotTests/__snapshots__/test_EndpointPerformanceTest__testPerformanceDidNotChangeForStableEndpoints__1.yml b/api/tests/Api/SnapshotTests/__snapshots__/test_EndpointPerformanceTest__testPerformanceDidNotChangeForStableEndpoints__1.yml index 105a7aeeb0..1e0924898b 100644 --- a/api/tests/Api/SnapshotTests/__snapshots__/test_EndpointPerformanceTest__testPerformanceDidNotChangeForStableEndpoints__1.yml +++ b/api/tests/Api/SnapshotTests/__snapshots__/test_EndpointPerformanceTest__testPerformanceDidNotChangeForStableEndpoints__1.yml @@ -4,16 +4,16 @@ /activity_progress_labels/item: 7 /activity_responsibles: 6 /activity_responsibles/item: 8 -/camps: 29 -/camps/item: 28 -/camp_collaborations: 25 -/camp_collaborations/item: 15 +/camps: 26 +/camps/item: 21 +/camp_collaborations: 22 +/camp_collaborations/item: 14 /categories: 11 /categories/item: 9 /content_types: 6 /content_types/item: 6 -/days: 17 -/days/item: 11 +/days: 26 +/days/item: 12 /day_responsibles: 6 /day_responsibles/item: 9 /material_items: 7 @@ -21,7 +21,7 @@ /material_lists: 6 /material_lists/item: 7 /periods: 6 -/periods/item: 19 +/periods/item: 17 /profiles: 6 /profiles/item: 6 /schedule_entries: 23 @@ -30,8 +30,8 @@ '/activities?camp=': 13 '/activity_progress_labels?camp=': 6 '/activity_responsibles?activity.camp=': 6 -'/camp_collaborations?camp=': 13 -'/camp_collaborations?activityResponsibles.activity=': 15 +'/camp_collaborations?camp=': 12 +'/camp_collaborations?activityResponsibles.activity=': 14 '/categories?camp=': 9 '/content_types?categories=': 6 '/day_responsibles?day.period=': 6 diff --git a/api/tests/HttpCache/CacheManagerMock.php b/api/tests/HttpCache/CacheManagerMock.php new file mode 100644 index 0000000000..035c64d99d --- /dev/null +++ b/api/tests/HttpCache/CacheManagerMock.php @@ -0,0 +1,33 @@ +tags = array_unique(array_merge($this->tags, $tags)); + + return $this; + } + + public function getInvalidatedTags(): array { + return $this->tags; + } +} diff --git a/api/tests/HttpCache/Entity/BaseEntity.php b/api/tests/HttpCache/Entity/BaseEntity.php new file mode 100644 index 0000000000..704fb88d62 --- /dev/null +++ b/api/tests/HttpCache/Entity/BaseEntity.php @@ -0,0 +1,26 @@ +id; + } + + public function setId(string $id): void { + $this->id = $id; + } +} diff --git a/api/tests/HttpCache/Entity/ContainNonResource.php b/api/tests/HttpCache/Entity/ContainNonResource.php new file mode 100644 index 0000000000..2063142446 --- /dev/null +++ b/api/tests/HttpCache/Entity/ContainNonResource.php @@ -0,0 +1,25 @@ + + */ +#[ORM\Entity] +class ContainNonResource extends BaseEntity { + /** + * @var NotAResource + */ + public $notAResource; + + /** + * @var NotAResource[] + */ + public $collectionOfNotAResource; +} diff --git a/api/tests/HttpCache/Entity/Dummy.php b/api/tests/HttpCache/Entity/Dummy.php new file mode 100644 index 0000000000..b780638580 --- /dev/null +++ b/api/tests/HttpCache/Entity/Dummy.php @@ -0,0 +1,40 @@ + + */ +#[ORM\Entity] +class Dummy extends BaseEntity { + #[ORM\ManyToOne(targetEntity: RelatedDummy::class)] + public ?RelatedDummy $relatedDummy = null; + + /** + * @var null|RelatedOwningDummy + */ + #[ORM\OneToOne(targetEntity: RelatedOwningDummy::class, cascade: ['persist'], inversedBy: 'ownedDummy')] + public $relatedOwningDummy; + + public function getRelatedDummy(): ?RelatedDummy { + return $this->relatedDummy; + } + + public function setRelatedDummy(RelatedDummy $relatedDummy): void { + $this->relatedDummy = $relatedDummy; + } + + public function getRelatedOwningDummy() { + return $this->relatedOwningDummy; + } + + public function setRelatedOwningDummy(RelatedOwningDummy $relatedOwningDummy): void { + $this->relatedOwningDummy = $relatedOwningDummy; + } +} diff --git a/api/tests/HttpCache/Entity/DummyNoGetOperation.php b/api/tests/HttpCache/Entity/DummyNoGetOperation.php new file mode 100644 index 0000000000..831e7c8f20 --- /dev/null +++ b/api/tests/HttpCache/Entity/DummyNoGetOperation.php @@ -0,0 +1,25 @@ + + */ +class NotAResource { + public function __construct( + private $foo, + private $bar + ) {} + + public function getFoo() { + return $this->foo; + } + + public function getBar() { + return $this->bar; + } +} diff --git a/api/tests/HttpCache/Entity/RelatedDummy.php b/api/tests/HttpCache/Entity/RelatedDummy.php new file mode 100644 index 0000000000..76dd522422 --- /dev/null +++ b/api/tests/HttpCache/Entity/RelatedDummy.php @@ -0,0 +1,24 @@ + + */ +#[ORM\Entity] +class RelatedDummy extends BaseEntity { + #[ORM\OneToMany(targetEntity: Dummy::class)] + public Collection|iterable $dummies; + + public function __construct() { + $this->dummies = new ArrayCollection(); + } +} diff --git a/api/tests/HttpCache/Entity/RelatedOwningDummy.php b/api/tests/HttpCache/Entity/RelatedOwningDummy.php new file mode 100644 index 0000000000..b84370d904 --- /dev/null +++ b/api/tests/HttpCache/Entity/RelatedOwningDummy.php @@ -0,0 +1,37 @@ + + */ +#[ORM\Entity] +class RelatedOwningDummy extends BaseEntity { + #[ORM\OneToOne(targetEntity: Dummy::class, cascade: ['persist'], mappedBy: 'relatedOwningDummy')] + public ?Dummy $ownedDummy = null; + + /** + * Get owned dummy. + */ + public function getOwnedDummy(): Dummy { + return $this->ownedDummy; + } + + /** + * Set owned dummy. + * + * @param Dummy $ownedDummy the value to set + */ + public function setOwnedDummy(Dummy $ownedDummy): void { + $this->ownedDummy = $ownedDummy; + if ($this !== $this->ownedDummy->getRelatedOwningDummy()) { + $this->ownedDummy->setRelatedOwningDummy($this); + } + } +} diff --git a/api/tests/HttpCache/PurgeHttpCacheListenerTest.php b/api/tests/HttpCache/PurgeHttpCacheListenerTest.php new file mode 100644 index 0000000000..eaa4b29c3d --- /dev/null +++ b/api/tests/HttpCache/PurgeHttpCacheListenerTest.php @@ -0,0 +1,443 @@ + + * + * @internal + */ +class PurgeHttpCacheListenerTest extends TestCase { + use ProphecyTrait; + + private ObjectProphecy $cacheManagerProphecy; + private ObjectProphecy $resourceClassResolverProphecy; + private ObjectProphecy $uowProphecy; + private ObjectProphecy $emProphecy; + private ObjectProphecy $propertyAccessorProphecy; + private ObjectProphecy $iriConverterProphecy; + private ObjectProphecy $metadataFactoryProphecy; + + protected function setUp(): void { + $this->cacheManagerProphecy = $this->prophesize(CacheManager::class); + $this->cacheManagerProphecy->flush(Argument::any())->willReturn(0); + + $this->resourceClassResolverProphecy = $this->prophesize(ResourceClassResolverInterface::class); + $this->resourceClassResolverProphecy->isResourceClass(Argument::type('string'))->willReturn(true); + $this->resourceClassResolverProphecy->getResourceClass(Argument::type(Dummy::class))->willReturn(Dummy::class); + + $this->uowProphecy = $this->prophesize(UnitOfWork::class); + + $this->emProphecy = $this->prophesize(EntityManagerInterface::class); + $this->emProphecy->detach(Argument::any())->willReturn(); + $this->emProphecy->getUnitOfWork()->willReturn($this->uowProphecy->reveal()); + + $classMetadataProphecy = $this->prophesize(ClassMetadata::class); + $classMetadataProphecy->getAssociationMappings()->willReturn([ + 'relatedDummy' => [ + 'targetEntity' => 'App\Tests\HttpCache\Entity\RelatedDummy', + 'isOwningSide' => true, + 'inversedBy' => 'dummies', + 'mappedBy' => null, + ], + 'relatedOwningDummy' => [ + 'targetEntity' => 'App\Tests\HttpCache\Entity\RelatedOwningDummy', + 'isOwningSide' => true, + 'inversedBy' => 'ownedDummy', + 'mappedBy' => null, + ], + ]); + $classMetadataProphecy->setFieldValue(Argument::any(), Argument::any(), Argument::any())->will(function ($args) { + $entity = $args[0]; + $field = $args[1]; + $value = $args[2]; + $entity->{$field} = $value; + }); + $this->emProphecy->getClassMetadata(Dummy::class)->willReturn($classMetadataProphecy->reveal()); + + $this->propertyAccessorProphecy = $this->prophesize(PropertyAccessorInterface::class); + $this->propertyAccessorProphecy->isReadable(Argument::type(Dummy::class), 'relatedDummy')->willReturn(true); + $this->propertyAccessorProphecy->isReadable(Argument::type(Dummy::class), 'relatedOwningDummy')->willReturn(false); + $this->propertyAccessorProphecy->getValue(Argument::type(Dummy::class), 'relatedDummy')->willReturn(null); + $this->propertyAccessorProphecy->getValue(Argument::type(Dummy::class), 'relatedOwningDummy')->willReturn(null); + + $this->metadataFactoryProphecy = $this->prophesize(ResourceMetadataCollectionFactoryInterface::class); + $operation = (new GetCollection())->withShortName('Dummy')->withClass(Dummy::class); + $operation2 = (new GetCollection())->withShortName('DummyAsSubresource')->withClass(Dummy::class); + $this->metadataFactoryProphecy->create(Dummy::class)->willReturn(new ResourceMetadataCollection('Dummy', [ + (new ApiResource('Dummy')) + ->withShortName('Dummy') + ->withOperations(new Operations([ + 'get_collection' => $operation, + 'related_dummies/{id}/dummmies_get_collection' => $operation2, + ])), + ])); + + $this->iriConverterProphecy = $this->prophesize(IriConverterInterface::class); + $this->iriConverterProphecy->getIriFromResource(Argument::type(Dummy::class), UrlGeneratorInterface::ABS_PATH, $operation)->willReturn('/dummies'); + $this->iriConverterProphecy->getIriFromResource(Argument::type(Dummy::class), UrlGeneratorInterface::ABS_PATH, $operation2)->will(function ($args) { return '/related_dummies/'.$args[0]->getRelatedDummy()->getId().'/dummies'; }); + $this->iriConverterProphecy->getIriFromResource(Argument::type(Dummy::class))->will(function ($args) { return '/dummies/'.$args[0]->getId(); }); + } + + /** + * the following tests are copied from upstream PurgeHttpCacheListenerTest + * only adjusted to passt the tests with adjusted logic from PurgeHttpCacheListener. + * Other than that, kept changes to a minimum, in order to simplify copying changes to upstream test. + */ + public function testOnFlush(): void { + $toInsert1 = new Dummy(); + $toInsert2 = new Dummy(); + + $toDelete1 = new Dummy(); + $toDelete1->setId('3'); + $toDelete2 = new Dummy(); + $toDelete2->setId('4'); + + $toDeleteNoPurge = new DummyNoGetOperation(); + $toDeleteNoPurge->setId('5'); + + $cacheManagerProphecy = $this->prophesize(CacheManager::class); + $cacheManagerProphecy->invalidateTags(['/dummies'])->willReturn($cacheManagerProphecy)->shouldBeCalled(); + $cacheManagerProphecy->invalidateTags(['/dummies/3'])->willReturn($cacheManagerProphecy)->shouldBeCalled(); + $cacheManagerProphecy->invalidateTags(['/dummies/4'])->willReturn($cacheManagerProphecy)->shouldBeCalled(); + $cacheManagerProphecy->flush(Argument::any())->willReturn(0); + + $metadataFactoryProphecy = $this->prophesize(ResourceMetadataCollectionFactoryInterface::class); + $operation = (new GetCollection())->withShortName('Dummy')->withClass(Dummy::class); + $metadataFactoryProphecy->create(Dummy::class)->willReturn(new ResourceMetadataCollection('Dummy', [ + (new ApiResource('Dummy')) + ->withShortName('Dummy') + ->withOperations(new Operations([ + 'get' => $operation, + ])), + ]))->shouldBeCalled(); + $metadataFactoryProphecy->create(DummyNoGetOperation::class)->willReturn(new ResourceMetadataCollection('DummyNoGetOperation', [ + (new ApiResource('DummyNoGetOperation')) + ->withShortName('DummyNoGetOperation'), + ]))->shouldBeCalled(); + + $iriConverterProphecy = $this->prophesize(IriConverterInterface::class); + $iriConverterProphecy->getIriFromResource(Argument::type(Dummy::class), UrlGeneratorInterface::ABS_PATH, Argument::type(GetCollection::class))->willReturn('/dummies')->shouldBeCalled(); + $iriConverterProphecy->getIriFromResource($toDelete1)->willReturn('/dummies/3')->shouldBeCalled(); + $iriConverterProphecy->getIriFromResource($toDelete2)->willReturn('/dummies/4')->shouldBeCalled(); + $iriConverterProphecy->getIriFromResource($toDeleteNoPurge)->willReturn(null)->shouldBeCalled(); + + $resourceClassResolverProphecy = $this->prophesize(ResourceClassResolverInterface::class); + $resourceClassResolverProphecy->isResourceClass(Argument::type('string'))->willReturn(true)->shouldBeCalled(); + $resourceClassResolverProphecy->getResourceClass(Argument::type(Dummy::class))->willReturn(Dummy::class)->shouldBeCalled(); + $resourceClassResolverProphecy->getResourceClass(Argument::type(DummyNoGetOperation::class))->willReturn(DummyNoGetOperation::class)->shouldBeCalled(); + + $uowMock = $this->createMock(UnitOfWork::class); + $uowMock->method('getScheduledEntityInsertions')->willReturn([$toInsert1, $toInsert2]); + $uowMock->method('getScheduledEntityUpdates')->willReturn([]); + $uowMock->method('getScheduledEntityDeletions')->willReturn([$toDelete1, $toDelete2, $toDeleteNoPurge]); + $uowMock->method('getScheduledCollectionUpdates')->willReturn([]); + $uowMock->method('getScheduledCollectionDeletions')->willReturn([]); + $uowMock->method('getEntityChangeSet')->willReturn([]); + + $emProphecy = $this->prophesize(EntityManagerInterface::class); + $emProphecy->getUnitOfWork()->willReturn($uowMock)->shouldBeCalled(); + $emProphecy->detach(Argument::any())->willReturn(); + $dummyClassMetadata = new ClassMetadata(Dummy::class); + $dummyClassMetadata->mapManyToOne(['fieldName' => 'relatedDummy', 'targetEntity' => RelatedDummy::class, 'inversedBy' => 'dummies']); + $dummyClassMetadata->mapOneToOne(['fieldName' => 'relatedOwningDummy', 'targetEntity' => RelatedOwningDummy::class, 'inversedBy' => 'ownedDummy']); + + $emProphecy->getClassMetadata(Dummy::class)->willReturn($dummyClassMetadata)->shouldBeCalled(); + $emProphecy->getClassMetadata(DummyNoGetOperation::class)->willReturn(new ClassMetadata(DummyNoGetOperation::class))->shouldBeCalled(); + $eventArgs = new OnFlushEventArgs($emProphecy->reveal()); + + $propertyAccessorProphecy = $this->prophesize(PropertyAccessorInterface::class); + $propertyAccessorProphecy->isReadable(Argument::type(Dummy::class), 'relatedDummy')->willReturn(true); + $propertyAccessorProphecy->isReadable(Argument::type(Dummy::class), 'relatedOwningDummy')->willReturn(false); + $propertyAccessorProphecy->getValue(Argument::type(Dummy::class), 'relatedDummy')->willReturn(null); + $propertyAccessorProphecy->getValue(Argument::type(Dummy::class), 'relatedOwningDummy')->willReturn(null); + + $listener = new PurgeHttpCacheListener($iriConverterProphecy->reveal(), $resourceClassResolverProphecy->reveal(), $propertyAccessorProphecy->reveal(), $metadataFactoryProphecy->reveal(), $cacheManagerProphecy->reveal()); + $listener->onFlush($eventArgs); + $listener->postFlush(); + } + + public function testPreUpdate(): void { + $oldRelatedDummy = new RelatedDummy(); + $oldRelatedDummy->setId('1'); + + $newRelatedDummy = new RelatedDummy(); + $newRelatedDummy->setId('2'); + + $dummy = new Dummy(); + $dummy->setId('1'); + + $cacheManagerProphecy = $this->prophesize(CacheManager::class); + $cacheManagerProphecy->invalidateTags(['/related_dummies/old#dummies'])->shouldBeCalled()->willReturn($cacheManagerProphecy); + $cacheManagerProphecy->invalidateTags(['/related_dummies/new#dummies'])->shouldBeCalled()->willReturn($cacheManagerProphecy); + $cacheManagerProphecy->flush(Argument::any())->willReturn(0); + + $metadataFactoryProphecy = $this->prophesize(ResourceMetadataCollectionFactoryInterface::class); + + $iriConverterProphecy = $this->prophesize(IriConverterInterface::class); + $iriConverterProphecy->getIriFromResource($oldRelatedDummy)->willReturn('/related_dummies/old')->shouldBeCalled(); + $iriConverterProphecy->getIriFromResource($newRelatedDummy)->willReturn('/related_dummies/new')->shouldBeCalled(); + + $resourceClassResolverProphecy = $this->prophesize(ResourceClassResolverInterface::class); + $resourceClassResolverProphecy->isResourceClass(Argument::type('string'))->willReturn(true)->shouldBeCalled(); + + $emProphecy = $this->prophesize(EntityManagerInterface::class); + + $classMetadata = new ClassMetadata(Dummy::class); + $classMetadata->mapManyToOne(['fieldName' => 'relatedDummy', 'targetEntity' => RelatedDummy::class, 'inversedBy' => 'dummies']); + $emProphecy->getClassMetadata(Dummy::class)->willReturn($classMetadata)->shouldBeCalled(); + + $changeSet = ['relatedDummy' => [$oldRelatedDummy, $newRelatedDummy]]; + $eventArgs = new PreUpdateEventArgs($dummy, $emProphecy->reveal(), $changeSet); + + $propertyAccessorProphecy = $this->prophesize(PropertyAccessorInterface::class); + + $listener = new PurgeHttpCacheListener($iriConverterProphecy->reveal(), $resourceClassResolverProphecy->reveal(), $propertyAccessorProphecy->reveal(), $metadataFactoryProphecy->reveal(), $cacheManagerProphecy->reveal()); + $listener->preUpdate($eventArgs); + $listener->postFlush(); + } + + public function testNothingToPurge(): void { + $dummyNoGetOperation = new DummyNoGetOperation(); + $dummyNoGetOperation->setId('1'); + + $purgerProphecy = $this->prophesize(PurgerInterface::class); + $purgerProphecy->purge([])->shouldNotBeCalled(); + + $cacheManagerProphecy = $this->prophesize(CacheManager::class); + $cacheManagerProphecy->invalidateTags(Argument::any())->shouldNotBeCalled(); + $cacheManagerProphecy->flush(Argument::any())->willReturn(0); + + $metadataFactoryProphecy = $this->prophesize(ResourceMetadataCollectionFactoryInterface::class); + + $iriConverterProphecy = $this->prophesize(IriConverterInterface::class); + + $resourceClassResolverProphecy = $this->prophesize(ResourceClassResolverInterface::class); + + $emProphecy = $this->prophesize(EntityManagerInterface::class); + + $classMetadata = new ClassMetadata(DummyNoGetOperation::class); + $emProphecy->getClassMetadata(DummyNoGetOperation::class)->willReturn($classMetadata)->shouldBeCalled(); + + $changeSet = ['lorem' => 'ipsum']; + $eventArgs = new PreUpdateEventArgs($dummyNoGetOperation, $emProphecy->reveal(), $changeSet); + + $propertyAccessorProphecy = $this->prophesize(PropertyAccessorInterface::class); + + $listener = new PurgeHttpCacheListener($iriConverterProphecy->reveal(), $resourceClassResolverProphecy->reveal(), $propertyAccessorProphecy->reveal(), $metadataFactoryProphecy->reveal(), $cacheManagerProphecy->reveal()); + $listener->preUpdate($eventArgs); + $listener->postFlush(); + } + + public function testNotAResourceClass(): void { + $nonResource = new NotAResource('foo', 'bar'); + + $cacheManagerProphecy = $this->prophesize(CacheManager::class); + $cacheManagerProphecy->invalidateTags(Argument::any())->shouldNotBeCalled(); + $cacheManagerProphecy->flush(Argument::any())->willReturn(0); + + $iriConverterProphecy = $this->prophesize(IriConverterInterface::class); + $iriConverterProphecy->getIriFromResource($nonResource)->shouldNotBeCalled(); + + $metadataFactoryProphecy = $this->prophesize(ResourceMetadataCollectionFactoryInterface::class); + + $resourceClassResolverProphecy = $this->prophesize(ResourceClassResolverInterface::class); + $resourceClassResolverProphecy->isResourceClass(NotAResource::class)->willReturn(false)->shouldBeCalled(); + + $uowProphecy = $this->prophesize(UnitOfWork::class); + $uowProphecy->getScheduledEntityInsertions()->willReturn([$nonResource])->shouldBeCalled(); + $uowProphecy->getScheduledEntityDeletions()->willReturn([])->shouldBeCalled(); + $uowProphecy->getScheduledEntityUpdates()->willReturn([])->shouldBeCalled(); + $uowProphecy->getScheduledCollectionUpdates()->willReturn([])->shouldBeCalled(); + $uowProphecy->getScheduledCollectionDeletions()->willReturn([])->shouldBeCalled(); + + $emProphecy = $this->prophesize(EntityManagerInterface::class); + $emProphecy->getUnitOfWork()->willReturn($uowProphecy->reveal())->shouldBeCalled(); + + $dummyClassMetadata = new ClassMetadata(ContainNonResource::class); + $emProphecy->getClassMetadata(NotAResource::class)->willReturn($dummyClassMetadata); + $eventArgs = new OnFlushEventArgs($emProphecy->reveal()); + + $propertyAccessorProphecy = $this->prophesize(PropertyAccessorInterface::class); + + $listener = new PurgeHttpCacheListener($iriConverterProphecy->reveal(), $resourceClassResolverProphecy->reveal(), $propertyAccessorProphecy->reveal(), $metadataFactoryProphecy->reveal(), $cacheManagerProphecy->reveal()); + $listener->onFlush($eventArgs); + } + + public function testPropertyIsNotAResourceClass(): void { + $containNonResource = new ContainNonResource(); + $nonResource = new NotAResource('foo', 'bar'); + + $cacheManagerProphecy = $this->prophesize(CacheManager::class); + $cacheManagerProphecy->invalidateTags(Argument::any())->shouldNotBeCalled(); + $cacheManagerProphecy->flush(Argument::any())->willReturn(0); + + $metadataFactoryProphecy = $this->prophesize(ResourceMetadataCollectionFactoryInterface::class); + $metadataFactoryProphecy->create(ContainNonResource::class)->willReturn(new ResourceMetadataCollection('ContainNonResource', [ + (new ApiResource('ContainNonResource')) + ->withShortName('ContainNonResource'), + ]))->shouldBeCalled(); + + $iriConverterProphecy = $this->prophesize(IriConverterInterface::class); + $iriConverterProphecy->getIriFromResource(ContainNonResource::class, UrlGeneratorInterface::ABS_PATH, Argument::any())->willReturn('/dummies/1'); + $iriConverterProphecy->getIriFromResource($nonResource)->shouldNotBeCalled(); + + $resourceClassResolverProphecy = $this->prophesize(ResourceClassResolverInterface::class); + $resourceClassResolverProphecy->getResourceClass(Argument::type(ContainNonResource::class))->willReturn(ContainNonResource::class)->shouldBeCalled(); + $resourceClassResolverProphecy->isResourceClass(ContainNonResource::class)->willReturn(true)->shouldBeCalled(); + $resourceClassResolverProphecy->isResourceClass(NotAResource::class)->willReturn(false)->shouldBeCalled(); + + $uowProphecy = $this->prophesize(UnitOfWork::class); + $uowProphecy->getScheduledEntityInsertions()->willReturn([$containNonResource])->shouldBeCalled(); + $uowProphecy->getScheduledEntityDeletions()->willReturn([])->shouldBeCalled(); + $uowProphecy->getScheduledEntityUpdates()->willReturn([])->shouldBeCalled(); + $uowProphecy->getScheduledCollectionUpdates()->willReturn([])->shouldBeCalled(); + $uowProphecy->getScheduledCollectionDeletions()->willReturn([])->shouldBeCalled(); + + $emProphecy = $this->prophesize(EntityManagerInterface::class); + $emProphecy->getUnitOfWork()->willReturn($uowProphecy->reveal())->shouldBeCalled(); + + $dummyClassMetadata = new ClassMetadata(ContainNonResource::class); + $dummyClassMetadata->mapManyToOne(['fieldName' => 'notAResource', 'targetEntity' => NotAResource::class, 'inversedBy' => 'resources']); + $dummyClassMetadata->mapOneToMany(['fieldName' => 'collectionOfNotAResource', 'targetEntity' => NotAResource::class, 'mappedBy' => 'resource']); + $emProphecy->getClassMetadata(ContainNonResource::class)->willReturn($dummyClassMetadata); + $eventArgs = new OnFlushEventArgs($emProphecy->reveal()); + + $propertyAccessorProphecy = $this->prophesize(PropertyAccessorInterface::class); + $propertyAccessorProphecy->isReadable(Argument::type(ContainNonResource::class), 'notAResource')->willReturn(true); + $propertyAccessorProphecy->isReadable(Argument::type(ContainNonResource::class), 'collectionOfNotAResource')->willReturn(true); + $propertyAccessorProphecy->getValue(Argument::type(ContainNonResource::class), 'notAResource')->shouldNotBeCalled(); + $propertyAccessorProphecy->getValue(Argument::type(ContainNonResource::class), 'collectionOfNotAResource')->shouldNotBeCalled(); + + $listener = new PurgeHttpCacheListener($iriConverterProphecy->reveal(), $resourceClassResolverProphecy->reveal(), $propertyAccessorProphecy->reveal(), $metadataFactoryProphecy->reveal(), $cacheManagerProphecy->reveal()); + $listener->onFlush($eventArgs); + } + + /** + * the following tests are additional tests, created to test specific new behavior of PurgeHttpCacheListener. + */ + public function testInsertingShouldPurgeSubresourceCollections(): void { + // given + $toInsert1 = new Dummy(); + $toInsert1->setId('1'); + $relatedDummy = new RelatedDummy(); + $relatedDummy->setId('100'); + $toInsert1->setRelatedDummy($relatedDummy); + + $this->uowProphecy->getScheduledEntityInsertions()->willReturn([$toInsert1]); + $this->uowProphecy->getScheduledEntityDeletions()->willReturn([]); + $this->uowProphecy->getScheduledEntityUpdates()->willReturn([])->shouldBeCalled(); + $this->uowProphecy->getScheduledCollectionUpdates()->willReturn([]); + $this->uowProphecy->getScheduledCollectionDeletions()->willReturn([]); + + // then + $this->cacheManagerProphecy->invalidateTags(['/dummies'])->willReturn($this->cacheManagerProphecy)->shouldBeCalled(); + $this->cacheManagerProphecy->invalidateTags(['/related_dummies/100/dummies'])->willReturn($this->cacheManagerProphecy)->shouldBeCalled(); + + // when + $listener = new PurgeHttpCacheListener($this->iriConverterProphecy->reveal(), $this->resourceClassResolverProphecy->reveal(), $this->propertyAccessorProphecy->reveal(), $this->metadataFactoryProphecy->reveal(), $this->cacheManagerProphecy->reveal()); + $listener->onFlush(new OnFlushEventArgs($this->emProphecy->reveal())); + $listener->postFlush(); + } + + public function testDeleteShouldPurgeSubresourceCollections(): void { + // given + $toDelete1 = new Dummy(); + $toDelete1->setId('1'); + $relatedDummy = new RelatedDummy(); + $relatedDummy->setId('100'); + $toDelete1->setRelatedDummy($relatedDummy); + + $uowMock = $this->createMock(UnitOfWork::class); + $uowMock->method('getScheduledEntityInsertions')->willReturn([]); + $uowMock->method('getScheduledEntityUpdates')->willReturn([]); + $uowMock->method('getScheduledEntityDeletions')->willReturn([$toDelete1]); + $uowMock->method('getScheduledCollectionUpdates')->willReturn([]); + $uowMock->method('getScheduledCollectionDeletions')->willReturn([]); + $uowMock->method('getEntityChangeSet')->willReturn([]); + + $this->emProphecy->getUnitOfWork()->willReturn($uowMock)->shouldBeCalled(); + + // then + $this->cacheManagerProphecy->invalidateTags(['/dummies/1'])->willReturn($this->cacheManagerProphecy)->shouldBeCalled(); + $this->cacheManagerProphecy->invalidateTags(['/dummies'])->willReturn($this->cacheManagerProphecy)->shouldBeCalled(); + $this->cacheManagerProphecy->invalidateTags(['/related_dummies/100/dummies'])->willReturn($this->cacheManagerProphecy)->shouldBeCalled(); + + // when + $listener = new PurgeHttpCacheListener($this->iriConverterProphecy->reveal(), $this->resourceClassResolverProphecy->reveal(), $this->propertyAccessorProphecy->reveal(), $this->metadataFactoryProphecy->reveal(), $this->cacheManagerProphecy->reveal()); + $listener->onFlush(new OnFlushEventArgs($this->emProphecy->reveal())); + $listener->postFlush(); + } + + public function testUpdateShouldPurgeSubresourceCollections(): void { + // given + $toUpdate1 = new Dummy(); + $toUpdate1->setId('1'); + $relatedDummy = new RelatedDummy(); + $relatedDummy->setId('100'); + $toUpdate1->setRelatedDummy($relatedDummy); + + $relatedDummyOld = new RelatedDummy(); + $relatedDummyOld->setId('99'); + + $uowMock = $this->createMock(UnitOfWork::class); + $uowMock->method('getScheduledEntityInsertions')->willReturn([]); + $uowMock->method('getScheduledEntityUpdates')->willReturn([$toUpdate1]); + $uowMock->method('getScheduledEntityDeletions')->willReturn([]); + $uowMock->method('getScheduledCollectionUpdates')->willReturn([]); + $uowMock->method('getScheduledCollectionDeletions')->willReturn([]); + $uowMock->method('getEntityChangeSet')->willReturn(['relatedDummy' => [$relatedDummyOld, $relatedDummy]]); + + $this->emProphecy->getUnitOfWork()->willReturn($uowMock)->shouldBeCalled(); + + // then + $this->cacheManagerProphecy->invalidateTags(['/dummies/1'])->willReturn($this->cacheManagerProphecy)->shouldBeCalled(); + $this->cacheManagerProphecy->invalidateTags(['/related_dummies/100/dummies'])->willReturn($this->cacheManagerProphecy)->shouldBeCalled(); + $this->cacheManagerProphecy->invalidateTags(['/related_dummies/99/dummies'])->willReturn($this->cacheManagerProphecy)->shouldBeCalled(); + + // when + $listener = new PurgeHttpCacheListener($this->iriConverterProphecy->reveal(), $this->resourceClassResolverProphecy->reveal(), $this->propertyAccessorProphecy->reveal(), $this->metadataFactoryProphecy->reveal(), $this->cacheManagerProphecy->reveal()); + $listener->onFlush(new OnFlushEventArgs($this->emProphecy->reveal())); + $listener->postFlush(); + } +} diff --git a/api/tests/HttpCache/TagCollectorTest.php b/api/tests/HttpCache/TagCollectorTest.php new file mode 100644 index 0000000000..254c468350 --- /dev/null +++ b/api/tests/HttpCache/TagCollectorTest.php @@ -0,0 +1,137 @@ +responseTaggerProphecy = $this->prophesize(ResponseTagger::class); + $this->tagCollector = new TagCollector($this->responseTaggerProphecy->reveal()); + } + + public function testNoTagForEmptyContext() { + // then + $this->responseTaggerProphecy->addTags(Argument::any())->shouldNotBeCalled(); + + // when + $this->tagCollector->collect([]); + } + + public function testWithIri() { + // then + $this->responseTaggerProphecy->addTags(['/test-iri'])->shouldBeCalled(); + + // when + $this->tagCollector->collect(['iri' => '/test-iri']); + } + + public function testWithBaseEntity() { + // given + $object = new Dummy(); + $object->setId('123'); + + // then + $this->responseTaggerProphecy->addTags(['123'])->shouldBeCalled(); + + // when + $this->tagCollector->collect(['iri' => '/dummy/123', 'object' => $object]); + } + + public function testWithRelation() { + // given + $object = new Dummy(); + $object->setId('123'); + + // then + $this->responseTaggerProphecy->addTags(['123#propertyName'])->shouldBeCalled(); + + // when + $this->tagCollector->collect([ + 'iri' => '/dummy/123', + 'object' => $object, + 'property_metadata' => new ApiProperty(), + 'api_attribute' => 'propertyName', + ]); + } + + public function testWithExtraCacheDependency() { + // given + $object = new Dummy(); + $object->setId('123'); + + // then + $this->responseTaggerProphecy->addTags(['123#PROPERTY_NAME'])->shouldBeCalled(); + $this->responseTaggerProphecy->addTags(['123#OTHER_DEPENDENCY'])->shouldBeCalled(); + + // when + $this->tagCollector->collect([ + 'iri' => '/dummy/123', + 'object' => $object, + 'property_metadata' => new ApiProperty( + extraProperties: [ + 'cacheDependencies' => ['PROPERTY_NAME', 'OTHER_DEPENDENCY'], + ] + ), + 'api_attribute' => 'propertyName', + ]); + } + + public function testNoTagForHalLinks() { + // then + $this->responseTaggerProphecy->addTags(Argument::any())->shouldNotBeCalled(); + + // when + $this->tagCollector->collect([ + 'iri' => '/test-iri', + 'format' => 'jsonhal', + 'data' => '/test-iri', + ]); + } + + public function testNoTagForJsonLdLinks() { + // then + $this->responseTaggerProphecy->addTags(Argument::any())->shouldNotBeCalled(); + + // when + $this->tagCollector->collect([ + 'iri' => '/test-iri', + 'format' => 'jsonld', + 'data' => '/test-iri', + ]); + } + + public function testNoTagForJsonApiLinks() { + // then + $this->responseTaggerProphecy->addTags(Argument::any())->shouldNotBeCalled(); + + // when + $this->tagCollector->collect([ + 'iri' => '/test-iri', + 'format' => 'jsonapi', + 'data' => [ + 'data' => [ + 'type' => 'dummy', + 'id' => '/test-iri', + ], + ], + ]); + } +} diff --git a/api/tests/Metadata/Resource/Factory/UriTemplateFactoryTest.php b/api/tests/Metadata/Resource/Factory/UriTemplateFactoryTest.php index ce220352cd..b250fef235 100644 --- a/api/tests/Metadata/Resource/Factory/UriTemplateFactoryTest.php +++ b/api/tests/Metadata/Resource/Factory/UriTemplateFactoryTest.php @@ -3,7 +3,6 @@ namespace App\Tests\Metadata\Resource\Factory; use ApiPlatform\Api\FilterInterface; -use ApiPlatform\Exception\ResourceClassNotFoundException; use ApiPlatform\Metadata\ApiResource; use ApiPlatform\Metadata\Get; use ApiPlatform\Metadata\GetCollection; @@ -183,11 +182,11 @@ public function testCreatesTemplatedUriWithActionPathParameters() { ), new Get( name: '_api_/dummys/{id}/find{._format}_get', - uriTemplate: '/{inviteKey}/find{._format}', + uriTemplate: '/dummys/{inviteKey}/find{._format}', ), new Patch( name: '_api_/dummys/{id}/accept{._format}_get', - uriTemplate: '/{inviteKey}/accept{._format}', + uriTemplate: '/dummys/{inviteKey}/accept{._format}', ), ]))); $this->createFactory(); @@ -208,7 +207,7 @@ public function testIgnoresRoutesWithNoSlashAtEnd() { name: '_api_/dummys/{id}{._format}_get' ), new Get( - uriTemplate: '/profiles{inviteKey}{._format}', + uriTemplate: '/dummys{inviteKey}{._format}', ), ]))); $this->createFactory(); @@ -221,12 +220,7 @@ public function testIgnoresRoutesWithNoSlashAtEnd() { self::assertThat($templated, self::isTrue()); } - /** - * This behaviour was not yet implemented, because we don't have the use case yet. - * - * @throws ResourceClassNotFoundException - */ - public function testDoesNotYetIgnoreActionPathsOfOtherRouteStarts() { + public function testIgnoreActionPathsOfOtherRouteStarts() { // given $resource = 'Dummy'; $this->resourceMetadataCollection->append((new ApiResource())->withShortName('Dummy')->withOperations(new Operations([ @@ -243,7 +237,7 @@ public function testDoesNotYetIgnoreActionPathsOfOtherRouteStarts() { [$uri, $templated] = $this->uriTemplateFactory->createFromShortname($resource); // then - self::assertThat($uri, self::equalTo('/dummys{/id}{/action}')); + self::assertThat($uri, self::equalTo('/dummys{/id}')); self::assertThat($templated, self::isTrue()); } diff --git a/api/tests/Security/Voter/CampIsPrototypeVoterTest.php b/api/tests/Security/Voter/CampIsPrototypeVoterTest.php index 66a3667fc7..ac3e2c847f 100644 --- a/api/tests/Security/Voter/CampIsPrototypeVoterTest.php +++ b/api/tests/Security/Voter/CampIsPrototypeVoterTest.php @@ -8,13 +8,14 @@ use App\Entity\ContentNode\ColumnLayout; use App\Entity\Period; use App\Entity\User; +use App\HttpCache\ResponseTagger; use App\Security\Voter\CampIsPrototypeVoter; -use App\Security\Voter\CampRoleVoter; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityRepository; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; +use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface; /** * @internal @@ -23,12 +24,14 @@ class CampIsPrototypeVoterTest extends TestCase { private CampIsPrototypeVoter $voter; private MockObject|TokenInterface $token; private EntityManagerInterface|MockObject $em; + private MockObject|ResponseTagger $responseTagger; public function setUp(): void { parent::setUp(); $this->token = $this->createMock(TokenInterface::class); $this->em = $this->createMock(EntityManagerInterface::class); - $this->voter = new CampIsPrototypeVoter($this->em); + $this->responseTagger = $this->createMock(ResponseTagger::class); + $this->voter = new CampIsPrototypeVoter($this->em, $this->responseTagger); } public function testDoesntVoteWhenAttributeWrong() { @@ -38,7 +41,7 @@ public function testDoesntVoteWhenAttributeWrong() { $result = $this->voter->vote($this->token, new Period(), ['CAMP_IS_SOMETHING_ELSE']); // then - $this->assertEquals(CampRoleVoter::ACCESS_ABSTAIN, $result); + $this->assertEquals(VoterInterface::ACCESS_ABSTAIN, $result); } public function testDoesntVoteWhenSubjectDoesNotBelongToCamp() { @@ -48,7 +51,7 @@ public function testDoesntVoteWhenSubjectDoesNotBelongToCamp() { $result = $this->voter->vote($this->token, new CampIsPrototypeVoterTestDummy(), ['CAMP_IS_PROTOTYPE']); // then - $this->assertEquals(CampRoleVoter::ACCESS_ABSTAIN, $result); + $this->assertEquals(VoterInterface::ACCESS_ABSTAIN, $result); } public function testDoesntVoteWhenSubjectIsNull() { @@ -58,7 +61,7 @@ public function testDoesntVoteWhenSubjectIsNull() { $result = $this->voter->vote($this->token, null, ['CAMP_IS_PROTOTYPE']); // then - $this->assertEquals(CampRoleVoter::ACCESS_ABSTAIN, $result); + $this->assertEquals(VoterInterface::ACCESS_ABSTAIN, $result); } /** @@ -78,7 +81,7 @@ public function testGrantsAccessWhenGetCampYieldsNull() { $result = $this->voter->vote($this->token, $subject, ['CAMP_IS_PROTOTYPE']); // then - $this->assertEquals(CampRoleVoter::ACCESS_GRANTED, $result); + $this->assertEquals(VoterInterface::ACCESS_GRANTED, $result); } public function testDeniesAccessWhenCampIsntPrototype() { @@ -95,7 +98,7 @@ public function testDeniesAccessWhenCampIsntPrototype() { $result = $this->voter->vote($this->token, $subject, ['CAMP_IS_PROTOTYPE']); // then - $this->assertEquals(CampRoleVoter::ACCESS_DENIED, $result); + $this->assertEquals(VoterInterface::ACCESS_DENIED, $result); } public function testGrantsAccessViaBelongsToCampInterface() { @@ -108,11 +111,13 @@ public function testGrantsAccessViaBelongsToCampInterface() { $subject = $this->createMock(Period::class); $subject->method('getCamp')->willReturn($camp); + $this->responseTagger->expects($this->once())->method('addTags')->with([$camp->getId()]); + // when $result = $this->voter->vote($this->token, $subject, ['CAMP_IS_PROTOTYPE']); // then - $this->assertEquals(CampRoleVoter::ACCESS_GRANTED, $result); + $this->assertEquals(VoterInterface::ACCESS_GRANTED, $result); } public function testGrantsAccessViaBelongsToContentNodeTreeInterface() { @@ -134,7 +139,7 @@ public function testGrantsAccessViaBelongsToContentNodeTreeInterface() { $result = $this->voter->vote($this->token, $subject, ['CAMP_IS_PROTOTYPE']); // then - $this->assertEquals(CampRoleVoter::ACCESS_GRANTED, $result); + $this->assertEquals(VoterInterface::ACCESS_GRANTED, $result); } } diff --git a/api/tests/Security/Voter/CampRoleVoterTest.php b/api/tests/Security/Voter/CampRoleVoterTest.php index 84c98a6834..9c779a5713 100644 --- a/api/tests/Security/Voter/CampRoleVoterTest.php +++ b/api/tests/Security/Voter/CampRoleVoterTest.php @@ -9,6 +9,7 @@ use App\Entity\ContentNode\ColumnLayout; use App\Entity\Period; use App\Entity\User; +use App\HttpCache\ResponseTagger; use App\Security\Voter\CampRoleVoter; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityRepository; @@ -24,12 +25,14 @@ class CampRoleVoterTest extends TestCase { private CampRoleVoter $voter; private MockObject|TokenInterface $token; private EntityManagerInterface|MockObject $em; + private MockObject|ResponseTagger $responseTagger; public function setUp(): void { parent::setUp(); $this->token = $this->createMock(TokenInterface::class); $this->em = $this->createMock(EntityManagerInterface::class); - $this->voter = new CampRoleVoter($this->em); + $this->responseTagger = $this->createMock(ResponseTagger::class); + $this->voter = new CampRoleVoter($this->em, $this->responseTagger); } public function testDoesntVoteWhenAttributeWrong() { @@ -230,6 +233,8 @@ public function testGrantsAccessViaBelongsToCampInterface() { $subject = $this->createMock(Period::class); $subject->method('getCamp')->willReturn($camp); + $this->responseTagger->expects($this->once())->method('addTags')->with([$collaboration->getId()]); + // when $result = $this->voter->vote($this->token, $subject, ['CAMP_COLLABORATOR']); diff --git a/api/tests/Serializer/Normalizer/RelatedCollectionLinkNormalizerTest.php b/api/tests/Serializer/Normalizer/RelatedCollectionLinkNormalizerTest.php index 803884aeb1..164c4987ab 100644 --- a/api/tests/Serializer/Normalizer/RelatedCollectionLinkNormalizerTest.php +++ b/api/tests/Serializer/Normalizer/RelatedCollectionLinkNormalizerTest.php @@ -26,7 +26,6 @@ use Symfony\Component\PropertyAccess\PropertyAccessorInterface; use Symfony\Component\Routing\RouterInterface; use Symfony\Component\Serializer\Annotation\SerializedName; -use Symfony\Component\Serializer\NameConverter\AdvancedNameConverterInterface; use Symfony\Component\Serializer\NameConverter\NameConverterInterface; use Symfony\Component\Serializer\Normalizer\NormalizerInterface; use Symfony\Component\Serializer\SerializerInterface; @@ -58,7 +57,7 @@ protected function setUp(): void { }); $this->decoratedMock = $this->createMock(NormalizerInterface::class); - $this->nameConverterMock = $this->createMock(AdvancedNameConverterInterface::class); + $this->nameConverterMock = $this->createMock(NameConverterInterface::class); $this->uriTemplate = $this->createMock(UriTemplate::class); $this->uriTemplateFactory = $this->createMock(UriTemplateFactory::class); $this->routerMock = $this->createMock(RouterInterface::class); @@ -190,7 +189,7 @@ public function testNormalizeReplacesLinkArrayWithSingleFilteredCollectionLinkBa $this->uriTemplateFactory ->expects($this->once()) ->method('createFromResourceClass') - ->with('App\\Entity\\DummyEntity') + ->with('App\Entity\DummyEntity') ->willReturn(['/relatedEntities{/id}{?test_param}', true]) ; $this->uriTemplate @@ -499,7 +498,7 @@ public function getFilterValue(): string { return ''; } - #[RelatedCollectionLink('App\\Entity\\DummyEntity', ['test_param' => 'filterValue'])] + #[RelatedCollectionLink('App\Entity\DummyEntity', ['test_param' => 'filterValue'])] public function getRelatedEntities(): array { return []; } diff --git a/api/tests/State/ResetPasswordCreateProcessorTest.php b/api/tests/State/ResetPasswordCreateProcessorTest.php index d63d26cc9c..bfc2e65d83 100644 --- a/api/tests/State/ResetPasswordCreateProcessorTest.php +++ b/api/tests/State/ResetPasswordCreateProcessorTest.php @@ -96,6 +96,8 @@ public function testCreateWithUnknownEmailDoesNotCreateResetKey() { $this->resetPassword->email = self::EMAIL; $data = $this->processor->process($this->resetPassword, new Post()); + + self::assertThat($data, self::isNull()); } public function testCreateWithKnowneMailCreatesResetKey() { @@ -124,6 +126,6 @@ public function testCreateWithKnowneMailCreatesResetKey() { $this->resetPassword->email = self::EMAIL; $data = $this->processor->process($this->resetPassword, new Post()); - self::assertThat($data->id, self::logicalNot(self::isNull())); + self::assertThat($data, self::isNull()); } } diff --git a/api/tests/bootstrap.php b/api/tests/bootstrap.php index 3181151d9a..47a58557dc 100644 --- a/api/tests/bootstrap.php +++ b/api/tests/bootstrap.php @@ -4,9 +4,7 @@ require dirname(__DIR__).'/vendor/autoload.php'; -if (file_exists(dirname(__DIR__).'/config/bootstrap.php')) { - require dirname(__DIR__).'/config/bootstrap.php'; -} elseif (method_exists(Dotenv::class, 'bootEnv')) { +if (method_exists(Dotenv::class, 'bootEnv')) { (new Dotenv())->bootEnv(dirname(__DIR__).'/.env'); } diff --git a/api/var/.gitignore b/api/var/.gitignore deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/common/assets/logos/GSLogo.svg b/common/assets/logos/GSLogo.svg new file mode 100644 index 0000000000..4903b5e411 --- /dev/null +++ b/common/assets/logos/GSLogo.svg @@ -0,0 +1,6 @@ + + + \ No newline at end of file diff --git a/common/assets/logos/JSLogo.svg b/common/assets/logos/JSLogo.svg new file mode 100644 index 0000000000..f0734b30cf --- /dev/null +++ b/common/assets/logos/JSLogo.svg @@ -0,0 +1,6 @@ + + + \ No newline at end of file diff --git a/common/helpers/__tests__/campCollaborationInitials.spec.js b/common/helpers/__tests__/campCollaborationInitials.spec.js index cde34d905b..379b88dccc 100644 --- a/common/helpers/__tests__/campCollaborationInitials.spec.js +++ b/common/helpers/__tests__/campCollaborationInitials.spec.js @@ -15,7 +15,9 @@ describe('campCollaborationInitials', () => { 'BA', ], [{ inviteEmail: 'ecamp@ecamp3.ch', status: 'inactive', user: null }, 'EC'], - ])('maps %p to %p', (input, expected) => { + [{ abbreviation: 'B', inviteEmail: null, user: null }, 'B'], + [{ abbreviation: 'AA', user: () => ({ displayName: 'Bi-Pi' }) }, 'AA'], + ])('maps %o to "%s"', (input, expected) => { expect(campCollaborationInitials(input)).toEqual(expected) }) }) diff --git a/common/helpers/__tests__/colors.spec.js b/common/helpers/__tests__/colors.spec.js index 8318c02620..8650b44257 100644 --- a/common/helpers/__tests__/colors.spec.js +++ b/common/helpers/__tests__/colors.spec.js @@ -39,7 +39,8 @@ describe('campCollaborationColor', () => { [{ id: 'fffffff', _meta: {} }, '#992600'], [{ _meta: { loading: true } }, '#4d4d4d'], [{ id: 'fffffff', user: () => ({ _meta: { loading: true } }) }, '#4d4d4d'], - ])('maps %p to %p', (input, expected) => { + [{ color: '#ECA110' }, '#ECA110'], + ])('maps %o to "%s"', (input, expected) => { expect(campCollaborationColor(input)).toEqual(expected) }) }) diff --git a/common/helpers/campCollaborationInitials.js b/common/helpers/campCollaborationInitials.js index 63c1c46a6e..93438b3b75 100644 --- a/common/helpers/campCollaborationInitials.js +++ b/common/helpers/campCollaborationInitials.js @@ -5,5 +5,7 @@ import initials from './initials.js' * Returns two characters to display for a camp collaboration based on its user */ export default function (campCollaboration) { - return initials(campCollaborationDisplayName(campCollaboration, null, false)) + return campCollaboration?.abbreviation + ? campCollaboration.abbreviation + : initials(campCollaborationDisplayName(campCollaboration, null, false)) } diff --git a/common/helpers/colors.js b/common/helpers/colors.js index 63fa103ea4..2b79dc1025 100644 --- a/common/helpers/colors.js +++ b/common/helpers/colors.js @@ -58,6 +58,10 @@ function campCollaborationColor(campCollaboration) { (typeof campCollaboration.user === 'function' && campCollaboration.user()._meta?.loading) + if (campCollaboration?.color) { + return campCollaboration.color + } + return idToColor( typeof campCollaboration.user === 'function' ? campCollaboration.user().id diff --git a/common/locales/de.json b/common/locales/de.json index 1a6d850a58..fdb5c54f2c 100644 --- a/common/locales/de.json +++ b/common/locales/de.json @@ -19,7 +19,7 @@ "entity": { "option": { "campsiteAndSurroundings": { - "description": "Einrichten von Lagerplatz/Umgebung, Abbau, Erstellen von Spielplatz- einrichtungen und Sportgeräten.", + "description": "Einrichten von Lagerplatz/Umgebung, Abbau, Erstellen von Spielplatzeinrichtungen und Sportgeräten.", "name": "Lagerplatz/Umgebung" }, "natureAndEnvironment": { @@ -31,7 +31,7 @@ "name": "Outdoortechniken" }, "pioneeringTechnique": { - "description": "Biwakbau, Iglubau, Material- und Ausrüstungskunde, Materialpflege, Erstellen und Abbau von Pionierbauten, Seil- und Knotenkunde, Seil- bahnen, Seilbrücken, Abseilen.", + "description": "Biwakbau, Iglubau, Material- und Ausrüstungskunde, Materialpflege, Erstellen und Abbau von Pionierbauten, Seil- und Knotenkunde, Seilbahnen, Seilbrücken, Abseilen.", "name": "Pioniertechnik" }, "preventionAndIntegration": { @@ -140,6 +140,8 @@ }, "campCollaboration": { "fields": { + "abbreviation": "Abkürzung", + "color": "Farbe", "inviteEmail": "E-Mail", "role": "Rolle", "status": "Status" diff --git a/common/locales/en.json b/common/locales/en.json index 2fffbf8059..d78a0fa02a 100644 --- a/common/locales/en.json +++ b/common/locales/en.json @@ -147,6 +147,8 @@ }, "campCollaboration": { "fields": { + "abbreviation": "Abbreviation", + "color": "Color", "inviteEmail": "Email", "role": "Role", "status": "Status" diff --git a/common/locales/fr.json b/common/locales/fr.json index 5eb45fcf17..5cf8b89303 100644 --- a/common/locales/fr.json +++ b/common/locales/fr.json @@ -129,6 +129,8 @@ }, "campCollaboration": { "fields": { + "abbreviation": "Abréviation", + "color": "Couleur", "inviteEmail": "E-mail", "role": "Role", "status": "Statut" diff --git a/common/locales/it.json b/common/locales/it.json index 2c7bd291f6..c2ff83a458 100644 --- a/common/locales/it.json +++ b/common/locales/it.json @@ -122,6 +122,13 @@ "prototype": "Modello di campo" }, "campCollaboration": { + "fields": { + "abbreviation": "Abbreviazione", + "color": "Colore", + "inviteEmail": "E-mail", + "role": "Ruolo", + "status": "Stato" + }, "inactive": "non attivo" }, "category": { diff --git a/docker-compose.yml b/docker-compose.yml index e3cc32e563..b0963db021 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,8 +1,6 @@ -version: '3.9' - services: frontend: - image: node:20.12.2 + image: node:22.3.0 container_name: 'ecamp3-frontend' ports: - '9229:9229' # jest debug @@ -26,21 +24,29 @@ services: depends_on: - pdf - php: - image: ecamp/ecamp3-dev-api-php + api: + image: ecamp/ecamp3-dev-api build: context: ./api - target: api_platform_php_dev + target: frankenphp_dev cache_from: - - ecamp/ecamp3-dev-api-php - container_name: 'ecamp3-api-php' + - ecamp/ecamp3-dev-api + container_name: 'ecamp3-api' depends_on: - database - docker-host - restart: unless-stopped + ports: + - target: 3000 + published: 3000 + protocol: tcp + - target: 2019 + published: 2019 + protocol: tcp volumes: - - ./.caddy/php-socket:/var/run/php - - ./api:/srv/api:rw,delegated + - ./api:/app:rw,delegated + - caddy_data:/data + - caddy_config:/config + - ./api/docker/caddy/Caddyfile:/etc/caddy/Caddyfile:ro - ./api/docker/php/conf.d/api-platform.dev.ini:/usr/local/etc/php/conf.d/api-platform.ini:delegated - ./api/docker/php/docker-entrypoint.sh:/usr/local/bin/docker-entrypoint:delegated - ./.cache/composer:/tmp/composer/cache:delegated @@ -58,6 +64,7 @@ services: # Then PHPStorm will use the corresponding path mappings PHP_IDE_CONFIG: serverName=localhost ADDITIONAL_TRUSTED_HOSTS: '.*' + PERFORMANCE_TEST_DEBUG_OUTPUT: ${PERFORMANCE_TEST_DEBUG_OUTPUT:-} healthcheck: interval: 10s timeout: 3s @@ -67,34 +74,24 @@ services: extra_hosts: - 'host.docker.internal:host-gateway' - caddy: - image: ecamp/ecamp3-dev-api-caddy - build: - context: ./api - target: api_platform_caddy - cache_from: - - ecamp/ecamp3-dev-api-caddy - container_name: 'ecamp3-api-caddy' + http-cache: + image: varnish:7.5.0 + container_name: 'ecamp3-http-cache' depends_on: - - php + - api + volumes: + - ./api/docker/varnish/vcl/:/etc/varnish/:ro ports: - - target: 3000 - published: 3000 + - target: 8080 + published: 3004 protocol: tcp - - target: 2019 - published: 2019 - protocol: tcp - restart: unless-stopped - user: ${USER_ID:-1000} - volumes: - - ./.caddy/php-socket:/var/run/php - - ./.caddy/data:/data:delegated - - ./.caddy/config-cache:/config:delegated - - ./api/docker/caddy/Caddyfile:/etc/caddy/Caddyfile:ro - - ./api/public:/srv/api/public:ro + command: -a :8081,HTTP -p http_max_hdr=96 + environment: + - COOKIE_PREFIX=localhost_ + - VARNISH_HTTP_PORT=8080 pdf: - image: node:20.12.2 + image: node:22.3.0 container_name: 'ecamp3-pdf' stdin_open: true tty: true @@ -113,7 +110,7 @@ services: - CI=${CI} print: - image: node:20.12.2 + image: node:22.3.0 container_name: 'ecamp3-print' user: ${USER_ID:-1000} volumes: @@ -150,6 +147,11 @@ services: - target: 5432 published: 5432 protocol: tcp + deploy: + resources: + limits: + memory: ${DB_MEMORY_LIMIT:-128G} + cpus: ${DB_CPU_LIMIT:-8} mail: image: maildev/maildev @@ -179,7 +181,7 @@ services: - FUNCTION_ENABLE_INCOGNITO_MODE=true e2e: - image: cypress/included:13.8.1 + image: cypress/included:13.13.0 profiles: ['e2e'] container_name: 'ecamp3-e2e' environment: @@ -192,7 +194,7 @@ services: working_dir: /e2e translation: - image: node:20.12.2 + image: node:22.3.0 profiles: ['translation'] container_name: 'ecamp3-translation' volumes: @@ -205,3 +207,5 @@ services: volumes: db-data-postgres: null + caddy_data: + caddy_config: diff --git a/e2e/cypress.config.js b/e2e/cypress.config.js index 0f5278dbe8..308dd0cc56 100644 --- a/e2e/cypress.config.js +++ b/e2e/cypress.config.js @@ -24,5 +24,6 @@ module.exports = defineConfig({ env: { PRINT_URL: 'http://localhost:3000/print', API_ROOT_URL: 'http://localhost:3000/api', + API_ROOT_URL_CACHED: 'http://localhost:3004', }, }) diff --git a/e2e/package-lock.json b/e2e/package-lock.json index 4842add29c..dcf1170436 100644 --- a/e2e/package-lock.json +++ b/e2e/package-lock.json @@ -6,21 +6,12 @@ "": { "name": "@ecamp3/e2e", "devDependencies": { - "cypress": "13.8.1", + "cypress": "13.13.0", "eslint": "8.57.0", "eslint-config-prettier": "9.1.0", - "eslint-plugin-cypress": "3.0.2", + "eslint-plugin-cypress": "3.3.0", "eslint-plugin-prettier": "5.1.3", - "prettier": "3.2.5" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "prettier": "3.3.2" } }, "node_modules/@colors/colors": { @@ -28,6 +19,7 @@ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=0.1.90" @@ -38,6 +30,7 @@ "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.1.tgz", "integrity": "sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -67,6 +60,7 @@ "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.1.0", "lodash.once": "^4.1.1" @@ -77,6 +71,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -86,6 +81,7 @@ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.3.0" }, @@ -97,10 +93,11 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", + "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } @@ -110,6 +107,7 @@ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -133,6 +131,7 @@ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -141,7 +140,9 @@ "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^2.0.2", "debug": "^4.3.1", @@ -156,6 +157,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -168,13 +170,16 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "dev": true + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -188,6 +193,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -197,6 +203,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -210,6 +217,7 @@ "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, @@ -218,10 +226,11 @@ } }, "node_modules/@types/node": { - "version": "20.12.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", - "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", + "version": "20.14.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.5.tgz", + "integrity": "sha512-aoRR+fJkZT2l0aGOJhuA8frnCSoNX6W7U2mpNq63+BxBIj5BQFt8rHy627kijCmm63ijdSdwvGgpUsU6MBsZZA==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "undici-types": "~5.26.4" @@ -231,19 +240,22 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/sizzle": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz", "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/yauzl": { "version": "2.10.3", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@types/node": "*" @@ -253,13 +265,15 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -272,6 +286,7 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -281,6 +296,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -294,6 +310,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -310,6 +327,7 @@ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -319,6 +337,7 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -334,6 +353,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -346,6 +366,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -355,6 +376,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -383,19 +405,22 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": "~2.1.0" } @@ -405,6 +430,7 @@ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } @@ -414,6 +440,7 @@ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -422,19 +449,22 @@ "version": "3.2.5", "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 4.0.0" } @@ -444,21 +474,24 @@ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", - "dev": true + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.0.tgz", + "integrity": "sha512-3AungXC4I8kKsS9PuS4JH2nc+0bVY/mjgrephHTIi8fpEeGsTHBUJeosp0Wc1myYMElmD0B3Oc4XL/HVJ4PV2g==", + "dev": true, + "license": "MIT" }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", @@ -478,13 +511,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "tweetnacl": "^0.14.3" } @@ -493,19 +528,22 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -530,6 +568,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -540,6 +579,7 @@ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -549,6 +589,7 @@ "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -558,6 +599,7 @@ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -577,6 +619,7 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -585,13 +628,15 @@ "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -608,6 +653,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -620,6 +666,7 @@ "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } @@ -635,6 +682,7 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], + "license": "MIT", "engines": { "node": ">=8" } @@ -644,6 +692,7 @@ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -653,6 +702,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, + "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, @@ -661,10 +711,11 @@ } }, "node_modules/cli-table3": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.4.tgz", - "integrity": "sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", "dev": true, + "license": "MIT", "dependencies": { "string-width": "^4.2.0" }, @@ -680,6 +731,7 @@ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, + "license": "MIT", "dependencies": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" @@ -696,6 +748,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -707,19 +760,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -732,6 +788,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } @@ -741,6 +798,7 @@ "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0.0" } @@ -749,19 +807,22 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -772,11 +833,12 @@ } }, "node_modules/cypress": { - "version": "13.8.1", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.8.1.tgz", - "integrity": "sha512-Uk6ovhRbTg6FmXjeZW/TkbRM07KPtvM5gah1BIMp4Y2s+i/NMxgaLw0+PbYTOdw1+egE0FP3mWRiGcRkjjmhzA==", + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.13.0.tgz", + "integrity": "sha512-ou/MQUDq4tcDJI2FsPaod2FZpex4kpIK43JJlcBgWrX8WX7R/05ZxGTuxedOuZBfxjZxja+fbijZGyxiLP6CFA==", "dev": true, "hasInstallScript": true, + "license": "MIT", "dependencies": { "@cypress/request": "^3.0.0", "@cypress/xvfb": "^1.2.4", @@ -817,7 +879,7 @@ "request-progress": "^3.0.0", "semver": "^7.5.3", "supports-color": "^8.1.1", - "tmp": "~0.2.1", + "tmp": "~0.2.3", "untildify": "^4.0.0", "yauzl": "^2.10.0" }, @@ -833,6 +895,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" }, @@ -841,16 +904,18 @@ } }, "node_modules/dayjs": { - "version": "1.11.10", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", - "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==", - "dev": true + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", + "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==", + "dev": true, + "license": "MIT" }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -867,13 +932,15 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -891,6 +958,7 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -900,6 +968,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -912,6 +981,7 @@ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, + "license": "MIT", "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -921,13 +991,15 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, + "license": "MIT", "dependencies": { "once": "^1.4.0" } @@ -937,6 +1009,7 @@ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" @@ -950,6 +1023,7 @@ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -962,6 +1036,7 @@ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -971,6 +1046,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -983,6 +1059,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -1038,6 +1115,7 @@ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, + "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -1046,15 +1124,16 @@ } }, "node_modules/eslint-plugin-cypress": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-3.0.2.tgz", - "integrity": "sha512-5hIWc3SqXSuR+Sd7gmNMzx8yJ3LWQQS0e+qLvEVF4C1JfFtu1s9imtEm1KxlCBCcKb7+6CyR9KQYs0GiI02AlA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-3.3.0.tgz", + "integrity": "sha512-HPHMPzYBIshzJM8wqgKSKHG2p/8R0Gbg4Pb3tcdC9WrmkuqxiKxSKbjunUrajhV5l7gCIFrh1P7C7GuBqH6YuQ==", "dev": true, + "license": "MIT", "dependencies": { "globals": "^13.20.0" }, "peerDependencies": { - "eslint": ">=7 <9" + "eslint": ">=7" } }, "node_modules/eslint-plugin-prettier": { @@ -1062,6 +1141,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", "dev": true, + "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0", "synckit": "^0.8.6" @@ -1092,6 +1172,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -1108,6 +1189,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -1120,6 +1202,7 @@ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -1137,6 +1220,7 @@ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -1149,6 +1233,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -1161,6 +1246,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -1170,6 +1256,7 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -1178,13 +1265,15 @@ "version": "6.4.7", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/execa": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.0", "get-stream": "^5.0.0", @@ -1208,6 +1297,7 @@ "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", "dev": true, + "license": "MIT", "dependencies": { "pify": "^2.2.0" }, @@ -1219,13 +1309,15 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -1248,37 +1340,43 @@ "dev": true, "engines": [ "node >=0.6.0" - ] + ], + "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-diff": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -1288,6 +1386,7 @@ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, + "license": "MIT", "dependencies": { "pend": "~1.2.0" } @@ -1297,6 +1396,7 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -1312,6 +1412,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -1321,6 +1422,7 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -1333,6 +1435,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -1349,6 +1452,7 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", @@ -1362,13 +1466,15 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "*" } @@ -1378,6 +1484,7 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -1392,6 +1499,7 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, + "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -1406,13 +1514,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1422,6 +1532,7 @@ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -1441,6 +1552,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, + "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -1456,6 +1568,7 @@ "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", "dev": true, + "license": "MIT", "dependencies": { "async": "^3.2.0" } @@ -1465,6 +1578,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" } @@ -1473,7 +1587,9 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -1494,6 +1610,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -1506,6 +1623,7 @@ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", "dev": true, + "license": "MIT", "dependencies": { "ini": "2.0.0" }, @@ -1521,6 +1639,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -1536,6 +1655,7 @@ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -1547,19 +1667,22 @@ "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1569,6 +1692,7 @@ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -1581,6 +1705,7 @@ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1593,6 +1718,7 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1605,6 +1731,7 @@ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -1617,6 +1744,7 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", "dev": true, + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^2.0.2", @@ -1631,6 +1759,7 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=8.12.0" } @@ -1653,13 +1782,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/ignore": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -1669,6 +1800,7 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -1685,6 +1817,7 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -1694,6 +1827,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1702,7 +1836,9 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -1712,13 +1848,15 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/ini": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -1728,6 +1866,7 @@ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", "dev": true, + "license": "MIT", "dependencies": { "ci-info": "^3.2.0" }, @@ -1740,6 +1879,7 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1749,6 +1889,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1758,6 +1899,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -1770,6 +1912,7 @@ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "dev": true, + "license": "MIT", "dependencies": { "global-dirs": "^3.0.0", "is-path-inside": "^3.0.2" @@ -1786,6 +1929,7 @@ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1795,6 +1939,7 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -1806,13 +1951,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -1824,19 +1971,22 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -1848,43 +1998,50 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true + "dev": true, + "license": "(AFL-2.1 OR BSD-3-Clause)" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -1900,6 +2057,7 @@ "engines": [ "node >=0.6.0" ], + "license": "MIT", "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -1912,6 +2070,7 @@ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -1921,6 +2080,7 @@ "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", "dev": true, + "license": "MIT", "engines": { "node": "> 0.8" } @@ -1930,6 +2090,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -1943,6 +2104,7 @@ "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", "dev": true, + "license": "MIT", "dependencies": { "cli-truncate": "^2.1.0", "colorette": "^2.0.16", @@ -1970,6 +2132,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -1984,25 +2147,29 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -2019,6 +2186,7 @@ "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-escapes": "^4.3.0", "cli-cursor": "^3.1.0", @@ -2037,6 +2205,7 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -2054,6 +2223,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -2063,29 +2233,19 @@ "node": ">=8" } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -2095,6 +2255,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -2107,6 +2268,7 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -2116,6 +2278,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -2128,6 +2291,7 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2136,19 +2300,22 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -2161,6 +2328,7 @@ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2170,6 +2338,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -2179,6 +2348,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -2190,17 +2360,18 @@ } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -2210,13 +2381,15 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -2232,6 +2405,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -2247,6 +2421,7 @@ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, + "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -2262,6 +2437,7 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -2274,6 +2450,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2283,6 +2460,7 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2292,6 +2470,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2300,19 +2479,22 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2322,15 +2504,17 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", + "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -2346,6 +2530,7 @@ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, + "license": "MIT", "dependencies": { "fast-diff": "^1.1.2" }, @@ -2358,6 +2543,7 @@ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -2370,6 +2556,7 @@ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6.0" } @@ -2378,19 +2565,22 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, + "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -2401,6 +2591,7 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -2410,6 +2601,7 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -2424,7 +2616,8 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -2444,13 +2637,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/request-progress": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", "dev": true, + "license": "MIT", "dependencies": { "throttleit": "^1.0.0" } @@ -2459,13 +2654,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -2475,6 +2672,7 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, + "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -2488,22 +2686,26 @@ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, "node_modules/rfdc": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", - "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", - "dev": true + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -2533,6 +2735,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -2542,6 +2745,7 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } @@ -2564,22 +2768,22 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -2592,6 +2796,7 @@ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -2609,6 +2814,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -2621,6 +2827,7 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2630,6 +2837,7 @@ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -2647,13 +2855,15 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/slice-ansi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -2668,6 +2878,7 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", "dev": true, + "license": "MIT", "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -2693,6 +2904,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -2707,6 +2919,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2719,6 +2932,7 @@ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -2728,6 +2942,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -2740,6 +2955,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -2755,6 +2971,7 @@ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", "dev": true, + "license": "MIT", "dependencies": { "@pkgr/core": "^0.1.0", "tslib": "^2.6.2" @@ -2770,13 +2987,15 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/throttleit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/sindresorhus" } @@ -2785,22 +3004,25 @@ "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tmp": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.14" } }, "node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", @@ -2816,21 +3038,24 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0" } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true, + "license": "0BSD" }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" }, @@ -2842,13 +3067,15 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true + "dev": true, + "license": "Unlicense" }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -2861,6 +3088,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -2873,6 +3101,7 @@ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/universalify": { @@ -2880,6 +3109,7 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10.0.0" } @@ -2889,6 +3119,7 @@ "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2898,6 +3129,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -2907,6 +3139,7 @@ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, + "license": "MIT", "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -2917,6 +3150,7 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -2929,6 +3163,7 @@ "engines": [ "node >=0.6.0" ], + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -2940,6 +3175,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -2950,11 +3186,22 @@ "node": ">= 8" } }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -2971,19 +3218,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, + "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -2994,6 +3237,7 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, diff --git a/e2e/package.json b/e2e/package.json index 88a9102a44..971931c2a1 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -12,12 +12,12 @@ "lint:check:prettier": "prettier --check --ignore-path .gitignore **/*.{js,json,md}" }, "devDependencies": { - "cypress": "13.8.1", + "cypress": "13.13.0", "eslint": "8.57.0", "eslint-config-prettier": "9.1.0", - "eslint-plugin-cypress": "3.0.2", + "eslint-plugin-cypress": "3.3.0", "eslint-plugin-prettier": "5.1.3", - "prettier": "3.2.5" + "prettier": "3.3.2" }, "eslintConfig": { "root": true, diff --git a/e2e/specs/httpCache.cy.js b/e2e/specs/httpCache.cy.js new file mode 100644 index 0000000000..4b0fc346be --- /dev/null +++ b/e2e/specs/httpCache.cy.js @@ -0,0 +1,244 @@ +describe('HTTP cache tests', () => { + it('caches /content_types separately for each login', () => { + const uri = '/api/content_types' + + Cypress.session.clearAllSavedSessions() + cy.login('test@example.com') + + // first request is a cache miss + cy.request(Cypress.env('API_ROOT_URL_CACHED') + uri + '.jsonhal').then((response) => { + const headers = response.headers + expect(headers.xkey).to.eq( + 'c462edd869f3 5e2028c55ee4 a4211c112939 f17470519474 1a0f84e322c8 3ef17bd1df72 4f0c657fecef 44dcc7493c65 cfccaecd4bad 318e064ea0c9 /api/content_types' + ) + expect(headers['x-cache']).to.eq('MISS') + cy.readFile('./specs/responses/content_types_collection.json').then((data) => + expect(response.body).to.deep.equal(data) + ) + }) + + // second request is a cache hit + cy.expectCacheHit(uri) + + // request with a new user is a cache miss + cy.login('castor@example.com') + cy.expectCacheMiss(uri) + }) + + it('caches /content_types/318e064ea0c9', () => { + const uri = '/api/content_types/318e064ea0c9' + + Cypress.session.clearAllSavedSessions() + cy.login('test@example.com') + + // first request is a cache miss + cy.request(Cypress.env('API_ROOT_URL_CACHED') + uri + '.jsonhal').then((response) => { + const headers = response.headers + expect(headers.xkey).to.eq('318e064ea0c9') + expect(headers['x-cache']).to.eq('MISS') + cy.readFile('./specs/responses/content_types_entity.json').then((data) => + expect(response.body).to.deep.equal(data) + ) + }) + + // second request is a cache hit + cy.expectCacheHit(uri) + }) + + it('caches /camp/{campId}/categories separately for each login', () => { + const uri = '/api/camps/3c79b99ab424/categories' + + Cypress.session.clearAllSavedSessions() + cy.login('test@example.com') + + // first request is a cache miss + cy.request(Cypress.env('API_ROOT_URL_CACHED') + uri + '.jsonhal').then((response) => { + const headers = response.headers + expect(headers.xkey).to.eq( + /* campCollaboration for test@example.com */ + 'b0bdb7202a9d ' + + /* Category ES */ + 'ebfd46a1c181 ebfd46a1c181#camp ebfd46a1c181#preferredContentTypes 9d7b3a220fb4 9d7b3a220fb4#root 9d7b3a220fb4#parent 9d7b3a220fb4#children 9d7b3a220fb4#contentType ebfd46a1c181#rootContentNode ebfd46a1c181#contentNodes ' + + /* Category LA */ + '1a869b162875 1a869b162875#camp 1a869b162875#preferredContentTypes be9b6b7f23f6 be9b6b7f23f6#root be9b6b7f23f6#parent be9b6b7f23f6#children be9b6b7f23f6#contentType 1a869b162875#rootContentNode 1a869b162875#contentNodes ' + + /* Category LP */ + 'dfa531302823 dfa531302823#camp dfa531302823#preferredContentTypes 63cbc734fa04 63cbc734fa04#root 63cbc734fa04#parent 63cbc734fa04#children 63cbc734fa04#contentType dfa531302823#rootContentNode dfa531302823#contentNodes ' + + /* Category LS */ + 'a023e85227ac a023e85227ac#camp a023e85227ac#preferredContentTypes 2cce9e17a368 2cce9e17a368#root 2cce9e17a368#parent 2cce9e17a368#children 2cce9e17a368#contentType a023e85227ac#rootContentNode a023e85227ac#contentNodes ' + + /* collection URI (for detecting addition of new categories) */ + '/api/camps/3c79b99ab424/categories' + ) + expect(headers['x-cache']).to.eq('MISS') + cy.readFile('./specs/responses/categories_collection.json').then((data) => + expect(response.body).to.deep.equal(data) + ) + }) + + // second request is a cache hit + cy.expectCacheHit(uri) + + // request with a new user is a cache miss + cy.login('castor@example.com') + cy.expectCacheMiss(uri) + }) + + it('invalidates /camp/{campId}/categories for all users on category patch', () => { + const uri = '/api/camps/9c2447aefe38/categories' + + // bring data into defined state + Cypress.session.clearAllSavedSessions() + cy.login('bruce@wayne.com') + cy.apiPatch('/api/categories/c5e1bc565094', { + name: 'old_name', + }) + + // warm up cache + cy.expectCacheMiss(uri) + cy.expectCacheHit(uri) + + cy.login('felicity@smoak.com') + cy.expectCacheMiss(uri) + cy.expectCacheHit(uri) + + // touch category + cy.apiPatch('/api/categories/c5e1bc565094', { + name: 'new_name', + }) + + // ensure cache was invalidated + cy.expectCacheMiss(uri) + cy.login('bruce@wayne.com') + cy.expectCacheMiss(uri) + }) + + it('invalidates /camp/{campId}/categories for new contentNode child', () => { + const uri = '/api/camps/3c79b99ab424/categories' + + Cypress.session.clearAllSavedSessions() + cy.login('test@example.com') + + // warm up cache + cy.expectCacheMiss(uri) + cy.expectCacheHit(uri) + + // add new child to root content node (9d7b3a220fb4) of category (ebfd46a1c181) + cy.apiPost('/api/content_node/column_layouts', { + parent: '/api/content_node/column_layouts/9d7b3a220fb4', + slot: '1', + contentType: '/api/content_types/f17470519474', + }).then((response) => { + const newContentNodeUri = response.body._links.self.href + + // ensure cache was invalidated + cy.expectCacheMiss(uri) + cy.expectCacheHit(uri) + + // delete newly created contentNode + cy.apiDelete(newContentNodeUri) + + // ensure cache was invalidated + cy.expectCacheMiss(uri) + }) + }) + + it('invalidates /camp/{campId}/categories for new category', () => { + const uri = '/api/camps/3c79b99ab424/categories' + + Cypress.session.clearAllSavedSessions() + cy.login('test@example.com') + + // warm up cache + cy.expectCacheMiss(uri) + cy.expectCacheHit(uri) + + // add new category to camp + cy.apiPost('/api/categories', { + camp: '/api/camps/3c79b99ab424', + short: 'new', + name: 'new Category', + color: '#000000', + numberingStyle: '1', + }).then((response) => { + const newContentNodeUri = response.body._links.self.href + + // ensure cache was invalidated + cy.expectCacheMiss(uri) + cy.expectCacheHit(uri) + + // delete newly created contentNode + cy.apiDelete(newContentNodeUri) + + // ensure cache was invalidated + cy.expectCacheMiss(uri) + }) + }) + + it('invalidates cached data when user leaves a camp', () => { + Cypress.session.clearAllSavedSessions() + const uri = '/api/camps/3c79b99ab424/categories' + + cy.intercept('PATCH', '/api/camp_collaborations/**').as('camp_collaboration') + cy.intercept('PATCH', '/api/invitations/**').as('invitations') + + // warm up cache + cy.login('castor@example.com') + cy.expectCacheMiss(uri) + cy.expectCacheHit(uri) + + // deactivate Castor + cy.login('test@example.com') + cy.visit('/camps/3c79b99ab424/GRGR/admin/collaborators') + cy.get('.v-list-item__title:contains("Castor")').click() + cy.get('button:contains("Deaktivieren")').click() + cy.get('div[role=alert]').find('button').contains('Deaktivieren').click() + cy.wait('@camp_collaboration') + + // ensure cache was invalidated + cy.login('castor@example.com') + cy.request({ + url: Cypress.env('API_ROOT_URL_CACHED') + uri + '.jsonhal', + failOnStatusCode: false, + }).then((response) => { + expect(response.status).to.eq(404) + }) + + // delete old emails + cy.request({ + url: 'localhost:3000/mail/email/all', + method: 'DELETE', + }) + + // invite Castor + cy.login('test@example.com') + cy.visit('/camps/3c79b99ab424/GRGR/admin/collaborators') + cy.get('.v-list-item__title:contains("Castor")').click() + cy.get('button:contains("Erneut einladen")').click() + cy.wait('@camp_collaboration') + + // accept invitation as Castor + cy.login('castor@example.com') + + cy.request({ + url: 'localhost:3000/mail/email', + }).then((response) => { + const emailHtmlContent = response.body[0].html + cy.document().then((document) => { + document.documentElement.innerHTML = emailHtmlContent + }) + + cy.get('a:contains("Einladung beantworten")').invoke('removeAttr', 'target').click() + + cy.get('button:contains("Einladung mit aktuellem Account akzeptieren")').click() + cy.wait('@invitations') + cy.visit('/camps') + cy.contains('GRGR') + }) + }) + + it("doesn't cache /camps", () => { + const uri = '/api/camps' + Cypress.session.clearAllSavedSessions() + cy.login('test@example.com') + cy.expectCachePass(uri) + }) +}) diff --git a/e2e/specs/responses/categories_collection.json b/e2e/specs/responses/categories_collection.json new file mode 100644 index 0000000000..a6cdad1075 --- /dev/null +++ b/e2e/specs/responses/categories_collection.json @@ -0,0 +1,254 @@ +{ + "_links": { + "self": { + "href": "/api/camps/3c79b99ab424/categories.jsonhal" + }, + "items": [ + { + "href": "/api/categories/ebfd46a1c181" + }, + { + "href": "/api/categories/1a869b162875" + }, + { + "href": "/api/categories/dfa531302823" + }, + { + "href": "/api/categories/a023e85227ac" + } + ] + }, + "totalItems": 4, + "_embedded": { + "items": [ + { + "_links": { + "self": { + "href": "/api/categories/ebfd46a1c181" + }, + "camp": { + "href": "/api/camps/3c79b99ab424" + }, + "preferredContentTypes": { + "href": "/api/content_types?categories=%2Fapi%2Fcategories%2Febfd46a1c181" + }, + "rootContentNode": { + "href": "/api/content_node/column_layouts/9d7b3a220fb4" + }, + "contentNodes": { + "href": "/api/content_nodes?root=%2Fapi%2Fcontent_node%2Fcolumn_layouts%2F9d7b3a220fb4" + } + }, + "_embedded": { + "rootContentNode": { + "_links": { + "self": { + "href": "/api/content_node/column_layouts/9d7b3a220fb4" + }, + "root": { + "href": "/api/content_node/column_layouts/9d7b3a220fb4" + }, + "parent": null, + "children": [], + "contentType": { + "href": "/api/content_types/f17470519474" + } + }, + "data": { + "columns": [ + { + "slot": "1", + "width": 12 + } + ] + }, + "slot": null, + "position": 0, + "instanceName": null, + "id": "9d7b3a220fb4", + "contentTypeName": "ColumnLayout" + } + }, + "short": "ES", + "name": "Essen", + "color": "#BBBBBB", + "numberingStyle": "-", + "id": "ebfd46a1c181" + }, + { + "_links": { + "self": { + "href": "/api/categories/1a869b162875" + }, + "camp": { + "href": "/api/camps/3c79b99ab424" + }, + "preferredContentTypes": { + "href": "/api/content_types?categories=%2Fapi%2Fcategories%2F1a869b162875" + }, + "rootContentNode": { + "href": "/api/content_node/column_layouts/be9b6b7f23f6" + }, + "contentNodes": { + "href": "/api/content_nodes?root=%2Fapi%2Fcontent_node%2Fcolumn_layouts%2Fbe9b6b7f23f6" + } + }, + "_embedded": { + "rootContentNode": { + "_links": { + "self": { + "href": "/api/content_node/column_layouts/be9b6b7f23f6" + }, + "root": { + "href": "/api/content_node/column_layouts/be9b6b7f23f6" + }, + "parent": null, + "children": [ + { + "href": "/api/content_node/responsive_layouts/179ba93a4bb9" + } + ], + "contentType": { + "href": "/api/content_types/f17470519474" + } + }, + "data": { + "columns": [ + { + "slot": "1", + "width": 12 + } + ] + }, + "slot": null, + "position": 0, + "instanceName": null, + "id": "be9b6b7f23f6", + "contentTypeName": "ColumnLayout" + } + }, + "short": "LA", + "name": "Lageraktivität", + "color": "#FF9800", + "numberingStyle": "A", + "id": "1a869b162875" + }, + { + "_links": { + "self": { + "href": "/api/categories/dfa531302823" + }, + "camp": { + "href": "/api/camps/3c79b99ab424" + }, + "preferredContentTypes": { + "href": "/api/content_types?categories=%2Fapi%2Fcategories%2Fdfa531302823" + }, + "rootContentNode": { + "href": "/api/content_node/column_layouts/63cbc734fa04" + }, + "contentNodes": { + "href": "/api/content_nodes?root=%2Fapi%2Fcontent_node%2Fcolumn_layouts%2F63cbc734fa04" + } + }, + "_embedded": { + "rootContentNode": { + "_links": { + "self": { + "href": "/api/content_node/column_layouts/63cbc734fa04" + }, + "root": { + "href": "/api/content_node/column_layouts/63cbc734fa04" + }, + "parent": null, + "children": [ + { + "href": "/api/content_node/responsive_layouts/801027c511e6" + } + ], + "contentType": { + "href": "/api/content_types/f17470519474" + } + }, + "data": { + "columns": [ + { + "slot": "1", + "width": 12 + } + ] + }, + "slot": null, + "position": 0, + "instanceName": null, + "id": "63cbc734fa04", + "contentTypeName": "ColumnLayout" + } + }, + "short": "LP", + "name": "Lagerprogramm", + "color": "#90B7E4", + "numberingStyle": "1", + "id": "dfa531302823" + }, + { + "_links": { + "self": { + "href": "/api/categories/a023e85227ac" + }, + "camp": { + "href": "/api/camps/3c79b99ab424" + }, + "preferredContentTypes": { + "href": "/api/content_types?categories=%2Fapi%2Fcategories%2Fa023e85227ac" + }, + "rootContentNode": { + "href": "/api/content_node/column_layouts/2cce9e17a368" + }, + "contentNodes": { + "href": "/api/content_nodes?root=%2Fapi%2Fcontent_node%2Fcolumn_layouts%2F2cce9e17a368" + } + }, + "_embedded": { + "rootContentNode": { + "_links": { + "self": { + "href": "/api/content_node/column_layouts/2cce9e17a368" + }, + "root": { + "href": "/api/content_node/column_layouts/2cce9e17a368" + }, + "parent": null, + "children": [ + { + "href": "/api/content_node/responsive_layouts/80d79bc8f484" + } + ], + "contentType": { + "href": "/api/content_types/f17470519474" + } + }, + "data": { + "columns": [ + { + "slot": "1", + "width": 12 + } + ] + }, + "slot": null, + "position": 0, + "instanceName": "est", + "id": "2cce9e17a368", + "contentTypeName": "ColumnLayout" + } + }, + "short": "LS", + "name": "Lagersport", + "color": "#4DBB52", + "numberingStyle": "1", + "id": "a023e85227ac" + } + ] + } +} diff --git a/e2e/specs/responses/content_types_collection.json b/e2e/specs/responses/content_types_collection.json new file mode 100644 index 0000000000..f209e6a3b5 --- /dev/null +++ b/e2e/specs/responses/content_types_collection.json @@ -0,0 +1,174 @@ +{ + "_links": { + "self": { + "href": "/api/content_types.jsonhal" + }, + "items": [ + { + "href": "/api/content_types/c462edd869f3" + }, + { + "href": "/api/content_types/5e2028c55ee4" + }, + { + "href": "/api/content_types/a4211c112939" + }, + { + "href": "/api/content_types/f17470519474" + }, + { + "href": "/api/content_types/1a0f84e322c8" + }, + { + "href": "/api/content_types/3ef17bd1df72" + }, + { + "href": "/api/content_types/4f0c657fecef" + }, + { + "href": "/api/content_types/44dcc7493c65" + }, + { + "href": "/api/content_types/cfccaecd4bad" + }, + { + "href": "/api/content_types/318e064ea0c9" + } + ] + }, + "totalItems": 10, + "_embedded": { + "items": [ + { + "_links": { + "self": { + "href": "/api/content_types/c462edd869f3" + }, + "contentNodes": { + "href": "/api/content_node/single_texts?contentType=%2Fapi%2Fcontent_types%2Fc462edd869f3" + } + }, + "name": "LearningObjectives", + "active": true, + "id": "c462edd869f3" + }, + { + "_links": { + "self": { + "href": "/api/content_types/5e2028c55ee4" + }, + "contentNodes": { + "href": "/api/content_node/single_texts?contentType=%2Fapi%2Fcontent_types%2F5e2028c55ee4" + } + }, + "name": "LearningTopics", + "active": true, + "id": "5e2028c55ee4" + }, + { + "_links": { + "self": { + "href": "/api/content_types/a4211c112939" + }, + "contentNodes": { + "href": "/api/content_node/responsive_layouts?contentType=%2Fapi%2Fcontent_types%2Fa4211c112939" + } + }, + "name": "ResponsiveLayout", + "active": true, + "id": "a4211c112939" + }, + { + "_links": { + "self": { + "href": "/api/content_types/f17470519474" + }, + "contentNodes": { + "href": "/api/content_node/column_layouts?contentType=%2Fapi%2Fcontent_types%2Ff17470519474" + } + }, + "name": "ColumnLayout", + "active": true, + "id": "f17470519474" + }, + { + "_links": { + "self": { + "href": "/api/content_types/1a0f84e322c8" + }, + "contentNodes": { + "href": "/api/content_node/multi_selects?contentType=%2Fapi%2Fcontent_types%2F1a0f84e322c8" + } + }, + "name": "LAThematicArea", + "active": true, + "id": "1a0f84e322c8" + }, + { + "_links": { + "self": { + "href": "/api/content_types/3ef17bd1df72" + }, + "contentNodes": { + "href": "/api/content_node/material_nodes?contentType=%2Fapi%2Fcontent_types%2F3ef17bd1df72" + } + }, + "name": "Material", + "active": true, + "id": "3ef17bd1df72" + }, + { + "_links": { + "self": { + "href": "/api/content_types/4f0c657fecef" + }, + "contentNodes": { + "href": "/api/content_node/single_texts?contentType=%2Fapi%2Fcontent_types%2F4f0c657fecef" + } + }, + "name": "Notes", + "active": true, + "id": "4f0c657fecef" + }, + { + "_links": { + "self": { + "href": "/api/content_types/44dcc7493c65" + }, + "contentNodes": { + "href": "/api/content_node/single_texts?contentType=%2Fapi%2Fcontent_types%2F44dcc7493c65" + } + }, + "name": "SafetyConcept", + "active": true, + "id": "44dcc7493c65" + }, + { + "_links": { + "self": { + "href": "/api/content_types/cfccaecd4bad" + }, + "contentNodes": { + "href": "/api/content_node/storyboards?contentType=%2Fapi%2Fcontent_types%2Fcfccaecd4bad" + } + }, + "name": "Storyboard", + "active": true, + "id": "cfccaecd4bad" + }, + { + "_links": { + "self": { + "href": "/api/content_types/318e064ea0c9" + }, + "contentNodes": { + "href": "/api/content_node/single_texts?contentType=%2Fapi%2Fcontent_types%2F318e064ea0c9" + } + }, + "name": "Storycontext", + "active": true, + "id": "318e064ea0c9" + } + ] + } +} diff --git a/e2e/specs/responses/content_types_entity.json b/e2e/specs/responses/content_types_entity.json new file mode 100644 index 0000000000..8e76a52dcd --- /dev/null +++ b/e2e/specs/responses/content_types_entity.json @@ -0,0 +1,13 @@ +{ + "_links": { + "self": { + "href": "/api/content_types/318e064ea0c9" + }, + "contentNodes": { + "href": "/api/content_node/single_texts?contentType=%2Fapi%2Fcontent_types%2F318e064ea0c9" + } + }, + "name": "Storycontext", + "active": true, + "id": "318e064ea0c9" +} diff --git a/e2e/support/commands.js b/e2e/support/commands.js index cd8e15779f..1e5cc9faa9 100644 --- a/e2e/support/commands.js +++ b/e2e/support/commands.js @@ -37,3 +37,53 @@ Cypress.Commands.add('login', (identifier) => { Cypress.Commands.add('moveDownloads', () => { cy.task('moveDownloads', `${Cypress.spec.name}/${Cypress.currentTest.title}`) }) + +Cypress.Commands.add('expectCacheHit', (uri) => { + cy.request(Cypress.env('API_ROOT_URL_CACHED') + uri + '.jsonhal').then((response) => { + const headers = response.headers + expect(headers['x-cache']).to.eq('HIT') + }) +}) + +Cypress.Commands.add('expectCacheMiss', (uri) => { + cy.request(Cypress.env('API_ROOT_URL_CACHED') + uri + '.jsonhal').then((response) => { + const headers = response.headers + expect(headers['x-cache']).to.eq('MISS') + }) +}) + +Cypress.Commands.add('expectCachePass', (uri) => { + cy.request(Cypress.env('API_ROOT_URL_CACHED') + uri + '.jsonhal').then((response) => { + const headers = response.headers + expect(headers['x-cache']).to.eq('PASS') + }) +}) + +Cypress.Commands.add('apiPatch', (uri, body) => { + cy.request({ + method: 'PATCH', + url: Cypress.env('API_ROOT_URL_CACHED') + uri + '.jsonhal', + body, + headers: { + 'Content-Type': 'application/merge-patch+json', + }, + }) +}) + +Cypress.Commands.add('apiPost', (uri, body) => { + cy.request({ + method: 'POST', + url: Cypress.env('API_ROOT_URL_CACHED') + uri + '.jsonhal', + body, + headers: { + 'Content-Type': 'application/hal+json', + }, + }) +}) + +Cypress.Commands.add('apiDelete', (uri) => { + cy.request({ + method: 'DELETE', + url: Cypress.env('API_ROOT_URL_CACHED') + uri + '.jsonhal', + }) +}) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 13cb0cd8d7..1d7b5af8fd 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -14,25 +14,25 @@ "@react-pdf/pdfkit": "3.1.10", "@react-pdf/primitives": "3.1.1", "@react-pdf/render": "3.4.4", - "@sentry/browser": "7.112.2", - "@sentry/vue": "7.112.2", - "@tiptap/extension-bold": "2.3.0", - "@tiptap/extension-bubble-menu": "2.3.0", - "@tiptap/extension-bullet-list": "2.3.0", - "@tiptap/extension-document": "2.3.0", - "@tiptap/extension-hard-break": "2.3.0", - "@tiptap/extension-heading": "2.3.0", - "@tiptap/extension-history": "2.3.0", - "@tiptap/extension-italic": "2.3.0", - "@tiptap/extension-list-item": "2.3.0", - "@tiptap/extension-ordered-list": "2.3.0", - "@tiptap/extension-paragraph": "2.3.0", - "@tiptap/extension-placeholder": "2.3.0", - "@tiptap/extension-strike": "2.3.0", - "@tiptap/extension-text": "2.3.0", - "@tiptap/extension-underline": "2.3.0", - "@tiptap/pm": "2.3.0", - "@tiptap/vue-2": "2.3.0", + "@sentry/browser": "8.12.0", + "@sentry/vue": "8.12.0", + "@tiptap/extension-bold": "2.4.0", + "@tiptap/extension-bubble-menu": "2.4.0", + "@tiptap/extension-bullet-list": "2.4.0", + "@tiptap/extension-document": "2.4.0", + "@tiptap/extension-hard-break": "2.4.0", + "@tiptap/extension-heading": "2.4.0", + "@tiptap/extension-history": "2.4.0", + "@tiptap/extension-italic": "2.4.0", + "@tiptap/extension-list-item": "2.4.0", + "@tiptap/extension-ordered-list": "2.4.0", + "@tiptap/extension-paragraph": "2.4.0", + "@tiptap/extension-placeholder": "2.4.0", + "@tiptap/extension-strike": "2.4.0", + "@tiptap/extension-text": "2.4.0", + "@tiptap/extension-underline": "2.4.0", + "@tiptap/pm": "2.4.0", + "@tiptap/vue-2": "2.4.0", "@zxcvbn-ts/core": "3.0.4", "@zxcvbn-ts/language-common": "3.0.4", "@zxcvbn-ts/language-de": "3.0.2", @@ -40,8 +40,8 @@ "@zxcvbn-ts/language-fr": "3.0.2", "@zxcvbn-ts/language-it": "3.0.2", "assert": "2.1.0", - "axios": "1.6.8", - "colorjs.io": "0.5.0", + "axios": "1.7.2", + "colorjs.io": "0.5.2", "comlink": "4.4.1", "dayjs": "1.11.11", "deepmerge": "4.3.1", @@ -50,13 +50,13 @@ "hal-json-vuex": "2.0.0-alpha.16", "inter-ui": "3.19.3", "js-cookie": "3.0.5", - "linkify-it": "4.0.1", + "linkify-it": "5.0.0", "lodash": "4.17.21", "runes": "0.4.3", "slugify": "1.6.6", "url-template": "3.1.1", "util": "0.12.5", - "uuid": "9.0.1", + "uuid": "10.0.0", "v-resize-observer": "2.1.0", "vee-validate": "3.4.15", "vue": "2.7.15", @@ -71,13 +71,13 @@ "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz" }, "devDependencies": { - "@babel/eslint-parser": "7.24.1", - "@sentry/vite-plugin": "2.16.1", - "@testing-library/jest-dom": "6.4.2", + "@babel/eslint-parser": "7.24.7", + "@sentry/vite-plugin": "2.20.1", + "@testing-library/jest-dom": "6.4.6", "@testing-library/user-event": "14.5.2", "@testing-library/vue": "5.9.0", "@vitejs/plugin-vue2": "2.3.1", - "@vitest/coverage-v8": "1.5.2", + "@vitest/coverage-v8": "1.6.0", "@vue/babel-preset-app": "5.0.8", "@vue/eslint-config-prettier": "9.0.0", "@vue/test-utils": "1.3.6", @@ -87,45 +87,39 @@ "eslint-config-prettier": "9.1.0", "eslint-plugin-import": "2.29.1", "eslint-plugin-local-rules": "2.0.1", - "eslint-plugin-n": "17.3.1", + "eslint-plugin-n": "17.9.0", "eslint-plugin-prettier": "5.1.3", - "eslint-plugin-promise": "6.1.1", - "eslint-plugin-vue": "9.25.0", + "eslint-plugin-promise": "6.4.0", + "eslint-plugin-vue": "9.27.0", + "eslint-plugin-vue-scoped-css": "2.8.0", "flush-promises": "1.0.2", "jest-serializer-vue-tjw": "3.20.0", - "jsdom": "24.0.0", - "lint-staged": "15.2.2", - "prettier": "3.2.5", + "jsdom": "24.1.0", + "lint-staged": "15.2.7", + "prettier": "3.3.2", "sass": "1.32.13", - "unplugin-vue-components": "0.26.0", - "vite": "5.2.10", - "vite-plugin-comlink": "4.0.3", + "unplugin-vue-components": "0.27.0", + "vite": "5.3.3", + "vite-plugin-comlink": "5.0.1", "vite-plugin-vue2-svg": "0.4.0", - "vitest": "1.5.2", + "vitest": "1.6.0", "vitest-canvas-mock": "0.3.3", "vue-template-compiler": "2.7.15" } }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@adobe/css-tools": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz", - "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==", - "dev": true + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz", + "integrity": "sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==", + "dev": true, + "license": "MIT" }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -135,21 +129,23 @@ } }, "node_modules/@antfu/utils": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.7.tgz", - "integrity": "sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==", + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.8.tgz", + "integrity": "sha512-rWQkqXRESdjXtc+7NRfK9lASQjpXJu1ayp7qi1d23zZorY+wBHVLHHoVcMsEnkqEBWTFqbztO7/QdJFzyEcLTg==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@babel/code-frame": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", - "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.24.2", + "@babel/highlight": "^7.24.7", "picocolors": "^1.0.0" }, "engines": { @@ -157,30 +153,32 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", - "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", + "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz", - "integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", + "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.4", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.4", - "@babel/parser": "^7.24.4", - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helpers": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -196,10 +194,11 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.24.1.tgz", - "integrity": "sha512-d5guuzMlPeDfZIbpQ8+g1NaCNuAGBBGNECh0HVqz1sjOeVLh2CEaifuOysCH18URW6R7pqXINvf5PaR/dC6jLQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.24.7.tgz", + "integrity": "sha512-SO5E3bVxDuxyNxM5agFv480YA2HO6ohZbGxbazZdIk3KQOPOGVNw6q78I9/lbviIf95eq6tPozeYnJLbjnC8IA==", "dev": true, + "license": "MIT", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", @@ -210,16 +209,17 @@ }, "peerDependencies": { "@babel/core": "^7.11.0", - "eslint": "^7.5.0 || ^8.0.0" + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" } }, "node_modules/@babel/generator": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", - "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.0", + "@babel/types": "^7.24.7", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -229,37 +229,41 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", + "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", + "@babel/compat-data": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -269,19 +273,20 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz", - "integrity": "sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz", + "integrity": "sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", "semver": "^6.3.1" }, "engines": { @@ -292,12 +297,13 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz", + "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.7", "regexpu-core": "^5.3.1", "semver": "^6.3.1" }, @@ -313,6 +319,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -325,74 +332,85 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz", + "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.23.0" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", - "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.0" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", + "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -402,35 +420,38 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", - "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", + "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz", + "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-wrap-function": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -440,14 +461,15 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", - "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", + "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -457,103 +479,114 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", - "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", + "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz", + "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" + "@babel/helper-function-name": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz", - "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", + "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", - "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -563,9 +596,10 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", - "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -574,13 +608,14 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.4.tgz", - "integrity": "sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz", + "integrity": "sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -590,12 +625,13 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", - "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz", + "integrity": "sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -605,14 +641,15 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", - "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.24.1" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -622,13 +659,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", - "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz", + "integrity": "sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -643,6 +681,7 @@ "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -655,14 +694,15 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.1.tgz", - "integrity": "sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.7.tgz", + "integrity": "sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-decorators": "^7.24.1" + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-decorators": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -676,6 +716,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" }, @@ -688,6 +729,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -700,6 +742,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -712,6 +755,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -723,12 +767,13 @@ } }, "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.1.tgz", - "integrity": "sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.7.tgz", + "integrity": "sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -742,6 +787,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -754,6 +800,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -762,12 +809,13 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", - "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", + "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -777,12 +825,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", - "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -796,6 +845,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -808,6 +858,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -816,12 +867,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", - "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -835,6 +887,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -847,6 +900,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -859,6 +913,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -871,6 +926,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -883,6 +939,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -895,6 +952,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -907,6 +965,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -922,6 +981,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -937,6 +997,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -949,12 +1010,13 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", - "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -964,14 +1026,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz", - "integrity": "sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz", + "integrity": "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -982,14 +1045,15 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", - "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-remap-async-to-generator": "^7.22.20" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -999,12 +1063,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", - "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1014,12 +1079,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz", - "integrity": "sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", + "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1029,13 +1095,14 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", - "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", + "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1045,13 +1112,14 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz", - "integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.4", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -1062,18 +1130,19 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz", - "integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-split-export-declaration": "^7.22.6", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz", + "integrity": "sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", "globals": "^11.1.0" }, "engines": { @@ -1084,13 +1153,14 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", - "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/template": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1100,12 +1170,13 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz", - "integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz", + "integrity": "sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1115,13 +1186,14 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", - "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1131,12 +1203,13 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", - "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1146,12 +1219,13 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", - "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -1162,13 +1236,14 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", - "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1178,12 +1253,13 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", - "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -1194,13 +1270,14 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", - "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1210,14 +1287,15 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", - "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz", + "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1227,12 +1305,13 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", - "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -1243,12 +1322,13 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", - "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", + "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1258,12 +1338,13 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", - "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1274,12 +1355,13 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", - "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1289,13 +1371,14 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", - "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1305,14 +1388,15 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", - "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz", + "integrity": "sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1322,15 +1406,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", - "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz", + "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1340,13 +1425,14 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", - "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1356,13 +1442,14 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1372,12 +1459,13 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", - "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1387,12 +1475,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", - "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -1403,12 +1492,13 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", - "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -1419,15 +1509,16 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz", - "integrity": "sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.1" + "@babel/plugin-transform-parameters": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1437,13 +1528,14 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", - "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-replace-supers": "^7.24.1" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1453,12 +1545,13 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", - "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -1469,13 +1562,14 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz", - "integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz", + "integrity": "sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -1486,12 +1580,13 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz", - "integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1501,13 +1596,14 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", - "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", + "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1517,14 +1613,15 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz", - "integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1535,12 +1632,13 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", - "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1550,12 +1648,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", - "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1566,12 +1665,13 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", - "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1581,13 +1681,14 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz", - "integrity": "sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz", + "integrity": "sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.3", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "babel-plugin-polyfill-corejs2": "^0.4.10", "babel-plugin-polyfill-corejs3": "^0.10.1", "babel-plugin-polyfill-regenerator": "^0.6.1", @@ -1601,12 +1702,13 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", - "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1616,13 +1718,14 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", - "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1632,12 +1735,13 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", - "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1647,12 +1751,13 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", - "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1662,12 +1767,13 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz", - "integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz", + "integrity": "sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1677,12 +1783,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", - "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1692,13 +1799,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", - "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1708,13 +1816,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", - "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1724,13 +1833,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", - "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", + "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1740,27 +1850,28 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.4.tgz", - "integrity": "sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.24.4", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.4", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.7.tgz", + "integrity": "sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.24.1", - "@babel/plugin-syntax-import-attributes": "^7.24.1", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -1772,54 +1883,54 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.24.1", - "@babel/plugin-transform-async-generator-functions": "^7.24.3", - "@babel/plugin-transform-async-to-generator": "^7.24.1", - "@babel/plugin-transform-block-scoped-functions": "^7.24.1", - "@babel/plugin-transform-block-scoping": "^7.24.4", - "@babel/plugin-transform-class-properties": "^7.24.1", - "@babel/plugin-transform-class-static-block": "^7.24.4", - "@babel/plugin-transform-classes": "^7.24.1", - "@babel/plugin-transform-computed-properties": "^7.24.1", - "@babel/plugin-transform-destructuring": "^7.24.1", - "@babel/plugin-transform-dotall-regex": "^7.24.1", - "@babel/plugin-transform-duplicate-keys": "^7.24.1", - "@babel/plugin-transform-dynamic-import": "^7.24.1", - "@babel/plugin-transform-exponentiation-operator": "^7.24.1", - "@babel/plugin-transform-export-namespace-from": "^7.24.1", - "@babel/plugin-transform-for-of": "^7.24.1", - "@babel/plugin-transform-function-name": "^7.24.1", - "@babel/plugin-transform-json-strings": "^7.24.1", - "@babel/plugin-transform-literals": "^7.24.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", - "@babel/plugin-transform-member-expression-literals": "^7.24.1", - "@babel/plugin-transform-modules-amd": "^7.24.1", - "@babel/plugin-transform-modules-commonjs": "^7.24.1", - "@babel/plugin-transform-modules-systemjs": "^7.24.1", - "@babel/plugin-transform-modules-umd": "^7.24.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.24.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", - "@babel/plugin-transform-numeric-separator": "^7.24.1", - "@babel/plugin-transform-object-rest-spread": "^7.24.1", - "@babel/plugin-transform-object-super": "^7.24.1", - "@babel/plugin-transform-optional-catch-binding": "^7.24.1", - "@babel/plugin-transform-optional-chaining": "^7.24.1", - "@babel/plugin-transform-parameters": "^7.24.1", - "@babel/plugin-transform-private-methods": "^7.24.1", - "@babel/plugin-transform-private-property-in-object": "^7.24.1", - "@babel/plugin-transform-property-literals": "^7.24.1", - "@babel/plugin-transform-regenerator": "^7.24.1", - "@babel/plugin-transform-reserved-words": "^7.24.1", - "@babel/plugin-transform-shorthand-properties": "^7.24.1", - "@babel/plugin-transform-spread": "^7.24.1", - "@babel/plugin-transform-sticky-regex": "^7.24.1", - "@babel/plugin-transform-template-literals": "^7.24.1", - "@babel/plugin-transform-typeof-symbol": "^7.24.1", - "@babel/plugin-transform-unicode-escapes": "^7.24.1", - "@babel/plugin-transform-unicode-property-regex": "^7.24.1", - "@babel/plugin-transform-unicode-regex": "^7.24.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.24.1", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.24.7", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.24.7", + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.24.7", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.7", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.24.7", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.24.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-modules-systemjs": "^7.24.7", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.7", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", "babel-plugin-polyfill-corejs3": "^0.10.4", @@ -1839,6 +1950,7 @@ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -1852,12 +1964,14 @@ "version": "0.8.0", "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@babel/runtime": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz", - "integrity": "sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", + "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", + "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1866,33 +1980,35 @@ } }, "node_modules/@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", - "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.24.1", - "@babel/generator": "^7.24.1", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.1", - "@babel/types": "^7.24.0", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1901,13 +2017,14 @@ } }, "node_modules/@babel/types": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", - "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1918,16 +2035,18 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", - "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" @@ -1937,13 +2056,14 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", - "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -1953,13 +2073,14 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", - "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -1969,13 +2090,14 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", - "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -1985,13 +2107,14 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", - "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -2001,13 +2124,14 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", - "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -2017,13 +2141,14 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", - "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -2033,13 +2158,14 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", - "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -2049,13 +2175,14 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", - "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2065,13 +2192,14 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", - "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2081,13 +2209,14 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", - "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2097,13 +2226,14 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", - "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2113,13 +2243,14 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", - "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", "cpu": [ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2129,13 +2260,14 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", - "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2145,13 +2277,14 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", - "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2161,13 +2294,14 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", - "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2177,13 +2311,14 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", - "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2193,13 +2328,14 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", - "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -2209,13 +2345,14 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", - "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -2225,13 +2362,14 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", - "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -2241,13 +2379,14 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", - "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -2257,13 +2396,14 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", - "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -2273,13 +2413,14 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", - "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -2293,6 +2434,7 @@ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.3.0" }, @@ -2308,6 +2450,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -2316,10 +2459,11 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", + "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } @@ -2329,6 +2473,7 @@ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -2352,6 +2497,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -2367,6 +2513,7 @@ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -2375,7 +2522,9 @@ "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^2.0.2", "debug": "^4.3.1", @@ -2390,6 +2539,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -2402,12 +2552,15 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "dev": true + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@intlify/core": { "version": "9.13.1", "resolved": "https://registry.npmjs.org/@intlify/core/-/core-9.13.1.tgz", "integrity": "sha512-R+l9DRqzfK0yT9UgaCq3sl24NJAP4f/djAu4z9zLknAUBEal2q/tXFV+oGzcGpvi3uXWNvF9Gctj+IsuPwJjoA==", + "license": "MIT", "dependencies": { "@intlify/core-base": "9.13.1", "@intlify/shared": "9.13.1" @@ -2423,6 +2576,7 @@ "version": "9.13.1", "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.13.1.tgz", "integrity": "sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==", + "license": "MIT", "dependencies": { "@intlify/message-compiler": "9.13.1", "@intlify/shared": "9.13.1" @@ -2438,6 +2592,7 @@ "version": "9.13.1", "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.13.1.tgz", "integrity": "sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==", + "license": "MIT", "dependencies": { "@intlify/shared": "9.13.1", "source-map-js": "^1.0.2" @@ -2453,6 +2608,7 @@ "version": "9.13.1", "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.13.1.tgz", "integrity": "sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ==", + "license": "MIT", "engines": { "node": ">= 16" }, @@ -2465,6 +2621,7 @@ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -2482,6 +2639,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2494,6 +2652,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2505,13 +2664,15 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -2529,6 +2690,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -2544,6 +2706,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -2561,6 +2724,7 @@ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2570,6 +2734,7 @@ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, + "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" }, @@ -2582,6 +2747,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -2596,6 +2762,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -2605,6 +2772,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -2613,13 +2781,15 @@ "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -2628,13 +2798,15 @@ "node_modules/@mdi/font": { "version": "7.4.47", "resolved": "https://registry.npmjs.org/@mdi/font/-/font-7.4.47.tgz", - "integrity": "sha512-43MtGpd585SNzHZPcYowu/84Vz2a2g31TvPMTm9uTiCSWzaheQySUcSyUH/46fPnuPQWof2yd0pGBtzee/IQWw==" + "integrity": "sha512-43MtGpd585SNzHZPcYowu/84Vz2a2g31TvPMTm9uTiCSWzaheQySUcSyUH/46fPnuPQWof2yd0pGBtzee/IQWw==", + "license": "Apache-2.0" }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", "dev": true, + "license": "MIT", "dependencies": { "eslint-scope": "5.1.1" } @@ -2644,6 +2816,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -2657,6 +2830,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -2666,6 +2840,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -2678,13 +2853,15 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=14" @@ -2695,6 +2872,7 @@ "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, @@ -2706,6 +2884,7 @@ "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -2715,6 +2894,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/@react-pdf/fns/-/fns-2.2.1.tgz", "integrity": "sha512-s78aDg0vDYaijU5lLOCsUD+qinQbfOvcNeaoX9AiE7+kZzzCo6B/nX+l48cmt9OosJmvZvE9DWR9cLhrhOi2pA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.13" } @@ -2723,6 +2903,7 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/@react-pdf/font/-/font-2.5.1.tgz", "integrity": "sha512-Hyb2zBb92Glc3lvhmJfy4dO2Mj29KB26Uk12Ua9EhKAdiuCTLBqgP8Oe1cGwrvDI7xA4OOcwvBMdYh0vhOUHzA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.13", "@react-pdf/types": "^2.5.0", @@ -2735,6 +2916,7 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/@react-pdf/image/-/image-2.3.6.tgz", "integrity": "sha512-7iZDYZrZlJqNzS6huNl2XdMcLFUo68e6mOdzQeJ63d5eApdthhSHBnkGzHfLhH5t8DCpZNtClmklzuLL63ADfw==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.13", "@react-pdf/png-js": "^2.3.1", @@ -2746,6 +2928,7 @@ "version": "3.12.1", "resolved": "https://registry.npmjs.org/@react-pdf/layout/-/layout-3.12.1.tgz", "integrity": "sha512-BxSeykDxvADlpe4OGtQ7NH46QXq3uImAYsTHOPLCwbXMniQ1O3uCBx7H+HthxkCNshgYVPp9qS3KyvQv/oIZwg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.13", "@react-pdf/fns": "2.2.1", @@ -2765,6 +2948,7 @@ "version": "3.1.10", "resolved": "https://registry.npmjs.org/@react-pdf/pdfkit/-/pdfkit-3.1.10.tgz", "integrity": "sha512-P/qPBtCFo2HDJD0i6NfbmoBRrsOVO8CIogYsefwG4fklTo50zNgnMM5U1WLckTuX8Qt1ThiQuokmTG5arheblA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.13", "@react-pdf/png-js": "^2.3.1", @@ -2779,6 +2963,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/@react-pdf/png-js/-/png-js-2.3.1.tgz", "integrity": "sha512-pEZ18I4t1vAUS4lmhvXPmXYP4PHeblpWP/pAlMMRkEyP7tdAeHUN7taQl9sf9OPq7YITMY3lWpYpJU6t4CZgZg==", + "license": "MIT", "dependencies": { "browserify-zlib": "^0.2.0" } @@ -2786,12 +2971,14 @@ "node_modules/@react-pdf/primitives": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@react-pdf/primitives/-/primitives-3.1.1.tgz", - "integrity": "sha512-miwjxLwTnO3IjoqkTVeTI+9CdyDggwekmSLhVCw+a/7FoQc+gF3J2dSKwsHvAcVFM0gvU8mzCeTofgw0zPDq0w==" + "integrity": "sha512-miwjxLwTnO3IjoqkTVeTI+9CdyDggwekmSLhVCw+a/7FoQc+gF3J2dSKwsHvAcVFM0gvU8mzCeTofgw0zPDq0w==", + "license": "MIT" }, "node_modules/@react-pdf/render": { "version": "3.4.4", "resolved": "https://registry.npmjs.org/@react-pdf/render/-/render-3.4.4.tgz", "integrity": "sha512-CfGxWmVgrY3JgmB1iMnz2W6Ck+8pisZeFt8vGlxP+JfT+0onr208pQvGSV5KwA9LGhAdABxqc/+y17V3vtKdFA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.13", "@react-pdf/fns": "2.2.1", @@ -2809,6 +2996,7 @@ "version": "4.2.5", "resolved": "https://registry.npmjs.org/@react-pdf/stylesheet/-/stylesheet-4.2.5.tgz", "integrity": "sha512-XnmapeCW+hDuNdVwpuvO04WKv71wAs8aH+saIq29Bo2fp1SxznHTcQArTZtK6Wgr/E9BHXeB2iAPpUZuI6G+xA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.13", "@react-pdf/fns": "2.2.1", @@ -2823,6 +3011,7 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/@react-pdf/textkit/-/textkit-4.4.1.tgz", "integrity": "sha512-Jl9wdTqIvJ5pX+vAGz0EOhP7ut5Two9H6CzTKo/YYPeD79cM2yTXF3JzTERBC28y7LR0Waq9D2LHQjI+b/EYUQ==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.13", "@react-pdf/fns": "2.2.1", @@ -2834,18 +3023,21 @@ "node_modules/@react-pdf/types": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@react-pdf/types/-/types-2.5.0.tgz", - "integrity": "sha512-XsVRkt0hQ60I4e3leAVt+aZR3KJCaJd179BfJHAv4F4x6Vq3yqkry8lcbUWKGKDw1j3/8sW4FsgGR41SFvsG9A==" + "integrity": "sha512-XsVRkt0hQ60I4e3leAVt+aZR3KJCaJd179BfJHAv4F4x6Vq3yqkry8lcbUWKGKDw1j3/8sW4FsgGR41SFvsG9A==", + "license": "MIT" }, "node_modules/@remirror/core-constants": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-2.0.2.tgz", - "integrity": "sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==" + "integrity": "sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==", + "license": "MIT" }, "node_modules/@rollup/pluginutils": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", @@ -2864,288 +3056,324 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.16.4.tgz", - "integrity": "sha512-GkhjAaQ8oUTOKE4g4gsZ0u8K/IHU1+2WQSgS1TwTcYvL+sjbaQjNHFXbOJ6kgqGHIO1DfUhI/Sphi9GkRT9K+Q==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", + "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.16.4.tgz", - "integrity": "sha512-Bvm6D+NPbGMQOcxvS1zUl8H7DWlywSXsphAeOnVeiZLQ+0J6Is8T7SrjGTH29KtYkiY9vld8ZnpV3G2EPbom+w==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", + "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.16.4.tgz", - "integrity": "sha512-i5d64MlnYBO9EkCOGe5vPR/EeDwjnKOGGdd7zKFhU5y8haKhQZTN2DgVtpODDMxUr4t2K90wTUJg7ilgND6bXw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", + "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.16.4.tgz", - "integrity": "sha512-WZupV1+CdUYehaZqjaFTClJI72fjJEgTXdf4NbW69I9XyvdmztUExBtcI2yIIU6hJtYvtwS6pkTkHJz+k08mAQ==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", + "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.16.4.tgz", - "integrity": "sha512-ADm/xt86JUnmAfA9mBqFcRp//RVRt1ohGOYF6yL+IFCYqOBNwy5lbEK05xTsEoJq+/tJzg8ICUtS82WinJRuIw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", + "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.16.4.tgz", - "integrity": "sha512-tJfJaXPiFAG+Jn3cutp7mCs1ePltuAgRqdDZrzb1aeE3TktWWJ+g7xK9SNlaSUFw6IU4QgOxAY4rA+wZUT5Wfg==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", + "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.16.4.tgz", - "integrity": "sha512-7dy1BzQkgYlUTapDTvK997cgi0Orh5Iu7JlZVBy1MBURk7/HSbHkzRnXZa19ozy+wwD8/SlpJnOOckuNZtJR9w==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", + "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.16.4.tgz", - "integrity": "sha512-zsFwdUw5XLD1gQe0aoU2HVceI6NEW7q7m05wA46eUAyrkeNYExObfRFQcvA6zw8lfRc5BHtan3tBpo+kqEOxmg==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", + "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.16.4.tgz", - "integrity": "sha512-p8C3NnxXooRdNrdv6dBmRTddEapfESEUflpICDNKXpHvTjRRq1J82CbU5G3XfebIZyI3B0s074JHMWD36qOW6w==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", + "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.16.4.tgz", - "integrity": "sha512-Lh/8ckoar4s4Id2foY7jNgitTOUQczwMWNYi+Mjt0eQ9LKhr6sK477REqQkmy8YHY3Ca3A2JJVdXnfb3Rrwkng==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", + "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.16.4.tgz", - "integrity": "sha512-1xwwn9ZCQYuqGmulGsTZoKrrn0z2fAur2ujE60QgyDpHmBbXbxLaQiEvzJWDrscRq43c8DnuHx3QorhMTZgisQ==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", + "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.16.4.tgz", - "integrity": "sha512-LuOGGKAJ7dfRtxVnO1i3qWc6N9sh0Em/8aZ3CezixSTM+E9Oq3OvTsvC4sm6wWjzpsIlOCnZjdluINKESflJLA==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", + "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.16.4.tgz", - "integrity": "sha512-ch86i7KkJKkLybDP2AtySFTRi5fM3KXp0PnHocHuJMdZwu7BuyIKi35BE9guMlmTpwwBTB3ljHj9IQXnTCD0vA==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", + "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.16.4.tgz", - "integrity": "sha512-Ma4PwyLfOWZWayfEsNQzTDBVW8PZ6TUUN1uFTBQbF2Chv/+sjenE86lpiEwj2FiviSmSZ4Ap4MaAfl1ciF4aSA==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", + "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.16.4.tgz", - "integrity": "sha512-9m/ZDrQsdo/c06uOlP3W9G2ENRVzgzbSXmXHT4hwVaDQhYcRpi9bgBT0FTG9OhESxwK0WjQxYOSfv40cU+T69w==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", + "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.16.4.tgz", - "integrity": "sha512-YunpoOAyGLDseanENHmbFvQSfVL5BxW3k7hhy0eN4rb3gS/ct75dVD0EXOWIqFT/nE8XYW6LP6vz6ctKRi0k9A==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", + "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, + "node_modules/@sentry-internal/browser-utils": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.12.0.tgz", + "integrity": "sha512-h7HRqED15Qa+DRt8iZGna24Z331nglgjPzdFn4+u+jvnZrehUjH0vjsfuj7qhwSUNZu8Rxi1ZlUYFURjLDTKCA==", + "license": "MIT", + "dependencies": { + "@sentry/core": "8.12.0", + "@sentry/types": "8.12.0", + "@sentry/utils": "8.12.0" + }, + "engines": { + "node": ">=14.18" + } + }, "node_modules/@sentry-internal/feedback": { - "version": "7.112.2", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.112.2.tgz", - "integrity": "sha512-z+XP8BwB8B3pa+i8xqbrPsbtDWUFUS6wo+FJbmOYUqOusJJbVFDAhBoEdKoo5ZjOcsAZG7XR6cA9zrhJynIWBA==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.12.0.tgz", + "integrity": "sha512-PvQ14wVOPmzRdYdmXD791CqERZZC4jZa5hnyBKBuF6ZpifIQ4Uk7spPu6ZO+Ympx3GtRlpYjk4dbjHyNSfYTwA==", + "license": "MIT", "dependencies": { - "@sentry/core": "7.112.2", - "@sentry/types": "7.112.2", - "@sentry/utils": "7.112.2" + "@sentry/core": "8.12.0", + "@sentry/types": "8.12.0", + "@sentry/utils": "8.12.0" }, "engines": { - "node": ">=12" + "node": ">=14.18" } }, - "node_modules/@sentry-internal/replay-canvas": { - "version": "7.112.2", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.112.2.tgz", - "integrity": "sha512-BCCCxrZ1wJvN6La5gg1JJbKitAhJI5MATCnhtklsZbUcHkHB9iZoj19J65+P56gwssvHz5xh63AjNiITaetIRg==", + "node_modules/@sentry-internal/replay": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.12.0.tgz", + "integrity": "sha512-TJceMtzRnY3SCvt3nFDu9rlT00Le7SaV2RL3D7SyDuijvJbWvIw3DRk7yutpF8c9YKO9j6FMa4NlkCJ+YAnnKQ==", + "license": "MIT", "dependencies": { - "@sentry/core": "7.112.2", - "@sentry/replay": "7.112.2", - "@sentry/types": "7.112.2", - "@sentry/utils": "7.112.2" + "@sentry-internal/browser-utils": "8.12.0", + "@sentry/core": "8.12.0", + "@sentry/types": "8.12.0", + "@sentry/utils": "8.12.0" }, "engines": { - "node": ">=12" + "node": ">=14.18" } }, - "node_modules/@sentry-internal/tracing": { - "version": "7.112.2", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.112.2.tgz", - "integrity": "sha512-fT1Y46J4lfXZkgFkb03YMNeIEs2xS6jdKMoukMFQfRfVvL9fSWEbTgZpHPd/YTT8r2i082XzjtAoQNgklm/0Hw==", + "node_modules/@sentry-internal/replay-canvas": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.12.0.tgz", + "integrity": "sha512-0slfHZ3TD3MKeBu5NEGuKuecxStX23gts5L3mGFJd/zwsd04A31fhVmo6agIkxnZbOU4GPX/7HPWIeevkvy3ig==", + "license": "MIT", "dependencies": { - "@sentry/core": "7.112.2", - "@sentry/types": "7.112.2", - "@sentry/utils": "7.112.2" + "@sentry-internal/replay": "8.12.0", + "@sentry/core": "8.12.0", + "@sentry/types": "8.12.0", + "@sentry/utils": "8.12.0" }, "engines": { - "node": ">=8" + "node": ">=14.18" } }, "node_modules/@sentry/babel-plugin-component-annotate": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.16.1.tgz", - "integrity": "sha512-pJka66URsqQbk6hTs9H1XFpUeI0xxuqLYf9Dy5pRGNHSJMtfv91U+CaYSWt03aRRMGDXMduh62zAAY7Wf0HO+A==", + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.20.1.tgz", + "integrity": "sha512-4mhEwYTK00bIb5Y9UWIELVUfru587Vaeg0DQGswv4aIRHIiMKLyNqCEejaaybQ/fNChIZOKmvyqXk430YVd7Qg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14" } }, "node_modules/@sentry/browser": { - "version": "7.112.2", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.112.2.tgz", - "integrity": "sha512-wULwavCch84+d0bueAdFm6CDm1u0TfOjN91VgY+sj/vxUV2vesvDgI8zRZfmbZEor3MYA90zerkZT3ehZQKbYw==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.12.0.tgz", + "integrity": "sha512-H82dmr7KQWoS2DQc5dJko5wNepltcEro1EM4mBeL2YmVbNRtoZzD3HQTpbxJJuFsTvEMZevvez5HFlpUgxmIwQ==", + "license": "MIT", "dependencies": { - "@sentry-internal/feedback": "7.112.2", - "@sentry-internal/replay-canvas": "7.112.2", - "@sentry-internal/tracing": "7.112.2", - "@sentry/core": "7.112.2", - "@sentry/integrations": "7.112.2", - "@sentry/replay": "7.112.2", - "@sentry/types": "7.112.2", - "@sentry/utils": "7.112.2" + "@sentry-internal/browser-utils": "8.12.0", + "@sentry-internal/feedback": "8.12.0", + "@sentry-internal/replay": "8.12.0", + "@sentry-internal/replay-canvas": "8.12.0", + "@sentry/core": "8.12.0", + "@sentry/types": "8.12.0", + "@sentry/utils": "8.12.0" }, "engines": { - "node": ">=8" + "node": ">=14.18" } }, "node_modules/@sentry/bundler-plugin-core": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.16.1.tgz", - "integrity": "sha512-n6z8Ts3T9HROLuY7tVEYpBKvS+P7+b8NdqxP7QBcwp2nuPUlN5Ola1ivFjk1p5a7wRYeN9zM8orGe4l2HeNfYA==", + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.20.1.tgz", + "integrity": "sha512-6ipbmGzHekxeRCbp7eoefr6bdd/lW4cNA9eNnrmd9+PicubweGaZZbH2NjhFHsaxzgOezwipDHjrTaap2kTHgw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.16.1", + "@sentry/babel-plugin-component-annotate": "2.20.1", "@sentry/cli": "^2.22.3", "dotenv": "^16.3.1", "find-up": "^5.0.0", @@ -3158,11 +3386,12 @@ } }, "node_modules/@sentry/cli": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.31.0.tgz", - "integrity": "sha512-nCESoXAG3kRUO5n3QbDYAqX6RU3z1ORjnd7a3sqijYsCGHfOpcjGdS7JYLVg5if+tXMEF5529BPXFe5Kg/J9tw==", + "version": "2.32.1", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.32.1.tgz", + "integrity": "sha512-MWkbkzZfnlE7s2pPbg4VozRSAeMlIObfZlTIou9ye6XnPt6ZmmxCLOuOgSKMv4sXg6aeqKNzMNiadThxCWyvPg==", "dev": true, "hasInstallScript": true, + "license": "BSD-3-Clause", "dependencies": { "https-proxy-agent": "^5.0.0", "node-fetch": "^2.6.7", @@ -3177,20 +3406,21 @@ "node": ">= 10" }, "optionalDependencies": { - "@sentry/cli-darwin": "2.31.0", - "@sentry/cli-linux-arm": "2.31.0", - "@sentry/cli-linux-arm64": "2.31.0", - "@sentry/cli-linux-i686": "2.31.0", - "@sentry/cli-linux-x64": "2.31.0", - "@sentry/cli-win32-i686": "2.31.0", - "@sentry/cli-win32-x64": "2.31.0" + "@sentry/cli-darwin": "2.32.1", + "@sentry/cli-linux-arm": "2.32.1", + "@sentry/cli-linux-arm64": "2.32.1", + "@sentry/cli-linux-i686": "2.32.1", + "@sentry/cli-linux-x64": "2.32.1", + "@sentry/cli-win32-i686": "2.32.1", + "@sentry/cli-win32-x64": "2.32.1" } }, "node_modules/@sentry/cli-darwin": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.31.0.tgz", - "integrity": "sha512-VM5liyxMnm4K2g0WsrRPXRCMLhaT09C7gK5Fz/CxKYh9sbMZB7KA4hV/3klkyuyw1+ECF1J66cefhNkFZepUig==", + "version": "2.32.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.32.1.tgz", + "integrity": "sha512-z/lEwANTYPCzbWTZ2+eeeNYxRLllC8knd0h+vtAKlhmGw/fyc/N39cznIFyFu+dLJ6tTdjOWOeikHtKuS/7onw==", "dev": true, + "license": "BSD-3-Clause", "optional": true, "os": [ "darwin" @@ -3200,13 +3430,14 @@ } }, "node_modules/@sentry/cli-linux-arm": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.31.0.tgz", - "integrity": "sha512-AZoCN3waXEfXGCd3YSrikcX/y63oQe0Tiyapkeoifq/0QhI+2MOOrAQb60gthsXwb0UDK/XeFi3PaxyUCphzxA==", + "version": "2.32.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.32.1.tgz", + "integrity": "sha512-m0lHkn+o4YKBq8KptGZvpT64FAwSl9mYvHZO9/ChnEGIJ/WyJwiN1X1r9JHVaW4iT5lD0Y5FAyq3JLkk0m0XHg==", "cpu": [ "arm" ], "dev": true, + "license": "BSD-3-Clause", "optional": true, "os": [ "linux", @@ -3217,13 +3448,14 @@ } }, "node_modules/@sentry/cli-linux-arm64": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.31.0.tgz", - "integrity": "sha512-eENJTmXoFX3uNr8xRW7Bua2Sw3V1tylQfdtS85pNjZPdbm3U8wYQSWu2VoZkK2ASOoC+17YC8jTQxq62KWnSeQ==", + "version": "2.32.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.32.1.tgz", + "integrity": "sha512-hsGqHYuecUl1Yhq4MhiRejfh1gNlmhyNPcQEoO/DDRBnGnJyEAdiDpKXJcc2e/lT9k40B55Ob2CP1SeY040T2w==", "cpu": [ "arm64" ], "dev": true, + "license": "BSD-3-Clause", "optional": true, "os": [ "linux", @@ -3234,14 +3466,15 @@ } }, "node_modules/@sentry/cli-linux-i686": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.31.0.tgz", - "integrity": "sha512-cQUFb3brhLaNSIoNzjU/YASnTM1I3TDJP9XXzH0eLK9sSopCcDcc6OrYEYvdjJXZKzFv5sbc9UNMsIDbh4+rYg==", + "version": "2.32.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.32.1.tgz", + "integrity": "sha512-SuMLN1/ceFd3Q/B0DVyh5igjetTAF423txiABAHASenEev0lG0vZkRDXFclfgDtDUKRPmOXW7VDMirM3yZWQHQ==", "cpu": [ "x86", "ia32" ], "dev": true, + "license": "BSD-3-Clause", "optional": true, "os": [ "linux", @@ -3252,13 +3485,14 @@ } }, "node_modules/@sentry/cli-linux-x64": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.31.0.tgz", - "integrity": "sha512-z1zTNg91nZJRdcGHC/bCU1KwIaifV0MLJteip9KrFDprzhJk1HtMxFOS0+OZ5/UH21CjAFmg9Pj6IAGqm3BYjA==", + "version": "2.32.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.32.1.tgz", + "integrity": "sha512-x4FGd6xgvFddz8V/dh6jii4wy9qjWyvYLBTz8Fhi9rIP+b8wQ3oxwHIdzntareetZP7C1ggx+hZheiYocNYVwA==", "cpu": [ "x64" ], "dev": true, + "license": "BSD-3-Clause", "optional": true, "os": [ "linux", @@ -3269,14 +3503,15 @@ } }, "node_modules/@sentry/cli-win32-i686": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.31.0.tgz", - "integrity": "sha512-+K7fdk57aUd4CmYrQfDGYPzVyxsTnVro6IPb5QSSLpP03dL7ko5208epu4m2SyN/MkFvscy9Di3n3DTvIfDU2w==", + "version": "2.32.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.32.1.tgz", + "integrity": "sha512-i6aZma9mFzR+hqMY5VliQZEX6ypP/zUjPK0VtIMYWs5cC6PsQLRmuoeJmy3Z7d4nlh0CdK5NPC813Ej6RY6/vg==", "cpu": [ "x86", "ia32" ], "dev": true, + "license": "BSD-3-Clause", "optional": true, "os": [ "win32" @@ -3286,13 +3521,14 @@ } }, "node_modules/@sentry/cli-win32-x64": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.31.0.tgz", - "integrity": "sha512-w5cvpZ6VVlhlyleY8TYHmrP7g48vKHnoVt5xFccfxT+HqQI/AxodvzgVvBTM2kB/sh/kHwexp6bJGWCdkGftww==", + "version": "2.32.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.32.1.tgz", + "integrity": "sha512-B58w/lRHLb4MUSjJNfMMw2cQykfimDCMLMmeK+1EiT2RmSeNQliwhhBxYcKk82a8kszH6zg3wT2vCea7LyPUyA==", "cpu": [ "x64" ], "dev": true, + "license": "BSD-3-Clause", "optional": true, "os": [ "win32" @@ -3302,71 +3538,47 @@ } }, "node_modules/@sentry/core": { - "version": "7.112.2", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.112.2.tgz", - "integrity": "sha512-gHPCcJobbMkk0VR18J65WYQTt3ED4qC6X9lHKp27Ddt63E+MDGkG6lvYBU1LS8cV7CdyBGC1XXDCfor61GvLsA==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.12.0.tgz", + "integrity": "sha512-y+5Hlf/E45nj2adJy4aUCNBefQbyWIX66Z9bOM6JjnVB0hxCm5H0sYqrFKldYqaeZx6/Q2cgAcGs61krUxNerQ==", + "license": "MIT", "dependencies": { - "@sentry/types": "7.112.2", - "@sentry/utils": "7.112.2" + "@sentry/types": "8.12.0", + "@sentry/utils": "8.12.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/@sentry/integrations": { - "version": "7.112.2", - "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.112.2.tgz", - "integrity": "sha512-ioC2yyU6DqtLkdmWnm87oNvdn2+9oKctJeA4t+jkS6JaJ10DcezjCwiLscX4rhB9aWJV3IWF7Op0O6K3w0t2Hg==", - "dependencies": { - "@sentry/core": "7.112.2", - "@sentry/types": "7.112.2", - "@sentry/utils": "7.112.2", - "localforage": "^1.8.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sentry/replay": { - "version": "7.112.2", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.112.2.tgz", - "integrity": "sha512-7Ns/8D54WPsht1nlVj93Inf6rXyve2AZoibYN0YfcM2w3lI4NO51gPPHJU0lFEfMwzwK4ZBJWzOeW9098a+uEg==", - "dependencies": { - "@sentry-internal/tracing": "7.112.2", - "@sentry/core": "7.112.2", - "@sentry/types": "7.112.2", - "@sentry/utils": "7.112.2" - }, - "engines": { - "node": ">=12" + "node": ">=14.18" } }, "node_modules/@sentry/types": { - "version": "7.112.2", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.112.2.tgz", - "integrity": "sha512-kCMLt7yhY5OkWE9MeowlTNmox9pqDxcpvqguMo4BDNZM5+v9SEb1AauAdR78E1a1V8TyCzjBD7JDfXWhvpYBcQ==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.12.0.tgz", + "integrity": "sha512-pKuW64IjgcklWAOHzPJ02Ej480hyL25TLnYCAfl2TDMrYc+N0bbbH1N7ZxqJpTSVK9IxZPY/t2TRxpQBiyPEcg==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=14.18" } }, "node_modules/@sentry/utils": { - "version": "7.112.2", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.112.2.tgz", - "integrity": "sha512-OjLh0hx0t1EcL4ZIjf+4svlmmP+tHUDGcr5qpFWH78tjmkPW4+cqPuZCZfHSuWcDdeiaXi8TnYoVRqDcJKK/eQ==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.12.0.tgz", + "integrity": "sha512-pwYMoOmexz3vsNSOJGPvD2qwp/fsPcr8mkFk67wMM37Y+30KQ8pF4Aq1cc+HBRIn1tKmenzFDPTczSdVPFxm3Q==", + "license": "MIT", "dependencies": { - "@sentry/types": "7.112.2" + "@sentry/types": "8.12.0" }, "engines": { - "node": ">=8" + "node": ">=14.18" } }, "node_modules/@sentry/vite-plugin": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/@sentry/vite-plugin/-/vite-plugin-2.16.1.tgz", - "integrity": "sha512-RSIyeqFG3PR5iJsZnagQxzOhM22z1Kh9DG+HQQsfVrxokzrWKRu/G17O2MIDh2I5iYEaL0Fkd/9RAXE4/b0aVg==", + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/@sentry/vite-plugin/-/vite-plugin-2.20.1.tgz", + "integrity": "sha512-IOYAJRcV+Uqn0EL8rxcoCvE77PbtGzKjP+B6iIgDZ229AWbpfbpWY8zHCcufwdDzb5PtgOhWWHT74iAsNyij/A==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry/bundler-plugin-core": "2.16.1", + "@sentry/bundler-plugin-core": "2.20.1", "unplugin": "1.0.1" }, "engines": { @@ -3374,17 +3586,18 @@ } }, "node_modules/@sentry/vue": { - "version": "7.112.2", - "resolved": "https://registry.npmjs.org/@sentry/vue/-/vue-7.112.2.tgz", - "integrity": "sha512-CHfirgFV0kBQ5jnObOccDOkv0BQx4UmIH+ClDDvBiJRii6+OmyYyzgpPE8wYBfrrBWFSyd8VaPJ9j7NNH6N57A==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/@sentry/vue/-/vue-8.12.0.tgz", + "integrity": "sha512-8E8Zp32HwvTUe4bC+RnwVpmQAStS8UMr8SU2efIg+pmX3rrZ95rDf7SrvPQfpR5tOJ+pUKwxHeh0v73V8qp16g==", + "license": "MIT", "dependencies": { - "@sentry/browser": "7.112.2", - "@sentry/core": "7.112.2", - "@sentry/types": "7.112.2", - "@sentry/utils": "7.112.2" + "@sentry/browser": "8.12.0", + "@sentry/core": "8.12.0", + "@sentry/types": "8.12.0", + "@sentry/utils": "8.12.0" }, "engines": { - "node": ">=8" + "node": ">=14.18" }, "peerDependencies": { "vue": "2.x || 3.x" @@ -3394,22 +3607,25 @@ "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@swc/helpers": { "version": "0.4.36", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.36.tgz", "integrity": "sha512-5lxnyLEYFskErRPenYItLRSge5DjrJngYKdVjRSrWfza9G6KkgHEXi0vUZiyUeMU5JfXH1YnvXZzSp8ul88o2Q==", + "license": "Apache-2.0", "dependencies": { "legacy-swc-helpers": "npm:@swc/helpers@=0.4.14", "tslib": "^2.4.0" } }, "node_modules/@testing-library/dom": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.0.0.tgz", - "integrity": "sha512-PmJPnogldqoVFf+EwbHvbBJ98MmqASV8kLrBYgsDNxQcFMeIS7JFL48sfyXvuMtgmWO/wMhh25odr+8VhDmn4g==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.1.0.tgz", + "integrity": "sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@babel/code-frame": "^7.10.4", @@ -3430,6 +3646,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "color-convert": "^2.0.1" @@ -3446,6 +3663,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -3463,6 +3681,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "color-name": "~1.1.4" @@ -3476,6 +3695,7 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/@testing-library/dom/node_modules/has-flag": { @@ -3483,6 +3703,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -3493,6 +3714,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -3502,18 +3724,19 @@ } }, "node_modules/@testing-library/jest-dom": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.2.tgz", - "integrity": "sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==", + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.6.tgz", + "integrity": "sha512-8qpnGVincVDLEcQXWaHOf6zmlbwTKc6Us6PPu4CRnPXCzo2OGBS5cwgMMOWdxDpEz1mkbvXHpEy99M5Yvt682w==", "dev": true, + "license": "MIT", "dependencies": { - "@adobe/css-tools": "^4.3.2", + "@adobe/css-tools": "^4.4.0", "@babel/runtime": "^7.9.2", "aria-query": "^5.0.0", "chalk": "^3.0.0", "css.escape": "^1.5.1", "dom-accessibility-api": "^0.6.3", - "lodash": "^4.17.15", + "lodash": "^4.17.21", "redent": "^3.0.0" }, "engines": { @@ -3551,6 +3774,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -3566,6 +3790,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3579,6 +3804,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -3590,19 +3816,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@testing-library/jest-dom/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -3612,6 +3841,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -3624,6 +3854,7 @@ "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12", "npm": ">=6" @@ -3637,6 +3868,7 @@ "resolved": "https://registry.npmjs.org/@testing-library/vue/-/vue-5.9.0.tgz", "integrity": "sha512-HWvI4s6FayFLmiqGcEMAMfTSO1SV12NukdoyllYMBobFqfO0TalQmfofMtiO+eRz+Amej8Z26dx4/WYIROzfVw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.21.0", "@testing-library/dom": "^9.0.0", @@ -3655,6 +3887,7 @@ "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.4.tgz", "integrity": "sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -3674,6 +3907,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -3689,6 +3923,7 @@ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "deep-equal": "^2.0.5" } @@ -3698,6 +3933,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3714,6 +3950,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -3725,13 +3962,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@testing-library/vue/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -3741,6 +3980,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -3749,9 +3989,10 @@ } }, "node_modules/@tiptap/core": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.3.0.tgz", - "integrity": "sha512-Gk2JN3i5CMkYGmsbyFI7cBUftWa+F7QYmeCLTWfbuy+hCM2OBsnYVKxhggFPGXRL5KLBEgBWeCeWMHfIw3B2MA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.4.0.tgz", + "integrity": "sha512-YJSahk8pkxpCs8SflCZfTnJpE7IPyUWIylfgXM2DefjRQa5DZ+c6sNY0s/zbxKYFQ6AuHVX40r9pCfcqHChGxQ==", + "license": "MIT", "peer": true, "funding": { "type": "github", @@ -3762,9 +4003,10 @@ } }, "node_modules/@tiptap/extension-bold": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.3.0.tgz", - "integrity": "sha512-SzkbJibHXFNU7TRaAebTtwbXUEhGZ8+MhlBn12aQ4QhdjNtFpQwKXQPyYeDyZGcyiOFgtFTb+WIfCGm8ZX0Fpw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.4.0.tgz", + "integrity": "sha512-csnW6hMDEHoRfxcPRLSqeJn+j35Lgtt1YRiOwn7DlS66sAECGRuoGfCvQSPij0TCDp4VCR9if5Sf8EymhnQumQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3774,9 +4016,10 @@ } }, "node_modules/@tiptap/extension-bubble-menu": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.3.0.tgz", - "integrity": "sha512-dqyfQ8idTlhapvt0fxCGvkyjw92pBEwPqmkJ01h3EE8wTh53j0ytOHyMSf1KBuzardxpd8Yya3zlrAcR0Z3DlQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.4.0.tgz", + "integrity": "sha512-s99HmttUtpW3rScWq8rqk4+CGCwergNZbHLTkF6Rp6TSboMwfp+rwL5Q/JkcAG9KGLso1vGyXKbt1xHOvm8zMw==", + "license": "MIT", "dependencies": { "tippy.js": "^6.3.7" }, @@ -3790,9 +4033,10 @@ } }, "node_modules/@tiptap/extension-bullet-list": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.3.0.tgz", - "integrity": "sha512-4nU4vJ5FjRDLqHm085vYAkuo68UK84Wl6CDSjm7sPVcu0FvQX02Okqt65azoSYQeS1SSSd5qq9YZuGWcYdp4Cw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.4.0.tgz", + "integrity": "sha512-9S5DLIvFRBoExvmZ+/ErpTvs4Wf1yOEs8WXlKYUCcZssK7brTFj99XDwpHFA29HKDwma5q9UHhr2OB2o0JYAdw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3802,9 +4046,10 @@ } }, "node_modules/@tiptap/extension-document": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.3.0.tgz", - "integrity": "sha512-WC55SMrtlsNOnHXpzbXDzJOp7eKmZV0rXooKmvCDqoiLO/DKpyQXyF+0UHfcRPmUAi2GWFPaer7+p1H9xzcjXg==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.4.0.tgz", + "integrity": "sha512-3jRodQJZDGbXlRPERaloS+IERg/VwzpC1IO6YSJR9jVIsBO6xC29P3cKTQlg1XO7p6ZH/0ksK73VC5BzzTwoHg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3814,9 +4059,10 @@ } }, "node_modules/@tiptap/extension-floating-menu": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.3.0.tgz", - "integrity": "sha512-bNY43/yU/+wGfmk2eDV7EPDAN/akbC+YnSKTA5VPJADzscvlrL2HlQrxbd/STIdlwKqdPU5MokcvCChhfZ4f6w==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.4.0.tgz", + "integrity": "sha512-vLb9v+htbHhXyty0oaXjT3VC8St4xuGSHWUB9GuAJAQ+NajIO6rBPbLUmm9qM0Eh2zico5mpSD1Qtn5FM6xYzg==", + "license": "MIT", "dependencies": { "tippy.js": "^6.3.7" }, @@ -3830,9 +4076,10 @@ } }, "node_modules/@tiptap/extension-hard-break": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.3.0.tgz", - "integrity": "sha512-9pXi69SzLabbjY5KZ54UKzu7HAHTla9aYZKH56VatOAiJOPKJppFbU2/NfJwGzDrEtfOiDqr3dYbUDF3RuCFoQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.4.0.tgz", + "integrity": "sha512-3+Z6zxevtHza5IsDBZ4lZqvNR3Kvdqwxq/QKCKu9UhJN1DUjsg/l1Jn2NilSQ3NYkBYh2yJjT8CMo9pQIu776g==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3842,9 +4089,10 @@ } }, "node_modules/@tiptap/extension-heading": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.3.0.tgz", - "integrity": "sha512-YcZoUYfqb0nohoPgem4f8mjn5OqDomFrbJiC9VRHUOCIuEu+aJEYwp8mmdkLnS3f+LRCZ6G76cJJ50lkzSAZRw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.4.0.tgz", + "integrity": "sha512-fYkyP/VMo7YHO76YVrUjd95Qeo0cubWn/Spavmwm1gLTHH/q7xMtbod2Z/F0wd6QHnc7+HGhO7XAjjKWDjldaw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3854,9 +4102,10 @@ } }, "node_modules/@tiptap/extension-history": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.3.0.tgz", - "integrity": "sha512-EF5Oq9fe/VBzU1Lsow2ubOlx1e1r4OQT1WUPGsRnL7pr94GH1Skpk7/hs9COJ9K6kP3Ebt42XjP0JEQodR58YA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.4.0.tgz", + "integrity": "sha512-gr5qsKAXEVGr1Lyk1598F7drTaEtAxqZiuuSwTCzZzkiwgEQsWMWTWc9F8FlneCEaqe1aIYg6WKWlmYPaFwr0w==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3867,9 +4116,10 @@ } }, "node_modules/@tiptap/extension-italic": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.3.0.tgz", - "integrity": "sha512-jdFjLjdt5JtPlGMpoS6TEq5rznjbAYVlPwcw5VkYENVIYIGIR1ylIw2JwK1nUEsQ+OgYwVxHLejcUXWG1dCi2g==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.4.0.tgz", + "integrity": "sha512-aaW/L9q+KNHHK+X73MPloHeIsT191n3VLd3xm6uUcFDnUNvzYJ/q65/1ZicdtCaOLvTutxdrEvhbkrVREX6a8g==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3879,9 +4129,10 @@ } }, "node_modules/@tiptap/extension-list-item": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.3.0.tgz", - "integrity": "sha512-mHU+IuRa56OT6YCtxf5Z7OSUrbWdKhGCEX7RTrteDVs5oMB6W3oF9j88M5qQmZ1WDcxvQhAOoXctnMt6eX9zcA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.4.0.tgz", + "integrity": "sha512-reUVUx+2cI2NIAqMZhlJ9uK/+zvRzm1GTmlU2Wvzwc7AwLN4yemj6mBDsmBLEXAKPvitfLh6EkeHaruOGymQtg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3891,9 +4142,10 @@ } }, "node_modules/@tiptap/extension-ordered-list": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.3.0.tgz", - "integrity": "sha512-gkf0tltXjlUj0cqyfDV2r7xy9YPKtcVSWwlCPun6OOi0KzKFiAMqQpA9hy2W6gJ+KCp8+KNRMClZOfH4TnnBfg==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.4.0.tgz", + "integrity": "sha512-Zo0c9M0aowv+2+jExZiAvhCB83GZMjZsxywmuOrdUbq5EGYKb7q8hDyN3hkrktVHr9UPXdPAYTmLAHztTOHYRA==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3903,9 +4155,10 @@ } }, "node_modules/@tiptap/extension-paragraph": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.3.0.tgz", - "integrity": "sha512-peCpA7DFqkd0cHb+cHv4YHNoMsXG8tKFNJlCHpLmsZWl2hWmpKgKmUrXAUfzjcFSvkZxn0xYc5oWbqUgg+2LzA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.4.0.tgz", + "integrity": "sha512-+yse0Ow67IRwcACd9K/CzBcxlpr9OFnmf0x9uqpaWt1eHck1sJnti6jrw5DVVkyEBHDh/cnkkV49gvctT/NyCw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3915,9 +4168,10 @@ } }, "node_modules/@tiptap/extension-placeholder": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-placeholder/-/extension-placeholder-2.3.0.tgz", - "integrity": "sha512-1BOyxVLzyUYf6yOOeJ8CfpP6DSCS4L6HjBZqj6WP1z1NyBV8RAfhf3UuLNcimfSWAETXFR3g0ZbaxxWffI1cEg==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-placeholder/-/extension-placeholder-2.4.0.tgz", + "integrity": "sha512-SmWOjgWpmhFt0BPOnL65abCUH0wS5yksUJgtANn5bQoHF4HFSsyl7ETRmgf0ykxdjc7tzOg31FfpWVH4wzKSYg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3928,9 +4182,10 @@ } }, "node_modules/@tiptap/extension-strike": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.3.0.tgz", - "integrity": "sha512-gOW4ALeH8gkJiUGGXVy/AOd5lAPTX0bzoOW1+sCLcTA7t8dluBW7M2ngNYxTEtlKqyv7aLfrgsYSiqucmmfSLw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.4.0.tgz", + "integrity": "sha512-pE1uN/fQPOMS3i+zxPYMmPmI3keubnR6ivwM+KdXWOMnBiHl9N4cNpJgq1n2eUUGKLurC2qrQHpnVyGAwBS6Vg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3940,9 +4195,10 @@ } }, "node_modules/@tiptap/extension-text": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.3.0.tgz", - "integrity": "sha512-zkudl0TyKRy/8vHtyo5dMzjBRD0HEUnsS8YOsjR4xwQq5EYUXleRgM1s6lb6Yms2sLUAZRWdDddoQ686iq4zQg==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.4.0.tgz", + "integrity": "sha512-LV0bvE+VowE8IgLca7pM8ll7quNH+AgEHRbSrsI3SHKDCYB9gTHMjWaAkgkUVaO1u0IfCrjnCLym/PqFKa+vvg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3952,9 +4208,10 @@ } }, "node_modules/@tiptap/extension-underline": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.3.0.tgz", - "integrity": "sha512-vmmcwCPmWqGKYHZevz50+bxrpHyiu5y6YZweAE476hn8Mud6vYg7RpkXgW8bjkCOky6UA51uelslSc0XrLE6uw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.4.0.tgz", + "integrity": "sha512-guWojb7JxUwLz4OKzwNExJwOkhZjgw/ttkXCMBT0PVe55k998MMYe1nvN0m2SeTW9IxurEPtScH4kYJ0XuSm8Q==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3964,9 +4221,10 @@ } }, "node_modules/@tiptap/pm": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.3.0.tgz", - "integrity": "sha512-4WYqShZBwDyReKvapC0nmeYdOtZbZ31y4MjolpKQaSD4I7kg/oZspC+byUGdvIRsNpRN7i2X0IyvdISKk8gw5Q==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.4.0.tgz", + "integrity": "sha512-B1HMEqGS4MzIVXnpgRZDLm30mxDWj51LkBT/if1XD+hj5gm8B9Q0c84bhvODX6KIs+c6z+zsY9VkVu8w9Yfgxg==", + "license": "MIT", "dependencies": { "prosemirror-changeset": "^2.2.1", "prosemirror-collab": "^1.3.1", @@ -3993,12 +4251,13 @@ } }, "node_modules/@tiptap/vue-2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@tiptap/vue-2/-/vue-2-2.3.0.tgz", - "integrity": "sha512-lbzADTvHZKgbX4ll3tfFL3XlT52a7phQCBgZwsBGSZl5/zOe5O7yXd5Tah7h9UcI5K5sRtrgvuMeuDzM4JNblw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@tiptap/vue-2/-/vue-2-2.4.0.tgz", + "integrity": "sha512-1XMkPAbzn3m5moP2D8IoYP2Kl4bkC3WWa38TJTEtJf8YOgia5nakHct+c7QAjN37j0TArbPa5MxXddKp/CqyRA==", + "license": "MIT", "dependencies": { - "@tiptap/extension-bubble-menu": "^2.3.0", - "@tiptap/extension-floating-menu": "^2.3.0", + "@tiptap/extension-bubble-menu": "^2.4.0", + "@tiptap/extension-floating-menu": "^2.4.0", "vue-ts-types": "^1.6.0" }, "funding": { @@ -4016,6 +4275,7 @@ "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10.13.0" } @@ -4024,31 +4284,36 @@ "version": "5.0.4", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/@vitejs/plugin-vue2": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue2/-/plugin-vue2-2.3.1.tgz", "integrity": "sha512-/ksaaz2SRLN11JQhLdEUhDzOn909WEk99q9t9w+N12GjQCljzv7GyvAbD/p20aBUjHkvpGOoQ+FCOkG+mjDF4A==", "dev": true, + "license": "MIT", "engines": { "node": "^14.18.0 || >= 16.0.0" }, @@ -4058,10 +4323,11 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-1.5.2.tgz", - "integrity": "sha512-QJqxRnbCwNtbbegK9E93rBmhN3dbfG1bC/o52Bqr0zGCYhQzwgwvrJBG7Q8vw3zilX6Ryy6oa/mkZku2lLJx1Q==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-1.6.0.tgz", + "integrity": "sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.1", "@bcoe/v8-coverage": "^0.2.3", @@ -4081,17 +4347,18 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "1.5.2" + "vitest": "1.6.0" } }, "node_modules/@vitest/expect": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.5.2.tgz", - "integrity": "sha512-rf7MTD1WCoDlN3FfYJ9Llfp0PbdtOMZ3FIF0AVkDnKbp3oiMW1c8AmvRZBcqbAhDUAvF52e9zx4WQM1r3oraVA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.0.tgz", + "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/spy": "1.5.2", - "@vitest/utils": "1.5.2", + "@vitest/spy": "1.6.0", + "@vitest/utils": "1.6.0", "chai": "^4.3.10" }, "funding": { @@ -4099,12 +4366,13 @@ } }, "node_modules/@vitest/runner": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.5.2.tgz", - "integrity": "sha512-7IJ7sJhMZrqx7HIEpv3WrMYcq8ZNz9L6alo81Y6f8hV5mIE6yVZsFoivLZmr0D777klm1ReqonE9LyChdcmw6g==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.0.tgz", + "integrity": "sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/utils": "1.5.2", + "@vitest/utils": "1.6.0", "p-limit": "^5.0.0", "pathe": "^1.1.1" }, @@ -4117,6 +4385,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^1.0.0" }, @@ -4132,6 +4401,7 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.20" }, @@ -4140,10 +4410,11 @@ } }, "node_modules/@vitest/snapshot": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.5.2.tgz", - "integrity": "sha512-CTEp/lTYos8fuCc9+Z55Ga5NVPKUgExritjF5VY7heRFUfheoAqBneUlvXSUJHUZPjnPmyZA96yLRJDP1QATFQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.0.tgz", + "integrity": "sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==", "dev": true, + "license": "MIT", "dependencies": { "magic-string": "^0.30.5", "pathe": "^1.1.1", @@ -4158,6 +4429,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4170,6 +4442,7 @@ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -4180,16 +4453,18 @@ } }, "node_modules/@vitest/snapshot/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" }, "node_modules/@vitest/spy": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.5.2.tgz", - "integrity": "sha512-xCcPvI8JpCtgikT9nLpHPL1/81AYqZy1GCy4+MCHBE7xi8jgsYkULpW5hrx5PGLgOQjUpb6fd15lqcriJ40tfQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz", + "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==", "dev": true, + "license": "MIT", "dependencies": { "tinyspy": "^2.2.0" }, @@ -4198,10 +4473,11 @@ } }, "node_modules/@vitest/utils": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.5.2.tgz", - "integrity": "sha512-sWOmyofuXLJ85VvXNsroZur7mOJGiQeM0JN3/0D1uU8U9bGFM69X1iqHaRXl6R8BwaLY6yPCogP257zxTzkUdA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.0.tgz", + "integrity": "sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==", "dev": true, + "license": "MIT", "dependencies": { "diff-sequences": "^29.6.3", "estree-walker": "^3.0.3", @@ -4217,6 +4493,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4229,6 +4506,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } @@ -4238,6 +4516,7 @@ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -4251,25 +4530,29 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@vue/babel-helper-vue-jsx-merge-props": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz", "integrity": "sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@vue/babel-helper-vue-transform-on": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.2.tgz", "integrity": "sha512-nOttamHUR3YzdEqdM/XXDyCSdxMA9VizUKoroLX6yTyRtggzQMHXcmwh8a7ZErcJttIBIc9s68a1B8GZ+Dmvsw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@vue/babel-plugin-jsx": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.2.tgz", "integrity": "sha512-nYTkZUVTu4nhP199UoORePsql0l+wj7v/oyQjtThUVhJl1U+6qHuoVhIvR3bf7eVKjbCK+Cs2AWd7mi9Mpz9rA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-imports": "~7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -4297,6 +4580,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.15" }, @@ -4309,6 +4593,7 @@ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.2.tgz", "integrity": "sha512-EntyroPwNg5IPVdUJupqs0CFzuf6lUrVvCspmv2J1FITLeGnUCuoGNNk78dgCusxEiYj6RMkTJflGSxk5aIC4A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.23.5", "@babel/helper-module-imports": "~7.22.15", @@ -4325,6 +4610,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.15" }, @@ -4337,6 +4623,7 @@ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz", "integrity": "sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.0.0", "@babel/plugin-syntax-jsx": "^7.2.0", @@ -4354,6 +4641,7 @@ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -4363,6 +4651,7 @@ "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-5.0.8.tgz", "integrity": "sha512-yl+5qhpjd8e1G4cMXfORkkBlvtPCIgmRf3IYCWYDKIQ7m+PPa5iTm4feiNmCMD6yGqQWMhhK/7M3oWGL9boKwg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.12.16", "@babel/helper-compilation-targets": "^7.12.16", @@ -4395,26 +4684,12 @@ } } }, - "node_modules/@vue/babel-preset-app/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@vue/babel-preset-app/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -4422,17 +4697,12 @@ "node": ">=10" } }, - "node_modules/@vue/babel-preset-app/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@vue/babel-preset-jsx": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz", "integrity": "sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==", "dev": true, + "license": "MIT", "dependencies": { "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", @@ -4458,6 +4728,7 @@ "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz", "integrity": "sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/plugin-syntax-jsx": "^7.2.0" }, @@ -4470,6 +4741,7 @@ "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz", "integrity": "sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/plugin-syntax-jsx": "^7.2.0" }, @@ -4482,6 +4754,7 @@ "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz", "integrity": "sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/plugin-syntax-jsx": "^7.2.0" }, @@ -4494,6 +4767,7 @@ "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz", "integrity": "sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/plugin-syntax-jsx": "^7.2.0" }, @@ -4506,6 +4780,7 @@ "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz", "integrity": "sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/plugin-syntax-jsx": "^7.2.0", "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", @@ -4523,6 +4798,7 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -4532,6 +4808,7 @@ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -4541,6 +4818,7 @@ "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz", "integrity": "sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/plugin-syntax-jsx": "^7.2.0", "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", @@ -4555,44 +4833,48 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/@vue/compiler-core": { - "version": "3.4.24", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.24.tgz", - "integrity": "sha512-vbW/tgbwJYj62N/Ww99x0zhFTkZDTcGh3uwJEuadZ/nF9/xuFMC4693P9r+3sxGXISABpDKvffY5ApH9pmdd1A==", + "version": "3.4.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.29.tgz", + "integrity": "sha512-TFKiRkKKsRCKvg/jTSSKK7mYLJEQdUiUfykbG49rubC9SfDyvT2JrzTReopWlz2MxqeLyxh9UZhvxEIBgAhtrg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/parser": "^7.24.4", - "@vue/shared": "3.4.24", + "@babel/parser": "^7.24.7", + "@vue/shared": "3.4.29", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-dom": { - "version": "3.4.24", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.24.tgz", - "integrity": "sha512-4XgABML/4cNndVsQndG6BbGN7+EoisDwi3oXNovqL/4jdNhwvP8/rfRMTb6FxkxIxUUtg6AI1/qZvwfSjxJiWA==", + "version": "3.4.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.29.tgz", + "integrity": "sha512-A6+iZ2fKIEGnfPJejdB7b1FlJzgiD+Y/sxxKwJWg1EbJu6ZPgzaPQQ51ESGNv0CP6jm6Z7/pO6Ia8Ze6IKrX7w==", "dev": true, + "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.4.24", - "@vue/shared": "3.4.24" + "@vue/compiler-core": "3.4.29", + "@vue/shared": "3.4.29" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.4.24", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.24.tgz", - "integrity": "sha512-nRAlJUK02FTWfA2nuvNBAqsDZuERGFgxZ8sGH62XgFSvMxO2URblzulExsmj4gFZ8e+VAyDooU9oAoXfEDNxTA==", + "version": "3.4.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.29.tgz", + "integrity": "sha512-zygDcEtn8ZimDlrEQyLUovoWgKQic6aEQqRXce2WXBvSeHbEbcAsXyCk9oG33ZkyWH4sl9D3tkYc1idoOkdqZQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/parser": "^7.24.4", - "@vue/compiler-core": "3.4.24", - "@vue/compiler-dom": "3.4.24", - "@vue/compiler-ssr": "3.4.24", - "@vue/shared": "3.4.24", + "@babel/parser": "^7.24.7", + "@vue/compiler-core": "3.4.29", + "@vue/compiler-dom": "3.4.29", + "@vue/compiler-ssr": "3.4.29", + "@vue/shared": "3.4.29", "estree-walker": "^2.0.2", "magic-string": "^0.30.10", "postcss": "^8.4.38", @@ -4604,18 +4886,20 @@ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.4.24", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.24.tgz", - "integrity": "sha512-ZsAtr4fhaUFnVcDqwW3bYCSDwq+9Gk69q2r/7dAHDrOMw41kylaMgOP4zRnn6GIEJkQznKgrMOGPMFnLB52RbQ==", + "version": "3.4.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.29.tgz", + "integrity": "sha512-rFbwCmxJ16tDp3N8XCx5xSQzjhidYjXllvEcqX/lopkoznlNPz3jyy0WGJCyhAaVQK677WWFt3YO/WUEkMMUFQ==", "dev": true, + "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.4.24", - "@vue/shared": "3.4.24" + "@vue/compiler-dom": "3.4.29", + "@vue/shared": "3.4.29" } }, "node_modules/@vue/component-compiler-utils": { @@ -4623,6 +4907,7 @@ "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", "dev": true, + "license": "MIT", "dependencies": { "consolidate": "^0.15.1", "hash-sum": "^1.0.2", @@ -4642,6 +4927,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "dev": true, + "license": "ISC", "dependencies": { "pseudomap": "^1.0.2", "yallist": "^2.1.2" @@ -4651,13 +4937,15 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/@vue/component-compiler-utils/node_modules/postcss": { "version": "7.0.39", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, + "license": "MIT", "dependencies": { "picocolors": "^0.2.1", "source-map": "^0.6.1" @@ -4675,6 +4963,7 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, + "license": "MIT", "optional": true, "bin": { "prettier": "bin-prettier.js" @@ -4691,6 +4980,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -4699,13 +4989,15 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/@vue/eslint-config-prettier": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", "integrity": "sha512-z1ZIAAUS9pKzo/ANEfd2sO+v2IUalz7cM/cTLOZ7vRFOPk5/xuRKQteOu1DErFLAh/lYGXMVZ0IfYKlyInuDVg==", "dev": true, + "license": "MIT", "dependencies": { "eslint-config-prettier": "^9.0.0", "eslint-plugin-prettier": "^5.0.0" @@ -4716,16 +5008,18 @@ } }, "node_modules/@vue/shared": { - "version": "3.4.24", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.24.tgz", - "integrity": "sha512-BW4tajrJBM9AGAknnyEw5tO2xTmnqgup0VTnDAMcxYmqOX0RG0b9aSUGAbEKolD91tdwpA6oCwbltoJoNzpItw==", - "dev": true + "version": "3.4.29", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.29.tgz", + "integrity": "sha512-hQ2gAQcBO/CDpC82DCrinJNgOHI2v+FA7BDW4lMSPeBpQ7sRe2OLHWe5cph1s7D8DUQAwRt18dBDfJJ220APEA==", + "dev": true, + "license": "MIT" }, "node_modules/@vue/test-utils": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-1.3.6.tgz", "integrity": "sha512-udMmmF1ts3zwxUJEIAj5ziioR900reDrt6C9H3XpWPsLBx2lpHKoA4BTdd9HNIYbkGltWw+JjWJ+5O6QBwiyEw==", "dev": true, + "license": "MIT", "dependencies": { "dom-event-types": "^1.0.0", "lodash": "^4.17.15", @@ -4740,6 +5034,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/@zxcvbn-ts/core/-/core-3.0.4.tgz", "integrity": "sha512-aQeiT0F09FuJaAqNrxynlAwZ2mW/1MdXakKWNmGM1Qp/VaY6CnB/GfnMS2T8gB2231Esp1/maCWd8vTG4OuShw==", + "license": "MIT", "dependencies": { "fastest-levenshtein": "1.0.16" } @@ -4747,33 +5042,39 @@ "node_modules/@zxcvbn-ts/language-common": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@zxcvbn-ts/language-common/-/language-common-3.0.4.tgz", - "integrity": "sha512-viSNNnRYtc7ULXzxrQIVUNwHAPSXRtoIwy/Tq4XQQdIknBzw4vz36lQLF6mvhMlTIlpjoN/Z1GFu/fwiAlUSsw==" + "integrity": "sha512-viSNNnRYtc7ULXzxrQIVUNwHAPSXRtoIwy/Tq4XQQdIknBzw4vz36lQLF6mvhMlTIlpjoN/Z1GFu/fwiAlUSsw==", + "license": "MIT" }, "node_modules/@zxcvbn-ts/language-de": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@zxcvbn-ts/language-de/-/language-de-3.0.2.tgz", - "integrity": "sha512-CPl2314qWtnJl4EkeEqFbL4unP6yEAHO976ER+df8CQcKsF4FxdZYEahkleWU66dhNI2VKnmJKNMzq8QtHQKcw==" + "integrity": "sha512-CPl2314qWtnJl4EkeEqFbL4unP6yEAHO976ER+df8CQcKsF4FxdZYEahkleWU66dhNI2VKnmJKNMzq8QtHQKcw==", + "license": "MIT" }, "node_modules/@zxcvbn-ts/language-en": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@zxcvbn-ts/language-en/-/language-en-3.0.2.tgz", - "integrity": "sha512-Zp+zL+I6Un2Bj0tRXNs6VUBq3Djt+hwTwUz4dkt2qgsQz47U0/XthZ4ULrT/RxjwJRl5LwiaKOOZeOtmixHnjg==" + "integrity": "sha512-Zp+zL+I6Un2Bj0tRXNs6VUBq3Djt+hwTwUz4dkt2qgsQz47U0/XthZ4ULrT/RxjwJRl5LwiaKOOZeOtmixHnjg==", + "license": "MIT" }, "node_modules/@zxcvbn-ts/language-fr": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@zxcvbn-ts/language-fr/-/language-fr-3.0.2.tgz", - "integrity": "sha512-Tj9jS/Z8mNBAD21pn8Mp4O86CPrwImysO1fM3DG+fsfk8W79/MDzqpFDBHiqpu69Uo3LPPctMHEEteakFWt4Qg==" + "integrity": "sha512-Tj9jS/Z8mNBAD21pn8Mp4O86CPrwImysO1fM3DG+fsfk8W79/MDzqpFDBHiqpu69Uo3LPPctMHEEteakFWt4Qg==", + "license": "MIT" }, "node_modules/@zxcvbn-ts/language-it": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@zxcvbn-ts/language-it/-/language-it-3.0.2.tgz", - "integrity": "sha512-VMC7JJZ855wPhklADB43kxRVWpbWIsVWjvrC8EACBoNqcFyk2DLD+WeoAtazM08ovM0wi/mN+wc0Sa5iFtOtvQ==" + "integrity": "sha512-VMC7JJZ855wPhklADB43kxRVWpbWIsVWjvrC8EACBoNqcFyk2DLD+WeoAtazM08ovM0wi/mN+wc0Sa5iFtOtvQ==", + "license": "MIT" }, "node_modules/abbrev": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -4781,13 +5082,15 @@ "node_modules/abs-svg-path": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/abs-svg-path/-/abs-svg-path-0.1.1.tgz", - "integrity": "sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==" + "integrity": "sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==", + "license": "MIT" }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -4800,15 +5103,20 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/acorn-walk": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", - "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, "engines": { "node": ">=0.4.0" } @@ -4818,6 +5126,7 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "4" }, @@ -4830,6 +5139,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -4846,6 +5156,7 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.16" }, @@ -4858,6 +5169,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -4867,6 +5179,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -4879,6 +5192,7 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -4890,13 +5204,15 @@ "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" }, "node_modules/aria-query": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "dequal": "^2.0.3" } @@ -4906,6 +5222,7 @@ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "is-array-buffer": "^3.0.4" @@ -4922,6 +5239,7 @@ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -4942,6 +5260,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -4962,6 +5281,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -4980,6 +5300,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -4998,6 +5319,7 @@ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.5", @@ -5019,6 +5341,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "is-nan": "^1.3.2", @@ -5032,6 +5355,7 @@ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -5039,7 +5363,21 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } }, "node_modules/autoprefixer": { "version": "10.4.19", @@ -5060,6 +5398,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "caniuse-lite": "^1.0.30001599", @@ -5082,6 +5421,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -5093,9 +5433,10 @@ } }, "node_modules/axios": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", - "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -5107,6 +5448,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, + "license": "MIT", "dependencies": { "object.assign": "^4.1.0" } @@ -5116,6 +5458,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.22.6", "@babel/helper-define-polyfill-provider": "^0.6.2", @@ -5130,6 +5473,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.1", "core-js-compat": "^3.36.1" @@ -5143,6 +5487,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.2" }, @@ -5154,13 +5499,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/babel-plugin-require-context-hook/-/babel-plugin-require-context-hook-1.0.0.tgz", "integrity": "sha512-EMZD1563QUqLhzrqcThk759RhuNVX/ZJdrtGK6drwzgvnR+ARjWyXIHPbu+tUNaMGtPz/gQeAM2M6VUw2UiUeA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", @@ -5179,12 +5526,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/bidi-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "license": "MIT", "dependencies": { "require-from-string": "^2.0.2" } @@ -5194,6 +5543,7 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -5205,31 +5555,35 @@ "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -5239,6 +5593,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "license": "MIT", "dependencies": { "base64-js": "^1.1.2" } @@ -5247,14 +5602,15 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "license": "MIT", "dependencies": { "pako": "~1.0.5" } }, "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", "dev": true, "funding": [ { @@ -5270,11 +5626,12 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "update-browserslist-db": "^1.0.16" }, "bin": { "browserslist": "cli.js" @@ -5288,6 +5645,7 @@ "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5296,6 +5654,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -5315,6 +5674,7 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -5324,6 +5684,7 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -5332,9 +5693,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001612", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001612.tgz", - "integrity": "sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==", + "version": "1.0.30001636", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz", + "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==", "dev": true, "funding": [ { @@ -5349,13 +5710,15 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/chai": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", "dev": true, + "license": "MIT", "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.3", @@ -5374,6 +5737,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -5388,6 +5752,7 @@ "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "license": "MIT", "dependencies": { "get-func-name": "^2.0.2" }, @@ -5400,6 +5765,7 @@ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", "dev": true, + "license": "MIT", "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", @@ -5421,6 +5787,7 @@ "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-select": "^5.1.0", @@ -5445,6 +5812,7 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", @@ -5457,6 +5825,7 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -5481,6 +5850,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -5493,6 +5863,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", "dev": true, + "license": "MIT", "dependencies": { "restore-cursor": "^4.0.0" }, @@ -5508,6 +5879,7 @@ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", "dev": true, + "license": "MIT", "dependencies": { "slice-ansi": "^5.0.0", "string-width": "^7.0.0" @@ -5523,6 +5895,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", "engines": { "node": ">=0.8" } @@ -5532,6 +5905,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } @@ -5539,12 +5913,14 @@ "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" }, "node_modules/color-string": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -5554,17 +5930,20 @@ "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/colorjs.io": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.0.tgz", - "integrity": "sha512-qekjTiBLM3F/sXKks/ih5aWaHIGu+Ftel0yKEvmpbKvmxpNOhojKgha5uiWEUOqEpRjC1Tq3nJRT7WgdBOxIGg==" + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", + "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", + "license": "MIT" }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -5575,13 +5954,15 @@ "node_modules/comlink": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.1.tgz", - "integrity": "sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q==" + "integrity": "sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q==", + "license": "Apache-2.0" }, "node_modules/commander": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, + "license": "MIT", "engines": { "node": ">=14" } @@ -5590,13 +5971,15 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/condense-newlines": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", "integrity": "sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==", "dev": true, + "license": "MIT", "dependencies": { "extend-shallow": "^2.0.1", "is-whitespace": "^0.3.0", @@ -5610,13 +5993,15 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz", "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/config-chain": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", "dev": true, + "license": "MIT", "dependencies": { "ini": "^1.3.4", "proto-list": "~1.2.1" @@ -5628,6 +6013,7 @@ "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", "deprecated": "Please upgrade to consolidate v1.0.0+ as it has been modernized with several long-awaited fixes implemented. Maintenance is supported by Forward Email at https://forwardemail.net ; follow/watch https://github.com/ladjs/consolidate for updates and release changelog", "dev": true, + "license": "MIT", "dependencies": { "bluebird": "^3.1.1" }, @@ -5639,24 +6025,27 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/core-js": { - "version": "3.37.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.0.tgz", - "integrity": "sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug==", + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.1.tgz", + "integrity": "sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, "node_modules/core-js-compat": { - "version": "3.37.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz", - "integrity": "sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==", + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", + "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.23.0" }, @@ -5668,12 +6057,14 @@ "node_modules/crelt": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", - "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==" + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", + "license": "MIT" }, "node_modules/cross-fetch": { "version": "3.1.8", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "license": "MIT", "dependencies": { "node-fetch": "^2.6.12" } @@ -5683,6 +6074,7 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -5695,13 +6087,27 @@ "node_modules/crypto-js": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", - "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", + "license": "MIT" + }, + "node_modules/css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + } }, "node_modules/css-select": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", @@ -5718,6 +6124,7 @@ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "dev": true, + "license": "MIT", "dependencies": { "mdn-data": "2.0.30", "source-map-js": "^1.0.1" @@ -5731,6 +6138,7 @@ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -5742,13 +6150,25 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -5760,13 +6180,15 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/cssfontparser/-/cssfontparser-1.2.1.tgz", "integrity": "sha512-6tun4LoZnj7VN6YeegOVb67KBX/7JJsqvj+pv3ZA7F878/eN33AbGa5b/S/wXxS/tcp8nc40xRUrsPlxIyNUPg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/csso": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", "dev": true, + "license": "MIT", "dependencies": { "css-tree": "~2.2.0" }, @@ -5780,6 +6202,7 @@ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", "dev": true, + "license": "MIT", "dependencies": { "mdn-data": "2.0.28", "source-map-js": "^1.0.1" @@ -5793,13 +6216,15 @@ "version": "2.0.28", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/cssstyle": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==", "dev": true, + "license": "MIT", "dependencies": { "rrweb-cssom": "^0.6.0" }, @@ -5807,16 +6232,25 @@ "node": ">=18" } }, + "node_modules/cssstyle/node_modules/rrweb-cssom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", + "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", + "dev": true, + "license": "MIT" + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" }, "node_modules/data-urls": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-mimetype": "^4.0.0", "whatwg-url": "^14.0.0" @@ -5830,6 +6264,7 @@ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -5847,6 +6282,7 @@ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -5864,6 +6300,7 @@ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -5879,19 +6316,22 @@ "node_modules/dayjs": { "version": "1.11.11", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", - "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" + "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==", + "license": "MIT" }, "node_modules/de-indent": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -5908,13 +6348,25 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } }, "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "dev": true, + "license": "MIT", "dependencies": { "type-detect": "^4.0.0" }, @@ -5927,6 +6379,7 @@ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.5", @@ -5958,12 +6411,14 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5972,6 +6427,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -5988,6 +6444,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -6004,6 +6461,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -6013,6 +6471,7 @@ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6020,13 +6479,15 @@ "node_modules/dfa": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", - "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==" + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", + "license": "MIT" }, "node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -6036,6 +6497,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -6047,19 +6509,22 @@ "version": "0.5.16", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/dom-event-types": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/dom-event-types/-/dom-event-types-1.1.0.tgz", "integrity": "sha512-jNCX+uNJ3v38BKvPbpki6j5ItVlnSqVV6vDWGS6rExzCMjsc39frLjm1n91o6YaKK6AZl0wLloItW6C6mr61BQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/dom-serializer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", @@ -6079,13 +6544,15 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domhandler": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" }, @@ -6101,6 +6568,7 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", @@ -6115,6 +6583,7 @@ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=12" }, @@ -6126,13 +6595,15 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/editorconfig": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", "dev": true, + "license": "MIT", "dependencies": { "@one-ini/wasm": "0.1.1", "commander": "^10.0.0", @@ -6151,27 +6622,17 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, - "node_modules/editorconfig/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/editorconfig/node_modules/minimatch": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6183,13 +6644,11 @@ } }, "node_modules/editorconfig/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -6197,28 +6656,25 @@ "node": ">=10" } }, - "node_modules/editorconfig/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/electron-to-chromium": { - "version": "1.4.747", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.747.tgz", - "integrity": "sha512-+FnSWZIAvFHbsNVmUxhEqWiaOiPMcfum1GQzlWCg/wLigVtshOsjXHyEFfmt6cFK6+HkS3QOJBv6/3OPumbBfw==", - "dev": true + "version": "1.4.805", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.805.tgz", + "integrity": "sha512-8W4UJwX/w9T0QSzINJckTKG6CYpAUTqsaWcWIsdud3I1FYJcMgW9QqT1/4CBff/pP/TihWh13OmiyY8neto6vw==", + "dev": true, + "license": "ISC" }, "node_modules/emoji-regex": { "version": "10.3.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", - "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==" + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", + "license": "MIT" }, "node_modules/enhanced-resolve": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", - "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -6231,6 +6687,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -6243,6 +6700,7 @@ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", @@ -6302,6 +6760,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -6313,6 +6772,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -6322,6 +6782,7 @@ "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -6342,6 +6803,7 @@ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -6354,6 +6816,7 @@ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4", "has-tostringtag": "^1.0.2", @@ -6368,6 +6831,7 @@ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.0" } @@ -6377,6 +6841,7 @@ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -6390,11 +6855,12 @@ } }, "node_modules/esbuild": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", - "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -6402,29 +6868,29 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.20.2", - "@esbuild/android-arm": "0.20.2", - "@esbuild/android-arm64": "0.20.2", - "@esbuild/android-x64": "0.20.2", - "@esbuild/darwin-arm64": "0.20.2", - "@esbuild/darwin-x64": "0.20.2", - "@esbuild/freebsd-arm64": "0.20.2", - "@esbuild/freebsd-x64": "0.20.2", - "@esbuild/linux-arm": "0.20.2", - "@esbuild/linux-arm64": "0.20.2", - "@esbuild/linux-ia32": "0.20.2", - "@esbuild/linux-loong64": "0.20.2", - "@esbuild/linux-mips64el": "0.20.2", - "@esbuild/linux-ppc64": "0.20.2", - "@esbuild/linux-riscv64": "0.20.2", - "@esbuild/linux-s390x": "0.20.2", - "@esbuild/linux-x64": "0.20.2", - "@esbuild/netbsd-x64": "0.20.2", - "@esbuild/openbsd-x64": "0.20.2", - "@esbuild/sunos-x64": "0.20.2", - "@esbuild/win32-arm64": "0.20.2", - "@esbuild/win32-ia32": "0.20.2", - "@esbuild/win32-x64": "0.20.2" + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" } }, "node_modules/escalade": { @@ -6432,6 +6898,7 @@ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6441,6 +6908,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -6450,6 +6918,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -6501,10 +6970,11 @@ } }, "node_modules/eslint-compat-utils": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.0.tgz", - "integrity": "sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.5.4" }, @@ -6515,44 +6985,25 @@ "eslint": ">=6.0.0" } }, - "node_modules/eslint-compat-utils/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/eslint-compat-utils/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, - "node_modules/eslint-compat-utils/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-compat-utils/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/eslint-config-prettier": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, + "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -6565,6 +7016,7 @@ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", @@ -6576,6 +7028,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -6585,6 +7038,7 @@ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -6602,26 +7056,29 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-plugin-es-x": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.6.0.tgz", - "integrity": "sha512-I0AmeNgevgaTR7y2lrVCJmGYF0rjoznpDvqV/kIkZSZbZ8Rw3eu4cGlvBBULScfkSOCzqKbff5LR4CNrV7mZHA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.7.0.tgz", + "integrity": "sha512-aP3qj8BwiEDPttxQkZdI221DLKq9sI/qHolE2YSQL1/9+xk7dTV+tB1Fz8/IaCA+lnLA1bDEnvaS2LKs0k2Uig==", "dev": true, + "funding": [ + "https://github.com/sponsors/ota-meshi", + "https://opencollective.com/eslint" + ], + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.1.2", "@eslint-community/regexpp": "^4.6.0", - "eslint-compat-utils": "^0.5.0" + "eslint-compat-utils": "^0.5.1" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - }, "peerDependencies": { "eslint": ">=8" } @@ -6631,6 +7088,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.7", "array.prototype.findlastindex": "^1.2.3", @@ -6662,6 +7120,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -6671,6 +7130,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -6682,16 +7142,18 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/eslint-plugin-local-rules/-/eslint-plugin-local-rules-2.0.1.tgz", "integrity": "sha512-AJhGd+GcI5r2dbjiGPixM8jnBl0XFxqoVbqzwKbYz+nTk+Cj5dNE3+OlhC176bl5r25KsGsIthLi1VqIW5Ga+A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/eslint-plugin-n": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.3.1.tgz", - "integrity": "sha512-25+HTtKe1F8U/M4ERmdzbz/xkm/gaY0OYC8Fcv1z/WvpLJ8Xfh9LzJ13JV5uj4QyCUD8kOPJrNjn/3y+tc57Vw==", + "version": "17.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.9.0.tgz", + "integrity": "sha512-CPSaXDXdrT4nsrOrO4mT4VB6FMUkoySRkHWuuJJHVqsIEjIeZgMY1H7AzSwPbDScikBmLN82KeM1u7ixV7PzGg==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "enhanced-resolve": "^5.15.0", + "enhanced-resolve": "^5.17.0", "eslint-plugin-es-x": "^7.5.0", "get-tsconfig": "^4.7.0", "globals": "^15.0.0", @@ -6714,15 +7176,17 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/eslint-plugin-n/node_modules/globals": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.0.0.tgz", - "integrity": "sha512-m/C/yR4mjO6pXDTm9/R/SpYTAIyaUB4EOzcaaMEl7mds7Mshct9GfejiJNQGjHHbdMPey13Kpu4TMbYi9ex1pw==", + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.6.0.tgz", + "integrity": "sha512-UzcJi88Hw//CurUIRa9Jxb0vgOCcuD/MNjwmXp633cyaRKkCWACkoqHCtfZv43b1kqXGg/fpOa8bwgacCeXsVg==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -6730,23 +7194,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-n/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint-plugin-n/node_modules/minimatch": { "version": "9.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6758,13 +7211,11 @@ } }, "node_modules/eslint-plugin-n/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -6772,17 +7223,12 @@ "node": ">=10" } }, - "node_modules/eslint-plugin-n/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/eslint-plugin-prettier": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", "dev": true, + "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0", "synckit": "^0.8.6" @@ -6809,22 +7255,27 @@ } }, "node_modules/eslint-plugin-promise": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", - "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.4.0.tgz", + "integrity": "sha512-/KWWRaD3fGkVCZsdR0RU53PSthFmoHVhZl+y9+6DqeDLSikLdlUVpVEAmI6iCRR5QyOjBYBqHZV/bdv4DJ4Gtw==", "dev": true, + "license": "ISC", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, "node_modules/eslint-plugin-vue": { - "version": "9.25.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.25.0.tgz", - "integrity": "sha512-tDWlx14bVe6Bs+Nnh3IGrD+hb11kf2nukfm6jLsmJIhmiRQ1SUaksvwY9U5MvPB0pcrg0QK0xapQkfITs3RKOA==", + "version": "9.27.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.27.0.tgz", + "integrity": "sha512-5Dw3yxEyuBSXTzT5/Ge1X5kIkRTQ3nvBn/VwPwInNiZBSJOO/timWMUaflONnFBzU6NhB68lxnCda7ULV5N7LA==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "globals": "^13.24.0", @@ -6832,7 +7283,7 @@ "nth-check": "^2.1.1", "postcss-selector-parser": "^6.0.15", "semver": "^7.6.0", - "vue-eslint-parser": "^9.4.2", + "vue-eslint-parser": "^9.4.3", "xml-name-validator": "^4.0.0" }, "engines": { @@ -6842,11 +7293,39 @@ "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" } }, + "node_modules/eslint-plugin-vue-scoped-css": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue-scoped-css/-/eslint-plugin-vue-scoped-css-2.8.0.tgz", + "integrity": "sha512-JXb3Um4+AhuDGxSX6FAGCI0p811xF7W8L7yxC8wmAEZEI/teTjlpC09noqQZHXn53RZ/TGQJ8Onaq4teYLxBbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "eslint-compat-utils": "^0.5.0", + "lodash": "^4.17.21", + "postcss": "^8.4.31", + "postcss-safe-parser": "^6.0.0", + "postcss-scss": "^4.0.3", + "postcss-selector-parser": "^6.0.9", + "postcss-styl": "^0.12.0" + }, + "engines": { + "node": "^12.22 || ^14.17 || >=16" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "eslint": ">=5.0.0", + "vue-eslint-parser": ">=7.1.0" + } + }, "node_modules/eslint-plugin-vue/node_modules/globals": { "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -6857,26 +7336,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-vue/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint-plugin-vue/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -6884,17 +7349,12 @@ "node": ">=10" } }, - "node_modules/eslint-plugin-vue/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -6908,6 +7368,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10" } @@ -6917,6 +7378,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -6932,6 +7394,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6948,6 +7411,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -6959,13 +7423,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -6978,6 +7444,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -6994,6 +7461,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -7006,6 +7474,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -7015,6 +7484,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -7030,6 +7500,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7039,6 +7510,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -7051,6 +7523,7 @@ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -7068,6 +7541,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -7080,6 +7554,7 @@ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -7092,6 +7567,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -7101,6 +7577,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -7113,6 +7590,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -7122,6 +7600,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -7130,13 +7609,15 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -7145,13 +7626,15 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/execa": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", @@ -7175,6 +7658,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -7185,19 +7669,22 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" }, "node_modules/fast-diff": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -7214,6 +7701,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -7225,18 +7713,21 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "license": "MIT", "engines": { "node": ">= 4.9.1" } @@ -7246,6 +7737,7 @@ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -7255,6 +7747,7 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -7265,13 +7758,15 @@ "node_modules/file-saver": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", - "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==", + "license": "MIT" }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -7284,6 +7779,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -7300,6 +7796,7 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", @@ -7313,13 +7810,15 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/flush-promises": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/flush-promises/-/flush-promises-1.0.2.tgz", "integrity": "sha512-G0sYfLQERwKz4+4iOZYQEZVpOt9zQrlItIxQAAYAWpfby3gbHrx0osCHz5RLl/XoXevXk0xoN4hDFky/VV9TrA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/follow-redirects": { "version": "1.15.6", @@ -7331,6 +7830,7 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -7344,6 +7844,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-2.0.2.tgz", "integrity": "sha512-jc4k5Yr8iov8QfS6u8w2CnHWVmbOGtdBtOXMze5Y+QD966Rx6PEVWXSEGwXlsDlKtu1G12cJjcsybnqhSk/+LA==", + "license": "MIT", "dependencies": { "@swc/helpers": "^0.4.2", "brotli": "^1.3.2", @@ -7360,15 +7861,17 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } }, "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", "dev": true, + "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -7384,6 +7887,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -7398,6 +7902,7 @@ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "dev": true, + "license": "MIT", "engines": { "node": "*" }, @@ -7410,7 +7915,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", @@ -7418,6 +7924,7 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -7430,6 +7937,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7439,6 +7947,7 @@ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -7457,6 +7966,7 @@ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7466,6 +7976,7 @@ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -7475,6 +7986,7 @@ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -7487,6 +7999,7 @@ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -7495,6 +8008,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -7514,6 +8028,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -7526,6 +8041,7 @@ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "es-errors": "^1.3.0", @@ -7539,10 +8055,11 @@ } }, "node_modules/get-tsconfig": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz", - "integrity": "sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", + "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", "dev": true, + "license": "MIT", "dependencies": { "resolve-pkg-maps": "^1.0.0" }, @@ -7555,6 +8072,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "minimatch": "^8.0.2", @@ -7573,6 +8091,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -7585,6 +8104,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -7594,6 +8114,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -7609,17 +8130,20 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, + "license": "MIT", "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -7632,6 +8156,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -7643,18 +8168,21 @@ "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/hal-json-normalizer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/hal-json-normalizer/-/hal-json-normalizer-4.2.0.tgz", "integrity": "sha512-TnlN4OzP/RPTCRC/+Zy9qjt9mefSHEjQrI2RQPERahBsOh5gPnUnpuH2DfIM3NiMdlCNQaTQuyhU1oJ0L4vNEg==", + "license": "MIT", "dependencies": { "lodash": "^4.17.15" }, @@ -7666,6 +8194,7 @@ "version": "2.0.0-alpha.16", "resolved": "https://registry.npmjs.org/hal-json-vuex/-/hal-json-vuex-2.0.0-alpha.16.tgz", "integrity": "sha512-7OtQtJLr9Od4giw27ryINOYlM/6dvNZlcQiiseINq8qKrpc5dV9hLo4QOvKy8YGgnQOXYnCMSJ55/7XM+qiPGg==", + "license": "MIT", "dependencies": { "hal-json-normalizer": "^4.2.0", "url-template": "^2.0.8" @@ -7677,13 +8206,15 @@ "node_modules/hal-json-vuex/node_modules/url-template": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", - "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==" + "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==", + "license": "BSD" }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7693,6 +8224,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -7701,6 +8233,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -7712,6 +8245,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -7723,6 +8257,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -7734,6 +8269,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -7748,12 +8284,14 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -7766,6 +8304,7 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, + "license": "MIT", "bin": { "he": "bin/he" } @@ -7774,6 +8313,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/hsl-to-hex/-/hsl-to-hex-1.0.0.tgz", "integrity": "sha512-K6GVpucS5wFf44X0h2bLVRDsycgJmf9FF2elg+CrqD8GcFU8c6vYhgXn8NjUkFCwj+xDFb70qgLbTUm6sxwPmA==", + "license": "MIT", "dependencies": { "hsl-to-rgb-for-reals": "^1.1.0" } @@ -7781,13 +8321,15 @@ "node_modules/hsl-to-rgb-for-reals": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/hsl-to-rgb-for-reals/-/hsl-to-rgb-for-reals-1.1.1.tgz", - "integrity": "sha512-LgOWAkrN0rFaQpfdWBQlv/VhkOxb5AsBjk6NQVx4yEzWS923T07X0M1Y0VNko2H52HeSpZrZNNMJ0aFqsdVzQg==" + "integrity": "sha512-LgOWAkrN0rFaQpfdWBQlv/VhkOxb5AsBjk6NQVx4yEzWS923T07X0M1Y0VNko2H52HeSpZrZNNMJ0aFqsdVzQg==", + "license": "ISC" }, "node_modules/html-encoding-sniffer": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-encoding": "^3.1.1" }, @@ -7799,13 +8341,15 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/html-tags": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -7825,6 +8369,7 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", @@ -7837,6 +8382,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -7850,6 +8396,7 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.4" }, @@ -7862,6 +8409,7 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -7875,6 +8423,7 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=16.17.0" } @@ -7882,13 +8431,15 @@ "node_modules/hyphen": { "version": "1.10.4", "resolved": "https://registry.npmjs.org/hyphen/-/hyphen-1.10.4.tgz", - "integrity": "sha512-SejXzIpv9gOVdDWXd4suM1fdF1k2dxZGvuTdkOVLoazYfK7O4DykIQbdrvuyG+EaTNlXAGhMndtKrhykgbt0gg==" + "integrity": "sha512-SejXzIpv9gOVdDWXd4suM1fdF1k2dxZGvuTdkOVLoazYfK7O4DykIQbdrvuyG+EaTNlXAGhMndtKrhykgbt0gg==", + "license": "ISC" }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -7901,20 +8452,17 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" - }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -7931,6 +8479,7 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -7940,6 +8489,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7948,7 +8498,9 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -7957,24 +8509,28 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/inter-ui": { "version": "3.19.3", "resolved": "https://registry.npmjs.org/inter-ui/-/inter-ui-3.19.3.tgz", - "integrity": "sha512-5FG9fjuYOXocIfjzcCBhICL5cpvwEetseL3FU6tP3d6Bn7g8wODhB+I9RNGRTizCT7CUG4GOK54OPxqq3msQgg==" + "integrity": "sha512-5FG9fjuYOXocIfjzcCBhICL5cpvwEetseL3FU6tP3d6Bn7g8wODhB+I9RNGRTizCT7CUG4GOK54OPxqq3msQgg==", + "license": "OFL-1.1" }, "node_modules/internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.0", @@ -7988,6 +8544,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -8004,6 +8561,7 @@ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1" @@ -8018,13 +8576,15 @@ "node_modules/is-arrayish": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT" }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, + "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" }, @@ -8037,6 +8597,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -8049,6 +8610,7 @@ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -8064,12 +8626,14 @@ "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8082,6 +8646,7 @@ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.0" }, @@ -8094,6 +8659,7 @@ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "dev": true, + "license": "MIT", "dependencies": { "is-typed-array": "^1.1.13" }, @@ -8109,6 +8675,7 @@ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -8124,6 +8691,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8133,6 +8701,7 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8142,6 +8711,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -8153,6 +8723,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -8168,6 +8739,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -8180,6 +8752,7 @@ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8191,6 +8764,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3" @@ -8207,6 +8781,7 @@ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8219,6 +8794,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -8228,6 +8804,7 @@ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -8243,6 +8820,7 @@ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -8251,13 +8829,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -8274,6 +8854,7 @@ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8286,6 +8867,7 @@ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7" }, @@ -8301,6 +8883,7 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -8313,6 +8896,7 @@ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -8328,6 +8912,7 @@ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -8342,6 +8927,7 @@ "version": "1.1.13", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "license": "MIT", "dependencies": { "which-typed-array": "^1.1.14" }, @@ -8355,13 +8941,15 @@ "node_modules/is-url": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "license": "MIT" }, "node_modules/is-weakmap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8374,6 +8962,7 @@ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -8386,6 +8975,7 @@ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "get-intrinsic": "^1.2.4" @@ -8402,6 +8992,7 @@ "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", "integrity": "sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8410,19 +9001,22 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } @@ -8432,6 +9026,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -8446,6 +9041,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -8455,6 +9051,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -8467,6 +9064,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.4.tgz", "integrity": "sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@jridgewell/trace-mapping": "^0.3.23", "debug": "^4.1.1", @@ -8481,6 +9079,7 @@ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -8490,10 +9089,11 @@ } }, "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", + "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -8511,6 +9111,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/jay-peg/-/jay-peg-1.0.2.tgz", "integrity": "sha512-fyV3NVvv6pTys/3BTapBUGAWAuU9rM2gRcgijZHzptd5KKL+s+S7hESFN+wOsbDH1MzFwdlRAXi0aGxS6uiMKg==", + "license": "MIT", "dependencies": { "restructure": "^3.0.0" } @@ -8520,6 +9121,7 @@ "resolved": "https://registry.npmjs.org/jest-canvas-mock/-/jest-canvas-mock-2.5.2.tgz", "integrity": "sha512-vgnpPupjOL6+L5oJXzxTxFrlGEIbHdZqFU+LFNdtLxZ3lRDCl17FlTMM7IatoRQkrcyOTMlDinjUguqmQ6bR2A==", "dev": true, + "license": "MIT", "dependencies": { "cssfontparser": "^1.2.1", "moo-color": "^1.0.2" @@ -8530,6 +9132,7 @@ "resolved": "https://registry.npmjs.org/jest-serializer-vue-tjw/-/jest-serializer-vue-tjw-3.20.0.tgz", "integrity": "sha512-N49cGTHbc1Fd06rZt1DxwWMksJmMrY5CMQPwJbTPC13htAYBKhFDSJ0lzWHdyX1EfWClYhN1gX+aHkTOvhRTqg==", "dev": true, + "license": "MIT", "dependencies": { "cheerio": "^1.0.0-rc.3", "htmlparser2": "^9.0.0", @@ -8546,6 +9149,7 @@ "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.1.tgz", "integrity": "sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==", "dev": true, + "license": "MIT", "dependencies": { "config-chain": "^1.1.13", "editorconfig": "^1.0.4", @@ -8567,27 +9171,29 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/js-beautify/node_modules/glob": { - "version": "10.3.12", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", - "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", + "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.10.2" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -8598,6 +9204,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -8609,10 +9216,11 @@ } }, "node_modules/js-beautify/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -8621,6 +9229,7 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "license": "MIT", "engines": { "node": ">=14" } @@ -8629,13 +9238,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -8644,31 +9255,32 @@ } }, "node_modules/jsdom": { - "version": "24.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.0.0.tgz", - "integrity": "sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A==", + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.0.tgz", + "integrity": "sha512-6gpM7pRXCwIOKxX47cgOyvyQDN/Eh0f1MeKySBV2xGdKtqJBLj8P25eY3EVCWo2mglDDzozR2r2MW4T+JiNUZA==", "dev": true, + "license": "MIT", "dependencies": { "cssstyle": "^4.0.1", "data-urls": "^5.0.0", "decimal.js": "^10.4.3", "form-data": "^4.0.0", "html-encoding-sniffer": "^4.0.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.2", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.4", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.7", + "nwsapi": "^2.2.10", "parse5": "^7.1.2", - "rrweb-cssom": "^0.6.0", + "rrweb-cssom": "^0.7.0", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.3", + "tough-cookie": "^4.1.4", "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^7.0.0", "whatwg-encoding": "^3.1.1", "whatwg-mimetype": "^4.0.0", "whatwg-url": "^14.0.0", - "ws": "^8.16.0", + "ws": "^8.17.0", "xml-name-validator": "^5.0.0" }, "engines": { @@ -8688,6 +9300,7 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.4" }, @@ -8700,6 +9313,7 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.0.2", "debug": "4" @@ -8713,6 +9327,7 @@ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=18" } @@ -8722,6 +9337,7 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -8733,25 +9349,29 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -8764,6 +9384,7 @@ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -8773,6 +9394,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, + "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" }, @@ -8785,6 +9407,7 @@ "version": "0.4.14", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", + "license": "MIT", "dependencies": { "tslib": "^2.4.0" } @@ -8794,6 +9417,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -8802,47 +9426,45 @@ "node": ">= 0.8.0" } }, - "node_modules/lie": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", - "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", - "dependencies": { - "immediate": "~3.0.5" - } - }, "node_modules/lilconfig": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", - "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", "dev": true, + "license": "MIT", "engines": { "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, "node_modules/linkify-it": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", - "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "license": "MIT", "dependencies": { - "uc.micro": "^1.0.1" + "uc.micro": "^2.0.0" } }, "node_modules/lint-staged": { - "version": "15.2.2", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.2.tgz", - "integrity": "sha512-TiTt93OPh1OZOsb5B7k96A/ATl2AjIZo+vnzFZ6oHK5FuTk63ByDtxGQpHm+kFETjEWqgkF95M8FRXKR/LEBcw==", - "dev": true, - "dependencies": { - "chalk": "5.3.0", - "commander": "11.1.0", - "debug": "4.3.4", - "execa": "8.0.1", - "lilconfig": "3.0.0", - "listr2": "8.0.1", - "micromatch": "4.0.5", - "pidtree": "0.6.0", - "string-argv": "0.3.2", - "yaml": "2.3.4" + "version": "15.2.7", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.7.tgz", + "integrity": "sha512-+FdVbbCZ+yoh7E/RosSdqKJyUM2OEjTciH0TFNkawKgvFp1zbGlEC39RADg+xKBG1R4mhoH2j85myBQZ5wR+lw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "~5.3.0", + "commander": "~12.1.0", + "debug": "~4.3.4", + "execa": "~8.0.1", + "lilconfig": "~3.1.1", + "listr2": "~8.2.1", + "micromatch": "~4.0.7", + "pidtree": "~0.6.0", + "string-argv": "~0.3.2", + "yaml": "~2.4.2" }, "bin": { "lint-staged": "bin/lint-staged.js" @@ -8859,6 +9481,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -8867,25 +9490,27 @@ } }, "node_modules/lint-staged/node_modules/commander": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/listr2": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.0.1.tgz", - "integrity": "sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.1.tgz", + "integrity": "sha512-irTfvpib/rNiD637xeevjO2l3Z5loZmuaRi0L0YE5LfijwVY96oyVn0DFD3o/teAok7nfobMG1THvvcHh/BP6g==", "dev": true, + "license": "MIT", "dependencies": { "cli-truncate": "^4.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.0.0", - "rfdc": "^1.3.0", + "rfdc": "^1.3.1", "wrap-ansi": "^9.0.0" }, "engines": { @@ -8893,10 +9518,15 @@ } }, "node_modules/local-pkg": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", - "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", "dev": true, + "license": "MIT", + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, "engines": { "node": ">=14" }, @@ -8904,19 +9534,12 @@ "url": "https://github.com/sponsors/antfu" } }, - "node_modules/localforage": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", - "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", - "dependencies": { - "lie": "3.1.1" - } - }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -8930,37 +9553,50 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" }, "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.kebabcase": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.sortedlastindex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.sortedlastindex/-/lodash.sortedlastindex-4.1.0.tgz", + "integrity": "sha512-s8xEQdsp2Tu5zUqVdFSe9C0kR8YlnAJYLqMdkh+pIRBRxF6/apWseLdHl3/+jv2I61dhPwtI/Ff+EqvCpc+N8w==", + "dev": true, + "license": "MIT" }, "node_modules/log-update": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.0.0.tgz", "integrity": "sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==", "dev": true, + "license": "MIT", "dependencies": { "ansi-escapes": "^6.2.0", "cli-cursor": "^4.0.0", @@ -8980,6 +9616,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -8992,6 +9629,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -9004,6 +9642,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", "dev": true, + "license": "MIT", "dependencies": { "get-east-asian-width": "^1.0.0" }, @@ -9019,6 +9658,7 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^5.0.0" @@ -9035,6 +9675,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -9050,6 +9691,7 @@ "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, + "license": "MIT", "dependencies": { "get-func-name": "^2.0.1" } @@ -9059,6 +9701,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^3.0.2" } @@ -9068,6 +9711,7 @@ "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", "dev": true, + "license": "MIT", "bin": { "lz-string": "bin/bin.js" } @@ -9077,6 +9721,7 @@ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" }, @@ -9089,6 +9734,7 @@ "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.4.tgz", "integrity": "sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.24.4", "@babel/types": "^7.24.0", @@ -9100,6 +9746,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -9110,26 +9757,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/make-dir/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -9137,16 +9770,11 @@ "node": ">=10" } }, - "node_modules/make-dir/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/markdown-it": { "version": "14.1.0", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "license": "MIT", "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", @@ -9159,40 +9787,31 @@ "markdown-it": "bin/markdown-it.mjs" } }, - "node_modules/markdown-it/node_modules/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", - "dependencies": { - "uc.micro": "^2.0.0" - } - }, - "node_modules/markdown-it/node_modules/uc.micro": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==" - }, "node_modules/mdn-data": { "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/mdurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==" + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "license": "MIT" }, "node_modules/media-engine": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/media-engine/-/media-engine-1.0.3.tgz", - "integrity": "sha512-aa5tG6sDoK+k70B9iEX1NeyfT8ObCKhNDs6lJVpwF6r8vhUfuKMslIcirq6HIUYuuUYLefcEQOn9bSBOvawtwg==" + "integrity": "sha512-aa5tG6sDoK+k70B9iEX1NeyfT8ObCKhNDs6lJVpwF6r8vhUfuKMslIcirq6HIUYuuUYLefcEQOn9bSBOvawtwg==", + "license": "MIT" }, "node_modules/merge-source-map": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", "dev": true, + "license": "MIT", "dependencies": { "source-map": "^0.6.1" } @@ -9202,6 +9821,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -9210,24 +9830,27 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, + "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -9238,6 +9861,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -9246,6 +9870,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -9258,6 +9883,7 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -9270,6 +9896,7 @@ "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -9279,6 +9906,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -9291,6 +9919,7 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9300,20 +9929,22 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=8" } }, "node_modules/mlly": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.6.1.tgz", - "integrity": "sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.1.tgz", + "integrity": "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==", "dev": true, + "license": "MIT", "dependencies": { "acorn": "^8.11.3", "pathe": "^1.1.2", - "pkg-types": "^1.0.3", - "ufo": "^1.3.2" + "pkg-types": "^1.1.1", + "ufo": "^1.5.3" } }, "node_modules/moo-color": { @@ -9321,6 +9952,7 @@ "resolved": "https://registry.npmjs.org/moo-color/-/moo-color-1.0.3.tgz", "integrity": "sha512-i/+ZKXMDf6aqYtBhuOcej71YSlbjT3wCO/4H1j8rPvxDJEifdwgg5MaFyu6iYAT8GBZJg2z0dkgK4YMzvURALQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "^1.1.4" } @@ -9329,13 +9961,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nanoid": { "version": "3.3.7", @@ -9347,6 +9981,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -9358,12 +9993,14 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -9382,17 +10019,20 @@ "node_modules/node-fetch/node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" }, "node_modules/node-fetch/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" }, "node_modules/node-fetch/node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -9402,13 +10042,15 @@ "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nopt": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", - "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", "dev": true, + "license": "ISC", "dependencies": { "abbrev": "^2.0.0" }, @@ -9424,6 +10066,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9433,6 +10076,7 @@ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9441,6 +10085,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/normalize-svg-path/-/normalize-svg-path-1.1.0.tgz", "integrity": "sha512-r9KHKG2UUeB5LoTouwDzBy2VxXlHsiM6fyLQvnJa0S5hrhzqElH/CH7TUGhT1fVvIYBIKf3OpY4YJ4CK+iaqHg==", + "license": "MIT", "dependencies": { "svg-arc-to-cubic-bezier": "^3.0.0" } @@ -9450,6 +10095,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^4.0.0" }, @@ -9465,6 +10111,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -9477,6 +10124,7 @@ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -9485,16 +10133,18 @@ } }, "node_modules/nwsapi": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.9.tgz", - "integrity": "sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==", - "dev": true + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz", + "integrity": "sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==", + "dev": true, + "license": "MIT" }, "node_modules/object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9503,6 +10153,7 @@ "version": "1.1.6", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1" @@ -9518,6 +10169,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -9526,6 +10178,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -9544,6 +10197,7 @@ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -9562,6 +10216,7 @@ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -9576,6 +10231,7 @@ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -9593,6 +10249,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -9602,6 +10259,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^4.0.0" }, @@ -9613,17 +10271,18 @@ } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -9632,13 +10291,15 @@ "node_modules/orderedmap": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz", - "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==" + "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==", + "license": "MIT" }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -9654,6 +10315,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -9667,13 +10329,15 @@ "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -9684,13 +10348,15 @@ "node_modules/parse-svg-path": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz", - "integrity": "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==" + "integrity": "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==", + "license": "MIT" }, "node_modules/parse5": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "dev": true, + "license": "MIT", "dependencies": { "entities": "^4.4.0" }, @@ -9703,6 +10369,7 @@ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", "dev": true, + "license": "MIT", "dependencies": { "domhandler": "^5.0.2", "parse5": "^7.0.0" @@ -9716,6 +10383,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -9725,6 +10393,7 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9734,6 +10403,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -9742,38 +10412,42 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-scurry": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", - "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", "dev": true, + "license": "ISC", "engines": { "node": "14 || >=16.14" } }, "node_modules/path-scurry/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -9782,27 +10456,31 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pathval": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -9815,6 +10493,7 @@ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", "dev": true, + "license": "MIT", "bin": { "pidtree": "bin/pidtree.js" }, @@ -9823,13 +10502,14 @@ } }, "node_modules/pkg-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.0.tgz", - "integrity": "sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.1.tgz", + "integrity": "sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==", "dev": true, + "license": "MIT", "dependencies": { "confbox": "^0.1.7", - "mlly": "^1.6.1", + "mlly": "^1.7.0", "pathe": "^1.1.2" } }, @@ -9837,14 +10517,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "version": "8.4.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", + "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", "funding": [ { "type": "opencollective", @@ -9859,20 +10540,66 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss-safe-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/postcss-scss": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", + "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-scss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.4.29" + } + }, "node_modules/postcss-selector-parser": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", - "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -9881,25 +10608,48 @@ "node": ">=4" } }, + "node_modules/postcss-styl": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/postcss-styl/-/postcss-styl-0.12.3.tgz", + "integrity": "sha512-8I7Cd8sxiEITIp32xBK4K/Aj1ukX6vuWnx8oY/oAH35NfQI4OZaY5nd68Yx8HeN5S49uhQ6DL0rNk0ZBu/TaLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "fast-diff": "^1.2.0", + "lodash.sortedlastindex": "^4.1.0", + "postcss": "^7.0.27 || ^8.0.0", + "stylus": "^0.57.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || ^11.10.1 || >=12.13.0" + }, + "funding": { + "url": "https://opencollective.com/stylus" + } + }, "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", + "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -9915,6 +10665,7 @@ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, + "license": "MIT", "dependencies": { "fast-diff": "^1.1.2" }, @@ -9927,6 +10678,7 @@ "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", "integrity": "sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==", "dev": true, + "license": "MIT", "dependencies": { "condense-newlines": "^0.2.1", "extend-shallow": "^2.0.1", @@ -9941,6 +10693,7 @@ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", @@ -9955,6 +10708,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -9967,6 +10721,7 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -9975,6 +10730,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.2.1.tgz", "integrity": "sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==", + "license": "MIT", "dependencies": { "prosemirror-transform": "^1.0.0" } @@ -9983,6 +10739,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz", "integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==", + "license": "MIT", "dependencies": { "prosemirror-state": "^1.0.0" } @@ -9991,6 +10748,7 @@ "version": "1.5.2", "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.5.2.tgz", "integrity": "sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==", + "license": "MIT", "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", @@ -10001,6 +10759,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz", "integrity": "sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==", + "license": "MIT", "dependencies": { "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.1.0", @@ -10011,6 +10770,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz", "integrity": "sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==", + "license": "MIT", "dependencies": { "prosemirror-keymap": "^1.0.0", "prosemirror-model": "^1.0.0", @@ -10022,6 +10782,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.4.0.tgz", "integrity": "sha512-UUiGzDVcqo1lovOPdi9YxxUps3oBFWAIYkXLu3Ot+JPv1qzVogRbcizxK3LhHmtaUxclohgiOVesRw5QSlMnbQ==", + "license": "MIT", "dependencies": { "prosemirror-state": "^1.2.2", "prosemirror-transform": "^1.0.0", @@ -10033,6 +10794,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.4.0.tgz", "integrity": "sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==", + "license": "MIT", "dependencies": { "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.0.0" @@ -10042,24 +10804,27 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz", "integrity": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==", + "license": "MIT", "dependencies": { "prosemirror-state": "^1.0.0", "w3c-keyname": "^2.2.0" } }, "node_modules/prosemirror-markdown": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.12.0.tgz", - "integrity": "sha512-6F5HS8Z0HDYiS2VQDZzfZP6A0s/I0gbkJy8NCzzDMtcsz3qrfqyroMMeoSjAmOhDITyon11NbXSzztfKi+frSQ==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.13.0.tgz", + "integrity": "sha512-UziddX3ZYSYibgx8042hfGKmukq5Aljp2qoBiJRejD/8MH70siQNz5RB1TrdTPheqLMy4aCe4GYNF10/3lQS5g==", + "license": "MIT", "dependencies": { "markdown-it": "^14.0.0", - "prosemirror-model": "^1.0.0" + "prosemirror-model": "^1.20.0" } }, "node_modules/prosemirror-menu": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.4.tgz", "integrity": "sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==", + "license": "MIT", "dependencies": { "crelt": "^1.0.0", "prosemirror-commands": "^1.0.0", @@ -10068,9 +10833,10 @@ } }, "node_modules/prosemirror-model": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.20.0.tgz", - "integrity": "sha512-q7AY7vMjKYqDCeoedgUiAgrLabliXxndJuuFmcmc2+YU1SblvnOiG2WEACF2lwAZsMlfLpiAilA3L+TWlDqIsQ==", + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.21.1.tgz", + "integrity": "sha512-IVBAuMqOfltTr7yPypwpfdGT+6rGAteVOw2FO6GEvCGGa1ZwxLseqC1Eax/EChDvG/xGquB2d/hLdgh3THpsYg==", + "license": "MIT", "dependencies": { "orderedmap": "^2.0.0" } @@ -10079,14 +10845,16 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.2.tgz", "integrity": "sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw==", + "license": "MIT", "dependencies": { "prosemirror-model": "^1.19.0" } }, "node_modules/prosemirror-schema-list": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.3.0.tgz", - "integrity": "sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.4.0.tgz", + "integrity": "sha512-nZOIq/AkBSzCENxUyLm5ltWE53e2PLk65ghMN8qLQptOmDVixZlPqtMeQdiNw0odL9vNpalEjl3upgRkuJ/Jyw==", + "license": "MIT", "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", @@ -10097,6 +10865,7 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz", "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==", + "license": "MIT", "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-transform": "^1.0.0", @@ -10107,6 +10876,7 @@ "version": "1.3.7", "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.3.7.tgz", "integrity": "sha512-oEwX1wrziuxMtwFvdDWSFHVUWrFJWt929kVVfHvtTi8yvw+5ppxjXZkMG/fuTdFo+3DXyIPSKfid+Be1npKXDA==", + "license": "MIT", "dependencies": { "prosemirror-keymap": "^1.1.2", "prosemirror-model": "^1.8.1", @@ -10119,6 +10889,7 @@ "version": "2.0.8", "resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.8.tgz", "integrity": "sha512-ujRYhSuhQb1Jsarh1IHqb2KoSnRiD7wAMDGucP35DN7j5af6X7B18PfdPIrbwsPTqIAj0fyOvxbuPsWhNvylmA==", + "license": "MIT", "dependencies": { "@remirror/core-constants": "^2.0.2", "escape-string-regexp": "^4.0.0" @@ -10133,6 +10904,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -10141,17 +10913,19 @@ } }, "node_modules/prosemirror-transform": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.8.0.tgz", - "integrity": "sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.9.0.tgz", + "integrity": "sha512-5UXkr1LIRx3jmpXXNKDhv8OyAOeLTGuXNwdVfg8x27uASna/wQkr9p6fD3eupGOi4PLJfbezxTyi/7fSJypXHg==", + "license": "MIT", "dependencies": { - "prosemirror-model": "^1.0.0" + "prosemirror-model": "^1.21.0" } }, "node_modules/prosemirror-view": { - "version": "1.33.5", - "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.5.tgz", - "integrity": "sha512-AbYYLgg2h5CLARLcTtbNrMARlMwV51jTrezcJkV0NS9J4vi28+rhJ45iIWVSjCcRY209BoySDuJ58b8wIFqdmQ==", + "version": "1.33.8", + "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.8.tgz", + "integrity": "sha512-4PhMr/ufz2cdvFgpUAnZfs+0xij3RsFysreeG9V/utpwX7AJtYCDVyuRxzWoMJIEf4C7wVihuBNMPpFLPCiLQw==", + "license": "MIT", "dependencies": { "prosemirror-model": "^1.20.0", "prosemirror-state": "^1.0.0", @@ -10162,30 +10936,35 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" }, "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -10194,6 +10973,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -10202,12 +10982,14 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/queue": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "license": "MIT", "dependencies": { "inherits": "~2.0.3" } @@ -10230,19 +11012,22 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -10253,13 +11038,15 @@ "node_modules/recaptcha-v3": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/recaptcha-v3/-/recaptcha-v3-1.10.0.tgz", - "integrity": "sha512-aGTxYSk3FFNKnXeKDbLpgRDRyIHRZNBF5HyaXXAN1Aj4TSyyZvmoAn9CylvpqLV3pYpIQavwc+2rzhNFn5SsLQ==" + "integrity": "sha512-aGTxYSk3FFNKnXeKDbLpgRDRyIHRZNBF5HyaXXAN1Aj4TSyyZvmoAn9CylvpqLV3pYpIQavwc+2rzhNFn5SsLQ==", + "license": "Apache-2.0" }, "node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, + "license": "MIT", "dependencies": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" @@ -10272,13 +11059,15 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regenerate-unicode-properties": { "version": "10.1.1", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "dev": true, + "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -10289,13 +11078,15 @@ "node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" }, "node_modules/regenerator-transform": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.4" } @@ -10305,6 +11096,7 @@ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "define-properties": "^1.2.1", @@ -10323,6 +11115,7 @@ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", @@ -10340,6 +11133,7 @@ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "jsesc": "~0.5.0" }, @@ -10360,6 +11154,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -10368,18 +11163,21 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/resize-observer-polyfill": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", + "license": "MIT" }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -10397,6 +11195,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -10406,6 +11205,7 @@ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } @@ -10415,6 +11215,7 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", "dev": true, + "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -10431,6 +11232,7 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -10440,6 +11242,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -10454,34 +11257,40 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/restructure": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.1.tgz", - "integrity": "sha512-6neDpI/yE9eogQo22qmWwKIA9wFPRyYjQleDEh6zaNAf2ZPqLJYUvNBJBWEWNoBlCeQMQkvIOe2YI/K2GOag+g==" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", + "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==", + "license": "MIT" }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, "node_modules/rfdc": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", - "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", - "dev": true + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -10496,7 +11305,9 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -10513,10 +11324,11 @@ } }, "node_modules/rollup": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.16.4.tgz", - "integrity": "sha512-kuaTJSUbz+Wsb2ATGvEknkI12XV40vIiHmLuFlejoo7HtDok/O5eDDD0UpCVY5bBX5U5RYo8wWP83H7ZsqVEnA==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", + "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "1.0.5" }, @@ -10528,35 +11340,37 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.16.4", - "@rollup/rollup-android-arm64": "4.16.4", - "@rollup/rollup-darwin-arm64": "4.16.4", - "@rollup/rollup-darwin-x64": "4.16.4", - "@rollup/rollup-linux-arm-gnueabihf": "4.16.4", - "@rollup/rollup-linux-arm-musleabihf": "4.16.4", - "@rollup/rollup-linux-arm64-gnu": "4.16.4", - "@rollup/rollup-linux-arm64-musl": "4.16.4", - "@rollup/rollup-linux-powerpc64le-gnu": "4.16.4", - "@rollup/rollup-linux-riscv64-gnu": "4.16.4", - "@rollup/rollup-linux-s390x-gnu": "4.16.4", - "@rollup/rollup-linux-x64-gnu": "4.16.4", - "@rollup/rollup-linux-x64-musl": "4.16.4", - "@rollup/rollup-win32-arm64-msvc": "4.16.4", - "@rollup/rollup-win32-ia32-msvc": "4.16.4", - "@rollup/rollup-win32-x64-msvc": "4.16.4", + "@rollup/rollup-android-arm-eabi": "4.18.0", + "@rollup/rollup-android-arm64": "4.18.0", + "@rollup/rollup-darwin-arm64": "4.18.0", + "@rollup/rollup-darwin-x64": "4.18.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", + "@rollup/rollup-linux-arm-musleabihf": "4.18.0", + "@rollup/rollup-linux-arm64-gnu": "4.18.0", + "@rollup/rollup-linux-arm64-musl": "4.18.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", + "@rollup/rollup-linux-riscv64-gnu": "4.18.0", + "@rollup/rollup-linux-s390x-gnu": "4.18.0", + "@rollup/rollup-linux-x64-gnu": "4.18.0", + "@rollup/rollup-linux-x64-musl": "4.18.0", + "@rollup/rollup-win32-arm64-msvc": "4.18.0", + "@rollup/rollup-win32-ia32-msvc": "4.18.0", + "@rollup/rollup-win32-x64-msvc": "4.18.0", "fsevents": "~2.3.2" } }, "node_modules/rope-sequence": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", - "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==" + "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==", + "license": "MIT" }, "node_modules/rrweb-cssom": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", - "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", - "dev": true + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", + "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", + "dev": true, + "license": "MIT" }, "node_modules/run-parallel": { "version": "1.2.0", @@ -10577,6 +11391,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -10585,6 +11400,7 @@ "version": "0.4.3", "resolved": "https://registry.npmjs.org/runes/-/runes-0.4.3.tgz", "integrity": "sha512-K6p9y4ZyL9wPzA+PMDloNQPfoDGTiFYDvdlXznyGKgD10BJpcAosvATKrExRKOrNLgD8E7Um7WGW0lxsnOuNLg==", + "license": "MIT", "engines": { "node": ">=4.0.0" } @@ -10594,6 +11410,7 @@ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "get-intrinsic": "^1.2.4", @@ -10624,13 +11441,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safe-regex-test": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -10647,13 +11466,15 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/sass": { "version": "1.32.13", "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.13.tgz", "integrity": "sha512-dEgI9nShraqP7cXQH+lEXVf73WOPCse0QlFzSD8k+1TcOxCMwVXfQlr0jtoluZysQOyJGnfr21dLvYKDJq8HkA==", "dev": true, + "license": "MIT", "dependencies": { "chokidar": ">=3.0.0 <4.0.0" }, @@ -10664,11 +11485,19 @@ "node": ">=8.9.0" } }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true, + "license": "ISC" + }, "node_modules/saxes": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "dev": true, + "license": "ISC", "dependencies": { "xmlchars": "^2.2.0" }, @@ -10681,6 +11510,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -10689,6 +11519,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -10706,6 +11537,7 @@ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -10721,6 +11553,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -10733,6 +11566,7 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -10742,6 +11576,7 @@ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -10759,13 +11594,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -10777,6 +11614,7 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", "dependencies": { "is-arrayish": "^0.3.1" } @@ -10786,6 +11624,7 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.0.0", "is-fullwidth-code-point": "^4.0.0" @@ -10802,6 +11641,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -10813,6 +11653,7 @@ "version": "1.6.6", "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", + "license": "MIT", "engines": { "node": ">=8.0.0" } @@ -10820,13 +11661,15 @@ "node_modules/sortablejs": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.2.tgz", - "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A==" + "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A==", + "license": "MIT" }, "node_modules/source-map": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">= 8" } @@ -10835,27 +11678,43 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, + "node_modules/source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "license": "MIT", + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, "node_modules/stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/std-env": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/stop-iteration-iterator": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", "dev": true, + "license": "MIT", "dependencies": { "internal-slot": "^1.0.4" }, @@ -10867,6 +11726,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } @@ -10876,6 +11736,7 @@ "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6.19" } @@ -10885,6 +11746,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", @@ -10903,6 +11765,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -10916,13 +11779,15 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -10932,6 +11797,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -10944,6 +11810,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -10959,6 +11826,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -10977,6 +11845,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -10991,6 +11860,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -11008,6 +11878,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -11021,6 +11892,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -11033,6 +11905,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -11042,6 +11915,7 @@ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -11054,6 +11928,7 @@ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, + "license": "MIT", "dependencies": { "min-indent": "^1.0.0" }, @@ -11066,6 +11941,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -11078,6 +11954,7 @@ "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", "dev": true, + "license": "MIT", "dependencies": { "js-tokens": "^9.0.0" }, @@ -11089,13 +11966,58 @@ "version": "9.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/stylus": { + "version": "0.57.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.57.0.tgz", + "integrity": "sha512-yOI6G8WYfr0q8v8rRvE91wbxFU+rJPo760Va4MF6K0I6BZjO4r+xSynkvyPBP9tV1CIEUeRsiidjIs2rzb1CnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "css": "^3.0.0", + "debug": "^4.3.2", + "glob": "^7.1.6", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "source-map": "^0.7.3" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" + } + }, + "node_modules/stylus/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -11108,6 +12030,7 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -11118,7 +12041,8 @@ "node_modules/svg-arc-to-cubic-bezier": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/svg-arc-to-cubic-bezier/-/svg-arc-to-cubic-bezier-3.2.0.tgz", - "integrity": "sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g==" + "integrity": "sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g==", + "license": "ISC" }, "node_modules/svg-tags": { "version": "1.0.0", @@ -11127,10 +12051,11 @@ "dev": true }, "node_modules/svgo": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.2.0.tgz", - "integrity": "sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", "dev": true, + "license": "MIT", "dependencies": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", @@ -11156,6 +12081,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } @@ -11164,13 +12090,15 @@ "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/synckit": { "version": "0.8.8", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", "dev": true, + "license": "MIT", "dependencies": { "@pkgr/core": "^0.1.0", "tslib": "^2.6.2" @@ -11187,6 +12115,7 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -11196,6 +12125,7 @@ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -11209,7 +12139,9 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -11229,24 +12161,28 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tiny-inflate": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", - "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "license": "MIT" }, "node_modules/tinybench": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.8.0.tgz", "integrity": "sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tinypool": { "version": "0.8.4", "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -11256,6 +12192,7 @@ "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -11264,6 +12201,7 @@ "version": "6.3.7", "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz", "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", + "license": "MIT", "dependencies": { "@popperjs/core": "^2.9.0" } @@ -11273,6 +12211,7 @@ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -11282,6 +12221,7 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -11290,10 +12230,11 @@ } }, "node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", @@ -11309,6 +12250,7 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", "dev": true, + "license": "MIT", "dependencies": { "punycode": "^2.3.1" }, @@ -11321,6 +12263,7 @@ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", @@ -11333,6 +12276,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -11341,15 +12285,17 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -11362,6 +12308,7 @@ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -11371,6 +12318,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -11383,6 +12331,7 @@ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -11397,6 +12346,7 @@ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -11416,6 +12366,7 @@ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -11436,6 +12387,7 @@ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -11452,21 +12404,24 @@ } }, "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" }, "node_modules/ufo": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz", "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -11482,6 +12437,7 @@ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -11491,6 +12447,7 @@ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, + "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -11504,6 +12461,7 @@ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -11512,6 +12470,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "license": "MIT", "dependencies": { "base64-js": "^1.3.0", "unicode-trie": "^2.0.0" @@ -11522,6 +12481,7 @@ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -11530,6 +12490,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "license": "MIT", "dependencies": { "pako": "^0.2.5", "tiny-inflate": "^1.0.0" @@ -11538,13 +12499,15 @@ "node_modules/unicode-trie/node_modules/pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==" + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "license": "MIT" }, "node_modules/universalify": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0" } @@ -11554,6 +12517,7 @@ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.0.1.tgz", "integrity": "sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==", "dev": true, + "license": "MIT", "dependencies": { "acorn": "^8.8.1", "chokidar": "^3.5.3", @@ -11562,21 +12526,22 @@ } }, "node_modules/unplugin-vue-components": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-0.26.0.tgz", - "integrity": "sha512-s7IdPDlnOvPamjunVxw8kNgKNK8A5KM1YpK5j/p97jEKTjlPNrA0nZBiSfAKKlK1gWZuyWXlKL5dk3EDw874LQ==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-0.27.0.tgz", + "integrity": "sha512-77eTEy23sQ0UpzGWnZ9I2mY3cnmXwklz4ITcn3JfxjCoX643ghImkiZ4nFm58sxbdVcc4Fo/o4LIoFnlqEqsSg==", "dev": true, + "license": "MIT", "dependencies": { - "@antfu/utils": "^0.7.6", - "@rollup/pluginutils": "^5.0.4", - "chokidar": "^3.5.3", + "@antfu/utils": "^0.7.7", + "@rollup/pluginutils": "^5.1.0", + "chokidar": "^3.6.0", "debug": "^4.3.4", - "fast-glob": "^3.3.1", - "local-pkg": "^0.4.3", - "magic-string": "^0.30.3", - "minimatch": "^9.0.3", - "resolve": "^1.22.4", - "unplugin": "^1.4.0" + "fast-glob": "^3.3.2", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.10", + "minimatch": "^9.0.4", + "resolve": "^1.22.8", + "unplugin": "^1.10.1" }, "engines": { "node": ">=14" @@ -11603,15 +12568,27 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, + "node_modules/unplugin-vue-components/node_modules/magic-string": { + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, "node_modules/unplugin-vue-components/node_modules/minimatch": { "version": "9.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -11627,6 +12604,7 @@ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.10.1.tgz", "integrity": "sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==", "dev": true, + "license": "MIT", "dependencies": { "acorn": "^8.11.3", "chokidar": "^3.6.0", @@ -11638,15 +12616,16 @@ } }, "node_modules/unplugin-vue-components/node_modules/webpack-virtual-modules": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz", - "integrity": "sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==", - "dev": true + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "dev": true, + "license": "MIT" }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", "dev": true, "funding": [ { @@ -11662,9 +12641,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -11678,6 +12658,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -11687,6 +12668,7 @@ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, + "license": "MIT", "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -11696,6 +12678,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/url-template/-/url-template-3.1.1.tgz", "integrity": "sha512-4oszoaEKE/mQOtAmdMWqIRHmkxWkUZMnXFnjQ5i01CuRSK3uluxcH1MRVVVWmhlnzT1SCDfKxxficm2G37qzCA==", + "license": "BSD-3-Clause", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -11704,6 +12687,7 @@ "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -11715,16 +12699,18 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" }, "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -11733,6 +12719,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/v-resize-observer/-/v-resize-observer-2.1.0.tgz", "integrity": "sha512-QyTdSFAAtsP1/2ISR2hsz8PeEyxhaACqJXIzs5INlHXtu/pkMqyva8tHPWA54YejUyhxmU1bPriDBnW2cqbBcA==", + "license": "MIT", "dependencies": { "resize-observer-polyfill": "^1.5.1", "vue-demi": "latest" @@ -11748,10 +12735,11 @@ } }, "node_modules/v-resize-observer/node_modules/vue-demi": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", - "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "version": "0.14.8", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.8.tgz", + "integrity": "sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==", "hasInstallScript": true, + "license": "MIT", "bin": { "vue-demi-fix": "bin/vue-demi-fix.js", "vue-demi-switch": "bin/vue-demi-switch.js" @@ -11776,18 +12764,20 @@ "version": "3.4.15", "resolved": "https://registry.npmjs.org/vee-validate/-/vee-validate-3.4.15.tgz", "integrity": "sha512-qEtvq9X2N7l5pjBe/6YGrrIBHxJA4KTrb3QrER3qzM7fzkH730m8LyVWMIzM47l//618nlUa7VvTdMFTRKr8tQ==", + "license": "MIT", "peerDependencies": { "vue": "^2.5.18" } }, "node_modules/vite": { - "version": "5.2.10", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.10.tgz", - "integrity": "sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.3.tgz", + "integrity": "sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==", "dev": true, + "license": "MIT", "dependencies": { - "esbuild": "^0.20.1", - "postcss": "^8.4.38", + "esbuild": "^0.21.3", + "postcss": "^8.4.39", "rollup": "^4.13.0" }, "bin": { @@ -11839,6 +12829,7 @@ "version": "3.6.1", "resolved": "https://registry.npmjs.org/vite-compatible-readable-stream/-/vite-compatible-readable-stream-3.6.1.tgz", "integrity": "sha512-t20zYkrSf868+j/p31cRIGN28Phrjm3nRSLR2fyc2tiWi4cZGVdv68yNlwnIINTkMTmPoMiSlc0OadaO7DXZaQ==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -11849,10 +12840,11 @@ } }, "node_modules/vite-node": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.5.2.tgz", - "integrity": "sha512-Y8p91kz9zU+bWtF7HGt6DVw2JbhyuB2RlZix3FPYAYmUyZ3n7iTp8eSyLyY6sxtPegvxQtmlTMhfPhUfCUF93A==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.0.tgz", + "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==", "dev": true, + "license": "MIT", "dependencies": { "cac": "^6.7.14", "debug": "^4.3.4", @@ -11871,13 +12863,14 @@ } }, "node_modules/vite-plugin-comlink": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/vite-plugin-comlink/-/vite-plugin-comlink-4.0.3.tgz", - "integrity": "sha512-CJVVd4h6YkeIxXEbRTbkvlbDwAHa1eOSl20AtNux9jd9aPe3AVKkYSxyTjGI9331Rg3wzAYsCUBSsnWHl1Ph0g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/vite-plugin-comlink/-/vite-plugin-comlink-5.0.1.tgz", + "integrity": "sha512-4TGw5+bTg5ROd8N2m9O/y0CoS81g8nyce9EI/eV51i54EJ938lFadXEButhaptJs89l5NY9+TkdjI5jXX4cWOw==", "dev": true, + "license": "MIT", "dependencies": { "json5": "2.2.3", - "magic-string": "0.30.5", + "magic-string": "0.30.10", "source-map": "^0.7.4" }, "peerDependencies": { @@ -11886,15 +12879,13 @@ } }, "node_modules/vite-plugin-comlink/node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" } }, "node_modules/vite-plugin-vue2-svg": { @@ -11902,6 +12893,7 @@ "resolved": "https://registry.npmjs.org/vite-plugin-vue2-svg/-/vite-plugin-vue2-svg-0.4.0.tgz", "integrity": "sha512-Z9NT9PTGwEKMSfxruPeBeAgMWAgMz5DiE6u8ZNtkYXODGWceUi6Dhp/f0NFO02sEoDiDxkokzr8u4qK4+9rXJQ==", "dev": true, + "license": "MIT", "dependencies": { "@vue/component-compiler-utils": "^3.2.0", "svgo": "^3.0.0" @@ -11911,16 +12903,17 @@ } }, "node_modules/vitest": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.5.2.tgz", - "integrity": "sha512-l9gwIkq16ug3xY7BxHwcBQovLZG75zZL0PlsiYQbf76Rz6QGs54416UWMtC0jXeihvHvcHrf2ROEjkQRVpoZYw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.0.tgz", + "integrity": "sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/expect": "1.5.2", - "@vitest/runner": "1.5.2", - "@vitest/snapshot": "1.5.2", - "@vitest/spy": "1.5.2", - "@vitest/utils": "1.5.2", + "@vitest/expect": "1.6.0", + "@vitest/runner": "1.6.0", + "@vitest/snapshot": "1.6.0", + "@vitest/spy": "1.6.0", + "@vitest/utils": "1.6.0", "acorn-walk": "^8.3.2", "chai": "^4.3.10", "debug": "^4.3.4", @@ -11934,7 +12927,7 @@ "tinybench": "^2.5.1", "tinypool": "^0.8.3", "vite": "^5.0.0", - "vite-node": "1.5.2", + "vite-node": "1.6.0", "why-is-node-running": "^2.2.2" }, "bin": { @@ -11949,8 +12942,8 @@ "peerDependencies": { "@edge-runtime/vm": "*", "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "1.5.2", - "@vitest/ui": "1.5.2", + "@vitest/browser": "1.6.0", + "@vitest/ui": "1.6.0", "happy-dom": "*", "jsdom": "*" }, @@ -11980,6 +12973,7 @@ "resolved": "https://registry.npmjs.org/vitest-canvas-mock/-/vitest-canvas-mock-0.3.3.tgz", "integrity": "sha512-3P968tYBpqYyzzOaVtqnmYjqbe13576/fkjbDEJSfQAkHtC5/UjuRHOhFEN/ZV5HVZIkaROBUWgazDKJ+Ibw+Q==", "dev": true, + "license": "MIT", "dependencies": { "jest-canvas-mock": "~2.5.2" }, @@ -11987,27 +12981,12 @@ "vitest": "*" } }, - "node_modules/vitest/node_modules/local-pkg": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", - "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", - "dev": true, - "dependencies": { - "mlly": "^1.4.2", - "pkg-types": "^1.0.3" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, "node_modules/vue": { "version": "2.7.15", "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.15.tgz", "integrity": "sha512-a29fsXd2G0KMRqIFTpRgpSbWaNBK3lpCTOLuGLEDnlHWdjB8fwl6zyYZ8xCrqkJdatwZb4mGHiEfJjnw0Q6AwQ==", "deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.", + "license": "MIT", "dependencies": { "@vue/compiler-sfc": "2.7.15", "csstype": "^3.1.0" @@ -12017,16 +12996,18 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/vue-axios/-/vue-axios-3.5.2.tgz", "integrity": "sha512-GP+dct7UlAWkl1qoP3ppw0z6jcSua5/IrMpjB5O8bh089iIiJ+hdxPYH2NPEpajlYgkW5EVMP95ttXWdas1O0g==", + "license": "MIT", "peerDependencies": { "axios": "*", "vue": "^3.0.0 || ^2.0.0" } }, "node_modules/vue-eslint-parser": { - "version": "9.4.2", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz", - "integrity": "sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==", + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", + "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.4", "eslint-scope": "^7.1.1", @@ -12051,6 +13032,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -12067,6 +13049,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -12079,30 +13062,17 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, - "node_modules/vue-eslint-parser/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/vue-eslint-parser/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -12110,21 +13080,17 @@ "node": ">=10" } }, - "node_modules/vue-eslint-parser/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/vue-i18n": { "version": "8.28.2", "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.28.2.tgz", - "integrity": "sha512-C5GZjs1tYlAqjwymaaCPDjCyGo10ajUphiwA922jKt9n7KPpqR7oM1PCwYzhB/E7+nT3wfdG3oRre5raIT1rKA==" + "integrity": "sha512-C5GZjs1tYlAqjwymaaCPDjCyGo10ajUphiwA922jKt9n7KPpqR7oM1PCwYzhB/E7+nT3wfdG3oRre5raIT1rKA==", + "license": "MIT" }, "node_modules/vue-recaptcha-v3": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/vue-recaptcha-v3/-/vue-recaptcha-v3-1.9.0.tgz", "integrity": "sha512-WQIlhcOcETk3SYbEC88podUSq1J7UjmHpKgJhSy0Xm3DAjTIPjl19g9kn5KRdyTxNLiS/eR5C6H3Jk3c7b9baA==", + "license": "Apache-2.0", "dependencies": { "recaptcha-v3": "^1.8.0" }, @@ -12135,13 +13101,15 @@ "node_modules/vue-router": { "version": "3.6.5", "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.6.5.tgz", - "integrity": "sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ==" + "integrity": "sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ==", + "license": "MIT" }, "node_modules/vue-template-compiler": { "version": "2.7.15", "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.15.tgz", "integrity": "sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og==", "dev": true, + "license": "MIT", "dependencies": { "de-indent": "^1.0.2", "he": "^1.2.0" @@ -12151,20 +13119,23 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/vue-toastification": { "version": "1.7.14", "resolved": "https://registry.npmjs.org/vue-toastification/-/vue-toastification-1.7.14.tgz", "integrity": "sha512-khZR8t3NWZ/JJ2MZxXLbesHrRJ8AKa75PY5Zq8yMifF9x8lHq8ljYkC0d2PD9yahooygQB5tcFyRDkbbIPx8hw==", + "license": "MIT", "peerDependencies": { "vue": "^2.0.0" } }, "node_modules/vue-ts-types": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/vue-ts-types/-/vue-ts-types-1.6.1.tgz", - "integrity": "sha512-Fee0nT2LSm/Drf7Gghpy8ssK4eGWtNgsPjgvC691lkMFWFtWRvgrD2+nFjRvd6aKJQhjcvY+SIPUCJpQpsyScA==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/vue-ts-types/-/vue-ts-types-1.6.2.tgz", + "integrity": "sha512-iOBe4oMoTeISs+Wxlt5E6q3W6lEX6UtkwWCPu6727IoweBE3O3Vp/2/BtO+Kf5pISQU7WpX71hXTeMGqHsmecA==", + "license": "MIT", "peerDependencies": { "vue": "^2.6 || ^3.2" } @@ -12183,6 +13154,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -12191,6 +13163,7 @@ "version": "2.24.3", "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.24.3.tgz", "integrity": "sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g==", + "license": "MIT", "dependencies": { "sortablejs": "1.10.2" } @@ -12199,6 +13172,7 @@ "version": "2.7.2", "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-2.7.2.tgz", "integrity": "sha512-qr04ww7uzAPQbpk751x4fSdjsJ+zREzjQ/rBlcQGuWS6MIMFMXcXcwvp4+/tnGsULZxPMWfQ0kmZmg5Yc/XzgQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/johnleider" @@ -12211,6 +13185,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz", "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==", + "license": "MIT", "peerDependencies": { "vue": "^2.0.0" } @@ -12218,13 +13193,15 @@ "node_modules/w3c-keyname": { "version": "2.2.8", "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", - "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==" + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", + "license": "MIT" }, "node_modules/w3c-xmlserializer": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", "dev": true, + "license": "MIT", "dependencies": { "xml-name-validator": "^5.0.0" }, @@ -12237,6 +13214,7 @@ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=18" } @@ -12246,6 +13224,7 @@ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=12" } @@ -12255,6 +13234,7 @@ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.13.0" } @@ -12263,13 +13243,15 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz", "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/whatwg-encoding": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "dev": true, + "license": "MIT", "dependencies": { "iconv-lite": "0.6.3" }, @@ -12282,6 +13264,7 @@ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } @@ -12291,6 +13274,7 @@ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", "dev": true, + "license": "MIT", "dependencies": { "tr46": "^5.0.0", "webidl-conversions": "^7.0.0" @@ -12304,6 +13288,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -12319,6 +13304,7 @@ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, + "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -12335,6 +13321,7 @@ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, + "license": "MIT", "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", @@ -12352,6 +13339,7 @@ "version": "1.1.15", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -12371,6 +13359,7 @@ "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", "dev": true, + "license": "MIT", "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" @@ -12382,11 +13371,22 @@ "node": ">=8" } }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrap-ansi": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", @@ -12405,6 +13405,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -12422,6 +13423,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12437,6 +13439,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12448,19 +13451,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -12470,6 +13476,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -12484,6 +13491,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -12496,6 +13504,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -12508,6 +13517,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -12522,13 +13532,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -12549,6 +13561,7 @@ "version": "0.20.2", "resolved": "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz", "integrity": "sha512-+nKZ39+nvK7Qq6i0PvWWRA4j/EkfWOtkP/YhMtupm+lJIiHxUrgTr1CcKv1nBk1rHtkRRQ3O2+Ih/q/sA+FXZA==", + "license": "Apache-2.0", "bin": { "xlsx": "bin/xlsx.njs" }, @@ -12561,6 +13574,7 @@ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12" } @@ -12569,19 +13583,25 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yaml": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", - "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", + "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, "engines": { "node": ">= 14" } @@ -12591,6 +13611,7 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -12601,7 +13622,8 @@ "node_modules/yoga-layout": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/yoga-layout/-/yoga-layout-2.0.1.tgz", - "integrity": "sha512-tT/oChyDXelLo2A+UVnlW9GU7CsvFMaEnd9kVFsaiCQonFAXd3xrHhkLYu+suwwosrAEQ746xBU+HvYtm1Zs2Q==" + "integrity": "sha512-tT/oChyDXelLo2A+UVnlW9GU7CsvFMaEnd9kVFsaiCQonFAXd3xrHhkLYu+suwwosrAEQ746xBU+HvYtm1Zs2Q==", + "license": "MIT" } } } diff --git a/frontend/package.json b/frontend/package.json index 535b4a73b5..2f436bb708 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -26,25 +26,25 @@ "@react-pdf/pdfkit": "3.1.10", "@react-pdf/primitives": "3.1.1", "@react-pdf/render": "3.4.4", - "@sentry/browser": "7.112.2", - "@sentry/vue": "7.112.2", - "@tiptap/extension-bold": "2.3.0", - "@tiptap/extension-bubble-menu": "2.3.0", - "@tiptap/extension-bullet-list": "2.3.0", - "@tiptap/extension-document": "2.3.0", - "@tiptap/extension-hard-break": "2.3.0", - "@tiptap/extension-heading": "2.3.0", - "@tiptap/extension-history": "2.3.0", - "@tiptap/extension-italic": "2.3.0", - "@tiptap/extension-list-item": "2.3.0", - "@tiptap/extension-ordered-list": "2.3.0", - "@tiptap/extension-paragraph": "2.3.0", - "@tiptap/extension-placeholder": "2.3.0", - "@tiptap/extension-strike": "2.3.0", - "@tiptap/extension-text": "2.3.0", - "@tiptap/extension-underline": "2.3.0", - "@tiptap/pm": "2.3.0", - "@tiptap/vue-2": "2.3.0", + "@sentry/browser": "8.12.0", + "@sentry/vue": "8.12.0", + "@tiptap/extension-bold": "2.4.0", + "@tiptap/extension-bubble-menu": "2.4.0", + "@tiptap/extension-bullet-list": "2.4.0", + "@tiptap/extension-document": "2.4.0", + "@tiptap/extension-hard-break": "2.4.0", + "@tiptap/extension-heading": "2.4.0", + "@tiptap/extension-history": "2.4.0", + "@tiptap/extension-italic": "2.4.0", + "@tiptap/extension-list-item": "2.4.0", + "@tiptap/extension-ordered-list": "2.4.0", + "@tiptap/extension-paragraph": "2.4.0", + "@tiptap/extension-placeholder": "2.4.0", + "@tiptap/extension-strike": "2.4.0", + "@tiptap/extension-text": "2.4.0", + "@tiptap/extension-underline": "2.4.0", + "@tiptap/pm": "2.4.0", + "@tiptap/vue-2": "2.4.0", "@zxcvbn-ts/core": "3.0.4", "@zxcvbn-ts/language-common": "3.0.4", "@zxcvbn-ts/language-de": "3.0.2", @@ -52,8 +52,8 @@ "@zxcvbn-ts/language-fr": "3.0.2", "@zxcvbn-ts/language-it": "3.0.2", "assert": "2.1.0", - "axios": "1.6.8", - "colorjs.io": "0.5.0", + "axios": "1.7.2", + "colorjs.io": "0.5.2", "comlink": "4.4.1", "dayjs": "1.11.11", "deepmerge": "4.3.1", @@ -62,13 +62,13 @@ "hal-json-vuex": "2.0.0-alpha.16", "inter-ui": "3.19.3", "js-cookie": "3.0.5", - "linkify-it": "4.0.1", + "linkify-it": "5.0.0", "lodash": "4.17.21", "runes": "0.4.3", "slugify": "1.6.6", "url-template": "3.1.1", "util": "0.12.5", - "uuid": "9.0.1", + "uuid": "10.0.0", "v-resize-observer": "2.1.0", "vee-validate": "3.4.15", "vue": "2.7.15", @@ -83,13 +83,13 @@ "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz" }, "devDependencies": { - "@babel/eslint-parser": "7.24.1", - "@sentry/vite-plugin": "2.16.1", - "@testing-library/jest-dom": "6.4.2", + "@babel/eslint-parser": "7.24.7", + "@sentry/vite-plugin": "2.20.1", + "@testing-library/jest-dom": "6.4.6", "@testing-library/user-event": "14.5.2", "@testing-library/vue": "5.9.0", "@vitejs/plugin-vue2": "2.3.1", - "@vitest/coverage-v8": "1.5.2", + "@vitest/coverage-v8": "1.6.0", "@vue/babel-preset-app": "5.0.8", "@vue/eslint-config-prettier": "9.0.0", "@vue/test-utils": "1.3.6", @@ -99,21 +99,22 @@ "eslint-config-prettier": "9.1.0", "eslint-plugin-import": "2.29.1", "eslint-plugin-local-rules": "2.0.1", - "eslint-plugin-n": "17.3.1", + "eslint-plugin-n": "17.9.0", "eslint-plugin-prettier": "5.1.3", - "eslint-plugin-promise": "6.1.1", - "eslint-plugin-vue": "9.25.0", + "eslint-plugin-promise": "6.4.0", + "eslint-plugin-vue": "9.27.0", + "eslint-plugin-vue-scoped-css": "2.8.0", "flush-promises": "1.0.2", "jest-serializer-vue-tjw": "3.20.0", - "jsdom": "24.0.0", - "lint-staged": "15.2.2", - "prettier": "3.2.5", + "jsdom": "24.1.0", + "lint-staged": "15.2.7", + "prettier": "3.3.2", "sass": "1.32.13", - "unplugin-vue-components": "0.26.0", - "vite": "5.2.10", - "vite-plugin-comlink": "4.0.3", + "unplugin-vue-components": "0.27.0", + "vite": "5.3.3", + "vite-plugin-comlink": "5.0.1", "vite-plugin-vue2-svg": "0.4.0", - "vitest": "1.5.2", + "vitest": "1.6.0", "vitest-canvas-mock": "0.3.3", "vue-template-compiler": "2.7.15" }, @@ -125,6 +126,8 @@ }, "extends": [ "plugin:vue/recommended", + "plugin:vue/vue3-recommended", + "plugin:vue-scoped-css/vue3-recommended", "eslint:recommended", "plugin:prettier/recommended", "@vue/eslint-config-prettier" @@ -143,6 +146,18 @@ } ], "vue/multi-word-component-names": "off", + "vue/no-deprecated-destroyed-lifecycle": "off", + "vue/no-deprecated-dollar-listeners-api": "warn", + "vue/no-deprecated-dollar-scopedslots-api": "off", + "vue/no-deprecated-filter": "warn", + "vue/no-deprecated-props-default-this": "warn", + "vue/no-deprecated-slot-attribute": "off", + "vue/no-deprecated-slot-scope-attribute": "off", + "vue/no-deprecated-v-bind-sync": "off", + "vue/no-deprecated-v-on-native-modifier": "warn", + "vue/no-v-for-template-key-on-child": "warn", + "vue/no-v-model-argument": "warn", + "vue/require-explicit-emits": "off", "no-unused-vars": [ "error", { diff --git a/frontend/src/components/activity/DaySwitcher.vue b/frontend/src/components/activity/DaySwitcher.vue index 2235af6b0a..229293e051 100644 --- a/frontend/src/components/activity/DaySwitcher.vue +++ b/frontend/src/components/activity/DaySwitcher.vue @@ -109,7 +109,7 @@ export default { }, methods: { changeDay(value) { - this.$emit('changeDay', value) + this.$emit('change-day', value) }, }, } diff --git a/frontend/src/components/activity/DraggableContentNodes.vue b/frontend/src/components/activity/DraggableContentNodes.vue index 3323e6b900..e8bd363018 100644 --- a/frontend/src/components/activity/DraggableContentNodes.vue +++ b/frontend/src/components/activity/DraggableContentNodes.vue @@ -171,7 +171,7 @@ export default { min-height: 10rem; } -.draggable-area ::v-deep .content-node { +.draggable-area ::v-deep(.content-node) { margin: 0 !important; flex-grow: 1; transition: all 0.4s 25ms ease; @@ -194,10 +194,11 @@ export default { @supports selector(:has(+ *)) { .draggable-area--layout-mode - ::v-deep - .content-node:hover:is( - :not(:has(.content-node:hover)):not(:has(.ec-button-contentnode-add:hover)):not( - :has(.resize-btn:hover) + ::v-deep( + .content-node:hover:is( + :not(:has(.content-node:hover)):not(:has(.ec-button-contentnode-add:hover)):not( + :has(.resize-btn:hover) + ) ) ) { box-shadow: @@ -207,7 +208,7 @@ export default { } } -.draggable-area--row ::v-deep .content-node { +.draggable-area--row ::v-deep(.content-node) { flex: 1 0 320px !important; } diff --git a/frontend/src/components/activity/content/storyboard/StoryboardRowDefault.vue b/frontend/src/components/activity/content/storyboard/StoryboardRowDefault.vue index 4ae42222d4..c8a9546c92 100644 --- a/frontend/src/components/activity/content/storyboard/StoryboardRowDefault.vue +++ b/frontend/src/components/activity/content/storyboard/StoryboardRowDefault.vue @@ -7,8 +7,8 @@ class="drag-and-drop-handle" :disabled="isLastSection" :aria-label="$tc('global.button.move')" - @keydown.down="$emit('moveDown', itemKey)" - @keydown.up="$emit('moveUp', itemKey)" + @keydown.down="$emit('move-down', itemKey)" + @keydown.up="$emit('move-up', itemKey)" > mdi-drag diff --git a/frontend/src/components/activity/content/storyboard/StoryboardRowDense.vue b/frontend/src/components/activity/content/storyboard/StoryboardRowDense.vue index d1b7cdb525..108706c738 100644 --- a/frontend/src/components/activity/content/storyboard/StoryboardRowDense.vue +++ b/frontend/src/components/activity/content/storyboard/StoryboardRowDense.vue @@ -7,8 +7,8 @@ class="drag-and-drop-handle" :disabled="isLastSection" :aria-label="$tc('global.button.move')" - @keydown.down="$emit('moveDown', itemKey)" - @keydown.up="$emit('moveUp', itemKey)" + @keydown.down="$emit('move-down', itemKey)" + @keydown.up="$emit('move-up', itemKey)" > mdi-drag diff --git a/frontend/src/components/activity/content/storyboard/StoryboardSortable.vue b/frontend/src/components/activity/content/storyboard/StoryboardSortable.vue index fb6d59bac1..8262c33f74 100644 --- a/frontend/src/components/activity/content/storyboard/StoryboardSortable.vue +++ b/frontend/src/components/activity/content/storyboard/StoryboardSortable.vue @@ -21,8 +21,8 @@ :item-key="key" :layout-mode="layoutMode" @delete="deleteItem" - @moveDown="moveDown" - @moveUp="moveUp" + @move-down="moveDown" + @move-up="moveUp" /> diff --git a/frontend/src/components/campAdmin/CampActivityProgressLabels.vue b/frontend/src/components/campAdmin/CampActivityProgressLabels.vue index d8a80fd862..836f8c0cd7 100644 --- a/frontend/src/components/campAdmin/CampActivityProgressLabels.vue +++ b/frontend/src/components/campAdmin/CampActivityProgressLabels.vue @@ -1,23 +1,23 @@