diff --git a/.github/workflows/fe_build.yml b/.github/workflows/fe_build.yml index eda59b86c..be8febd96 100644 --- a/.github/workflows/fe_build.yml +++ b/.github/workflows/fe_build.yml @@ -34,13 +34,6 @@ jobs: server-token: 'local' repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Prepare - run: SKIP_DRUPAL_INSTALL=1 pnpm turbo:prep - env: - TURBO_API: 'http://127.0.0.1:9080' - TURBO_TOKEN: 'local' - TURBO_TEAM: 'local' - - name: Publisher uses: AmazeeLabs/publisher-action@4371b4a90a9fe2c86248e76c0f428e39abf6b610 with: @@ -50,6 +43,13 @@ jobs: apps/website/public cache_key: 'fe-build-${{ inputs.env }}' + - name: Prepare + run: SKIP_DRUPAL_INSTALL=1 pnpm turbo:prep + env: + TURBO_API: 'http://127.0.0.1:9080' + TURBO_TOKEN: 'local' + TURBO_TEAM: 'local' + - name: Build & deploy run: | set -ex @@ -68,10 +68,16 @@ jobs: pnpm build:gatsby fi + # "netlify deploy" fails to locate edge functions when executed from a + # monorepo. Flags like --cwd or --filter do not help. So we deploy the + # website app to a dedicated folder first. + pnpm deploy --filter "@custom/website" /tmp/deploy --prod + cd /tmp/deploy + # Deploy - pnpm netlify env:set AWS_LAMBDA_JS_RUNTIME nodejs18.x + pnpm netlify env:set AWS_LAMBDA_JS_RUNTIME nodejs20.x pnpm netlify env:set DRUPAL_EXTERNAL_URL $DRUPAL_EXTERNAL_URL - pnpm netlify deploy --cwd=. --dir=apps/website/public --prodIfUnlocked + pnpm netlify deploy --prodIfUnlocked # Report success to Publisher echo "BUILD_IS_SUCCESSFUL=1" >> $GITHUB_ENV diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 22ee978a3..b106a42aa 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -132,6 +132,22 @@ jobs: DASHBOARD_ACCESS_TOKEN: ${{ secrets.DASHBOARD_ACCESS_TOKEN }} run: amazeelabs-estimator update + init_script: + name: Init script + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Setup + uses: ./.github/actions/setup + - name: Test init script + run: + pnpm --filter @custom/init run init --project-human-name "Foo Bar" + --project-machine-name foo_bar | grep 'Run `pnpm i` to update the lock + file' + docker_build: name: Docker Build if: @@ -143,22 +159,24 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 1 - - name: Setup Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: 2 - bundler-cache: true - name: Install Pygmy - run: gem install pygmy + run: | + set -ex + git clone https://github.com/pygmystack/pygmy.git + cd pygmy + make build + ls -lisa ./builds + cp ./builds/pygmy-linux-amd64 /usr/local/bin/pygmy + chmod +x /usr/local/bin/pygmy - name: Start Pygmy run: pygmy up - name: Docker Build & Up - run: DOCKER_BUILDKIT=1 docker-compose up -d --build + run: DOCKER_BUILDKIT=1 docker compose up -d --build - name: Wait a bit run: sleep 5 - name: Check containers status run: | - if docker-compose ps | grep Exit + if docker compose ps | grep Exit then echo "Docker container(s) exited" exit 1 diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile index 4355004dc..239c623e9 100644 --- a/.gitpod.Dockerfile +++ b/.gitpod.Dockerfile @@ -1,6 +1,6 @@ FROM gitpod/workspace-full -RUN bash -c 'VERSION="18.19.0" \ +RUN bash -c 'VERSION="20.18.1" \ && source $HOME/.nvm/nvm.sh && nvm install $VERSION \ && nvm use $VERSION && nvm alias default $VERSION' diff --git a/.idea/runConfigurations/preview__dev.xml b/.idea/runConfigurations/preview__dev.xml new file mode 100644 index 000000000..1fd0a3338 --- /dev/null +++ b/.idea/runConfigurations/preview__dev.xml @@ -0,0 +1,17 @@ + + + + \ No newline at end of file diff --git a/.lagoon/Dockerfile b/.lagoon/Dockerfile index 2a0319b1a..ce423975f 100644 --- a/.lagoon/Dockerfile +++ b/.lagoon/Dockerfile @@ -1,7 +1,7 @@ # ==================================================================================================== # BUILDER IMAGE # ==================================================================================================== -FROM uselagoon/node-18-builder as node +FROM uselagoon/node-20-builder as node FROM uselagoon/php-8.3-cli-drupal as builder COPY --from=node /usr/local/lib/node_modules /usr/local/lib/node_modules @@ -100,7 +100,7 @@ ENV WEBROOT=web # PREVIEW IMAGE # ==================================================================================================== -FROM uselagoon/node-18 as preview +FROM uselagoon/node-20 as preview RUN npm install -g pnpm@8.15.9 COPY --from=builder /tmp/.deploy/preview /app @@ -110,7 +110,7 @@ CMD pnpm start # PUBLISHER IMAGE # ==================================================================================================== -FROM uselagoon/node-18 as publisher +FROM uselagoon/node-20 as publisher RUN apk add --no-cache sqlite curl github-cli @@ -118,4 +118,9 @@ RUN npm install -g pnpm@8.15.9 COPY --from=builder /tmp/.deploy/publisher /app +# Decap config. +ENV VITE_DECAP_REPO='AmazeeLabs/silverback-template' +ARG LAGOON_GIT_BRANCH +ENV VITE_DECAP_BRANCH="$LAGOON_GIT_BRANCH" + CMD pnpm publisher diff --git a/INIT.md b/INIT.md deleted file mode 100644 index e21b68dc4..000000000 --- a/INIT.md +++ /dev/null @@ -1,204 +0,0 @@ -Run this file with `pnpx @amazeelabs/mzx run INIT.md` from the project root. - -What it does: - -Adjust project name in the repo. - -```ts -await prompt('PROJECT_NAME_HUMAN', { - type: 'text', - message: 'Project name for humans:', - validate: (name) => (!/^.+$/.test(name) ? 'Must be not empty.' : true), - initial: 'My Project', -}); -if (!process.env.PROJECT_NAME_HUMAN) { - // Because ctrl+c on prompt does not stop the script. - throw new Error('Cancelled'); -} -replace( - 'README.md', - '# Silverback Template', - '# ' + process.env.PROJECT_NAME_HUMAN, -); -replace( - [ - 'apps/cms/config/sync/system.site.yml', - 'tests/schema/specs/content.spec.ts', - 'tests/e2e/specs/drupal/metatags.spec.ts', - ], - 'Silverback Drupal Template', - process.env.PROJECT_NAME_HUMAN, -); -replace( - 'apps/cms/config/sync/slack.settings.yml', - 'Silverback Template Bot', - process.env.PROJECT_NAME_HUMAN + ' Bot', -); -``` - -Adjust project machine name in the repo. - -```ts -await prompt('PROJECT_NAME_MACHINE', { - type: 'text', - message: - 'Project name for machines (usually a lowercase version of Jira project code):', - validate: (name) => - !/^[a-z][a-z\d_]*$/.test(name) - ? 'Must start with a lowercase letter and contain lowercase letters, numbers and underscores only.' - : true, - initial: 'my_project', -}); -replace( - [ - '.lagoon.yml', - 'README.md', - '.lagoon/Dockerfile', - 'apps/cms/config/sync/system.site.yml', - 'apps/cms/config/sync/slack.settings.yml', - 'apps/cms/scaffold/settings.php.append.txt', - 'apps/publisher/publisher.config.ts', - ], - 'silverback-template', - process.env.PROJECT_NAME_MACHINE, -); -replace( - 'package.json', - '@amazeelabs/silverback-template', - process.env.PROJECT_NAME_MACHINE, -); -replace( - [ - 'apps/cms/.lagoon.env', - 'apps/website/.lagoon.env', - 'apps/preview/.lagoon.env', - ], - 'PROJECT_NAME=example', - 'PROJECT_NAME=' + process.env.PROJECT_NAME_MACHINE, -); -const publisherClientSecret = randomString(32); -replace( - ['apps/cms/.lagoon.env', 'apps/website/.lagoon.env'], - 'PUBLISHER_OAUTH2_CLIENT_SECRET=REPLACE_ME', - 'PUBLISHER_OAUTH2_CLIENT_SECRET=' + publisherClientSecret, -); -const publisherSessionSecret = randomString(32); -replace( - ['apps/website/.lagoon.env'], - 'PUBLISHER_OAUTH2_SESSION_SECRET=REPLACE_ME', - 'PUBLISHER_OAUTH2_SESSION_SECRET=' + publisherSessionSecret, -); -const previewClientSecret = randomString(32); -replace( - ['apps/cms/.lagoon.env'], - 'PREVIEW_OAUTH2_CLIENT_SECRET=REPLACE_ME', - 'PREVIEW_OAUTH2_CLIENT_SECRET=' + previewClientSecret, -); -replace( - ['apps/preview/.lagoon.env'], - 'OAUTH2_CLIENT_SECRET=REPLACE_ME', - 'OAUTH2_CLIENT_SECRET=' + previewClientSecret, -); -const previewSessionSecret = randomString(32); -replace( - ['apps/preview/.lagoon.env'], - 'OAUTH2_SESSION_SECRET=REPLACE_ME', - 'OAUTH2_SESSION_SECRET=' + previewSessionSecret, -); -// Template's prod domain is special. -replace( - '.lagoon.yml', - '- example.', - '- prod-' + process.env.PROJECT_NAME_MACHINE + '.', -); -// The rest of domains are standard. -replace( - '.lagoon.yml', - '-example.', - '-' + process.env.PROJECT_NAME_MACHINE + '.', -); -``` - -Update the auth key for Gatsby user. - -```ts -const authKey = randomString(32); -replace( - 'apps/cms/gatsby-config.mjs', - "auth_key: 'cfdb0555111c0f8924cecab028b53474'", - `auth_key: '${authKey}'`, -); -replace( - 'packages/drupal/test_content/content/user/f20d961b-ba45-4820-b2cc-166e5ce56815.yml', - 'value: cfdb0555111c0f8924cecab028b53474', - `value: ${authKey}`, -); -replace( - 'tests/schema/lib.ts', - "'api-key': 'cfdb0555111c0f8924cecab028b53474'", - `'api-key': '${authKey}'`, -); -``` - -Update the default hash salt. - -```ts -replace( - 'apps/cms/scaffold/settings.php.append.txt', - 'time-flies-like-an-arrow-fruit-flies-like-a-banana', - randomString(32), -); -``` - -Cleanup the readme. - -```ts -replace( - 'README.md', - /## Create a new project from this template.+?## /gs, - '## ', -); -``` - -Remove the init script check. - -```ts -replace('.github/workflows/test.yml', / - name: Init check.*?\n\n/gs, ''); -``` - -Remove the init script. - -```ts -fs.unlinkSync('INIT.md'); -``` - -
-Here go some helpers. - -```ts -function replace(path, from, to) { - const paths = Array.isArray(path) ? path : [path]; - for (const path of paths) { - if (!fs.existsSync(path)) { - throw new Error(`File ${path} does not exist.`); - } - const contents = fs.readFileSync(path, 'utf8'); - if (!contents.match(from)) { - throw new Error(`File ${path} does not contain ${from}.`); - } - fs.writeFileSync(path, contents.replaceAll(from, to), 'utf8'); - } -} - -function randomString(length) { - let result = ''; - const characters = 'abcdefghijklmnopqrstuvwxyz0123456789'; - const charactersLength = characters.length; - let counter = 0; - while (counter < length) { - result += characters.charAt(Math.floor(Math.random() * charactersLength)); - counter += 1; - } - return result; -} -``` diff --git a/README.md b/README.md index f64258d0b..4523c990d 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Minimum steps - Disable `Allow merge commits` - Enable `Automatically delete head branches` - Clone the newly create repo -- Run `pnpx @amazeelabs/mzx run INIT.md` from the project root +- Run `pnpm i && pnpm --filter @custom/init run init` from the project root - Answer its questions - Review the changes in the repo - Commit and push diff --git a/apps/cms/config/sync/core.entity_form_display.node.page.default.yml b/apps/cms/config/sync/core.entity_form_display.node.page.default.yml index 7ec9ef2a3..f00127fdf 100644 --- a/apps/cms/config/sync/core.entity_form_display.node.page.default.yml +++ b/apps/cms/config/sync/core.entity_form_display.node.page.default.yml @@ -5,13 +5,38 @@ dependencies: config: - field.field.node.page.body - field.field.node.page.field_metatags + - field.field.node.page.field_seo_description + - field.field.node.page.field_seo_image + - field.field.node.page.field_seo_title - node.type.page - workflows.workflow.basic module: - content_moderation + - field_group + - media_library - metatag - path - text +third_party_settings: + field_group: + group_seo: + children: + - field_seo_title + - field_seo_description + - field_seo_image + label: 'SEO Information' + region: content + parent_name: '' + weight: 16 + format_type: details + format_settings: + classes: '' + show_empty_fields: false + id: '' + label_as_html: false + open: false + description: '' + required_fields: true id: node.page.default targetEntityType: node bundle: page @@ -19,7 +44,7 @@ mode: default content: body: type: text_textarea_with_summary - weight: 121 + weight: 11 region: content settings: rows: 9 @@ -29,74 +54,97 @@ content: third_party_settings: { } created: type: datetime_timestamp - weight: 10 + weight: 3 region: content settings: { } third_party_settings: { } field_metatags: type: metatag_firehose - weight: 122 + weight: 12 region: content settings: sidebar: true use_details: true third_party_settings: { } + field_seo_description: + type: string_textarea + weight: 14 + region: content + settings: + rows: 5 + placeholder: '' + third_party_settings: { } + field_seo_image: + type: media_library_widget + weight: 15 + region: content + settings: + media_types: { } + third_party_settings: { } + field_seo_title: + type: string_textfield + weight: 13 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } langcode: type: language_select - weight: 2 + weight: 1 region: content settings: include_locked: true third_party_settings: { } moderation_state: type: moderation_state_default - weight: 100 + weight: 9 region: content settings: { } third_party_settings: { } path: type: path - weight: 30 + weight: 7 region: content settings: { } third_party_settings: { } promote: type: boolean_checkbox - weight: 15 + weight: 5 region: content settings: display_label: true third_party_settings: { } status: type: boolean_checkbox - weight: 120 + weight: 10 region: content settings: display_label: true third_party_settings: { } sticky: type: boolean_checkbox - weight: 16 + weight: 6 region: content settings: display_label: true third_party_settings: { } title: type: string_textfield - weight: -5 + weight: 0 region: content settings: size: 60 placeholder: '' third_party_settings: { } translation: - weight: 10 + weight: 4 region: content settings: { } third_party_settings: { } uid: type: entity_reference_autocomplete - weight: 5 + weight: 2 region: content settings: match_operator: CONTAINS @@ -105,7 +153,7 @@ content: placeholder: '' third_party_settings: { } url_redirects: - weight: 50 + weight: 8 region: content settings: { } third_party_settings: { } diff --git a/apps/cms/config/sync/core.entity_form_display.node.page.split.yml b/apps/cms/config/sync/core.entity_form_display.node.page.split.yml index 7c4e46ca1..4aa09209c 100644 --- a/apps/cms/config/sync/core.entity_form_display.node.page.split.yml +++ b/apps/cms/config/sync/core.entity_form_display.node.page.split.yml @@ -6,6 +6,9 @@ dependencies: - core.entity_form_mode.node.split - field.field.node.page.body - field.field.node.page.field_metatags + - field.field.node.page.field_seo_description + - field.field.node.page.field_seo_image + - field.field.node.page.field_seo_title - node.type.page - workflows.workflow.basic module: @@ -101,3 +104,6 @@ content: third_party_settings: { } hidden: body: true + field_seo_description: true + field_seo_image: true + field_seo_title: true diff --git a/apps/cms/config/sync/core.entity_view_display.media.image.token.yml b/apps/cms/config/sync/core.entity_view_display.media.image.token.yml new file mode 100644 index 000000000..7bf0411f4 --- /dev/null +++ b/apps/cms/config/sync/core.entity_view_display.media.image.token.yml @@ -0,0 +1,30 @@ +uuid: 2795db31-0d40-44e7-999f-097e6b6d224c +langcode: en +status: true +dependencies: + config: + - core.entity_view_mode.media.token + - field.field.media.image.field_media_image + - media.type.image + module: + - image +id: media.image.token +targetEntityType: media +bundle: image +mode: token +content: + field_media_image: + type: image_url + label: hidden + settings: + image_style: '' + third_party_settings: { } + weight: 0 + region: content +hidden: + created: true + langcode: true + name: true + search_api_excerpt: true + thumbnail: true + uid: true diff --git a/apps/cms/config/sync/core.entity_view_display.node.page.default.yml b/apps/cms/config/sync/core.entity_view_display.node.page.default.yml index b85a8523f..b7349b152 100644 --- a/apps/cms/config/sync/core.entity_view_display.node.page.default.yml +++ b/apps/cms/config/sync/core.entity_view_display.node.page.default.yml @@ -5,6 +5,9 @@ dependencies: config: - field.field.node.page.body - field.field.node.page.field_metatags + - field.field.node.page.field_seo_description + - field.field.node.page.field_seo_image + - field.field.node.page.field_seo_title - node.type.page module: - metatag @@ -37,8 +40,18 @@ content: third_party_settings: { } weight: 2 region: content + field_seo_title: + type: string + label: above + settings: + link_to_entity: false + third_party_settings: { } + weight: 3 + region: content hidden: body: true + field_seo_description: true + field_seo_image: true langcode: true links: true search_api_excerpt: true diff --git a/apps/cms/config/sync/core.entity_view_display.node.page.global_search.yml b/apps/cms/config/sync/core.entity_view_display.node.page.global_search.yml index d56a0127a..83c54ad84 100644 --- a/apps/cms/config/sync/core.entity_view_display.node.page.global_search.yml +++ b/apps/cms/config/sync/core.entity_view_display.node.page.global_search.yml @@ -6,6 +6,9 @@ dependencies: - core.entity_view_mode.node.global_search - field.field.node.page.body - field.field.node.page.field_metatags + - field.field.node.page.field_seo_description + - field.field.node.page.field_seo_image + - field.field.node.page.field_seo_title - node.type.page module: - gutenberg @@ -32,9 +35,25 @@ content: third_party_settings: { } weight: 0 region: content + field_seo_description: + type: basic_string + label: hidden + settings: { } + third_party_settings: { } + weight: 3 + region: content + field_seo_title: + type: string + label: hidden + settings: + link_to_entity: false + third_party_settings: { } + weight: 2 + region: content hidden: content_moderation_control: true external_preview_link: true + field_seo_image: true langcode: true links: true search_api_excerpt: true diff --git a/apps/cms/config/sync/core.entity_view_display.node.page.teaser.yml b/apps/cms/config/sync/core.entity_view_display.node.page.teaser.yml index e699294f3..c6b4ca559 100644 --- a/apps/cms/config/sync/core.entity_view_display.node.page.teaser.yml +++ b/apps/cms/config/sync/core.entity_view_display.node.page.teaser.yml @@ -6,6 +6,9 @@ dependencies: - core.entity_view_mode.node.teaser - field.field.node.page.body - field.field.node.page.field_metatags + - field.field.node.page.field_seo_description + - field.field.node.page.field_seo_image + - field.field.node.page.field_seo_title - node.type.page module: - silverback_external_preview @@ -46,4 +49,8 @@ content: region: content hidden: field_metatags: true + field_seo_description: true + field_seo_image: true + field_seo_title: true langcode: true + search_api_excerpt: true diff --git a/apps/cms/config/sync/field.field.node.page.field_seo_description.yml b/apps/cms/config/sync/field.field.node.page.field_seo_description.yml new file mode 100644 index 000000000..de6e3c5d2 --- /dev/null +++ b/apps/cms/config/sync/field.field.node.page.field_seo_description.yml @@ -0,0 +1,19 @@ +uuid: 00985ef6-371f-49c4-ad7e-27bb9456fde0 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_seo_description + - node.type.page +id: node.page.field_seo_description +field_name: field_seo_description +entity_type: node +bundle: page +label: 'SEO Description' +description: 'Write a description for search engines and social media sites.' +required: false +translatable: true +default_value: { } +default_value_callback: '' +settings: { } +field_type: string_long diff --git a/apps/cms/config/sync/field.field.node.page.field_seo_image.yml b/apps/cms/config/sync/field.field.node.page.field_seo_image.yml new file mode 100644 index 000000000..09323344e --- /dev/null +++ b/apps/cms/config/sync/field.field.node.page.field_seo_image.yml @@ -0,0 +1,29 @@ +uuid: cb4d8c10-3dda-4bb1-b55d-a0ce6e7f2aa5 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_seo_image + - media.type.image + - node.type.page +id: node.page.field_seo_image +field_name: field_seo_image +entity_type: node +bundle: page +label: 'SEO Image' +description: 'Upload an image to be used when the page is shared on social media sites.' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + handler: 'default:media' + handler_settings: + target_bundles: + image: image + sort: + field: _none + direction: ASC + auto_create: false + auto_create_bundle: '' +field_type: entity_reference diff --git a/apps/cms/config/sync/field.field.node.page.field_seo_title.yml b/apps/cms/config/sync/field.field.node.page.field_seo_title.yml new file mode 100644 index 000000000..964994372 --- /dev/null +++ b/apps/cms/config/sync/field.field.node.page.field_seo_title.yml @@ -0,0 +1,19 @@ +uuid: 7ee97342-4903-44e7-aff2-61fa1d1d1e03 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_seo_title + - node.type.page +id: node.page.field_seo_title +field_name: field_seo_title +entity_type: node +bundle: page +label: 'SEO Title' +description: 'Use this field to overwrite the default HTML page title for SEO.' +required: false +translatable: true +default_value: { } +default_value_callback: '' +settings: { } +field_type: string diff --git a/apps/cms/config/sync/field.storage.node.field_seo_description.yml b/apps/cms/config/sync/field.storage.node.field_seo_description.yml new file mode 100644 index 000000000..b0c842d5c --- /dev/null +++ b/apps/cms/config/sync/field.storage.node.field_seo_description.yml @@ -0,0 +1,19 @@ +uuid: 4cd1813f-ee32-4bfb-9869-950ca3f30d31 +langcode: en +status: true +dependencies: + module: + - node +id: node.field_seo_description +field_name: field_seo_description +entity_type: node +type: string_long +settings: + case_sensitive: false +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/apps/cms/config/sync/field.storage.node.field_seo_image.yml b/apps/cms/config/sync/field.storage.node.field_seo_image.yml new file mode 100644 index 000000000..1f8201138 --- /dev/null +++ b/apps/cms/config/sync/field.storage.node.field_seo_image.yml @@ -0,0 +1,20 @@ +uuid: 5471835f-a39a-4ec8-8b69-fbe75208e015 +langcode: en +status: true +dependencies: + module: + - media + - node +id: node.field_seo_image +field_name: field_seo_image +entity_type: node +type: entity_reference +settings: + target_type: media +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/apps/cms/config/sync/field.storage.node.field_seo_title.yml b/apps/cms/config/sync/field.storage.node.field_seo_title.yml new file mode 100644 index 000000000..ec7a68576 --- /dev/null +++ b/apps/cms/config/sync/field.storage.node.field_seo_title.yml @@ -0,0 +1,21 @@ +uuid: 07f9765d-ce4d-402e-9c16-e90aa97cb2dd +langcode: en +status: true +dependencies: + module: + - node +id: node.field_seo_title +field_name: field_seo_title +entity_type: node +type: string +settings: + max_length: 1024 + case_sensitive: false + is_ascii: false +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/apps/cms/config/sync/language/de/metatag.metatag_defaults.403.yml b/apps/cms/config/sync/language/de/metatag.metatag_defaults.403.yml index aa3cd2039..2e9d8b41b 100644 --- a/apps/cms/config/sync/language/de/metatag.metatag_defaults.403.yml +++ b/apps/cms/config/sync/language/de/metatag.metatag_defaults.403.yml @@ -1,5 +1 @@ label: '403 Zugriff verweigert' -tags: - robots: noindex - canonical_url: '[site:url]' - shortlink: '[site:url]' diff --git a/apps/cms/config/sync/language/de/metatag.metatag_defaults.404.yml b/apps/cms/config/sync/language/de/metatag.metatag_defaults.404.yml index 99a896b07..7ea4b8877 100644 --- a/apps/cms/config/sync/language/de/metatag.metatag_defaults.404.yml +++ b/apps/cms/config/sync/language/de/metatag.metatag_defaults.404.yml @@ -1,4 +1 @@ label: '404 Seite nicht gefunden' -tags: - canonical_url: '[site:url]' - shortlink: '[site:url]' diff --git a/apps/cms/config/sync/language/de/metatag.metatag_defaults.front.yml b/apps/cms/config/sync/language/de/metatag.metatag_defaults.front.yml index c6c25af7c..e1983d0be 100644 --- a/apps/cms/config/sync/language/de/metatag.metatag_defaults.front.yml +++ b/apps/cms/config/sync/language/de/metatag.metatag_defaults.front.yml @@ -1,4 +1 @@ label: Startseite -tags: - canonical_url: '[site:url]' - shortlink: '[site:url]' diff --git a/apps/cms/config/sync/language/de/metatag.metatag_defaults.global.yml b/apps/cms/config/sync/language/de/metatag.metatag_defaults.global.yml index e7ad00f8b..85a1911f0 100644 --- a/apps/cms/config/sync/language/de/metatag.metatag_defaults.global.yml +++ b/apps/cms/config/sync/language/de/metatag.metatag_defaults.global.yml @@ -1,4 +1 @@ label: Global -tags: - canonical_url: '[current-page:url]' - title: '[current-page:title] | [site:name]' diff --git a/apps/cms/config/sync/language/de/metatag.metatag_defaults.node.yml b/apps/cms/config/sync/language/de/metatag.metatag_defaults.node.yml index 973386d02..876680127 100644 --- a/apps/cms/config/sync/language/de/metatag.metatag_defaults.node.yml +++ b/apps/cms/config/sync/language/de/metatag.metatag_defaults.node.yml @@ -1,5 +1 @@ label: Inhalt -tags: - title: '[node:title] | [site:name]' - description: '[node:summary]' - canonical_url: '[node:url]' diff --git a/apps/cms/config/sync/language/de/metatag.metatag_defaults.taxonomy_term.yml b/apps/cms/config/sync/language/de/metatag.metatag_defaults.taxonomy_term.yml index c4971135a..def38fb79 100644 --- a/apps/cms/config/sync/language/de/metatag.metatag_defaults.taxonomy_term.yml +++ b/apps/cms/config/sync/language/de/metatag.metatag_defaults.taxonomy_term.yml @@ -1,5 +1 @@ label: Taxonomie-Begriff -tags: - canonical_url: '[term:url]' - description: '[term:description]' - title: '[term:name] | [site:name]' diff --git a/apps/cms/config/sync/language/de/metatag.metatag_defaults.user.yml b/apps/cms/config/sync/language/de/metatag.metatag_defaults.user.yml index ffbd18825..edb74f587 100644 --- a/apps/cms/config/sync/language/de/metatag.metatag_defaults.user.yml +++ b/apps/cms/config/sync/language/de/metatag.metatag_defaults.user.yml @@ -1,5 +1,3 @@ label: Benutzer tags: - canonical_url: '[user:url]' description: '[site:name]' - title: '[user:display-name] | [site:name]' diff --git a/apps/cms/config/sync/metatag.metatag_defaults.node.yml b/apps/cms/config/sync/metatag.metatag_defaults.node.yml index 9edcd7545..045e766fc 100644 --- a/apps/cms/config/sync/metatag.metatag_defaults.node.yml +++ b/apps/cms/config/sync/metatag.metatag_defaults.node.yml @@ -8,7 +8,10 @@ id: node label: Content tags: canonical_url: '[node:url]' - description: '[node:summary]' - og_description: '[node:summary]' - og_title: '[node:title] | [site:name]' - title: '[node:title] | [site:name]' + description: '[node:field_seo_description]' + image_src: '[node:field_seo_image:entity:field_media_image]' + og_description: '[node:field_seo_description]' + og_image: '[node:field_seo_image:entity:field_media_image]' + og_title: '[node:field_seo_title] | [site:name]' + og_url: '[node:url]' + title: '[node:field_seo_title] | [site:name]' diff --git a/apps/cms/config/sync/views.view.media.yml b/apps/cms/config/sync/views.view.media.yml index 0e9642ceb..e948542b6 100644 --- a/apps/cms/config/sync/views.view.media.yml +++ b/apps/cms/config/sync/views.view.media.yml @@ -5,6 +5,7 @@ dependencies: config: - image.style.thumbnail module: + - custom - image - media - user @@ -467,6 +468,56 @@ display: multi_type: separator separator: ', ' field_api_classes: false + custom_usage_count: + id: custom_usage_count + table: media + field: custom_usage_count + relationship: none + group_type: group + admin_label: '' + entity_type: media + plugin_id: custom + label: 'Usage count' + exclude: false + alter: + alter_text: true + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: false operations: id: operations table: media diff --git a/apps/cms/package.json b/apps/cms/package.json index ee641d888..6233ddb40 100644 --- a/apps/cms/package.json +++ b/apps/cms/package.json @@ -18,7 +18,7 @@ "drush": "SB_ENVIRONMENT=1 SIMPLETEST_DB=sqlite://localhost/sites/default/files/.sqlite DRUSH_OPTIONS_URI=http://127.0.0.1:8888 vendor/bin/drush", "silverback": "SB_ENVIRONMENT=1 SIMPLETEST_DB=sqlite://localhost/sites/default/files/.sqlite SB_ADMIN_USER=admin SB_ADMIN_PASS=admin vendor/bin/silverback", "drupal-install": "SB_SETUP=1 pnpm silverback setup --profile minimal && pnpm content:import && pnpm drush php-eval 'node_access_rebuild();' && rm -rf install-cache.zip && pnpm fix-premissions", - "export-webforms": "pnpm --filter '@custom-tests/e2e' webform-snapshots", + "export-webforms": "pnpm --filter '@custom/webform-export' webform-snapshots", "start": "cd web; SB_ENVIRONMENT=1 SIMPLETEST_DB=sqlite://localhost/sites/default/files/.sqlite DRUSH_OPTIONS_URI=http://127.0.0.1:8888 php -S 0.0.0.0:8888 .ht.router.php # no drush to avoid the drush server timeout", "dev": "pnpm start", "clear": "pnpm drush cr", diff --git a/apps/cms/turbo.json b/apps/cms/turbo.json index 0edd528b1..d54ebcde3 100644 --- a/apps/cms/turbo.json +++ b/apps/cms/turbo.json @@ -13,7 +13,11 @@ "dependsOn": ["prep:database"] }, "prep:database": { - "dependsOn": ["prep:composer", "^prep"], + "dependsOn": [ + "prep:composer", + "^prep", + "@custom/webform-export#test:static" + ], "inputs": [ "turbo-seed.txt", "prep-database.sh", @@ -38,13 +42,6 @@ "!web/themes/custom/**", "!web/sites/default/files/**" ] - }, - "test:integration": { - "dependsOn": [ - "prep", - "@custom-tests/e2e#test:integration:drupal", - "@custom-tests/schema#test:integration" - ] } } } diff --git a/apps/decap/package.json b/apps/decap/package.json index 968ed7384..f643dcad0 100644 --- a/apps/decap/package.json +++ b/apps/decap/package.json @@ -47,7 +47,7 @@ "@types/lodash": "^4.17.6", "@types/mime-types": "^2.1.4", "@custom/eslint-config": "workspace:*", - "@types/node": "^18", + "@types/node": "^20", "@types/react": "^18.2.46", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react-swc": "^3.5.0", diff --git a/apps/decap/src/collections/page.ts b/apps/decap/src/collections/page.ts index 7b7fb1e1c..ec2b313c1 100644 --- a/apps/decap/src/collections/page.ts +++ b/apps/decap/src/collections/page.ts @@ -173,12 +173,13 @@ const BlockMediaImageSchema = z __typename: 'MediaImage', url: imagePath(image), alt, + id: '', }, caption: caption, }; }); -type ResolvedPage = Exclude>; +type ResolvedPage = Exclude>; export const pageSchema = z .object({ @@ -196,6 +197,7 @@ export const pageSchema = z .transform((source): SourceMediaImage | undefined => source ? { + id: imagePath(source), __typename: 'MediaImage', url: imagePath(source), alt: '', @@ -207,6 +209,12 @@ export const pageSchema = z }) .transform((data): ResolvedPage => ({ __typename: 'Page', ...data })); +const fileSchema = z.record(z.union([pageSchema, z.any()])); + +function isNotEmpty(value: T | {}): value is T { + return Object.keys(value).length > 0; +} + const pages: Array = []; const getPages = (path: string) => { @@ -215,10 +223,11 @@ const getPages = (path: string) => { fs.readdirSync(dir) .filter((file) => file.endsWith('.yml')) .forEach((file) => { - const content = yaml.parse(fs.readFileSync(`${dir}/${file}`, 'utf-8')); + const raw = fs.readFileSync(`${dir}/${file}`, 'utf-8'); + const content = fileSchema.parse(yaml.parse(raw)); const id = Object.values(content) - .map((page: any) => page.id) - .filter((id) => !!id) + .filter(isNotEmpty) + .map((page) => page.id) .pop(); const translations: Array = []; Object.keys(content).forEach((lang) => { diff --git a/apps/decap/src/graphql.ts b/apps/decap/src/graphql.ts index 486d9a998..3559bb1a7 100644 --- a/apps/decap/src/graphql.ts +++ b/apps/decap/src/graphql.ts @@ -48,7 +48,7 @@ export function createExecutor( const resolver = registry[ info.parentType.name as keyof SourceResolvers ]?.[info.fieldName as keyof SourceResolvers[keyof SourceResolvers]] as - | GraphQLFieldResolver + | GraphQLFieldResolver | undefined; if (resolver) { try { diff --git a/apps/decap/turbo.json b/apps/decap/turbo.json index b6cfb94b3..cc8c5a97f 100644 --- a/apps/decap/turbo.json +++ b/apps/decap/turbo.json @@ -14,9 +14,6 @@ }, "prep": { "dependsOn": ["prep:vite", "prep:scripts"] - }, - "test:integration": { - "dependsOn": ["@custom-tests/e2e#test:integration:decap"] } } } diff --git a/apps/preview/src/App.tsx b/apps/preview/src/App.tsx index 621ed116c..b1f3aacb0 100644 --- a/apps/preview/src/App.tsx +++ b/apps/preview/src/App.tsx @@ -30,7 +30,14 @@ function App() { }, [refresh]); return ( diff --git a/apps/publisher/eslint.config.mjs b/apps/publisher/eslint.config.mjs index cfea77437..d884dedff 100644 --- a/apps/publisher/eslint.config.mjs +++ b/apps/publisher/eslint.config.mjs @@ -1,3 +1,8 @@ import { base, defineConfig } from '@custom/eslint-config'; -export default defineConfig([...base]); +export default defineConfig([ + ...base, + { + ignores: ['.cache/**'], + }, +]); diff --git a/apps/publisher/package.json b/apps/publisher/package.json index bce04d69a..27b87f364 100644 --- a/apps/publisher/package.json +++ b/apps/publisher/package.json @@ -2,16 +2,16 @@ "name": "@custom/publisher", "private": true, "dependencies": { - "@amazeelabs/publisher": "^2.5.5" + "@amazeelabs/publisher": "^2.5.5", + "typescript": "^5.7.3" }, "scripts": { "test:static": "tsc --noEmit && eslint . --quiet", - "dev": "cd ../website && pnpm clean && cd - && publisher", + "dev": "publisher", "open": "open http://127.0.0.1:8000/___status/" }, "devDependencies": { "@custom/eslint-config": "workspace:*", - "@types/node": "^18", - "typescript": "^5.3.3" + "@types/node": "^20" } } diff --git a/apps/publisher/publisher.config.ts b/apps/publisher/publisher.config.ts index 4f40ae0e4..217b717d5 100644 --- a/apps/publisher/publisher.config.ts +++ b/apps/publisher/publisher.config.ts @@ -44,7 +44,7 @@ export default defineConfig( commands: { build: { command: - 'cd ../website && DRUPAL_EXTERNAL_URL=http://127.0.0.1:8888 pnpm build:gatsby', + 'cd ../website && DRUPAL_EXTERNAL_URL=http://127.0.0.1:8888 pnpm build:waku', }, clean: 'pnpm clean', serve: { @@ -72,6 +72,8 @@ function githubEnvVars(): Record { 'PUBLISHER_OAUTH2_SESSION_SECRET', 'PUBLISHER_OAUTH2_ENVIRONMENT_TYPE', 'PUBLISHER_OAUTH2_TOKEN_HOST', + 'VITE_DECAP_REPO', + 'VITE_DECAP_BRANCH', ].map((name) => { if (name === 'DRUPAL_INTERNAL_URL') { // No internal URLs when building on Github. diff --git a/apps/website/.gitignore b/apps/website/.gitignore index 772a489cf..cfe47c452 100644 --- a/apps/website/.gitignore +++ b/apps/website/.gitignore @@ -5,3 +5,6 @@ dist styles.css persisted-store + +# Deno comes with "netlify dev". We don't need its lock file. +/deno.lock diff --git a/apps/website/deno.jsonc b/apps/website/deno.jsonc new file mode 100644 index 000000000..bd6cbb078 --- /dev/null +++ b/apps/website/deno.jsonc @@ -0,0 +1,10 @@ +// This isn't a Deno project, yet Deno is added by netlify-cli when +// "netlify dev" is used. +// This file is picked up by Deno automatically, so we can use it to adjust Deno +// behavior. +{ + // By default, Deno will use node_modules/.deno dir for storing dependencies. + // Somehow it messes up node_modules resolution leading to Gatsby build + // errors. So we prevent Deno from using node_modules dir. + "nodeModulesDir": false, +} diff --git a/apps/website/netlify/functions/github-proxy.mts b/apps/website/netlify/functions/github-proxy.mts index 105495b11..117d6871f 100644 --- a/apps/website/netlify/functions/github-proxy.mts +++ b/apps/website/netlify/functions/github-proxy.mts @@ -1,6 +1,7 @@ -import { githubProxy } from '@amazeelabs/decap-cms-backend-token-auth/proxy'; import type { Context } from '@netlify/functions'; +import { githubProxy } from '../../node_modules/@amazeelabs/decap-cms-backend-token-auth/build/proxy.js'; + // eslint-disable-next-line @typescript-eslint/no-unused-vars export default function (request: Request, context: Context) { if (!process.env.DECAP_GITHUB_TOKEN) { diff --git a/devbox.json b/devbox.json index 2cf619dd7..f7785f74a 100644 --- a/devbox.json +++ b/devbox.json @@ -6,7 +6,7 @@ "PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS": "true" }, "packages": [ - "nodejs@18.19.0", + "nodejs@20", "php@8.3", "php83Packages.composer@2", "php83Extensions.xdebug@3" diff --git a/devbox.lock b/devbox.lock index 405dcfee7..729e580eb 100644 --- a/devbox.lock +++ b/devbox.lock @@ -1,68 +1,68 @@ { "lockfile_version": "1", "packages": { - "nodejs@18.19.0": { - "last_modified": "2024-02-10T18:15:24Z", + "nodejs@20": { + "last_modified": "2024-12-23T21:10:33Z", "plugin_version": "0.0.2", - "resolved": "github:NixOS/nixpkgs/10b813040df67c4039086db0f6eaf65c536886c6#nodejs_18", + "resolved": "github:NixOS/nixpkgs/de1864217bfa9b5845f465e771e0ecb48b30e02d#nodejs_20", "source": "devbox-search", - "version": "18.19.0", + "version": "20.18.1", "systems": { "aarch64-darwin": { "outputs": [ { "name": "out", - "path": "/nix/store/10g4w66jc811y4qfl52w6an8w7yc264z-nodejs-18.19.0", + "path": "/nix/store/q49zbi0pzjhg4zn085h9hyz9m1k3hvpb-nodejs-20.18.1", "default": true }, { "name": "libv8", - "path": "/nix/store/pvqg9z001qxiisfflgg29l9m8w2dxpvd-nodejs-18.19.0-libv8" + "path": "/nix/store/l08rljd2yr7i1q4x778qazcys2l4ja23-nodejs-20.18.1-libv8" } ], - "store_path": "/nix/store/10g4w66jc811y4qfl52w6an8w7yc264z-nodejs-18.19.0" + "store_path": "/nix/store/q49zbi0pzjhg4zn085h9hyz9m1k3hvpb-nodejs-20.18.1" }, "aarch64-linux": { "outputs": [ { "name": "out", - "path": "/nix/store/cxd7bqzgflywrbdwk87w18g2iyvw4pgb-nodejs-18.19.0", + "path": "/nix/store/4m1ql1hsd6kqmzr8a657qhipjgssrr0c-nodejs-20.18.1", "default": true }, { "name": "libv8", - "path": "/nix/store/x255q68jmamac4p023w2436nzfsvm1j4-nodejs-18.19.0-libv8" + "path": "/nix/store/r8s1xalb4rpy1r44i413j84i4ny6mnsc-nodejs-20.18.1-libv8" } ], - "store_path": "/nix/store/cxd7bqzgflywrbdwk87w18g2iyvw4pgb-nodejs-18.19.0" + "store_path": "/nix/store/4m1ql1hsd6kqmzr8a657qhipjgssrr0c-nodejs-20.18.1" }, "x86_64-darwin": { "outputs": [ { "name": "out", - "path": "/nix/store/wh0igh0r3c1f1jmxzv8xrcbf0yyrwfd0-nodejs-18.19.0", + "path": "/nix/store/7ky0mn6k33731jwzhsxq6a6dsbjqamqs-nodejs-20.18.1", "default": true }, { "name": "libv8", - "path": "/nix/store/j85nkl74mjpa4crvkrwmn260gnbs6g87-nodejs-18.19.0-libv8" + "path": "/nix/store/jw62k3wxl38r8fcbvxaxrm696ivv3imr-nodejs-20.18.1-libv8" } ], - "store_path": "/nix/store/wh0igh0r3c1f1jmxzv8xrcbf0yyrwfd0-nodejs-18.19.0" + "store_path": "/nix/store/7ky0mn6k33731jwzhsxq6a6dsbjqamqs-nodejs-20.18.1" }, "x86_64-linux": { "outputs": [ { "name": "out", - "path": "/nix/store/n06fynnjwvca37xmcj73n22hw7svp55c-nodejs-18.19.0", + "path": "/nix/store/j7dx1n6m5axf9r2bvly580x2ixx546wq-nodejs-20.18.1", "default": true }, { "name": "libv8", - "path": "/nix/store/d776nv39sf4dppbs9pb5il23cjwv0zk4-nodejs-18.19.0-libv8" + "path": "/nix/store/qljmc2skrldj0g94rib6nl4jq84193fa-nodejs-20.18.1-libv8" } ], - "store_path": "/nix/store/n06fynnjwvca37xmcj73n22hw7svp55c-nodejs-18.19.0" + "store_path": "/nix/store/j7dx1n6m5axf9r2bvly580x2ixx546wq-nodejs-20.18.1" } } }, diff --git a/package.json b/package.json index 1c4173e7f..e3e17a369 100644 --- a/package.json +++ b/package.json @@ -4,24 +4,23 @@ "license": "MIT", "author": "Amazee Labs ", "engines": { - "node": "^18.19.0", + "node": "20", "pnpm": "8.15.9" }, "packageManager": "pnpm@8.15.9", "scripts": { "postinstall": "husky install || true", "commit": "git-cz", - "tb": "pnpm turbo --filter @custom/website", "test:format": "pnpm test:format:root --check && pnpm test:format:workspaces --check", "test:format:fix": "pnpm test:format:root --write && pnpm test:format:workspaces --write", "test:format:root": "pnpm prettier --ignore-unknown '**/**' --ignore-path .prettierignore-root", "test:format:workspaces": "pnpm --workspace-concurrency=1 -r exec prettier --ignore-unknown '**/**'", "turbo:local": "if [ -z $CI ]; then echo $(date)$RANDOM > apps/cms/turbo-seed.txt; fi", - "turbo:test": "pnpm turbo:local && pnpm tb test:unit --output-logs=new-only && pnpm tb test:integration --output-logs=new-only --concurrency=1", - "turbo:test:force": "pnpm tb test:unit --output-logs=new-only --force && pnpm tb test:integration --output-logs=new-only --concurrency=1 --force", - "turbo:test:quick": "pnpm turbo:local && pnpm tb test:unit --output-logs=new-only", + "turbo:test": "pnpm turbo:local && pnpm turbo test:unit --output-logs=new-only && pnpm turbo test:integration --output-logs=new-only --concurrency=1", + "turbo:test:force": "pnpm turbo test:unit --output-logs=new-only --force && pnpm turbo test:integration --output-logs=new-only --concurrency=1 --force", + "turbo:test:quick": "pnpm turbo:local && pnpm turbo test:unit --output-logs=new-only", "turbo:prep": "pnpm turbo:local && pnpm turbo prep --output-logs=new-only", - "turbo:prep:force": "rm -f apps/cms/web/sites/default/files/.sqlite && pnpm tb prep --force", + "turbo:prep:force": "rm -f apps/cms/web/sites/default/files/.sqlite && pnpm turbo prep --force", "gutenberg:generate": "pnpm run --filter \"@custom/gutenberg_blocks\" gutenberg:generate" }, "private": true, diff --git a/packages/drupal/custom/custom.module b/packages/drupal/custom/custom.module index 6ae54ee93..4341a1006 100644 --- a/packages/drupal/custom/custom.module +++ b/packages/drupal/custom/custom.module @@ -1,6 +1,11 @@ createFileUrl(); } - } catch (\Throwable $e) { + } + catch (\Throwable $e) { \Drupal::logger('custom')->error( 'Error turning media (id: "{mediaId}") route into file url. Error: {error}', [ 'mediaId' => $mediaId, 'error' => ErrorUtil::renderExceptionSafe($e), ] - ); + ); } } ); @@ -96,16 +101,18 @@ function custom_silverback_gutenberg_link_processor_outbound_url_alter( /** * Implements hook_silverback_gutenberg_link_processor_inbound_link_alter(). + * * @param \DOMElement $link * @param \Drupal\silverback_gutenberg\LinkProcessor $linkProcessor * * @return void + * * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException */ function custom_silverback_gutenberg_link_processor_inbound_link_alter( \DOMElement $link, - LinkProcessor $linkProcessor + LinkProcessor $linkProcessor, ) { // For inbound links (when data gets saved), if the link points to a public // file, then we want to replace the href value with "media/uuid/edit" and @@ -117,9 +124,9 @@ function custom_silverback_gutenberg_link_processor_inbound_link_alter( // needed so that the entity usage integration works properly (where the // data-id and data-entity-type attributes are checked). $href = $link->getAttribute('href'); - /* @var \Drupal\Core\StreamWrapper\StreamWrapperManager $wrapperManager */ + /** @var \Drupal\Core\StreamWrapper\StreamWrapperManager $wrapperManager */ $wrapperManager = \Drupal::service('stream_wrapper_manager'); - /* @var \Drupal\Core\StreamWrapper\StreamWrapperInterface[] $visibleWrappers */ + /** @var \Drupal\Core\StreamWrapper\StreamWrapperInterface[] $visibleWrappers */ $visibleWrappers = $wrapperManager->getWrappers(StreamWrapperInterface::VISIBLE); foreach ($visibleWrappers as $scheme => $wrapperInfo) { $wrapper = $wrapperManager->getViaScheme($scheme); @@ -167,6 +174,7 @@ function custom_silverback_gutenberg_link_processor_inbound_link_alter( * Implements hook_form_alter(). * * Using global form_alter as it's to be executed at the very late stage. + * * @see custom_heavy_module_implements_alter */ function custom_form_alter(&$form, FormStateInterface $form_state, $form_id) { @@ -205,6 +213,23 @@ function custom_form_alter(&$form, FormStateInterface $form_state, $form_id) { } } + // Move the SEO group inside the sidebar. + if (!empty($form['#fieldgroups']['group_seo']) && $form['#fieldgroups']['group_seo']->parent_name === 'metabox_fields') { + // First, make sure to move back the seo fields into the seo group, because + // the gutenberg module moved them into the metabox_fields group. + foreach ($form['#fieldgroups']['group_seo']->children as $seo_field_name) { + if (!empty($form[$seo_field_name])) { + $form[$seo_field_name]['#group'] = 'group_seo'; + } + } + // Move now the SEO group into the sidebar and position it right bellow the + // meta group. + $form['#fieldgroups']['group_seo']->parent_name = 'advanced'; + if (!empty($form['meta']['#weight'])) { + $form['#fieldgroups']['group_seo']->weight = $form['meta']['#weight'] + 1; + } + } + // If the "More settings" fieldset is empty, remove it completely. $metaboxHasFields = FALSE; foreach (Element::children($form) as $key) { @@ -245,13 +270,13 @@ function custom_field_widget_language_select_form_alter(&$element, FormStateInte function custom_form_views_exposed_form_alter(&$form, FormStateInterface $form_state, $form_id) { // Remove all the confusing options from the language list. unset( - // Site's default language + // Site's default language. $form['langcode']['#options']['***LANGUAGE_site_default***'], - // Interface text language selected for page + // Interface text language selected for page. $form['langcode']['#options']['***LANGUAGE_language_interface***'], - // Not specified + // Not specified. $form['langcode']['#options']['und'], - // Not applicable + // Not applicable. $form['langcode']['#options']['zxx'], ); // The `excludeIds` filter contains a list of UUIDs, and this might exceed the @@ -272,7 +297,8 @@ function _custom_key_auth_form_access(UserInterface $user): AccessResult { $access = AccessResult::forbidden(); if (\Drupal::currentUser()->id() == 1) { $access = AccessResult::allowed(); - } else { + } + else { $roleIds = \Drupal::currentUser()->getRoles(); if ($roleIds) { foreach (Role::loadMultiple($roleIds) as $role) { @@ -312,6 +338,15 @@ function custom_views_data_alter(array &$data) { 'click sortable' => TRUE, ], ]; + + $data['media']['custom_usage_count'] = [ + 'title' => t('Usage count'), + 'help' => t('Display entity usage count.'), + 'field' => [ + 'id' => 'custom_usage_count', + 'click sortable' => FALSE, + ], + ]; } /** @@ -369,3 +404,24 @@ function _custom_add_session_iframe_to_page(array &$variables): void { ]; } } + +/** + * Implements hook_tokens_alter() for nodes. + * + * @param array $replacements + * @param array $context + * @param \Drupal\Core\Render\BubbleableMetadata $bubbleable_metadata + * + * @return void + */ +function custom_tokens_alter(array &$replacements, array $context, \Drupal\Core\Render\BubbleableMetadata $bubbleable_metadata) { + if ($context['type'] == 'node' && !empty($context['data']['node'])) { + /* @var Drupal\node\NodeInterface $node */ + $node = $context['data']['node']; + // In case there is no value for the seo title field, then we actually want + // to fall back to the label (title) of the node itself. + if (isset($context['tokens']['field_seo_title']) && empty($replacements[$context['tokens']['field_seo_title']])) { + $replacements[$context['tokens']['field_seo_title']] = $node->label(); + } + } +} diff --git a/packages/drupal/custom/src/EventSubscriber/EntityLanguageRedirectSubscriber.php b/packages/drupal/custom/src/EventSubscriber/EntityLanguageRedirectSubscriber.php index 63016e2af..92d194316 100644 --- a/packages/drupal/custom/src/EventSubscriber/EntityLanguageRedirectSubscriber.php +++ b/packages/drupal/custom/src/EventSubscriber/EntityLanguageRedirectSubscriber.php @@ -36,6 +36,28 @@ public static function getSubscribedEvents() { } public function onKernelRequest(RequestEvent $event): void { + $redirect = $this->getMissingDefaultRevisionRedirect($event) + ?? $this->getMissingTranslationRedirect($event); + if ($redirect) { + // Add the necessary cache contexts to the response, as redirect + // responses are cached as well. + $metadata = new CacheableMetadata(); + $metadata->addCacheContexts([ + 'languages:language_interface', + 'url.query_args', + 'user', + ]); + $redirect->addCacheableDependency($metadata); + if ($this->routeMatch->getRouteName() === 'entity.node.canonical') { + $node = $this->routeMatch->getCurrentRouteMatch()->getParameter('node'); + $redirect->addCacheableDependency($node); + } + + $event->setResponse($redirect); + } + } + + private function getMissingTranslationRedirect(RequestEvent $event): ?TrustedRedirectResponse { // In case the user tries to access a node in a language entity is not // translated to, we redirect to the entity in the original language and // display a warning message. @@ -57,16 +79,43 @@ public function onKernelRequest(RequestEvent $event): void { } $urlString = $url->toString() . '?' . $queryString . 'content_language_not_available=true&requested_language=' . $requestedLanguageId; - // Add the necessary cache contexts to the response, as redirect - // responses are cached as well. - $metadata = new CacheableMetadata(); - $metadata->addCacheContexts(['languages:language_interface', 'url.query_args']); - $response = new TrustedRedirectResponse($urlString); - $response->addCacheableDependency($entity); - $response->addCacheableDependency($metadata); + return new TrustedRedirectResponse($urlString); + } + } - $event->setResponse($response); + return NULL; + } + + private function getMissingDefaultRevisionRedirect(RequestEvent $event): ?TrustedRedirectResponse { + // This spaghetti code detects if user is trying to view a translation that + // is a draft only and does not have a published revision on the canonical + // route. + // Why do we do it: The content translation overview page links to + // `/{lang}/node/{nid}`, but in the case mentioned above, the canonical + // route displays the content in the original language. Which is quite + // confusing. + if ($this->routeMatch->getRouteName() === 'entity.node.canonical') { + $entity = $this->routeMatch->getCurrentRouteMatch()->getParameter('node'); + $requestedLanguageId = $this->languageManager->getCurrentLanguage(LanguageInterface::TYPE_CONTENT)->getId(); + if ($entity->language()->getId() != $requestedLanguageId) { + $storage = \Drupal::entityTypeManager()->getStorage('node'); + $latestRevisionId = $storage->getLatestTranslationAffectedRevisionId($entity->id(), $requestedLanguageId); + if ($latestRevisionId) { + /** @var \Drupal\Core\Entity\ContentEntityInterface $latestRevision */ + $latestRevision = $storage->loadRevision($latestRevisionId); + $translations = $latestRevision->getTranslationLanguages(); + if (array_key_exists($requestedLanguageId, $translations)) { + $latestRevision = $latestRevision->getTranslation($requestedLanguageId); + // Bingo! We found the target case. Redirect to the latest revision. + if ($latestRevision->access('view')) { + $url = $latestRevision->toUrl('latest-version')->toString(); + return new TrustedRedirectResponse($url); + } + } + } } } + return NULL; } + } diff --git a/packages/drupal/custom/src/Plugin/views/field/UsageCount.php b/packages/drupal/custom/src/Plugin/views/field/UsageCount.php new file mode 100644 index 000000000..e87d2d7b3 --- /dev/null +++ b/packages/drupal/custom/src/Plugin/views/field/UsageCount.php @@ -0,0 +1,186 @@ + t('Example'), + * 'help' => t('Custom example field.'), + * 'id' => 'foo_example', + * ]; + * } + * @endcode + */ +final class UsageCount extends FieldPluginBase { + + /** + * Constructs a new UsageCount instance. + */ + public function __construct( + array $configuration, + $plugin_id, + $plugin_definition, + private readonly EntityTypeManagerInterface $entityTypeManager, + private readonly EntityFieldManagerInterface $entityFieldManager, + private readonly EntityUsageInterface $entityUsage, + ) { + parent::__construct($configuration, $plugin_id, $plugin_definition); + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition): self { + return new self( + $configuration, + $plugin_id, + $plugin_definition, + $container->get('entity_type.manager'), + $container->get('entity_field.manager'), + entityUsage: $container->get('entity_usage.usage'), + ); + } + + /** + * {@inheritdoc} + */ + public function query(): void { + // For non-existent columns (i.e. computed fields) this method must be + // empty. + } + + /** + * {@inheritdoc} + */ + public function render(ResultRow $values): string|MarkupInterface { + + $count = 0; + $media = $values->_entity; + if ($media instanceof MediaInterface) { + $language = $media->language(); + $all_usages = $this->entityUsage->listSources($media); + foreach ($all_usages as $source_type => $ids) { + $type_storage = $this->entityTypeManager->getStorage($source_type); + foreach ($ids as $source_id => $records) { + $source_entity = $type_storage->load($source_id); + if (!$source_entity) { + // If for some reason this record is broken, just skip it. + continue; + } + + $link = $this->getSourceEntityLink($source_entity); + // If the label is empty it means this usage shouldn't be shown + // on the UI, just skip this count. + if (empty($link)) { + continue; + } + + $count++; + } + } + + $url = Url::fromUserInput("/{$language->getId()}/media/{$media->id()}/edit/usage", []); + } + + return $count ? Markup::create("{$count}") : 0; + } + + /** + * Retrieve a link to the source entity. + * + * Note that some entities are special-cased, since they don't have canonical + * template and aren't expected to be re-usable. For example, if the entity + * passed in is a paragraph or a block content, the link we produce will point + * to this entity's parent (host) entity instead. + * + * @param \Drupal\Core\Entity\EntityInterface $source_entity + * The source entity. + * @param string|null $text + * (optional) The link text for the anchor tag as a translated string. + * If NULL, it will use the entity's label. Defaults to NULL. + * + * @return \Drupal\Core\Link|string|false + * A link to the entity, or its non-linked label, in case it was impossible + * to correctly build a link. Will return FALSE if this item should not be + * shown on the UI (for example when dealing with an orphan paragraph). + */ + protected function getSourceEntityLink(EntityInterface $source_entity, $text = NULL) { + // Note that $paragraph_entity->label() will return a string of type: + // "{parent label} > {parent field}", which is actually OK for us. + $entity_label = $source_entity->access('view label') ? $source_entity->label() : $this->t('- Restricted access -'); + + $rel = NULL; + if ($source_entity->hasLinkTemplate('revision')) { + $rel = 'revision'; + } + elseif ($source_entity->hasLinkTemplate('canonical')) { + $rel = 'canonical'; + } + + // Block content likely used in Layout Builder inline blocks. + if ($source_entity instanceof BlockContentInterface && !$source_entity->isReusable()) { + $rel = NULL; + } + + $link_text = $text ?: $entity_label; + if ($rel) { + // Prevent 404s by exposing the text unlinked if the user has no access + // to view the entity. + return $source_entity->access('view') ? $source_entity->toLink($link_text, $rel) : $link_text; + } + + // Treat paragraph entities in a special manner. Normal paragraph entities + // only exist in the context of their host (parent) entity. For this reason + // we will use the link to the parent's entity label instead. + /** @var \Drupal\paragraphs\ParagraphInterface $source_entity */ + if ($source_entity->getEntityTypeId() == 'paragraph') { + $parent = $source_entity->getParentEntity(); + if ($parent) { + return $this->getSourceEntityLink($parent, $link_text); + } + } + // Treat block_content entities in a special manner. Block content + // relationships are stored as serialized data on the host entity. This + // makes it difficult to query parent data. Instead we look up relationship + // data which may exist in entity_usage tables. This requires site builders + // to set up entity usage on host-entity-type -> block_content manually. + // @todo this could be made more generic to support other entity types with + // difficult to handle parent -> child relationships. + elseif ($source_entity->getEntityTypeId() === 'block_content') { + $sources = $this->entityUsage->listSources($source_entity, FALSE); + $source = reset($sources); + if ($source !== FALSE) { + $parent = $this->entityTypeManager->getStorage($source['source_type'])->load($source['source_id']); + if ($parent) { + return $this->getSourceEntityLink($parent); + } + } + } + + // As a fallback just return a non-linked label. + return $link_text; + } + +} diff --git a/packages/drupal/gutenberg_blocks/css/edit.css b/packages/drupal/gutenberg_blocks/css/edit.css index 68f0871f5..60422f7b3 100644 --- a/packages/drupal/gutenberg_blocks/css/edit.css +++ b/packages/drupal/gutenberg_blocks/css/edit.css @@ -312,3 +312,25 @@ details[open] > summary svg { .col-start-2 { grid-column-start: 2; } + +.entity-meta .media-library-selection .media-library-item--grid { + width: 100%; +} + +/* Reset a few link input suggestion styles to their gutenberg editor values. */ +.block-editor-inner-blocks .block-editor-link-control__search-input-wrapper { + border: 1px solid #cccccc; + font-size: 13px; +} + +.block-editor-inner-blocks + .block-editor-link-control__search-input-wrapper + button.block-editor-link-control__search-item { + padding: 12px 16px; +} + +.block-editor-inner-blocks + .block-editor-link-control__search-input-wrapper + button.block-editor-link-control__search-item:hover { + background-color: #ddd; +} diff --git a/packages/drupal/gutenberg_blocks/js/blocks/cta.tsx b/packages/drupal/gutenberg_blocks/js/blocks/cta.tsx index d3fd04a00..3ce767187 100644 --- a/packages/drupal/gutenberg_blocks/js/blocks/cta.tsx +++ b/packages/drupal/gutenberg_blocks/js/blocks/cta.tsx @@ -114,7 +114,6 @@ registerBlockType<{ // for 'data-entity-type' in the onChange() handler by yourself. //suggestionsQuery={{ - // type: 'post', // subtype: 'gutenberg', //}} diff --git a/packages/drupal/gutenberg_blocks/js/blocks/heading.tsx b/packages/drupal/gutenberg_blocks/js/blocks/heading.tsx index d5816b859..5b7f89264 100644 --- a/packages/drupal/gutenberg_blocks/js/blocks/heading.tsx +++ b/packages/drupal/gutenberg_blocks/js/blocks/heading.tsx @@ -100,7 +100,7 @@ registerBlockType<{ keepPlaceholderOnFocus={true} onChange={(text) => { props.setAttributes({ - text: cleanUpText(text), + text: cleanUpText(text, ['strong']), }); }} /> diff --git a/packages/drupal/gutenberg_blocks/js/blocks/teaser-item.tsx b/packages/drupal/gutenberg_blocks/js/blocks/teaser-item.tsx index 155fd99fd..4e13beede 100644 --- a/packages/drupal/gutenberg_blocks/js/blocks/teaser-item.tsx +++ b/packages/drupal/gutenberg_blocks/js/blocks/teaser-item.tsx @@ -36,7 +36,6 @@ registerBlockType<{ }} settings={{}} suggestionsQuery={{ - type: 'post', // Use the teaser_list linkit profile to fetch suggestions. subtype: 'teaser_list', }} diff --git a/packages/drupal/gutenberg_blocks/js/blocks/teaser-list.tsx b/packages/drupal/gutenberg_blocks/js/blocks/teaser-list.tsx index 45421d828..95bd870de 100644 --- a/packages/drupal/gutenberg_blocks/js/blocks/teaser-list.tsx +++ b/packages/drupal/gutenberg_blocks/js/blocks/teaser-list.tsx @@ -47,7 +47,7 @@ registerBlockType<{ attributes; return ( -
+
{__('Teaser list')}
diff --git a/packages/drupal/gutenberg_blocks/package.json b/packages/drupal/gutenberg_blocks/package.json index f2ab5f86d..2ae834327 100644 --- a/packages/drupal/gutenberg_blocks/package.json +++ b/packages/drupal/gutenberg_blocks/package.json @@ -10,7 +10,7 @@ "gutenberg:generate": "node ./scripts/generate-gutenberg-block.js" }, "dependencies": { - "@types/node": "^18", + "@types/node": "^20", "clsx": "^2.1.0", "fs": "0.0.1-security", "graphql": "16.8.1", diff --git a/packages/drupal/test_content/content/node/080b30e2-5a68-4390-9dec-0c7e850840a7.yml b/packages/drupal/test_content/content/node/080b30e2-5a68-4390-9dec-0c7e850840a7.yml new file mode 100644 index 000000000..1a8fce6d8 --- /dev/null +++ b/packages/drupal/test_content/content/node/080b30e2-5a68-4390-9dec-0c7e850840a7.yml @@ -0,0 +1,60 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 080b30e2-5a68-4390-9dec-0c7e850840a7 + bundle: page + default_langcode: en +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Block: CTA' + created: + - + value: 1733840458 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + pate_is_template: + - + value: false + pate_structure_only: + - + value: false + path: + - + alias: /block-cta + langcode: en + pathauto: 0 + content_translation_source: + - + value: und + content_translation_outdated: + - + value: false + body: + - + value: |- + + + + + + + + format: gutenberg + summary: '' diff --git a/packages/drupal/test_content/content/node/11a60305-a4b0-4c9c-8978-afae94794863.yml b/packages/drupal/test_content/content/node/11a60305-a4b0-4c9c-8978-afae94794863.yml new file mode 100644 index 000000000..783584c43 --- /dev/null +++ b/packages/drupal/test_content/content/node/11a60305-a4b0-4c9c-8978-afae94794863.yml @@ -0,0 +1,62 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 11a60305-a4b0-4c9c-8978-afae94794863 + bundle: page + default_langcode: en + depends: + 5dfc1856-e9e4-4f02-9cd6-9d888870ce1a: media +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Block: Hero with Form' + created: + - + value: 1734016491 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + pate_is_template: + - + value: false + pate_structure_only: + - + value: false + path: + - + alias: /block-hero-form + langcode: en + pathauto: 0 + content_translation_source: + - + value: und + content_translation_outdated: + - + value: false + body: + - + value: |- + + + + +

+ + + format: gutenberg + summary: '' diff --git a/packages/drupal/test_content/content/node/3164a225-df20-4794-8cfc-b7cd81cfde58.yml b/packages/drupal/test_content/content/node/3164a225-df20-4794-8cfc-b7cd81cfde58.yml deleted file mode 100644 index 7c1ceaaf9..000000000 --- a/packages/drupal/test_content/content/node/3164a225-df20-4794-8cfc-b7cd81cfde58.yml +++ /dev/null @@ -1,222 +0,0 @@ -_meta: - version: '1.0' - entity_type: node - uuid: 3164a225-df20-4794-8cfc-b7cd81cfde58 - bundle: page - default_langcode: en - depends: - 3a0fe860-a6d6-428a-9474-365bd57509aa: media -default: - revision_uid: - - - target_id: 1 - status: - - - value: true - uid: - - - target_id: 1 - title: - - - value: 'Info grid' - created: - - - value: 1716194667 - promote: - - - value: false - sticky: - - - value: false - moderation_state: - - - value: published - pate_is_template: - - - value: false - pate_structure_only: - - - value: false - path: - - - alias: /info-grid - langcode: en - pathauto: 0 - content_translation_source: - - - value: und - content_translation_outdated: - - - value: false - body: - - - value: |- - - - - - - -

I am a heading

- - - -

I am the body

- - - - - - - -

I am second heading

- - - -

I am the second body

- - - - - - - -

I am the third heading

- - - -

I am the third body

- - - - - - - - - -

Just one info grid

- - - -

- - - - - - - - - -

- - - -

- - - - - - - -

- - - -

- - - - - - - -

- - - -

- - - - - -

- - - - - - - - - -

test

- - - -

Heading

- - - - - -

I am p tag

- - - - - -

Testing

- - - -

Testing

- - - -

Testing

- - - - - - - -

Heading

- - - -

Heading

- - - - - -

Heading

- - - -

TEst

- - - -

est

- - - -

test

- - - -

test

- - - - - - - format: gutenberg - summary: '' diff --git a/packages/drupal/test_content/content/node/358dcf0d-0910-4d0b-acc8-5a20108b3f20.yml b/packages/drupal/test_content/content/node/358dcf0d-0910-4d0b-acc8-5a20108b3f20.yml new file mode 100644 index 000000000..d653a0e13 --- /dev/null +++ b/packages/drupal/test_content/content/node/358dcf0d-0910-4d0b-acc8-5a20108b3f20.yml @@ -0,0 +1,64 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 358dcf0d-0910-4d0b-acc8-5a20108b3f20 + bundle: page + default_langcode: en +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Block: Horizontal separator' + created: + - + value: 1733841108 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + pate_is_template: + - + value: false + pate_structure_only: + - + value: false + path: + - + alias: /block-horizontal-separator + langcode: en + pathauto: 0 + content_translation_source: + - + value: und + content_translation_outdated: + - + value: false + body: + - + value: |- + + + + + + +

Lorem ipsum dolor sit amet consectetur adipiscing elit mi phasellus, molestie nascetur bibendum condimentum justo non purus inceptos, vestibulum facilisis congue luctus ultricies tempor urna penatibus. Sagittis eleifend maecenas mauris ante ullamcorper montes sed penatibus integer, fames mollis scelerisque vitae gravida cras dictum feugiat augue.

+ + + + + format: gutenberg + summary: '' diff --git a/packages/drupal/test_content/content/node/3c975048-5899-48c6-ae51-798202e8dc50.yml b/packages/drupal/test_content/content/node/3c975048-5899-48c6-ae51-798202e8dc50.yml new file mode 100644 index 000000000..2609374ab --- /dev/null +++ b/packages/drupal/test_content/content/node/3c975048-5899-48c6-ae51-798202e8dc50.yml @@ -0,0 +1,106 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 3c975048-5899-48c6-ae51-798202e8dc50 + bundle: page + default_langcode: en +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Webform Success Page' + created: + - + value: 1734004272 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + pate_is_template: + - + value: false + pate_structure_only: + - + value: false + path: + - + alias: /webform/success + langcode: en + pathauto: 0 + content_translation_source: + - + value: und + content_translation_outdated: + - + value: false + body: + - + value: |- + + + + +

This is the webform success page, and some webforms will be redirected here upon success.

+ + + format: gutenberg + summary: '' +translations: + de: + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Webform Success Page DE' + created: + - + value: 1734005079 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + path: + - + alias: /webform/success + langcode: de + pathauto: 0 + content_translation_source: + - + value: en + content_translation_outdated: + - + value: false + body: + - + value: |- + + + + +

Dies ist die Erfolgsseite des Webformulars. Einige Webformulare werden bei Erfolg hierher umgeleitet.

+ + + format: gutenberg + summary: '' diff --git a/packages/drupal/test_content/content/node/4189dec1-3b09-4eec-b4d5-b7cc28eaeae3.yml b/packages/drupal/test_content/content/node/4189dec1-3b09-4eec-b4d5-b7cc28eaeae3.yml new file mode 100644 index 000000000..ad661da31 --- /dev/null +++ b/packages/drupal/test_content/content/node/4189dec1-3b09-4eec-b4d5-b7cc28eaeae3.yml @@ -0,0 +1,71 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 4189dec1-3b09-4eec-b4d5-b7cc28eaeae3 + bundle: page + default_langcode: en + depends: + 3a0fe860-a6d6-428a-9474-365bd57509aa: media + 5dfc1856-e9e4-4f02-9cd6-9d888870ce1a: media +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Block: Image with Text' + created: + - + value: 1733841504 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + pate_is_template: + - + value: false + pate_structure_only: + - + value: false + path: + - + alias: /block-image-text + langcode: en + pathauto: 0 + content_translation_source: + - + value: und + content_translation_outdated: + - + value: false + body: + - + value: |- + + + + + +

Image with text on the left

+ + + + + +

Image with text on the right

+ + + + format: gutenberg + summary: '' diff --git a/packages/drupal/test_content/content/node/487b2750-bf2a-4b5d-a753-2942a63bb6a4.yml b/packages/drupal/test_content/content/node/487b2750-bf2a-4b5d-a753-2942a63bb6a4.yml new file mode 100644 index 000000000..2f3b48a16 --- /dev/null +++ b/packages/drupal/test_content/content/node/487b2750-bf2a-4b5d-a753-2942a63bb6a4.yml @@ -0,0 +1,72 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 487b2750-bf2a-4b5d-a753-2942a63bb6a4 + bundle: page + default_langcode: en +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Block: List' + created: + - + value: 1733840670 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + pate_is_template: + - + value: false + pate_structure_only: + - + value: false + path: + - + alias: /block-list + langcode: en + pathauto: 0 + content_translation_source: + - + value: und + content_translation_outdated: + - + value: false + body: + - + value: |- + + + + +
  • Bullet Item 1
  • Bullet Item 2
  • Bullet Item 3
+ + + +
  • Arrow Item 1
  • Arrow Item 2
  • Arrow Item 3
+ + + +
  • Check Item 1
  • Check Item 2
  • Check Item 3
+ + + +
  • Question Item 1
  • Question Item 2
  • Question Item 3
+ + + format: gutenberg + summary: '' diff --git a/packages/drupal/test_content/content/node/54ee7380-a3c0-4c45-8305-933143dc2ff6.yml b/packages/drupal/test_content/content/node/54ee7380-a3c0-4c45-8305-933143dc2ff6.yml new file mode 100644 index 000000000..d3766a688 --- /dev/null +++ b/packages/drupal/test_content/content/node/54ee7380-a3c0-4c45-8305-933143dc2ff6.yml @@ -0,0 +1,60 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 54ee7380-a3c0-4c45-8305-933143dc2ff6 + bundle: page + default_langcode: en + depends: + 5dfc1856-e9e4-4f02-9cd6-9d888870ce1a: media +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Block: Quote' + created: + - + value: 1733840993 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + pate_is_template: + - + value: false + pate_structure_only: + - + value: false + path: + - + alias: /block-quote + langcode: en + pathauto: 0 + content_translation_source: + - + value: und + content_translation_outdated: + - + value: false + body: + - + value: |- + + + + + + format: gutenberg + summary: '' diff --git a/packages/drupal/test_content/content/node/557b324d-2183-48e7-9054-6dc90e18beb1.yml b/packages/drupal/test_content/content/node/557b324d-2183-48e7-9054-6dc90e18beb1.yml new file mode 100644 index 000000000..47a613f40 --- /dev/null +++ b/packages/drupal/test_content/content/node/557b324d-2183-48e7-9054-6dc90e18beb1.yml @@ -0,0 +1,76 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 557b324d-2183-48e7-9054-6dc90e18beb1 + bundle: page + default_langcode: en +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Block: Info Grid' + created: + - + value: 1733841773 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + pate_is_template: + - + value: false + pate_structure_only: + - + value: false + path: + - + alias: /block-info-grid + langcode: en + pathauto: 0 + content_translation_source: + - + value: und + content_translation_outdated: + - + value: false + body: + - + value: |- + + + + + + +

Some information here

+ + + + + +

Some information here

+ + + + + +

Some information here

+ + + + + format: gutenberg + summary: '' diff --git a/packages/drupal/test_content/content/node/5f108e07-62ca-4025-adca-069b3adfc22c.yml b/packages/drupal/test_content/content/node/5f108e07-62ca-4025-adca-069b3adfc22c.yml new file mode 100644 index 000000000..98faf7e0d --- /dev/null +++ b/packages/drupal/test_content/content/node/5f108e07-62ca-4025-adca-069b3adfc22c.yml @@ -0,0 +1,106 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 5f108e07-62ca-4025-adca-069b3adfc22c + bundle: page + default_langcode: en +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'SEO test - all empty' + created: + - + value: 1733209894 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + pate_is_template: + - + value: false + pate_structure_only: + - + value: false + path: + - + alias: /seo-test-all-empty + langcode: en + pathauto: 0 + content_translation_source: + - + value: und + content_translation_outdated: + - + value: false + body: + - + value: |- + + + + +

+ + + format: gutenberg + summary: '' +translations: + de: + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'SEO test - all empty DE' + created: + - + value: 1733212459 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + path: + - + alias: /seo-test-all-empty-de + langcode: de + pathauto: 0 + content_translation_source: + - + value: en + content_translation_outdated: + - + value: false + body: + - + value: |- + + + + +

+ + + format: gutenberg + summary: '' diff --git a/packages/drupal/test_content/content/node/6344bdc5-1b02-4542-b4ae-4e6df23b3e4c.yml b/packages/drupal/test_content/content/node/6344bdc5-1b02-4542-b4ae-4e6df23b3e4c.yml new file mode 100644 index 000000000..e1fa0a28d --- /dev/null +++ b/packages/drupal/test_content/content/node/6344bdc5-1b02-4542-b4ae-4e6df23b3e4c.yml @@ -0,0 +1,123 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 6344bdc5-1b02-4542-b4ae-4e6df23b3e4c + bundle: page + default_langcode: en + depends: + 5dfc1856-e9e4-4f02-9cd6-9d888870ce1a: media +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'SEO test - all filled in' + created: + - + value: 1733224790 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + pate_is_template: + - + value: false + pate_structure_only: + - + value: false + path: + - + alias: /seo-test-all-filled + langcode: en + pathauto: 0 + content_translation_source: + - + value: und + content_translation_outdated: + - + value: false + body: + - + value: |- + + + + +

+ + + format: gutenberg + summary: '' + field_seo_description: + - + value: 'SEO description' + field_seo_image: + - + entity: 5dfc1856-e9e4-4f02-9cd6-9d888870ce1a + field_seo_title: + - + value: 'Overwritten SEO title' +translations: + de: + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'SEO test - all filled in DE' + created: + - + value: 1733224861 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + path: + - + alias: /seo-test-all-filled-de + langcode: de + pathauto: 0 + content_translation_source: + - + value: en + content_translation_outdated: + - + value: false + body: + - + value: |- + + + + +

+ + + format: gutenberg + summary: '' + field_seo_description: + - + value: 'SEO description DE' + field_seo_title: + - + value: 'Overwritten SEO title DE' diff --git a/packages/drupal/test_content/content/node/67c21535-4851-4aea-b46e-c4eccd4e494a.yml b/packages/drupal/test_content/content/node/67c21535-4851-4aea-b46e-c4eccd4e494a.yml new file mode 100644 index 000000000..394c720f7 --- /dev/null +++ b/packages/drupal/test_content/content/node/67c21535-4851-4aea-b46e-c4eccd4e494a.yml @@ -0,0 +1,64 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 67c21535-4851-4aea-b46e-c4eccd4e494a + bundle: page + default_langcode: en +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Block: Paragraph' + created: + - + value: 1733840599 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + pate_is_template: + - + value: false + pate_structure_only: + - + value: false + path: + - + alias: /block-paragraph + langcode: en + pathauto: 0 + content_translation_source: + - + value: und + content_translation_outdated: + - + value: false + body: + - + value: |- + + + + +

Lorem ipsum dolor sit amet consectetur, adipiscing elit nisi tincidunt urna, ligula viverra congue est. Netus congue bibendum fringilla risus nisl fermentum massa, eleifend venenatis lacus interdum elementum. Donec euismod venenatis ridiculus non risus porttitor magna mollis faucibus vel tincidunt, molestie lacus felis mi montes mauris placerat et sagittis vitae, sociosqu curabitur cursus iaculis quam dapibus sed mattis velit aptent. Vestibulum feugiat vel vitae venenatis vulputate ad nulla arcu eget in, magna pulvinar sem primis auctor erat justo scelerisque.

+ + + +

Pharetra magna condimentum per est aliquet in blandit metus, magnis iaculis diam ultrices integer bibendum cursus consequat auctor, etiam mollis euismod nisi imperdiet tristique donec. Nec rutrum mus sociosqu dictumst arcu congue ligula, conubia lectus egestas volutpat lacus enim, ultrices praesent nisl venenatis netus quis. Nostra commodo per aliquam neque litora habitasse cubilia mattis phasellus nec, aliquet etiam libero urna consequat vivamus scelerisque eu rhoncus sed, mus lacinia natoque auctor quis massa pellentesque cras sem. Fringilla accumsan laoreet rutrum integer sagittis pellentesque, rhoncus condimentum luctus semper dictumst, aliquet eros imperdiet lectus bibendum. Donec vel placerat accumsan cursus, posuere mi velit facilisis fermentum, lobortis penatibus id.

+ + + format: gutenberg + summary: '' diff --git a/packages/drupal/test_content/content/node/69c06c93-0d3f-47e1-a5ee-ba697bd532c1.yml b/packages/drupal/test_content/content/node/69c06c93-0d3f-47e1-a5ee-ba697bd532c1.yml new file mode 100644 index 000000000..449ab375c --- /dev/null +++ b/packages/drupal/test_content/content/node/69c06c93-0d3f-47e1-a5ee-ba697bd532c1.yml @@ -0,0 +1,110 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 69c06c93-0d3f-47e1-a5ee-ba697bd532c1 + bundle: page + default_langcode: en +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Block: Form' + created: + - + value: 1733841355 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + pate_is_template: + - + value: false + pate_structure_only: + - + value: false + path: + - + alias: /block-form + langcode: en + pathauto: 0 + content_translation_source: + - + value: und + content_translation_outdated: + - + value: false + body: + - + value: |- + + + + + + + + + + format: gutenberg + summary: '' +translations: + de: + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Block: Form DE' + created: + - + value: 1734004706 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + path: + - + alias: /block-form + langcode: de + pathauto: 0 + content_translation_source: + - + value: en + content_translation_outdated: + - + value: false + body: + - + value: |- + + + + + + + + + + format: gutenberg + summary: '' diff --git a/packages/drupal/test_content/content/node/71e7b043-3718-4d6a-a2c8-42fb03554800.yml b/packages/drupal/test_content/content/node/71e7b043-3718-4d6a-a2c8-42fb03554800.yml new file mode 100644 index 000000000..5b15215ab --- /dev/null +++ b/packages/drupal/test_content/content/node/71e7b043-3718-4d6a-a2c8-42fb03554800.yml @@ -0,0 +1,72 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 71e7b043-3718-4d6a-a2c8-42fb03554800 + bundle: page + default_langcode: en +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Block: Table' + created: + - + value: 1733840802 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + pate_is_template: + - + value: false + pate_structure_only: + - + value: false + path: + - + alias: /block-table + langcode: en + pathauto: 0 + content_translation_source: + - + value: und + content_translation_outdated: + - + value: false + body: + - + value: |- + + + + +
Col 1Col 2Col 3Col 4
Row 1---
Row 2---
Row 3---
Row 4---
Table Caption
+ + + +
Col 1Col 2Col 3Col 4
Row 1---
Row 2---
Row 3---
Row 4---
Table Caption - Fixed width
+ + + +
Header 1Header 2Header 3Header 4
Col 1Col 2Col 3Col 4
Row 1---
Row 2---
Row 3---
Row 4---
Table Caption - Header Section
+ + + +
Col 1Col 2Col 3Col 4
Row 1---
Row 2---
Row 3---
Row 4---
Footer 1Footer 2Footer 3Footer 4
Table Caption - Footer Section
+ + + format: gutenberg + summary: '' diff --git a/packages/drupal/test_content/content/node/7f0f6893-c61d-4ecd-8b74-fb0a0d023ead.yml b/packages/drupal/test_content/content/node/7f0f6893-c61d-4ecd-8b74-fb0a0d023ead.yml new file mode 100644 index 000000000..5fac9a7f9 --- /dev/null +++ b/packages/drupal/test_content/content/node/7f0f6893-c61d-4ecd-8b74-fb0a0d023ead.yml @@ -0,0 +1,60 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 7f0f6893-c61d-4ecd-8b74-fb0a0d023ead + bundle: page + default_langcode: en + depends: + 5dfc1856-e9e4-4f02-9cd6-9d888870ce1a: media +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Block: Media' + created: + - + value: 1733841189 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + pate_is_template: + - + value: false + pate_structure_only: + - + value: false + path: + - + alias: /block-media + langcode: en + pathauto: 0 + content_translation_source: + - + value: und + content_translation_outdated: + - + value: false + body: + - + value: |- + + + + + + format: gutenberg + summary: '' diff --git a/packages/drupal/test_content/content/node/87b412b9-09e6-4de4-be13-a97b64df74b8.yml b/packages/drupal/test_content/content/node/87b412b9-09e6-4de4-be13-a97b64df74b8.yml new file mode 100644 index 000000000..55f244a51 --- /dev/null +++ b/packages/drupal/test_content/content/node/87b412b9-09e6-4de4-be13-a97b64df74b8.yml @@ -0,0 +1,76 @@ +_meta: + version: '1.0' + entity_type: node + uuid: 87b412b9-09e6-4de4-be13-a97b64df74b8 + bundle: page + default_langcode: en +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Block: Teaser list' + created: + - + value: 1733841857 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + pate_is_template: + - + value: false + pate_structure_only: + - + value: false + path: + - + alias: /block-teaser-list + langcode: en + pathauto: 0 + content_translation_source: + - + value: und + content_translation_outdated: + - + value: false + body: + - + value: |- + + + + + + + + + + + + + + + + + + + + + + + + format: gutenberg + summary: '' diff --git a/packages/drupal/test_content/content/node/a11aaeea-a71a-4ef0-a996-833c95767386.yml b/packages/drupal/test_content/content/node/a11aaeea-a71a-4ef0-a996-833c95767386.yml new file mode 100644 index 000000000..5e3348f8d --- /dev/null +++ b/packages/drupal/test_content/content/node/a11aaeea-a71a-4ef0-a996-833c95767386.yml @@ -0,0 +1,98 @@ +_meta: + version: '1.0' + entity_type: node + uuid: a11aaeea-a71a-4ef0-a996-833c95767386 + bundle: page + default_langcode: en +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Block: Accordion' + created: + - + value: 1733841680 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + pate_is_template: + - + value: false + pate_structure_only: + - + value: false + path: + - + alias: /block-accordion + langcode: en + pathauto: 0 + content_translation_source: + - + value: und + content_translation_outdated: + - + value: false + body: + - + value: |- + + + + + + +

I am the content for title one.

+ + + +

Lorem ipsum dolor sit amet consectetur adipiscing elit auctor, lectus nibh gravida platea euismod parturient vitae interdum senectus, laoreet litora mauris tempor risus curae inceptos. Morbi ut facilisi ullamcorper arcu dictum hac congue eros nunc, nisl nullam dictumst malesuada euismod primis fusce convallis tempor, sociosqu est dis cursus maecenas id felis dui. Vestibulum turpis scelerisque montes felis laoreet metus ligula tincidunt auctor tempus fusce fermentum, conubia habitant sapien hac sed semper cum cubilia nunc augue. Laoreet velit parturient fermentum penatibus sociosqu mollis auctor nascetur pellentesque et libero, ac nisl commodo posuere sagittis enim egestas placerat molestie curabitur. Dictumst laoreet commodo magnis feugiat sagittis platea felis est convallis, integer curae blandit sociis suspendisse maecenas potenti risus ridiculus, a tempor tellus pellentesque fermentum fames tincidunt scelerisque.

+ + + + + +

I am the content for title two.

+ + + +

Lorem ipsum dolor sit amet consectetur adipiscing elit dis rutrum vestibulum congue est malesuada egestas vitae, at ante varius nec vulputate cubilia mauris cras auctor suscipit faucibus nisl dictumst. Pulvinar sociosqu parturient habitant himenaeos in volutpat nascetur magnis, iaculis varius at mi sollicitudin morbi ligula nec, diam per scelerisque risus elementum tempor vel. Velit montes quisque metus penatibus porttitor iaculis justo posuere, porta suspendisse sem nullam ante facilisis proin, neque sollicitudin dis himenaeos ligula morbi euismod. Volutpat tempus ultrices feugiat dictum senectus porta condimentum sodales, eros sociosqu libero risus suspendisse proin tortor, egestas ridiculus nostra platea commodo id torquent. Dis ultrices mollis hac tempor magna diam suscipit natoque odio et, tortor tellus enim litora eu felis ad volutpat cursus pharetra, nostra mus auctor inceptos metus mattis porta scelerisque magnis. Natoque iaculis nascetur pellentesque est arcu pharetra phasellus interdum, venenatis tempor proin dictum metus dapibus dis, tortor malesuada duis ad eu ullamcorper elementum. Metus odio dignissim dictum fames nec ut, faucibus porta placerat ullamcorper cum donec felis, tempor imperdiet scelerisque commodo himenaeos.

+ + + + + +

I am the content for title three.

+ + + +

Lorem ipsum dolor sit amet consectetur adipiscing elit sodales, dictum massa scelerisque parturient sagittis rutrum taciti porttitor, in eleifend habitant habitasse enim placerat phasellus. Mus tempus euismod id donec facilisi imperdiet mollis, montes convallis cubilia per tristique faucibus, pellentesque quam interdum sagittis tellus ac. Sociis sapien imperdiet himenaeos mus ornare conubia hac molestie proin, etiam diam arcu eleifend euismod odio vivamus. Turpis nisl ad hac duis fusce phasellus nibh dictum integer purus arcu, donec sociosqu eu at tortor sapien scelerisque tempus gravida mattis, torquent praesent feugiat volutpat felis viverra pellentesque eget suscipit quisque.

+ + + + + +

I am the content for title four.

+ + + +

Lorem ipsum dolor sit amet consectetur adipiscing elit justo habitant, platea laoreet hac suspendisse taciti euismod fermentum cras. Sed purus est varius nullam, sem magna ultricies viverra dui, class a vehicula. Leo enim dapibus malesuada feugiat dis dui placerat pretium, lacus taciti cum sociis diam tortor dictumst, libero vel venenatis turpis nisl dictum cursus. Auctor habitant duis vestibulum venenatis natoque a ligula, malesuada senectus integer tempus fames turpis. Nostra varius feugiat habitasse eget lacinia porttitor phasellus aliquet nascetur eu a semper maecenas conubia velit sagittis, euismod praesent justo nunc lectus pulvinar nullam egestas molestie pretium metus ullamcorper luctus tincidunt tellus. Accumsan dapibus per quisque malesuada sagittis leo montes erat, euismod nostra sem cras rhoncus turpis tempor placerat aptent, taciti cubilia lobortis pellentesque nulla lectus eleifend.

+ + + + + format: gutenberg + summary: '' diff --git a/packages/drupal/test_content/content/node/a23e5334-20fc-4c34-acba-bf3c8cb5fa40.yml b/packages/drupal/test_content/content/node/a23e5334-20fc-4c34-acba-bf3c8cb5fa40.yml new file mode 100644 index 000000000..740408fcf --- /dev/null +++ b/packages/drupal/test_content/content/node/a23e5334-20fc-4c34-acba-bf3c8cb5fa40.yml @@ -0,0 +1,65 @@ +_meta: + version: '1.0' + entity_type: node + uuid: a23e5334-20fc-4c34-acba-bf3c8cb5fa40 + bundle: page + default_langcode: en + depends: + 3a0fe860-a6d6-428a-9474-365bd57509aa: media + 5dfc1856-e9e4-4f02-9cd6-9d888870ce1a: media +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Block: Image Teasers' + created: + - + value: 1733841404 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + pate_is_template: + - + value: false + pate_structure_only: + - + value: false + path: + - + alias: /block-image-teasers + langcode: en + pathauto: 0 + content_translation_source: + - + value: und + content_translation_outdated: + - + value: false + body: + - + value: |- + + + + + + + + + + format: gutenberg + summary: '' diff --git a/packages/drupal/test_content/content/node/a397ca48-8fad-411e-8901-0eba2feb989c.yml b/packages/drupal/test_content/content/node/a397ca48-8fad-411e-8901-0eba2feb989c.yml deleted file mode 100644 index 77f28fe8f..000000000 --- a/packages/drupal/test_content/content/node/a397ca48-8fad-411e-8901-0eba2feb989c.yml +++ /dev/null @@ -1,225 +0,0 @@ -_meta: - version: '1.0' - entity_type: node - uuid: a397ca48-8fad-411e-8901-0eba2feb989c - bundle: page - default_langcode: en - depends: - 3a0fe860-a6d6-428a-9474-365bd57509aa: media - 478c4289-961d-4ce8-85d6-578ae05f3019: media - 5dfc1856-e9e4-4f02-9cd6-9d888870ce1a: media - 72187a1f-3e48-4b45-a9b7-189c6fd7ee26: media - 0b45a665-286a-414e-a091-c13fa4e20eb2: node -default: - revision_uid: - - - target_id: 1 - status: - - - value: true - uid: - - - target_id: 1 - title: - - - value: 'Blocks: complete' - created: - - - value: 1686759493 - promote: - - - value: false - sticky: - - - value: false - moderation_state: - - - value: published - pate_is_template: - - - value: false - pate_structure_only: - - - value: false - path: - - - alias: /blocks-complete - langcode: en - pathauto: 0 - content_translation_source: - - - value: und - content_translation_outdated: - - - value: false - body: - - - value: |- - - - - -

A standalone paragraph with markup and link

- - - - - - - - - - - - -

All kinds of allowed blocks

- - - -
  • bla
- - - -

Heading

- - - - -

Quote

Citation
- - - -

- - - - -

Starting from this paragraph, all the following blocks should be aggregated, as they are just HTML

- - - -
12
34 with markup
Table caption
- - - -
  • list 1
  • list 2
    1. list 2.2
- - - -

Heading 3

- - - -

Quote

Citation
- - - - - - - - - - - - - - - - - - - -

Incididunt laborum velit non proident nostrud velit. Minim excepteur ut aliqua nisi. Culpa laboris consectetur proident. Tempor esse ullamco et dolor proident id officia laborum voluptate nostrud elit dolore qui amet. Ex Lorem irure eu anim ipsum officia.

- - - - - -
  • Moitié-moitié
  • Fribourgeoise
- - - -

Incididunt laborum velit non proident nostrud velit. Minim excepteur ut aliqua nisi. Culpa laboris consectetur proident. Tempor esse ullamco et dolor proident id officia laborum voluptate nostrud elit dolore qui amet. Ex Lorem irure eu anim ipsum officia.

- - - - - format: gutenberg - summary: '' -translations: - de: - status: - - - value: true - uid: - - - target_id: 1 - title: - - - value: 'Blocks: complete DE' - created: - - - value: 1687338353 - promote: - - - value: false - sticky: - - - value: false - moderation_state: - - - value: published - path: - - - alias: /blocks-complete - langcode: de - pathauto: 0 - content_translation_source: - - - value: en - content_translation_outdated: - - - value: false - body: - - - value: |- - - - - -

A standalone paragraph with markup and link DE

- - - - - - - - - -

Starting from this paragraph, all the following blocks should be aggregated, as they are just HTML DE

- - - -
12
34 with markup DE
Table caption DE
- - - -
  • list 1 DE
  • list 2 DE
    1. list 2.2 DE
- - - -

Heading 3 DE

- - - -

Quote DE

Citation DE
- - - -

- - - format: gutenberg - summary: '' diff --git a/packages/drupal/test_content/content/node/17626bb4-557f-48fc-b869-ae566f4ceae6.yml b/packages/drupal/test_content/content/node/a48adc4b-6b05-44e0-9a05-30e2d206d726.yml similarity index 72% rename from packages/drupal/test_content/content/node/17626bb4-557f-48fc-b869-ae566f4ceae6.yml rename to packages/drupal/test_content/content/node/a48adc4b-6b05-44e0-9a05-30e2d206d726.yml index b18e817e6..2ba966d48 100644 --- a/packages/drupal/test_content/content/node/17626bb4-557f-48fc-b869-ae566f4ceae6.yml +++ b/packages/drupal/test_content/content/node/a48adc4b-6b05-44e0-9a05-30e2d206d726.yml @@ -1,9 +1,11 @@ _meta: version: '1.0' entity_type: node - uuid: 17626bb4-557f-48fc-b869-ae566f4ceae6 + uuid: a48adc4b-6b05-44e0-9a05-30e2d206d726 bundle: page default_langcode: en + depends: + 3a0fe860-a6d6-428a-9474-365bd57509aa: media default: revision_uid: - @@ -16,10 +18,10 @@ default: target_id: 1 title: - - value: 'Page: minimal' + value: 'Block: Hero' created: - - value: 1686758984 + value: 1734005766 promote: - value: false @@ -37,7 +39,7 @@ default: value: false path: - - alias: /page-minimal + alias: /block-hero langcode: en pathauto: 0 content_translation_source: @@ -49,7 +51,7 @@ default: body: - value: |- - + diff --git a/packages/drupal/test_content/content/node/bdbcc2b9-2d33-4723-a6fc-35c5f56b1ab9.yml b/packages/drupal/test_content/content/node/bdbcc2b9-2d33-4723-a6fc-35c5f56b1ab9.yml new file mode 100644 index 000000000..09d836c5e --- /dev/null +++ b/packages/drupal/test_content/content/node/bdbcc2b9-2d33-4723-a6fc-35c5f56b1ab9.yml @@ -0,0 +1,80 @@ +_meta: + version: '1.0' + entity_type: node + uuid: bdbcc2b9-2d33-4723-a6fc-35c5f56b1ab9 + bundle: page + default_langcode: en +default: + revision_uid: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + title: + - + value: 'Block: Heading' + created: + - + value: 1733841242 + promote: + - + value: false + sticky: + - + value: false + moderation_state: + - + value: published + pate_is_template: + - + value: false + pate_structure_only: + - + value: false + path: + - + alias: /block-heading + langcode: en + pathauto: 0 + content_translation_source: + - + value: und + content_translation_outdated: + - + value: false + body: + - + value: |- + + + + +

Heading two

+ + + +

Heading three

+ + + +

Heading four

+ + + +

Heading two - Bold

+ + + +

Heading three - Bold

+ + + +

Heading four - Bold

+ + + format: gutenberg + summary: '' diff --git a/packages/drupal/test_content/content/node/ceb9b2a7-4c4c-4084-ada9-d5f6505d466b.yml b/packages/drupal/test_content/content/node/ceb9b2a7-4c4c-4084-ada9-d5f6505d466b.yml deleted file mode 100644 index afb06f0f3..000000000 --- a/packages/drupal/test_content/content/node/ceb9b2a7-4c4c-4084-ada9-d5f6505d466b.yml +++ /dev/null @@ -1,81 +0,0 @@ -_meta: - version: '1.0' - entity_type: node - uuid: ceb9b2a7-4c4c-4084-ada9-d5f6505d466b - bundle: page - default_langcode: en -default: - revision_uid: - - - target_id: 1 - status: - - - value: true - uid: - - - target_id: 1 - title: - - - value: 'Blocks: minimal' - created: - - - value: 1686759406 - promote: - - - value: false - sticky: - - - value: false - moderation_state: - - - value: published - pate_is_template: - - - value: false - pate_structure_only: - - - value: false - path: - - - alias: /blocks-minimal - langcode: en - pathauto: 0 - content_translation_source: - - - value: und - content_translation_outdated: - - - value: false - body: - - - value: |- - - - - - - - - -
- - - -
- - - -

- - - - - - -

- - - - - format: gutenberg - summary: '' diff --git a/packages/drupal/test_content/content/node/ef80e284-154b-41fd-9317-154b0a175299.yml b/packages/drupal/test_content/content/node/ef80e284-154b-41fd-9317-154b0a175299.yml index 7d7ad27e3..81399161d 100644 --- a/packages/drupal/test_content/content/node/ef80e284-154b-41fd-9317-154b0a175299.yml +++ b/packages/drupal/test_content/content/node/ef80e284-154b-41fd-9317-154b0a175299.yml @@ -100,14 +100,14 @@ translations: body: - value: |- - + -

Paragraph

+

Absatz

- + format: gutenberg summary: '' diff --git a/packages/drupal/test_content/content/node/52ee5cc7-0ac5-49b5-8550-ce59476bd4ac.yml b/packages/drupal/test_content/content/node/f14c6cb1-b052-4523-ad52-1fbfd32282ff.yml similarity index 62% rename from packages/drupal/test_content/content/node/52ee5cc7-0ac5-49b5-8550-ce59476bd4ac.yml rename to packages/drupal/test_content/content/node/f14c6cb1-b052-4523-ad52-1fbfd32282ff.yml index c195e8488..536cc53bf 100644 --- a/packages/drupal/test_content/content/node/52ee5cc7-0ac5-49b5-8550-ce59476bd4ac.yml +++ b/packages/drupal/test_content/content/node/f14c6cb1-b052-4523-ad52-1fbfd32282ff.yml @@ -1,7 +1,7 @@ _meta: version: '1.0' entity_type: node - uuid: 52ee5cc7-0ac5-49b5-8550-ce59476bd4ac + uuid: f14c6cb1-b052-4523-ad52-1fbfd32282ff bundle: page default_langcode: en default: @@ -16,10 +16,10 @@ default: target_id: 1 title: - - value: 'Conditional blocks' + value: 'Block: Conditional content' created: - - value: 1715684657 + value: 1733841586 promote: - value: false @@ -37,7 +37,7 @@ default: value: false path: - - alias: /conditional-blocks + alias: /block-conditional-content langcode: en pathauto: 0 content_translation_source: @@ -49,18 +49,12 @@ default: body: - value: |- - + - + -

Complete

- - - - - -

No conditions

+

This content will only be shown for one year.

diff --git a/packages/drupal/test_content/webforms/contact.yml b/packages/drupal/test_content/webforms/contact.yml index 2b0873429..a2e7c7a76 100644 --- a/packages/drupal/test_content/webforms/contact.yml +++ b/packages/drupal/test_content/webforms/contact.yml @@ -41,9 +41,139 @@ elements: |- css: '' javascript: '' settings: + ajax: false + ajax_scroll_top: form + ajax_progress_type: '' + ajax_effect: '' + ajax_speed: null + page: true + page_submit_path: '' + page_confirm_path: '' + page_theme_name: '' + form_title: both + form_submit_once: false + form_open_message: '' + form_close_message: '' + form_exception_message: '' + form_previous_submissions: true + form_confidential: false + form_confidential_message: '' + form_disable_remote_addr: false + form_convert_anonymous: false + form_prepopulate: false + form_prepopulate_source_entity: false + form_prepopulate_source_entity_required: false + form_prepopulate_source_entity_type: '' + form_unsaved: false + form_disable_back: false + form_submit_back: false + form_disable_autocomplete: false + form_novalidate: false + form_disable_inline_errors: false + form_required: false + form_autofocus: false + form_details_toggle: false + form_reset: false + form_access_denied: default + form_access_denied_title: '' + form_access_denied_message: '' + form_access_denied_attributes: { } + form_file_limit: '' + form_attributes: { } + form_method: '' + form_action: '' + share: false + share_node: false + share_theme_name: '' + share_title: true + share_page_body_attributes: { } + submission_label: '' + submission_exception_message: '' + submission_locked_message: '' + submission_log: false + submission_excluded_elements: { } + submission_exclude_empty: false + submission_exclude_empty_checkbox: false + submission_views: { } + submission_views_replace: { } + submission_user_columns: { } + submission_user_duplicate: false + submission_access_denied: default + submission_access_denied_title: '' + submission_access_denied_message: '' + submission_access_denied_attributes: { } + previous_submission_message: '' + previous_submissions_message: '' + autofill: false + autofill_message: '' + autofill_excluded_elements: { } + wizard_progress_bar: true + wizard_progress_pages: false + wizard_progress_percentage: false + wizard_progress_link: false + wizard_progress_states: false + wizard_start_label: '' + wizard_preview_link: false + wizard_confirmation: true + wizard_confirmation_label: '' + wizard_auto_forward: true + wizard_auto_forward_hide_next_button: false + wizard_keyboard: true + wizard_track: '' + wizard_prev_button_label: '' + wizard_next_button_label: '' + wizard_toggle: false + wizard_toggle_show_label: '' + wizard_toggle_hide_label: '' + wizard_page_type: container + wizard_page_title_tag: h2 + preview: 0 + preview_label: '' + preview_title: '' + preview_message: '' + preview_attributes: { } + preview_excluded_elements: { } + preview_exclude_empty: true + preview_exclude_empty_checkbox: false + draft: none + draft_multiple: false + draft_auto_save: false + draft_saved_message: '' + draft_loaded_message: '' + draft_pending_single_message: '' + draft_pending_multiple_message: '' confirmation_type: url_message - confirmation_url: /page-minimal + confirmation_url: /webform/success + confirmation_title: '' confirmation_message: 'Confirmation message for Contact webform' + confirmation_attributes: { } + confirmation_back: true + confirmation_back_label: '' + confirmation_back_attributes: { } + confirmation_exclude_query: false + confirmation_exclude_token: false + confirmation_update: false + limit_total: null + limit_total_interval: null + limit_total_message: '' + limit_total_unique: false + limit_user: null + limit_user_interval: null + limit_user_message: '' + limit_user_unique: false + entity_limit_total: null + entity_limit_total_interval: null + entity_limit_user: null + entity_limit_user_interval: null + purge: none + purge_days: null + results_disabled: false + results_disabled_ignore: false + results_customize: false + token_view: false + token_update: false + token_delete: false + serial_disabled: false access: create: roles: diff --git a/packages/drupal/test_content/webforms/inquiry.yml b/packages/drupal/test_content/webforms/inquiry.yml index 0dfaabc49..e95a6199b 100644 --- a/packages/drupal/test_content/webforms/inquiry.yml +++ b/packages/drupal/test_content/webforms/inquiry.yml @@ -140,7 +140,7 @@ settings: draft_pending_single_message: '' draft_pending_multiple_message: '' confirmation_type: url_message - confirmation_url: /page-minimal + confirmation_url: /webform/success confirmation_title: '' confirmation_message: 'Confirmation message for Contact webform' confirmation_attributes: { } diff --git a/packages/init/eslint.config.mjs b/packages/init/eslint.config.mjs new file mode 100644 index 000000000..d45591071 --- /dev/null +++ b/packages/init/eslint.config.mjs @@ -0,0 +1,8 @@ +import { base, defineConfig } from '@custom/eslint-config'; + +export default defineConfig([ + ...base, + { + ignores: [], + }, +]); diff --git a/packages/init/init.ts b/packages/init/init.ts new file mode 100644 index 000000000..1f0ff0f24 --- /dev/null +++ b/packages/init/init.ts @@ -0,0 +1,174 @@ +import fs from 'node:fs'; + +import prompt from 'prompts'; + +import { getArg, randomString, replace } from './lib'; + +// Switch to the project root. +process.chdir('../..'); + +// Get user input. +const PROJECT_NAME_HUMAN = + getArg('--project-human-name') || + ( + await prompt({ + name: 'value', + type: 'text', + message: 'Project name for humans:', + validate: (name) => (!/^.+$/.test(name) ? 'Must be not empty.' : true), + initial: 'My Project', + }) + ).value; +const PROJECT_NAME_MACHINE = + getArg('--project-machine-name') || + ( + await prompt({ + name: 'value', + type: 'text', + message: + 'Project name for machines (usually a lowercase version of Jira project code):', + validate: (name) => + !/^[a-z][a-z\d_]*$/.test(name) + ? 'Must start with a lowercase letter and contain lowercase letters, numbers and underscores only.' + : true, + initial: 'my_project', + }) + ).value; +if (!PROJECT_NAME_HUMAN || !PROJECT_NAME_MACHINE) { + // Because ctrl+c on prompt does not stop the script. + console.error('Cancelled'); + process.exit(1); +} + +// Adjust project name in the repo. +replace('README.md', '# Silverback Template', '# ' + PROJECT_NAME_HUMAN); +replace( + [ + 'apps/cms/config/sync/system.site.yml', + 'tests/schema/specs/content.spec.ts', + 'tests/e2e/specs/drupal/metatags.spec.ts', + ], + 'Silverback Drupal Template', + PROJECT_NAME_HUMAN, +); +replace( + 'apps/cms/config/sync/slack.settings.yml', + 'Silverback Template Bot', + PROJECT_NAME_HUMAN + ' Bot', +); + +// Adjust project machine name in the repo. +replace( + [ + '.lagoon.yml', + 'README.md', + '.lagoon/Dockerfile', + 'apps/cms/config/sync/system.site.yml', + 'apps/cms/config/sync/slack.settings.yml', + 'apps/cms/scaffold/settings.php.append.txt', + 'apps/publisher/publisher.config.ts', + ], + 'silverback-template', + PROJECT_NAME_MACHINE, +); +replace( + 'package.json', + '@amazeelabs/silverback-template', + PROJECT_NAME_MACHINE, +); +replace( + [ + 'apps/cms/.lagoon.env', + 'apps/publisher/.lagoon.env', + 'apps/preview/.lagoon.env', + ], + 'PROJECT_NAME=example', + 'PROJECT_NAME=' + PROJECT_NAME_MACHINE, +); +const publisherClientSecret = randomString(32); +replace( + ['apps/cms/.lagoon.env', 'apps/publisher/.lagoon.env'], + 'PUBLISHER_OAUTH2_CLIENT_SECRET=REPLACE_ME', + 'PUBLISHER_OAUTH2_CLIENT_SECRET=' + publisherClientSecret, +); +const publisherSessionSecret = randomString(32); +replace( + ['apps/publisher/.lagoon.env'], + 'PUBLISHER_OAUTH2_SESSION_SECRET=REPLACE_ME', + 'PUBLISHER_OAUTH2_SESSION_SECRET=' + publisherSessionSecret, +); +const previewClientSecret = randomString(32); +replace( + ['apps/cms/.lagoon.env'], + 'PREVIEW_OAUTH2_CLIENT_SECRET=REPLACE_ME', + 'PREVIEW_OAUTH2_CLIENT_SECRET=' + previewClientSecret, +); +replace( + ['apps/preview/.lagoon.env'], + 'OAUTH2_CLIENT_SECRET=REPLACE_ME', + 'OAUTH2_CLIENT_SECRET=' + previewClientSecret, +); +const previewSessionSecret = randomString(32); +replace( + ['apps/preview/.lagoon.env'], + 'OAUTH2_SESSION_SECRET=REPLACE_ME', + 'OAUTH2_SESSION_SECRET=' + previewSessionSecret, +); +// Template's prod domain is special. +replace('.lagoon.yml', '- example.', '- prod-' + PROJECT_NAME_MACHINE + '.'); +// The rest of domains are standard. +replace('.lagoon.yml', '-example.', '-' + PROJECT_NAME_MACHINE + '.'); + +// Update the auth key for Gatsby user. +const authKey = randomString(32); +replace( + 'packages/drupal/test_content/content/user/f20d961b-ba45-4820-b2cc-166e5ce56815.yml', + 'value: cfdb0555111c0f8924cecab028b53474', + `value: ${authKey}`, +); +replace( + 'tests/schema/lib.ts', + "'api-key': 'cfdb0555111c0f8924cecab028b53474'", + `'api-key': '${authKey}'`, +); + +// Update the default hash salt. +replace( + 'apps/cms/scaffold/settings.php.append.txt', + 'time-flies-like-an-arrow-fruit-flies-like-a-banana', + randomString(32), +); + +// Cleanup the readme. +replace( + 'README.md', + /## Create a new project from this template.+?## /gs, + '## ', +); + +// Remove e2e tests. +const e2ePackage = 'tests/e2e'; +if (!fs.existsSync(e2ePackage)) { + console.error('E2E tests already removed.'); + process.exit(1); +} +fs.rmSync(e2ePackage, { recursive: true, force: true }); + +// Remove the init script check. +replace('.github/workflows/test.yml', / {6}- name: Init check.*?\n\n/gs, ''); + +// Remove the init script. +const initPackage = 'packages/init'; +if (!fs.existsSync(initPackage)) { + console.error('Init script already removed.'); + process.exit(1); +} +fs.rmSync(initPackage, { recursive: true, force: true }); +console.log('👉 Run `pnpm i` to update the lock file.'); + +// Remove the init script check. +replace( + '.github/workflows/test.yml', + / {2}init_script:.*? {2}docker_build:/gs, + ' docker_build:', +); diff --git a/packages/init/lib.ts b/packages/init/lib.ts new file mode 100644 index 000000000..755de4e9c --- /dev/null +++ b/packages/init/lib.ts @@ -0,0 +1,42 @@ +import fs from 'node:fs'; + +export function replace( + path: string | Array, + from: RegExp | string, + to: string, +): void { + const paths = Array.isArray(path) ? path : [path]; + for (const path of paths) { + if (!fs.existsSync(path)) { + throw new Error(`File ${path} does not exist.`); + } + const contents = fs.readFileSync(path, 'utf8'); + if (!contents.match(from)) { + throw new Error(`File ${path} does not contain ${from}.`); + } + fs.writeFileSync(path, contents.replaceAll(from, to), 'utf8'); + } +} + +export function randomString(length: number): string { + let result = ''; + const characters = 'abcdefghijklmnopqrstuvwxyz0123456789'; + const charactersLength = characters.length; + let counter = 0; + while (counter < length) { + result += characters.charAt(Math.floor(Math.random() * charactersLength)); + counter += 1; + } + return result; +} + +export function getArg(name: string): string | null { + const index = process.argv.indexOf(name); + if (index === -1) { + return null; + } + if (!process.argv[index + 1]) { + return null; + } + return process.argv[index + 1]; +} diff --git a/packages/init/package.json b/packages/init/package.json new file mode 100644 index 000000000..8cc5f46a5 --- /dev/null +++ b/packages/init/package.json @@ -0,0 +1,17 @@ +{ + "name": "@custom/init", + "description": "Init script for preparing new projects.", + "type": "module", + "private": true, + "scripts": { + "test:static": "tsc --noEmit && eslint . --quiet", + "init": "tsx init.ts" + }, + "devDependencies": { + "@custom/eslint-config": "workspace:*", + "@types/prompts": "^2.4.9", + "prompts": "^2.4.2", + "tsx": "^4.7.1", + "typescript": "^5.3.3" + } +} diff --git a/packages/init/tsconfig.json b/packages/init/tsconfig.json new file mode 100644 index 000000000..53ede9bbf --- /dev/null +++ b/packages/init/tsconfig.json @@ -0,0 +1,10 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "strict": true, + "skipLibCheck": true, + "module": "esnext", + "target": "esnext", + "allowSyntheticDefaultImports": true + } +} diff --git a/packages/schema/package.json b/packages/schema/package.json index 780dba9e7..504521419 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -51,7 +51,7 @@ "@swc/cli": "^0.1.62", "@swc/core": "^1.3.67", "@types/image-size": "^0.8.0", - "@types/node": "^18", + "@types/node": "^20", "@types/react": "^18.2.46", "concurrently": "^8.2.2", "gatsby": "^5.13.1", diff --git a/packages/schema/src/schema.graphql b/packages/schema/src/schema.graphql index 37785357f..e11bdefeb 100644 --- a/packages/schema/src/schema.graphql +++ b/packages/schema/src/schema.graphql @@ -189,6 +189,7 @@ type BlockMarkup @type(id: "core/paragraph") { union Media @resolveEntityBundle = MediaImage | MediaVideo type MediaImage @type(id: "image") @entity(type: "media", bundle: "image") { + id: ID! @resolveEntityUuid url: Url! @resolveProperty(path: "field_media_image.entity") @imageUrl focalPoint: [Int!] @resolveProperty(path: "field_media_image.entity") diff --git a/packages/ui/package.json b/packages/ui/package.json index 268dd3d40..fe3b07a65 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -87,7 +87,7 @@ "@tailwindcss/typography": "^0.5.10", "@types/hast": "^2.3.9", "@types/js-cookie": "^3.0.6", - "@types/node": "~18.15.3", + "@types/node": "^20", "@types/react": "^18.2.46", "@types/react-body-classname": "^1.1.10", "@types/react-dom": "^18.2.18", diff --git a/packages/ui/src/components/Atoms/Fonts.css b/packages/ui/src/components/Atoms/Fonts.css index ba80b1770..740a447e5 100644 --- a/packages/ui/src/components/Atoms/Fonts.css +++ b/packages/ui/src/components/Atoms/Fonts.css @@ -59,17 +59,45 @@ @font-face { font-family: 'Inter'; font-style: normal; - font-weight: 600; + font-weight: 700; src: url('/fonts/preload/Inter-Bold.woff2') format('woff2'); } @font-face { font-family: 'Inter'; font-style: italic; - font-weight: 600; + font-weight: 700; src: url('/fonts/preload/Inter-BoldItalic.woff2') format('woff2'); } +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 800; + src: url('/fonts/preload/Inter-ExtraBold.woff2') format('woff2'); +} + +@font-face { + font-family: 'Inter'; + font-style: italic; + font-weight: 800; + src: url('/fonts/preload/Inter-ExtraBoldItalic.woff2') format('woff2'); +} + +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 900; + src: url('/fonts/preload/Inter-Black.woff2') format('woff2'); +} + +@font-face { + font-family: 'Inter'; + font-style: italic; + font-weight: 900; + src: url('/fonts/preload/Inter-Black.woff2') format('woff2'); +} + html, body { font-family: 'Inter', sans-serif; diff --git a/packages/ui/src/components/Organisms/PageContent/BlockMarkup.stories.ts b/packages/ui/src/components/Organisms/PageContent/BlockMarkup.stories.ts index 765b45486..f028c1e89 100644 --- a/packages/ui/src/components/Organisms/PageContent/BlockMarkup.stories.ts +++ b/packages/ui/src/components/Organisms/PageContent/BlockMarkup.stories.ts @@ -72,7 +72,7 @@ export const Mixed = { args: { markup: `

Heading 1

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Heading 2

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

    diff --git a/packages/ui/src/components/Organisms/PageHero.tsx b/packages/ui/src/components/Organisms/PageHero.tsx index 2ac942ec2..89936abca 100644 --- a/packages/ui/src/components/Organisms/PageHero.tsx +++ b/packages/ui/src/components/Organisms/PageHero.tsx @@ -26,7 +26,7 @@ function HeroImage( priority={true} width={3840} focalPoint={props.focalPoint} - className="absolute inset-0 -z-10 h-full w-full object-cover hidden lg:block" + className="absolute inset-0 -z-10 hidden size-full object-cover lg:block" data-test-id={'hero-image'} /> {props.dim ? ( @@ -49,7 +49,7 @@ function HeroImage( function DefaultHero(props: NonNullable) { return ( <> -
    +
    {props.image ? : null}
    @@ -94,7 +94,6 @@ function FormHero(props: NonNullable) {
    {props.image ? : null} -

    diff --git a/packages/ui/src/components/Routes/Menu.tsx b/packages/ui/src/components/Routes/Menu.tsx index d4ced8312..0df11eb9a 100644 --- a/packages/ui/src/components/Routes/Menu.tsx +++ b/packages/ui/src/components/Routes/Menu.tsx @@ -1,8 +1,8 @@ import { useIntl } from '@amazeelabs/react-intl'; import { FrameQuery, NavigationItem, Url, useLocation } from '@custom/schema'; -import { useOperation } from '../../utils/operation'; import { useLocale } from '../../utils/locale'; +import { useOperation } from '../../utils/operation'; export type MenuNameType = 'main' | 'footer'; diff --git a/packages/ui/src/components/Routes/Page.stories.tsx b/packages/ui/src/components/Routes/Page.stories.tsx index 6b49f9dc4..6e8b3abc8 100644 --- a/packages/ui/src/components/Routes/Page.stories.tsx +++ b/packages/ui/src/components/Routes/Page.stories.tsx @@ -12,7 +12,11 @@ import React from 'react'; import { AccordionItemText } from '../Organisms/PageContent/BlockAccordion.stories'; import { Default as BlockImageTeasers } from '../Organisms/PageContent/BlockImageTeasers.stories'; import { ImageRight } from '../Organisms/PageContent/BlockImageWithText.stories'; -import { Mixed, Paragraph } from '../Organisms/PageContent/BlockMarkup.stories'; +import { + InlineStyles, + Mixed, + Paragraph, +} from '../Organisms/PageContent/BlockMarkup.stories'; import { WithCaption } from '../Organisms/PageContent/BlockMedia.stories'; import { Default as FrameStory } from './Frame.stories'; import { Page } from './Page'; @@ -67,6 +71,10 @@ export const Default = { }, { __typename: 'BlockMarkup', + ...InlineStyles.args, + }, + { + __typename: 'BlockMedia', ...Paragraph.args, }, { diff --git a/packages/ui/src/tailwind.css b/packages/ui/src/tailwind.css index 075bc1a5c..2b4abc1c2 100644 --- a/packages/ui/src/tailwind.css +++ b/packages/ui/src/tailwind.css @@ -37,6 +37,10 @@ content: '' !important; } +.prose p.has-drop-cap:first-letter { + @apply font-bold text-8xl float-left mr-4 ml-1 mb-2 mt-0; +} + /* Selects the .block-background-image-cards only when it is the direct sibling of .default-hero section. diff --git a/packages/ui/src/utils/operation.ts b/packages/ui/src/utils/operation.ts index 70e0abd0b..124349e82 100644 --- a/packages/ui/src/utils/operation.ts +++ b/packages/ui/src/utils/operation.ts @@ -25,7 +25,7 @@ export function useOperation( [operation, variables], // If the executor is not a function, pass null to SWR, // so it does not try to fetch. - executor instanceof Function ? (arg) => executor(arg[1]) : null, + executor instanceof Function ? (arg) => executor(arg[0], arg[1]) : null, variables?.pathname?.indexOf('__preview') > 0 ? { suspense: false, @@ -60,6 +60,6 @@ export function useMutation( string, OperationVariables >(operation, (_, opts) => - executor instanceof Function ? executor(opts.arg) : executor, + executor instanceof Function ? executor(operation, opts.arg) : executor, ); } diff --git a/packages/ui/static/public/fonts/preload/Inter-Black.woff2 b/packages/ui/static/public/fonts/preload/Inter-Black.woff2 new file mode 100644 index 000000000..2e73dce34 Binary files /dev/null and b/packages/ui/static/public/fonts/preload/Inter-Black.woff2 differ diff --git a/packages/ui/static/public/fonts/preload/Inter-BlackItalic.woff2 b/packages/ui/static/public/fonts/preload/Inter-BlackItalic.woff2 new file mode 100644 index 000000000..d85db9313 Binary files /dev/null and b/packages/ui/static/public/fonts/preload/Inter-BlackItalic.woff2 differ diff --git a/packages/ui/static/public/fonts/preload/Inter-ExtraBold.woff2 b/packages/ui/static/public/fonts/preload/Inter-ExtraBold.woff2 new file mode 100644 index 000000000..bbd000698 Binary files /dev/null and b/packages/ui/static/public/fonts/preload/Inter-ExtraBold.woff2 differ diff --git a/packages/ui/static/public/fonts/preload/Inter-ExtraBoldItalic.woff2 b/packages/ui/static/public/fonts/preload/Inter-ExtraBoldItalic.woff2 new file mode 100644 index 000000000..288f2de2a Binary files /dev/null and b/packages/ui/static/public/fonts/preload/Inter-ExtraBoldItalic.woff2 differ diff --git a/packages/webform-export/.gitignore b/packages/webform-export/.gitignore new file mode 100644 index 000000000..967ffade7 --- /dev/null +++ b/packages/webform-export/.gitignore @@ -0,0 +1,2 @@ +/test-results +/playwright-report diff --git a/packages/webform-export/README.md b/packages/webform-export/README.md new file mode 100644 index 000000000..264745e12 --- /dev/null +++ b/packages/webform-export/README.md @@ -0,0 +1 @@ +Exports Drupal webforms to UI package for styling. diff --git a/packages/webform-export/eslint.config.mjs b/packages/webform-export/eslint.config.mjs new file mode 100644 index 000000000..fba5a4b5b --- /dev/null +++ b/packages/webform-export/eslint.config.mjs @@ -0,0 +1,8 @@ +import { base, defineConfig } from '@custom/eslint-config'; + +export default defineConfig([ + ...base, + { + ignores: ['playwright-report/**', 'test-results/**'], + }, +]); diff --git a/packages/webform-export/package.json b/packages/webform-export/package.json new file mode 100644 index 000000000..f119c80ce --- /dev/null +++ b/packages/webform-export/package.json @@ -0,0 +1,16 @@ +{ + "name": "@custom/webform-export", + "type": "module", + "scripts": { + "test:static": "tsc --noEmit && eslint . --quiet", + "webform-snapshots": "playwright install chromium && playwright test", + "webform-snapshots:headed": "playwright install chromium && playwright test --headed" + }, + "devDependencies": { + "@amazeelabs/save-webpage": "^1.1.1", + "@custom/eslint-config": "workspace:*", + "@playwright/test": "^1.44.1", + "@types/node": "^20", + "typescript": "^5.3.3" + } +} diff --git a/tests/e2e/playwright.config.webforms.ts b/packages/webform-export/playwright.config.ts similarity index 65% rename from tests/e2e/playwright.config.webforms.ts rename to packages/webform-export/playwright.config.ts index db2c897e8..48584ae0b 100644 --- a/tests/e2e/playwright.config.webforms.ts +++ b/packages/webform-export/playwright.config.ts @@ -1,10 +1,15 @@ import { defineConfig, devices } from '@playwright/test'; -import defaults from './playwright.config.default'; - export default defineConfig({ - ...defaults, - testDir: './webform-snapshots', + fullyParallel: true, + retries: process.env.CI ? 2 : 0, + workers: 1, + reporter: 'html', + use: { + trace: process.env.CI ? 'retain-on-failure' : 'on', + actionTimeout: 10_000, + }, + testDir: './specs', webServer: [ { command: 'pnpm run --filter "@custom/cms" start >> /tmp/cms.log 2>&1', diff --git a/tests/e2e/webform-snapshots/webforms.spec.ts b/packages/webform-export/specs/webforms.spec.ts similarity index 91% rename from tests/e2e/webform-snapshots/webforms.spec.ts rename to packages/webform-export/specs/webforms.spec.ts index 1fe4ba862..694549f3f 100644 --- a/tests/e2e/webform-snapshots/webforms.spec.ts +++ b/packages/webform-export/specs/webforms.spec.ts @@ -2,18 +2,16 @@ import { saveWebpage } from '@amazeelabs/save-webpage'; import { expect, Page, test } from '@playwright/test'; import { execSync } from 'child_process'; -import { cmsUrl } from '../helpers/url'; - -const baseDir = '../../packages/ui/static/stories/webforms'; +const baseDir = '../ui/static/stories/webforms'; const iframeResizerSelector = 'script[src*="silverback_iframe/js/iframeResizer.contentWindow.min.js"]'; test('Export webforms for styling', async ({ page }) => { execSync(`rm -rf ${baseDir}`); - const baseUrl = cmsUrl('/en/form/styling?iframe=true&no_css=true'); - - page.setViewportSize({ + const baseUrl = + 'http://127.0.0.1:8888/en/form/styling?iframe=true&no_css=true'; + await page.setViewportSize({ // In the frontend the form is wrapped into a div with max-w-3xl class, // which translates to 48 rem, which is 768 px. Roughly. // We try to match the width because the modal is centered dynamically by diff --git a/packages/webform-export/tsconfig.json b/packages/webform-export/tsconfig.json new file mode 100644 index 000000000..c13ef64e3 --- /dev/null +++ b/packages/webform-export/tsconfig.json @@ -0,0 +1,6 @@ +{ + "compilerOptions": { + "strict": true, + "skipLibCheck": true + } +} diff --git a/packages/webform-export/turbo.json b/packages/webform-export/turbo.json new file mode 100644 index 000000000..85d26391e --- /dev/null +++ b/packages/webform-export/turbo.json @@ -0,0 +1,8 @@ +{ + "extends": ["//"], + "tasks": { + "test:static": { + "inputs": ["specs/**", "playwright.config.ts"] + } + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2d119170d..8d6a6d2a4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: devDependencies: '@commitlint/cli': specifier: ^18.4.3 - version: 18.4.3(@types/node@18.15.13)(typescript@5.4.5) + version: 18.4.3(@types/node@20.11.17)(typescript@5.4.5) '@commitlint/config-conventional': specifier: ^18.4.3 version: 18.4.3 @@ -28,13 +28,13 @@ importers: version: 5.4.5 vitest: specifier: ^1.1.1 - version: 1.1.1(@types/node@18.15.13) + version: 1.1.1(@types/node@20.11.17) apps/cms: dependencies: '@amazeelabs/gatsby-source-silverback': specifier: '*' - version: 1.14.0(@types/node@22.9.0)(gatsby-plugin-sharp@5.13.1)(gatsby@5.13.3)(typescript@5.4.5) + version: 1.14.0(@types/node@22.7.2)(gatsby-plugin-sharp@5.13.1)(gatsby@5.13.3)(typescript@5.4.5) '@custom/custom': specifier: workspace:* version: link:../../packages/drupal/custom @@ -59,7 +59,7 @@ importers: version: link:../../packages/ui '@types/node': specifier: ^22.0.0 - version: 22.9.0 + version: 22.7.2 '@types/react': specifier: 18.3.3 version: 18.3.3 @@ -74,7 +74,7 @@ importers: version: 1.0.1 '@amazeelabs/gatsby-source-silverback': specifier: '*' - version: 1.14.0(@types/node@18.0.0)(gatsby-plugin-sharp@5.13.1)(gatsby@5.13.3)(typescript@5.4.5) + version: 1.14.0(@types/node@20.11.17)(gatsby-plugin-sharp@5.13.1)(gatsby@5.13.3)(typescript@5.4.5) '@amazeelabs/graphql-directives': specifier: ^1.3.7 version: 1.3.8 @@ -86,10 +86,10 @@ importers: version: link:../../packages/ui decap-cms-app: specifier: ^3.0.12 - version: 3.0.12(@types/node@18.0.0)(@types/react@18.3.3)(graphql@16.8.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827) + version: 3.0.12(@types/node@20.11.17)(@types/react@18.3.3)(graphql@16.8.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827) decap-cms-core: specifier: ^3.2.8 - version: 3.2.8(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/node@18.0.0)(@types/react@18.3.3)(decap-cms-editor-component-image@3.1.1)(decap-cms-lib-auth@3.0.5)(decap-cms-lib-util@3.0.4)(decap-cms-lib-widgets@3.0.2)(decap-cms-ui-default@3.1.1)(immutable@3.8.2)(lodash@4.17.21)(moment@2.30.1)(prop-types@15.8.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react-immutable-proptypes@2.2.0)(react@19.0.0-rc-7771d3a7-20240827) + version: 3.2.8(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/node@20.11.17)(@types/react@18.3.3)(decap-cms-editor-component-image@3.1.1)(decap-cms-lib-auth@3.0.5)(decap-cms-lib-util@3.0.4)(decap-cms-lib-widgets@3.0.2)(decap-cms-ui-default@3.1.1)(immutable@3.8.2)(lodash@4.17.21)(moment@2.30.1)(prop-types@15.8.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react-immutable-proptypes@2.2.0)(react@19.0.0-rc-7771d3a7-20240827) deepmerge: specifier: ^4.3.1 version: 4.3.1 @@ -150,13 +150,13 @@ importers: version: 2.2.3 '@types/lodash': specifier: ^4.17.6 - version: 4.17.13 + version: 4.17.14 '@types/mime-types': specifier: ^2.1.4 version: 2.1.4 '@types/node': - specifier: ^18 - version: 18.0.0 + specifier: ^20 + version: 20.11.17 '@types/react': specifier: 18.3.3 version: 18.3.3 @@ -180,10 +180,10 @@ importers: version: 5.4.5 vite: specifier: ^5.0.10 - version: 5.0.10(@types/node@18.0.0) + version: 5.0.10(@types/node@20.11.17) vitest: specifier: ^1.1.1 - version: 1.1.1(@types/node@18.0.0) + version: 1.1.1(@types/node@20.11.17) apps/preview: dependencies: @@ -281,16 +281,16 @@ importers: '@amazeelabs/publisher': specifier: ^2.5.5 version: 2.5.5(react@19.0.0-rc-7771d3a7-20240827)(typescript@5.4.5) + typescript: + specifier: 5.4.5 + version: 5.4.5 devDependencies: '@custom/eslint-config': specifier: workspace:* version: link:../../packages/eslint-config '@types/node': - specifier: ^18 - version: 18.15.13 - typescript: - specifier: 5.4.5 - version: 5.4.5 + specifier: ^20 + version: 20.11.17 apps/website: dependencies: @@ -308,7 +308,7 @@ importers: version: 1.0.1 '@amazeelabs/gatsby-source-silverback': specifier: ^1.14.0 - version: 1.14.0(@types/node@18.15.13)(gatsby-plugin-sharp@5.13.1)(gatsby@5.13.3)(typescript@5.4.5) + version: 1.14.0(@types/node@20.11.17)(gatsby-plugin-sharp@5.13.1)(gatsby@5.13.1)(typescript@5.4.5) '@amazeelabs/strangler-netlify': specifier: ^1.2.1 version: 1.2.2(react@19.0.0-rc-7771d3a7-20240827) @@ -332,7 +332,7 @@ importers: version: 2.3.0 netlify-cli: specifier: ^17.29.0 - version: 17.38.0(@types/node@18.15.13) + version: 17.38.1(@types/node@20.11.17) react: specifier: 19.0.0-rc-7771d3a7-20240827 version: 19.0.0-rc-7771d3a7-20240827 @@ -356,7 +356,7 @@ importers: version: 4.7.1 waku: specifier: 0.21.1 - version: 0.21.1(@types/node@18.15.13)(react-dom@19.0.0-rc-7771d3a7-20240827)(react-server-dom-webpack@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827) + version: 0.21.1(@types/node@20.11.17)(react-dom@19.0.0-rc-7771d3a7-20240827)(react-server-dom-webpack@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827) devDependencies: '@custom/eslint-config': specifier: workspace:* @@ -387,7 +387,7 @@ importers: version: 5.4.5 vitest: specifier: ^1.1.1 - version: 1.1.1(@types/node@18.15.13)(happy-dom@12.10.3) + version: 1.1.1(@types/node@20.11.17)(happy-dom@12.10.3) packages/drupal/custom: {} @@ -396,8 +396,8 @@ importers: packages/drupal/gutenberg_blocks: dependencies: '@types/node': - specifier: ^18 - version: 18.0.0 + specifier: ^20 + version: 20.11.17 clsx: specifier: ^2.1.0 version: 2.1.0 @@ -458,7 +458,7 @@ importers: version: 5.4.5 vite: specifier: ^5.0.10 - version: 5.0.10(@types/node@18.0.0) + version: 5.0.10(@types/node@20.11.17) packages/drupal/search_api_global: {} @@ -524,17 +524,35 @@ importers: specifier: ^8.15.0 version: 8.15.0(eslint@9.14.0)(typescript@5.4.5) + packages/init: + devDependencies: + '@custom/eslint-config': + specifier: workspace:* + version: link:../eslint-config + '@types/prompts': + specifier: ^2.4.9 + version: 2.4.9 + prompts: + specifier: ^2.4.2 + version: 2.4.2 + tsx: + specifier: ^4.7.1 + version: 4.7.1 + typescript: + specifier: 5.4.5 + version: 5.4.5 + packages/schema: dependencies: '@amazeelabs/executors': specifier: ^3.1.0 - version: 3.1.8(graphql@16.8.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(webpack@5.91.0) + version: 3.1.10(graphql@16.8.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(webpack@5.91.0) '@amazeelabs/gatsby-silverback-cloudinary': specifier: ^1.2.7 version: 1.2.7 '@amazeelabs/gatsby-source-silverback': specifier: ^1.14.0 - version: 1.14.0(@types/node@18.0.0)(gatsby-plugin-sharp@5.13.1)(gatsby@5.13.1)(typescript@5.4.5) + version: 1.14.0(@types/node@20.11.17)(gatsby-plugin-sharp@5.13.1)(gatsby@5.13.1)(typescript@5.4.5) '@amazeelabs/scalars': specifier: ^1.6.13 version: 1.6.13(react@19.0.0-rc-7771d3a7-20240827)(tailwindcss@3.4.15) @@ -556,7 +574,7 @@ importers: version: link:../eslint-config '@graphql-codegen/cli': specifier: ^5.0.0 - version: 5.0.0(@types/node@18.0.0)(graphql@16.8.1)(typescript@5.4.5) + version: 5.0.0(@types/node@20.11.17)(graphql@16.8.1)(typescript@5.4.5) '@graphql-codegen/schema-ast': specifier: ^4.0.0 version: 4.0.0(graphql@16.8.1) @@ -573,8 +591,8 @@ importers: specifier: ^0.8.0 version: 0.8.0 '@types/node': - specifier: ^18 - version: 18.0.0 + specifier: ^20 + version: 20.11.17 '@types/react': specifier: 18.3.3 version: 18.3.3 @@ -698,7 +716,7 @@ importers: version: 8.3.3(storybook@8.3.3) '@storybook/test-runner': specifier: ^0.19.1 - version: 0.19.1(@types/node@18.15.3)(storybook@8.3.3) + version: 0.19.1(@types/node@20.11.17)(storybook@8.3.3) '@swc/cli': specifier: ^0.1.63 version: 0.1.63(@swc/core@1.3.102) @@ -721,8 +739,8 @@ importers: specifier: ^3.0.6 version: 3.0.6 '@types/node': - specifier: ~18.15.3 - version: 18.15.3 + specifier: ^20 + version: 20.11.17 '@types/react': specifier: 18.3.3 version: 18.3.3 @@ -788,28 +806,85 @@ importers: version: 5.4.5 vite: specifier: ^5.0.10 - version: 5.0.10(@types/node@18.15.3) + version: 5.0.10(@types/node@20.11.17) vite-imagetools: specifier: 6.2.9 version: 6.2.9 vitest: specifier: ^1.1.1 - version: 1.1.1(@types/node@18.15.3)(happy-dom@12.10.3) + version: 1.1.1(@types/node@20.11.17)(happy-dom@12.10.3) - tests/e2e: + packages/webform-export: devDependencies: '@amazeelabs/save-webpage': specifier: ^1.1.1 version: 1.1.1 + '@custom/eslint-config': + specifier: workspace:* + version: link:../eslint-config + '@playwright/test': + specifier: ^1.44.1 + version: 1.44.1 + '@types/node': + specifier: ^20 + version: 20.11.17 + typescript: + specifier: 5.4.5 + version: 5.4.5 + + tests/e2e: + devDependencies: + '@custom/cms': + specifier: workspace:* + version: link:../../apps/cms + '@custom/decap': + specifier: workspace:* + version: link:../../apps/decap + '@custom/eslint-config': + specifier: workspace:* + version: link:../../packages/eslint-config + '@custom/preview': + specifier: workspace:* + version: link:../../apps/preview + '@custom/website': + specifier: workspace:* + version: link:../../apps/website + '@playwright/test': + specifier: ^1.44.1 + version: 1.44.1 + '@types/node': + specifier: ^20 + version: 20.11.17 + typescript: + specifier: 5.4.5 + version: 5.4.5 + + tests/e2e-basic: + devDependencies: + '@custom/cms': + specifier: workspace:* + version: link:../../apps/cms + '@custom/decap': + specifier: workspace:* + version: link:../../apps/decap '@custom/eslint-config': specifier: workspace:* version: link:../../packages/eslint-config + '@custom/preview': + specifier: workspace:* + version: link:../../apps/preview + '@custom/publisher': + specifier: workspace:* + version: link:../../apps/publisher + '@custom/website': + specifier: workspace:* + version: link:../../apps/website '@playwright/test': specifier: ^1.44.1 version: 1.44.1 '@types/node': - specifier: ^18 - version: 18.0.0 + specifier: ^20 + version: 20.11.17 typescript: specifier: 5.4.5 version: 5.4.5 @@ -820,8 +895,8 @@ importers: specifier: workspace:* version: link:../../packages/eslint-config '@types/node': - specifier: ^18 - version: 18.0.0 + specifier: ^20 + version: 20.11.17 '@vitest/ui': specifier: ^1.1.1 version: 1.1.1(vitest@1.1.1) @@ -839,7 +914,7 @@ importers: version: 5.4.5 vitest: specifier: ^1.1.1 - version: 1.1.1(@types/node@18.0.0)(@vitest/ui@1.1.1) + version: 1.1.1(@types/node@20.11.17)(@vitest/ui@1.1.1) packages: @@ -989,8 +1064,8 @@ packages: dev: false optional: true - /@amazeelabs/executors@3.1.8(graphql@16.8.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(webpack@5.91.0): - resolution: {integrity: sha512-BIkXTj0f81KeTyfUkemLDoS9c/5bR74T+aEOEgTgj5eBZf2ETkMCIOGi14bpcwodXQRt0xZYxnhGLURoAHCxRw==} + /@amazeelabs/executors@3.1.10(graphql@16.8.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(webpack@5.91.0): + resolution: {integrity: sha512-Y2oRkVB/f+nJcYVQBqurtA5Sqap2mGJmkqM5Kbya9QcvUURnH8y8QHl1KFn79nLTpeHpVA0iao7P31EljmPFdg==} peerDependencies: react: 19.0.0-rc-7771d3a7-20240827 react-dom: 19.0.0-rc-7771d3a7-20240827 @@ -1030,7 +1105,7 @@ packages: resolution: {integrity: sha512-LUhtYau6zFZPTtE0hut0MmoTu4eFI9YUkiBNLHN02EsZlCrPrP0pdyWTqByGsL10WIvQ4bry0dPotKoqZVnx8g==} dev: false - /@amazeelabs/gatsby-source-silverback@1.14.0(@types/node@18.0.0)(gatsby-plugin-sharp@5.13.1)(gatsby@5.13.1)(typescript@5.4.5): + /@amazeelabs/gatsby-source-silverback@1.14.0(@types/node@20.11.17)(gatsby-plugin-sharp@5.13.1)(gatsby@5.13.1)(typescript@5.4.5): resolution: {integrity: sha512-tIL4lPx7mQDBH5XiouXgTEhOIXF/oKDss0OYbHJEbxXVofv4IDifZcZZO1Hw9oWmrTSaJhYoC2Bdm+2kdvxf6g==} peerDependencies: gatsby-plugin-sharp: ^5.13.1 @@ -1040,7 +1115,7 @@ packages: gatsby-graphql-source-toolkit: 2.0.4(gatsby@5.13.1) gatsby-plugin-sharp: 5.13.1(gatsby@5.13.1)(graphql@16.8.1) graphql: 16.8.1 - graphql-config: 5.0.3(@types/node@18.0.0)(graphql@16.8.1)(typescript@5.4.5) + graphql-config: 5.0.3(@types/node@20.11.17)(graphql@16.8.1)(typescript@5.4.5) isomorphic-fetch: 3.0.0 lodash-es: 4.17.21 node-fetch: 3.3.2 @@ -1055,7 +1130,7 @@ packages: - utf-8-validate dev: false - /@amazeelabs/gatsby-source-silverback@1.14.0(@types/node@18.0.0)(gatsby-plugin-sharp@5.13.1)(gatsby@5.13.3)(typescript@5.4.5): + /@amazeelabs/gatsby-source-silverback@1.14.0(@types/node@20.11.17)(gatsby-plugin-sharp@5.13.1)(gatsby@5.13.3)(typescript@5.4.5): resolution: {integrity: sha512-tIL4lPx7mQDBH5XiouXgTEhOIXF/oKDss0OYbHJEbxXVofv4IDifZcZZO1Hw9oWmrTSaJhYoC2Bdm+2kdvxf6g==} peerDependencies: gatsby-plugin-sharp: ^5.13.1 @@ -1065,7 +1140,7 @@ packages: gatsby-graphql-source-toolkit: 2.0.4(gatsby@5.13.3) gatsby-plugin-sharp: 5.13.1(gatsby@5.13.3)(graphql@16.8.1) graphql: 16.8.1 - graphql-config: 5.0.3(@types/node@18.0.0)(graphql@16.8.1)(typescript@5.4.5) + graphql-config: 5.0.3(@types/node@20.11.17)(graphql@16.8.1)(typescript@5.4.5) isomorphic-fetch: 3.0.0 lodash-es: 4.17.21 node-fetch: 3.3.2 @@ -1080,7 +1155,7 @@ packages: - utf-8-validate dev: false - /@amazeelabs/gatsby-source-silverback@1.14.0(@types/node@18.15.13)(gatsby-plugin-sharp@5.13.1)(gatsby@5.13.3)(typescript@5.4.5): + /@amazeelabs/gatsby-source-silverback@1.14.0(@types/node@22.7.2)(gatsby-plugin-sharp@5.13.1)(gatsby@5.13.3)(typescript@5.4.5): resolution: {integrity: sha512-tIL4lPx7mQDBH5XiouXgTEhOIXF/oKDss0OYbHJEbxXVofv4IDifZcZZO1Hw9oWmrTSaJhYoC2Bdm+2kdvxf6g==} peerDependencies: gatsby-plugin-sharp: ^5.13.1 @@ -1090,32 +1165,7 @@ packages: gatsby-graphql-source-toolkit: 2.0.4(gatsby@5.13.3) gatsby-plugin-sharp: 5.13.1(gatsby@5.13.3)(graphql@16.8.1) graphql: 16.8.1 - graphql-config: 5.0.3(@types/node@18.15.13)(graphql@16.8.1)(typescript@5.4.5) - isomorphic-fetch: 3.0.0 - lodash-es: 4.17.21 - node-fetch: 3.3.2 - timeout-signal: 2.0.0 - transitivePeerDependencies: - - '@types/node' - - bufferutil - - cosmiconfig-toml-loader - - encoding - - gatsby - - typescript - - utf-8-validate - dev: false - - /@amazeelabs/gatsby-source-silverback@1.14.0(@types/node@22.9.0)(gatsby-plugin-sharp@5.13.1)(gatsby@5.13.3)(typescript@5.4.5): - resolution: {integrity: sha512-tIL4lPx7mQDBH5XiouXgTEhOIXF/oKDss0OYbHJEbxXVofv4IDifZcZZO1Hw9oWmrTSaJhYoC2Bdm+2kdvxf6g==} - peerDependencies: - gatsby-plugin-sharp: ^5.13.1 - dependencies: - '@amazeelabs/graphql-directives': 1.3.2 - fetch-retry: 5.0.6 - gatsby-graphql-source-toolkit: 2.0.4(gatsby@5.13.3) - gatsby-plugin-sharp: 5.13.1(gatsby@5.13.3)(graphql@16.8.1) - graphql: 16.8.1 - graphql-config: 5.0.3(@types/node@22.9.0)(graphql@16.8.1)(typescript@5.4.5) + graphql-config: 5.0.3(@types/node@22.7.2)(graphql@16.8.1)(typescript@5.4.5) isomorphic-fetch: 3.0.0 lodash-es: 4.17.21 node-fetch: 3.3.2 @@ -1383,13 +1433,14 @@ packages: '@babel/helper-validator-identifier': 7.25.9 js-tokens: 4.0.0 picocolors: 1.1.1 + dev: false /@babel/compat-data@7.24.4: resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} engines: {node: '>=6.9.0'} - /@babel/compat-data@7.26.3: - resolution: {integrity: sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==} + /@babel/compat-data@7.26.5: + resolution: {integrity: sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==} engines: {node: '>=6.9.0'} dev: false @@ -1415,20 +1466,20 @@ packages: transitivePeerDependencies: - supports-color - /@babel/core@7.26.0: - resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} + /@babel/core@7.26.7: + resolution: {integrity: sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.3 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helpers': 7.26.0 - '@babel/parser': 7.26.3 + '@babel/generator': 7.26.5 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.7) + '@babel/helpers': 7.26.7 + '@babel/parser': 7.26.7 '@babel/template': 7.25.9 - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 + '@babel/traverse': 7.26.7 + '@babel/types': 7.26.7 convert-source-map: 2.0.0 debug: 4.3.7 gensync: 1.0.0-beta.2 @@ -1451,20 +1502,6 @@ packages: eslint-visitor-keys: 2.1.0 semver: 6.3.1 - /@babel/eslint-parser@7.24.1(@babel/core@7.26.0)(eslint@7.32.0): - resolution: {integrity: sha512-d5guuzMlPeDfZIbpQ8+g1NaCNuAGBBGNECh0HVqz1sjOeVLh2CEaifuOysCH18URW6R7pqXINvf5PaR/dC6jLQ==} - engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} - peerDependencies: - '@babel/core': ^7.11.0 - eslint: ^7.5.0 || ^8.0.0 - dependencies: - '@babel/core': 7.26.0 - '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 7.32.0 - eslint-visitor-keys: 2.1.0 - semver: 6.3.1 - dev: false - /@babel/generator@7.24.4: resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} engines: {node: '>=6.9.0'} @@ -1474,15 +1511,16 @@ packages: '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - /@babel/generator@7.26.3: - resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} + /@babel/generator@7.26.5: + resolution: {integrity: sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 + '@babel/parser': 7.26.7 + '@babel/types': 7.26.7 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.0.2 + jsesc: 3.1.0 + dev: false /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} @@ -1506,13 +1544,13 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-compilation-targets@7.25.9: - resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} + /@babel/helper-compilation-targets@7.26.5: + resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.26.3 + '@babel/compat-data': 7.26.5 '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.2 + browserslist: 4.24.4 lru-cache: 5.1.1 semver: 6.3.1 dev: false @@ -1534,24 +1572,6 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.24.4(@babel/core@7.26.0): - resolution: {integrity: sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@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/core@7.26.0) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - semver: 6.3.1 - dev: false - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.4): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} @@ -1563,18 +1583,6 @@ packages: regexpu-core: 5.3.2 semver: 6.3.1 - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.26.0): - resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 6.3.1 - dev: false - /@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.4): resolution: {integrity: sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==} peerDependencies: @@ -1589,21 +1597,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.26.0): - resolution: {integrity: sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - debug: 4.3.7 - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/helper-environment-visitor@7.22.20: resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} @@ -1637,8 +1630,8 @@ packages: resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 + '@babel/traverse': 7.26.7 + '@babel/types': 7.26.7 transitivePeerDependencies: - supports-color dev: false @@ -1656,30 +1649,16 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 - /@babel/helper-module-transforms@7.23.3(@babel/core@7.26.0): - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - dev: false - - /@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0): + /@babel/helper-module-transforms@7.26.0(@babel/core@7.26.7): resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.26.0 + '@babel/core': 7.26.7 '@babel/helper-module-imports': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.4 + '@babel/traverse': 7.26.7 transitivePeerDependencies: - supports-color dev: false @@ -1694,8 +1673,8 @@ packages: resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} engines: {node: '>=6.9.0'} - /@babel/helper-plugin-utils@7.25.9: - resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} + /@babel/helper-plugin-utils@7.26.5: + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} engines: {node: '>=6.9.0'} dev: false @@ -1710,18 +1689,6 @@ packages: '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.26.0): - resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-wrap-function': 7.22.20 - dev: false - /@babel/helper-replace-supers@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} engines: {node: '>=6.9.0'} @@ -1733,18 +1700,6 @@ packages: '@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/core@7.26.0): - resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - dev: false - /@babel/helper-simple-access@7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} @@ -1770,6 +1725,7 @@ packages: /@babel/helper-string-parser@7.25.9: resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} + dev: false /@babel/helper-validator-identifier@7.22.20: resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} @@ -1778,6 +1734,7 @@ packages: /@babel/helper-validator-identifier@7.25.9: resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} + dev: false /@babel/helper-validator-option@7.23.5: resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} @@ -1806,12 +1763,12 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helpers@7.26.0: - resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} + /@babel/helpers@7.26.7: + resolution: {integrity: sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.25.9 - '@babel/types': 7.26.3 + '@babel/types': 7.26.7 dev: false /@babel/highlight@7.24.2: @@ -1821,7 +1778,7 @@ packages: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.0 + picocolors: 1.1.1 /@babel/parser@7.24.4: resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} @@ -1830,12 +1787,13 @@ packages: dependencies: '@babel/types': 7.24.0 - /@babel/parser@7.26.3: - resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} + /@babel/parser@7.26.7: + resolution: {integrity: sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.26.7 + dev: false /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.4(@babel/core@7.24.4): resolution: {integrity: sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA==} @@ -1847,17 +1805,6 @@ packages: '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.4(@babel/core@7.26.0): - resolution: {integrity: sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} engines: {node: '>=6.9.0'} @@ -1867,16 +1814,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} engines: {node: '>=6.9.0'} @@ -1888,18 +1825,6 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.4) - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.26.0 - '@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/core@7.26.0) - dev: false - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} engines: {node: '>=6.9.0'} @@ -1910,17 +1835,6 @@ packages: '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.4): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} @@ -1932,18 +1846,6 @@ packages: '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.26.0): - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} - engines: {node: '>=6.9.0'} - 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. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.24.4): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} @@ -1955,18 +1857,6 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.4) - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.26.0): - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) - dev: false - /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.24.4): resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} @@ -2004,19 +1894,6 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.4) - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.26.0): - resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) - dev: false - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.4): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} @@ -2025,15 +1902,6 @@ packages: dependencies: '@babel/core': 7.24.4 - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0): - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - dev: false - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.4): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: @@ -2042,15 +1910,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.0): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.4): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: @@ -2068,15 +1927,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.4): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} @@ -2086,16 +1936,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0): - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.4): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: @@ -2104,15 +1944,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.26.0): - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.4): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: @@ -2121,15 +1952,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.26.0): - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-syntax-flow@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==} engines: {node: '>=6.9.0'} @@ -2148,16 +1970,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} engines: {node: '>=6.9.0'} @@ -2167,16 +1979,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.4): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: @@ -2185,15 +1987,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.4): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: @@ -2202,15 +1995,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} engines: {node: '>=6.9.0'} @@ -2220,16 +2004,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.4): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: @@ -2238,15 +2012,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.0): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.4): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: @@ -2255,15 +2020,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.4): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: @@ -2272,15 +2028,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.4): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: @@ -2289,15 +2036,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.4): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: @@ -2306,15 +2044,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.4): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: @@ -2323,15 +2052,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.4): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} @@ -2341,16 +2061,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0): - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.4): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} @@ -2360,16 +2070,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} engines: {node: '>=6.9.0'} @@ -2389,17 +2089,6 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0): - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} engines: {node: '>=6.9.0'} @@ -2409,16 +2098,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.4): resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} engines: {node: '>=6.9.0'} @@ -2431,19 +2110,6 @@ packages: '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.4) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.4) - /@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.26.0): - resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.26.0) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) - dev: false - /@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} engines: {node: '>=6.9.0'} @@ -2455,18 +2121,6 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.4) - /@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.26.0) - dev: false - /@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} engines: {node: '>=6.9.0'} @@ -2476,16 +2130,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-block-scoping@7.24.4(@babel/core@7.24.4): resolution: {integrity: sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g==} engines: {node: '>=6.9.0'} @@ -2495,16 +2139,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-block-scoping@7.24.4(@babel/core@7.26.0): - resolution: {integrity: sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} engines: {node: '>=6.9.0'} @@ -2515,17 +2149,6 @@ packages: '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.24.4): resolution: {integrity: sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==} engines: {node: '>=6.9.0'} @@ -2537,18 +2160,6 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.4) - /@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.26.0): - resolution: {integrity: sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0) - dev: false - /@babel/plugin-transform-classes@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==} engines: {node: '>=6.9.0'} @@ -2565,23 +2176,6 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 - /@babel/plugin-transform-classes@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@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/core@7.26.0) - '@babel/helper-split-export-declaration': 7.22.6 - globals: 11.12.0 - dev: false - /@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} engines: {node: '>=6.9.0'} @@ -2592,17 +2186,6 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/template': 7.24.0 - /@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/template': 7.24.0 - dev: false - /@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==} engines: {node: '>=6.9.0'} @@ -2612,16 +2195,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} engines: {node: '>=6.9.0'} @@ -2632,17 +2205,6 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} engines: {node: '>=6.9.0'} @@ -2652,16 +2214,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} engines: {node: '>=6.9.0'} @@ -2672,17 +2224,6 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.4) - /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) - dev: false - /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} engines: {node: '>=6.9.0'} @@ -2693,17 +2234,6 @@ packages: '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} engines: {node: '>=6.9.0'} @@ -2714,17 +2244,6 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.4) - /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.26.0) - dev: false - /@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==} engines: {node: '>=6.9.0'} @@ -2745,17 +2264,6 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - /@babel/plugin-transform-for-of@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - dev: false - /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} engines: {node: '>=6.9.0'} @@ -2767,18 +2275,6 @@ packages: '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} engines: {node: '>=6.9.0'} @@ -2789,17 +2285,6 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.4) - /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) - dev: false - /@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} engines: {node: '>=6.9.0'} @@ -2809,16 +2294,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-literals@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} engines: {node: '>=6.9.0'} @@ -2829,17 +2304,6 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.4) - /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) - dev: false - /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} engines: {node: '>=6.9.0'} @@ -2849,16 +2313,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} engines: {node: '>=6.9.0'} @@ -2869,17 +2323,6 @@ packages: '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} engines: {node: '>=6.9.0'} @@ -2891,18 +2334,6 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-simple-access': 7.22.5 - /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-simple-access': 7.22.5 - dev: false - /@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} engines: {node: '>=6.9.0'} @@ -2915,19 +2346,6 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-identifier': 7.22.20 - /@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-identifier': 7.22.20 - dev: false - /@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} engines: {node: '>=6.9.0'} @@ -2938,17 +2356,6 @@ packages: '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.4): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} @@ -2959,17 +2366,6 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.26.0): - resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} engines: {node: '>=6.9.0'} @@ -2979,16 +2375,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-new-target@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} engines: {node: '>=6.9.0'} @@ -2999,17 +2385,6 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.4) - /@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) - dev: false - /@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} engines: {node: '>=6.9.0'} @@ -3020,17 +2395,6 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.4) - /@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) - dev: false - /@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==} engines: {node: '>=6.9.0'} @@ -3043,19 +2407,6 @@ packages: '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.4) '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.4) - /@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.26.0) - dev: false - /@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} engines: {node: '>=6.9.0'} @@ -3066,17 +2417,6 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.4) - /@babel/plugin-transform-object-super@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.26.0) - dev: false - /@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} engines: {node: '>=6.9.0'} @@ -3087,17 +2427,6 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.4) - /@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) - dev: false - /@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==} engines: {node: '>=6.9.0'} @@ -3109,18 +2438,6 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.4) - /@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) - dev: false - /@babel/plugin-transform-parameters@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==} engines: {node: '>=6.9.0'} @@ -3130,16 +2447,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-parameters@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} engines: {node: '>=6.9.0'} @@ -3150,17 +2457,6 @@ packages: '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==} engines: {node: '>=6.9.0'} @@ -3173,19 +2469,6 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.4) - /@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) - dev: false - /@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} engines: {node: '>=6.9.0'} @@ -3195,16 +2478,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==} engines: {node: '>=6.9.0'} @@ -3214,16 +2487,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.4): resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} engines: {node: '>=6.9.0'} @@ -3233,16 +2496,6 @@ packages: '@babel/core': 7.24.4 '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.4) - /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.26.0): - resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.26.0) - dev: false - /@babel/plugin-transform-react-jsx-self@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w==} engines: {node: '>=6.9.0'} @@ -3253,14 +2506,14 @@ packages: '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.0): + /@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.7): resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 dev: false /@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.4): @@ -3273,13 +2526,13 @@ packages: '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.26.0): + /@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.26.7): resolution: {integrity: sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.26.0 + '@babel/core': 7.26.7 '@babel/helper-plugin-utils': 7.24.0 dev: false @@ -3296,20 +2549,6 @@ packages: '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.4) '@babel/types': 7.24.0 - /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.26.0): - resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.26.0) - '@babel/types': 7.24.0 - dev: false - /@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==} engines: {node: '>=6.9.0'} @@ -3320,17 +2559,6 @@ packages: '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} engines: {node: '>=6.9.0'} @@ -3341,17 +2569,6 @@ packages: '@babel/helper-plugin-utils': 7.24.0 regenerator-transform: 0.15.2 - /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - regenerator-transform: 0.15.2 - dev: false - /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} engines: {node: '>=6.9.0'} @@ -3361,16 +2578,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-runtime@7.24.3(@babel/core@7.24.4): resolution: {integrity: sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==} engines: {node: '>=6.9.0'} @@ -3387,23 +2594,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-runtime@7.24.3(@babel/core@7.26.0): - resolution: {integrity: sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.26.0) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.26.0) - babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.26.0) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} engines: {node: '>=6.9.0'} @@ -3413,16 +2603,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} engines: {node: '>=6.9.0'} @@ -3433,17 +2613,6 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - /@babel/plugin-transform-spread@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - dev: false - /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} engines: {node: '>=6.9.0'} @@ -3453,16 +2622,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} engines: {node: '>=6.9.0'} @@ -3472,16 +2631,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==} engines: {node: '>=6.9.0'} @@ -3491,16 +2640,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-typescript@7.24.4(@babel/core@7.24.4): resolution: {integrity: sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g==} engines: {node: '>=6.9.0'} @@ -3522,16 +2661,6 @@ packages: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} engines: {node: '>=6.9.0'} @@ -3542,17 +2671,6 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} engines: {node: '>=6.9.0'} @@ -3563,17 +2681,6 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} engines: {node: '>=6.9.0'} @@ -3584,17 +2691,6 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/preset-env@7.24.4(@babel/core@7.24.4): resolution: {integrity: sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A==} engines: {node: '>=6.9.0'} @@ -3686,98 +2782,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/preset-env@7.24.4(@babel/core@7.26.0): - resolution: {integrity: sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.26.0 - '@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/core@7.26.0) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.26.0) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-block-scoping': 7.24.4(@babel/core@7.26.0) - '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.26.0) - '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.26.0) - '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-object-rest-spread': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-typeof-symbol': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.26.0) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.0) - babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.26.0) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.26.0) - babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.26.0) - core-js-compat: 3.37.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.4): resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: @@ -3788,17 +2792,6 @@ packages: '@babel/types': 7.24.0 esutils: 2.0.3 - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0): - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/types': 7.24.0 - esutils: 2.0.3 - dev: false - /@babel/preset-react@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==} engines: {node: '>=6.9.0'} @@ -3813,21 +2806,6 @@ packages: '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.4) '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.24.4) - /@babel/preset-react@7.24.1(@babel/core@7.26.0): - resolution: {integrity: sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.26.0) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.26.0) - '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.26.0) - dev: false - /@babel/preset-typescript@7.24.1(@babel/core@7.24.4): resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} engines: {node: '>=6.9.0'} @@ -3863,8 +2841,9 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 + '@babel/parser': 7.26.7 + '@babel/types': 7.26.7 + dev: false /@babel/traverse@7.24.1: resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} @@ -3883,19 +2862,20 @@ packages: transitivePeerDependencies: - supports-color - /@babel/traverse@7.26.4: - resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==} + /@babel/traverse@7.26.7: + resolution: {integrity: sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.3 - '@babel/parser': 7.26.3 + '@babel/generator': 7.26.5 + '@babel/parser': 7.26.7 '@babel/template': 7.25.9 - '@babel/types': 7.26.3 + '@babel/types': 7.26.7 debug: 4.3.7 globals: 11.12.0 transitivePeerDependencies: - supports-color + dev: false /@babel/types@7.24.0: resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} @@ -3905,21 +2885,29 @@ packages: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 - /@babel/types@7.25.6: - resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} + /@babel/types@7.26.3: + resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - to-fast-properties: 2.0.0 dev: false - /@babel/types@7.26.3: - resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} + /@babel/types@7.26.5: + resolution: {integrity: sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 + dev: false + + /@babel/types@7.26.7: + resolution: {integrity: sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + dev: false /@base2/pretty-print-object@1.0.1: resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} @@ -3989,14 +2977,14 @@ packages: resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} engines: {node: '>=0.1.90'} - /@commitlint/cli@18.4.3(@types/node@18.15.13)(typescript@5.4.5): + /@commitlint/cli@18.4.3(@types/node@20.11.17)(typescript@5.4.5): resolution: {integrity: sha512-zop98yfB3A6NveYAZ3P1Mb6bIXuCeWgnUfVNkH4yhIMQpQfzFwseadazOuSn0OOfTt0lWuFauehpm9GcqM5lww==} engines: {node: '>=v18'} hasBin: true dependencies: '@commitlint/format': 18.6.1 '@commitlint/lint': 18.6.1 - '@commitlint/load': 18.6.1(@types/node@18.15.13)(typescript@5.4.5) + '@commitlint/load': 18.6.1(@types/node@20.11.17)(typescript@5.4.5) '@commitlint/read': 18.6.1 '@commitlint/types': 18.6.1 execa: 5.1.1 @@ -4067,7 +3055,7 @@ packages: '@commitlint/types': 18.6.1 dev: true - /@commitlint/load@18.6.1(@types/node@18.15.13)(typescript@5.4.5): + /@commitlint/load@18.6.1(@types/node@20.11.17)(typescript@5.4.5): resolution: {integrity: sha512-p26x8734tSXUHoAw0ERIiHyW4RaI4Bj99D8YgUlVV9SedLf8hlWAfyIFhHRIhfPngLlCe0QYOdRKYFt8gy56TA==} engines: {node: '>=v18'} dependencies: @@ -4077,7 +3065,7 @@ packages: '@commitlint/types': 18.6.1 chalk: 4.1.2 cosmiconfig: 8.3.6(typescript@5.4.5) - cosmiconfig-typescript-loader: 5.0.0(@types/node@18.15.13)(cosmiconfig@8.3.6)(typescript@5.4.5) + cosmiconfig-typescript-loader: 5.0.0(@types/node@20.11.17)(cosmiconfig@8.3.6)(typescript@5.4.5) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -5566,7 +4554,7 @@ packages: resolution: {integrity: sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==} dependencies: '@formatjs/intl-localematcher': 0.5.4 - tslib: 2.6.2 + tslib: 2.8.1 dev: false /@formatjs/ecma402-abstract@2.2.4: @@ -5594,7 +4582,7 @@ packages: dependencies: '@formatjs/ecma402-abstract': 2.0.0 '@formatjs/icu-skeleton-parser': 1.8.2 - tslib: 2.6.2 + tslib: 2.8.1 dev: false /@formatjs/icu-messageformat-parser@2.9.4: @@ -5624,7 +4612,7 @@ packages: dependencies: '@formatjs/ecma402-abstract': 2.0.0 '@formatjs/intl-localematcher': 0.5.4 - tslib: 2.6.2 + tslib: 2.8.1 dev: false /@formatjs/intl-listformat@7.5.7: @@ -5632,7 +4620,7 @@ packages: dependencies: '@formatjs/ecma402-abstract': 2.0.0 '@formatjs/intl-localematcher': 0.5.4 - tslib: 2.6.2 + tslib: 2.8.1 dev: false /@formatjs/intl-localematcher@0.5.4: @@ -5661,7 +4649,7 @@ packages: '@formatjs/intl-displaynames': 6.6.8 '@formatjs/intl-listformat': 7.5.7 intl-messageformat: 10.5.14 - tslib: 2.6.2 + tslib: 2.8.1 typescript: 5.4.5 dev: false @@ -5675,7 +4663,7 @@ packages: dependencies: '@formatjs/icu-messageformat-parser': 2.9.4 '@types/json-stable-stringify': 1.1.0 - '@types/node': 18.15.13 + '@types/node': 20.11.17 chalk: 4.1.2 json-stable-stringify: 1.1.1 tslib: 2.8.1 @@ -5726,7 +4714,7 @@ packages: graphql: 16.8.1 tslib: 2.4.1 - /@graphql-codegen/cli@5.0.0(@types/node@18.0.0)(graphql@16.8.1)(typescript@5.4.5): + /@graphql-codegen/cli@5.0.0(@types/node@20.11.17)(graphql@16.8.1)(typescript@5.4.5): resolution: {integrity: sha512-A7J7+be/a6e+/ul2KI5sfJlpoqeqwX8EzktaKCeduyVKgOLA6W5t+NUGf6QumBDXU8PEOqXk3o3F+RAwCWOiqA==} hasBin: true peerDependencies: @@ -5744,12 +4732,12 @@ packages: '@graphql-tools/apollo-engine-loader': 8.0.1(graphql@16.8.1) '@graphql-tools/code-file-loader': 8.1.1(graphql@16.8.1) '@graphql-tools/git-loader': 8.0.5(graphql@16.8.1) - '@graphql-tools/github-loader': 8.0.1(@types/node@18.0.0)(graphql@16.8.1) + '@graphql-tools/github-loader': 8.0.1(@types/node@20.11.17)(graphql@16.8.1) '@graphql-tools/graphql-file-loader': 8.0.1(graphql@16.8.1) '@graphql-tools/json-file-loader': 8.0.1(graphql@16.8.1) '@graphql-tools/load': 8.0.2(graphql@16.8.1) - '@graphql-tools/prisma-loader': 8.0.3(@types/node@18.0.0)(graphql@16.8.1) - '@graphql-tools/url-loader': 8.0.2(@types/node@18.0.0)(graphql@16.8.1) + '@graphql-tools/prisma-loader': 8.0.3(@types/node@20.11.17)(graphql@16.8.1) + '@graphql-tools/url-loader': 8.0.2(@types/node@20.11.17)(graphql@16.8.1) '@graphql-tools/utils': 10.1.2(graphql@16.8.1) '@whatwg-node/fetch': 0.8.8 chalk: 4.1.2 @@ -5757,7 +4745,7 @@ packages: debounce: 1.2.1 detect-indent: 6.1.0 graphql: 16.8.1 - graphql-config: 5.0.3(@types/node@18.0.0)(graphql@16.8.1)(typescript@5.4.5) + graphql-config: 5.0.3(@types/node@20.11.17)(graphql@16.8.1)(typescript@5.4.5) inquirer: 8.2.6 is-glob: 4.0.3 jiti: 1.21.0 @@ -6127,22 +5115,6 @@ packages: - '@babel/core' - supports-color - /@graphql-tools/code-file-loader@7.3.23(@babel/core@7.26.0)(graphql@16.8.1): - resolution: {integrity: sha512-8Wt1rTtyTEs0p47uzsPJ1vAtfAx0jmxPifiNdmo9EOCuUPyQGEbMaik/YkqZ7QUFIEYEQu+Vgfo8tElwOPtx5Q==} - peerDependencies: - graphql: 16.8.1 - dependencies: - '@graphql-tools/graphql-tag-pluck': 7.5.2(@babel/core@7.26.0)(graphql@16.8.1) - '@graphql-tools/utils': 9.2.1(graphql@16.8.1) - globby: 11.1.0 - graphql: 16.8.1 - tslib: 2.6.2 - unixify: 1.0.0 - transitivePeerDependencies: - - '@babel/core' - - supports-color - dev: false - /@graphql-tools/code-file-loader@8.1.1(graphql@16.8.1): resolution: {integrity: sha512-q4KN25EPSUztc8rA8YUU3ufh721Yk12xXDbtUA+YstczWS7a1RJlghYMFEfR1HsHSYbF7cUqkbnTKSGM3o52bQ==} engines: {node: '>=16.0.0'} @@ -6171,7 +5143,7 @@ packages: '@graphql-tools/utils': 10.1.2(graphql@16.8.1) dataloader: 2.2.2 graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.8.1 /@graphql-tools/executor-graphql-ws@1.1.2(graphql@16.8.1): resolution: {integrity: sha512-+9ZK0rychTH1LUv4iZqJ4ESbmULJMTsv3XlFooPUngpxZkk00q6LqHKJRrsLErmQrVaC7cwQCaRBJa0teK17Lg==} @@ -6190,24 +5162,7 @@ packages: - bufferutil - utf-8-validate - /@graphql-tools/executor-http@1.0.9(@types/node@18.0.0)(graphql@16.8.1): - resolution: {integrity: sha512-+NXaZd2MWbbrWHqU4EhXcrDbogeiCDmEbrAN+rMn4Nu2okDjn2MTFDbTIab87oEubQCH4Te1wDkWPKrzXup7+Q==} - engines: {node: '>=16.0.0'} - peerDependencies: - graphql: 16.8.1 - dependencies: - '@graphql-tools/utils': 10.1.2(graphql@16.8.1) - '@repeaterjs/repeater': 3.0.5 - '@whatwg-node/fetch': 0.9.17 - extract-files: 11.0.0 - graphql: 16.8.1 - meros: 1.3.0(@types/node@18.0.0) - tslib: 2.6.2 - value-or-promise: 1.0.12 - transitivePeerDependencies: - - '@types/node' - - /@graphql-tools/executor-http@1.0.9(@types/node@18.15.13)(graphql@16.8.1): + /@graphql-tools/executor-http@1.0.9(@types/node@20.11.17)(graphql@16.8.1): resolution: {integrity: sha512-+NXaZd2MWbbrWHqU4EhXcrDbogeiCDmEbrAN+rMn4Nu2okDjn2MTFDbTIab87oEubQCH4Te1wDkWPKrzXup7+Q==} engines: {node: '>=16.0.0'} peerDependencies: @@ -6218,14 +5173,13 @@ packages: '@whatwg-node/fetch': 0.9.17 extract-files: 11.0.0 graphql: 16.8.1 - meros: 1.3.0(@types/node@18.15.13) + meros: 1.3.0(@types/node@20.11.17) tslib: 2.6.2 value-or-promise: 1.0.12 transitivePeerDependencies: - '@types/node' - dev: false - /@graphql-tools/executor-http@1.0.9(@types/node@22.9.0)(graphql@16.8.1): + /@graphql-tools/executor-http@1.0.9(@types/node@22.7.2)(graphql@16.8.1): resolution: {integrity: sha512-+NXaZd2MWbbrWHqU4EhXcrDbogeiCDmEbrAN+rMn4Nu2okDjn2MTFDbTIab87oEubQCH4Te1wDkWPKrzXup7+Q==} engines: {node: '>=16.0.0'} peerDependencies: @@ -6236,8 +5190,8 @@ packages: '@whatwg-node/fetch': 0.9.17 extract-files: 11.0.0 graphql: 16.8.1 - meros: 1.3.0(@types/node@22.9.0) - tslib: 2.6.2 + meros: 1.3.0(@types/node@22.7.2) + tslib: 2.8.1 value-or-promise: 1.0.12 transitivePeerDependencies: - '@types/node' @@ -6289,14 +5243,14 @@ packages: - supports-color dev: true - /@graphql-tools/github-loader@8.0.1(@types/node@18.0.0)(graphql@16.8.1): + /@graphql-tools/github-loader@8.0.1(@types/node@20.11.17)(graphql@16.8.1): resolution: {integrity: sha512-W4dFLQJ5GtKGltvh/u1apWRFKBQOsDzFxO9cJkOYZj1VzHCpRF43uLST4VbCfWve+AwBqOuKr7YgkHoxpRMkcg==} engines: {node: '>=16.0.0'} peerDependencies: graphql: 16.8.1 dependencies: '@ardatan/sync-fetch': 0.0.1 - '@graphql-tools/executor-http': 1.0.9(@types/node@18.0.0)(graphql@16.8.1) + '@graphql-tools/executor-http': 1.0.9(@types/node@20.11.17)(graphql@16.8.1) '@graphql-tools/graphql-tag-pluck': 8.3.0(graphql@16.8.1) '@graphql-tools/utils': 10.1.2(graphql@16.8.1) '@whatwg-node/fetch': 0.9.17 @@ -6338,23 +5292,6 @@ packages: - '@babel/core' - supports-color - /@graphql-tools/graphql-tag-pluck@7.5.2(@babel/core@7.26.0)(graphql@16.8.1): - resolution: {integrity: sha512-RW+H8FqOOLQw0BPXaahYepVSRjuOHw+7IL8Opaa5G5uYGOBxoXR7DceyQ7BcpMgktAOOmpDNQ2WtcboChOJSRA==} - peerDependencies: - graphql: 16.8.1 - dependencies: - '@babel/parser': 7.24.4 - '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.26.0) - '@babel/traverse': 7.24.1 - '@babel/types': 7.24.0 - '@graphql-tools/utils': 9.2.1(graphql@16.8.1) - graphql: 16.8.1 - tslib: 2.8.1 - transitivePeerDependencies: - - '@babel/core' - - supports-color - dev: false - /@graphql-tools/graphql-tag-pluck@8.3.0(graphql@16.8.1): resolution: {integrity: sha512-gNqukC+s7iHC7vQZmx1SEJQmLnOguBq+aqE2zV2+o1hxkExvKqyFli1SY/9gmukFIKpKutCIj+8yLOM+jARutw==} engines: {node: '>=16.0.0'} @@ -6368,7 +5305,7 @@ packages: '@babel/types': 7.24.0 '@graphql-tools/utils': 10.1.2(graphql@16.8.1) graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.8.1 transitivePeerDependencies: - supports-color dev: true @@ -6382,7 +5319,7 @@ packages: '@graphql-tools/utils': 10.1.2(graphql@16.8.1) graphql: 16.8.1 resolve-from: 5.0.0 - tslib: 2.6.2 + tslib: 2.8.1 /@graphql-tools/json-file-loader@8.0.1(graphql@16.8.1): resolution: {integrity: sha512-lAy2VqxDAHjVyqeJonCP6TUemrpYdDuKt25a10X6zY2Yn3iFYGnuIDQ64cv3ytyGY6KPyPB+Kp+ZfOkNDG3FQA==} @@ -6455,19 +5392,19 @@ packages: graphql: 16.8.1 tslib: 2.6.2 - /@graphql-tools/prisma-loader@8.0.3(@types/node@18.0.0)(graphql@16.8.1): + /@graphql-tools/prisma-loader@8.0.3(@types/node@20.11.17)(graphql@16.8.1): resolution: {integrity: sha512-oZhxnMr3Jw2WAW1h9FIhF27xWzIB7bXWM8olz4W12oII4NiZl7VRkFw9IT50zME2Bqi9LGh9pkmMWkjvbOpl+Q==} engines: {node: '>=16.0.0'} peerDependencies: graphql: 16.8.1 dependencies: - '@graphql-tools/url-loader': 8.0.2(@types/node@18.0.0)(graphql@16.8.1) + '@graphql-tools/url-loader': 8.0.2(@types/node@20.11.17)(graphql@16.8.1) '@graphql-tools/utils': 10.1.2(graphql@16.8.1) '@types/js-yaml': 4.0.9 '@types/json-stable-stringify': 1.0.36 '@whatwg-node/fetch': 0.9.17 chalk: 4.1.2 - debug: 4.3.4 + debug: 4.3.7 dotenv: 16.4.5 graphql: 16.8.1 graphql-request: 6.1.0(graphql@16.8.1) @@ -6538,7 +5475,7 @@ packages: tslib: 2.6.2 value-or-promise: 1.0.12 - /@graphql-tools/url-loader@8.0.2(@types/node@18.0.0)(graphql@16.8.1): + /@graphql-tools/url-loader@8.0.2(@types/node@20.11.17)(graphql@16.8.1): resolution: {integrity: sha512-1dKp2K8UuFn7DFo1qX5c1cyazQv2h2ICwA9esHblEqCYrgf69Nk8N7SODmsfWg94OEaI74IqMoM12t7eIGwFzQ==} engines: {node: '>=16.0.0'} peerDependencies: @@ -6547,7 +5484,7 @@ packages: '@ardatan/sync-fetch': 0.0.1 '@graphql-tools/delegate': 10.0.4(graphql@16.8.1) '@graphql-tools/executor-graphql-ws': 1.1.2(graphql@16.8.1) - '@graphql-tools/executor-http': 1.0.9(@types/node@18.0.0)(graphql@16.8.1) + '@graphql-tools/executor-http': 1.0.9(@types/node@20.11.17)(graphql@16.8.1) '@graphql-tools/executor-legacy-ws': 1.0.6(graphql@16.8.1) '@graphql-tools/utils': 10.1.2(graphql@16.8.1) '@graphql-tools/wrap': 10.0.5(graphql@16.8.1) @@ -6564,7 +5501,7 @@ packages: - encoding - utf-8-validate - /@graphql-tools/url-loader@8.0.2(@types/node@18.15.13)(graphql@16.8.1): + /@graphql-tools/url-loader@8.0.2(@types/node@22.7.2)(graphql@16.8.1): resolution: {integrity: sha512-1dKp2K8UuFn7DFo1qX5c1cyazQv2h2ICwA9esHblEqCYrgf69Nk8N7SODmsfWg94OEaI74IqMoM12t7eIGwFzQ==} engines: {node: '>=16.0.0'} peerDependencies: @@ -6573,34 +5510,7 @@ packages: '@ardatan/sync-fetch': 0.0.1 '@graphql-tools/delegate': 10.0.4(graphql@16.8.1) '@graphql-tools/executor-graphql-ws': 1.1.2(graphql@16.8.1) - '@graphql-tools/executor-http': 1.0.9(@types/node@18.15.13)(graphql@16.8.1) - '@graphql-tools/executor-legacy-ws': 1.0.6(graphql@16.8.1) - '@graphql-tools/utils': 10.1.2(graphql@16.8.1) - '@graphql-tools/wrap': 10.0.5(graphql@16.8.1) - '@types/ws': 8.5.10 - '@whatwg-node/fetch': 0.9.17 - graphql: 16.8.1 - isomorphic-ws: 5.0.0(ws@8.16.0) - tslib: 2.6.2 - value-or-promise: 1.0.12 - ws: 8.16.0 - transitivePeerDependencies: - - '@types/node' - - bufferutil - - encoding - - utf-8-validate - dev: false - - /@graphql-tools/url-loader@8.0.2(@types/node@22.9.0)(graphql@16.8.1): - resolution: {integrity: sha512-1dKp2K8UuFn7DFo1qX5c1cyazQv2h2ICwA9esHblEqCYrgf69Nk8N7SODmsfWg94OEaI74IqMoM12t7eIGwFzQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - graphql: 16.8.1 - dependencies: - '@ardatan/sync-fetch': 0.0.1 - '@graphql-tools/delegate': 10.0.4(graphql@16.8.1) - '@graphql-tools/executor-graphql-ws': 1.1.2(graphql@16.8.1) - '@graphql-tools/executor-http': 1.0.9(@types/node@22.9.0)(graphql@16.8.1) + '@graphql-tools/executor-http': 1.0.9(@types/node@22.7.2)(graphql@16.8.1) '@graphql-tools/executor-legacy-ws': 1.0.6(graphql@16.8.1) '@graphql-tools/utils': 10.1.2(graphql@16.8.1) '@graphql-tools/wrap': 10.0.5(graphql@16.8.1) @@ -6657,7 +5567,7 @@ packages: '@graphql-tools/schema': 10.0.3(graphql@16.8.1) '@graphql-tools/utils': 10.1.2(graphql@16.8.1) graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.8.1 value-or-promise: 1.0.12 /@graphql-typed-document-node/core@3.2.0(graphql@16.8.1): @@ -7051,7 +5961,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 18.15.13 + '@types/node': 20.11.17 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -7072,14 +5982,14 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.15.13 + '@types/node': 20.11.17 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@18.15.13) + jest-config: 29.7.0(@types/node@20.11.17) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -7114,7 +6024,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.15.13 + '@types/node': 20.11.17 jest-mock: 29.7.0 dev: true @@ -7141,7 +6051,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 18.15.13 + '@types/node': 20.11.17 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -7174,7 +6084,7 @@ packages: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 18.15.13 + '@types/node': 20.11.17 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -7246,7 +6156,7 @@ packages: jest-haste-map: 29.7.0 jest-regex-util: 29.6.3 jest-util: 29.7.0 - micromatch: 4.0.5 + micromatch: 4.0.8 pirates: 4.0.6 slash: 3.0.0 write-file-atomic: 4.0.2 @@ -7260,7 +6170,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 18.15.13 + '@types/node': 20.11.17 '@types/yargs': 16.0.9 chalk: 4.1.2 dev: false @@ -7272,7 +6182,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 18.15.13 + '@types/node': 20.11.17 '@types/yargs': 17.0.32 chalk: 4.1.2 dev: true @@ -7291,7 +6201,7 @@ packages: magic-string: 0.27.0 react-docgen-typescript: 2.2.2(typescript@5.4.5) typescript: 5.4.5 - vite: 5.0.10(@types/node@18.15.3) + vite: 5.0.10(@types/node@20.11.17) dev: true /@jridgewell/gen-mapping@0.3.5: @@ -7358,7 +6268,7 @@ packages: /@kwsites/file-exists@1.1.1: resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} dependencies: - debug: 4.3.4 + debug: 4.3.7 transitivePeerDependencies: - supports-color dev: true @@ -7622,8 +6532,8 @@ packages: engines: {node: ^14.16.0 || >=16.0.0} dev: false - /@netlify/build-info@7.15.2: - resolution: {integrity: sha512-z249vRTIyeO1Coaa2UaaZJpTN2D9mE0HPvuQfVknJ+WqHdLjPHlmaKu2HyekfnA5zE8mVSkPAJsP9dip3kySSg==} + /@netlify/build-info@7.17.0: + resolution: {integrity: sha512-503ES8SfLMkWQyBs41YCoWOLJWmcgcBZXfdtltz/jPSFaFXdpzlhq/CV3W9uHnKgLG/MBkEtTlBRtzy5weHKVw==} engines: {node: ^14.16.0 || >=16.0.0} hasBin: true dependencies: @@ -7638,8 +6548,8 @@ packages: yargs: 17.7.2 dev: false - /@netlify/build@29.56.1(@opentelemetry/api@1.8.0)(@types/node@18.15.13): - resolution: {integrity: sha512-0/4GiVTL69AXeIly6ZXIi5g4qU2Oi9djCUcJO6xCZCDgft6TD90JXlsCQ5P/+oh0CFcNPpsy9DBvY8mm0fSFVw==} + /@netlify/build@29.58.0(@opentelemetry/api@1.8.0)(@types/node@20.11.17): + resolution: {integrity: sha512-aLFJTQtP7uwoFUzq5IPLRL3Zy8FTyvW0MfHRzzV7jku416uOAcLXy9EkvpJcuvXpqvTsuKBlF553Jirz2UlNRw==} engines: {node: ^14.16.0 || >=16.0.0} hasBin: true peerDependencies: @@ -7651,16 +6561,16 @@ packages: dependencies: '@bugsnag/js': 7.25.0 '@netlify/blobs': 7.4.0 - '@netlify/cache-utils': 5.1.6 - '@netlify/config': 20.19.1 - '@netlify/edge-bundler': 12.2.3(supports-color@9.4.0) - '@netlify/framework-info': 9.8.13 - '@netlify/functions-utils': 5.2.93(supports-color@9.4.0) - '@netlify/git-utils': 5.1.1 - '@netlify/opentelemetry-utils': 1.2.1(@opentelemetry/api@1.8.0) + '@netlify/cache-utils': 5.2.0 + '@netlify/config': 20.21.0 + '@netlify/edge-bundler': 12.3.1(supports-color@9.4.0) + '@netlify/framework-info': 9.9.1 + '@netlify/functions-utils': 5.3.4(supports-color@9.4.0) + '@netlify/git-utils': 5.2.0 + '@netlify/opentelemetry-utils': 1.3.0(@opentelemetry/api@1.8.0) '@netlify/plugins-list': 6.80.0 - '@netlify/run-utils': 5.1.1 - '@netlify/zip-it-and-ship-it': 9.41.1(supports-color@9.4.0) + '@netlify/run-utils': 5.2.0 + '@netlify/zip-it-and-ship-it': 9.42.1(supports-color@9.4.0) '@opentelemetry/api': 1.8.0 '@sindresorhus/slugify': 2.2.1 ansi-escapes: 6.2.1 @@ -7704,7 +6614,7 @@ packages: strip-ansi: 7.1.0 supports-color: 9.4.0 terminal-link: 3.0.0 - ts-node: 10.9.2(@types/node@18.15.13)(typescript@5.4.5) + ts-node: 10.9.2(@types/node@20.11.17)(typescript@5.4.5) typescript: 5.4.5 uuid: 9.0.1 yargs: 17.7.2 @@ -7717,8 +6627,8 @@ packages: - rollup dev: false - /@netlify/cache-utils@5.1.6: - resolution: {integrity: sha512-0K1+5umxENy9H3CC+v5qGQbeTmKv/PBAhOxPKK6GPykOVa7OxT26KGMU7Jozo6pVNeLPJUvCCMw48ycwtQ1fvw==} + /@netlify/cache-utils@5.2.0: + resolution: {integrity: sha512-kKzGQ9gKNRUjqFMC1/1goeTe1WfzL6KhphwXac7tialowg10Dtmr2X+eDzfH9enGvD6vhYR4a0QMTQWkjfPVmg==} engines: {node: ^14.16.0 || >=16.0.0} dependencies: cpy: 9.0.1 @@ -7731,12 +6641,14 @@ packages: readdirp: 3.6.0 dev: false - /@netlify/config@20.19.1: - resolution: {integrity: sha512-GkN8IwHilIlusFuAW+DFjhtpghnaelNcHUoZwBDcJou8eyhIZYAj6B4STMyGUggIfMobYGM28kEY3gN4uUVq0g==} + /@netlify/config@20.21.0: + resolution: {integrity: sha512-3t2IcYcaGIYagESXK7p4I0GOahlTxhR/UCgRdNKkv0ihIgYLW4CEmZXGHytyXYU55Ismbyt5W7EJ+Qi4fVy6VA==} engines: {node: ^14.16.0 || >=16.0.0} hasBin: true dependencies: '@iarna/toml': 2.2.5 + '@netlify/headers-parser': 7.3.0 + '@netlify/redirect-parser': 14.5.0 chalk: 5.3.0 cron-parser: 4.9.0 deepmerge: 4.3.1 @@ -7750,9 +6662,7 @@ packages: is-plain-obj: 4.1.0 js-yaml: 4.1.0 map-obj: 5.0.2 - netlify: 13.1.21 - netlify-headers-parser: 7.1.4 - netlify-redirect-parser: 14.3.0 + netlify: 13.2.0 node-fetch: 3.3.2 omit.js: 2.0.2 p-locate: 6.0.0 @@ -7762,8 +6672,8 @@ packages: yargs: 17.7.2 dev: false - /@netlify/edge-bundler@12.2.3: - resolution: {integrity: sha512-o/Od4gvGT2qPSjJ1TSh8KYDJHfzxW4iemA5DiZtXIDgaIvWgvehZKDROp9wJ2FseP2F83y4ZDmt5xFfBSD9IYQ==} + /@netlify/edge-bundler@12.3.1: + resolution: {integrity: sha512-Kmg7+OD/5PWyWUNDR7G6DyyL/+kliN8JcSe2vaZ6zmPWdK/+ejeCA+d/9ROOEMsAvX7heuwe74SA301Mp9ESaw==} engines: {node: ^14.16.0 || >=16.0.0} dependencies: '@import-maps/resolve': 1.0.1 @@ -7795,8 +6705,8 @@ packages: - supports-color dev: false - /@netlify/edge-bundler@12.2.3(supports-color@9.4.0): - resolution: {integrity: sha512-o/Od4gvGT2qPSjJ1TSh8KYDJHfzxW4iemA5DiZtXIDgaIvWgvehZKDROp9wJ2FseP2F83y4ZDmt5xFfBSD9IYQ==} + /@netlify/edge-bundler@12.3.1(supports-color@9.4.0): + resolution: {integrity: sha512-Kmg7+OD/5PWyWUNDR7G6DyyL/+kliN8JcSe2vaZ6zmPWdK/+ejeCA+d/9ROOEMsAvX7heuwe74SA301Mp9ESaw==} engines: {node: ^14.16.0 || >=16.0.0} dependencies: '@import-maps/resolve': 1.0.1 @@ -7836,8 +6746,8 @@ packages: resolution: {integrity: sha512-3sJzP1DmzMZppkAZpUixdHA4ryiKD1NSpLMRViYStE9Oe10rZPSnM8yl6A90vTBqCYvbAF5S7W9oPf2ucrCCIQ==} dev: true - /@netlify/framework-info@9.8.13: - resolution: {integrity: sha512-ZZXCggokY/y5Sz93XYbl/Lig1UAUSWPMBiQRpkVfbrrkjmW2ZPkYS/BgrM2/MxwXRvYhc/TQpZX6y5JPe3quQg==} + /@netlify/framework-info@9.9.1: + resolution: {integrity: sha512-UT7ipYfPRNo65S86fL07NECCLfW7yflQNtddJCWbJAYziAv7DRTwplZkaT/RBaKaIfEDC5yV6uumvYRQFy7PCQ==} engines: {node: ^14.14.0 || >=16.0.0} dependencies: ajv: 8.12.0 @@ -7845,18 +6755,18 @@ packages: find-up: 6.3.0 is-plain-obj: 4.1.0 locate-path: 7.2.0 - p-filter: 3.0.0 + p-filter: 4.1.0 p-locate: 6.0.0 process: 0.11.10 - read-pkg-up: 9.1.0 + read-package-up: 11.0.0 semver: 7.6.3 dev: false - /@netlify/functions-utils@5.2.93(supports-color@9.4.0): - resolution: {integrity: sha512-/b2JtJuB3KNN5AIfiH/tan/uM4i6nLj2QFGUL9oID58cMsd73iouRacKu4ct+gxUU78y+/6fiOeYRXbcthdltA==} + /@netlify/functions-utils@5.3.4(supports-color@9.4.0): + resolution: {integrity: sha512-E2yiHrH8FSujvGGg8PvuOQ3EPRH86f7r5v8IHNigatZvldrcxeGqiEhep842B8zzTBtYXakrTb8dywp0x2O1dg==} engines: {node: ^14.16.0 || >=16.0.0} dependencies: - '@netlify/zip-it-and-ship-it': 9.41.1(supports-color@9.4.0) + '@netlify/zip-it-and-ship-it': 9.42.4(supports-color@9.4.0) cpy: 9.0.1 path-exists: 5.0.0 transitivePeerDependencies: @@ -7879,8 +6789,8 @@ packages: '@netlify/serverless-functions-api': 1.26.1 dev: false - /@netlify/git-utils@5.1.1: - resolution: {integrity: sha512-oyHieuTZH3rKTmg7EKpGEGa28IFxta2oXuVwpPJI/FJAtBje3UE+yko0eDjNufgm3AyGa8G77trUxgBhInAYuw==} + /@netlify/git-utils@5.2.0: + resolution: {integrity: sha512-maNQyhQ6zTS5Kwl03HXoUa7uTNjmCvZea5Jko2pyDWz0xW1cunnil+4s33wXrMZJNDvyv97O2vkC5N1sAS3fyQ==} engines: {node: ^14.16.0 || >=16.0.0} dependencies: execa: 6.1.0 @@ -7890,6 +6800,18 @@ packages: path-exists: 5.0.0 dev: false + /@netlify/headers-parser@7.3.0: + resolution: {integrity: sha512-4RTR9X3bylRV+q1/OHSwXcXylYKr5+3mkKcL/QLBI+bTqvSO82vjWAQAqQfvWVSCaF6HrYORid3zLGzJ94YOSw==} + engines: {node: ^14.16.0 || >=16.0.0} + dependencies: + '@iarna/toml': 2.2.5 + escape-string-regexp: 5.0.0 + fast-safe-stringify: 2.1.1 + is-plain-obj: 4.1.0 + map-obj: 5.0.2 + path-exists: 5.0.0 + dev: false + /@netlify/local-functions-proxy-darwin-arm64@1.1.1: resolution: {integrity: sha512-lphJ9qqZ3glnKWEqlemU1LMqXxtJ/tKf7VzakqqyjigwLscXSZSb6fupSjQfd4tR1xqxA76ylws/2HDhc/gs+Q==} cpu: [arm64] @@ -8019,13 +6941,13 @@ packages: resolution: {integrity: sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==} engines: {node: ^14.16.0 || >=16.0.0} - /@netlify/open-api@2.35.0: - resolution: {integrity: sha512-c6LpV29CKMgq6/eViItE6L2ova9UldBO9tHRvvwpJfSBgCwWaFhmiepe07E3xIW4GfTCGoWE816mNzXB/2ceZg==} - engines: {node: '>=14'} + /@netlify/open-api@2.36.0: + resolution: {integrity: sha512-cxdjUkHh0/SLvPusCFOmIoKpXdfvom+cpBT/bUrP2oxxH1htWgJ59GGuu/pJGEU+xhKpPotr+TSJl00u7ktIhg==} + engines: {node: '>=14.8.0'} dev: false - /@netlify/opentelemetry-utils@1.2.1(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-A6nQBvUn/avHQopLOOjX8rY2eua//jufbx4NZZODACEHtfXAEmOjCoDe2m+cQPRq+jNa98nvCy/sJh2RwuCQog==} + /@netlify/opentelemetry-utils@1.3.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-2LpNZpowo7Q4nSNmPYcx4gAAXIhRiSanX7Bux7b0D7ohdaC8NOgmFc7vdVzIsCChLwqbQ4HZpN1fd0W40Cm7bg==} engines: {node: '>=18.0.0'} peerDependencies: '@opentelemetry/api': ~1.8.0 @@ -8038,8 +6960,19 @@ packages: engines: {node: ^14.14.0 || >=16.0.0} dev: false - /@netlify/run-utils@5.1.1: - resolution: {integrity: sha512-V2B8ZB19heVKa715uOeDkztxLH7uaqZ+9U5fV7BRzbQ2514DO5Vxj9hG0irzuRLfZXZZjp/chPUesv4VVsce/A==} + /@netlify/redirect-parser@14.5.0: + resolution: {integrity: sha512-0HxtPj+azmoaQhuZAbyTn6WyMl+PO6XrFU6TRo/0b57jtVz9uTjrvFytjmTqTvVEY1sLePCxbTbgEULm2XDTjQ==} + engines: {node: ^14.16.0 || >=16.0.0} + dependencies: + '@iarna/toml': 2.2.5 + fast-safe-stringify: 2.1.1 + filter-obj: 5.1.0 + is-plain-obj: 4.1.0 + path-exists: 5.0.0 + dev: false + + /@netlify/run-utils@5.2.0: + resolution: {integrity: sha512-bsrv7Sjge5g71VMgZ65Ioc5q4lHXdLQCmpUU6sY06Aeol1psi1iDOGVMx/7ExJjbCtQgxye35wZjAz60i6X22Q==} engines: {node: ^14.16.0 || >=16.0.0} dependencies: execa: 6.1.0 @@ -8061,23 +6994,23 @@ packages: urlpattern-polyfill: 8.0.2 dev: false - /@netlify/serverless-functions-api@1.31.1: - resolution: {integrity: sha512-SkNxzfCwctS5ETnCqJOJfZZ/jB0pTkbWEAsApHoL7HzUQGWoRM6wYf4baJAJVMTfZBQu534SbKuwRs7WDAs43A==} + /@netlify/serverless-functions-api@1.32.0: + resolution: {integrity: sha512-dRKNGox2wdKb8ONoMc4mtLyUSxYvCYDFM1iyJUCb+9Nit9Azvtr8htD9D8z9bH1L4MKraHJJE756OSfLL3jduQ==} engines: {node: '>=18.0.0'} dependencies: '@netlify/node-cookies': 0.1.0 urlpattern-polyfill: 8.0.2 dev: false - /@netlify/zip-it-and-ship-it@9.41.1: - resolution: {integrity: sha512-EzXw1+4OJ4mCZUOqVPDQZNM8jf/563utFo1Ph6dYtSR21E1oYlgt6Oib1pyG/bFGufvdtrxw845/1MTCPvXzJA==} + /@netlify/zip-it-and-ship-it@9.42.1: + resolution: {integrity: sha512-ZCGM2OnLbiFOZO+kpODI6BKjH6X4a6vE/tJd0aqIvKWiygZgxhIw5APZUzgwLGv4BahIBG+tcfKgW7krpZYLwA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true dependencies: '@babel/parser': 7.24.4 - '@babel/types': 7.25.6 + '@babel/types': 7.26.3 '@netlify/binary-info': 1.0.0 - '@netlify/serverless-functions-api': 1.31.1 + '@netlify/serverless-functions-api': 1.32.0 '@vercel/nft': 0.27.7 archiver: 7.0.1 common-path-prefix: 3.0.0 @@ -8114,15 +7047,15 @@ packages: - supports-color dev: false - /@netlify/zip-it-and-ship-it@9.41.1(supports-color@9.4.0): - resolution: {integrity: sha512-EzXw1+4OJ4mCZUOqVPDQZNM8jf/563utFo1Ph6dYtSR21E1oYlgt6Oib1pyG/bFGufvdtrxw845/1MTCPvXzJA==} + /@netlify/zip-it-and-ship-it@9.42.1(supports-color@9.4.0): + resolution: {integrity: sha512-ZCGM2OnLbiFOZO+kpODI6BKjH6X4a6vE/tJd0aqIvKWiygZgxhIw5APZUzgwLGv4BahIBG+tcfKgW7krpZYLwA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true dependencies: '@babel/parser': 7.24.4 - '@babel/types': 7.25.6 + '@babel/types': 7.26.3 '@netlify/binary-info': 1.0.0 - '@netlify/serverless-functions-api': 1.31.1 + '@netlify/serverless-functions-api': 1.32.0 '@vercel/nft': 0.27.7(supports-color@9.4.0) archiver: 7.0.1 common-path-prefix: 3.0.0 @@ -8159,6 +7092,51 @@ packages: - supports-color dev: false + /@netlify/zip-it-and-ship-it@9.42.4(supports-color@9.4.0): + resolution: {integrity: sha512-Oj3c8GR52H6yWjkP5EjLRP0bxGyx8UjrB0WYWF0bzFY+nTaeMBmqtmO8eGl/jgto7Jus6NaCmHYMUmT3ybjBRA==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + dependencies: + '@babel/parser': 7.24.4 + '@babel/types': 7.26.5 + '@netlify/binary-info': 1.0.0 + '@netlify/serverless-functions-api': 1.32.0 + '@vercel/nft': 0.27.7(supports-color@9.4.0) + archiver: 7.0.1 + common-path-prefix: 3.0.0 + cp-file: 10.0.0 + es-module-lexer: 1.5.0 + esbuild: 0.19.11 + execa: 7.2.0 + fast-glob: 3.3.2 + filter-obj: 5.1.0 + find-up: 6.3.0 + glob: 8.1.0 + is-builtin-module: 3.2.1 + is-path-inside: 4.0.0 + junk: 4.0.1 + locate-path: 7.2.0 + merge-options: 3.0.4 + minimatch: 9.0.5 + normalize-path: 3.0.0 + p-map: 7.0.2 + path-exists: 5.0.0 + precinct: 11.0.5(supports-color@9.4.0) + require-package-name: 2.0.1 + resolve: 2.0.0-next.5 + semver: 7.6.3 + tmp-promise: 3.0.3 + toml: 3.0.0 + unixify: 1.0.0 + urlpattern-polyfill: 8.0.2 + yargs: 17.7.2 + zod: 3.23.8 + transitivePeerDependencies: + - encoding + - rollup + - supports-color + dev: false + /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} dependencies: @@ -8215,7 +7193,7 @@ packages: '@octokit/graphql': 7.1.0 '@octokit/request': 8.4.0 '@octokit/request-error': 5.1.0 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 before-after-hook: 2.2.3 universal-user-agent: 6.0.1 dev: false @@ -8224,7 +7202,7 @@ packages: resolution: {integrity: sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==} engines: {node: '>= 18'} dependencies: - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 universal-user-agent: 6.0.1 dev: false @@ -8233,12 +7211,12 @@ packages: engines: {node: '>= 18'} dependencies: '@octokit/request': 8.4.0 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 universal-user-agent: 6.0.1 dev: false - /@octokit/openapi-types@22.2.0: - resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==} + /@octokit/openapi-types@23.0.1: + resolution: {integrity: sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==} dev: false /@octokit/plugin-paginate-rest@11.3.1(@octokit/core@5.2.0): @@ -8248,7 +7226,7 @@ packages: '@octokit/core': '5' dependencies: '@octokit/core': 5.2.0 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 dev: false /@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.0): @@ -8267,14 +7245,14 @@ packages: '@octokit/core': ^5 dependencies: '@octokit/core': 5.2.0 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 dev: false /@octokit/request-error@5.1.0: resolution: {integrity: sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==} engines: {node: '>= 18'} dependencies: - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 deprecation: 2.3.1 once: 1.4.0 dev: false @@ -8285,7 +7263,7 @@ packages: dependencies: '@octokit/endpoint': 9.0.5 '@octokit/request-error': 5.1.0 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 universal-user-agent: 6.0.1 dev: false @@ -8299,10 +7277,10 @@ packages: '@octokit/plugin-rest-endpoint-methods': 13.2.2(@octokit/core@5.2.0) dev: false - /@octokit/types@13.6.2: - resolution: {integrity: sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==} + /@octokit/types@13.7.0: + resolution: {integrity: sha512-BXfRP+3P3IN6fd4uF3SniaHKOO4UXWBfkdR3vA8mIvaoO/wLjGN5qivUtW0QRitBHHMcfC41SLhNVYIZZE+wkA==} dependencies: - '@octokit/openapi-types': 22.2.0 + '@octokit/openapi-types': 23.0.1 dev: false /@opentelemetry/api@1.8.0: @@ -8821,46 +7799,7 @@ packages: react-refresh: 0.14.0 schema-utils: 3.3.0 source-map: 0.7.4 - webpack: 5.91.0(@swc/core@1.3.102) - - /@pmmmwh/react-refresh-webpack-plugin@0.5.11(react-refresh@0.14.2)(webpack@5.91.0): - resolution: {integrity: sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==} - engines: {node: '>= 10.13'} - peerDependencies: - '@types/webpack': 4.x || 5.x - react-refresh: '>=0.10.0 <1.0.0' - sockjs-client: ^1.4.0 - type-fest: '>=0.17.0 <5.0.0' - webpack: '>=4.43.0 <6.0.0' - webpack-dev-server: 3.x || 4.x - webpack-hot-middleware: 2.x - webpack-plugin-serve: 0.x || 1.x - peerDependenciesMeta: - '@types/webpack': - optional: true - sockjs-client: - optional: true - type-fest: - optional: true - webpack-dev-server: - optional: true - webpack-hot-middleware: - optional: true - webpack-plugin-serve: - optional: true - dependencies: - ansi-html-community: 0.0.8 - common-path-prefix: 3.0.0 - core-js-pure: 3.36.1 - error-stack-parser: 2.1.4 - find-up: 5.0.0 - html-entities: 2.5.2 - loader-utils: 2.0.4 - react-refresh: 0.14.2 - schema-utils: 3.3.0 - source-map: 0.7.4 webpack: 5.91.0 - dev: false /@pnpm/config.env-replace@1.1.0: resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} @@ -8992,13 +7931,13 @@ packages: rollup: optional: true dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 2.3.1 dev: true - /@rollup/pluginutils@5.1.3: - resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} + /@rollup/pluginutils@5.1.4: + resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -9018,8 +7957,8 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-android-arm-eabi@4.28.0: - resolution: {integrity: sha512-wLJuPLT6grGZsy34g4N1yRfYeouklTgPhH1gWXCYspenKYD0s3cR99ZevOGw5BexMNywkbV3UkjADisozBmpPQ==} + /@rollup/rollup-android-arm-eabi@4.32.0: + resolution: {integrity: sha512-G2fUQQANtBPsNwiVFg4zKiPQyjVKZCUdQUol53R8E71J7AsheRMV/Yv/nB8giOcOVqP7//eB5xPqieBYZe9bGg==} cpu: [arm] os: [android] requiresBuild: true @@ -9033,8 +7972,8 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-android-arm64@4.28.0: - resolution: {integrity: sha512-eiNkznlo0dLmVG/6wf+Ifi/v78G4d4QxRhuUl+s8EWZpDewgk7PX3ZyECUXU0Zq/Ca+8nU8cQpNC4Xgn2gFNDA==} + /@rollup/rollup-android-arm64@4.32.0: + resolution: {integrity: sha512-qhFwQ+ljoymC+j5lXRv8DlaJYY/+8vyvYmVx074zrLsu5ZGWYsJNLjPPVJJjhZQpyAKUGPydOq9hRLLNvh1s3A==} cpu: [arm64] os: [android] requiresBuild: true @@ -9048,8 +7987,8 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-darwin-arm64@4.28.0: - resolution: {integrity: sha512-lmKx9yHsppblnLQZOGxdO66gT77bvdBtr/0P+TPOseowE7D9AJoBw8ZDULRasXRWf1Z86/gcOdpBrV6VDUY36Q==} + /@rollup/rollup-darwin-arm64@4.32.0: + resolution: {integrity: sha512-44n/X3lAlWsEY6vF8CzgCx+LQaoqWGN7TzUfbJDiTIOjJm4+L2Yq+r5a8ytQRGyPqgJDs3Rgyo8eVL7n9iW6AQ==} cpu: [arm64] os: [darwin] requiresBuild: true @@ -9063,24 +8002,24 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-darwin-x64@4.28.0: - resolution: {integrity: sha512-8hxgfReVs7k9Js1uAIhS6zq3I+wKQETInnWQtgzt8JfGx51R1N6DRVy3F4o0lQwumbErRz52YqwjfvuwRxGv1w==} + /@rollup/rollup-darwin-x64@4.32.0: + resolution: {integrity: sha512-F9ct0+ZX5Np6+ZDztxiGCIvlCaW87HBdHcozUfsHnj1WCUTBUubAoanhHUfnUHZABlElyRikI0mgcw/qdEm2VQ==} cpu: [x64] os: [darwin] requiresBuild: true dev: false optional: true - /@rollup/rollup-freebsd-arm64@4.28.0: - resolution: {integrity: sha512-lA1zZB3bFx5oxu9fYud4+g1mt+lYXCoch0M0V/xhqLoGatbzVse0wlSQ1UYOWKpuSu3gyN4qEc0Dxf/DII1bhQ==} + /@rollup/rollup-freebsd-arm64@4.32.0: + resolution: {integrity: sha512-JpsGxLBB2EFXBsTLHfkZDsXSpSmKD3VxXCgBQtlPcuAqB8TlqtLcbeMhxXQkCDv1avgwNjF8uEIbq5p+Cee0PA==} cpu: [arm64] os: [freebsd] requiresBuild: true dev: false optional: true - /@rollup/rollup-freebsd-x64@4.28.0: - resolution: {integrity: sha512-aI2plavbUDjCQB/sRbeUZWX9qp12GfYkYSJOrdYTL/C5D53bsE2/nBPuoiJKoWp5SN78v2Vr8ZPnB+/VbQ2pFA==} + /@rollup/rollup-freebsd-x64@4.32.0: + resolution: {integrity: sha512-wegiyBT6rawdpvnD9lmbOpx5Sph+yVZKHbhnSP9MqUEDX08G4UzMU+D87jrazGE7lRSyTRs6NEYHtzfkJ3FjjQ==} cpu: [x64] os: [freebsd] requiresBuild: true @@ -9094,16 +8033,16 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.28.0: - resolution: {integrity: sha512-WXveUPKtfqtaNvpf0iOb0M6xC64GzUX/OowbqfiCSXTdi/jLlOmH0Ba94/OkiY2yTGTwteo4/dsHRfh5bDCZ+w==} + /@rollup/rollup-linux-arm-gnueabihf@4.32.0: + resolution: {integrity: sha512-3pA7xecItbgOs1A5H58dDvOUEboG5UfpTq3WzAdF54acBbUM+olDJAPkgj1GRJ4ZqE12DZ9/hNS2QZk166v92A==} cpu: [arm] os: [linux] requiresBuild: true dev: false optional: true - /@rollup/rollup-linux-arm-musleabihf@4.28.0: - resolution: {integrity: sha512-yLc3O2NtOQR67lI79zsSc7lk31xjwcaocvdD1twL64PK1yNaIqCeWI9L5B4MFPAVGEVjH5k1oWSGuYX1Wutxpg==} + /@rollup/rollup-linux-arm-musleabihf@4.32.0: + resolution: {integrity: sha512-Y7XUZEVISGyge51QbYyYAEHwpGgmRrAxQXO3siyYo2kmaj72USSG8LtlQQgAtlGfxYiOwu+2BdbPjzEpcOpRmQ==} cpu: [arm] os: [linux] requiresBuild: true @@ -9117,8 +8056,8 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.28.0: - resolution: {integrity: sha512-+P9G9hjEpHucHRXqesY+3X9hD2wh0iNnJXX/QhS/J5vTdG6VhNYMxJ2rJkQOxRUd17u5mbMLHM7yWGZdAASfcg==} + /@rollup/rollup-linux-arm64-gnu@4.32.0: + resolution: {integrity: sha512-r7/OTF5MqeBrZo5omPXcTnjvv1GsrdH8a8RerARvDFiDwFpDVDnJyByYM/nX+mvks8XXsgPUxkwe/ltaX2VH7w==} cpu: [arm64] os: [linux] requiresBuild: true @@ -9132,14 +8071,22 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-musl@4.28.0: - resolution: {integrity: sha512-1xsm2rCKSTpKzi5/ypT5wfc+4bOGa/9yI/eaOLW0oMs7qpC542APWhl4A37AENGZ6St6GBMWhCCMM6tXgTIplw==} + /@rollup/rollup-linux-arm64-musl@4.32.0: + resolution: {integrity: sha512-HJbifC9vex9NqnlodV2BHVFNuzKL5OnsV2dvTw6e1dpZKkNjPG6WUq+nhEYV6Hv2Bv++BXkwcyoGlXnPrjAKXw==} cpu: [arm64] os: [linux] requiresBuild: true dev: false optional: true + /@rollup/rollup-linux-loongarch64-gnu@4.32.0: + resolution: {integrity: sha512-VAEzZTD63YglFlWwRj3taofmkV1V3xhebDXffon7msNz4b14xKsz7utO6F8F4cqt8K/ktTl9rm88yryvDpsfOw==} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@rollup/rollup-linux-powerpc64le-gnu@4.14.1: resolution: {integrity: sha512-im7HE4VBL+aDswvcmfx88Mp1soqL9OBsdDBU8NqDEYtkri0qV0THhQsvZtZeNNlLeCUQ16PZyv7cqutjDF35qw==} cpu: [ppc64le] @@ -9147,8 +8094,8 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-linux-powerpc64le-gnu@4.28.0: - resolution: {integrity: sha512-zgWxMq8neVQeXL+ouSf6S7DoNeo6EPgi1eeqHXVKQxqPy1B2NvTbaOUWPn/7CfMKL7xvhV0/+fq/Z/J69g1WAQ==} + /@rollup/rollup-linux-powerpc64le-gnu@4.32.0: + resolution: {integrity: sha512-Sts5DST1jXAc9YH/iik1C9QRsLcCoOScf3dfbY5i4kH9RJpKxiTBXqm7qU5O6zTXBTEZry69bGszr3SMgYmMcQ==} cpu: [ppc64] os: [linux] requiresBuild: true @@ -9162,8 +8109,8 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.28.0: - resolution: {integrity: sha512-VEdVYacLniRxbRJLNtzwGt5vwS0ycYshofI7cWAfj7Vg5asqj+pt+Q6x4n+AONSZW/kVm+5nklde0qs2EUwU2g==} + /@rollup/rollup-linux-riscv64-gnu@4.32.0: + resolution: {integrity: sha512-qhlXeV9AqxIyY9/R1h1hBD6eMvQCO34ZmdYvry/K+/MBs6d1nRFLm6BOiITLVI+nFAAB9kUB6sdJRKyVHXnqZw==} cpu: [riscv64] os: [linux] requiresBuild: true @@ -9177,8 +8124,8 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-linux-s390x-gnu@4.28.0: - resolution: {integrity: sha512-LQlP5t2hcDJh8HV8RELD9/xlYtEzJkm/aWGsauvdO2ulfl3QYRjqrKW+mGAIWP5kdNCBheqqqYIGElSRCaXfpw==} + /@rollup/rollup-linux-s390x-gnu@4.32.0: + resolution: {integrity: sha512-8ZGN7ExnV0qjXa155Rsfi6H8M4iBBwNLBM9lcVS+4NcSzOFaNqmt7djlox8pN1lWrRPMRRQ8NeDlozIGx3Omsw==} cpu: [s390x] os: [linux] requiresBuild: true @@ -9192,8 +8139,8 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-linux-x64-gnu@4.28.0: - resolution: {integrity: sha512-Nl4KIzteVEKE9BdAvYoTkW19pa7LR/RBrT6F1dJCV/3pbjwDcaOq+edkP0LXuJ9kflW/xOK414X78r+K84+msw==} + /@rollup/rollup-linux-x64-gnu@4.32.0: + resolution: {integrity: sha512-VDzNHtLLI5s7xd/VubyS10mq6TxvZBp+4NRWoW+Hi3tgV05RtVm4qK99+dClwTN1McA6PHwob6DEJ6PlXbY83A==} cpu: [x64] os: [linux] requiresBuild: true @@ -9207,8 +8154,8 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-linux-x64-musl@4.28.0: - resolution: {integrity: sha512-eKpJr4vBDOi4goT75MvW+0dXcNUqisK4jvibY9vDdlgLx+yekxSm55StsHbxUsRxSTt3JEQvlr3cGDkzcSP8bw==} + /@rollup/rollup-linux-x64-musl@4.32.0: + resolution: {integrity: sha512-qcb9qYDlkxz9DxJo7SDhWxTWV1gFuwznjbTiov289pASxlfGbaOD54mgbs9+z94VwrXtKTu+2RqwlSTbiOqxGg==} cpu: [x64] os: [linux] requiresBuild: true @@ -9222,8 +8169,8 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.28.0: - resolution: {integrity: sha512-Vi+WR62xWGsE/Oj+mD0FNAPY2MEox3cfyG0zLpotZdehPFXwz6lypkGs5y38Jd/NVSbOD02aVad6q6QYF7i8Bg==} + /@rollup/rollup-win32-arm64-msvc@4.32.0: + resolution: {integrity: sha512-pFDdotFDMXW2AXVbfdUEfidPAk/OtwE/Hd4eYMTNVVaCQ6Yl8et0meDaKNL63L44Haxv4UExpv9ydSf3aSayDg==} cpu: [arm64] os: [win32] requiresBuild: true @@ -9237,8 +8184,8 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.28.0: - resolution: {integrity: sha512-kN/Vpip8emMLn/eOza+4JwqDZBL6MPNpkdaEsgUtW1NYN3DZvZqSQrbKzJcTL6hd8YNmFTn7XGWMwccOcJBL0A==} + /@rollup/rollup-win32-ia32-msvc@4.32.0: + resolution: {integrity: sha512-/TG7WfrCAjeRNDvI4+0AAMoHxea/USWhAzf9PVDFHbcqrQ7hMMKp4jZIy4VEjk72AAfN5k4TiSMRXRKf/0akSw==} cpu: [ia32] os: [win32] requiresBuild: true @@ -9252,8 +8199,8 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-win32-x64-msvc@4.28.0: - resolution: {integrity: sha512-Bvno2/aZT6usSa7lRDL2+hMjVAGjuqaymF1ApZm31JXzniR/hvr14jpU+/z4X6Gt5BPlzosscyJZGUvguXIqeQ==} + /@rollup/rollup-win32-x64-msvc@4.32.0: + resolution: {integrity: sha512-5hqO5S3PTEO2E5VjCePxv40gIgyS2KvO7E7/vvC/NbIW4SIRamkMr1hqj+5Y67fbBWv/bQLB6KelBQmXlyCjWA==} cpu: [x64] os: [win32] requiresBuild: true @@ -9277,13 +8224,11 @@ packages: /@sigmacomputing/babel-plugin-lodash@3.3.5: resolution: {integrity: sha512-VFhaHjlNzWyBtBm3YdqOwP8GbQHK7sWzXKpSUBTLjl2Zz6/9PwCK4qXZXI5CHpDjmvbouHUDbjrZP2KU5h6VQg==} dependencies: - '@babel/helper-module-imports': 7.25.9 - '@babel/types': 7.26.3 + '@babel/helper-module-imports': 7.24.3 + '@babel/types': 7.24.0 glob: 7.2.3 lodash: 4.17.21 require-package-name: 2.0.1 - transitivePeerDependencies: - - supports-color dev: false /@sinclair/typebox@0.27.8: @@ -9353,7 +8298,7 @@ packages: engines: {node: '>= 18', npm: '>= 8.6.0'} dependencies: '@slack/types': 2.11.0 - '@types/node': 18.15.13 + '@types/node': 20.11.17 axios: 1.6.8 transitivePeerDependencies: - debug @@ -9563,7 +8508,7 @@ packages: '@storybook/csf': 0.1.11 '@storybook/global': 5.0.0 '@storybook/icons': 1.2.12(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827) - '@types/lodash': 4.17.13 + '@types/lodash': 4.17.14 color-convert: 2.0.1 dequal: 2.0.3 lodash: 4.17.21 @@ -9606,7 +8551,7 @@ packages: storybook: 8.3.3 ts-dedent: 2.2.0 typescript: 5.4.5 - vite: 5.0.10(@types/node@18.15.3) + vite: 5.0.10(@types/node@20.11.17) transitivePeerDependencies: - supports-color dev: true @@ -9809,7 +8754,7 @@ packages: resolve: 1.22.8 storybook: 8.3.3 tsconfig-paths: 4.2.0 - vite: 5.0.10(@types/node@18.15.3) + vite: 5.0.10(@types/node@20.11.17) transitivePeerDependencies: - '@preact/preset-vite' - '@storybook/test' @@ -9843,7 +8788,7 @@ packages: '@storybook/theming': 8.3.3(storybook@8.3.3) '@types/escodegen': 0.0.6 '@types/estree': 0.0.51 - '@types/node': 22.9.0 + '@types/node': 22.7.2 acorn: 7.4.1 acorn-jsx: 5.3.2(acorn@7.4.1) acorn-walk: 7.2.0 @@ -9861,7 +8806,7 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/test-runner@0.19.1(@types/node@18.15.3)(storybook@8.3.3): + /@storybook/test-runner@0.19.1(@types/node@20.11.17)(storybook@8.3.3): resolution: {integrity: sha512-Nc4djXw3Lv3AAXg6TJ7yVTeuMryjMsTDd8GCbE/PStU602rpe8syEqElz78GPoJqB1VYWQ3T9pcu93MKyHT+xQ==} engines: {node: ^16.10.0 || ^18.0.0 || >=20.0.0} hasBin: true @@ -9878,7 +8823,7 @@ packages: '@swc/core': 1.7.28 '@swc/jest': 0.2.36(@swc/core@1.7.28) expect-playwright: 0.8.0 - jest: 29.7.0(@types/node@18.15.3) + jest: 29.7.0(@types/node@20.11.17) jest-circus: 29.7.0 jest-environment-node: 29.7.0 jest-junit: 16.0.0 @@ -10664,7 +9609,7 @@ packages: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 18.15.13 + '@types/node': 20.11.17 dev: true /@types/cacheable-request@6.0.3: @@ -10672,7 +9617,7 @@ packages: dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 18.15.13 + '@types/node': 20.11.17 '@types/responselike': 1.0.3 /@types/chai-subset@1.3.5: @@ -10698,7 +9643,7 @@ packages: /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 18.15.13 + '@types/node': 20.11.17 dev: true /@types/cookie-parser@1.4.7: @@ -10713,7 +9658,7 @@ packages: /@types/cors@2.8.17: resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} dependencies: - '@types/node': 18.15.13 + '@types/node': 20.11.17 /@types/debug@0.0.30: resolution: {integrity: sha512-orGL5LXERPYsLov6CWs3Fh6203+dXzJkR7OnddIr2514Hsecwc8xRpzCapshBbKFImCsvS/mk6+FWiN5LyZJAQ==} @@ -10790,7 +9735,7 @@ packages: /@types/express-serve-static-core@4.19.0: resolution: {integrity: sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==} dependencies: - '@types/node': 18.15.13 + '@types/node': 20.11.17 '@types/qs': 6.9.15 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -10830,18 +9775,18 @@ packages: resolution: {integrity: sha512-rTtf75rwyP9G2qO5yRpYtdJ6aU1QqEhWbtW55qEgquEDa6bXW0s2TWZfDm02GuppjEozOWG/F2UnPq5hAQb+gw==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 18.15.13 + '@types/node': 20.11.17 /@types/glob@7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 18.15.13 + '@types/node': 20.11.17 /@types/graceful-fs@4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 18.15.13 + '@types/node': 20.11.17 dev: true /@types/hast@2.3.10: @@ -10878,7 +9823,7 @@ packages: /@types/http-proxy@1.17.14: resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} dependencies: - '@types/node': 18.15.13 + '@types/node': 20.11.17 /@types/image-size@0.8.0: resolution: {integrity: sha512-hMlhu25ji75dXQk2uZkN3pTJ+lWrgKr8M1fTpyyFvuu+SJZBdGa5gDm4BVNobWXHZbOU11mBj0vciYp7qOfAFg==} @@ -10933,10 +9878,10 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.15.13 + '@types/node': 20.11.17 - /@types/lodash@4.17.13: - resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==} + /@types/lodash@4.17.14: + resolution: {integrity: sha512-jsxagdikDiDBeIRaPYtArcT8my4tN1og7MtMRquFT3XNA6axxyHDRUemqDz/taRDdOUn0GnGHRCuff4q48sW9A==} /@types/mdast@3.0.15: resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} @@ -10979,7 +9924,7 @@ packages: /@types/mkdirp@0.5.2: resolution: {integrity: sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==} dependencies: - '@types/node': 18.15.13 + '@types/node': 20.11.17 /@types/mousetrap@1.6.15: resolution: {integrity: sha512-qL0hyIMNPow317QWW/63RvL1x5MVMV+Ru3NaY9f/CuEpCqrmb7WeuK2071ZY5hczOnm38qExWM2i2WtkXLSqFw==} @@ -10991,28 +9936,16 @@ packages: /@types/node-fetch@2.6.11: resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} dependencies: - '@types/node': 18.15.13 + '@types/node': 20.11.17 form-data: 4.0.0 - /@types/node@18.0.0: - resolution: {integrity: sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==} - - /@types/node@18.15.13: - resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} - requiresBuild: true - - /@types/node@18.15.3: - resolution: {integrity: sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==} - dev: true - /@types/node@20.11.17: resolution: {integrity: sha512-QmgQZGWu1Yw9TDyAP9ZzpFJKynYNeOvwMJmaxABfieQoVoiVOS6MN1WSpqpRcbeA5+RW82kraAVxCCJg+780Qw==} dependencies: undici-types: 5.26.5 - dev: true - /@types/node@22.9.0: - resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==} + /@types/node@22.7.2: + resolution: {integrity: sha512-866lXSrpGpgyHBZUa2m9YNWqHDjjM0aBTJlNtYaGEw4rqY/dcD7deRVTbBBAJelfA7oaGDbNftXF/TL/A6RgoA==} dependencies: undici-types: 6.19.8 @@ -11033,6 +9966,13 @@ packages: resolution: {integrity: sha512-1MRgzpzY0hOp9pW/kLRxeQhUWwil6gnrUYd3oEpeYBqp/FexhaCPv3F8LsYr47gtUU45fO2cm1dbwkSrHEo8Uw==} dev: true + /@types/prompts@2.4.9: + resolution: {integrity: sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==} + dependencies: + '@types/node': 20.11.17 + kleur: 3.0.3 + dev: true + /@types/prop-types@15.7.12: resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} @@ -11083,7 +10023,7 @@ packages: /@types/responselike@1.0.3: resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} dependencies: - '@types/node': 18.15.13 + '@types/node': 20.11.17 /@types/retry@0.12.1: resolution: {integrity: sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==} @@ -11093,7 +10033,7 @@ packages: resolution: {integrity: sha512-YyP+VfeaqAyFmXoTh3HChxOQMyjByRMsHU7kc5KOJkSlXudhMhQIALbYV7rHh/l8d2lX3VUQzprrcAgWdRuU8g==} dependencies: '@types/glob': 7.2.0 - '@types/node': 18.15.13 + '@types/node': 20.11.17 /@types/semver@7.5.8: resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} @@ -11102,7 +10042,7 @@ packages: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 18.15.13 + '@types/node': 20.11.17 dev: true /@types/serve-static@1.15.5: @@ -11110,14 +10050,14 @@ packages: dependencies: '@types/http-errors': 2.0.4 '@types/mime': 4.0.0 - '@types/node': 18.15.13 + '@types/node': 20.11.17 dev: true /@types/serve-static@1.15.7: resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} dependencies: '@types/http-errors': 2.0.4 - '@types/node': 18.15.13 + '@types/node': 20.11.17 '@types/send': 0.17.4 dev: true @@ -11157,7 +10097,7 @@ packages: /@types/wait-on@5.3.4: resolution: {integrity: sha512-EBsPjFMrFlMbbUFf9D1Fp+PAB2TwmUn7a3YtHyD9RLuTIk1jDd8SxXVAoez2Ciy+8Jsceo2MYEYZzJ/DvorOKw==} dependencies: - '@types/node': 18.15.13 + '@types/node': 20.11.17 dev: true /@types/wordpress__block-editor@11.5.0(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827): @@ -11206,7 +10146,7 @@ packages: /@types/wordpress__compose@6.0.1: resolution: {integrity: sha512-LBGIgpJPOc1WIpZyc1O6CtquhBu0mxNc7mrVdwWm+6oXGfFuWTdoYwpVJpEONXBJYNVXzQ2jM7w+UeMHFHm6CQ==} dependencies: - '@types/lodash': 4.17.13 + '@types/lodash': 4.17.14 '@types/react': 18.3.3 '@wordpress/element': 5.32.0 dev: true @@ -11285,7 +10225,7 @@ packages: /@types/ws@8.5.10: resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} dependencies: - '@types/node': 18.15.13 + '@types/node': 20.11.17 /@types/yargs-parser@21.0.3: resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} @@ -11306,7 +10246,7 @@ packages: resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} requiresBuild: true dependencies: - '@types/node': 18.15.13 + '@types/node': 20.11.17 dev: false optional: true @@ -11316,6 +10256,33 @@ packages: /@types/zen-observable@0.8.7: resolution: {integrity: sha512-LKzNTjj+2j09wAo/vvVjzgw5qckJJzhdGgWHW7j69QIGdq/KnZrMAMIHQiWGl3Ccflh5/CudBAntTPYdprPltA==} + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@7.32.0)(typescript@5.4.5): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.4.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.4.5) + debug: 4.3.7 + eslint: 7.32.0 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare-lite: 1.4.0 + semver: 7.6.3 + tsutils: 3.21.0(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.4.5): resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -11677,7 +10644,7 @@ packages: hasBin: true dependencies: '@mapbox/node-pre-gyp': 1.0.11 - '@rollup/pluginutils': 5.1.3 + '@rollup/pluginutils': 5.1.4 acorn: 8.14.0 acorn-import-attributes: 1.9.5(acorn@8.14.0) async-sema: 3.1.1 @@ -11700,7 +10667,7 @@ packages: hasBin: true dependencies: '@mapbox/node-pre-gyp': 1.0.11(supports-color@9.4.0) - '@rollup/pluginutils': 5.1.3 + '@rollup/pluginutils': 5.1.4 acorn: 8.14.0 acorn-import-attributes: 1.9.5(acorn@8.14.0) async-sema: 3.1.1 @@ -11728,7 +10695,7 @@ packages: vite: ^4 || ^5 dependencies: '@swc/core': 1.4.13 - vite: 5.0.10(@types/node@18.0.0) + vite: 5.0.10(@types/node@20.11.17) transitivePeerDependencies: - '@swc/helpers' dev: true @@ -11755,7 +10722,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.4) '@types/babel__core': 7.20.5 react-refresh: 0.14.0 - vite: 5.0.10(@types/node@18.0.0) + vite: 5.0.10(@types/node@20.11.17) transitivePeerDependencies: - supports-color dev: true @@ -11766,12 +10733,12 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.26.0) + '@babel/core': 7.26.7 + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.7) + '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.26.7) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.2(@types/node@18.15.13) + vite: 5.4.2(@types/node@20.11.17) transitivePeerDependencies: - supports-color dev: false @@ -11883,7 +10850,7 @@ packages: pathe: 1.1.2 picocolors: 1.0.0 sirv: 2.0.4 - vitest: 1.1.1(@types/node@18.0.0)(@vitest/ui@1.1.1) + vitest: 1.1.1(@types/node@20.11.17)(@vitest/ui@1.1.1) dev: true /@vitest/utils@0.34.6: @@ -12464,7 +11431,7 @@ packages: /@wry/context@0.4.4: resolution: {integrity: sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag==} dependencies: - '@types/node': 18.15.13 + '@types/node': 20.11.17 tslib: 1.14.1 /@wry/equality@0.1.11: @@ -12606,12 +11573,12 @@ packages: mime-types: 2.1.35 negotiator: 0.6.3 - /acorn-import-assertions@1.9.0(acorn@8.14.0): + /acorn-import-assertions@1.9.0(acorn@8.11.3): resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} peerDependencies: acorn: ^8 dependencies: - acorn: 8.14.0 + acorn: 8.11.3 /acorn-import-attributes@1.9.5(acorn@8.14.0): resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} @@ -12680,6 +11647,7 @@ packages: /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} + requiresBuild: true dependencies: debug: 4.3.7 transitivePeerDependencies: @@ -12689,6 +11657,7 @@ packages: /agent-base@6.0.2(supports-color@9.4.0): resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} + requiresBuild: true dependencies: debug: 4.3.7(supports-color@9.4.0) transitivePeerDependencies: @@ -12876,6 +11845,7 @@ packages: /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + requiresBuild: true /ansi-regex@6.1.0: resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} @@ -13024,6 +11994,7 @@ packages: /aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + requiresBuild: true dev: false /arch@2.2.0: @@ -13307,7 +12278,7 @@ packages: resolution: {integrity: sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw==} dependencies: stubborn-fs: 1.2.5 - when-exit: 2.1.3 + when-exit: 2.1.4 dev: false /auto-bind@4.0.0: @@ -13341,7 +12312,7 @@ packages: caniuse-lite: 1.0.30001608 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.1.1 + picocolors: 1.0.0 postcss: 8.4.38 postcss-value-parser: 4.2.0 @@ -13356,7 +12327,7 @@ packages: caniuse-lite: 1.0.30001608 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.1.1 + picocolors: 1.0.0 postcss: 8.4.49 postcss-value-parser: 4.2.0 dev: false @@ -13459,10 +12430,10 @@ packages: peerDependencies: eslint: '>= 4.12.1' dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.3 - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.4 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 eslint: 8.57.1 eslint-visitor-keys: 1.3.0 resolve: 1.22.8 @@ -13502,22 +12473,7 @@ packages: loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.91.0(@swc/core@1.3.102) - - /babel-loader@8.3.0(@babel/core@7.26.0)(webpack@5.91.0): - resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} - engines: {node: '>= 8.9'} - peerDependencies: - '@babel/core': ^7.0.0 - webpack: '>=2' - dependencies: - '@babel/core': 7.26.0 - find-cache-dir: 3.3.2 - loader-utils: 2.0.4 - make-dir: 3.1.0 - schema-utils: 2.7.1 webpack: 5.91.0 - dev: false /babel-plugin-add-module-exports@1.0.4: resolution: {integrity: sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg==} @@ -13579,19 +12535,6 @@ packages: transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.26.0): - resolution: {integrity: sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.26.0 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.26.0) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.4): resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} peerDependencies: @@ -13603,18 +12546,6 @@ packages: transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.26.0): - resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.26.0) - core-js-compat: 3.37.0 - transitivePeerDependencies: - - supports-color - dev: false - /babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.24.4): resolution: {integrity: sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==} peerDependencies: @@ -13625,17 +12556,6 @@ packages: transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.26.0): - resolution: {integrity: sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - dev: false - /babel-plugin-remove-graphql-queries@5.13.1(@babel/core@7.24.4)(gatsby@5.13.1): resolution: {integrity: sha512-yncJ/W6Un48aBRpK/rmdpQOMcr4+EmJ3oi2Wq1zXKu8WLlw+j93KTbejf7fg2msm8GUskb/+9Nnpz7oMCqO9aA==} engines: {node: '>=18.0.0'} @@ -13646,7 +12566,7 @@ packages: '@babel/core': 7.24.4 '@babel/runtime': 7.24.4 '@babel/types': 7.24.0 - gatsby: 5.13.1(@swc/core@1.3.102)(babel-eslint@10.1.0)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(typescript@5.4.5) + gatsby: 5.13.1(babel-eslint@10.1.0)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(typescript@5.4.5) gatsby-core-utils: 4.13.1 /babel-plugin-remove-graphql-queries@5.13.1(@babel/core@7.24.4)(gatsby@5.13.3): @@ -13663,20 +12583,6 @@ packages: gatsby-core-utils: 4.13.1 dev: false - /babel-plugin-remove-graphql-queries@5.13.1(@babel/core@7.26.0)(gatsby@5.13.3): - resolution: {integrity: sha512-yncJ/W6Un48aBRpK/rmdpQOMcr4+EmJ3oi2Wq1zXKu8WLlw+j93KTbejf7fg2msm8GUskb/+9Nnpz7oMCqO9aA==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@babel/core': ^7.0.0 - gatsby: ^5.0.0-next - dependencies: - '@babel/core': 7.26.0 - '@babel/runtime': 7.24.4 - '@babel/types': 7.24.0 - gatsby: 5.13.3(babel-eslint@10.1.0)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(typescript@5.4.5) - gatsby-core-utils: 4.13.1 - dev: false - /babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} @@ -13764,34 +12670,6 @@ packages: transitivePeerDependencies: - supports-color - /babel-preset-gatsby@3.13.1(@babel/core@7.26.0)(core-js@3.36.1): - resolution: {integrity: sha512-JpWj9bkUZ2mlcu4Hc+8Yp8Bml5jmShW1IGVVCQyXrbiKHyBoTr77PhWqy00mvY9EPwlmfTPlgB6QrQBVONLqmw==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@babel/core': ^7.11.6 - core-js: ^3.0.0 - dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.0) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.26.0) - '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.26.0) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.26.0) - '@babel/preset-env': 7.24.4(@babel/core@7.26.0) - '@babel/preset-react': 7.24.1(@babel/core@7.26.0) - '@babel/runtime': 7.24.4 - babel-plugin-dynamic-import-node: 2.3.3 - babel-plugin-macros: 3.1.0 - babel-plugin-transform-react-remove-prop-types: 0.4.24 - core-js: 3.36.1 - gatsby-core-utils: 4.13.1 - gatsby-legacy-polyfills: 3.13.0 - transitivePeerDependencies: - - supports-color - dev: false - /babel-preset-jest@29.6.3(@babel/core@7.24.4): resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -13819,6 +12697,7 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + requiresBuild: true /bare-events@2.2.2: resolution: {integrity: sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==} @@ -14042,13 +12921,14 @@ packages: chalk: 5.3.0 cli-boxes: 3.0.0 string-width: 7.2.0 - type-fest: 4.30.0 + type-fest: 4.33.0 widest-line: 5.0.0 wrap-ansi: 9.0.0 dev: false /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + requiresBuild: true dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 @@ -14058,12 +12938,6 @@ packages: dependencies: balanced-match: 1.0.2 - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - /braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -14084,15 +12958,15 @@ packages: node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) - /browserslist@4.24.2: - resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} + /browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001686 - electron-to-chromium: 1.5.71 - node-releases: 2.0.18 - update-browserslist-db: 1.1.1(browserslist@4.24.2) + caniuse-lite: 1.0.30001695 + electron-to-chromium: 1.5.88 + node-releases: 2.0.19 + update-browserslist-db: 1.1.2(browserslist@4.24.4) dev: false /bser@2.1.1: @@ -14277,7 +13151,7 @@ packages: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 - tslib: 2.6.2 + tslib: 2.8.1 /camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} @@ -14320,15 +13194,15 @@ packages: /caniuse-lite@1.0.30001608: resolution: {integrity: sha512-cjUJTQkk9fQlJR2s4HMuPMvTiRggl0rAVMtthQuyOlDWuqHXqN8azLq+pi8B2TjwKJ32diHjUqRIKeFX4z1FoA==} - /caniuse-lite@1.0.30001686: - resolution: {integrity: sha512-Y7deg0Aergpa24M3qLC5xjNklnKnhsmSyR/V89dLZ1n0ucJIFNs7PgR2Yfa/Zf6W79SbBicgtGxZr2juHkEUIA==} + /caniuse-lite@1.0.30001695: + resolution: {integrity: sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw==} dev: false /capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.8.1 upper-case-first: 2.0.2 /ccount@1.1.0: @@ -14788,6 +13662,7 @@ packages: /color-support@1.1.3: resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} hasBin: true + requiresBuild: true dev: false /color@3.2.1: @@ -14962,6 +13837,7 @@ packages: /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + requiresBuild: true /concat-stream@1.6.2: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} @@ -15050,6 +13926,7 @@ packages: /console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + requiresBuild: true dev: false /consolidated-events@2.0.2: @@ -15060,7 +13937,7 @@ packages: resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.8.1 upper-case: 2.0.2 /content-disposition@0.5.2: @@ -15192,7 +14069,7 @@ packages: object-assign: 4.1.1 vary: 1.1.2 - /cosmiconfig-typescript-loader@5.0.0(@types/node@18.15.13)(cosmiconfig@8.3.6)(typescript@5.4.5): + /cosmiconfig-typescript-loader@5.0.0(@types/node@20.11.17)(cosmiconfig@8.3.6)(typescript@5.4.5): resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} engines: {node: '>=v16'} peerDependencies: @@ -15200,7 +14077,7 @@ packages: cosmiconfig: '>=8.2' typescript: 5.4.5 dependencies: - '@types/node': 18.15.13 + '@types/node': 20.11.17 cosmiconfig: 8.3.6(typescript@5.4.5) jiti: 1.21.0 typescript: 5.4.5 @@ -15294,7 +14171,7 @@ packages: dependencies: '@babel/runtime': 7.24.4 - /create-jest@29.7.0(@types/node@18.15.3): + /create-jest@29.7.0(@types/node@20.11.17): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -15303,7 +14180,7 @@ packages: chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@18.15.3) + jest-config: 29.7.0(@types/node@20.11.17) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -15482,14 +14359,14 @@ packages: engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} dependencies: mdn-data: 2.0.28 - source-map-js: 1.2.0 + source-map-js: 1.2.1 /css-tree@2.3.1: resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} dependencies: mdn-data: 2.0.30 - source-map-js: 1.2.0 + source-map-js: 1.2.1 /css-url-parser@1.1.3: resolution: {integrity: sha512-KO4HrqK3lAlrnobbBEHib/lFRw7kGOlQTLYhwTwWzDEGilGTYIYOpI22d+6euyZiqfZpV96pii87ZufifbxpqA==} @@ -15764,6 +14641,7 @@ packages: /debug@4.3.7: resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} engines: {node: '>=6.0'} + requiresBuild: true peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -15803,7 +14681,7 @@ packages: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} - /decap-cms-app@3.0.12(@types/node@18.0.0)(@types/react@18.3.3)(graphql@16.8.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827): + /decap-cms-app@3.0.12(@types/node@20.11.17)(@types/react@18.3.3)(graphql@16.8.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827): resolution: {integrity: sha512-sMbh6RKP4EeOlupGuMuv/F4Z+35GPPy6hAB0LCvOuC7h6YmasxT630gKndfmFF8EE1PlTFHbuu4Aq0+SmXo+cg==} peerDependencies: react: 19.0.0-rc-7771d3a7-20240827 @@ -15819,7 +14697,7 @@ packages: decap-cms-backend-gitlab: 3.1.3(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(decap-cms-lib-auth@3.0.5)(decap-cms-lib-util@3.0.4)(decap-cms-ui-default@3.1.1)(graphql@16.8.1)(immutable@3.8.2)(lodash@4.17.21)(prop-types@15.8.1)(react@19.0.0-rc-7771d3a7-20240827) decap-cms-backend-proxy: 3.1.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(decap-cms-lib-util@3.0.4)(decap-cms-ui-default@3.1.1)(prop-types@15.8.1)(react@19.0.0-rc-7771d3a7-20240827) decap-cms-backend-test: 3.1.1(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(decap-cms-lib-util@3.0.4)(decap-cms-ui-default@3.1.1)(lodash@4.17.21)(prop-types@15.8.1)(react@19.0.0-rc-7771d3a7-20240827)(uuid@8.3.2) - decap-cms-core: 3.2.8(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/node@18.0.0)(@types/react@18.3.3)(decap-cms-editor-component-image@3.1.1)(decap-cms-lib-auth@3.0.5)(decap-cms-lib-util@3.0.4)(decap-cms-lib-widgets@3.0.2)(decap-cms-ui-default@3.1.1)(immutable@3.8.2)(lodash@4.17.21)(moment@2.30.1)(prop-types@15.8.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react-immutable-proptypes@2.2.0)(react@19.0.0-rc-7771d3a7-20240827) + decap-cms-core: 3.2.8(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/node@20.11.17)(@types/react@18.3.3)(decap-cms-editor-component-image@3.1.1)(decap-cms-lib-auth@3.0.5)(decap-cms-lib-util@3.0.4)(decap-cms-lib-widgets@3.0.2)(decap-cms-ui-default@3.1.1)(immutable@3.8.2)(lodash@4.17.21)(moment@2.30.1)(prop-types@15.8.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react-immutable-proptypes@2.2.0)(react@19.0.0-rc-7771d3a7-20240827) decap-cms-editor-component-image: 3.1.1(react@19.0.0-rc-7771d3a7-20240827) decap-cms-lib-auth: 3.0.5(immutable@3.8.2)(lodash@4.17.21)(uuid@8.3.2) decap-cms-lib-util: 3.0.4(immutable@3.8.2)(lodash@4.17.21) @@ -16046,7 +14924,7 @@ packages: uuid: 8.3.2 dev: false - /decap-cms-core@3.2.8(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/node@18.0.0)(@types/react@18.3.3)(decap-cms-editor-component-image@3.1.1)(decap-cms-lib-auth@3.0.5)(decap-cms-lib-util@3.0.4)(decap-cms-lib-widgets@3.0.2)(decap-cms-ui-default@3.1.1)(immutable@3.8.2)(lodash@4.17.21)(moment@2.30.1)(prop-types@15.8.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react-immutable-proptypes@2.2.0)(react@19.0.0-rc-7771d3a7-20240827): + /decap-cms-core@3.2.8(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/node@20.11.17)(@types/react@18.3.3)(decap-cms-editor-component-image@3.1.1)(decap-cms-lib-auth@3.0.5)(decap-cms-lib-util@3.0.4)(decap-cms-lib-widgets@3.0.2)(decap-cms-ui-default@3.1.1)(immutable@3.8.2)(lodash@4.17.21)(moment@2.30.1)(prop-types@15.8.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react-immutable-proptypes@2.2.0)(react@19.0.0-rc-7771d3a7-20240827): resolution: {integrity: sha512-REuopDPHONQ88rE3rQCTd8QYsMEM/ZzKNQDJAsYvmQx5OuIPfklgfxz5OiVU3w2yTw5Y5GwWtThT8U5WtfFODw==} peerDependencies: '@emotion/react': ^11.11.1 @@ -16093,7 +14971,7 @@ packages: node-polyglot: 2.5.0 prop-types: 15.8.1 react: 19.0.0-rc-7771d3a7-20240827 - react-dnd: 14.0.5(@types/node@18.0.0)(@types/react@18.3.3)(react@19.0.0-rc-7771d3a7-20240827) + react-dnd: 14.0.5(@types/node@20.11.17)(@types/react@18.3.3)(react@19.0.0-rc-7771d3a7-20240827) react-dnd-html5-backend: 14.1.0 react-dom: 19.0.0-rc-7771d3a7-20240827(react@19.0.0-rc-7771d3a7-20240827) react-frame-component: 5.2.6(prop-types@15.8.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827) @@ -16670,6 +15548,7 @@ packages: /delegates@1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + requiresBuild: true dev: false /depd@1.1.2: @@ -16833,7 +15712,7 @@ packages: '@types/debug': 0.0.30 '@types/get-port': 3.2.0 '@types/glob': 5.0.38 - '@types/lodash': 4.17.13 + '@types/lodash': 4.17.14 '@types/mkdirp': 0.5.2 '@types/node': 8.10.66 '@types/rimraf': 2.0.5 @@ -17031,7 +15910,7 @@ packages: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.8.1 /dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} @@ -17057,7 +15936,7 @@ packages: resolution: {integrity: sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==} engines: {node: '>=18'} dependencies: - type-fest: 4.30.0 + type-fest: 4.33.0 dev: false /dotenv-expand@10.0.0: @@ -17077,6 +15956,11 @@ packages: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} + /dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + engines: {node: '>=12'} + dev: false + /dotenv@7.0.0: resolution: {integrity: sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==} engines: {node: '>=6'} @@ -17124,8 +16008,8 @@ packages: /electron-to-chromium@1.4.731: resolution: {integrity: sha512-+TqVfZjpRz2V/5SPpmJxq9qK620SC5SqCnxQIOi7i/U08ZDcTpKbT7Xjj9FU5CbXTMUb4fywbIr8C7cGv4hcjw==} - /electron-to-chromium@1.5.71: - resolution: {integrity: sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==} + /electron-to-chromium@1.5.88: + resolution: {integrity: sha512-K3C2qf1o+bGzbilTDCTBhTQcMS9KW60yTAaTeeXsfvQuTDDwlokLam/AdqlqcSy9u4UainDgsHV23ksXAOgamw==} dev: false /emittery@0.13.1: @@ -17201,7 +16085,7 @@ packages: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 18.15.13 + '@types/node': 20.11.17 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 @@ -17876,6 +16760,16 @@ packages: - supports-color dev: true + /eslint-plugin-flowtype@5.10.0(eslint@7.32.0): + resolution: {integrity: sha512-vcz32f+7TP+kvTUyMXZmCnNujBQZDNmcqPImw8b9PZ+16w1Qdm6ryRuYZYVaG9xRqqmAPr2Cs9FAX5gN+x/bjw==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^7.1.0 + dependencies: + eslint: 7.32.0 + lodash: 4.17.21 + string-natural-compare: 3.0.1 + /eslint-plugin-flowtype@5.10.0(eslint@8.57.1): resolution: {integrity: sha512-vcz32f+7TP+kvTUyMXZmCnNujBQZDNmcqPImw8b9PZ+16w1Qdm6ryRuYZYVaG9xRqqmAPr2Cs9FAX5gN+x/bjw==} engines: {node: ^10.12.0 || >=12.0.0} @@ -17908,6 +16802,42 @@ packages: - typescript dev: true + /eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0)(eslint@7.32.0): + resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@rtsao/scc': 1.1.0 + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.4.5) + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 7.32.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) + hasown: 2.0.2 + is-core-module: 2.15.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 + semver: 6.3.1 + string.prototype.trimend: 1.0.8 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + /eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1): resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} engines: {node: '>=4'} @@ -17981,6 +16911,30 @@ packages: - supports-color dev: true + /eslint-plugin-jsx-a11y@6.8.0(eslint@7.32.0): + resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.24.4 + aria-query: 5.3.0 + array-includes: 3.1.8 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.8 + axe-core: 4.7.0 + axobject-query: 3.2.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + es-iterator-helpers: 1.0.18 + eslint: 7.32.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + /eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.1): resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} engines: {node: '>=4.0'} @@ -18029,6 +16983,14 @@ packages: eslint: 9.14.0 dev: true + /eslint-plugin-react-hooks@4.6.0(eslint@7.32.0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 7.32.0 + /eslint-plugin-react-hooks@4.6.0(eslint@8.57.1): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} @@ -18046,6 +17008,32 @@ packages: eslint: 9.14.0 dev: true + /eslint-plugin-react@7.37.2(eslint@7.32.0): + resolution: {integrity: sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + dependencies: + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.2.0 + eslint: 7.32.0 + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + object.values: 1.2.0 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.11 + string.prototype.repeat: 1.0.0 + /eslint-plugin-react@7.37.2(eslint@8.57.1): resolution: {integrity: sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==} engines: {node: '>=4'} @@ -18518,6 +17506,21 @@ packages: strip-final-newline: 3.0.0 dev: false + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + dev: false + /execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} @@ -18664,8 +17667,8 @@ packages: transitivePeerDependencies: - supports-color - /express@4.21.1: - resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} + /express@4.21.2: + resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} engines: {node: '>= 0.10.0'} dependencies: accepts: 1.3.8 @@ -18687,7 +17690,7 @@ packages: methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 - path-to-regexp: 0.1.10 + path-to-regexp: 0.1.12 proxy-addr: 2.0.7 qs: 6.13.0 range-parser: 1.2.1 @@ -18862,7 +17865,7 @@ packages: fast-json-stringify: 5.14.1 find-my-way: 8.2.2 light-my-request: 5.12.0 - pino: 9.5.0 + pino: 9.6.0 process-warning: 3.0.0 proxy-addr: 2.0.7 rfdc: 1.3.1 @@ -19063,12 +18066,6 @@ packages: resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==} engines: {node: '>= 0.4.0'} - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - /fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -19479,6 +18476,7 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + requiresBuild: true /fs@0.0.1-security: resolution: {integrity: sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==} @@ -19605,7 +18603,7 @@ packages: dependencies: '@types/node-fetch': 2.6.11 fs-extra: 9.1.0 - gatsby: 5.13.1(@swc/core@1.3.102)(babel-eslint@10.1.0)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(typescript@5.4.5) + gatsby: 5.13.1(babel-eslint@10.1.0)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(typescript@5.4.5) lodash: 4.17.21 node-fetch: 2.7.0 p-queue: 6.6.2 @@ -19715,7 +18713,7 @@ packages: chokidar: 3.6.0 fs-exists-cached: 1.0.0 fs-extra: 11.2.0 - gatsby: 5.13.1(@swc/core@1.3.102)(babel-eslint@10.1.0)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(typescript@5.4.5) + gatsby: 5.13.1(babel-eslint@10.1.0)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(typescript@5.4.5) gatsby-core-utils: 4.13.1 gatsby-page-utils: 3.13.1 gatsby-plugin-utils: 4.13.1(gatsby@5.13.1)(graphql@16.8.1) @@ -19764,7 +18762,7 @@ packages: debug: 4.3.7 filenamify: 4.3.0 fs-extra: 11.2.0 - gatsby: 5.13.1(@swc/core@1.3.102)(babel-eslint@10.1.0)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(typescript@5.4.5) + gatsby: 5.13.1(babel-eslint@10.1.0)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(typescript@5.4.5) gatsby-core-utils: 4.13.1 gatsby-plugin-utils: 4.13.1(gatsby@5.13.1)(graphql@16.8.1) lodash: 4.17.21 @@ -19813,7 +18811,7 @@ packages: '@babel/preset-typescript': 7.24.1(@babel/core@7.24.4) '@babel/runtime': 7.24.4 babel-plugin-remove-graphql-queries: 5.13.1(@babel/core@7.24.4)(gatsby@5.13.1) - gatsby: 5.13.1(@swc/core@1.3.102)(babel-eslint@10.1.0)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(typescript@5.4.5) + gatsby: 5.13.1(babel-eslint@10.1.0)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(typescript@5.4.5) transitivePeerDependencies: - supports-color @@ -19845,7 +18843,7 @@ packages: '@babel/runtime': 7.24.4 fastq: 1.17.1 fs-extra: 11.2.0 - gatsby: 5.13.1(@swc/core@1.3.102)(babel-eslint@10.1.0)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(typescript@5.4.5) + gatsby: 5.13.1(babel-eslint@10.1.0)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(typescript@5.4.5) gatsby-core-utils: 4.13.1 gatsby-sharp: 1.13.0 graphql: 16.8.1 @@ -19969,211 +18967,417 @@ packages: '@parcel/cache': 2.8.3(@parcel/core@2.8.3) '@parcel/core': 2.8.3 '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0)(webpack@5.91.0) - '@types/http-proxy': 1.17.14 - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.4.5) - '@typescript-eslint/parser': 5.62.0(eslint@7.32.0)(typescript@5.4.5) - '@vercel/webpack-asset-relocator-loader': 1.7.3 - acorn-loose: 8.4.0 - acorn-walk: 8.3.2 - address: 1.2.2 - anser: 2.1.1 - autoprefixer: 10.4.19(postcss@8.4.38) - axios: 0.21.4(debug@4.3.4) - babel-jsx-utils: 1.1.0 - babel-loader: 8.3.0(@babel/core@7.24.4)(webpack@5.91.0) - babel-plugin-add-module-exports: 1.0.4 - babel-plugin-dynamic-import-node: 2.3.3 - babel-plugin-lodash: 3.3.4 - babel-plugin-remove-graphql-queries: 5.13.1(@babel/core@7.24.4)(gatsby@5.13.1) - babel-preset-gatsby: 3.13.1(@babel/core@7.24.4)(core-js@3.36.1) - better-opn: 2.1.1 - bluebird: 3.7.2 - body-parser: 1.20.1 - browserslist: 4.23.0 - cache-manager: 2.11.1 - chalk: 4.1.2 - chokidar: 3.6.0 - common-tags: 1.8.2 - compression: 1.7.4 - cookie: 0.5.0 - core-js: 3.36.1 - cors: 2.8.5 - css-loader: 5.2.7(webpack@5.91.0) - css-minimizer-webpack-plugin: 2.0.0(webpack@5.91.0) - css.escape: 1.5.1 - date-fns: 2.30.0 - debug: 4.3.4 - deepmerge: 4.3.1 - detect-port: 1.5.1 - devcert: 1.2.2 - dotenv: 8.6.0 - enhanced-resolve: 5.16.0 - error-stack-parser: 2.1.4 - eslint: 7.32.0 - eslint-config-react-app: 6.0.0(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(babel-eslint@10.1.0)(eslint-plugin-flowtype@5.10.0)(eslint-plugin-import@2.31.0)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.37.2)(eslint@7.32.0)(typescript@5.4.5) - eslint-plugin-flowtype: 5.10.0(eslint@8.57.1) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1) - eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.1) - eslint-plugin-react: 7.37.2(eslint@8.57.1) - eslint-plugin-react-hooks: 4.6.0(eslint@8.57.1) - eslint-webpack-plugin: 2.7.0(eslint@7.32.0)(webpack@5.91.0) - event-source-polyfill: 1.0.31 - execa: 5.1.1 - express: 4.19.2 - express-http-proxy: 1.6.3 - fastest-levenshtein: 1.0.16 - fastq: 1.17.1 - file-loader: 6.2.0(webpack@5.91.0) - find-cache-dir: 3.3.2 - fs-exists-cached: 1.0.0 - fs-extra: 11.2.0 - gatsby-cli: 5.13.2 - gatsby-core-utils: 4.13.1 - gatsby-graphiql-explorer: 3.13.1 - gatsby-legacy-polyfills: 3.13.0 - gatsby-link: 5.13.1(@gatsbyjs/reach-router@2.0.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827) - gatsby-page-utils: 3.13.1 - gatsby-parcel-config: 1.13.0(@parcel/core@2.8.3) - gatsby-plugin-page-creator: 5.13.1(gatsby@5.13.1)(graphql@16.8.1) - gatsby-plugin-typescript: 5.13.1(gatsby@5.13.1) - gatsby-plugin-utils: 4.13.1(gatsby@5.13.1)(graphql@16.8.1) - gatsby-react-router-scroll: 6.13.1(@gatsbyjs/reach-router@2.0.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827) - gatsby-script: 2.13.0(@gatsbyjs/reach-router@2.0.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827) - gatsby-telemetry: 4.13.1 - gatsby-worker: 2.13.1 - glob: 7.2.3 - globby: 11.1.0 - got: 11.8.6 - graphql: 16.8.1 - graphql-compose: 9.0.10(graphql@16.8.1) - graphql-http: 1.22.0(graphql@16.8.1) - graphql-tag: 2.12.6(graphql@16.8.1) - hasha: 5.2.2 - invariant: 2.2.4 - is-relative: 1.0.0 - is-relative-url: 3.0.0 - joi: 17.12.3 - json-loader: 0.5.7 - latest-version: 7.0.0 - linkfs: 2.1.0 - lmdb: 2.5.3 - lodash: 4.17.21 - meant: 1.0.3 - memoizee: 0.4.15 - micromatch: 4.0.5 - mime: 3.0.0 - mini-css-extract-plugin: 1.6.2(webpack@5.91.0) - mitt: 1.2.0 - moment: 2.30.1 - multer: 1.4.5-lts.1 - node-fetch: 2.7.0 - node-html-parser: 5.4.2 - normalize-path: 3.0.0 - null-loader: 4.0.1(webpack@5.91.0) - opentracing: 0.14.7 - p-defer: 3.0.0 - parseurl: 1.3.3 - path-to-regexp: 0.1.7 - physical-cpu-count: 2.0.0 - platform: 1.3.6 - postcss: 8.4.38 - postcss-flexbugs-fixes: 5.0.2(postcss@8.4.38) - postcss-loader: 5.3.0(postcss@8.4.38)(webpack@5.91.0) - prompts: 2.4.2 - prop-types: 15.8.1 - query-string: 6.14.1 - raw-loader: 4.0.2(webpack@5.91.0) - react: 19.0.0-rc-7771d3a7-20240827 - react-dev-utils: 12.0.1(eslint@7.32.0)(typescript@5.4.5)(webpack@5.91.0) - react-dom: 19.0.0-rc-7771d3a7-20240827(react@19.0.0-rc-7771d3a7-20240827) - react-refresh: 0.14.0 - react-server-dom-webpack: 19.0.0-rc-7771d3a7-20240827(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(webpack@5.91.0) - redux: 4.2.1 - redux-thunk: 2.4.2(redux@4.2.1) - resolve-from: 5.0.0 - semver: 7.6.0 - shallow-compare: 1.2.2 - signal-exit: 3.0.7 - slugify: 1.6.6 - socket.io: 4.7.1 - socket.io-client: 4.7.1 - stack-trace: 0.0.10 - string-similarity: 1.2.2 - strip-ansi: 6.0.1 - style-loader: 2.0.0(webpack@5.91.0) - style-to-object: 0.4.4 - terser-webpack-plugin: 5.3.10(@swc/core@1.3.102)(webpack@5.91.0) - tmp: 0.2.3 - true-case-path: 2.2.1 - type-of: 2.0.1 - url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.91.0) - uuid: 8.3.2 - webpack: 5.91.0(@swc/core@1.3.102) - webpack-dev-middleware: 4.3.0(webpack@5.91.0) - webpack-merge: 5.10.0 - webpack-stats-plugin: 1.1.3 - webpack-virtual-modules: 0.5.0 - xstate: 4.38.3 - yaml-loader: 0.8.1 - optionalDependencies: - gatsby-sharp: 1.13.0 - transitivePeerDependencies: - - '@swc/core' - - '@types/webpack' - - babel-eslint - - bufferutil - - clean-css - - csso - - encoding - - esbuild - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - eslint-plugin-jest - - eslint-plugin-testing-library - - sockjs-client - - supports-color - - type-fest - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - webpack-dev-server - - webpack-hot-middleware - - webpack-plugin-serve - - /gatsby@5.13.3(babel-eslint@10.1.0)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(typescript@5.4.5): - resolution: {integrity: sha512-SSnGpjswK20BQORcvTbtK8eI+W4QUG+u8rdVswB4suva6BfvTakW2wiktj7E2MdO4NjRvlgJjF5dUUncU5nldA==} - engines: {node: '>=18.0.0'} - hasBin: true - requiresBuild: true - peerDependencies: - react: 19.0.0-rc-7771d3a7-20240827 - react-dom: 19.0.0-rc-7771d3a7-20240827 - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/core': 7.26.0 - '@babel/eslint-parser': 7.24.1(@babel/core@7.26.0)(eslint@7.32.0) - '@babel/helper-plugin-utils': 7.25.9 - '@babel/parser': 7.26.3 - '@babel/runtime': 7.24.4 - '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 - '@builder.io/partytown': 0.7.6 - '@gatsbyjs/reach-router': 2.0.1(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827) - '@gatsbyjs/webpack-hot-middleware': 2.25.3 - '@graphql-codegen/add': 3.2.3(graphql@16.8.1) - '@graphql-codegen/core': 2.6.8(graphql@16.8.1) - '@graphql-codegen/plugin-helpers': 2.7.2(graphql@16.8.1) - '@graphql-codegen/typescript': 2.8.8(graphql@16.8.1) - '@graphql-codegen/typescript-operations': 2.5.13(graphql@16.8.1) - '@graphql-tools/code-file-loader': 7.3.23(@babel/core@7.26.0)(graphql@16.8.1) - '@graphql-tools/load': 7.8.14(graphql@16.8.1) - '@jridgewell/trace-mapping': 0.3.25 - '@nodelib/fs.walk': 1.2.8 - '@parcel/cache': 2.8.3(@parcel/core@2.8.3) - '@parcel/core': 2.8.3 - '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.2)(webpack@5.91.0) + '@types/http-proxy': 1.17.14 + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.4.5) + '@typescript-eslint/parser': 5.62.0(eslint@7.32.0)(typescript@5.4.5) + '@vercel/webpack-asset-relocator-loader': 1.7.3 + acorn-loose: 8.4.0 + acorn-walk: 8.3.2 + address: 1.2.2 + anser: 2.1.1 + autoprefixer: 10.4.19(postcss@8.4.38) + axios: 0.21.4(debug@4.3.4) + babel-jsx-utils: 1.1.0 + babel-loader: 8.3.0(@babel/core@7.24.4)(webpack@5.91.0) + babel-plugin-add-module-exports: 1.0.4 + babel-plugin-dynamic-import-node: 2.3.3 + babel-plugin-lodash: 3.3.4 + babel-plugin-remove-graphql-queries: 5.13.1(@babel/core@7.24.4)(gatsby@5.13.1) + babel-preset-gatsby: 3.13.1(@babel/core@7.24.4)(core-js@3.36.1) + better-opn: 2.1.1 + bluebird: 3.7.2 + body-parser: 1.20.1 + browserslist: 4.23.0 + cache-manager: 2.11.1 + chalk: 4.1.2 + chokidar: 3.6.0 + common-tags: 1.8.2 + compression: 1.7.4 + cookie: 0.5.0 + core-js: 3.36.1 + cors: 2.8.5 + css-loader: 5.2.7(webpack@5.91.0) + css-minimizer-webpack-plugin: 2.0.0(webpack@5.91.0) + css.escape: 1.5.1 + date-fns: 2.30.0 + debug: 4.3.4 + deepmerge: 4.3.1 + detect-port: 1.5.1 + devcert: 1.2.2 + dotenv: 8.6.0 + enhanced-resolve: 5.16.0 + error-stack-parser: 2.1.4 + eslint: 7.32.0 + eslint-config-react-app: 6.0.0(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(babel-eslint@10.1.0)(eslint-plugin-flowtype@5.10.0)(eslint-plugin-import@2.31.0)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.37.2)(eslint@7.32.0)(typescript@5.4.5) + eslint-plugin-flowtype: 5.10.0(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1) + eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.1) + eslint-plugin-react: 7.37.2(eslint@8.57.1) + eslint-plugin-react-hooks: 4.6.0(eslint@8.57.1) + eslint-webpack-plugin: 2.7.0(eslint@7.32.0)(webpack@5.91.0) + event-source-polyfill: 1.0.31 + execa: 5.1.1 + express: 4.19.2 + express-http-proxy: 1.6.3 + fastest-levenshtein: 1.0.16 + fastq: 1.17.1 + file-loader: 6.2.0(webpack@5.91.0) + find-cache-dir: 3.3.2 + fs-exists-cached: 1.0.0 + fs-extra: 11.2.0 + gatsby-cli: 5.13.2 + gatsby-core-utils: 4.13.1 + gatsby-graphiql-explorer: 3.13.1 + gatsby-legacy-polyfills: 3.13.0 + gatsby-link: 5.13.1(@gatsbyjs/reach-router@2.0.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827) + gatsby-page-utils: 3.13.1 + gatsby-parcel-config: 1.13.0(@parcel/core@2.8.3) + gatsby-plugin-page-creator: 5.13.1(gatsby@5.13.1)(graphql@16.8.1) + gatsby-plugin-typescript: 5.13.1(gatsby@5.13.1) + gatsby-plugin-utils: 4.13.1(gatsby@5.13.1)(graphql@16.8.1) + gatsby-react-router-scroll: 6.13.1(@gatsbyjs/reach-router@2.0.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827) + gatsby-script: 2.13.0(@gatsbyjs/reach-router@2.0.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827) + gatsby-telemetry: 4.13.1 + gatsby-worker: 2.13.1 + glob: 7.2.3 + globby: 11.1.0 + got: 11.8.6 + graphql: 16.8.1 + graphql-compose: 9.0.10(graphql@16.8.1) + graphql-http: 1.22.0(graphql@16.8.1) + graphql-tag: 2.12.6(graphql@16.8.1) + hasha: 5.2.2 + invariant: 2.2.4 + is-relative: 1.0.0 + is-relative-url: 3.0.0 + joi: 17.12.3 + json-loader: 0.5.7 + latest-version: 7.0.0 + linkfs: 2.1.0 + lmdb: 2.5.3 + lodash: 4.17.21 + meant: 1.0.3 + memoizee: 0.4.15 + micromatch: 4.0.5 + mime: 3.0.0 + mini-css-extract-plugin: 1.6.2(webpack@5.91.0) + mitt: 1.2.0 + moment: 2.30.1 + multer: 1.4.5-lts.1 + node-fetch: 2.7.0 + node-html-parser: 5.4.2 + normalize-path: 3.0.0 + null-loader: 4.0.1(webpack@5.91.0) + opentracing: 0.14.7 + p-defer: 3.0.0 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + physical-cpu-count: 2.0.0 + platform: 1.3.6 + postcss: 8.4.38 + postcss-flexbugs-fixes: 5.0.2(postcss@8.4.38) + postcss-loader: 5.3.0(postcss@8.4.38)(webpack@5.91.0) + prompts: 2.4.2 + prop-types: 15.8.1 + query-string: 6.14.1 + raw-loader: 4.0.2(webpack@5.91.0) + react: 19.0.0-rc-7771d3a7-20240827 + react-dev-utils: 12.0.1(eslint@7.32.0)(typescript@5.4.5)(webpack@5.91.0) + react-dom: 19.0.0-rc-7771d3a7-20240827(react@19.0.0-rc-7771d3a7-20240827) + react-refresh: 0.14.0 + react-server-dom-webpack: 19.0.0-rc-7771d3a7-20240827(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(webpack@5.91.0) + redux: 4.2.1 + redux-thunk: 2.4.2(redux@4.2.1) + resolve-from: 5.0.0 + semver: 7.6.0 + shallow-compare: 1.2.2 + signal-exit: 3.0.7 + slugify: 1.6.6 + socket.io: 4.7.1 + socket.io-client: 4.7.1 + stack-trace: 0.0.10 + string-similarity: 1.2.2 + strip-ansi: 6.0.1 + style-loader: 2.0.0(webpack@5.91.0) + style-to-object: 0.4.4 + terser-webpack-plugin: 5.3.10(@swc/core@1.3.102)(webpack@5.91.0) + tmp: 0.2.3 + true-case-path: 2.2.1 + type-of: 2.0.1 + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.91.0) + uuid: 8.3.2 + webpack: 5.91.0(@swc/core@1.3.102) + webpack-dev-middleware: 4.3.0(webpack@5.91.0) + webpack-merge: 5.10.0 + webpack-stats-plugin: 1.1.3 + webpack-virtual-modules: 0.5.0 + xstate: 4.38.3 + yaml-loader: 0.8.1 + optionalDependencies: + gatsby-sharp: 1.13.0 + transitivePeerDependencies: + - '@swc/core' + - '@types/webpack' + - babel-eslint + - bufferutil + - clean-css + - csso + - encoding + - esbuild + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - eslint-plugin-jest + - eslint-plugin-testing-library + - sockjs-client + - supports-color + - type-fest + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + dev: true + + /gatsby@5.13.1(babel-eslint@10.1.0)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(typescript@5.4.5): + resolution: {integrity: sha512-y8VB381ZnHX3Xxc1n78AAAd+t0EsIyyIRtfqlSQ10CXwZHpZzBR3DTRoHmqIG3/NmdiqWhbHb/nRlmKZUzixtQ==} + engines: {node: '>=18.0.0'} + hasBin: true + requiresBuild: true + peerDependencies: + react: 19.0.0-rc-7771d3a7-20240827 + react-dom: 19.0.0-rc-7771d3a7-20240827 + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/core': 7.24.4 + '@babel/eslint-parser': 7.24.1(@babel/core@7.24.4)(eslint@7.32.0) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/parser': 7.24.4 + '@babel/runtime': 7.24.4 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + '@builder.io/partytown': 0.7.6 + '@gatsbyjs/reach-router': 2.0.1(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827) + '@gatsbyjs/webpack-hot-middleware': 2.25.3 + '@graphql-codegen/add': 3.2.3(graphql@16.8.1) + '@graphql-codegen/core': 2.6.8(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 2.7.2(graphql@16.8.1) + '@graphql-codegen/typescript': 2.8.8(graphql@16.8.1) + '@graphql-codegen/typescript-operations': 2.5.13(graphql@16.8.1) + '@graphql-tools/code-file-loader': 7.3.23(@babel/core@7.24.4)(graphql@16.8.1) + '@graphql-tools/load': 7.8.14(graphql@16.8.1) + '@jridgewell/trace-mapping': 0.3.25 + '@nodelib/fs.walk': 1.2.8 + '@parcel/cache': 2.8.3(@parcel/core@2.8.3) + '@parcel/core': 2.8.3 + '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0)(webpack@5.91.0) + '@types/http-proxy': 1.17.14 + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@7.32.0)(typescript@5.4.5) + '@typescript-eslint/parser': 5.62.0(eslint@7.32.0)(typescript@5.4.5) + '@vercel/webpack-asset-relocator-loader': 1.7.3 + acorn-loose: 8.4.0 + acorn-walk: 8.3.2 + address: 1.2.2 + anser: 2.1.1 + autoprefixer: 10.4.19(postcss@8.4.38) + axios: 0.21.4(debug@4.3.4) + babel-jsx-utils: 1.1.0 + babel-loader: 8.3.0(@babel/core@7.24.4)(webpack@5.91.0) + babel-plugin-add-module-exports: 1.0.4 + babel-plugin-dynamic-import-node: 2.3.3 + babel-plugin-lodash: 3.3.4 + babel-plugin-remove-graphql-queries: 5.13.1(@babel/core@7.24.4)(gatsby@5.13.1) + babel-preset-gatsby: 3.13.1(@babel/core@7.24.4)(core-js@3.36.1) + better-opn: 2.1.1 + bluebird: 3.7.2 + body-parser: 1.20.1 + browserslist: 4.23.0 + cache-manager: 2.11.1 + chalk: 4.1.2 + chokidar: 3.6.0 + common-tags: 1.8.2 + compression: 1.7.4 + cookie: 0.5.0 + core-js: 3.36.1 + cors: 2.8.5 + css-loader: 5.2.7(webpack@5.91.0) + css-minimizer-webpack-plugin: 2.0.0(webpack@5.91.0) + css.escape: 1.5.1 + date-fns: 2.30.0 + debug: 4.3.4 + deepmerge: 4.3.1 + detect-port: 1.5.1 + devcert: 1.2.2 + dotenv: 8.6.0 + enhanced-resolve: 5.16.0 + error-stack-parser: 2.1.4 + eslint: 7.32.0 + eslint-config-react-app: 6.0.0(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(babel-eslint@10.1.0)(eslint-plugin-flowtype@5.10.0)(eslint-plugin-import@2.31.0)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.37.2)(eslint@7.32.0)(typescript@5.4.5) + eslint-plugin-flowtype: 5.10.0(eslint@7.32.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0)(eslint@7.32.0) + eslint-plugin-jsx-a11y: 6.8.0(eslint@7.32.0) + eslint-plugin-react: 7.37.2(eslint@7.32.0) + eslint-plugin-react-hooks: 4.6.0(eslint@7.32.0) + eslint-webpack-plugin: 2.7.0(eslint@7.32.0)(webpack@5.91.0) + event-source-polyfill: 1.0.31 + execa: 5.1.1 + express: 4.19.2 + express-http-proxy: 1.6.3 + fastest-levenshtein: 1.0.16 + fastq: 1.17.1 + file-loader: 6.2.0(webpack@5.91.0) + find-cache-dir: 3.3.2 + fs-exists-cached: 1.0.0 + fs-extra: 11.2.0 + gatsby-cli: 5.13.2 + gatsby-core-utils: 4.13.1 + gatsby-graphiql-explorer: 3.13.1 + gatsby-legacy-polyfills: 3.13.0 + gatsby-link: 5.13.1(@gatsbyjs/reach-router@2.0.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827) + gatsby-page-utils: 3.13.1 + gatsby-parcel-config: 1.13.0(@parcel/core@2.8.3) + gatsby-plugin-page-creator: 5.13.1(gatsby@5.13.1)(graphql@16.8.1) + gatsby-plugin-typescript: 5.13.1(gatsby@5.13.1) + gatsby-plugin-utils: 4.13.1(gatsby@5.13.1)(graphql@16.8.1) + gatsby-react-router-scroll: 6.13.1(@gatsbyjs/reach-router@2.0.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827) + gatsby-script: 2.13.0(@gatsbyjs/reach-router@2.0.1)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827) + gatsby-telemetry: 4.13.1 + gatsby-worker: 2.13.1 + glob: 7.2.3 + globby: 11.1.0 + got: 11.8.6 + graphql: 16.8.1 + graphql-compose: 9.0.10(graphql@16.8.1) + graphql-http: 1.22.0(graphql@16.8.1) + graphql-tag: 2.12.6(graphql@16.8.1) + hasha: 5.2.2 + invariant: 2.2.4 + is-relative: 1.0.0 + is-relative-url: 3.0.0 + joi: 17.12.3 + json-loader: 0.5.7 + latest-version: 7.0.0 + linkfs: 2.1.0 + lmdb: 2.5.3 + lodash: 4.17.21 + meant: 1.0.3 + memoizee: 0.4.15 + micromatch: 4.0.5 + mime: 3.0.0 + mini-css-extract-plugin: 1.6.2(webpack@5.91.0) + mitt: 1.2.0 + moment: 2.30.1 + multer: 1.4.5-lts.1 + node-fetch: 2.7.0 + node-html-parser: 5.4.2 + normalize-path: 3.0.0 + null-loader: 4.0.1(webpack@5.91.0) + opentracing: 0.14.7 + p-defer: 3.0.0 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + physical-cpu-count: 2.0.0 + platform: 1.3.6 + postcss: 8.4.38 + postcss-flexbugs-fixes: 5.0.2(postcss@8.4.38) + postcss-loader: 5.3.0(postcss@8.4.38)(webpack@5.91.0) + prompts: 2.4.2 + prop-types: 15.8.1 + query-string: 6.14.1 + raw-loader: 4.0.2(webpack@5.91.0) + react: 19.0.0-rc-7771d3a7-20240827 + react-dev-utils: 12.0.1(eslint@7.32.0)(typescript@5.4.5)(webpack@5.91.0) + react-dom: 19.0.0-rc-7771d3a7-20240827(react@19.0.0-rc-7771d3a7-20240827) + react-refresh: 0.14.0 + react-server-dom-webpack: 19.0.0-rc-7771d3a7-20240827(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(webpack@5.91.0) + redux: 4.2.1 + redux-thunk: 2.4.2(redux@4.2.1) + resolve-from: 5.0.0 + semver: 7.6.0 + shallow-compare: 1.2.2 + signal-exit: 3.0.7 + slugify: 1.6.6 + socket.io: 4.7.1 + socket.io-client: 4.7.1 + stack-trace: 0.0.10 + string-similarity: 1.2.2 + strip-ansi: 6.0.1 + style-loader: 2.0.0(webpack@5.91.0) + style-to-object: 0.4.4 + terser-webpack-plugin: 5.3.10(webpack@5.91.0) + tmp: 0.2.3 + true-case-path: 2.2.1 + type-of: 2.0.1 + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.91.0) + uuid: 8.3.2 + webpack: 5.91.0 + webpack-dev-middleware: 4.3.0(webpack@5.91.0) + webpack-merge: 5.10.0 + webpack-stats-plugin: 1.1.3 + webpack-virtual-modules: 0.5.0 + xstate: 4.38.3 + yaml-loader: 0.8.1 + optionalDependencies: + gatsby-sharp: 1.13.0 + transitivePeerDependencies: + - '@swc/core' + - '@types/webpack' + - babel-eslint + - bufferutil + - clean-css + - csso + - encoding + - esbuild + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - eslint-plugin-jest + - eslint-plugin-testing-library + - sockjs-client + - supports-color + - type-fest + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + + /gatsby@5.13.3(babel-eslint@10.1.0)(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(typescript@5.4.5): + resolution: {integrity: sha512-SSnGpjswK20BQORcvTbtK8eI+W4QUG+u8rdVswB4suva6BfvTakW2wiktj7E2MdO4NjRvlgJjF5dUUncU5nldA==} + engines: {node: '>=18.0.0'} + hasBin: true + requiresBuild: true + peerDependencies: + react: 19.0.0-rc-7771d3a7-20240827 + react-dom: 19.0.0-rc-7771d3a7-20240827 + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/core': 7.24.4 + '@babel/eslint-parser': 7.24.1(@babel/core@7.24.4)(eslint@7.32.0) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/parser': 7.24.4 + '@babel/runtime': 7.24.4 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + '@builder.io/partytown': 0.7.6 + '@gatsbyjs/reach-router': 2.0.1(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827) + '@gatsbyjs/webpack-hot-middleware': 2.25.3 + '@graphql-codegen/add': 3.2.3(graphql@16.8.1) + '@graphql-codegen/core': 2.6.8(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 2.7.2(graphql@16.8.1) + '@graphql-codegen/typescript': 2.8.8(graphql@16.8.1) + '@graphql-codegen/typescript-operations': 2.5.13(graphql@16.8.1) + '@graphql-tools/code-file-loader': 7.3.23(@babel/core@7.24.4)(graphql@16.8.1) + '@graphql-tools/load': 7.8.14(graphql@16.8.1) + '@jridgewell/trace-mapping': 0.3.25 + '@nodelib/fs.walk': 1.2.8 + '@parcel/cache': 2.8.3(@parcel/core@2.8.3) + '@parcel/core': 2.8.3 + '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0)(webpack@5.91.0) '@sigmacomputing/babel-plugin-lodash': 3.3.5 '@types/http-proxy': 1.17.14 '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.4.5) @@ -20186,15 +19390,15 @@ packages: autoprefixer: 10.4.19(postcss@8.4.49) axios: 0.21.4(debug@4.3.7) babel-jsx-utils: 1.1.0 - babel-loader: 8.3.0(@babel/core@7.26.0)(webpack@5.91.0) + babel-loader: 8.3.0(@babel/core@7.24.4)(webpack@5.91.0) babel-plugin-add-module-exports: 1.0.4 babel-plugin-dynamic-import-node: 2.3.3 - babel-plugin-remove-graphql-queries: 5.13.1(@babel/core@7.26.0)(gatsby@5.13.3) - babel-preset-gatsby: 3.13.1(@babel/core@7.26.0)(core-js@3.36.1) + babel-plugin-remove-graphql-queries: 5.13.1(@babel/core@7.24.4)(gatsby@5.13.3) + babel-preset-gatsby: 3.13.1(@babel/core@7.24.4)(core-js@3.36.1) better-opn: 2.1.1 bluebird: 3.7.2 body-parser: 1.20.1 - browserslist: 4.24.2 + browserslist: 4.23.0 cache-manager: 2.11.1 chalk: 4.1.2 chokidar: 3.6.0 @@ -20224,7 +19428,7 @@ packages: eslint-webpack-plugin: 2.7.0(eslint@7.32.0)(webpack@5.91.0) event-source-polyfill: 1.0.31 execa: 5.1.1 - express: 4.21.1 + express: 4.19.2 express-http-proxy: 1.6.3 fastest-levenshtein: 1.0.16 fastq: 1.17.1 @@ -20291,7 +19495,7 @@ packages: react: 19.0.0-rc-7771d3a7-20240827 react-dev-utils: 12.0.1(eslint@7.32.0)(typescript@5.4.5)(webpack@5.91.0) react-dom: 19.0.0-rc-7771d3a7-20240827(react@19.0.0-rc-7771d3a7-20240827) - react-refresh: 0.14.2 + react-refresh: 0.14.0 react-server-dom-webpack: 19.0.0-rc-7771d3a7-20240827(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(webpack@5.91.0) redux: 4.2.1 redux-thunk: 2.4.2(redux@4.2.1) @@ -20594,6 +19798,7 @@ packages: /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + requiresBuild: true dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -20833,7 +20038,7 @@ packages: graphql: 16.8.1 graphql-type-json: 0.3.2(graphql@16.8.1) - /graphql-config@5.0.3(@types/node@18.0.0)(graphql@16.8.1)(typescript@5.4.5): + /graphql-config@5.0.3(@types/node@20.11.17)(graphql@16.8.1)(typescript@5.4.5): resolution: {integrity: sha512-BNGZaoxIBkv9yy6Y7omvsaBUHOzfFcII3UN++tpH8MGOKFPFkCPZuwx09ggANMt8FgyWP1Od8SWPmrUEZca4NQ==} engines: {node: '>= 16.0.0'} peerDependencies: @@ -20847,7 +20052,7 @@ packages: '@graphql-tools/json-file-loader': 8.0.1(graphql@16.8.1) '@graphql-tools/load': 8.0.2(graphql@16.8.1) '@graphql-tools/merge': 9.0.3(graphql@16.8.1) - '@graphql-tools/url-loader': 8.0.2(@types/node@18.0.0)(graphql@16.8.1) + '@graphql-tools/url-loader': 8.0.2(@types/node@20.11.17)(graphql@16.8.1) '@graphql-tools/utils': 10.1.2(graphql@16.8.1) cosmiconfig: 8.3.6(typescript@5.4.5) graphql: 16.8.1 @@ -20862,7 +20067,7 @@ packages: - typescript - utf-8-validate - /graphql-config@5.0.3(@types/node@18.15.13)(graphql@16.8.1)(typescript@5.4.5): + /graphql-config@5.0.3(@types/node@22.7.2)(graphql@16.8.1)(typescript@5.4.5): resolution: {integrity: sha512-BNGZaoxIBkv9yy6Y7omvsaBUHOzfFcII3UN++tpH8MGOKFPFkCPZuwx09ggANMt8FgyWP1Od8SWPmrUEZca4NQ==} engines: {node: '>= 16.0.0'} peerDependencies: @@ -20876,37 +20081,7 @@ packages: '@graphql-tools/json-file-loader': 8.0.1(graphql@16.8.1) '@graphql-tools/load': 8.0.2(graphql@16.8.1) '@graphql-tools/merge': 9.0.3(graphql@16.8.1) - '@graphql-tools/url-loader': 8.0.2(@types/node@18.15.13)(graphql@16.8.1) - '@graphql-tools/utils': 10.1.2(graphql@16.8.1) - cosmiconfig: 8.3.6(typescript@5.4.5) - graphql: 16.8.1 - jiti: 1.21.0 - minimatch: 4.2.3 - string-env-interpolation: 1.0.1 - tslib: 2.6.2 - transitivePeerDependencies: - - '@types/node' - - bufferutil - - encoding - - typescript - - utf-8-validate - dev: false - - /graphql-config@5.0.3(@types/node@22.9.0)(graphql@16.8.1)(typescript@5.4.5): - resolution: {integrity: sha512-BNGZaoxIBkv9yy6Y7omvsaBUHOzfFcII3UN++tpH8MGOKFPFkCPZuwx09ggANMt8FgyWP1Od8SWPmrUEZca4NQ==} - engines: {node: '>= 16.0.0'} - peerDependencies: - cosmiconfig-toml-loader: ^1.0.0 - graphql: 16.8.1 - peerDependenciesMeta: - cosmiconfig-toml-loader: - optional: true - dependencies: - '@graphql-tools/graphql-file-loader': 8.0.1(graphql@16.8.1) - '@graphql-tools/json-file-loader': 8.0.1(graphql@16.8.1) - '@graphql-tools/load': 8.0.2(graphql@16.8.1) - '@graphql-tools/merge': 9.0.3(graphql@16.8.1) - '@graphql-tools/url-loader': 8.0.2(@types/node@22.9.0)(graphql@16.8.1) + '@graphql-tools/url-loader': 8.0.2(@types/node@22.7.2)(graphql@16.8.1) '@graphql-tools/utils': 10.1.2(graphql@16.8.1) cosmiconfig: 8.3.6(typescript@5.4.5) graphql: 16.8.1 @@ -21069,6 +20244,7 @@ packages: /has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + requiresBuild: true dev: false /has@1.0.4: @@ -21341,7 +20517,7 @@ packages: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} dependencies: capital-case: 1.0.4 - tslib: 2.6.2 + tslib: 2.8.1 /history@4.10.1: resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} @@ -21455,6 +20631,7 @@ packages: /http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + requiresBuild: true /http-errors@1.8.1: resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} @@ -21575,6 +20752,7 @@ packages: /https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} + requiresBuild: true dependencies: agent-base: 6.0.2 debug: 4.3.7 @@ -21585,6 +20763,7 @@ packages: /https-proxy-agent@5.0.1(supports-color@9.4.0): resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} + requiresBuild: true dependencies: agent-base: 6.0.2(supports-color@9.4.0) debug: 4.3.7(supports-color@9.4.0) @@ -21621,6 +20800,11 @@ packages: engines: {node: '>=12.20.0'} dev: false + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + dev: false + /human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -21648,6 +20832,7 @@ packages: /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + requiresBuild: true dependencies: safer-buffer: 2.1.2 @@ -21756,10 +20941,12 @@ packages: /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + requiresBuild: true /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} + requiresBuild: true /indent-string@5.0.0: resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} @@ -21785,6 +20972,7 @@ packages: /inflight@1.0.6: resolution: {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. + requiresBuild: true dependencies: once: 1.4.0 wrappy: 1.0.2 @@ -21900,7 +21088,7 @@ packages: '@formatjs/ecma402-abstract': 2.0.0 '@formatjs/fast-memoize': 2.2.0 '@formatjs/icu-messageformat-parser': 2.7.8 - tslib: 2.6.2 + tslib: 2.8.1 dev: false /invariant@2.2.4: @@ -22125,6 +21313,7 @@ packages: /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + requiresBuild: true /is-fullwidth-code-point@4.0.0: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} @@ -22219,7 +21408,7 @@ packages: /is-lower-case@2.0.2: resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} dependencies: - tslib: 2.6.2 + tslib: 2.8.1 /is-map@2.0.3: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} @@ -22409,7 +21598,7 @@ packages: /is-upper-case@2.0.2: resolution: {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==} dependencies: - tslib: 2.6.2 + tslib: 2.8.1 /is-url-superb@4.0.0: resolution: {integrity: sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA==} @@ -22498,6 +21687,7 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + requiresBuild: true /isexe@3.1.1: resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} @@ -22603,7 +21793,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4 + debug: 4.3.7 istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -22673,7 +21863,7 @@ packages: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.15.13 + '@types/node': 20.11.17 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.3 @@ -22694,7 +21884,7 @@ packages: - supports-color dev: true - /jest-cli@29.7.0(@types/node@18.15.3): + /jest-cli@29.7.0(@types/node@20.11.17): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -22708,10 +21898,10 @@ packages: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@18.15.3) + create-jest: 29.7.0(@types/node@20.11.17) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@18.15.3) + jest-config: 29.7.0(@types/node@20.11.17) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -22722,7 +21912,7 @@ packages: - ts-node dev: true - /jest-config@29.7.0(@types/node@18.15.13): + /jest-config@29.7.0(@types/node@20.11.17): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -22737,47 +21927,7 @@ packages: '@babel/core': 7.24.4 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.15.13 - babel-jest: 29.7.0(@babel/core@7.24.4) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - dev: true - - /jest-config@29.7.0(@types/node@18.15.3): - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.24.4 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 18.15.3 + '@types/node': 20.11.17 babel-jest: 29.7.0(@babel/core@7.24.4) chalk: 4.1.2 ci-info: 3.9.0 @@ -22837,7 +21987,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.15.13 + '@types/node': 20.11.17 jest-mock: 29.7.0 jest-util: 29.7.0 dev: true @@ -22858,14 +22008,14 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 18.15.13 + '@types/node': 20.11.17 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 jest-regex-util: 29.6.3 jest-util: 29.7.0 jest-worker: 29.7.0 - micromatch: 4.0.5 + micromatch: 4.0.8 walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 @@ -22908,7 +22058,7 @@ packages: '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 - micromatch: 4.0.5 + micromatch: 4.0.8 pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 @@ -22919,7 +22069,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 18.15.13 + '@types/node': 20.11.17 jest-util: 29.7.0 dev: true @@ -22932,7 +22082,7 @@ packages: jest-runner: ^29.3.1 dependencies: expect-playwright: 0.8.0 - jest: 29.7.0(@types/node@18.15.3) + jest: 29.7.0(@types/node@20.11.17) jest-circus: 29.7.0 jest-environment-node: 29.7.0 jest-process-manager: 0.4.0 @@ -23015,7 +22165,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.15.13 + '@types/node': 20.11.17 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -23046,7 +22196,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.15.13 + '@types/node': 20.11.17 chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.2 @@ -23104,7 +22254,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 18.15.13 + '@types/node': 20.11.17 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -23143,7 +22293,7 @@ packages: dependencies: ansi-escapes: 6.2.1 chalk: 5.3.0 - jest: 29.7.0(@types/node@18.15.3) + jest: 29.7.0(@types/node@20.11.17) jest-regex-util: 29.6.3 jest-watcher: 29.7.0 slash: 5.1.0 @@ -23157,7 +22307,7 @@ packages: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.15.13 + '@types/node': 20.11.17 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -23169,7 +22319,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.15.13 + '@types/node': 20.11.17 merge-stream: 2.0.0 supports-color: 7.2.0 @@ -23177,7 +22327,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.15.13 + '@types/node': 20.11.17 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -23185,13 +22335,13 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.15.13 + '@types/node': 20.11.17 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest@29.7.0(@types/node@18.15.3): + /jest@29.7.0(@types/node@20.11.17): resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -23204,7 +22354,7 @@ packages: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@18.15.3) + jest-cli: 29.7.0(@types/node@20.11.17) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -23290,10 +22440,11 @@ packages: engines: {node: '>=4'} hasBin: true - /jsesc@3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + /jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} hasBin: true + dev: false /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -23473,8 +22624,8 @@ packages: /kuler@2.0.0: resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} - /ky@1.7.2: - resolution: {integrity: sha512-OzIvbHKKDpi60TnF9t7UUVAF1B4mcqc02z5PIvrm08Wyb+yOcz63GRvEuVxNT18a9E1SrNouhB4W2NNLeD7Ykg==} + /ky@1.7.4: + resolution: {integrity: sha512-zYEr/gh7uLW2l4su11bmQ2M9xLgQLjyvx58UyNM/6nuqyWFHPX5ktMjvpev3F8QWdjSsHUpnWew4PBCswBNuMQ==} engines: {node: '>=18'} dev: false @@ -23484,7 +22635,7 @@ packages: hasBin: true dependencies: commander: 10.0.1 - dotenv: 16.4.5 + dotenv: 16.4.7 winston: 3.13.0 dev: false @@ -23943,12 +23094,12 @@ packages: /lower-case-first@2.0.2: resolution: {integrity: sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==} dependencies: - tslib: 2.6.2 + tslib: 2.8.1 /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.6.2 + tslib: 2.8.1 /lowercase-keys@2.0.0: resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} @@ -23958,11 +23109,6 @@ packages: resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - /lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} - engines: {node: 14 || >=16.14} - dev: true - /lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -23986,6 +23132,7 @@ packages: /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} + requiresBuild: true dependencies: yallist: 4.0.0 @@ -24029,6 +23176,13 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + /magic-string@0.30.9: + resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} @@ -24621,7 +23775,7 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - /meros@1.3.0(@types/node@18.0.0): + /meros@1.3.0(@types/node@20.11.17): resolution: {integrity: sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==} engines: {node: '>=13'} peerDependencies: @@ -24630,21 +23784,9 @@ packages: '@types/node': optional: true dependencies: - '@types/node': 18.0.0 - - /meros@1.3.0(@types/node@18.15.13): - resolution: {integrity: sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==} - engines: {node: '>=13'} - peerDependencies: - '@types/node': '>=13' - peerDependenciesMeta: - '@types/node': - optional: true - dependencies: - '@types/node': 18.15.13 - dev: false + '@types/node': 20.11.17 - /meros@1.3.0(@types/node@22.9.0): + /meros@1.3.0(@types/node@22.7.2): resolution: {integrity: sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==} engines: {node: '>=13'} peerDependencies: @@ -24653,7 +23795,7 @@ packages: '@types/node': optional: true dependencies: - '@types/node': 22.9.0 + '@types/node': 22.7.2 dev: false /methods@1.1.2: @@ -25104,7 +24246,7 @@ packages: resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} dependencies: '@types/debug': 4.1.12 - debug: 4.3.4 + debug: 4.3.7 decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.1.0 micromark-factory-space: 1.1.0 @@ -25152,7 +24294,7 @@ packages: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: - braces: 3.0.2 + braces: 3.0.3 picomatch: 2.3.1 /micromatch@4.0.8: @@ -25263,6 +24405,7 @@ packages: /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + requiresBuild: true dependencies: brace-expansion: 1.1.11 @@ -25583,8 +24726,8 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: false - /netlify-cli@17.38.0(@types/node@18.15.13): - resolution: {integrity: sha512-y34vEexev5P4piJgbO8O/cBfLJkyce37Ks4yrOYx2YJk+j94G4ROAUQ7bE9GiZN/wZ/YRi+QNPsm6KbwF/yOcA==} + /netlify-cli@17.38.1(@types/node@20.11.17): + resolution: {integrity: sha512-9R7KYIJac0FPbgCgIG3UuBZB2QMmSBBMygAUfRzTjT6PLOYS6xVLAlmO4/upVdSu//gREimPLlKaYVNiH2lUqQ==} engines: {node: '>=18.14.0'} hasBin: true requiresBuild: true @@ -25592,13 +24735,15 @@ packages: '@bugsnag/js': 7.25.0 '@fastify/static': 7.0.4 '@netlify/blobs': 8.1.0 - '@netlify/build': 29.56.1(@opentelemetry/api@1.8.0)(@types/node@18.15.13) - '@netlify/build-info': 7.15.2 - '@netlify/config': 20.19.1 - '@netlify/edge-bundler': 12.2.3 + '@netlify/build': 29.58.0(@opentelemetry/api@1.8.0)(@types/node@20.11.17) + '@netlify/build-info': 7.17.0 + '@netlify/config': 20.21.0 + '@netlify/edge-bundler': 12.3.1 '@netlify/edge-functions': 2.11.1 + '@netlify/headers-parser': 7.3.0 '@netlify/local-functions-proxy': 1.1.1 - '@netlify/zip-it-and-ship-it': 9.41.1 + '@netlify/redirect-parser': 14.5.0 + '@netlify/zip-it-and-ship-it': 9.42.1 '@octokit/rest': 20.1.1 '@opentelemetry/api': 1.8.0 ansi-escapes: 7.0.0 @@ -25622,12 +24767,12 @@ packages: debug: 4.3.7 decache: 4.6.2 dot-prop: 9.0.0 - dotenv: 16.4.5 + dotenv: 16.4.7 env-paths: 3.0.0 envinfo: 7.14.0 etag: 1.8.1 execa: 5.1.1 - express: 4.21.1 + express: 4.21.2 express-logging: 1.1.1 extract-zip: 2.0.1 fastest-levenshtein: 1.0.16 @@ -25665,9 +24810,7 @@ packages: maxstache: 1.0.7 maxstache-stream: 1.0.4 multiparty: 4.2.3 - netlify: 13.1.21 - netlify-headers-parser: 7.1.4 - netlify-redirect-parser: 14.3.0 + netlify: 13.2.0 netlify-redirector: 0.5.0 node-fetch: 3.3.2 node-version-alias: 3.4.1 @@ -25747,38 +24890,15 @@ packages: - supports-color dev: true - /netlify-headers-parser@7.1.4: - resolution: {integrity: sha512-fTVQf8u65vS4YTP2Qt1K6Np01q3yecRKXf6VMONMlWbfl5n3M/on7pZlZISNAXHNOtnVt+6Kpwfl+RIeALC8Kg==} - engines: {node: ^14.16.0 || >=16.0.0} - dependencies: - '@iarna/toml': 2.2.5 - escape-string-regexp: 5.0.0 - fast-safe-stringify: 2.1.1 - is-plain-obj: 4.1.0 - map-obj: 5.0.2 - path-exists: 5.0.0 - dev: false - - /netlify-redirect-parser@14.3.0: - resolution: {integrity: sha512-/Oqq+SrTXk8hZqjCBy0AkWf5qAhsgcsdxQA09uYFdSSNG5w9rhh17a7dp77o5Q5XoHCahm8u4Kig/lbXkl4j2g==} - engines: {node: ^14.16.0 || >=16.0.0} - dependencies: - '@iarna/toml': 2.2.5 - fast-safe-stringify: 2.1.1 - filter-obj: 5.1.0 - is-plain-obj: 4.1.0 - path-exists: 5.0.0 - dev: false - /netlify-redirector@0.5.0: resolution: {integrity: sha512-4zdzIP+6muqPCuE8avnrgDJ6KW/2+UpHTRcTbMXCIRxiRmyrX+IZ4WSJGZdHPWF3WmQpXpy603XxecZ9iygN7w==} dev: false - /netlify@13.1.21: - resolution: {integrity: sha512-PLw+IskyiY+GZNvheR0JgBXIuwebKowY/JU1QBArnXT5Tza1cFbSRr2LJVdiAJCvtbYY73CapfJeSMp36nRjjQ==} + /netlify@13.2.0: + resolution: {integrity: sha512-kOBfGlg3EMCjMLIBYjg0geMZaqzL75gg3bAuarjtj+/66zxbhh5qF6ZNQs+Tcq2MT3oJXG3ENKVNdnuvD1i5ag==} engines: {node: ^14.16.0 || >=16.0.0} dependencies: - '@netlify/open-api': 2.35.0 + '@netlify/open-api': 2.36.0 lodash-es: 4.17.21 micro-api-client: 3.3.0 node-fetch: 3.3.2 @@ -25794,7 +24914,7 @@ packages: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 - tslib: 2.6.2 + tslib: 2.8.1 /node-abi@3.57.0: resolution: {integrity: sha512-Dp+A9JWxRaKuHP35H77I4kCKesDy5HUDEmScia2FyncMTOXASMyg251F5PhFoDA5uqBrDDffiLpbqnrZmNXW+g==} @@ -25914,8 +25034,8 @@ packages: /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - /node-releases@2.0.18: - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + /node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} dev: false /node-source-walk@6.0.2: @@ -25950,6 +25070,7 @@ packages: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} engines: {node: '>=6'} hasBin: true + requiresBuild: true dependencies: abbrev: 1.1.1 dev: false @@ -26607,7 +25728,7 @@ packages: resolution: {integrity: sha512-ua1L4OgXSBdsu1FPb7F3tYH0F48a6kxvod4pLUlGY9COeJAJQNX/sNH2IiEmsxw7lqYiAwrdHMjz1FctOsyDQg==} engines: {node: '>=18'} dependencies: - ky: 1.7.2 + ky: 1.7.4 registry-auth-token: 5.0.2 registry-url: 6.0.1 semver: 7.6.3 @@ -26638,7 +25759,7 @@ packages: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.8.1 /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} @@ -26758,7 +25879,7 @@ packages: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.8.1 /password-prompt@1.1.3: resolution: {integrity: sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==} @@ -26770,7 +25891,7 @@ packages: resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} dependencies: dot-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.8.1 /path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} @@ -26788,6 +25909,7 @@ packages: /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} + requiresBuild: true /path-is-inside@1.0.2: resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} @@ -26822,8 +25944,8 @@ packages: resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} engines: {node: '>=16 || 14 >=14.17'} dependencies: - lru-cache: 10.2.0 - minipass: 7.0.4 + lru-cache: 10.4.3 + minipass: 7.1.2 dev: true /path-scurry@1.11.1: @@ -26833,8 +25955,8 @@ packages: lru-cache: 10.4.3 minipass: 7.1.2 - /path-to-regexp@0.1.10: - resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} + /path-to-regexp@0.1.12: + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} dev: false /path-to-regexp@0.1.7: @@ -26929,8 +26051,8 @@ packages: resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} dev: false - /pino@9.5.0: - resolution: {integrity: sha512-xSEmD4pLnV54t0NOUN16yCl7RIB1c5UUOse5HSyEXtBp+FgFQyPeDutc+Q2ZO7/22vImV7VfEjH/1zV2QuqvYw==} + /pino@9.6.0: + resolution: {integrity: sha512-i85pKRCt4qMjZ1+L7sy2Ag4t1atFcdbEt76+7iRJn1g2BvsnRMGu9p8pivl9fs63M2kF/A0OacFZhTub+m/qMg==} hasBin: true dependencies: atomic-sleep: 1.0.0 @@ -26938,7 +26060,7 @@ packages: on-exit-leak-free: 2.1.2 pino-abstract-transport: 2.0.0 pino-std-serializers: 7.0.0 - process-warning: 4.0.0 + process-warning: 4.0.1 quick-format-unescaped: 4.0.4 real-require: 0.2.0 safe-stable-stringify: 2.4.3 @@ -27312,7 +26434,7 @@ packages: klona: 2.0.6 postcss: 8.4.38 semver: 7.6.3 - webpack: 5.91.0(@swc/core@1.3.102) + webpack: 5.91.0 /postcss-loader@5.3.0(postcss@8.4.49)(webpack@5.91.0): resolution: {integrity: sha512-/+Z1RAmssdiSLgIZwnJHwBMnlABPgF7giYzTN2NOfr9D21IJZ4mQC1R2miwp80zno9M4zMD/umGI8cR+2EL5zw==} @@ -28019,8 +27141,8 @@ packages: resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} dev: false - /process-warning@4.0.0: - resolution: {integrity: sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==} + /process-warning@4.0.1: + resolution: {integrity: sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==} dev: false /process@0.11.10: @@ -28444,7 +27566,7 @@ packages: dnd-core: 14.0.1 dev: false - /react-dnd@14.0.5(@types/node@18.0.0)(@types/react@18.3.3)(react@19.0.0-rc-7771d3a7-20240827): + /react-dnd@14.0.5(@types/node@20.11.17)(@types/react@18.3.3)(react@19.0.0-rc-7771d3a7-20240827): resolution: {integrity: sha512-9i1jSgbyVw0ELlEVt/NkCUkxy1hmhJOkePoCH713u75vzHGyXhPDm28oLfc2NMSBjZRM1Y+wRjHXJT3sPrTy+A==} peerDependencies: '@types/hoist-non-react-statics': '>= 3.3.1' @@ -28461,7 +27583,7 @@ packages: dependencies: '@react-dnd/invariant': 2.0.0 '@react-dnd/shallowequal': 2.0.0 - '@types/node': 18.0.0 + '@types/node': 20.11.17 '@types/react': 18.3.3 dnd-core: 14.0.1 fast-deep-equal: 3.1.3 @@ -28959,15 +28081,6 @@ packages: type-fest: 0.8.1 dev: true - /read-pkg-up@9.1.0: - resolution: {integrity: sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - find-up: 6.3.0 - read-pkg: 7.1.0 - type-fest: 2.19.0 - dev: false - /read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} @@ -29658,6 +28771,7 @@ packages: /retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} + requiresBuild: true /retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} @@ -29723,31 +28837,32 @@ packages: '@rollup/rollup-win32-x64-msvc': 4.14.1 fsevents: 2.3.3 - /rollup@4.28.0: - resolution: {integrity: sha512-G9GOrmgWHBma4YfCcX8PjH0qhXSdH8B4HDE2o4/jaxj93S4DPCIDoLcXz99eWMji4hB29UFCEd7B2gwGJDR9cQ==} + /rollup@4.32.0: + resolution: {integrity: sha512-JmrhfQR31Q4AuNBjjAX4s+a/Pu/Q8Q9iwjWBsjRH1q52SPFE2NqRMK6fUZKKnvKO6id+h7JIRf0oYsph53eATg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.28.0 - '@rollup/rollup-android-arm64': 4.28.0 - '@rollup/rollup-darwin-arm64': 4.28.0 - '@rollup/rollup-darwin-x64': 4.28.0 - '@rollup/rollup-freebsd-arm64': 4.28.0 - '@rollup/rollup-freebsd-x64': 4.28.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.28.0 - '@rollup/rollup-linux-arm-musleabihf': 4.28.0 - '@rollup/rollup-linux-arm64-gnu': 4.28.0 - '@rollup/rollup-linux-arm64-musl': 4.28.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.28.0 - '@rollup/rollup-linux-riscv64-gnu': 4.28.0 - '@rollup/rollup-linux-s390x-gnu': 4.28.0 - '@rollup/rollup-linux-x64-gnu': 4.28.0 - '@rollup/rollup-linux-x64-musl': 4.28.0 - '@rollup/rollup-win32-arm64-msvc': 4.28.0 - '@rollup/rollup-win32-ia32-msvc': 4.28.0 - '@rollup/rollup-win32-x64-msvc': 4.28.0 + '@rollup/rollup-android-arm-eabi': 4.32.0 + '@rollup/rollup-android-arm64': 4.32.0 + '@rollup/rollup-darwin-arm64': 4.32.0 + '@rollup/rollup-darwin-x64': 4.32.0 + '@rollup/rollup-freebsd-arm64': 4.32.0 + '@rollup/rollup-freebsd-x64': 4.32.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.32.0 + '@rollup/rollup-linux-arm-musleabihf': 4.32.0 + '@rollup/rollup-linux-arm64-gnu': 4.32.0 + '@rollup/rollup-linux-arm64-musl': 4.32.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.32.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.32.0 + '@rollup/rollup-linux-riscv64-gnu': 4.32.0 + '@rollup/rollup-linux-s390x-gnu': 4.32.0 + '@rollup/rollup-linux-x64-gnu': 4.32.0 + '@rollup/rollup-linux-x64-musl': 4.32.0 + '@rollup/rollup-win32-arm64-msvc': 4.32.0 + '@rollup/rollup-win32-ia32-msvc': 4.32.0 + '@rollup/rollup-win32-x64-msvc': 4.32.0 fsevents: 2.3.3 dev: false @@ -29982,7 +29097,7 @@ packages: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.8.1 upper-case-first: 2.0.2 /sequelize-pool@7.1.0: @@ -30120,6 +29235,7 @@ packages: /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + requiresBuild: true /set-cookie-parser@2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} @@ -30237,6 +29353,7 @@ packages: /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + requiresBuild: true /signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} @@ -30362,7 +29479,7 @@ packages: dependencies: '@juggle/resize-observer': 3.4.0 '@types/is-hotkey': 0.1.10 - '@types/lodash': 4.17.13 + '@types/lodash': 4.17.14 direction: 1.0.4 is-hotkey: 0.1.8 is-plain-object: 5.0.0 @@ -30440,7 +29557,7 @@ packages: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} dependencies: dot-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.8.1 /socket.io-adapter@2.5.4: resolution: {integrity: sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg==} @@ -30677,7 +29794,7 @@ packages: /sponge-case@1.0.1: resolution: {integrity: sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==} dependencies: - tslib: 2.6.2 + tslib: 2.8.1 /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -30878,6 +29995,7 @@ packages: /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} + requiresBuild: true dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 @@ -30954,6 +30072,7 @@ packages: /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + requiresBuild: true dependencies: safe-buffer: 5.2.1 @@ -31007,6 +30126,7 @@ packages: /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} + requiresBuild: true dependencies: ansi-regex: 5.0.1 @@ -31230,7 +30350,7 @@ packages: /swap-case@2.0.2: resolution: {integrity: sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==} dependencies: - tslib: 2.6.2 + tslib: 2.8.1 /swr@2.2.4(react@19.0.0-rc-7771d3a7-20240827): resolution: {integrity: sha512-njiZ/4RiIhoOlAaLYDqwz5qH/KZXVilRLvomrx83HjzCWTfa+InyfAjv05PSFxnmLzZkNO9ZfvgoqzAaEI4sGQ==} @@ -31471,6 +30591,7 @@ packages: serialize-javascript: 6.0.2 terser: 5.30.3 webpack: 5.91.0(@swc/core@1.3.102) + dev: true /terser-webpack-plugin@5.3.10(webpack@5.91.0): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} @@ -31642,7 +30763,7 @@ packages: /title-case@3.0.3: resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} dependencies: - tslib: 2.6.2 + tslib: 2.8.1 /tmp-promise@3.0.3: resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} @@ -31823,7 +30944,7 @@ packages: resolution: {integrity: sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==} dev: true - /ts-node@10.9.2(@types/node@18.15.13)(typescript@5.4.5): + /ts-node@10.9.2(@types/node@20.11.17)(typescript@5.4.5): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -31842,7 +30963,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 18.15.13 + '@types/node': 20.11.17 acorn: 8.14.0 acorn-walk: 8.3.2 arg: 4.1.3 @@ -32072,8 +31193,8 @@ packages: engines: {node: '>=16'} dev: false - /type-fest@4.30.0: - resolution: {integrity: sha512-G6zXWS1dLj6eagy6sVhOMQiLtJdxQBHIA9Z6HFUNLOlr6MFOgzV8wvmidtPONfPtEUv0uZsy77XJNzTAfwPDaA==} + /type-fest@4.33.0: + resolution: {integrity: sha512-s6zVrxuyKbbAsSAD5ZPTB77q4YIdRctkTbJ2/Dqlinwz+8ooH2gd+YA7VA6Pa93KML9GockVvoxjZ2vHP+mu8g==} engines: {node: '>=16'} dev: false @@ -32213,7 +31334,6 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - dev: true /undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} @@ -32585,13 +31705,13 @@ packages: escalade: 3.1.2 picocolors: 1.0.0 - /update-browserslist-db@1.1.1(browserslist@4.24.2): - resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + /update-browserslist-db@1.1.2(browserslist@4.24.4): + resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.24.2 + browserslist: 4.24.4 escalade: 3.2.0 picocolors: 1.1.1 dev: false @@ -32622,12 +31742,12 @@ packages: /upper-case-first@2.0.2: resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} dependencies: - tslib: 2.6.2 + tslib: 2.8.1 /upper-case@2.0.2: resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} dependencies: - tslib: 2.6.2 + tslib: 2.8.1 /uqr@0.1.2: resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} @@ -32727,6 +31847,7 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + requiresBuild: true /util@0.12.5: resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} @@ -32881,7 +32002,7 @@ packages: - rollup dev: true - /vite-node@0.34.6(@types/node@18.15.13): + /vite-node@0.34.6(@types/node@20.11.17): resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -32892,7 +32013,7 @@ packages: mlly: 1.6.1 pathe: 1.1.2 picocolors: 1.1.1 - vite: 5.2.8(@types/node@18.15.13) + vite: 5.2.8(@types/node@20.11.17) transitivePeerDependencies: - '@types/node' - less @@ -32905,28 +32026,7 @@ packages: dev: false optional: true - /vite-node@1.1.1(@types/node@18.0.0): - resolution: {integrity: sha512-2bGE5w4jvym5v8llF6Gu1oBrmImoNSs4WmRVcavnG2me6+8UQntTqLiAMFyiAobp+ZXhj5ZFhI7SmLiFr/jrow==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - dependencies: - cac: 6.7.14 - debug: 4.3.7 - pathe: 1.1.2 - picocolors: 1.1.1 - vite: 5.2.8(@types/node@18.0.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vite-node@1.1.1(@types/node@18.15.13): + /vite-node@1.1.1(@types/node@20.11.17): resolution: {integrity: sha512-2bGE5w4jvym5v8llF6Gu1oBrmImoNSs4WmRVcavnG2me6+8UQntTqLiAMFyiAobp+ZXhj5ZFhI7SmLiFr/jrow==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -32935,28 +32035,7 @@ packages: debug: 4.3.7 pathe: 1.1.2 picocolors: 1.1.1 - vite: 5.2.8(@types/node@18.15.13) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vite-node@1.1.1(@types/node@18.15.3): - resolution: {integrity: sha512-2bGE5w4jvym5v8llF6Gu1oBrmImoNSs4WmRVcavnG2me6+8UQntTqLiAMFyiAobp+ZXhj5ZFhI7SmLiFr/jrow==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - dependencies: - cac: 6.7.14 - debug: 4.3.7 - pathe: 1.1.2 - picocolors: 1.1.1 - vite: 5.2.8(@types/node@18.15.3) + vite: 5.2.8(@types/node@20.11.17) transitivePeerDependencies: - '@types/node' - less @@ -32979,7 +32058,7 @@ packages: - supports-color dev: true - /vite@5.0.10(@types/node@18.0.0): + /vite@5.0.10(@types/node@20.11.17): resolution: {integrity: sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -33007,43 +32086,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.0.0 - esbuild: 0.19.12 - postcss: 8.4.32 - rollup: 4.14.1 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /vite@5.0.10(@types/node@18.15.3): - resolution: {integrity: sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 18.15.3 + '@types/node': 20.11.17 esbuild: 0.19.12 postcss: 8.4.32 rollup: 4.14.1 @@ -33051,113 +32094,6 @@ packages: fsevents: 2.3.3 dev: true - /vite@5.2.8(@types/node@18.0.0): - resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 18.0.0 - esbuild: 0.20.2 - postcss: 8.4.38 - rollup: 4.14.1 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /vite@5.2.8(@types/node@18.15.13): - resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 18.15.13 - esbuild: 0.20.2 - postcss: 8.4.38 - rollup: 4.14.1 - optionalDependencies: - fsevents: 2.3.3 - - /vite@5.2.8(@types/node@18.15.3): - resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 18.15.3 - esbuild: 0.20.2 - postcss: 8.4.38 - rollup: 4.14.1 - optionalDependencies: - fsevents: 2.3.3 - dev: true - /vite@5.2.8(@types/node@20.11.17): resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -33192,9 +32128,8 @@ packages: rollup: 4.14.1 optionalDependencies: fsevents: 2.3.3 - dev: true - /vite@5.4.2(@types/node@18.15.13): + /vite@5.4.2(@types/node@20.11.17): resolution: {integrity: sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -33225,10 +32160,10 @@ packages: terser: optional: true dependencies: - '@types/node': 18.15.13 + '@types/node': 20.11.17 esbuild: 0.21.5 postcss: 8.4.49 - rollup: 4.28.0 + rollup: 4.32.0 optionalDependencies: fsevents: 2.3.3 dev: false @@ -33267,7 +32202,7 @@ packages: dependencies: '@types/chai': 4.3.14 '@types/chai-subset': 1.3.5 - '@types/node': 18.15.13 + '@types/node': 20.11.17 '@vitest/expect': 0.34.6 '@vitest/runner': 0.34.6 '@vitest/snapshot': 0.34.6 @@ -33286,8 +32221,8 @@ packages: strip-literal: 1.3.0 tinybench: 2.6.0 tinypool: 0.7.0 - vite: 5.2.8(@types/node@18.15.13) - vite-node: 0.34.6(@types/node@18.15.13) + vite: 5.2.8(@types/node@20.11.17) + vite-node: 0.34.6(@types/node@20.11.17) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -33300,7 +32235,7 @@ packages: dev: false optional: true - /vitest@1.1.1(@types/node@18.0.0): + /vitest@1.1.1(@types/node@20.11.17): resolution: {integrity: sha512-Ry2qs4UOu/KjpXVfOCfQkTnwSXYGrqTbBZxw6reIYEFjSy1QUARRg5pxiI5BEXy+kBVntxUYNMlq4Co+2vD3fQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -33325,7 +32260,7 @@ packages: jsdom: optional: true dependencies: - '@types/node': 18.0.0 + '@types/node': 20.11.17 '@vitest/expect': 1.1.1 '@vitest/runner': 1.1.1 '@vitest/snapshot': 1.1.1 @@ -33344,8 +32279,8 @@ packages: strip-literal: 1.3.0 tinybench: 2.6.0 tinypool: 0.8.3 - vite: 5.2.8(@types/node@18.0.0) - vite-node: 1.1.1(@types/node@18.0.0) + vite: 5.2.8(@types/node@20.11.17) + vite-node: 1.1.1(@types/node@20.11.17) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -33357,7 +32292,7 @@ packages: - terser dev: true - /vitest@1.1.1(@types/node@18.0.0)(@vitest/ui@1.1.1): + /vitest@1.1.1(@types/node@20.11.17)(@vitest/ui@1.1.1): resolution: {integrity: sha512-Ry2qs4UOu/KjpXVfOCfQkTnwSXYGrqTbBZxw6reIYEFjSy1QUARRg5pxiI5BEXy+kBVntxUYNMlq4Co+2vD3fQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -33382,7 +32317,7 @@ packages: jsdom: optional: true dependencies: - '@types/node': 18.0.0 + '@types/node': 20.11.17 '@vitest/expect': 1.1.1 '@vitest/runner': 1.1.1 '@vitest/snapshot': 1.1.1 @@ -33392,133 +32327,18 @@ packages: acorn-walk: 8.3.2 cac: 6.7.14 chai: 4.4.1 - debug: 4.3.7 - execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.13 - pathe: 1.1.2 - picocolors: 1.1.1 - std-env: 3.7.0 - strip-literal: 1.3.0 - tinybench: 2.6.0 - tinypool: 0.8.3 - vite: 5.2.8(@types/node@18.0.0) - vite-node: 1.1.1(@types/node@18.0.0) - why-is-node-running: 2.2.2 - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vitest@1.1.1(@types/node@18.15.13): - resolution: {integrity: sha512-Ry2qs4UOu/KjpXVfOCfQkTnwSXYGrqTbBZxw6reIYEFjSy1QUARRg5pxiI5BEXy+kBVntxUYNMlq4Co+2vD3fQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': ^1.0.0 - '@vitest/ui': ^1.0.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - dependencies: - '@types/node': 18.15.13 - '@vitest/expect': 1.1.1 - '@vitest/runner': 1.1.1 - '@vitest/snapshot': 1.1.1 - '@vitest/spy': 1.1.1 - '@vitest/utils': 1.1.1 - acorn-walk: 8.3.2 - cac: 6.7.14 - chai: 4.4.1 - debug: 4.3.7 - execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.13 - pathe: 1.1.2 - picocolors: 1.1.1 - std-env: 3.7.0 - strip-literal: 1.3.0 - tinybench: 2.6.0 - tinypool: 0.8.3 - vite: 5.2.8(@types/node@18.15.13) - vite-node: 1.1.1(@types/node@18.15.13) - why-is-node-running: 2.2.2 - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vitest@1.1.1(@types/node@18.15.13)(happy-dom@12.10.3): - resolution: {integrity: sha512-Ry2qs4UOu/KjpXVfOCfQkTnwSXYGrqTbBZxw6reIYEFjSy1QUARRg5pxiI5BEXy+kBVntxUYNMlq4Co+2vD3fQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': ^1.0.0 - '@vitest/ui': ^1.0.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - dependencies: - '@types/node': 18.15.13 - '@vitest/expect': 1.1.1 - '@vitest/runner': 1.1.1 - '@vitest/snapshot': 1.1.1 - '@vitest/spy': 1.1.1 - '@vitest/utils': 1.1.1 - acorn-walk: 8.3.2 - cac: 6.7.14 - chai: 4.4.1 - debug: 4.3.7 + debug: 4.3.4 execa: 8.0.1 - happy-dom: 12.10.3 local-pkg: 0.5.0 - magic-string: 0.30.13 + magic-string: 0.30.9 pathe: 1.1.2 - picocolors: 1.1.1 + picocolors: 1.0.0 std-env: 3.7.0 strip-literal: 1.3.0 tinybench: 2.6.0 tinypool: 0.8.3 - vite: 5.2.8(@types/node@18.15.13) - vite-node: 1.1.1(@types/node@18.15.13) + vite: 5.2.8(@types/node@20.11.17) + vite-node: 1.1.1(@types/node@20.11.17) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -33530,7 +32350,7 @@ packages: - terser dev: true - /vitest@1.1.1(@types/node@18.15.3)(happy-dom@12.10.3): + /vitest@1.1.1(@types/node@20.11.17)(happy-dom@12.10.3): resolution: {integrity: sha512-Ry2qs4UOu/KjpXVfOCfQkTnwSXYGrqTbBZxw6reIYEFjSy1QUARRg5pxiI5BEXy+kBVntxUYNMlq4Co+2vD3fQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -33555,7 +32375,7 @@ packages: jsdom: optional: true dependencies: - '@types/node': 18.15.3 + '@types/node': 20.11.17 '@vitest/expect': 1.1.1 '@vitest/runner': 1.1.1 '@vitest/snapshot': 1.1.1 @@ -33564,19 +32384,19 @@ packages: acorn-walk: 8.3.2 cac: 6.7.14 chai: 4.4.1 - debug: 4.3.7 + debug: 4.3.4 execa: 8.0.1 happy-dom: 12.10.3 local-pkg: 0.5.0 - magic-string: 0.30.13 + magic-string: 0.30.9 pathe: 1.1.2 - picocolors: 1.1.1 + picocolors: 1.0.0 std-env: 3.7.0 strip-literal: 1.3.0 tinybench: 2.6.0 tinypool: 0.8.3 - vite: 5.2.8(@types/node@18.15.3) - vite-node: 1.1.1(@types/node@18.15.3) + vite: 5.2.8(@types/node@20.11.17) + vite-node: 1.1.1(@types/node@20.11.17) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -33639,7 +32459,7 @@ packages: - supports-color dev: false - /waku@0.21.1(@types/node@18.15.13)(react-dom@19.0.0-rc-7771d3a7-20240827)(react-server-dom-webpack@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827): + /waku@0.21.1(@types/node@20.11.17)(react-dom@19.0.0-rc-7771d3a7-20240827)(react-server-dom-webpack@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827): resolution: {integrity: sha512-9UUpkKLL1enyaXGgVCp47/2dwU7fAOh2LVJ2XyiaMtJuwqoIqzasTThU1esaATOYM+SDBRO+wIBeJT12BAEZSQ==} engines: {node: ^20.8.0 || ^18.17.0} hasBin: true @@ -33657,7 +32477,7 @@ packages: react-dom: 19.0.0-rc-7771d3a7-20240827(react@19.0.0-rc-7771d3a7-20240827) react-server-dom-webpack: 19.0.0-rc-7771d3a7-20240827(react-dom@19.0.0-rc-7771d3a7-20240827)(react@19.0.0-rc-7771d3a7-20240827)(webpack@5.91.0) rsc-html-stream: 0.0.3 - vite: 5.4.2(@types/node@18.15.13) + vite: 5.4.2(@types/node@20.11.17) transitivePeerDependencies: - '@swc/helpers' - '@types/node' @@ -33800,8 +32620,8 @@ packages: '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/wasm-edit': 1.12.1 '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.14.0 - acorn-import-assertions: 1.9.0(acorn@8.14.0) + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) browserslist: 4.23.0 chrome-trace-event: 1.0.3 enhanced-resolve: 5.16.0 @@ -33839,8 +32659,8 @@ packages: '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/wasm-edit': 1.12.1 '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.14.0 - acorn-import-assertions: 1.9.0(acorn@8.14.0) + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) browserslist: 4.23.0 chrome-trace-event: 1.0.3 enhanced-resolve: 5.16.0 @@ -33862,6 +32682,7 @@ packages: - '@swc/core' - esbuild - uglify-js + dev: true /website-scraper@5.3.1: resolution: {integrity: sha512-gogqPXD2gVsxoyd2yRiympw3rA5GuEpD1CaDEJ/J8zzanx7hkbTtneoO1SGs436PpLbWVcUge+6APGLhzsuZPA==} @@ -33869,7 +32690,7 @@ packages: dependencies: cheerio: 1.0.0-rc.12 css-url-parser: 1.1.3 - debug: 4.3.4 + debug: 4.3.7 fs-extra: 10.1.0 got: 12.6.1 normalize-url: 7.2.0 @@ -33922,8 +32743,8 @@ packages: webidl-conversions: 4.0.2 dev: true - /when-exit@2.1.3: - resolution: {integrity: sha512-uVieSTccFIr/SFQdFWN/fFaQYmV37OKtuaGphMAzi4DmmUlrvRBJW5WSLkHyjNQY/ePJMz3LoiX9R3yy1Su6Hw==} + /when-exit@2.1.4: + resolution: {integrity: sha512-4rnvd3A1t16PWzrBUcSDZqcAmsUIy4minDXT/CZ8F2mVDgd65i4Aalimgz1aQkRGU0iH5eT5+6Rx2TK8o443Pg==} dev: false /which-boxed-primitive@1.0.2: @@ -33984,6 +32805,7 @@ packages: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true + requiresBuild: true dependencies: isexe: 2.0.0 @@ -33997,6 +32819,7 @@ packages: /wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + requiresBuild: true dependencies: string-width: 4.2.3 dev: false @@ -34057,7 +32880,7 @@ packages: /wkx@0.5.0: resolution: {integrity: sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==} dependencies: - '@types/node': 18.15.13 + '@types/node': 20.11.17 dev: false /word-wrap@1.2.5: @@ -34112,6 +32935,7 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + requiresBuild: true /write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} diff --git a/tests/e2e-basic/.gitignore b/tests/e2e-basic/.gitignore new file mode 100644 index 000000000..967ffade7 --- /dev/null +++ b/tests/e2e-basic/.gitignore @@ -0,0 +1,2 @@ +/test-results +/playwright-report diff --git a/tests/e2e-basic/README.md b/tests/e2e-basic/README.md new file mode 100644 index 000000000..92ba1a660 --- /dev/null +++ b/tests/e2e-basic/README.md @@ -0,0 +1,13 @@ +# Basic end-to-end tests + +This package is preserved in the cloned projects. It performs very basic e2e +tests ensuring that all apps work. + +It is recommended to + +- Have just one test per app +- Keep tests minimal +- Make tests project-agnostic +- Not add new tests unless + - It's needed for a new app + - It's a test for a critical feature diff --git a/tests/e2e-basic/eslint.config.mjs b/tests/e2e-basic/eslint.config.mjs new file mode 100644 index 000000000..fba5a4b5b --- /dev/null +++ b/tests/e2e-basic/eslint.config.mjs @@ -0,0 +1,8 @@ +import { base, defineConfig } from '@custom/eslint-config'; + +export default defineConfig([ + ...base, + { + ignores: ['playwright-report/**', 'test-results/**'], + }, +]); diff --git a/tests/e2e-basic/package.json b/tests/e2e-basic/package.json new file mode 100644 index 000000000..12d192040 --- /dev/null +++ b/tests/e2e-basic/package.json @@ -0,0 +1,22 @@ +{ + "name": "@custom-tests/e2e-basic", + "version": "1.0.0", + "description": "A very basic e2e test suite.", + "type": "module", + "scripts": { + "test:static": "tsc --noEmit && eslint . --quiet", + "test:integration": "playwright install chromium && playwright test", + "test:headed": "playwright install chromium && playwright test --headed" + }, + "devDependencies": { + "@custom/cms": "workspace:*", + "@custom/decap": "workspace:*", + "@custom/eslint-config": "workspace:*", + "@custom/preview": "workspace:*", + "@custom/publisher": "workspace:*", + "@custom/website": "workspace:*", + "@playwright/test": "^1.44.1", + "@types/node": "^20", + "typescript": "^5.3.3" + } +} diff --git a/tests/e2e-basic/playwright.config.ts b/tests/e2e-basic/playwright.config.ts new file mode 100644 index 000000000..0b68a4ee7 --- /dev/null +++ b/tests/e2e-basic/playwright.config.ts @@ -0,0 +1,43 @@ +import { defineConfig, devices } from '@playwright/test'; + +export default defineConfig({ + retries: process.env.CI ? 2 : 0, + workers: 1, + reporter: 'html', + use: { + trace: process.env.CI ? 'retain-on-failure' : 'on', + actionTimeout: 10_000, + }, + webServer: [ + { + command: 'pnpm run --filter "@custom/cms" dev >> /tmp/cms.log 2>&1', + port: 8888, + reuseExistingServer: !process.env.CI, + }, + { + command: + 'pnpm run --filter "@custom/publisher" dev >> /tmp/website.log 2>&1', + port: 8000, + reuseExistingServer: !process.env.CI, + }, + { + command: + 'pnpm run --filter "@custom/preview" start >> /tmp/preview.log 2>&1', + port: 8001, + reuseExistingServer: !process.env.CI, + }, + ], + testDir: './specs', + projects: [ + { + name: 'setup', + testMatch: /setup\.ts/, + }, + { + name: 'chromium', + testMatch: /\.*.spec\.ts/, + use: { ...devices['Desktop Chrome'] }, + dependencies: ['setup'], + }, + ], +}); diff --git a/tests/e2e-basic/specs/cms.spec.ts b/tests/e2e-basic/specs/cms.spec.ts new file mode 100644 index 000000000..89a93206a --- /dev/null +++ b/tests/e2e-basic/specs/cms.spec.ts @@ -0,0 +1,6 @@ +import { expect, test } from '@playwright/test'; + +test('cms', async ({ page }) => { + await page.goto('http://127.0.0.1:8888'); + await expect(page.getByRole('button', { name: 'Log in' })).toBeVisible(); +}); diff --git a/tests/e2e-basic/specs/decap.spec.ts b/tests/e2e-basic/specs/decap.spec.ts new file mode 100644 index 000000000..b023c1743 --- /dev/null +++ b/tests/e2e-basic/specs/decap.spec.ts @@ -0,0 +1,10 @@ +import { expect, test } from '@playwright/test'; + +// TODO: Re-enable with SLB-470 +test.fixme('decap', async ({ page }) => { + await page.goto('http://127.0.0.1:8000/admin'); + await page.getByRole('button', { name: 'Login' }).click(); + await expect( + page.getByRole('heading', { name: 'Collections' }), + ).toBeVisible(); +}); diff --git a/tests/e2e-basic/specs/preview.spec.ts b/tests/e2e-basic/specs/preview.spec.ts new file mode 100644 index 000000000..466694257 --- /dev/null +++ b/tests/e2e-basic/specs/preview.spec.ts @@ -0,0 +1,17 @@ +import { expect, test } from '@playwright/test'; + +test('preview', async ({ page }) => { + // Login. + await page.goto('http://127.0.0.1:8888'); + await page.getByLabel('Username').fill('admin'); + await page.getByLabel('Password').fill('admin'); + await page.getByRole('button', { name: 'Log in' }).click(); + // Check the Imprint page preview. + await page.goto('http://127.0.0.1:8888/imprint'); + await expect( + page + .frameLocator('iframe') + .first() + .getByRole('heading', { name: 'Imprint', exact: true }), + ).toBeVisible(); +}); diff --git a/tests/e2e-basic/specs/publisher.spec.ts b/tests/e2e-basic/specs/publisher.spec.ts new file mode 100644 index 000000000..ebffa943f --- /dev/null +++ b/tests/e2e-basic/specs/publisher.spec.ts @@ -0,0 +1,5 @@ +import { test } from '@playwright/test'; + +test('publisher', async () => { + // Publisher is checked in the setup.ts. +}); diff --git a/tests/e2e-basic/specs/setup.ts b/tests/e2e-basic/specs/setup.ts new file mode 100644 index 000000000..1a59b5438 --- /dev/null +++ b/tests/e2e-basic/specs/setup.ts @@ -0,0 +1,35 @@ +import { expect, test } from '@playwright/test'; + +const attemptDelay = 1000 * 5; +const netlifyBootTimeout = 1000 * 60 * 2; +const websiteBuildTimeout = 1000 * 60 * 2; + +test.setTimeout(websiteBuildTimeout + netlifyBootTimeout + 10_000); + +test('setup', async ({ page }) => { + // Wait for Publisher to build the website. + await page.goto('http://127.0.0.1:8000/___status'); + await expect(page.getByText('Status: Ready')).toBeVisible({ + timeout: websiteBuildTimeout, + }); + + // Wait for Netlify to boot. + // When "netlify dev" starts, the port check reports it's working, yet the + // first page load takes a long time - Netlify downloads Deno and packages + // (sometimes at a very slow speed). Nothing really works until this is done. + // This might fail tests. So we try to load the website frontpage first. + let success = false; + const timeoutId = setTimeout(() => { + throw new Error( + `"netlify dev" failed to start in ${netlifyBootTimeout}ms. Check /tmp/website.log for details.`, + ); + }, netlifyBootTimeout); + while (!success) { + try { + await page.goto('http://127.0.0.1:8000', { timeout: attemptDelay }); + clearTimeout(timeoutId); + success = true; + // eslint-disable-next-line @typescript-eslint/no-unused-vars,no-empty + } catch (e) {} + } +}); diff --git a/tests/e2e-basic/specs/website.spec.ts b/tests/e2e-basic/specs/website.spec.ts new file mode 100644 index 000000000..707a5d600 --- /dev/null +++ b/tests/e2e-basic/specs/website.spec.ts @@ -0,0 +1,7 @@ +import { expect, test } from '@playwright/test'; + +test('website', async ({ page }) => { + await page.goto('http://127.0.0.1:8000'); + await expect(page.locator('h1')).toBeVisible(); + await expect(page.getByText(/error/i)).not.toBeVisible(); +}); diff --git a/tests/e2e-basic/tsconfig.json b/tests/e2e-basic/tsconfig.json new file mode 100644 index 000000000..c13ef64e3 --- /dev/null +++ b/tests/e2e-basic/tsconfig.json @@ -0,0 +1,6 @@ +{ + "compilerOptions": { + "strict": true, + "skipLibCheck": true + } +} diff --git a/tests/e2e-basic/turbo.json b/tests/e2e-basic/turbo.json new file mode 100644 index 000000000..d70f91ee2 --- /dev/null +++ b/tests/e2e-basic/turbo.json @@ -0,0 +1,12 @@ +{ + "extends": ["//"], + "tasks": { + "test:static": { + "inputs": ["specs/**", "playwright.config.ts"] + }, + "test:integration": { + "dependsOn": ["^prep"], + "inputs": ["specs/**", "playwright.config.ts"] + } + } +} diff --git a/tests/e2e/README.md b/tests/e2e/README.md new file mode 100644 index 000000000..3b2411feb --- /dev/null +++ b/tests/e2e/README.md @@ -0,0 +1,4 @@ +# End-to-end tests for the template + +This package is deleted in the cloned projects. It is used to test the template +itself, not the cloned projects. diff --git a/tests/e2e/package.json b/tests/e2e/package.json index 90d9ccae2..a3e43d8bd 100644 --- a/tests/e2e/package.json +++ b/tests/e2e/package.json @@ -1,27 +1,20 @@ { "name": "@custom-tests/e2e", - "version": "1.0.0", - "description": "", - "keywords": [], - "author": "", - "license": "ISC", "type": "module", "scripts": { "test:static": "tsc --noEmit && eslint . --quiet", - "test:integration:drupal": "playwright install chromium && playwright test --config playwright.config.drupal.ts", - "test:integration:decap": "playwright install chromium && playwright test --config playwright.config.decap.ts", - "test:headed:drupal": "playwright install chromium && playwright test --headed --config playwright.config.drupal.ts", - "test:headed:decap": "playwright install chromium && playwright test --headed --config playwright.config.decap.ts", - "dev:decap": "playwright install chromium && playwright test --ui --config playwright.config.decap.ts", - "dev:drupal": "playwright install chromium && playwright test --ui --config playwright.config.drupal.ts", - "webform-snapshots": "playwright install chromium && playwright test --config playwright.config.webforms.ts", - "webform-snapshots:headed": "playwright install chromium && playwright test --config playwright.config.webforms.ts --headed" + "test:integration": "playwright install chromium && playwright test", + "test:headed": "playwright install chromium && playwright test --headed", + "dev": "playwright install chromium && playwright test --ui" }, "devDependencies": { - "@amazeelabs/save-webpage": "^1.1.1", + "@custom/cms": "workspace:*", + "@custom/decap": "workspace:*", "@custom/eslint-config": "workspace:*", + "@custom/preview": "workspace:*", + "@custom/website": "workspace:*", "@playwright/test": "^1.44.1", - "@types/node": "^18", + "@types/node": "^20", "typescript": "^5.3.3" } } diff --git a/tests/e2e/playwright.config.decap.ts b/tests/e2e/playwright.config.decap.ts deleted file mode 100644 index 5b9564a8f..000000000 --- a/tests/e2e/playwright.config.decap.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { defineConfig, devices } from '@playwright/test'; - -import defaults from './playwright.config.default'; - -export default defineConfig({ - ...defaults, - testDir: './specs/decap', - webServer: [ - { - command: - 'pnpm run --filter "@custom/website" serve >> /tmp/website.log 2>&1', - port: 8000, - reuseExistingServer: !process.env.CI, - }, - ], - projects: [ - { - name: 'setup', - testMatch: /decap\/setup\.ts/, - }, - { - name: 'chromium', - testMatch: /\.*.spec\.ts/, - use: { ...devices['Desktop Chrome'] }, - dependencies: ['setup'], - }, - ], -}); diff --git a/tests/e2e/playwright.config.default.ts b/tests/e2e/playwright.config.default.ts deleted file mode 100644 index 11b79ecae..000000000 --- a/tests/e2e/playwright.config.default.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineConfig } from '@playwright/test'; - -export default defineConfig({ - fullyParallel: true, - retries: process.env.CI ? 2 : 0, - workers: 1, - reporter: 'html', - use: { - trace: process.env.CI ? 'retain-on-failure' : 'on', - actionTimeout: 10_000, - }, -}); diff --git a/tests/e2e/playwright.config.drupal.ts b/tests/e2e/playwright.config.ts similarity index 76% rename from tests/e2e/playwright.config.drupal.ts rename to tests/e2e/playwright.config.ts index 54027f2fb..ee6496aac 100644 --- a/tests/e2e/playwright.config.drupal.ts +++ b/tests/e2e/playwright.config.ts @@ -1,10 +1,15 @@ import { defineConfig, devices } from '@playwright/test'; -import defaults from './playwright.config.default'; - export default defineConfig({ - ...defaults, - testDir: './specs/drupal', + fullyParallel: true, + retries: process.env.CI ? 2 : 0, + workers: 1, + reporter: 'html', + use: { + trace: process.env.CI ? 'retain-on-failure' : 'on', + actionTimeout: 10_000, + }, + testDir: './specs', webServer: [ { command: 'pnpm run --filter "@custom/cms" start >> /tmp/cms.log 2>&1', @@ -27,7 +32,7 @@ export default defineConfig({ projects: [ { name: 'setup', - testMatch: /drupal\/setup\.ts/, + testMatch: /setup\.ts/, }, { name: 'chromium', diff --git a/tests/e2e/specs/decap/admin.spec.ts b/tests/e2e/specs/decap/admin.spec.ts deleted file mode 100644 index df5118eef..000000000 --- a/tests/e2e/specs/decap/admin.spec.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { expect, test } from '@playwright/test'; - -import { websiteUrl } from '../../helpers/url'; - -test('decap admin is available', async ({ page }) => { - const response = await page.goto(websiteUrl('/admin')); - expect(response?.status()).toBe(200); -}); diff --git a/tests/e2e/specs/decap/setup.ts b/tests/e2e/specs/decap/setup.ts deleted file mode 100644 index 006d1290f..000000000 --- a/tests/e2e/specs/decap/setup.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { test as setup } from '@playwright/test'; - -import { - netlifyBootTimeout, - waitForNetlifyBoot, -} from '../../helpers/wait-for-netlify-boot'; - -setup.setTimeout(netlifyBootTimeout + 10_000); - -setup('setup', async ({ page }) => { - await waitForNetlifyBoot(page); -}); diff --git a/tests/e2e/specs/drupal/blocks.spec.ts b/tests/e2e/specs/drupal/blocks.spec.ts index 9e8a79e38..db77ab751 100644 --- a/tests/e2e/specs/drupal/blocks.spec.ts +++ b/tests/e2e/specs/drupal/blocks.spec.ts @@ -1,80 +1,295 @@ -import { expect, test } from '@playwright/test'; +import { expect, Page, test } from '@playwright/test'; import { websiteUrl } from '../../helpers/url'; -test('All blocks are rendered', async ({ page }) => { - await page.goto(websiteUrl('/en/blocks-complete')); - - // Hero - await expect( - page.locator('img[data-test-id=hero-image][alt="A beautiful landscape."]'), - ).toHaveCount(2); +const validateTileAndSubtitle = async (page: Page, title: string) => { + const content = page.getByRole('main'); await expect( - page.locator('h1:text("All kinds of blocks with maximum data")'), - ).toHaveCount(1); - await expect(page.locator('text="Lead text"')).toHaveCount(1); + content.getByRole('heading', { + name: title, + level: 1, + }), + ).toBeVisible(); + await expect(content.getByText(title).last()).toBeVisible(); +}; - // Paragraph - await expect( - page.locator('p:text("A standalone paragraph with markup and link")'), - ).toHaveCount(1); - await expect( - page.locator('a:text("link")[href="/en/architecture"]'), - ).toHaveCount(1); +test.describe('Testing All Blocks', () => { + test('Accordion', async ({ page }) => { + await page.goto(websiteUrl('/en/block-accordion')); + await validateTileAndSubtitle(page, 'Block: Accordion'); - // Horizontal separator. - await expect(page.locator('hr')).toHaveCount(1); + const accordionItems = [ + { + title: 'Accordion Title One', + content: 'I am the content for title one.', + hasIcon: true, + }, + { + title: 'Accordion Title Two', + content: 'I am the content for title two.', + hasIcon: true, + }, + { + title: 'Accordion Title Three', + content: 'I am the content for title three.', + hasIcon: true, + }, + { + title: 'Accordion Title Four', + content: 'I am the content for title four.', + hasIcon: false, + }, + ]; - // Image and ImageWithText block - await expect( - page.locator( - 'img:not([data-test-id=hero-image])[alt="A beautiful landscape."]', - ), - ).toHaveCount(2); - await expect(page.locator('figcaption:text("Media image")')).toHaveCount(1); + const content = page.getByRole('main'); + for (const item of accordionItems) { + await expect(content.getByText(item.title)).toBeVisible(); + await content.getByText(item.title).click(); + await expect(content.getByText(item.content)).toBeVisible(); + } + }); - // Video - await expect( - page.locator('video[src*="/video_mp4_belt.mp4"][controls]'), - ).toHaveCount(1); - await expect(page.locator('figcaption:text("Media video")')).toHaveCount(1); + test('Conditional content', async ({ page }) => { + await page.goto(websiteUrl('/en/block-conditional-content')); + await validateTileAndSubtitle(page, 'Block: Conditional content'); - // Table - await expect(page.locator('figure.wp-block-table > table')).toHaveCount(1); - await expect( - page.locator('figure.wp-block-table > figcaption:text("Table caption")'), - ).toHaveCount(1); + await expect( + page.getByText('This content will only be shown for one year.'), + ).toBeVisible(); + }); - // List - await expect(page.locator('ul > li:text("list 1")')).toHaveCount(1); - await expect(page.locator('ol > li:text("list 2.2")')).toHaveCount(1); + test('CTA', async ({ page }) => { + await page.goto(websiteUrl('/en/block-cta')); + await validateTileAndSubtitle(page, 'Block: CTA'); - // Heading - await expect(page.locator('h3:text("Heading 3")')).toHaveCount(1); + // CTA blocks + await expect(page.locator('a:text("Block CTA")')).toHaveCount(1); + await expect(page.locator('a:text("CTA with Icon")')).toHaveCount(1); + }); - // Quote - await expect( - page.locator( - 'blockquote p:text("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sagittis nisi nec neque porta, a ornare ligula efficitur.")', - ), - ).toHaveCount(1); - await expect( - page.locator('blockquote p.not-prose:text("John Doe")'), - ).toHaveCount(1); - await expect( - page.locator('blockquote p.not-prose span:text("Project manager")'), - ).toHaveCount(1); - await expect( - page.locator('blockquote img[alt="The silverback"]'), - ).toHaveCount(1); + test('Form', async ({ page }) => { + // EN + await page.goto(websiteUrl('/en/block-form')); + await validateTileAndSubtitle(page, 'Block: Form'); + await expect( + page.locator('.silverback-iframe iframe').first(), + ).toHaveAttribute('src', /en\/form\/contact\?iframe=true/); - // CTA blocks - await expect(page.locator('a:text("Internal CTA")')).toHaveCount(1); - await expect(page.locator('a:text("External CTA")')).toHaveCount(1); - await expect(page.locator('a:text("CTA with link to media")')).toHaveCount(1); + // DE + await page.goto(websiteUrl('/de/block-form')); + await validateTileAndSubtitle(page, 'Block: Formular'); + await expect( + page.locator('.silverback-iframe iframe').first(), + ).toHaveAttribute('src', /de\/form\/contact\?iframe=true/); + }); - // Form - await expect( - page.locator('.silverback-iframe iframe').last(), - ).toHaveAttribute('src', 'http://127.0.0.1:8000/en/form/contact?iframe=true'); + test('Heading', async ({ page }) => { + await page.goto(websiteUrl('/en/block-heading')); + await validateTileAndSubtitle(page, 'Block: Heading'); + + const headingItems = [ + { + title: 'Heading two', + level: 2, + id: 'heading-two', + }, + { + title: 'Heading three', + level: 3, + id: 'heading-three', + }, + { + title: 'Heading four', + level: 4, + id: 'heading-four', + }, + { + title: 'Heading two - Bold', + level: 2, + id: 'heading-two---bold', + }, + { + title: 'Heading three - Bold', + level: 3, + id: 'heading-three---bold', + }, + { + title: 'Heading four - Bold', + level: 4, + id: 'heading-four---bold', + }, + ]; + + const content = page.getByRole('main'); + for (const item of headingItems) { + const header = content.getByRole('heading', { + name: item.title, + level: item.level, + exact: true, + }); + + await expect(header).toBeVisible(); + await expect(header).toHaveAttribute('id', item.id); + } + }); + + test('Hero', async ({ page }) => { + await page.goto(websiteUrl('/en/block-hero')); + await validateTileAndSubtitle(page, 'Block: Hero'); + + await expect( + page.locator( + 'img[data-test-id=hero-image][alt="A beautiful landscape."]', + ), + ).toHaveCount(2); + }); + + test('Hero with Form', async ({ page }) => { + await page.goto(websiteUrl('/en/block-hero-form')); + await validateTileAndSubtitle(page, 'Block: Hero with Form'); + + await expect( + page.locator('img[data-test-id=hero-image][alt="The silverback"]'), + ).toHaveCount(2); + + await expect( + page.locator('.silverback-iframe iframe').first(), + ).toHaveAttribute('src', /en\/form\/contact\?iframe=true/); + }); + + test('Horizontal separator', async ({ page }) => { + await page.goto(websiteUrl('/en/block-horizontal-separator')); + await validateTileAndSubtitle(page, 'Block: Horizontal separator'); + + await expect(page.locator('hr')).toHaveCount(2); + }); + + test('Image Teasers', async ({ page }) => { + await page.goto(websiteUrl('/en/block-image-teasers')); + await validateTileAndSubtitle(page, 'Block: Image Teasers'); + + await expect( + page.locator( + 'img:not([data-test-id=hero-image])[alt="A beautiful landscape."]', + ), + ).toHaveCount(1); + await expect(page.locator('h2:text("Image One Teaser Title")')).toHaveCount( + 1, + ); + await expect(page.locator('a:text("Image One Teaser CTA")')).toHaveCount(1); + await expect( + page.locator('img:not([data-test-id=hero-image])[alt="The silverback"]'), + ).toHaveCount(1); + await expect(page.locator('h2:text("Image Two Teaser Title")')).toHaveCount( + 1, + ); + await expect(page.locator('a:text("Image Two Teaser CTA")')).toHaveCount(1); + }); + + test('Image with Text', async ({ page }) => { + await page.goto(websiteUrl('/en/block-image-text')); + await validateTileAndSubtitle(page, 'Block: Image with Text'); + + await expect( + page.locator( + 'img:not([data-test-id=hero-image])[alt="A beautiful landscape."]', + ), + ).toHaveCount(1); + await expect( + page.locator('img:not([data-test-id=hero-image])[alt="The silverback"]'), + ).toHaveCount(1); + + await expect( + page.locator('p:text("Image with text on the left")'), + ).toHaveCount(1); + await expect( + page.locator('p:text("Image with text on the right")'), + ).toHaveCount(1); + }); + + test('Info Grid', async ({ page }) => { + await page.goto(websiteUrl('/en/block-info-grid')); + await validateTileAndSubtitle(page, 'Block: Info Grid'); + + await expect(page.locator('p:text("Some information here")')).toHaveCount( + 3, + ); + const content = page.getByRole('main'); + await expect(content.locator('svg')).toHaveCount(3); + }); + + test('List', async ({ page }) => { + await page.goto(websiteUrl('/en/block-list')); + await validateTileAndSubtitle(page, 'Block: List'); + + const content = page.getByRole('main'); + await expect(content.locator('ul > li')).toHaveCount(12); + await expect(content.locator('ul.list-style--arrows > li')).toHaveCount(3); + await expect(content.locator('ul.list-style--checkmarks > li')).toHaveCount( + 3, + ); + await expect( + page.locator('ul.list-style--question-marks > li'), + ).toHaveCount(3); + }); + + test('Media', async ({ page }) => { + await page.goto(websiteUrl('/en/block-media')); + await validateTileAndSubtitle(page, 'Block: Media'); + + await expect( + page.locator('img:not([data-test-id=hero-image])[alt="The silverback"]'), + ).toHaveCount(1); + await expect( + page.locator('figcaption:text("Media Image Caption")'), + ).toHaveCount(1); + }); + + test('Paragraph', async ({ page }) => { + await page.goto(websiteUrl('/en/block-paragraph')); + await validateTileAndSubtitle(page, 'Block: Paragraph'); + + const content = page.getByRole('main'); + await expect(content.locator('.container-text .prose p')).toHaveCount(2); + }); + + test('Quote', async ({ page }) => { + await page.goto(websiteUrl('/en/block-quote')); + await validateTileAndSubtitle(page, 'Block: Quote'); + + await expect( + page.locator( + 'p:text("My mother always used to say: The older you get, the better you get, unless you’re a banana.")', + ), + ).toHaveCount(1); + await expect(page.locator('p:text("Rose (Betty White)")')).toHaveCount(1); + await expect(page.locator('span:text("TheGoldenGirls")')).toHaveCount(1); + }); + + test('Table', async ({ page }) => { + await page.goto(websiteUrl('/en/block-table')); + await validateTileAndSubtitle(page, 'Block: Table'); + + const content = page.getByRole('main'); + await expect(content.locator('table')).toHaveCount(4); + await expect(content.locator('td')).toHaveCount(84); + + await expect( + page.locator('figcaption:text("Table Caption - Fixed width")'), + ).toHaveCount(1); + await expect( + page.locator('figcaption:text("Table Caption - Header Section")'), + ).toHaveCount(1); + await expect( + page.locator('figcaption:text("Table Caption - Footer Section")'), + ).toHaveCount(1); + }); + + test('Teaser list', async ({ page }) => { + await page.goto(websiteUrl('/en/block-teaser-list')); + await validateTileAndSubtitle(page, 'Block: Teaser list'); + + const content = page.getByRole('main'); + await expect(content.locator('ul > li')).toHaveCount(8); + }); }); diff --git a/tests/e2e/specs/drupal/content-editing.spec.ts b/tests/e2e/specs/drupal/content-editing.spec.ts index b90810480..5e7e8e1b8 100644 --- a/tests/e2e/specs/drupal/content-editing.spec.ts +++ b/tests/e2e/specs/drupal/content-editing.spec.ts @@ -23,4 +23,33 @@ test.describe('content-editing', () => { // access await expect(page.locator(':text-is("More settings")')).toHaveCount(0); }); + + test('preview a draft translation', async ({ page }) => { + await page.goto(cmsUrl('/en/entity/create/node/page')); + await page + .locator("[name='title[0][value]']") + .fill('Will have a draft translation'); + await page.getByRole('button', { name: /Save|Create/ }).click(); + await page.getByLabel('Change to').selectOption('published'); + await page.getByLabel('Headline').fill('Will have a draft translation'); + await page.getByText('Save', { exact: true }).click(); + await page.getByRole('link', { name: 'Translate' }).click(); + const translateUrl = page.url(); + await page.getByRole('link', { name: 'Add', exact: true }).click(); + await page.locator("[name='title[0][value]']").fill('A draft translation'); + await page.getByLabel('Ändern in').selectOption('draft'); + await page.getByLabel('Headline').fill('A draft translation'); + await page.getByText('Speichern (diese Übersetzung)').click(); + + await page.goto(translateUrl); + await page + .getByRole('link', { name: 'A draft translation', exact: true }) + .click(); + await expect( + page + .frameLocator('iframe') + .first() + .getByRole('heading', { name: 'A draft translation', exact: true }), + ).toBeVisible(); + }); }); diff --git a/tests/e2e/specs/drupal/content-hub.spec.ts b/tests/e2e/specs/drupal/content-hub.spec.ts index 5098712aa..59ca87ba1 100644 --- a/tests/e2e/specs/drupal/content-hub.spec.ts +++ b/tests/e2e/specs/drupal/content-hub.spec.ts @@ -38,7 +38,7 @@ test.describe('content hub', () => { ).not.toBeVisible(); await expect( content.getByRole('heading', { - name: 'Gatsby', + name: 'Block: Heading', level: 5, }), ).toBeVisible(); diff --git a/tests/e2e/specs/drupal/metatags.spec.ts b/tests/e2e/specs/drupal/metatags.spec.ts index b1e8d5940..b6befbcd3 100644 --- a/tests/e2e/specs/drupal/metatags.spec.ts +++ b/tests/e2e/specs/drupal/metatags.spec.ts @@ -2,20 +2,130 @@ import { expect, test } from '@playwright/test'; import { websiteUrl } from '../../helpers/url'; -test.fixme('Metatags on Basic page', async ({ page }) => { - const pageUrl = websiteUrl('/en/page-complete'); - await page.goto(pageUrl); +test('Metatags on Basic page', async ({ page }) => { + // This is a page with all the SEO fields empty. In this case: + // - the title should fallback to the node title. + // - the description and image_src should be empty. + // - same rule like the two above for the og related tags. + const allEmptyUrlEn = websiteUrl('/en/seo-test-all-empty'); + await page.goto(allEmptyUrlEn); await expect(page.locator('head meta[name="title"]')).toHaveAttribute( 'content', - 'Page: complete | Silverback Drupal Template', + 'SEO test - all empty | Silverback Drupal Template', + ); + await expect(page.locator('head meta[property="og:title"]')).toHaveAttribute( + 'content', + 'SEO test - all empty | Silverback Drupal Template', + ); + await expect(page.locator('head meta[name="description"]')).toHaveCount(0); + await expect( + page.locator('head meta[property="og:description"]'), + ).toHaveCount(0); + await expect(page.locator('head meta[rel="image_src"]')).toHaveCount(0); + await expect(page.locator('head meta[property="og:image"]')).toHaveCount(0); + await expect(page.locator('head link[rel="canonical"]')).toHaveAttribute( + 'href', + allEmptyUrlEn, + ); + await expect(page.locator('head meta[property="og:url"]')).toHaveAttribute( + 'content', + allEmptyUrlEn, + ); + + // Check also its German translation. + const allEmptyUrlDe = websiteUrl('/de/seo-test-all-empty-de'); + await page.goto(allEmptyUrlDe); + await expect(page.locator('head meta[name="title"]')).toHaveAttribute( + 'content', + 'SEO test - all empty DE | Silverback Drupal Template', + ); + await expect(page.locator('head meta[property="og:title"]')).toHaveAttribute( + 'content', + 'SEO test - all empty DE | Silverback Drupal Template', + ); + await expect(page.locator('head meta[name="description"]')).toHaveCount(0); + await expect( + page.locator('head meta[property="og:description"]'), + ).toHaveCount(0); + await expect(page.locator('head link[rel="image_src"]')).toHaveCount(0); + await expect(page.locator('head meta[property="og:image"]')).toHaveCount(0); + await expect(page.locator('head link[rel="canonical"]')).toHaveAttribute( + 'href', + allEmptyUrlDe, + ); + await expect(page.locator('head meta[property="og:url"]')).toHaveAttribute( + 'content', + allEmptyUrlDe, + ); + + // The next page is one where all the SEO fields (the title, description and + // image) are filled in. + const allFilledUrlEn = websiteUrl('/en/seo-test-all-filled'); + await page.goto(allFilledUrlEn); + await expect(page.locator('head meta[name="title"]')).toHaveAttribute( + 'content', + 'Overwritten SEO title | Silverback Drupal Template', + ); + await expect(page.locator('head meta[property="og:title"]')).toHaveAttribute( + 'content', + 'Overwritten SEO title | Silverback Drupal Template', ); await expect(page.locator('head meta[name="description"]')).toHaveAttribute( 'content', - 'Headline Lead text Paragraph', + 'SEO description', ); + await expect( + page.locator('head meta[property="og:description"]'), + ).toHaveAttribute('content', 'SEO description'); await expect(page.locator('head link[rel="canonical"]')).toHaveAttribute( 'href', - pageUrl, + allFilledUrlEn, + ); + await expect(page.locator('head meta[property="og:url"]')).toHaveAttribute( + 'content', + allFilledUrlEn, + ); + await expect(page.locator('head link[rel="image_src"]')).toHaveAttribute( + 'href', + '/sites/default/files/2024-04/the_silverback.jpeg', + ); + await expect(page.locator('head meta[property="og:image"]')).toHaveAttribute( + 'content', + websiteUrl('/sites/default/files/2024-04/the_silverback.jpeg'), + ); + + const allFilledUrlDe = websiteUrl('/de/seo-test-all-filled-de'); + await page.goto(allFilledUrlDe); + await expect(page.locator('head meta[name="title"]')).toHaveAttribute( + 'content', + 'Overwritten SEO title DE | Silverback Drupal Template', + ); + await expect(page.locator('head meta[property="og:title"]')).toHaveAttribute( + 'content', + 'Overwritten SEO title DE | Silverback Drupal Template', + ); + await expect(page.locator('head meta[name="description"]')).toHaveAttribute( + 'content', + 'SEO description DE', + ); + await expect( + page.locator('head meta[property="og:description"]'), + ).toHaveAttribute('content', 'SEO description DE'); + await expect(page.locator('head link[rel="canonical"]')).toHaveAttribute( + 'href', + allFilledUrlDe, + ); + await expect(page.locator('head meta[property="og:url"]')).toHaveAttribute( + 'content', + allFilledUrlDe, + ); + await expect(page.locator('head link[rel="image_src"]')).toHaveAttribute( + 'href', + '/sites/default/files/2024-04/the_silverback.jpeg', + ); + await expect(page.locator('head meta[property="og:image"]')).toHaveAttribute( + 'content', + websiteUrl('/sites/default/files/2024-04/the_silverback.jpeg'), ); }); diff --git a/tests/e2e/specs/drupal/preview-editor-sidebar.spec.ts b/tests/e2e/specs/drupal/preview-editor-sidebar.spec.ts index 625e2e496..7c110a619 100644 --- a/tests/e2e/specs/drupal/preview-editor-sidebar.spec.ts +++ b/tests/e2e/specs/drupal/preview-editor-sidebar.spec.ts @@ -7,9 +7,8 @@ test.describe('instant preview - toggle editor sidebar', () => { test('toggle the preview editor sidebar', async ({ page }) => { await page.goto(cmsUrl('/admin/content')); await page.getByRole('link', { name: 'Add content' }).click(); - const region = page.locator('.layout-region--main'); - await region - .getByLabel('Title', { exact: true }) + await page + .locator("[name='title[0][value]']") .fill('Instant preview sidebar test'); await page.locator('#edit-submit').click(); await page.locator('#edit-preview-link').click(); diff --git a/tests/e2e/specs/drupal/preview.spec.ts b/tests/e2e/specs/drupal/preview.spec.ts index 797fbe955..8f21cef06 100644 --- a/tests/e2e/specs/drupal/preview.spec.ts +++ b/tests/e2e/specs/drupal/preview.spec.ts @@ -7,10 +7,7 @@ test.describe('instant preview', () => { test('display an unpublished page in an iframe', async ({ page }) => { await page.goto(cmsUrl('/admin/content')); await page.getByRole('link', { name: 'Add content' }).click(); - const region = page.locator('.layout-region--main'); - await region - .getByLabel('Title', { exact: true }) - .fill('Instant preview test'); + await page.locator("[name='title[0][value]']").fill('Instant preview test'); await page.locator('#edit-submit').click(); await page .locator('#editor-edit-body-0-value h1 span') diff --git a/tests/e2e/specs/drupal/webforms.spec.ts b/tests/e2e/specs/drupal/webforms.spec.ts index a2e1a465e..04fa6d9a0 100644 --- a/tests/e2e/specs/drupal/webforms.spec.ts +++ b/tests/e2e/specs/drupal/webforms.spec.ts @@ -2,18 +2,18 @@ import { expect, test } from '@playwright/test'; import { websiteUrl } from '../../helpers/url'; -test.fixme('Webforms work', async ({ page }) => { - await page.goto(websiteUrl('/en/blocks-complete')); +test('Webforms work', async ({ page }) => { + await page.goto(websiteUrl('/en/block-form')); // Webform can be submitted. await page .frameLocator('.silverback-iframe iframe') - .last() + .first() .getByRole('button', { name: 'Send message' }) .click(); // Webform redirects to confirmation page. - await expect(page).toHaveURL(websiteUrl('/en/page-minimal')); + await expect(page).toHaveURL(websiteUrl('/en/webform/success')); // Confirmation message is shown. await expect( @@ -27,14 +27,13 @@ test.fixme('Webforms work', async ({ page }) => { ).toHaveCount(0); // Webform from the German page redirects to the German confirmation page. - await page.goto(websiteUrl('/de/blocks-complete')); + await page.goto(websiteUrl('/de/block-form')); await page .frameLocator('.silverback-iframe iframe') - .last() + .first() .getByRole('button', { name: 'Send message' }) .click(); - // TODO: Find out why it does not work. - //await expect(page).toHaveURL(websiteUrl('/de/page-minimal')); + await expect(page).toHaveURL(websiteUrl('/de/webform/success')); // TODO: Move all silverback-mono tests here? // https://github.com/AmazeeLabs/silverback-mono/tree/development/packages/tests/silverback-iframe/playwright-tests diff --git a/tests/e2e/specs/drupal/setup.ts b/tests/e2e/specs/setup.ts similarity index 87% rename from tests/e2e/specs/drupal/setup.ts rename to tests/e2e/specs/setup.ts index 9e7eb4220..1480e8b67 100644 --- a/tests/e2e/specs/drupal/setup.ts +++ b/tests/e2e/specs/setup.ts @@ -1,10 +1,10 @@ import { expect, test as setup } from '@playwright/test'; -import { cmsUrl } from '../../helpers/url'; +import { cmsUrl } from '../helpers/url'; import { netlifyBootTimeout, waitForNetlifyBoot, -} from '../../helpers/wait-for-netlify-boot'; +} from '../helpers/wait-for-netlify-boot'; setup.setTimeout(netlifyBootTimeout + 30_000); diff --git a/tests/e2e/turbo.json b/tests/e2e/turbo.json index ec1b0839e..3850b2aa9 100644 --- a/tests/e2e/turbo.json +++ b/tests/e2e/turbo.json @@ -1,25 +1,10 @@ { "extends": ["//"], "tasks": { - "test:integration:decap": { + "test:integration": { "dependsOn": ["@custom/website#build"], - "env": ["PLAYWRIGHT_WEBSITE_URL"], - "inputs": [ - "helpers/**", - "specs/decap/**", - "playwright.config.decap.ts", - "playwright.config.default.ts" - ] - }, - "test:integration:drupal": { - "dependsOn": ["@custom/website#build", "@custom/preview#prep", "prep"], "env": ["PLAYWRIGHT_WEBSITE_URL", "PLAYWRIGHT_CMS_URL"], - "inputs": [ - "helpers/**", - "specs/drupal/**", - "playwright.config.drupal.ts", - "playwright.config.default.ts" - ] + "inputs": ["helpers/**", "specs/**", "playwright.config.ts"] } } } diff --git a/tests/schema/README.md b/tests/schema/README.md index 4d5f3dcb3..111cadc6d 100644 --- a/tests/schema/README.md +++ b/tests/schema/README.md @@ -1 +1,98 @@ -Before running tests, start Drupal from `apps/cms` with `pnpm dev` +# GraphQL Schema Testing with Vitest + +## Overview + +This guide provides instructions on how to write and run schema tests for +GraphQL queries in a project that uses Gatsby and Drupal. The purpose of these +tests is to ensure that the GraphQL schema remains consistent and to verify that +the responses match expected formats. + +## Test Framework + +We use Vitest for testing: + +- Simple and popular, works in various environments including command line and + IDEs. +- Supports inline snapshots, which are crucial for our schema testing strategy. + +## Writing Tests + +### General Strategy + +- **Coverage**: Aim to cover each GraphQL type and field. +- **Modularity**: Write small, modular tests with one test per type or content + item to avoid large, complex snapshots. +- **Snapshot Usage**: Inline snapshots make it easy to see right in the test + code what the output should be. +- **Warning**: Be cautious with numeric IDs in snapshots as they can change + dynamically. Use path aliases when possible. + +### Steps to Create Tests + +1. **Prepare Your Environment**: + + - Define your GraphQL schema and add resolvers. + - **Create default content that will be used in the tests**: + - Create content in Drupal by navigating to Content > Add content. Choose + the appropriate content type and fill in the necessary fields. + - Export your content for persistence using Drush: + ```bash + drush content:export --entity_type=node --bundle=article --id=1 + ``` + Replace `article` and `1` with your content type and content ID as + needed. This command exports the content, including all its dependencies, + into a `.yml` file which can then be committed to your version control + system. + +2. **Develop Test Cases**: + + - In the `/tests/schema/specs` folder, create or modify a `.spec.ts` file for + your test. + - Use the `gql` tag from `noop-tag` for GraphQL queries to benefit from + autocomplete and autoformatting features. + + **Example Test**: + + ```typescript + import gql from 'noop-tag'; + import { expect, test } from 'vitest'; + import { fetch } from '../lib.js'; + + test('Baby', async () => { + const result = await fetch(gql` + { + _loadBaby(id: "uuid-of-node") { + name + path + picture { + __typename + uuid + } + } + } + `); + expect(result).toMatchInlineSnapshot(); + }); + ``` + + The test fetches data for a 'Baby' content type, checking if the name, path, + and picture data match what we expect. + +3. **Running Tests**: + + - **Using PHPStorm**: In PHPStorm, you can run a specific test directly from + the IDE by clicking on the green arrow next to the test name. + - **Using the Command Line**: + - To run a specific test by name, use the `--match` option: + `vitest run --match "Test Name"` + - To run all tests within a file, run `vitest run your-test-file.spec.ts` + - Automatically run tests related to files as you make changes to them + using: `vitest run --watch`. + - The snapshot will appear inside `.toMatchInlineSnapshot()`, allowing you to + verify the returned data. + +### Additional Resources + +- [Vitest Documentation](https://vitest.dev/docs/): For more information on + testing and specific features of Vitest +- [Noop-tag Readme](https://www.npmjs.com/package/noop-tag) diff --git a/tests/schema/package.json b/tests/schema/package.json index f4dfa505a..80517d045 100644 --- a/tests/schema/package.json +++ b/tests/schema/package.json @@ -11,7 +11,7 @@ }, "devDependencies": { "@custom/eslint-config": "workspace:*", - "@types/node": "^18", + "@types/node": "^20", "@vitest/ui": "^1.1.1", "got": "^13.0.0", "noop-tag": "^2.0.0", diff --git a/tests/schema/specs/blocks.spec.ts b/tests/schema/specs/blocks.spec.ts index ab74f780f..8afc2be6c 100644 --- a/tests/schema/specs/blocks.spec.ts +++ b/tests/schema/specs/blocks.spec.ts @@ -3,369 +3,199 @@ import { expect, test } from 'vitest'; import { fetch } from '../lib.js'; -test('Blocks', async () => { +test('Block: Teaser list', async () => { const result = await fetch(gql` - fragment Blocks on Page { - hero { - __typename - headline - lead - image { + { + viewPage(path: "/en/block-teaser-list") { + content { __typename - } - ctaText - ctaUrl - formUrl - } - content { - __typename - ... on BlockMarkup { - markup - } - ... on BlockMedia { - caption - media { - __typename - ... on MediaImage { - __typename - url - alt - } - ... on MediaVideo { - __typename - url - } - } - } - ... on BlockForm { - url - } - ... on BlockImageTeasers { - teasers { - __typename - image { + ... on BlockTeaserList { + layout + buttonText + staticContent { __typename + ... on BlockTeaserItem { + __typename + content { + __typename + ... on CardItem { + id + path + title + hero { + lead + headline + } + teaserImage { + alt + url + } + } + } + } } - title - ctaText - ctaUrl - } - } - ... on BlockCta { - url - text - openInNewTab - icon - iconPosition - } - ... on BlockImageWithText { - image { - __typename - } - imagePosition - textContent { - __typename - markup - } - } - ... on BlockQuote { - quote - author - role - image { - __typename - } - } - ... on BlockHorizontalSeparator { - __typename - } - ... on BlockAccordion { - items { - __typename - ... on BlockAccordionItemText { - __typename + contentHubEnabled + filters { title - icon - textContent { - markup - } + limit } } } } } - { - complete: viewPage(path: "/en/blocks-complete") { - ...Blocks - } - minimal: viewPage(path: "/en/blocks-minimal") { - ...Blocks - } - } `); - - const firstParagraph = result.data.complete.content[0]; - firstParagraph.markup = firstParagraph.markup.replace( - /data-id="\d+"/, - 'data-id="[numeric]"', - ); - - for (const block of result.data.complete.content) { - if (block.__typename === 'BlockCta') { - block.url = block.url.replace(/media\/\d+/, 'media/[numeric]'); - } - } - expect(result).toMatchInlineSnapshot(` { "data": { - "complete": { + "viewPage": { "content": [ { - "__typename": "BlockMarkup", - "markup": " -

    A standalone paragraph with markup and link

    - ", - }, - { - "__typename": "BlockHorizontalSeparator", - }, - { - "__typename": "BlockMedia", - "caption": "Media image", - "media": { - "__typename": "MediaImage", - "alt": "A beautiful landscape.", - "url": "http://127.0.0.1:8000/sites/default/files/2023-04/landscape.jpg", - }, - }, - { - "__typename": "BlockMedia", - "caption": "Media video", - "media": { - "__typename": "MediaVideo", - "url": "http://127.0.0.1:8000/sites/default/files/2023-06/video_mp4_belt.mp4", - }, - }, - { - "__typename": "BlockForm", - "url": "http://127.0.0.1:8000/en/form/contact", - }, - { - "__typename": "BlockImageWithText", - "image": { - "__typename": "MediaImage", - }, - "imagePosition": "right", - "textContent": { - "__typename": "BlockMarkup", - "markup": " -

    All kinds of allowed blocks

    - -
    • bla
    - -

    Heading

    - -

    Quote

    Citation
    - -

    - ", + "__typename": "BlockTeaserList", + "buttonText": null, + "contentHubEnabled": null, + "filters": { + "limit": null, + "title": null, }, - }, - { - "__typename": "BlockMarkup", - "markup": " -

    Starting from this paragraph, all the following blocks should be aggregated, as they are just HTML

    - -
    12
    34 with markup
    Table caption
    - -
    • list 1
    • list 2
      1. list 2.2
    - -

    Heading 3

    - -

    Quote

    Citation
    - ", - }, - { - "__typename": "BlockImageTeasers", - "teasers": [ + "layout": null, + "staticContent": [ { - "__typename": "BlockImageTeaser", - "ctaText": "Foo", - "ctaUrl": "https://google.com", - "image": { - "__typename": "MediaImage", + "__typename": "BlockTeaserItem", + "content": { + "__typename": "Page", + "hero": { + "headline": "Block: Accordion", + "lead": "Block: Accordion", + }, + "id": "a11aaeea-a71a-4ef0-a996-833c95767386", + "path": "/en/block-accordion", + "teaserImage": null, + "title": "Block: Accordion", }, - "title": "Teaser 1", }, { - "__typename": "BlockImageTeaser", - "ctaText": "Bar", - "ctaUrl": "https://google.com", - "image": { - "__typename": "MediaImage", + "__typename": "BlockTeaserItem", + "content": { + "__typename": "Page", + "hero": { + "headline": "Block: CTA", + "lead": "Block: CTA", + }, + "id": "080b30e2-5a68-4390-9dec-0c7e850840a7", + "path": "/en/block-cta", + "teaserImage": null, + "title": "Block: CTA", + }, + }, + { + "__typename": "BlockTeaserItem", + "content": { + "__typename": "Page", + "hero": { + "headline": "Block: Conditional content", + "lead": "Block: Conditional content", + }, + "id": "f14c6cb1-b052-4523-ad52-1fbfd32282ff", + "path": "/en/block-conditional-content", + "teaserImage": null, + "title": "Block: Conditional content", + }, + }, + { + "__typename": "BlockTeaserItem", + "content": { + "__typename": "Page", + "hero": { + "headline": "Block: Form", + "lead": "Block: Form", + }, + "id": "69c06c93-0d3f-47e1-a5ee-ba697bd532c1", + "path": "/en/block-form", + "teaserImage": null, + "title": "Block: Form", }, - "title": "Teaser 2", }, ], }, { - "__typename": "BlockCta", - "icon": null, - "iconPosition": null, - "openInNewTab": null, - "text": "Internal CTA", - "url": "/en/drupal", - }, - { - "__typename": "BlockCta", - "icon": "ARROW", - "iconPosition": null, - "openInNewTab": true, - "text": "External CTA", - "url": "https://www.google.com", - }, - { - "__typename": "BlockCta", - "icon": "ARROW", - "iconPosition": "BEFORE", - "openInNewTab": null, - "text": "CTA with link to media", - "url": "/media/[numeric]", - }, - { - "__typename": "BlockQuote", - "author": "John Doe", - "image": { - "__typename": "MediaImage", + "__typename": "BlockTeaserList", + "buttonText": null, + "contentHubEnabled": null, + "filters": { + "limit": null, + "title": null, }, - "quote": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sagittis nisi nec neque porta, a ornare ligula efficitur.", - "role": "Project manager", - }, - { - "__typename": "BlockAccordion", - "items": [ + "layout": "CAROUSEL", + "staticContent": [ { - "__typename": "BlockAccordionItemText", - "icon": "", - "textContent": { - "markup": " -

    Incididunt laborum velit non proident nostrud velit. Minim excepteur ut aliqua nisi. Culpa laboris consectetur proident. Tempor esse ullamco et dolor proident id officia laborum voluptate nostrud elit dolore qui amet. Ex Lorem irure eu anim ipsum officia.

    - ", + "__typename": "BlockTeaserItem", + "content": { + "__typename": "Page", + "hero": { + "headline": "Block: Accordion", + "lead": "Block: Accordion", + }, + "id": "a11aaeea-a71a-4ef0-a996-833c95767386", + "path": "/en/block-accordion", + "teaserImage": null, + "title": "Block: Accordion", }, - "title": "With a single paragraph and no icon", }, { - "__typename": "BlockAccordionItemText", - "icon": "arrow", - "textContent": { - "markup": " -
    • Moitié-moitié
    • Fribourgeoise
    - -

    Incididunt laborum velit non proident nostrud velit. Minim excepteur ut aliqua nisi. Culpa laboris consectetur proident. Tempor esse ullamco et dolor proident id officia laborum voluptate nostrud elit dolore qui amet. Ex Lorem irure eu anim ipsum officia.

    - ", + "__typename": "BlockTeaserItem", + "content": { + "__typename": "Page", + "hero": { + "headline": "Block: CTA", + "lead": "Block: CTA", + }, + "id": "080b30e2-5a68-4390-9dec-0c7e850840a7", + "path": "/en/block-cta", + "teaserImage": null, + "title": "Block: CTA", + }, + }, + { + "__typename": "BlockTeaserItem", + "content": { + "__typename": "Page", + "hero": { + "headline": "Block: Conditional content", + "lead": "Block: Conditional content", + }, + "id": "f14c6cb1-b052-4523-ad52-1fbfd32282ff", + "path": "/en/block-conditional-content", + "teaserImage": null, + "title": "Block: Conditional content", + }, + }, + { + "__typename": "BlockTeaserItem", + "content": { + "__typename": "Page", + "hero": { + "headline": "Block: Form", + "lead": "Block: Form", + }, + "id": "69c06c93-0d3f-47e1-a5ee-ba697bd532c1", + "path": "/en/block-form", + "teaserImage": null, + "title": "Block: Form", }, - "title": "With a list and a paragraph and arrow icon", }, ], }, ], - "hero": { - "__typename": "Hero", - "ctaText": "CTA text", - "ctaUrl": "https://example.com", - "formUrl": "http://127.0.0.1:8000/en/form/contact", - "headline": "All kinds of blocks with maximum data", - "image": { - "__typename": "MediaImage", - }, - "lead": "Lead text", - }, - }, - "minimal": { - "content": [ - { - "__typename": "BlockMedia", - "caption": null, - "media": null, - }, - { - "__typename": "BlockForm", - "url": null, - }, - { - "__typename": "BlockMarkup", - "markup": " -
    - -
    - -

    - ", - }, - { - "__typename": "BlockCta", - "icon": null, - "iconPosition": null, - "openInNewTab": null, - "text": null, - "url": null, - }, - { - "__typename": "BlockImageWithText", - "image": null, - "imagePosition": "left", - "textContent": { - "__typename": "BlockMarkup", - "markup": " -

    - ", - }, - }, - { - "__typename": "BlockQuote", - "author": "Jane Doe", - "image": null, - "quote": "In vitae diam quis odio tincidunt faucibus eget ut libero", - "role": null, - }, - ], - "hero": { - "__typename": "Hero", - "ctaText": null, - "ctaUrl": null, - "formUrl": null, - "headline": "All kinds of blocks with minimum data", - "image": null, - "lead": null, - }, }, }, } `); - - const german = await fetch(gql` - { - page: _loadPage(id: "a397ca48-8fad-411e-8901-0eba2feb989c:de") { - content { - __typename - ... on BlockForm { - url - } - } - } - } - `); - const germanForm = german.data.page.content.find( - (it: { __typename: string }) => it.__typename === 'BlockForm', - ); - expect(germanForm.url).toBe('http://127.0.0.1:8000/de/form/contact'); }); -test('Block - info grid', async () => { +test('Block: Info Grid', async () => { const result = await fetch(gql` { - _loadPage(id: "3164a225-df20-4794-8cfc-b7cd81cfde58") { + _loadPage(id: "557b324d-2183-48e7-9054-6dc90e18beb1") { content { __typename ... on BlockInfoGrid { @@ -389,6 +219,7 @@ test('Block - info grid', async () => { } } `); + expect(result).toMatchInlineSnapshot(` { "data": { @@ -402,18 +233,9 @@ test('Block - info grid', async () => { "infoGridContent": [ { "markup": " -

    I am a heading

    - -

    I am the body

    +

    Some information here

    ", }, - { - "icon": null, - "iconPosition": null, - "openInNewTab": null, - "text": "Link text", - "url": null, - }, ], }, { @@ -421,18 +243,9 @@ test('Block - info grid', async () => { "infoGridContent": [ { "markup": " -

    I am second heading

    - -

    I am the second body

    +

    Some information here

    ", }, - { - "icon": null, - "iconPosition": null, - "openInNewTab": null, - "text": "Second link text", - "url": null, - }, ], }, { @@ -440,208 +253,341 @@ test('Block - info grid', async () => { "infoGridContent": [ { "markup": " -

    I am the third heading

    - -

    I am the third body

    +

    Some information here

    ", }, - { - "icon": null, - "iconPosition": null, - "openInNewTab": null, - "text": "third link text", - "url": null, - }, ], }, ], }, + ], + }, + }, + } + `); +}); + +test('Block: Accordion', async () => { + const result = await fetch(gql` + { + _loadPage(id: "a11aaeea-a71a-4ef0-a996-833c95767386") { + content { + __typename + ... on BlockAccordion { + items { + __typename + ... on BlockAccordionItemText { + __typename + title + icon + textContent { + markup + } + } + } + } + } + } + } + `); + expect(result).toMatchInlineSnapshot(` + { + "data": { + "_loadPage": { + "content": [ { - "__typename": "BlockInfoGrid", - "gridItems": [ + "__typename": "BlockAccordion", + "items": [ { - "icon": "NONE", - "infoGridContent": [ - { - "markup": " -

    Just one info grid

    + "__typename": "BlockAccordionItemText", + "icon": "checkmark", + "textContent": { + "markup": " +

    I am the content for title one.

    -

    +

    Lorem ipsum dolor sit amet consectetur adipiscing elit auctor, lectus nibh gravida platea euismod parturient vitae interdum senectus, laoreet litora mauris tempor risus curae inceptos. Morbi ut facilisi ullamcorper arcu dictum hac congue eros nunc, nisl nullam dictumst malesuada euismod primis fusce convallis tempor, sociosqu est dis cursus maecenas id felis dui. Vestibulum turpis scelerisque montes felis laoreet metus ligula tincidunt auctor tempus fusce fermentum, conubia habitant sapien hac sed semper cum cubilia nunc augue. Laoreet velit parturient fermentum penatibus sociosqu mollis auctor nascetur pellentesque et libero, ac nisl commodo posuere sagittis enim egestas placerat molestie curabitur. Dictumst laoreet commodo magnis feugiat sagittis platea felis est convallis, integer curae blandit sociis suspendisse maecenas potenti risus ridiculus, a tempor tellus pellentesque fermentum fames tincidunt scelerisque.

    ", - }, - { - "icon": null, - "iconPosition": null, - "openInNewTab": null, - "text": null, - "url": null, - }, - ], + }, + "title": "Accordion Title One", }, - ], - }, - { - "__typename": "BlockInfoGrid", - "gridItems": [ { - "icon": "NONE", - "infoGridContent": [ - { - "markup": " -

    + "__typename": "BlockAccordionItemText", + "icon": "questionmark", + "textContent": { + "markup": " +

    I am the content for title two.

    -

    +

    Lorem ipsum dolor sit amet consectetur adipiscing elit dis rutrum vestibulum congue est malesuada egestas vitae, at ante varius nec vulputate cubilia mauris cras auctor suscipit faucibus nisl dictumst. Pulvinar sociosqu parturient habitant himenaeos in volutpat nascetur magnis, iaculis varius at mi sollicitudin morbi ligula nec, diam per scelerisque risus elementum tempor vel. Velit montes quisque metus penatibus porttitor iaculis justo posuere, porta suspendisse sem nullam ante facilisis proin, neque sollicitudin dis himenaeos ligula morbi euismod. Volutpat tempus ultrices feugiat dictum senectus porta condimentum sodales, eros sociosqu libero risus suspendisse proin tortor, egestas ridiculus nostra platea commodo id torquent. Dis ultrices mollis hac tempor magna diam suscipit natoque odio et, tortor tellus enim litora eu felis ad volutpat cursus pharetra, nostra mus auctor inceptos metus mattis porta scelerisque magnis. Natoque iaculis nascetur pellentesque est arcu pharetra phasellus interdum, venenatis tempor proin dictum metus dapibus dis, tortor malesuada duis ad eu ullamcorper elementum. Metus odio dignissim dictum fames nec ut, faucibus porta placerat ullamcorper cum donec felis, tempor imperdiet scelerisque commodo himenaeos.

    ", - }, - { - "icon": null, - "iconPosition": null, - "openInNewTab": null, - "text": null, - "url": null, - }, - ], + }, + "title": "Accordion Title Two", }, { - "icon": "NONE", - "infoGridContent": [ - { - "markup": " -

    + "__typename": "BlockAccordionItemText", + "icon": "arrow", + "textContent": { + "markup": " +

    I am the content for title three.

    -

    +

    Lorem ipsum dolor sit amet consectetur adipiscing elit sodales, dictum massa scelerisque parturient sagittis rutrum taciti porttitor, in eleifend habitant habitasse enim placerat phasellus. Mus tempus euismod id donec facilisi imperdiet mollis, montes convallis cubilia per tristique faucibus, pellentesque quam interdum sagittis tellus ac. Sociis sapien imperdiet himenaeos mus ornare conubia hac molestie proin, etiam diam arcu eleifend euismod odio vivamus. Turpis nisl ad hac duis fusce phasellus nibh dictum integer purus arcu, donec sociosqu eu at tortor sapien scelerisque tempus gravida mattis, torquent praesent feugiat volutpat felis viverra pellentesque eget suscipit quisque.

    ", - }, - { - "icon": null, - "iconPosition": null, - "openInNewTab": null, - "text": null, - "url": null, - }, - ], + }, + "title": "Accordion Title Three", }, { - "icon": "NONE", - "infoGridContent": [ - { - "markup": " -

    + "__typename": "BlockAccordionItemText", + "icon": "", + "textContent": { + "markup": " +

    I am the content for title four.

    -

    - ", - }, - { - "icon": null, - "iconPosition": null, - "openInNewTab": null, - "text": null, - "url": null, - }, - { - "markup": " -

    +

    Lorem ipsum dolor sit amet consectetur adipiscing elit justo habitant, platea laoreet hac suspendisse taciti euismod fermentum cras. Sed purus est varius nullam, sem magna ultricies viverra dui, class a vehicula. Leo enim dapibus malesuada feugiat dis dui placerat pretium, lacus taciti cum sociis diam tortor dictumst, libero vel venenatis turpis nisl dictum cursus. Auctor habitant duis vestibulum venenatis natoque a ligula, malesuada senectus integer tempus fames turpis. Nostra varius feugiat habitasse eget lacinia porttitor phasellus aliquet nascetur eu a semper maecenas conubia velit sagittis, euismod praesent justo nunc lectus pulvinar nullam egestas molestie pretium metus ullamcorper luctus tincidunt tellus. Accumsan dapibus per quisque malesuada sagittis leo montes erat, euismod nostra sem cras rhoncus turpis tempor placerat aptent, taciti cubilia lobortis pellentesque nulla lectus eleifend.

    ", - }, - ], + }, + "title": "Accordion Title Four", }, ], }, + ], + }, + }, + } + `); +}); + +test('Block: Conditional content', async () => { + const result = await fetch(gql` + { + _loadPage(id: "f14c6cb1-b052-4523-ad52-1fbfd32282ff") { + content { + __typename + ... on BlockConditional { + content { + ... on BlockMarkup { + markup + } + } + displayFrom + displayTo + } + } + } + } + `); + expect(result).toMatchInlineSnapshot(` + { + "data": { + "_loadPage": { + "content": [ { - "__typename": "BlockInfoGrid", - "gridItems": [ + "__typename": "BlockConditional", + "content": [ { - "icon": "NONE", - "infoGridContent": [ - { - "icon": null, - "iconPosition": null, - "openInNewTab": true, - "text": "CTA", - "url": "https://www.google.com", - }, - { - "markup": " -

    test

    - -

    Heading

    + "markup": " +

    This content will only be shown for one year.

    ", - }, - ], }, - { - "icon": "NONE", - "infoGridContent": [ - { - "markup": " -

    I am p tag

    - ", - }, - { - "icon": null, - "iconPosition": null, - "openInNewTab": null, - "text": "CTA", - "url": "https://www.google.com", - }, - { - "markup": " -

    Testing

    - -

    Testing

    + ], + "displayFrom": "2024-12-10T14:40:00.000Z", + "displayTo": "2025-12-10T14:40:00.000Z", + }, + ], + }, + }, + } + `); +}); -

    Testing

    +test('Block: Image with Text', async () => { + const result = await fetch(gql` + { + _loadPage(id: "4189dec1-3b09-4eec-b4d5-b7cc28eaeae3") { + content { + __typename + ... on BlockImageWithText { + image { + __typename + id + } + imagePosition + textContent { + __typename + markup + } + } + } + } + } + `); + expect(result).toMatchInlineSnapshot(` + { + "data": { + "_loadPage": { + "content": [ + { + "__typename": "BlockImageWithText", + "image": { + "__typename": "MediaImage", + "id": "3a0fe860-a6d6-428a-9474-365bd57509aa", + }, + "imagePosition": "left", + "textContent": { + "__typename": "BlockMarkup", + "markup": " +

    Image with text on the left

    ", - }, - { - "icon": null, - "iconPosition": null, - "openInNewTab": null, - "text": "CTA", - "url": null, - }, - ], + }, + }, + { + "__typename": "BlockImageWithText", + "image": { + "__typename": "MediaImage", + "id": "5dfc1856-e9e4-4f02-9cd6-9d888870ce1a", + }, + "imagePosition": "right", + "textContent": { + "__typename": "BlockMarkup", + "markup": " +

    Image with text on the right

    + ", + }, + }, + ], + }, + }, + } + `); +}); + +test('Block: Image Teasers', async () => { + const result = await fetch(gql` + { + _loadPage(id: "a23e5334-20fc-4c34-acba-bf3c8cb5fa40") { + content { + __typename + ... on BlockImageTeasers { + teasers { + __typename + image { + __typename + id + } + title + ctaText + ctaUrl + } + } + } + } + } + `); + expect(result).toMatchInlineSnapshot(` + { + "data": { + "_loadPage": { + "content": [ + { + "__typename": "BlockImageTeasers", + "teasers": [ + { + "__typename": "BlockImageTeaser", + "ctaText": "Image One Teaser CTA", + "ctaUrl": "/", + "image": { + "__typename": "MediaImage", + "id": "3a0fe860-a6d6-428a-9474-365bd57509aa", + }, + "title": "Image One Teaser Title", }, { - "icon": "NONE", - "infoGridContent": [ - { - "markup": " -

    Heading

    + "__typename": "BlockImageTeaser", + "ctaText": "Image Two Teaser CTA", + "ctaUrl": "/", + "image": { + "__typename": "MediaImage", + "id": "5dfc1856-e9e4-4f02-9cd6-9d888870ce1a", + }, + "title": "Image Two Teaser Title", + }, + ], + }, + ], + }, + }, + } + `); +}); -

    Heading

    - ", - }, - { - "icon": null, - "iconPosition": null, - "openInNewTab": null, - "text": "CTA", - "url": null, - }, - { - "markup": " -

    Heading

    +test('Block: Form', async () => { + const result = await fetch(gql` + { + _loadPage(id: "69c06c93-0d3f-47e1-a5ee-ba697bd532c1") { + content { + __typename + ... on BlockForm { + url + } + } + } + } + `); + expect(result).toMatchInlineSnapshot(` + { + "data": { + "_loadPage": { + "content": [ + { + "__typename": "BlockForm", + "url": "http://127.0.0.1:8000/en/form/contact", + }, + { + "__typename": "BlockForm", + "url": "http://127.0.0.1:8000/en/form/inquiry", + }, + { + "__typename": "BlockForm", + "url": "http://127.0.0.1:8000/en/form/styling", + }, + ], + }, + }, + } + `); +}); -

    TEst

    +test('Block: Heading', async () => { + const result = await fetch(gql` + { + _loadPage(id: "bdbcc2b9-2d33-4723-a6fc-35c5f56b1ab9") { + content { + __typename + ... on BlockMarkup { + markup + } + } + } + } + `); + expect(result).toMatchInlineSnapshot(` + { + "data": { + "_loadPage": { + "content": [ + { + "__typename": "BlockMarkup", + "markup": " +

    Heading two

    + +

    Heading three

    -

    est

    +

    Heading four

    -

    test

    +

    Heading two - Bold

    -

    test

    +

    Heading three - Bold

    + +

    Heading four - Bold

    ", - }, - { - "icon": null, - "iconPosition": null, - "openInNewTab": null, - "text": null, - "url": null, - }, - ], - }, - ], }, ], }, @@ -650,20 +596,25 @@ test('Block - info grid', async () => { `); }); -test('Conditional', async () => { +test('Block: Media', async () => { const result = await fetch(gql` { - _loadPage(id: "52ee5cc7-0ac5-49b5-8550-ce59476bd4ac") { + _loadPage(id: "7f0f6893-c61d-4ecd-8b74-fb0a0d023ead") { content { __typename - ... on BlockConditional { - content { - ... on BlockMarkup { - markup + ... on BlockMedia { + caption + media { + __typename + ... on MediaImage { + __typename + id + } + ... on MediaVideo { + __typename + url } } - displayFrom - displayTo } } } @@ -675,28 +626,236 @@ test('Conditional', async () => { "_loadPage": { "content": [ { - "__typename": "BlockConditional", - "content": [ - { - "markup": " -

    Complete

    + "__typename": "BlockMedia", + "caption": "Media Image Caption", + "media": { + "__typename": "MediaImage", + "id": "5dfc1856-e9e4-4f02-9cd6-9d888870ce1a", + }, + }, + ], + }, + }, + } + `); +}); + +test('Block: Horizontal separator', async () => { + const result = await fetch(gql` + { + _loadPage(id: "358dcf0d-0910-4d0b-acc8-5a20108b3f20") { + content { + __typename + ... on BlockHorizontalSeparator { + __typename + } + } + } + } + `); + expect(result).toMatchInlineSnapshot(` + { + "data": { + "_loadPage": { + "content": [ + { + "__typename": "BlockHorizontalSeparator", + }, + { + "__typename": "BlockMarkup", + }, + { + "__typename": "BlockHorizontalSeparator", + }, + ], + }, + }, + } + `); +}); + +test('Block: Quote', async () => { + const result = await fetch(gql` + { + _loadPage(id: "54ee7380-a3c0-4c45-8305-933143dc2ff6") { + content { + __typename + ... on BlockQuote { + quote + author + role + image { + __typename + id + } + } + } + } + } + `); + expect(result).toMatchInlineSnapshot(` + { + "data": { + "_loadPage": { + "content": [ + { + "__typename": "BlockQuote", + "author": "Rose (Betty White)", + "image": { + "__typename": "MediaImage", + "id": "5dfc1856-e9e4-4f02-9cd6-9d888870ce1a", + }, + "quote": "My mother always used to say: The older you get, the better you get, unless you’re a banana.", + "role": "TheGoldenGirls", + }, + ], + }, + }, + } + `); +}); + +test('Block: Table', async () => { + const result = await fetch(gql` + { + _loadPage(id: "71e7b043-3718-4d6a-a2c8-42fb03554800") { + content { + __typename + ... on BlockMarkup { + markup + } + } + } + } + `); + expect(result).toMatchInlineSnapshot(` + { + "data": { + "_loadPage": { + "content": [ + { + "__typename": "BlockMarkup", + "markup": " +
    Col 1Col 2Col 3Col 4
    Row 1---
    Row 2---
    Row 3---
    Row 4---
    Table Caption
    + +
    Col 1Col 2Col 3Col 4
    Row 1---
    Row 2---
    Row 3---
    Row 4---
    Table Caption - Fixed width
    + +
    Header 1Header 2Header 3Header 4
    Col 1Col 2Col 3Col 4
    Row 1---
    Row 2---
    Row 3---
    Row 4---
    Table Caption - Header Section
    + +
    Col 1Col 2Col 3Col 4
    Row 1---
    Row 2---
    Row 3---
    Row 4---
    Footer 1Footer 2Footer 3Footer 4
    Table Caption - Footer Section
    ", - }, - ], - "displayFrom": "2024-05-16T11:05:00.000Z", - "displayTo": "2024-05-23T13:03:00.000Z", }, + ], + }, + }, + } + `); +}); +test('Block: List', async () => { + const result = await fetch(gql` + { + _loadPage(id: "487b2750-bf2a-4b5d-a753-2942a63bb6a4") { + content { + __typename + ... on BlockMarkup { + markup + } + } + } + } + `); + expect(result).toMatchInlineSnapshot(` + { + "data": { + "_loadPage": { + "content": [ { - "__typename": "BlockConditional", - "content": [ - { - "markup": " -

    No conditions

    + "__typename": "BlockMarkup", + "markup": " +
    • Bullet Item 1
    • Bullet Item 2
    • Bullet Item 3
    + +
    • Arrow Item 1
    • Arrow Item 2
    • Arrow Item 3
    + +
    • Check Item 1
    • Check Item 2
    • Check Item 3
    + +
    • Question Item 1
    • Question Item 2
    • Question Item 3
    ", - }, - ], - "displayFrom": null, - "displayTo": null, + }, + ], + }, + }, + } + `); +}); +test('Block: Paragraph', async () => { + const result = await fetch(gql` + { + _loadPage(id: "67c21535-4851-4aea-b46e-c4eccd4e494a") { + content { + __typename + ... on BlockMarkup { + markup + } + } + } + } + `); + expect(result).toMatchInlineSnapshot(` + { + "data": { + "_loadPage": { + "content": [ + { + "__typename": "BlockMarkup", + "markup": " +

    Lorem ipsum dolor sit amet consectetur, adipiscing elit nisi tincidunt urna, ligula viverra congue est. Netus congue bibendum fringilla risus nisl fermentum massa, eleifend venenatis lacus interdum elementum. Donec euismod venenatis ridiculus non risus porttitor magna mollis faucibus vel tincidunt, molestie lacus felis mi montes mauris placerat et sagittis vitae, sociosqu curabitur cursus iaculis quam dapibus sed mattis velit aptent. Vestibulum feugiat vel vitae venenatis vulputate ad nulla arcu eget in, magna pulvinar sem primis auctor erat justo scelerisque.

    + +

    Pharetra magna condimentum per est aliquet in blandit metus, magnis iaculis diam ultrices integer bibendum cursus consequat auctor, etiam mollis euismod nisi imperdiet tristique donec. Nec rutrum mus sociosqu dictumst arcu congue ligula, conubia lectus egestas volutpat lacus enim, ultrices praesent nisl venenatis netus quis. Nostra commodo per aliquam neque litora habitasse cubilia mattis phasellus nec, aliquet etiam libero urna consequat vivamus scelerisque eu rhoncus sed, mus lacinia natoque auctor quis massa pellentesque cras sem. Fringilla accumsan laoreet rutrum integer sagittis pellentesque, rhoncus condimentum luctus semper dictumst, aliquet eros imperdiet lectus bibendum. Donec vel placerat accumsan cursus, posuere mi velit facilisis fermentum, lobortis penatibus id.

    + ", + }, + ], + }, + }, + } + `); +}); +test('Block: CTA', async () => { + const result = await fetch(gql` + { + _loadPage(id: "080b30e2-5a68-4390-9dec-0c7e850840a7") { + content { + __typename + ... on BlockCta { + url + text + openInNewTab + icon + iconPosition + } + } + } + } + `); + expect(result).toMatchInlineSnapshot(` + { + "data": { + "_loadPage": { + "content": [ + { + "__typename": "BlockCta", + "icon": null, + "iconPosition": null, + "openInNewTab": null, + "text": "Block CTA", + "url": null, + }, + { + "__typename": "BlockCta", + "icon": "ARROW", + "iconPosition": null, + "openInNewTab": null, + "text": "CTA with Icon", + "url": null, }, ], }, diff --git a/tests/schema/specs/content.spec.ts b/tests/schema/specs/content.spec.ts index a8bf440df..76ebaf39f 100644 --- a/tests/schema/specs/content.spec.ts +++ b/tests/schema/specs/content.spec.ts @@ -11,12 +11,23 @@ test('Page', async () => { title teaserImage { __typename + id } hero { __typename + image { + id + } } content { __typename + ... on BlockMedia { + media { + ... on MediaImage { + id + } + } + } } metaTags { tag @@ -33,8 +44,15 @@ test('Page', async () => { complete: viewPage(path: "/en/page-complete") { ...Page } - minimal: viewPage(path: "/en/page-minimal") { - ...Page + seo_all_empty: _loadPage(id: "5f108e07-62ca-4025-adca-069b3adfc22c") { + translations { + ...Page + } + } + seo_all_filled_in: _loadPage(id: "6344bdc5-1b02-4542-b4ae-4e6df23b3e4c") { + translations { + ...Page + } } } `); @@ -48,10 +66,16 @@ test('Page', async () => { }, { "__typename": "BlockMedia", + "media": { + "id": "72187a1f-3e48-4b45-a9b7-189c6fd7ee26", + }, }, ], "hero": { "__typename": "Hero", + "image": { + "id": "3a0fe860-a6d6-428a-9474-365bd57509aa", + }, }, "locale": "en", "metaTags": [ @@ -65,16 +89,6 @@ test('Page', async () => { }, "tag": "meta", }, - { - "attributes": { - "content": "Headline Lead text Paragraph", - "href": null, - "name": "description", - "property": null, - "rel": null, - }, - "tag": "meta", - }, { "attributes": { "content": null, @@ -87,20 +101,20 @@ test('Page', async () => { }, { "attributes": { - "content": "Page: complete | Silverback Drupal Template", + "content": "http://127.0.0.1:8000/en/page-complete", "href": null, "name": null, - "property": "og:title", + "property": "og:url", "rel": null, }, "tag": "meta", }, { "attributes": { - "content": "Headline Lead text Paragraph", + "content": "Page: complete | Silverback Drupal Template", "href": null, "name": null, - "property": "og:description", + "property": "og:title", "rel": null, }, "tag": "meta", @@ -109,74 +123,325 @@ test('Page', async () => { "path": "/en/page-complete", "teaserImage": { "__typename": "MediaImage", + "id": "3a0fe860-a6d6-428a-9474-365bd57509aa", }, "title": "Page: complete", }, - "minimal": { - "content": [ - { - "__typename": "BlockMarkup", - }, - ], - "hero": { - "__typename": "Hero", - }, - "locale": "en", - "metaTags": [ + "seo_all_empty": { + "translations": [ { - "attributes": { - "content": "Page: minimal | Silverback Drupal Template", - "href": null, - "name": "title", - "property": null, - "rel": null, + "content": [ + { + "__typename": "BlockMarkup", + }, + ], + "hero": { + "__typename": "Hero", + "image": null, }, - "tag": "meta", + "locale": "en", + "metaTags": [ + { + "attributes": { + "content": "SEO test - all empty | Silverback Drupal Template", + "href": null, + "name": "title", + "property": null, + "rel": null, + }, + "tag": "meta", + }, + { + "attributes": { + "content": null, + "href": "http://127.0.0.1:8000/en/seo-test-all-empty", + "name": null, + "property": null, + "rel": "canonical", + }, + "tag": "link", + }, + { + "attributes": { + "content": "http://127.0.0.1:8000/en/seo-test-all-empty", + "href": null, + "name": null, + "property": "og:url", + "rel": null, + }, + "tag": "meta", + }, + { + "attributes": { + "content": "SEO test - all empty | Silverback Drupal Template", + "href": null, + "name": null, + "property": "og:title", + "rel": null, + }, + "tag": "meta", + }, + ], + "path": "/en/seo-test-all-empty", + "teaserImage": null, + "title": "SEO test - all empty", }, { - "attributes": { - "content": "", - "href": null, - "name": "description", - "property": null, - "rel": null, + "content": [ + { + "__typename": "BlockMarkup", + }, + ], + "hero": { + "__typename": "Hero", + "image": null, }, - "tag": "meta", - }, - { - "attributes": { - "content": null, - "href": "http://127.0.0.1:8000/en/page-minimal", - "name": null, - "property": null, - "rel": "canonical", - }, - "tag": "link", + "locale": "de", + "metaTags": [ + { + "attributes": { + "content": "SEO test - all empty DE | Silverback Drupal Template", + "href": null, + "name": "title", + "property": null, + "rel": null, + }, + "tag": "meta", + }, + { + "attributes": { + "content": null, + "href": "http://127.0.0.1:8000/de/seo-test-all-empty-de", + "name": null, + "property": null, + "rel": "canonical", + }, + "tag": "link", + }, + { + "attributes": { + "content": "http://127.0.0.1:8000/de/seo-test-all-empty-de", + "href": null, + "name": null, + "property": "og:url", + "rel": null, + }, + "tag": "meta", + }, + { + "attributes": { + "content": "SEO test - all empty DE | Silverback Drupal Template", + "href": null, + "name": null, + "property": "og:title", + "rel": null, + }, + "tag": "meta", + }, + ], + "path": "/de/seo-test-all-empty-de", + "teaserImage": null, + "title": "SEO test - all empty DE", }, + ], + }, + "seo_all_filled_in": { + "translations": [ { - "attributes": { - "content": "Page: minimal | Silverback Drupal Template", - "href": null, - "name": null, - "property": "og:title", - "rel": null, + "content": [ + { + "__typename": "BlockMarkup", + }, + ], + "hero": { + "__typename": "Hero", + "image": null, }, - "tag": "meta", + "locale": "en", + "metaTags": [ + { + "attributes": { + "content": "Overwritten SEO title | Silverback Drupal Template", + "href": null, + "name": "title", + "property": null, + "rel": null, + }, + "tag": "meta", + }, + { + "attributes": { + "content": "SEO description", + "href": null, + "name": "description", + "property": null, + "rel": null, + }, + "tag": "meta", + }, + { + "attributes": { + "content": null, + "href": "http://127.0.0.1:8000/en/seo-test-all-filled", + "name": null, + "property": null, + "rel": "canonical", + }, + "tag": "link", + }, + { + "attributes": { + "content": null, + "href": "/sites/default/files/2024-04/the_silverback.jpeg", + "name": null, + "property": null, + "rel": "image_src", + }, + "tag": "link", + }, + { + "attributes": { + "content": "http://127.0.0.1:8000/en/seo-test-all-filled", + "href": null, + "name": null, + "property": "og:url", + "rel": null, + }, + "tag": "meta", + }, + { + "attributes": { + "content": "Overwritten SEO title | Silverback Drupal Template", + "href": null, + "name": null, + "property": "og:title", + "rel": null, + }, + "tag": "meta", + }, + { + "attributes": { + "content": "SEO description", + "href": null, + "name": null, + "property": "og:description", + "rel": null, + }, + "tag": "meta", + }, + { + "attributes": { + "content": "http://127.0.0.1:8000/sites/default/files/2024-04/the_silverback.jpeg", + "href": null, + "name": null, + "property": "og:image", + "rel": null, + }, + "tag": "meta", + }, + ], + "path": "/en/seo-test-all-filled", + "teaserImage": null, + "title": "SEO test - all filled in", }, { - "attributes": { - "content": "", - "href": null, - "name": null, - "property": "og:description", - "rel": null, + "content": [ + { + "__typename": "BlockMarkup", + }, + ], + "hero": { + "__typename": "Hero", + "image": null, }, - "tag": "meta", + "locale": "de", + "metaTags": [ + { + "attributes": { + "content": "Overwritten SEO title DE | Silverback Drupal Template", + "href": null, + "name": "title", + "property": null, + "rel": null, + }, + "tag": "meta", + }, + { + "attributes": { + "content": "SEO description DE", + "href": null, + "name": "description", + "property": null, + "rel": null, + }, + "tag": "meta", + }, + { + "attributes": { + "content": null, + "href": "http://127.0.0.1:8000/de/seo-test-all-filled-de", + "name": null, + "property": null, + "rel": "canonical", + }, + "tag": "link", + }, + { + "attributes": { + "content": null, + "href": "/sites/default/files/2024-04/the_silverback.jpeg", + "name": null, + "property": null, + "rel": "image_src", + }, + "tag": "link", + }, + { + "attributes": { + "content": "http://127.0.0.1:8000/de/seo-test-all-filled-de", + "href": null, + "name": null, + "property": "og:url", + "rel": null, + }, + "tag": "meta", + }, + { + "attributes": { + "content": "Overwritten SEO title DE | Silverback Drupal Template", + "href": null, + "name": null, + "property": "og:title", + "rel": null, + }, + "tag": "meta", + }, + { + "attributes": { + "content": "SEO description DE", + "href": null, + "name": null, + "property": "og:description", + "rel": null, + }, + "tag": "meta", + }, + { + "attributes": { + "content": "http://127.0.0.1:8000/sites/default/files/2024-04/the_silverback.jpeg", + "href": null, + "name": null, + "property": "og:image", + "rel": null, + }, + "tag": "meta", + }, + ], + "path": "/de/seo-test-all-filled-de", + "teaserImage": null, + "title": "SEO test - all filled in DE", }, ], - "path": "/en/page-minimal", - "teaserImage": null, - "title": "Page: minimal", }, }, } diff --git a/turbo.json b/turbo.json index a7f24e4de..e7d0484df 100644 --- a/turbo.json +++ b/turbo.json @@ -35,7 +35,7 @@ "dependsOn": ["test:static"] }, "test:integration": { - "dependsOn": ["build", "test:unit", "^test:integration"] + "dependsOn": ["test:unit"] } } }