diff --git a/.ddev/commands/web/build-trial b/.ddev/commands/web/build-trial deleted file mode 100755 index 4f32ab06fc5de5e632ff2be006488205e5aa88da..0000000000000000000000000000000000000000 --- a/.ddev/commands/web/build-trial +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env sh - -## Description: Builds the trial experience, and its artifact, from the current code base. -## Usage: build-trial -## Example: "ddev build-trial" - -# This script is also used by our CI pipeline to build the published trial -# artifact. -# @see .gitlab-ci.yml - -# Stop this entire script if any one command fails. -set -e - -cd trial - -# Blow away any previous build. -rm -r -f build ./public/assets/trial.zip - -cp -R ../project_template build -cp -R -v ./artifact_assets/* build -cd build - -# Ensure all the recipes are defined as path repositories. -find ../../ -maxdepth 1 -type d -name 'drupal_cms_*' -exec composer config repositories.{} path {} ';' - -# Force Composer Patches to rebuild the patch list when dependencies are -# installed. -rm -r -f patches.lock.json - -# Append to `default.settings.php` for default settings needed in WebAssembly, such as disabling permission hardening -# and CSS/JS aggregation. -composer config --merge --json 'extra.drupal-scaffold.file-mapping' '{"[web-root]/sites/default/default.settings.php": {"append": "./scaffold/default.settings.php"}}' - -# Make the trial module available as a Composer package, and install it along with -# all other dependencies. -composer config repositories.drupal_cms_trial path drupal_cms_trial -COMPOSER_MIRROR_PATH_REPOS=1 composer require --update-no-dev drupal/drupal_cms_trial - -# Minimize the size of the artifact by deleting stuff we'll never need for -# the trial. -find . -depth -type d -name tests -exec rm -r -f "{}" ';' - -# Create the trial archive. -composer archive --dir=../public/assets --file=trial --format=zip - -# If we're not running in CI, cleanly install the trial experience's dependencies and build it. -if [ -z "$CI" ]; then - cd .. - npm clean-install - npm run build -fi diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 715d37b627b250f26b273156733e1d057e97f0a2..36cf68d7991d93e848f212bb4fe2c8256af75e1e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -82,25 +82,6 @@ build test project: rules: - when: on_success -build trial artifact: - stage: build - variables: - DRUPAL_CMS_TRIAL: 1 - script: - - .ddev/commands/web/build-trial - - mv ./trial/public/assets/trial.zip . - - cd trial/build - - vendor/bin/drush site:install --yes - - composer archive --dir=../.. --file=trial-installed --format=zip - artifacts: - paths: - - trial.zip - - trial-installed.zip - expire_in: 1 day - public: true - rules: - - when: on_success - .start-apache: &start-apache - service apache2 start - cd /var/www/html @@ -172,18 +153,6 @@ run end-to-end tests: - *start-apache - npm test -run trial tests: - stage: test - needs: - - 'build trial artifact' - script: - - cp trial.zip trial/tests/fixtures/ - - cd trial - - npm clean-install - - npm run test - rules: - - when: on_success - audit dependencies: stage: test needs: @@ -204,24 +173,3 @@ check spelling: changes: - docs/**/*.md script: npx cspell --show-suggestions --show-context --no-progress docs - -# Build trial. This job name is pre-defined by GitLab, it has to be "pages". -pages: - stage: deploy - needs: - - 'run trial tests' - artifacts: - paths: - - trial/public - rules: - # Only deploy to pages if we're on the default branch, on a push, and not a fork. - - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "push" && $CI_PROJECT_ROOT_NAMESPACE == "project" - changes: - - trial/**/* - - .gitlab-ci.yml - script: - - cd trial - - npm clean-install - - npm run build - - echo "Trial experience was deployed at ${CI_PAGES_URL}" - publish: trial/public diff --git a/CODEOWNERS b/CODEOWNERS index 5d28d5ffa1b9557f8986cd51c4e9d56bee405fd1..75e5c4d123d36a94879700ca0caa64554772b26a 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -47,8 +47,5 @@ /drupal_cms_seo_basic/ /drupal_cms_seo_tools/ -[trial experience track] @mglaman -/trial/ - [documentation] @amberhimesmatz @eojthebrave /docs/ diff --git a/drupal_cms_installer/drupal_cms_installer.profile b/drupal_cms_installer/drupal_cms_installer.profile index 284f31cd3bf89cd28fe73fd959bbb204aed9816a..20e2bc84d12fdfab49331953bd9c9a51de0c8909 100644 --- a/drupal_cms_installer/drupal_cms_installer.profile +++ b/drupal_cms_installer/drupal_cms_installer.profile @@ -3,10 +3,8 @@ declare(strict_types=1); use Drupal\Component\Utility\Random; -use Drupal\Core\Extension\ModuleInstallerInterface; use Drupal\Core\File\FileUrlGeneratorInterface; use Drupal\Core\Installer\Form\SiteConfigureForm; -use Drupal\Core\Installer\Form\SiteSettingsForm; use Drupal\Core\Recipe\Recipe; use Drupal\Core\Recipe\RecipeRunner; use Drupal\drupal_cms_installer\Form\RecipesForm; @@ -24,9 +22,6 @@ function drupal_cms_installer_install_tasks(): array { ->addPsr4('Drupal\\drupal_cms_installer\\', __DIR__ . '/src'); return [ - 'drupal_cms_installer_prepare_trial' => [ - 'run' => getenv('DRUPAL_CMS_TRIAL') ? INSTALL_TASK_RUN_IF_REACHED : INSTALL_TASK_SKIP, - ], 'drupal_cms_installer_uninstall_myself' => [ // As a final task, this profile should uninstall itself. ], @@ -67,11 +62,6 @@ function drupal_cms_installer_install_tasks_alter(array &$tasks, array $install_ // use the passed-in $install_state because it's not passed by reference. $GLOBALS['install_state']['parameters'] += ['langcode' => 'en']; - // The database settings form should be submitted programmatically in the - // trial experience. - $tasks['install_settings_form']['function'] = 'drupal_cms_installer_database_settings'; - unset($tasks['install_settings_form']['type']); - // Submit the site configuration form programmatically. $tasks['install_configure_form'] = [ 'function' => 'drupal_cms_installer_configure_site', @@ -113,11 +103,6 @@ function drupal_cms_installer_apply_recipes(array &$install_state): array { $batch = install_profile_modules($install_state); $batch['title'] = t('Setting up your site'); - // If we're installing for the trial, install the drupal_cms_trial module. - if (getenv('DRUPAL_CMS_TRIAL')) { - $batch['operations'][] = ['_install_module_batch', ['drupal_cms_trial', t('Trial experience module')]]; - } - $cookbook_path = \Drupal::root() . '/recipes'; foreach ($install_state['parameters']['recipes'] as $recipe) { @@ -130,22 +115,6 @@ function drupal_cms_installer_apply_recipes(array &$install_state): array { return $batch; } -/** - * Programmatically submits the database settings form if needed. - */ -function drupal_cms_installer_database_settings(array &$install_state): ?array { - $was_interactive = $install_state['interactive']; - // If we're installing the in-browser trial, submit the form programmatically - // with SQLite as the selected driver. - if (getenv('DRUPAL_CMS_TRIAL')) { - $install_state['interactive'] = FALSE; - $install_state['forms']['install_settings_form']['driver'] = SQLITE_DRIVER; - } - $result = install_get_form(SiteSettingsForm::class, $install_state); - $install_state['interactive'] = $was_interactive; - return $result; -} - /** * Programmatically executes core's site configuration form. */ @@ -210,42 +179,6 @@ function drupal_cms_installer_library_info_alter(array &$libraries, string $exte } } -/** - * Makes configuration changes needed for the in-browser trial. - */ -function drupal_cms_installer_prepare_trial(): void { - // Use a test mail collector, since the trial won't have access to sendmail. - \Drupal::configFactory() - ->getEditable('system.mail') - ->set('interface.default', 'test_mail_collector') - ->save(); - - // Disable CSS and JS aggregation. - \Drupal::configFactory() - ->getEditable('system.performance') - ->set('css.preprocess', FALSE) - ->set('js.preprocess', FALSE) - ->save(); - - // Enable verbose logging. - \Drupal::configFactory() - ->getEditable('system.logging') - ->set('error_level', 'verbose') - ->save(); - - // Disable things that the WebAssembly runtime doesn't (yet) support, like - // running external processes or making HTTP requests. - // @todo revisit once php-wasm maps HTTP requests from PHP to Fetch API. - \Drupal::service(ModuleInstallerInterface::class)->uninstall([ - 'automatic_updates', - 'update', - ]); - \Drupal::configFactory() - ->getEditable('project_browser.admin_settings') - ->set('allow_ui_install', FALSE) - ->save(); -} - /** * Uninstalls this install profile, as a final step. * diff --git a/trial/.gitignore b/trial/.gitignore deleted file mode 100644 index 183b7299a9ab05264785f126c721b4528abadbdc..0000000000000000000000000000000000000000 --- a/trial/.gitignore +++ /dev/null @@ -1,20 +0,0 @@ -*.zip -/public/*.so -/public/*.wasm -/public/php-* -/public/Php* -/public/breakoutRequest.mjs -/public/config.mjs -/public/fsOps.mjs -/public/msg-bus.mjs -/public/parseResponse.mjs -/public/resolveDependencies.mjs -/public/webTransactions.mjs -/public/OutputBuffer.mjs -/public/_Event.mjs -/public/service-worker.js -/public/install-worker.js -/public/worker.js.map -/node_modules -public/styles.css -/build diff --git a/trial/README.md b/trial/README.md deleted file mode 100644 index 60d7aa42d6cfa1813ce66f21d68e6a7da625f908..0000000000000000000000000000000000000000 --- a/trial/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# Drupal CMS Trial Experience - -This contains the WebAssembly trial experience. - -## Run locally - -```shell -ddev launch https://drupal-cms-trial.ddev.site -``` - -This will download the latest published Drupal CMS trial artifact and allow testing JavaScript changes. - -### Testing a custom artifact build - -```shell -ddev build-trial -# Use `local.html` to test the artifact. -ddev launch https://drupal-cms-trial.ddev.site/local.html -``` - -## Tests - -The [cgi-install.test.js](tests/cgi-install.test.js) and [cgi-interactive-install.test.js](tests/cgi-interactive-install.test.js) -allows running PhpCgiNode to test serving the trial over Node instead of the browser. - -This requires a `tests/fixtures/trial.zip` to be available. This can be downloaded from `https://git.drupalcode.org/api/v4/projects/157093/jobs/artifacts/0.x/raw/trial.zip?job=build+trial+artifact` -or a custom build artifact. - -### Testing a custom build from source - -If a build is located at `tests/fixtures/drupal-cms` two debugging tests will run. This allows testing against actual -code instead of having to build the artifact. diff --git a/trial/artifact_assets/drupal_cms_trial/composer.json b/trial/artifact_assets/drupal_cms_trial/composer.json deleted file mode 100644 index 736583ca6e7d5bba7a0b2c1eba34a38228771b58..0000000000000000000000000000000000000000 --- a/trial/artifact_assets/drupal_cms_trial/composer.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "drupal/drupal_cms_trial", - "version": "dev-main", - "type": "drupal-custom-module", - "description": "Provides support code for the in-browser trial of Drupal CMS. Not meant for production use." -} diff --git a/trial/artifact_assets/drupal_cms_trial/drupal_cms_trial.services.yml b/trial/artifact_assets/drupal_cms_trial/drupal_cms_trial.services.yml deleted file mode 100644 index 1e6029434a47a0b373a4f87225cfa76692376335..0000000000000000000000000000000000000000 --- a/trial/artifact_assets/drupal_cms_trial/drupal_cms_trial.services.yml +++ /dev/null @@ -1,4 +0,0 @@ -services: - Drupal\drupal_cms_trial\OutgoingHttpInterceptor: - tags: - - { name: http_client_middleware } diff --git a/trial/artifact_assets/drupal_cms_trial/oembed-providers.json b/trial/artifact_assets/drupal_cms_trial/oembed-providers.json deleted file mode 100644 index f6c0d1a4eba48b36e9999d73b39c0a51399ff1fc..0000000000000000000000000000000000000000 --- a/trial/artifact_assets/drupal_cms_trial/oembed-providers.json +++ /dev/null @@ -1,4731 +0,0 @@ -[ - { - "provider_name": "23HQ", - "provider_url": "http://www.23hq.com", - "endpoints": [ - { - "schemes": [ - "http://www.23hq.com/*/photo/*" - ], - "url": "http://www.23hq.com/23/oembed" - } - ] - }, - { - "provider_name": "3Q", - "provider_url": "https://3q.video/", - "endpoints": [ - { - "schemes": [ - "https://playout.3qsdn.com/embed/*" - ], - "url": "https://playout.3qsdn.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Abraia", - "provider_url": "https://abraia.me", - "endpoints": [ - { - "schemes": [ - "https://store.abraia.me/*" - ], - "url": "https://api.abraia.me/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Acast", - "provider_url": "https://embed.acast.com", - "endpoints": [ - { - "schemes": [ - "https://play.acast.com/s/*" - ], - "url": "https://oembed.acast.com/v1/embed-player", - "discovery": true, - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "ActBlue", - "provider_url": "https://secure.actblue.com", - "endpoints": [ - { - "schemes": [ - "https://secure.actblue.com/donate/*" - ], - "url": "https://secure.actblue.com/cf/oembed" - } - ] - }, - { - "provider_name": "Adilo", - "provider_url": "https://adilo.bigcommand.com", - "endpoints": [ - { - "schemes": [ - "https://adilo.bigcommand.com/watch/*" - ], - "url": "https://adilo.bigcommand.com/web/oembed", - "discovery": true, - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "afreecaTV", - "provider_url": "https://www.afreecatv.com", - "endpoints": [ - { - "schemes": [ - "https://vod.afreecatv.com/player/", - "https://v.afree.ca/ST/", - "https://vod.afreecatv.com/ST/", - "https://vod.afreecatv.com/PLAYER/STATION/", - "https://play.afreecatv.com/" - ], - "url": "https://openapi.afreecatv.com/oembed/embedinfo", - "discovery": true - } - ] - }, - { - "provider_name": "Altium LLC", - "provider_url": "https://altium.com", - "endpoints": [ - { - "schemes": [ - "https://altium.com/viewer/*" - ], - "url": "https://viewer.altium.com/shell/oembed", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Altru", - "provider_url": "https://www.altrulabs.com", - "endpoints": [ - { - "schemes": [ - "https://app.altrulabs.com/*/*?answer_id=*", - "https://app.altrulabs.com/player/*" - ], - "url": "https://api.altrulabs.com/api/v1/social/oembed", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "amCharts Live Editor", - "provider_url": "https://live.amcharts.com/", - "endpoints": [ - { - "schemes": [ - "http://live.amcharts.com/*", - "https://live.amcharts.com/*" - ], - "url": "https://live.amcharts.com/oembed" - } - ] - }, - { - "provider_name": "Amtraker", - "provider_url": "https://amtraker.com", - "endpoints": [ - { - "schemes": [ - "https://amtraker.com/trains/*", - "https://amtraker.com/trains/*/*", - "https://*.amtraker.com/trains/*", - "https://*.amtraker.com/trains/*/*" - ], - "url": "https://api.amtraker.com/v3/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Animatron", - "provider_url": "https://www.animatron.com/", - "endpoints": [ - { - "schemes": [ - "https://www.animatron.com/project/*", - "https://animatron.com/project/*" - ], - "url": "https://animatron.com/oembed/json", - "discovery": true - } - ] - }, - { - "provider_name": "Animoto", - "provider_url": "http://animoto.com/", - "endpoints": [ - { - "schemes": [ - "http://animoto.com/play/*" - ], - "url": "http://animoto.com/oembeds/create" - } - ] - }, - { - "provider_name": "AnnieMusic", - "provider_url": "https://anniemusic.app", - "endpoints": [ - { - "schemes": [ - "https://anniemusic.app/t/*", - "https://anniemusic.app/p/*" - ], - "url": "https://api.anniemusic.app/api/v1/oembed" - } - ] - }, - { - "provider_name": "ArcGIS StoryMaps", - "provider_url": "https://storymaps.arcgis.com", - "endpoints": [ - { - "schemes": [ - "https://storymaps.arcgis.com/stories/*" - ], - "url": "https://storymaps.arcgis.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Archivos", - "provider_url": "https://app.archivos.digital", - "endpoints": [ - { - "schemes": [ - "https://app.archivos.digital/app/view/*" - ], - "url": "https://app.archivos.digital/oembed/" - } - ] - }, - { - "provider_name": "AssemblrWorld", - "provider_url": "https://assemblrworld.com/", - "endpoints": [ - { - "schemes": [ - "http://*.studio.assemblrworld.com/creation/*", - "http://studio.assemblrworld.com/creation/*", - "http://*.app-edu.assemblrworld.com/Creation/*", - "http://app-edu.assemblrworld.com/Creation/*", - "http://assemblr.world/*", - "http://editor.assemblrworld.com/*", - "http://*.assemblrworld.com/creation/*", - "http://*.assemblrworld.com/Creation/*", - "https://*.studio.assemblrworld.com/creation/*", - "https://studio.assemblrworld.com/creation/*", - "https://*.app-edu.assemblrworld.com/Creation/*", - "https://app-edu.assemblrworld.com/Creation/*", - "https://assemblr.world/*", - "https://editor.assemblrworld.com/*", - "https://*.assemblrworld.com/creation/*", - "https://*.assemblrworld.com/Creation/*" - ], - "url": "https://studio.assemblrworld.com/api/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "audio.com", - "provider_url": "https://audio.com/", - "endpoints": [ - { - "schemes": [ - "https://audio.com/*", - "https://www.audio.com/*", - "http://audio.com/*", - "http://www.audio.com/*" - ], - "url": "https://api.audio.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Audioboom", - "provider_url": "https://audioboom.com", - "endpoints": [ - { - "schemes": [ - "https://audioboom.com/channels/*", - "https://audioboom.com/channel/*", - "https://audioboom.com/playlists/*", - "https://audioboom.com/podcasts/*", - "https://audioboom.com/podcast/*", - "https://audioboom.com/posts/*", - "https://audioboom.com/episodes/*" - ], - "url": "https://audioboom.com/publishing/oembed.{format}", - "formats": [ - "json", - "xml" - ] - } - ] - }, - { - "provider_name": "AudioClip", - "provider_url": "https://audioclip.naver.com", - "endpoints": [ - { - "schemes": [ - "https://audioclip.naver.com/channels/*/clips/*", - "https://audioclip.naver.com/audiobooks/*" - ], - "url": "https://audioclip.naver.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Audiomack", - "provider_url": "https://audiomack.com", - "endpoints": [ - { - "schemes": [ - "https://audiomack.com/*/song/*", - "https://audiomack.com/*/album/*", - "https://audiomack.com/*/playlist/*" - ], - "url": "https://audiomack.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Audiomeans", - "provider_url": "https://audiomeans.fr", - "endpoints": [ - { - "schemes": [ - "https://podcasts.audiomeans.fr/*" - ], - "url": "https://podcasts.audiomeans.fr/services/oembed", - "discovery": false, - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Avocode", - "provider_url": "https://www.avocode.com/", - "endpoints": [ - { - "schemes": [ - "https://app.avocode.com/view/*" - ], - "url": "https://stage-embed.avocode.com/api/oembed", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Backtracks", - "provider_url": "https://backtracks.fm", - "endpoints": [ - { - "schemes": [ - "https://backtracks.fm/*/*/e/*", - "https://backtracks.fm/*/s/*/*", - "https://backtracks.fm/*/*/*/*/e/*/*", - "https://backtracks.fm/*", - "http://backtracks.fm/*" - ], - "url": "https://backtracks.fm/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Balsamiq Cloud", - "provider_url": "https://balsamiq.cloud/", - "endpoints": [ - { - "schemes": [ - "https://balsamiq.cloud/*" - ], - "url": "https://balsamiq.cloud/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Beams.fm", - "provider_url": "http://beams.fm", - "endpoints": [ - { - "schemes": [ - "https://beams.fm/*" - ], - "url": "https://api.beams.fm/oEmbed", - "discovery": true - } - ] - }, - { - "provider_name": "Beautiful.AI", - "provider_url": "https://www.beautiful.ai/", - "endpoints": [ - { - "url": "https://www.beautiful.ai/api/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Behance", - "provider_url": "https://www.behance.net", - "endpoints": [ - { - "schemes": [ - "https://www.behance.net/gallery/*/*", - "https://www.behance.net/*/services/*/*" - ], - "url": "https://www.behance.net/services/oembed", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "biqnetwork", - "provider_url": "https://biqapp.com/", - "endpoints": [ - { - "schemes": [ - "https://cloud.biqapp.com/*" - ], - "url": "https://biqapp.com/api/v1/video/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Blackfire.io", - "provider_url": "https://blackfire.io", - "endpoints": [ - { - "schemes": [ - "https://blackfire.io/profiles/*/graph", - "https://blackfire.io/profiles/compare/*/graph" - ], - "url": "https://blackfire.io/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Blogcast", - "provider_url": "https://blogcast.host/", - "endpoints": [ - { - "schemes": [ - "https://blogcast.host/embed/*", - "https://blogcast.host/embedly/*" - ], - "url": "https://blogcast.host/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Bluesky Social", - "provider_url": "https://bsky.app", - "endpoints": [ - { - "schemes": [ - "https://bsky.app/profile/*/post/*" - ], - "url": "https://embed.bsky.app/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Bookingmood", - "provider_url": "https://www.bookingmood.com", - "endpoints": [ - { - "schemes": [ - "https://www.bookingmood.com/embed/*/*" - ], - "url": "https://bookingmood.com/api/oembed", - "formats": [ - "json", - "xml" - ] - } - ] - }, - { - "provider_name": "Box Office Buz", - "provider_url": "http://boxofficebuz.com", - "endpoints": [ - { - "url": "http://boxofficebuz.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "BrioVR", - "provider_url": "https://view.briovr.com/", - "endpoints": [ - { - "schemes": [ - "https://view.briovr.com/api/v1/worlds/oembed/*" - ], - "url": "https://view.briovr.com/api/v1/worlds/oembed/" - } - ] - }, - { - "provider_name": "Bumper", - "provider_url": "http://www.bumper.com", - "endpoints": [ - { - "schemes": [ - "https://www.bumper.com/oembed/bumper", - "https://www.bumper.com/oembed-s/bumper" - ], - "url": "https://www.bumper.com/oembed/bumper", - "discovery": true - } - ] - }, - { - "provider_name": "Bunny", - "provider_url": "https://bunny.net/", - "endpoints": [ - { - "schemes": [ - "https://iframe.mediadelivery.net/*", - "http://iframe.mediadelivery.net/*", - "https://video.bunnycdn.com/*", - "http://video.bunnycdn.com/*" - ], - "url": "https://video.bunnycdn.com/OEmbed", - "formats": [ - "json" - ], - "discovery": true - } - ] - }, - { - "provider_name": "Buttondown", - "provider_url": "https://buttondown.email/", - "endpoints": [ - { - "schemes": [ - "https://buttondown.email/*" - ], - "url": "https://buttondown.email/embed", - "formats": [ - "json" - ], - "discovery": true - } - ] - }, - { - "provider_name": "Byzart Project", - "provider_url": "https://cmc.byzart.eu", - "endpoints": [ - { - "schemes": [ - "https://cmc.byzart.eu/files/*" - ], - "url": "https://cmc.byzart.eu/oembed/", - "discovery": false - } - ] - }, - { - "provider_name": "Cacoo", - "provider_url": "https://cacoo.com", - "endpoints": [ - { - "schemes": [ - "https://cacoo.com/diagrams/*" - ], - "url": "http://cacoo.com/oembed.{format}" - } - ] - }, - { - "provider_name": "Canva", - "provider_url": "https://www.canva.com", - "endpoints": [ - { - "schemes": [ - "https://www.canva.com/design/*/view" - ], - "url": "https://www.canva.com/_oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Cardinal Blue", - "provider_url": "https://minesweeper.today/", - "endpoints": [ - { - "schemes": [ - "http://minesweeper.today/*", - "https://minesweeper.today/*" - ], - "url": "https://minesweeper.today/api/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "CatBoat", - "provider_url": "http://img.catbo.at/", - "endpoints": [ - { - "schemes": [ - "http://img.catbo.at/*" - ], - "url": "http://img.catbo.at/oembed.json", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Celero", - "provider_url": "https://www.celero.io", - "endpoints": [ - { - "schemes": [ - "https://embeds.celero.io/*" - ], - "url": "https://api.celero.io/api/oembed", - "discovery": true, - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Ceros", - "provider_url": "http://www.ceros.com/", - "endpoints": [ - { - "schemes": [ - "http://view.ceros.com/*", - "https://view.ceros.com/*" - ], - "url": "http://view.ceros.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Chainflix", - "provider_url": "https://chainflix.net", - "endpoints": [ - { - "schemes": [ - "https://chainflix.net/video/*", - "https://chainflix.net/video/embed/*", - "https://*.chainflix.net/video/*", - "https://*.chainflix.net/video/embed/*" - ], - "url": "https://www.chainflix.net/video/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "ChartBlocks", - "provider_url": "http://www.chartblocks.com/", - "endpoints": [ - { - "schemes": [ - "http://public.chartblocks.com/c/*" - ], - "url": "http://embed.chartblocks.com/1.0/oembed" - } - ] - }, - { - "provider_name": "chirbit.com", - "provider_url": "http://www.chirbit.com/", - "endpoints": [ - { - "schemes": [ - "http://chirb.it/*" - ], - "url": "http://chirb.it/oembed.{format}", - "discovery": true - } - ] - }, - { - "provider_name": "CHROCO", - "provider_url": "https://chroco.ooo/", - "endpoints": [ - { - "schemes": [ - "https://chroco.ooo/mypage/*", - "https://chroco.ooo/story/*" - ], - "url": "https://chroco.ooo/embed", - "discovery": true - } - ] - }, - { - "provider_name": "CircuitLab", - "provider_url": "https://www.circuitlab.com/", - "endpoints": [ - { - "schemes": [ - "https://www.circuitlab.com/circuit/*" - ], - "url": "https://www.circuitlab.com/circuit/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "Clipland", - "provider_url": "http://www.clipland.com/", - "endpoints": [ - { - "schemes": [ - "http://www.clipland.com/v/*", - "https://www.clipland.com/v/*" - ], - "url": "https://www.clipland.com/api/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Clyp", - "provider_url": "http://clyp.it/", - "endpoints": [ - { - "schemes": [ - "http://clyp.it/*", - "http://clyp.it/playlist/*" - ], - "url": "http://api.clyp.it/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "CoCo Corp", - "provider_url": "https://ilovecoco.video", - "endpoints": [ - { - "schemes": [ - "https://app.ilovecoco.video/*/embed" - ], - "url": "https://app.ilovecoco.video/api/oembed.{format}", - "discovery": true - } - ] - }, - { - "provider_name": "CodeHS", - "provider_url": "http://www.codehs.com", - "endpoints": [ - { - "schemes": [ - "https://codehs.com/editor/share_abacus/*" - ], - "url": "https://codehs.com/api/sharedprogram/1/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "CodePen", - "provider_url": "https://codepen.io", - "endpoints": [ - { - "schemes": [ - "http://codepen.io/*", - "https://codepen.io/*" - ], - "url": "https://codepen.io/api/oembed" - } - ] - }, - { - "provider_name": "Codepoints", - "provider_url": "https://codepoints.net", - "endpoints": [ - { - "schemes": [ - "http://codepoints.net/*", - "https://codepoints.net/*", - "http://www.codepoints.net/*", - "https://www.codepoints.net/*" - ], - "url": "https://codepoints.net/api/v1/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "CodeSandbox", - "provider_url": "https://codesandbox.io", - "endpoints": [ - { - "schemes": [ - "https://codesandbox.io/s/*", - "https://codesandbox.io/embed/*" - ], - "url": "https://codesandbox.io/oembed" - } - ] - }, - { - "provider_name": "CollegeHumor", - "provider_url": "http://www.collegehumor.com/", - "endpoints": [ - { - "schemes": [ - "http://www.collegehumor.com/video/*" - ], - "url": "http://www.collegehumor.com/oembed.{format}", - "discovery": true - } - ] - }, - { - "provider_name": "Commaful", - "provider_url": "https://commaful.com", - "endpoints": [ - { - "schemes": [ - "https://commaful.com/play/*" - ], - "url": "https://commaful.com/api/oembed/" - } - ] - }, - { - "provider_name": "Coub", - "provider_url": "http://coub.com/", - "endpoints": [ - { - "schemes": [ - "http://coub.com/view/*", - "http://coub.com/embed/*" - ], - "url": "http://coub.com/api/oembed.{format}" - } - ] - }, - { - "provider_name": "Crowd Ranking", - "provider_url": "http://crowdranking.com", - "endpoints": [ - { - "schemes": [ - "http://crowdranking.com/*/*" - ], - "url": "http://crowdranking.com/api/oembed.{format}" - } - ] - }, - { - "provider_name": "Crumb.sh", - "provider_url": "https://crumb.sh", - "endpoints": [ - { - "schemes": [ - "https://crumb.sh/*" - ], - "url": "https://crumb.sh/oembed/" - } - ] - }, - { - "provider_name": "Cueup DJ Booking", - "provider_url": "https://cueup.io", - "endpoints": [ - { - "schemes": [ - "https://cueup.io/user/*/sounds/*" - ], - "url": "https://gql.cueup.io/oembed" - } - ] - }, - { - "provider_name": "Curated", - "provider_url": "https://curated.co/", - "endpoints": [ - { - "schemes": [ - "https://*.curated.co/*" - ], - "url": "https://api.curated.co/oembed", - "formats": [ - "json" - ], - "discovery": true - } - ] - }, - { - "provider_name": "CustomerDB", - "provider_url": "http://customerdb.com/", - "endpoints": [ - { - "schemes": [ - "https://app.customerdb.com/share/*" - ], - "url": "https://app.customerdb.com/embed" - } - ] - }, - { - "provider_name": "dadan", - "provider_url": "https://www.dadan.io", - "endpoints": [ - { - "schemes": [ - "https://app.dadan.io/*", - "https://stage.dadan.io/*" - ], - "url": "https://app.dadan.io/api/video/oembed", - "discovery": true, - "formats": [ - "json", - "xml" - ] - } - ] - }, - { - "provider_name": "Dailymotion", - "provider_url": "https://www.dailymotion.com", - "endpoints": [ - { - "schemes": [ - "https://www.dailymotion.com/video/*", - "https://geo.dailymotion.com/player.html?video=*" - ], - "url": "https://www.dailymotion.com/services/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "DALEXNI", - "provider_url": "https://dalexni.com/", - "endpoints": [ - { - "schemes": [ - "https://dalexni.com/i/*" - ], - "url": "https://dalexni.com/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "Datawrapper", - "provider_url": "http://www.datawrapper.de", - "endpoints": [ - { - "schemes": [ - "https://datawrapper.dwcdn.net/*" - ], - "url": "https://api.datawrapper.de/v3/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "Deseret News", - "provider_url": "https://www.deseret.com", - "endpoints": [ - { - "schemes": [ - "https://*.deseret.com/*" - ], - "url": "https://embed.deseret.com/" - } - ] - }, - { - "provider_name": "Deviantart.com", - "provider_url": "http://www.deviantart.com", - "endpoints": [ - { - "schemes": [ - "http://*.deviantart.com/art/*", - "http://*.deviantart.com/*#/d*", - "http://fav.me/*", - "http://sta.sh/*", - "https://*.deviantart.com/art/*", - "https://*.deviantart.com/*/art/*", - "https://sta.sh/*", - "https://*.deviantart.com/*#/d*" - ], - "url": "http://backend.deviantart.com/oembed" - } - ] - }, - { - "provider_name": "Digiteka", - "provider_url": "https://www.ultimedia.com/", - "endpoints": [ - { - "schemes": [ - "https://www.ultimedia.com/central/video/edit/id/*/topic_id/*/", - "https://www.ultimedia.com/default/index/videogeneric/id/*/showtitle/1/viewnc/1", - "https://www.ultimedia.com/default/index/videogeneric/id/*" - ], - "url": "https://www.ultimedia.com/api/search/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "DocDroid", - "provider_url": "https://www.docdroid.net/", - "endpoints": [ - { - "schemes": [ - "https://*.docdroid.net/*", - "http://*.docdroid.net/*", - "https://docdro.id/*", - "http://docdro.id/*", - "https://*.docdroid.com/*", - "http://*.docdroid.com/*" - ], - "url": "https://www.docdroid.net/api/oembed", - "formats": [ - "json" - ], - "discovery": true - } - ] - }, - { - "provider_name": "Docswell", - "provider_url": "https://docswell.com", - "endpoints": [ - { - "schemes": [ - "http://docswell.com/s/*/*", - "https://docswell.com/s/*/*", - "http://www.docswell.com/s/*/*", - "https://www.docswell.com/s/*/*" - ], - "url": "https://www.docswell.com/service/oembed", - "discovery": true, - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Dotsub", - "provider_url": "http://dotsub.com/", - "endpoints": [ - { - "schemes": [ - "http://dotsub.com/view/*" - ], - "url": "http://dotsub.com/services/oembed" - } - ] - }, - { - "provider_name": "Dream Broker", - "provider_url": "https://dreambroker.com", - "endpoints": [ - { - "schemes": [ - "https://www.dreambroker.com/channel/*/*" - ], - "url": "https://dreambroker.com/channel/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "DTube", - "provider_url": "https://d.tube/", - "endpoints": [ - { - "schemes": [ - "https://d.tube/v/*" - ], - "url": "https://api.d.tube/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "EchoesHQ", - "provider_url": "https://echoeshq.com", - "endpoints": [ - { - "schemes": [ - "http://app.echoeshq.com/embed/*" - ], - "url": "https://api.echoeshq.com/oembed", - "formats": [ - "json", - "xml" - ], - "discovery": true - } - ] - }, - { - "provider_name": "eduMedia", - "provider_url": "https://www.edumedia-sciences.com/", - "endpoints": [ - { - "url": "https://www.edumedia-sciences.com/oembed.json", - "discovery": true - }, - { - "url": "https://www.edumedia-sciences.com/oembed.xml", - "discovery": true - } - ] - }, - { - "provider_name": "EgliseInfo", - "provider_url": "http://egliseinfo.catholique.fr/", - "endpoints": [ - { - "schemes": [ - "http://egliseinfo.catholique.fr/*" - ], - "url": "http://egliseinfo.catholique.fr/api/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Embedery", - "provider_url": "https://embedery.com/", - "endpoints": [ - { - "schemes": [ - "https://embedery.com/widget/*" - ], - "url": "https://embedery.com/api/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Ethfiddle", - "provider_url": "https://www.ethfiddle.com/", - "endpoints": [ - { - "schemes": [ - "https://ethfiddle.com/*" - ], - "url": "https://ethfiddle.com/services/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "EventLive", - "provider_url": "https://eventlive.pro", - "endpoints": [ - { - "schemes": [ - "https://evt.live/*", - "https://evt.live/*/*", - "https://live.eventlive.pro/*", - "https://live.eventlive.pro/*/*" - ], - "url": "https://evt.live/api/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "everviz", - "provider_url": "https://everviz.com", - "endpoints": [ - { - "schemes": [ - "https://app.everviz.com/embed/*", - "http://app.everviz.com/embed/*" - ], - "url": "https://api.everviz.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Ex.Co", - "provider_url": "https://ex.co", - "endpoints": [ - { - "schemes": [ - "https://app.ex.co/stories/*", - "https://www.playbuzz.com/*" - ], - "url": "https://oembed.ex.co/item", - "discovery": false - } - ] - }, - { - "provider_name": "Eyrie", - "provider_url": "https://eyrie.io/", - "endpoints": [ - { - "schemes": [ - "https://eyrie.io/board/*", - "https://eyrie.io/sparkfun/*" - ], - "url": "https://eyrie.io/v1/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Facebook", - "provider_url": "https://www.facebook.com/", - "endpoints": [ - { - "schemes": [ - "https://www.facebook.com/*/posts/*", - "https://www.facebook.com/*/activity/*", - "https://www.facebook.com/*/photos/*", - "https://www.facebook.com/photo.php?fbid=*", - "https://www.facebook.com/photos/*", - "https://www.facebook.com/permalink.php?story_fbid=*", - "https://www.facebook.com/media/set?set=*", - "https://www.facebook.com/questions/*", - "https://www.facebook.com/notes/*/*/*" - ], - "url": "https://graph.facebook.com/v16.0/oembed_post", - "discovery": false - }, - { - "schemes": [ - "https://www.facebook.com/*/videos/*", - "https://www.facebook.com/video.php?id=*", - "https://www.facebook.com/video.php?v=*" - ], - "url": "https://graph.facebook.com/v16.0/oembed_video", - "discovery": false - }, - { - "schemes": [ - "https://www.facebook.com/*" - ], - "url": "https://graph.facebook.com/v16.0/oembed_page", - "discovery": false - } - ] - }, - { - "provider_name": "Fader", - "provider_url": "https://app.getfader.com", - "endpoints": [ - { - "schemes": [ - "https://app.getfader.com/projects/*/publish" - ], - "url": "https://app.getfader.com/api/oembed", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Faithlife TV", - "provider_url": "https://faithlifetv.com", - "endpoints": [ - { - "schemes": [ - "https://faithlifetv.com/items/*", - "https://faithlifetv.com/items/resource/*/*", - "https://faithlifetv.com/media/*", - "https://faithlifetv.com/media/assets/*", - "https://faithlifetv.com/media/resource/*/*" - ], - "url": "https://faithlifetv.com/api/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Figma", - "provider_url": "https://www.figma.com", - "endpoints": [ - { - "schemes": [ - "https://www.figma.com/file/*" - ], - "url": "https://www.figma.com/api/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Firework", - "provider_url": "https://fireworktv.com/", - "endpoints": [ - { - "schemes": [ - "https://*.fireworktv.com/*", - "https://*.fireworktv.com/embed/*/v/*" - ], - "url": "https://www.fireworktv.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "FITE", - "provider_url": "https://www.fite.tv/", - "endpoints": [ - { - "schemes": [ - "https://www.fite.tv/watch/*" - ], - "url": "https://www.fite.tv/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Flat", - "provider_url": "https://flat.io", - "endpoints": [ - { - "schemes": [ - "https://flat.io/score/*", - "https://*.flat.io/score/*" - ], - "url": "https://flat.io/services/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Flickr", - "provider_url": "https://www.flickr.com/", - "endpoints": [ - { - "schemes": [ - "http://*.flickr.com/photos/*", - "http://flic.kr/p/*", - "http://flic.kr/s/*", - "https://*.flickr.com/photos/*", - "https://flic.kr/p/*", - "https://flic.kr/s/*", - "https://*.*.flickr.com/*/*", - "http://*.*.flickr.com/*/*" - ], - "url": "https://www.flickr.com/services/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "Flourish", - "provider_url": "https://flourish.studio/", - "endpoints": [ - { - "schemes": [ - "https://public.flourish.studio/visualisation/*", - "https://public.flourish.studio/story/*" - ], - "url": "https://app.flourish.studio/api/v1/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "FlowHubOrg", - "provider_url": "https://flows.flowhub.org", - "endpoints": [ - { - "url": "https://flowhub.org/o/embed", - "schemes": [ - "https://flowhub.org/f/*", - "https://flowhub.org/s/*" - ], - "discovery": true - } - ] - }, - { - "provider_name": "Fooday", - "provider_url": "https://fooday.app", - "endpoints": [ - { - "schemes": [ - "https://fooday.app/*/reviews/*", - "https://fooday.app/*/spots/*" - ], - "url": "https://fooday.app/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "FOX SPORTS Australia", - "provider_url": "http://www.foxsports.com.au", - "endpoints": [ - { - "schemes": [ - "http://fiso.foxsports.com.au/isomorphic-widget/*", - "https://fiso.foxsports.com.au/isomorphic-widget/*" - ], - "url": "https://fiso.foxsports.com.au/oembed" - } - ] - }, - { - "provider_name": "FrameBuzz", - "provider_url": "https://framebuzz.com/", - "endpoints": [ - { - "schemes": [ - "http://framebuzz.com/v/*", - "https://framebuzz.com/v/*" - ], - "url": "https://framebuzz.com/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "Framer", - "provider_url": "https://www.framer.com", - "endpoints": [ - { - "schemes": [ - "https://framer.com/share/*", - "https://framer.com/embed/*" - ], - "url": "https://api.framer.com/web/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Geograph Britain and Ireland", - "provider_url": "https://www.geograph.org.uk/", - "endpoints": [ - { - "schemes": [ - "http://*.geograph.org.uk/*", - "http://*.geograph.co.uk/*", - "http://*.geograph.ie/*", - "http://*.wikimedia.org/*_geograph.org.uk_*" - ], - "url": "http://api.geograph.org.uk/api/oembed" - } - ] - }, - { - "provider_name": "Geograph Channel Islands", - "provider_url": "http://channel-islands.geograph.org/", - "endpoints": [ - { - "schemes": [ - "http://*.geograph.org.gg/*", - "http://*.geograph.org.je/*", - "http://channel-islands.geograph.org/*", - "http://channel-islands.geographs.org/*", - "http://*.channel.geographs.org/*" - ], - "url": "http://www.geograph.org.gg/api/oembed" - } - ] - }, - { - "provider_name": "Geograph Germany", - "provider_url": "http://geo-en.hlipp.de/", - "endpoints": [ - { - "schemes": [ - "http://geo-en.hlipp.de/*", - "http://geo.hlipp.de/*", - "http://germany.geograph.org/*" - ], - "url": "http://geo.hlipp.de/restapi.php/api/oembed" - } - ] - }, - { - "provider_name": "Getty Images", - "provider_url": "http://www.gettyimages.com/", - "endpoints": [ - { - "schemes": [ - "http://gty.im/*" - ], - "url": "http://embed.gettyimages.com/oembed", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Gifnote", - "provider_url": "https://www.gifnote.com/", - "endpoints": [ - { - "url": "https://www.gifnote.com/services/oembed", - "schemes": [ - "https://www.gifnote.com/play/*" - ], - "discovery": true - } - ] - }, - { - "provider_name": "GIPHY", - "provider_url": "https://giphy.com", - "endpoints": [ - { - "schemes": [ - "https://giphy.com/gifs/*", - "https://giphy.com/clips/*", - "http://gph.is/*", - "https://media.giphy.com/media/*/giphy.gif" - ], - "url": "https://giphy.com/services/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "GloriaTV", - "provider_url": "https://gloria.tv/", - "endpoints": [ - { - "url": "https://gloria.tv/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "GMetri", - "provider_url": "https://www.gmetri.com/", - "endpoints": [ - { - "schemes": [ - "https://view.gmetri.com/*", - "https://*.gmetri.com/*" - ], - "url": "https://embed.gmetri.com/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "Gong", - "provider_url": "https://www.gong.io/", - "endpoints": [ - { - "schemes": [ - "https://app.gong.io/call?id=*" - ], - "url": "https://app.gong.io/oembed", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Grain", - "provider_url": "https://grain.com", - "endpoints": [ - { - "schemes": [ - "https://grain.co/highlight/*", - "https://grain.co/share/*", - "https://grain.com/share/*" - ], - "url": "https://api.grain.com/_/api/oembed" - } - ] - }, - { - "provider_name": "GT Channel", - "provider_url": "https://gtchannel.com", - "endpoints": [ - { - "schemes": [ - "https://gtchannel.com/watch/*" - ], - "url": "https://api.luminery.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Gumlet", - "provider_url": "https://www.gumlet.com/", - "endpoints": [ - { - "schemes": [ - "https://gumlet.tv/watch/*", - "https://www.gumlet.com/watch/*", - "https://play.gumlet.io/embed/*" - ], - "url": "https://api.gumlet.com/v1/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Gyazo", - "provider_url": "https://gyazo.com", - "endpoints": [ - { - "schemes": [ - "https://gyazo.com/*" - ], - "url": "https://api.gyazo.com/api/oembed", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "HASH", - "provider_url": "https://hash.ai", - "endpoints": [ - { - "schemes": [ - "https://core.hash.ai/@*" - ], - "url": "https://api.hash.ai/oembed", - "discovery": false - } - ] - }, - { - "provider_name": "hearthis.at", - "provider_url": "https://hearthis.at/", - "endpoints": [ - { - "schemes": [ - "https://hearthis.at/*/*/", - "https://hearthis.at/*/set/*/" - ], - "url": "https://hearthis.at/oembed/?format=json", - "discovery": true - } - ] - }, - { - "provider_name": "Heyzine", - "provider_url": "https://heyzine.com", - "endpoints": [ - { - "schemes": [ - "https://heyzine.com/flip-book/*", - "https://*.hflip.co/*", - "https://*.aflip.in/*" - ], - "url": "https://heyzine.com/api1/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "hihaho", - "provider_url": "https://www.hihaho.com", - "endpoints": [ - { - "schemes": [ - "https://player.hihaho.com/*" - ], - "url": "https://player.hihaho.com/services/oembed", - "formats": [ - "json", - "xml" - ] - } - ] - }, - { - "provider_name": "HippoVideo", - "provider_url": "https://hippovideo.io", - "endpoints": [ - { - "schemes": [ - "http://*.hippovideo.io/*", - "https://*.hippovideo.io/*" - ], - "url": "https://www.hippovideo.io/services/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Homey", - "provider_url": "https://homey.app", - "endpoints": [ - { - "schemes": [ - "https://homey.app/f/*", - "https://homey.app/*/flow/*" - ], - "url": "https://homey.app/api/oembed/flow", - "discovery": true - } - ] - }, - { - "provider_name": "Hopvue", - "provider_url": "https://www.hopvue.com", - "endpoints": [ - { - "schemes": [ - "https://*.hopvue.com/*" - ], - "url": "https://portal.hopvue.com/api/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "HuffDuffer", - "provider_url": "http://huffduffer.com", - "endpoints": [ - { - "schemes": [ - "http://huffduffer.com/*/*" - ], - "url": "http://huffduffer.com/oembed" - } - ] - }, - { - "provider_name": "Hulu", - "provider_url": "http://www.hulu.com/", - "endpoints": [ - { - "schemes": [ - "http://www.hulu.com/watch/*" - ], - "url": "http://www.hulu.com/api/oembed.{format}" - } - ] - }, - { - "provider_name": "Ideamapper", - "provider_url": "https://ideamapper.com/", - "endpoints": [ - { - "schemes": [ - "https://oembed.ideamapper.com/*" - ], - "url": "https://oembed.ideamapper.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Idomoo", - "provider_url": "https://idomoo.com/", - "endpoints": [ - { - "schemes": [ - "https://*.idomoo.com/*" - ], - "url": "https://oembed.idomoo.com/oembed", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "iFixit", - "provider_url": "http://www.iFixit.com", - "endpoints": [ - { - "schemes": [ - "http://www.ifixit.com/Guide/View/*" - ], - "url": "http://www.ifixit.com/Embed" - } - ] - }, - { - "provider_name": "IFTTT", - "provider_url": "http://www.ifttt.com/", - "endpoints": [ - { - "schemes": [ - "http://ifttt.com/recipes/*" - ], - "url": "http://www.ifttt.com/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "iHeartRadio", - "provider_url": "https://www.iheart.com", - "endpoints": [ - { - "schemes": [ - "https://www.iheart.com/podcast/*/*" - ], - "url": "https://www.iheart.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "iMenuPro", - "provider_url": "https://imenupro.com", - "endpoints": [ - { - "schemes": [ - "http://qr.imenupro.com/*", - "https://qr.imenupro.com/*" - ], - "url": "https://qr.imenupro.com/api/oembed", - "formats": [ - "json" - ], - "discovery": true - } - ] - }, - { - "provider_name": "Incredible", - "provider_url": "https://incredible.dev", - "endpoints": [ - { - "schemes": [ - "https://incredible.dev/watch/*" - ], - "url": "https://oembed.incredible.dev/oembed", - "discovery": true, - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Indaco", - "provider_url": "https://player.indacolive.com/", - "endpoints": [ - { - "schemes": [ - "https://player.indacolive.com/player/jwp/clients/*" - ], - "url": "https://player.indacolive.com/services/oembed", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Infogram", - "provider_url": "https://infogram.com/", - "endpoints": [ - { - "schemes": [ - "https://infogram.com/*" - ], - "url": "https://infogram.com/oembed" - } - ] - }, - { - "provider_name": "Infoveave", - "provider_url": "https://infoveave.net/", - "endpoints": [ - { - "schemes": [ - "https://*.infoveave.net/E/*", - "https://*.infoveave.net/P/*" - ], - "url": "https://infoveave.net/services/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "Injurymap", - "provider_url": "https://www.injurymap.com/", - "endpoints": [ - { - "schemes": [ - "https://www.injurymap.com/exercises/*" - ], - "url": "https://www.injurymap.com/services/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Inoreader", - "provider_url": "https://www.inoreader.com", - "endpoints": [ - { - "schemes": [ - "https://www.inoreader.com/oembed/" - ], - "url": "https://www.inoreader.com/oembed/api/", - "discovery": true - } - ] - }, - { - "provider_name": "inphood", - "provider_url": "http://inphood.com/", - "endpoints": [ - { - "schemes": [ - "http://*.inphood.com/*" - ], - "url": "http://api.inphood.com/oembed", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Insight Timer", - "provider_url": "https://insighttimer.com/", - "endpoints": [ - { - "schemes": [ - "https://insighttimer.com/*" - ], - "url": "https://widgets.insighttimer.com/services/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Instagram", - "provider_url": "https://instagram.com", - "endpoints": [ - { - "schemes": [ - "http://instagram.com/*/p/*,", - "http://www.instagram.com/*/p/*,", - "https://instagram.com/*/p/*,", - "https://www.instagram.com/*/p/*,", - "http://instagram.com/p/*", - "http://instagr.am/p/*", - "http://www.instagram.com/p/*", - "http://www.instagr.am/p/*", - "https://instagram.com/p/*", - "https://instagr.am/p/*", - "https://www.instagram.com/p/*", - "https://www.instagr.am/p/*", - "http://instagram.com/tv/*", - "http://instagr.am/tv/*", - "http://www.instagram.com/tv/*", - "http://www.instagr.am/tv/*", - "https://instagram.com/tv/*", - "https://instagr.am/tv/*", - "https://www.instagram.com/tv/*", - "https://www.instagr.am/tv/*", - "http://www.instagram.com/reel/*", - "https://www.instagram.com/reel/*", - "http://instagram.com/reel/*", - "https://instagram.com/reel/*", - "http://instagr.am/reel/*", - "https://instagr.am/reel/*" - ], - "url": "https://graph.facebook.com/v16.0/instagram_oembed", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Insticator Inc", - "provider_url": "https://www.insticator.com/", - "endpoints": [ - { - "schemes": [ - "https://ppa.insticator.com/embed-unit/*" - ], - "url": "https://www.insticator.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Issuu", - "provider_url": "https://issuu.com/", - "endpoints": [ - { - "schemes": [ - "https://issuu.com/*/docs/*" - ], - "url": "https://issuu.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Itabtech infosys", - "provider_url": "https://samay.itabtechinfosys.com/", - "endpoints": [ - { - "schemes": [ - "https://samay.itabtechinfosys.com/*" - ], - "url": "https://samay.itabtechinfosys.com/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "itemis CREATE", - "provider_url": "https://play.itemis.io", - "endpoints": [ - { - "schemes": [ - "https://play.itemis.io/*" - ], - "url": "https://create.storage.api.itemis.io/api/embed" - } - ] - }, - { - "provider_name": "Jovian", - "provider_url": "https://jovian.com/", - "endpoints": [ - { - "schemes": [ - "https://jovian.ml/*", - "https://jovian.ml/viewer*", - "https://*.jovian.ml/*", - "https://jovian.ai/*", - "https://jovian.ai/viewer*", - "https://*.jovian.ai/*", - "https://jovian.com/*", - "https://jovian.com/viewer*", - "https://*.jovian.com/*" - ], - "url": "https://api.jovian.com/oembed.json", - "discovery": true - } - ] - }, - { - "provider_name": "KakaoTv", - "provider_url": "https://tv.kakao.com/", - "endpoints": [ - { - "schemes": [ - "https://tv.kakao.com/channel/*/cliplink/*", - "https://tv.kakao.com/m/channel/*/cliplink/*", - "https://tv.kakao.com/channel/v/*", - "https://tv.kakao.com/channel/*/livelink/*", - "https://tv.kakao.com/m/channel/*/livelink/*", - "https://tv.kakao.com/channel/l/*" - ], - "url": "https://tv.kakao.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Kickstarter", - "provider_url": "http://www.kickstarter.com", - "endpoints": [ - { - "schemes": [ - "http://www.kickstarter.com/projects/*" - ], - "url": "http://www.kickstarter.com/services/oembed" - } - ] - }, - { - "provider_name": "Kidoju", - "provider_url": "https://www.kidoju.com/", - "endpoints": [ - { - "schemes": [ - "https://www.kidoju.com/en/x/*/*", - "https://www.kidoju.com/fr/x/*/*" - ], - "url": "https://www.kidoju.com/api/oembed" - } - ] - }, - { - "provider_name": "Kirim.Email", - "provider_url": "https://kirim.email/", - "endpoints": [ - { - "schemes": [ - "https://halaman.email/form/*", - "https://aplikasi.kirim.email/form/*" - ], - "url": "https://halaman.email/service/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Kit", - "provider_url": "https://kit.co/", - "endpoints": [ - { - "schemes": [ - "http://kit.co/*/*", - "https://kit.co/*/*" - ], - "url": "https://embed.kit.co/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Kitchenbowl", - "provider_url": "http://www.kitchenbowl.com", - "endpoints": [ - { - "schemes": [ - "http://www.kitchenbowl.com/recipe/*" - ], - "url": "http://www.kitchenbowl.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "kmdr", - "provider_url": "https://kmdr.sh", - "endpoints": [ - { - "schemes": [ - "https://app.kmdr.sh/h/*", - "https://app.kmdr.sh/history/*" - ], - "url": "https://api.kmdr.sh/services/oembed" - } - ] - }, - { - "provider_name": "Knacki", - "provider_url": "http://jdr.knacki.info", - "endpoints": [ - { - "schemes": [ - "http://jdr.knacki.info/meuh/*", - "https://jdr.knacki.info/meuh/*" - ], - "url": "https://jdr.knacki.info/oembed" - } - ] - }, - { - "provider_name": "Knowledge Pad", - "provider_url": "https://knowledgepad.co/", - "endpoints": [ - { - "schemes": [ - "https://knowledgepad.co/#/knowledge/*" - ], - "url": "https://api.spoonacular.com/knowledge/oembed", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Kooapp", - "provider_url": "https://kooapp.com", - "endpoints": [ - { - "schemes": [ - "https://*.kooapp.com/koo/*", - "http://*.kooapp.com/koo/*" - ], - "url": "https://embed.kooapp.com/services/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Kurozora", - "provider_url": "https://kurozora.app/", - "endpoints": [ - { - "schemes": [ - "https://kurozora.app/episodes/*", - "https://kurozora.app/songs/*" - ], - "url": "https://kurozora.app/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "LearningApps.org", - "provider_url": "http://learningapps.org/", - "endpoints": [ - { - "schemes": [ - "http://learningapps.org/*" - ], - "url": "http://learningapps.org/oembed.php", - "discovery": true - } - ] - }, - { - "provider_name": "LeMans.Pod", - "provider_url": "https://umotion-test.univ-lemans.fr/", - "endpoints": [ - { - "schemes": [ - "https://umotion-test.univ-lemans.fr/video/*" - ], - "url": "https://umotion-test.univ-lemans.fr/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Lille.Pod", - "provider_url": "https://pod.univ-lille.fr/", - "endpoints": [ - { - "schemes": [ - "https://pod.univ-lille.fr/video/*" - ], - "url": "https://pod.univ-lille.fr/video/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Line Place", - "provider_url": "https://place.line.me", - "endpoints": [ - { - "schemes": [ - "https://place.line.me/businesses/*" - ], - "url": "https://place.line.me/oembed" - } - ] - }, - { - "provider_name": "Livestream", - "provider_url": "https://livestream.com/", - "endpoints": [ - { - "schemes": [ - "https://livestream.com/accounts/*/events/*", - "https://livestream.com/accounts/*/events/*/videos/*", - "https://livestream.com/*/events/*", - "https://livestream.com/*/events/*/videos/*", - "https://livestream.com/*/*", - "https://livestream.com/*/*/videos/*" - ], - "url": "https://livestream.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "LottieFiles", - "provider_url": "https://lottiefiles.com/", - "endpoints": [ - { - "schemes": [ - "https://lottiefiles.com/*", - "https://*.lottiefiles.com/*", - "https://*.lottie.host/*", - "https://lottie.host/*" - ], - "url": "https://embed.lottiefiles.com/oembed", - "discovery": true, - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Ludus", - "provider_url": "https://ludus.one", - "endpoints": [ - { - "schemes": [ - "https://app.ludus.one/*" - ], - "url": "https://app.ludus.one/oembed", - "discovery": true, - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Lumiere", - "provider_url": "https://latd.com", - "endpoints": [ - { - "schemes": [ - "https://*.lumiere.is/v/*" - ], - "url": "https://admin.lumiere.is/api/services/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "MathEmbed", - "provider_url": "http://mathembed.com", - "endpoints": [ - { - "schemes": [ - "http://mathembed.com/latex?inputText=*", - "http://mathembed.com/latex?inputText=*" - ], - "url": "http://mathembed.com/oembed" - } - ] - }, - { - "provider_name": "Matterport", - "provider_url": "https://matterport.com/", - "endpoints": [ - { - "url": "https://my.matterport.com/api/v1/models/oembed/", - "discovery": true, - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "me.me", - "provider_url": "https://me.me/", - "endpoints": [ - { - "schemes": [ - "https://me.me/i/*" - ], - "url": "https://me.me/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Mediastream", - "provider_url": "https://mdstrm.com/", - "endpoints": [ - { - "schemes": [ - "https://mdstrm.com/embed/*", - "https://mdstrm.com/live-stream/*", - "https://mdstrm.com/image/*" - ], - "url": "https://mdstrm.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Medienarchiv der K\u00fcnste - Z\u00fcrcher Hochschule der K\u00fcnste", - "provider_url": "https://medienarchiv.zhdk.ch/", - "endpoints": [ - { - "schemes": [ - "https://medienarchiv.zhdk.ch/entries/*" - ], - "url": "https://medienarchiv.zhdk.ch/oembed.{format}", - "discovery": true - } - ] - }, - { - "provider_name": "Mermaid Ink", - "provider_url": "https://mermaid.ink", - "endpoints": [ - { - "schemes": [ - "https://mermaid.ink/img/*", - "https://mermaid.ink/svg/*" - ], - "url": "https://mermaid.ink/services/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Microsoft Stream", - "provider_url": "https://stream.microsoft.com", - "endpoints": [ - { - "schemes": [ - "https://*.microsoftstream.com/video/*", - "https://*.microsoftstream.com/channel/*" - ], - "url": "https://web.microsoftstream.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Minerva", - "provider_url": "https://www.minervaknows.com", - "endpoints": [ - { - "schemes": [ - "https://www.minervaknows.com/featured-recipes/*", - "https://www.minervaknows.com/themes/*", - "https://www.minervaknows.com/themes/*/recipes/*", - "https://app.minervaknows.com/recipes/*", - "https://app.minervaknows.com/recipes/*/follow" - ], - "url": "https://oembed.minervaknows.com", - "formats": [ - "json" - ], - "discovery": true - } - ] - }, - { - "provider_name": "Miro", - "provider_url": "https://miro.com/", - "endpoints": [ - { - "schemes": [ - "https://miro.com/app/board/*" - ], - "url": "https://miro.com/api/v1/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "MixCloud", - "provider_url": "https://mixcloud.com/", - "endpoints": [ - { - "schemes": [ - "http://www.mixcloud.com/*/*/", - "https://www.mixcloud.com/*/*/" - ], - "url": "https://www.mixcloud.com/oembed/" - } - ] - }, - { - "provider_name": "Mixpanel", - "provider_url": "https://mixpanel.com/", - "endpoints": [ - { - "schemes": [ - "https://mixpanel.com/*" - ], - "url": "https://mixpanel.com/api/app/embed/oembed/" - } - ] - }, - { - "provider_name": "Moby Picture", - "provider_url": "http://www.mobypicture.com", - "endpoints": [ - { - "schemes": [ - "http://www.mobypicture.com/user/*/view/*", - "http://moby.to/*" - ], - "url": "http://api.mobypicture.com/oEmbed" - } - ] - }, - { - "provider_name": "Music Box Maniacs", - "provider_url": "https://musicboxmaniacs.com/", - "endpoints": [ - { - "schemes": [ - "https://musicboxmaniacs.com/explore/melody/*" - ], - "url": "https://musicboxmaniacs.com/embed/", - "formats": [ - "json" - ], - "discovery": true - } - ] - }, - { - "provider_name": "myBeweeg", - "provider_url": "https://mybeweeg.com", - "endpoints": [ - { - "schemes": [ - "https://mybeweeg.com/w/*" - ], - "url": "https://mybeweeg.com/services/oembed" - } - ] - }, - { - "provider_name": "MySQL Visual Explain", - "provider_url": "https://mysqlexplain.com", - "endpoints": [ - { - "schemes": [ - "https://mysqlexplain.com/explain/*", - "https://embed.mysqlexplain.com/explain/*" - ], - "url": "https://api.mysqlexplain.com/v2/oembed.json", - "formats": [ - "json" - ], - "discovery": true - } - ] - }, - { - "provider_name": "Namchey", - "provider_url": "https://namchey.com", - "endpoints": [ - { - "schemes": [ - "https://namchey.com/embeds/*" - ], - "url": "https://namchey.com/api/oembed", - "formats": [ - "json", - "xml" - ], - "discovery": true - } - ] - }, - { - "provider_name": "nanoo.tv", - "provider_url": "https://www.nanoo.tv/", - "endpoints": [ - { - "schemes": [ - "http://*.nanoo.tv/link/*", - "http://nanoo.tv/link/*", - "http://*.nanoo.pro/link/*", - "http://nanoo.pro/link/*", - "https://*.nanoo.tv/link/*", - "https://nanoo.tv/link/*", - "https://*.nanoo.pro/link/*", - "https://nanoo.pro/link/*", - "http://media.zhdk.ch/signatur/*", - "http://new.media.zhdk.ch/signatur/*", - "https://media.zhdk.ch/signatur/*", - "https://new.media.zhdk.ch/signatur/*" - ], - "url": "https://www.nanoo.tv/services/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Nasjonalbiblioteket", - "provider_url": "https://www.nb.no/", - "endpoints": [ - { - "schemes": [ - "https://www.nb.no/items/*" - ], - "url": "https://api.nb.no/catalog/v1/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Natural Atlas", - "provider_url": "https://naturalatlas.com/", - "endpoints": [ - { - "schemes": [ - "https://naturalatlas.com/*", - "https://naturalatlas.com/*/*", - "https://naturalatlas.com/*/*/*", - "https://naturalatlas.com/*/*/*/*" - ], - "url": "https://naturalatlas.com/oembed.{format}", - "discovery": true, - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "NDLA - Norwegian Digital Learning Arena", - "provider_url": "https://ndla.no", - "endpoints": [ - { - "schemes": [ - "https://ndla.no/*", - "https://ndla.no/article/*", - "https://ndla.no/audio/*", - "https://ndla.no/concept/*", - "https://ndla.no/image/*", - "https://ndla.no/video/*" - ], - "url": "https://ndla.no/oembed", - "discovery": false - } - ] - }, - { - "provider_name": "Nebula", - "provider_url": "https://nebula.tv", - "endpoints": [ - { - "url": "https://nebula.tv/api/oembed", - "formats": [ - "json" - ], - "schemes": [ - "https://nebula.tv/videos/*" - ] - } - ] - }, - { - "provider_name": "Nebula Beta", - "provider_url": "https://beta.nebula.tv", - "endpoints": [ - { - "url": "https://beta.nebula.tv/api/oembed", - "formats": [ - "json" - ], - "schemes": [ - "https://beta.nebula.tv/videos/*" - ] - } - ] - }, - { - "provider_name": "neetoRecord", - "provider_url": "https://neetorecord.com", - "endpoints": [ - { - "schemes": [ - "https://*.neetorecord.com/watch/*" - ], - "url": "https://api.neetorecord.com/api/v1/oembed" - } - ] - }, - { - "provider_name": "nfb.ca", - "provider_url": "http://www.nfb.ca/", - "endpoints": [ - { - "schemes": [ - "http://*.nfb.ca/film/*" - ], - "url": "http://www.nfb.ca/remote/services/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "NoPaste", - "provider_url": "https://nopaste.ml", - "endpoints": [ - { - "schemes": [ - "https://nopaste.ml/*" - ], - "url": "https://oembed.nopaste.ml", - "discovery": false - } - ] - }, - { - "provider_name": "Observable", - "provider_url": "https://observablehq.com", - "endpoints": [ - { - "schemes": [ - "https://observablehq.com/@*/*", - "https://observablehq.com/d/*", - "https://observablehq.com/embed/*" - ], - "url": "https://api.observablehq.com/oembed", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Odds.com.au", - "provider_url": "https://www.odds.com.au", - "endpoints": [ - { - "schemes": [ - "https://www.odds.com.au/*", - "https://odds.com.au/*" - ], - "url": "https://www.odds.com.au/api/oembed/" - } - ] - }, - { - "provider_name": "Odesli (formerly Songlink)", - "provider_url": "https://odesli.co", - "endpoints": [ - { - "schemes": [ - "https://song.link/*", - "https://album.link/*", - "https://artist.link/*", - "https://playlist.link/*", - "https://pods.link/*", - "https://mylink.page/*", - "https://odesli.co/*" - ], - "url": "https://song.link/oembed", - "formats": [ - "json" - ], - "discovery": true - } - ] - }, - { - "provider_name": "Odysee", - "provider_url": "https://odysee.com", - "endpoints": [ - { - "schemes": [ - "https://odysee.com/*/*", - "https://odysee.com/*" - ], - "url": "https://odysee.com/$/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Official FM", - "provider_url": "http://official.fm", - "endpoints": [ - { - "schemes": [ - "http://official.fm/tracks/*", - "http://official.fm/playlists/*" - ], - "url": "http://official.fm/services/oembed.{format}" - } - ] - }, - { - "provider_name": "Omniscope", - "provider_url": "https://omniscope.me/", - "endpoints": [ - { - "schemes": [ - "https://omniscope.me/*" - ], - "url": "https://omniscope.me/_global_/oembed/json", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Omny Studio", - "provider_url": "https://omnystudio.com", - "endpoints": [ - { - "schemes": [ - "https://omny.fm/shows/*" - ], - "url": "https://omny.fm/oembed", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Orbitvu", - "provider_url": "https://orbitvu.co", - "endpoints": [ - { - "schemes": [ - "https://orbitvu.co/001/*/ov3601/view", - "https://orbitvu.co/001/*/ov3601/*/view", - "https://orbitvu.co/001/*/ov3602/*/view", - "https://orbitvu.co/001/*/2/orbittour/*/view", - "https://orbitvu.co/001/*/1/2/orbittour/*/view", - "http://orbitvu.co/001/*/ov3601/view", - "http://orbitvu.co/001/*/ov3601/*/view", - "http://orbitvu.co/001/*/ov3602/*/view", - "http://orbitvu.co/001/*/2/orbittour/*/view", - "http://orbitvu.co/001/*/1/2/orbittour/*/view" - ], - "url": "http://orbitvu.co/service/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Origits", - "provider_url": "https://origits.com/", - "endpoints": [ - { - "schemes": [ - "https://origits.com/v/*" - ], - "url": "https://origits.net/oembed", - "discovery": true - }, - { - "schemes": [ - "https://origits.com/v/*" - ], - "url": "https://origits.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Outplayed.tv", - "provider_url": "https://outplayed.tv/", - "endpoints": [ - { - "schemes": [ - "https://outplayed.tv/media/*" - ], - "url": "https://outplayed.tv/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Overflow", - "provider_url": "https://overflow.io", - "endpoints": [ - { - "schemes": [ - "https://overflow.io/s/*", - "https://overflow.io/embed/*" - ], - "url": "https://overflow.io/services/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "OZ", - "provider_url": "https://www.oz.com/", - "endpoints": [ - { - "schemes": [ - "https://www.oz.com/*/video/*" - ], - "url": "https://core.oz.com/oembed", - "formats": [ - "json", - "xml" - ] - } - ] - }, - { - "provider_name": "Padlet", - "provider_url": "https://padlet.com/", - "endpoints": [ - { - "schemes": [ - "https://padlet.com/*" - ], - "url": "https://padlet.com/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "Panda Video", - "provider_url": "https://pandavideo.com/", - "endpoints": [ - { - "schemes": [ - "https://*.tv.pandavideo.com.br/embed/?v=*", - "https://*.tv.pandavideo.com.br/*/playlist.m3u8", - "https://dashboard.pandavideo.com.br/#/videos/*" - ], - "url": "https://api-v2.pandavideo.com.br/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Pastery", - "provider_url": "https://www.pastery.net", - "endpoints": [ - { - "schemes": [ - "http://pastery.net/*", - "https://pastery.net/*", - "http://www.pastery.net/*", - "https://www.pastery.net/*" - ], - "url": "https://www.pastery.net/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Picturelfy", - "provider_url": "https://www.picturelfy.com/", - "endpoints": [ - { - "schemes": [ - "http://www.picturelfy.com/p/*", - "https://www.picturelfy.com/p/*" - ], - "url": "https://api.picturelfy.com/service/oembed/", - "discovery": false - } - ] - }, - { - "provider_name": "Piggy", - "provider_url": "https://piggy.to", - "endpoints": [ - { - "schemes": [ - "https://piggy.to/@*/*", - "https://piggy.to/view/*" - ], - "url": "https://piggy.to/oembed" - } - ] - }, - { - "provider_name": "Pikasso", - "provider_url": "https://builder.pikasso.xyz", - "endpoints": [ - { - "schemes": [ - "https://*.builder.pikasso.xyz/embed/*" - ], - "url": "https://builder.pikasso.xyz/api/oembed", - "discovery": true, - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "PingVP", - "provider_url": "https://www.pingvp.com/", - "endpoints": [ - { - "url": "https://beta.pingvp.com.kpnis.nl/p/oembed.php", - "discovery": true - } - ] - }, - { - "provider_name": "Pinpoll", - "provider_url": "https://www.pinpoll.com/products/tools", - "endpoints": [ - { - "schemes": [ - "https://tools.pinpoll.com/embed/*" - ], - "url": "https://tools.pinpoll.com/oembed", - "discovery": true, - "formats": [ - "json", - "xml" - ] - } - ] - }, - { - "provider_name": "Pinterest", - "provider_url": "https://www.pinterest.com", - "endpoints": [ - { - "schemes": [ - "https://www.pinterest.com/*" - ], - "url": "https://www.pinterest.com/oembed.json", - "discovery": true - } - ] - }, - { - "provider_name": "PitchHub", - "provider_url": "https://www.pitchhub.com/", - "endpoints": [ - { - "schemes": [ - "https://player.pitchhub.com/en/public/player/*" - ], - "url": "https://player.pitchhub.com/en/public/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Pixdor", - "provider_url": "http://www.pixdor.com/", - "endpoints": [ - { - "schemes": [ - "https://store.pixdor.com/place-marker-widget/*/show", - "https://store.pixdor.com/map/*/show" - ], - "url": "https://store.pixdor.com/oembed", - "formats": [ - "json", - "xml" - ], - "discovery": true - } - ] - }, - { - "provider_name": "Plusdocs", - "provider_url": "http://plusdocs.com", - "endpoints": [ - { - "schemes": [ - "https://app.plusdocs.com/*/snapshots/*", - "https://app.plusdocs.com/*/pages/edit/*", - "https://app.plusdocs.com/*/pages/share/*" - ], - "url": "https://app.plusdocs.com/oembed", - "discovery": true, - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Podbean", - "provider_url": "http://podbean.com", - "endpoints": [ - { - "schemes": [ - "https://*.podbean.com/e/*", - "http://*.podbean.com/e/*" - ], - "url": "https://api.podbean.com/v1/oembed" - } - ] - }, - { - "provider_name": "Poll Daddy", - "provider_url": "http://polldaddy.com", - "endpoints": [ - { - "schemes": [ - "http://*.polldaddy.com/s/*", - "http://*.polldaddy.com/poll/*", - "http://*.polldaddy.com/ratings/*" - ], - "url": "http://polldaddy.com/oembed/" - } - ] - }, - { - "provider_name": "Portfolium", - "provider_url": "https://portfolium.com", - "endpoints": [ - { - "schemes": [ - "https://portfolium.com/entry/*" - ], - "url": "https://api.portfolium.com/oembed" - } - ] - }, - { - "provider_name": "Present", - "provider_url": "https://present.do", - "endpoints": [ - { - "schemes": [ - "https://present.do/decks/*" - ], - "url": "https://gateway.cobalt.run/present/decks/oembed", - "discovery": true, - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Prezi Video", - "provider_url": "https://prezi.com/", - "endpoints": [ - { - "schemes": [ - "https://prezi.com/v/*", - "https://*.prezi.com/v/*" - ], - "url": "https://prezi.com/v/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "QTpi", - "provider_url": "https://qtpi.gg/", - "endpoints": [ - { - "schemes": [ - "https://qtpi.gg/fashion/*" - ], - "url": "https://qtpi.gg/fashion/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Quiz.biz", - "provider_url": "http://www.quiz.biz/", - "endpoints": [ - { - "schemes": [ - "http://www.quiz.biz/quizz-*.html" - ], - "url": "http://www.quiz.biz/api/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Quizz.biz", - "provider_url": "http://www.quizz.biz/", - "endpoints": [ - { - "schemes": [ - "http://www.quizz.biz/quizz-*.html" - ], - "url": "http://www.quizz.biz/api/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "RadioPublic", - "provider_url": "https://radiopublic.com", - "endpoints": [ - { - "schemes": [ - "https://play.radiopublic.com/*", - "https://radiopublic.com/*", - "https://www.radiopublic.com/*", - "http://play.radiopublic.com/*", - "http://radiopublic.com/*", - "http://www.radiopublic.com/*", - "https://*.radiopublic.com/*" - ], - "url": "https://oembed.radiopublic.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Raindrop", - "provider_url": "https://raindrop.io", - "endpoints": [ - { - "schemes": [ - "https://raindrop.io/*", - "https://raindrop.io/*/*", - "https://raindrop.io/*/*/*", - "https://raindrop.io/*/*/*/*" - ], - "url": "https://pub.raindrop.io/api/oembed", - "discovery": true, - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "rcvis", - "provider_url": "https://www.rcvis.com/", - "endpoints": [ - { - "schemes": [ - "https://www.rcvis.com/v/*", - "https://www.rcvis.com/visualize=*", - "https://www.rcvis.com/ve/*", - "https://www.rcvis.com/visualizeEmbedded=*" - ], - "url": "https://animatron.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Reddit", - "provider_url": "https://reddit.com/", - "endpoints": [ - { - "schemes": [ - "https://reddit.com/r/*/comments/*/*", - "https://www.reddit.com/r/*/comments/*/*" - ], - "url": "https://www.reddit.com/oembed" - } - ] - }, - { - "provider_name": "ReleaseWire", - "provider_url": "http://www.releasewire.com/", - "endpoints": [ - { - "schemes": [ - "http://rwire.com/*" - ], - "url": "http://publisher.releasewire.com/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "Replit", - "provider_url": "https://replit.com/", - "endpoints": [ - { - "schemes": [ - "https://repl.it/@*/*", - "https://replit.com/@*/*" - ], - "url": "https://replit.com/data/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "ReverbNation", - "provider_url": "https://www.reverbnation.com/", - "endpoints": [ - { - "schemes": [ - "https://www.reverbnation.com/*", - "https://www.reverbnation.com/*/songs/*" - ], - "url": "https://www.reverbnation.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Roomshare", - "provider_url": "http://roomshare.jp", - "endpoints": [ - { - "schemes": [ - "http://roomshare.jp/post/*", - "http://roomshare.jp/en/post/*" - ], - "url": "http://roomshare.jp/en/oembed.{format}" - } - ] - }, - { - "provider_name": "RoosterTeeth", - "provider_url": "https://roosterteeth.com", - "endpoints": [ - { - "schemes": [ - "https://roosterteeth.com/*" - ], - "url": "https://roosterteeth.com/oembed", - "formats": [ - "json" - ], - "discovery": true - } - ] - }, - { - "provider_name": "Rumble", - "provider_url": "https://rumble.com/", - "endpoints": [ - { - "url": "https://rumble.com/api/Media/oembed.{format}", - "discovery": true - } - ] - }, - { - "provider_name": "Runkit", - "provider_url": "https://runkit.com", - "endpoints": [ - { - "schemes": [ - "http://embed.runkit.com/*,", - "https://embed.runkit.com/*," - ], - "url": "https://embed.runkit.com/oembed", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Saooti", - "provider_url": "https://octopus.saooti.com", - "endpoints": [ - { - "schemes": [ - "https://octopus.saooti.com/main/pub/podcast/*" - ], - "url": "https://octopus.saooti.com/oembed" - } - ] - }, - { - "provider_name": "Sapo Videos", - "provider_url": "http://videos.sapo.pt", - "endpoints": [ - { - "schemes": [ - "http://videos.sapo.pt/*" - ], - "url": "http://videos.sapo.pt/oembed" - } - ] - }, - { - "provider_name": "Screen9", - "provider_url": "http://www.screen9.com/", - "endpoints": [ - { - "schemes": [ - "https://console.screen9.com/*", - "https://*.screen9.tv/*" - ], - "url": "https://api.screen9.com/oembed" - } - ] - }, - { - "provider_name": "Screencast.com", - "provider_url": "http://www.screencast.com/", - "endpoints": [ - { - "schemes": [ - "http://www.screencast.com/*" - ], - "url": "https://api.screencast.com/external/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Screenr", - "provider_url": "http://www.screenr.com/", - "endpoints": [ - { - "schemes": [ - "http://www.screenr.com/*/" - ], - "url": "http://www.screenr.com/api/oembed.{format}" - } - ] - }, - { - "provider_name": "ScribbleMaps", - "provider_url": "https://scribblemaps.com", - "endpoints": [ - { - "schemes": [ - "http://www.scribblemaps.com/maps/view/*", - "https://www.scribblemaps.com/maps/view/*", - "http://scribblemaps.com/maps/view/*", - "https://scribblemaps.com/maps/view/*" - ], - "url": "https://scribblemaps.com/api/services/oembed.{format}", - "discovery": true - } - ] - }, - { - "provider_name": "Scribd", - "provider_url": "http://www.scribd.com/", - "endpoints": [ - { - "schemes": [ - "http://www.scribd.com/doc/*" - ], - "url": "http://www.scribd.com/services/oembed/" - } - ] - }, - { - "provider_name": "SendtoNews", - "provider_url": "http://www.sendtonews.com/", - "endpoints": [ - { - "schemes": [ - "https://embed.sendtonews.com/oembed/*" - ], - "url": "https://embed.sendtonews.com/services/oembed", - "discovery": true, - "formats": [ - "json", - "xml" - ] - } - ] - }, - { - "provider_name": "SharedFile", - "provider_url": "https://shared-file-kappa.vercel.app/file/", - "endpoints": [ - { - "schemes": [ - "https://shared-file-kappa.vercel.app/file/*" - ], - "url": "https://shared-file-kappa.vercel.app/file/api/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Shopshare", - "provider_url": "https://shopshare.tv", - "endpoints": [ - { - "schemes": [ - "https://shopshare.tv/shopboard/*", - "https://shopshare.tv/shopcast/*" - ], - "url": "https://shopshare.tv/api/shopcast/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "ShortNote", - "provider_url": "https://www.shortnote.jp/", - "endpoints": [ - { - "schemes": [ - "https://www.shortnote.jp/view/notes/*" - ], - "url": "https://www.shortnote.jp/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "Shoudio", - "provider_url": "http://shoudio.com", - "endpoints": [ - { - "schemes": [ - "http://shoudio.com/*", - "http://shoud.io/*" - ], - "url": "http://shoudio.com/api/oembed" - } - ] - }, - { - "provider_name": "Show by Animaker", - "provider_url": "https://getshow.io/", - "endpoints": [ - { - "schemes": [ - "https://app.getshow.io/iframe/*", - "https://*.getshow.io/share/*" - ], - "url": "https://api.getshow.io/oembed.{format}", - "discovery": true - } - ] - }, - { - "provider_name": "Show the Way, actionable location info", - "provider_url": "https://showtheway.io", - "endpoints": [ - { - "schemes": [ - "https://showtheway.io/to/*" - ], - "url": "https://showtheway.io/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Simplecast", - "provider_url": "https://simplecast.com", - "endpoints": [ - { - "schemes": [ - "https://simplecast.com/s/*" - ], - "url": "https://simplecast.com/oembed", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Sizzle", - "provider_url": "https://onsizzle.com/", - "endpoints": [ - { - "schemes": [ - "https://onsizzle.com/i/*" - ], - "url": "https://onsizzle.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Sketchfab", - "provider_url": "http://sketchfab.com", - "endpoints": [ - { - "schemes": [ - "http://sketchfab.com/*models/*", - "https://sketchfab.com/*models/*", - "https://sketchfab.com/*/folders/*" - ], - "url": "http://sketchfab.com/oembed", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "SlideShare", - "provider_url": "http://www.slideshare.net/", - "endpoints": [ - { - "schemes": [ - "https://www.slideshare.net/*/*", - "http://www.slideshare.net/*/*", - "https://fr.slideshare.net/*/*", - "http://fr.slideshare.net/*/*", - "https://de.slideshare.net/*/*", - "http://de.slideshare.net/*/*", - "https://es.slideshare.net/*/*", - "http://es.slideshare.net/*/*", - "https://pt.slideshare.net/*/*", - "http://pt.slideshare.net/*/*" - ], - "url": "https://www.slideshare.net/api/oembed/2", - "discovery": true - } - ] - }, - { - "provider_name": "SmashNotes", - "provider_url": "https://smashnotes.com", - "endpoints": [ - { - "schemes": [ - "https://smashnotes.com/p/*", - "https://smashnotes.com/p/*/e/* - https://smashnotes.com/p/*/e/*/s/*" - ], - "url": "https://smashnotes.com/services/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Smeme", - "provider_url": "https://smeme.com", - "endpoints": [ - { - "schemes": [ - "https://open.smeme.com/*" - ], - "url": "https://open.smeme.com/api/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Smrthi", - "provider_url": "https://www.smrthi.com", - "endpoints": [ - { - "schemes": [ - "https://www.smrthi.com/book/*" - ], - "url": "https://www.smrthi.com/api/oembed", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "SmugMug", - "provider_url": "https://www.smugmug.com/", - "endpoints": [ - { - "schemes": [ - "http://*.smugmug.com/*", - "https://*.smugmug.com/*" - ], - "url": "https://api.smugmug.com/services/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "SocialExplorer", - "provider_url": "https://www.socialexplorer.com/", - "endpoints": [ - { - "schemes": [ - "https://www.socialexplorer.com/*/explore", - "https://www.socialexplorer.com/*/view", - "https://www.socialexplorer.com/*/edit", - "https://www.socialexplorer.com/*/embed" - ], - "url": "https://www.socialexplorer.com/services/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "SoundCloud", - "provider_url": "http://soundcloud.com/", - "endpoints": [ - { - "schemes": [ - "http://soundcloud.com/*", - "https://soundcloud.com/*", - "https://on.soundcloud.com/*", - "https://soundcloud.app.goog.gl/*" - ], - "url": "https://soundcloud.com/oembed" - } - ] - }, - { - "provider_name": "SpeakerDeck", - "provider_url": "https://speakerdeck.com", - "endpoints": [ - { - "schemes": [ - "http://speakerdeck.com/*/*", - "https://speakerdeck.com/*/*" - ], - "url": "https://speakerdeck.com/oembed.json", - "discovery": true, - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Spotify", - "provider_url": "https://spotify.com/", - "endpoints": [ - { - "schemes": [ - "https://open.spotify.com/*", - "spotify:*", - "https://spotify.link/*" - ], - "url": "https://open.spotify.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Spotlightr", - "provider_url": "https://spotlightr.com", - "endpoints": [ - { - "schemes": [ - "https://*.spotlightr.com/watch/*", - "https://*.spotlightr.com/publish/*", - "https://*.cdn.spotlightr.com/watch/*", - "https://*.cdn.spotlightr.com/publish/*" - ], - "url": "https://api.spotlightr.com/getOEmbed", - "discovery": true - } - ] - }, - { - "provider_name": "Spreaker", - "provider_url": "https://www.spreaker.com/", - "endpoints": [ - { - "schemes": [ - "http://*.spreaker.com/*", - "https://*.spreaker.com/*" - ], - "url": "https://api.spreaker.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "SproutVideo", - "provider_url": "https://sproutvideo.com", - "endpoints": [ - { - "schemes": [ - "https://sproutvideo.com/videos/*", - "https://*.vids.io/videos/*" - ], - "url": "http://sproutvideo.com/oembed.{format}", - "formats": [ - "json", - "xml" - ], - "discovery": true - } - ] - }, - { - "provider_name": "Spyke", - "provider_url": "https://spyke.social", - "endpoints": [ - { - "schemes": [ - "http://spyke.social/p/*", - "http://spyke.social/u/*", - "http://spyke.social/g/*", - "http://spyke.social/c/*", - "https://spyke.social/p/*", - "https://spyke.social/u/*", - "https://spyke.social/g/*", - "https://spyke.social/c/*", - "http://www.spyke.social/p/*", - "http://www.spyke.social/u/*", - "http://www.spyke.social/g/*", - "http://www.spyke.social/c/*", - "https://www.spyke.social/p/*", - "https://www.spyke.social/u/*", - "https://www.spyke.social/g/*", - "https://www.spyke.social/c/*" - ], - "url": "https://api.spyke.social/embed/oembed", - "discovery": true, - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Stanford Digital Repository", - "provider_url": "https://purl.stanford.edu/", - "endpoints": [ - { - "schemes": [ - "https://purl.stanford.edu/*" - ], - "url": "https://purl.stanford.edu/embed.{format}", - "discovery": true - } - ] - }, - { - "provider_name": "Streamable", - "provider_url": "https://streamable.com/", - "endpoints": [ - { - "schemes": [ - "http://streamable.com/*", - "https://streamable.com/*" - ], - "url": "https://api.streamable.com/oembed.json", - "discovery": true - } - ] - }, - { - "provider_name": "Streamio", - "provider_url": "https://www.streamio.com", - "endpoints": [ - { - "schemes": [ - "https://s3m.io/*", - "https://23m.io/*" - ], - "url": "https://streamio.com/api/v1/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Subscribi", - "provider_url": "https://subscribi.io/", - "endpoints": [ - { - "schemes": [ - "https://subscribi.io/api/oembed*" - ], - "url": "https://subscribi.io/api/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Sudomemo", - "provider_url": "https://www.sudomemo.net/", - "endpoints": [ - { - "schemes": [ - "https://www.sudomemo.net/watch/*", - "http://www.sudomemo.net/watch/*", - "https://flipnot.es/*", - "http://flipnot.es/*" - ], - "url": "https://www.sudomemo.net/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Sutori", - "provider_url": "https://www.sutori.com/", - "endpoints": [ - { - "schemes": [ - "https://www.sutori.com/story/*" - ], - "url": "https://www.sutori.com/api/oembed", - "discovery": true, - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Sway", - "provider_url": "https://www.sway.com", - "endpoints": [ - { - "schemes": [ - "https://sway.com/*", - "https://www.sway.com/*" - ], - "url": "https://sway.com/api/v1.0/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Sway Office", - "provider_url": "https://sway.office.com", - "endpoints": [ - { - "schemes": [ - "https://sway.office.com/*" - ], - "url": "https://sway.office.com/api/v1.0/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Synthesia", - "provider_url": "https://www.synthesia.io/", - "endpoints": [ - { - "schemes": [ - "https://share.synthesia.io/*" - ], - "url": "https://69jr5v75rc.execute-api.eu-west-1.amazonaws.com/prod/v2/oembed", - "formats": [ - "json" - ], - "discovery": true - } - ] - }, - { - "provider_name": "TED", - "provider_url": "https://www.ted.com", - "endpoints": [ - { - "schemes": [ - "http://ted.com/talks/*", - "https://ted.com/talks/*", - "https://www.ted.com/talks/*" - ], - "url": "https://www.ted.com/services/v1/oembed.{format}", - "discovery": true - } - ] - }, - { - "provider_name": "The New York Times", - "provider_url": "https://www.nytimes.com", - "endpoints": [ - { - "schemes": [ - "https://www.nytimes.com/svc/oembed", - "https://nytimes.com/*", - "https://*.nytimes.com/*" - ], - "url": "https://www.nytimes.com/svc/oembed/json/", - "discovery": true - } - ] - }, - { - "provider_name": "They Said So", - "provider_url": "https://theysaidso.com/", - "endpoints": [ - { - "schemes": [ - "https://theysaidso.com/image/*" - ], - "url": "https://theysaidso.com/extensions/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "TickCounter", - "provider_url": "https://www.tickcounter.com", - "endpoints": [ - { - "schemes": [ - "http://www.tickcounter.com/widget/*", - "http://www.tickcounter.com/countdown/*", - "http://www.tickcounter.com/countup/*", - "http://www.tickcounter.com/ticker/*", - "http://www.tickcounter.com/clock/*", - "http://www.tickcounter.com/worldclock/*", - "https://www.tickcounter.com/widget/*", - "https://www.tickcounter.com/countdown/*", - "https://www.tickcounter.com/countup/*", - "https://www.tickcounter.com/ticker/*", - "https://www.tickcounter.com/clock/*", - "https://www.tickcounter.com/worldclock/*" - ], - "url": "https://www.tickcounter.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "TikTok", - "provider_url": "http://www.tiktok.com/", - "endpoints": [ - { - "schemes": [ - "https://www.tiktok.com/*", - "https://www.tiktok.com/*/video/*" - ], - "url": "https://www.tiktok.com/oembed" - } - ] - }, - { - "provider_name": "Tonic Audio", - "provider_url": "https://tonicaudio.com/", - "endpoints": [ - { - "schemes": [ - "https://tonicaudio.com/take/*", - "https://tonicaudio.com/song/*", - "https://tnic.io/song/*", - "https://tnic.io/take/*" - ], - "url": "https://tonicaudio.com/oembed", - "discovery": true, - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Toornament", - "provider_url": "https://www.toornament.com/", - "endpoints": [ - { - "schemes": [ - "https://www.toornament.com/tournaments/*/information", - "https://www.toornament.com/tournaments/*/registration/", - "https://www.toornament.com/tournaments/*/matches/schedule", - "https://www.toornament.com/tournaments/*/stages/*/" - ], - "url": "https://widget.toornament.com/oembed", - "discovery": true, - "formats": [ - "json", - "xml" - ] - } - ] - }, - { - "provider_name": "Topy", - "provider_url": "http://www.topy.se/", - "endpoints": [ - { - "schemes": [ - "http://www.topy.se/image/*" - ], - "url": "http://www.topy.se/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "Totango", - "provider_url": "https://totango.com", - "endpoints": [ - { - "schemes": [ - "https://app-test.totango.com/*" - ], - "url": "https://app-test.totango.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Trackspace", - "provider_url": "http://trackspace.upitup.com/", - "endpoints": [ - { - "schemes": [ - "http://trackspace.upitup.com/*" - ], - "url": "https://trackspace.upitup.com/oembed" - } - ] - }, - { - "provider_name": "Trinity Audio", - "provider_url": "https://trinityaudio.ai", - "endpoints": [ - { - "schemes": [ - "https://trinitymedia.ai/player/*", - "https://trinitymedia.ai/player/*/*", - "https://trinitymedia.ai/player/*/*/*" - ], - "url": "https://trinitymedia.ai/services/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Tumblr", - "provider_url": "https://www.tumblr.com", - "endpoints": [ - { - "schemes": [ - "https://*.tumblr.com/post/*" - ], - "url": "https://www.tumblr.com/oembed/1.0" - } - ] - }, - { - "provider_name": "Tuxx", - "provider_url": "https://www.tuxx.be/", - "endpoints": [ - { - "schemes": [ - "https://www.tuxx.be/*" - ], - "url": "https://www.tuxx.be/services/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "tvcf", - "provider_url": "http://tvcf.co.kr", - "endpoints": [ - { - "schemes": [ - "https://play.tvcf.co.kr/*", - "https://*.tvcf.co.kr/*" - ], - "url": "https://play.tvcf.co.kr/rest/oembed" - } - ] - }, - { - "provider_name": "Twinmotion", - "provider_url": "https://twinmotion.unrealengine.com", - "endpoints": [ - { - "schemes": [ - "https://twinmotion.unrealengine.com/presentation/*", - "https://twinmotion.unrealengine.com/panorama/*" - ], - "url": "https://twinmotion.unrealengine.com/oembed", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Twitter", - "provider_url": "http://www.twitter.com/", - "endpoints": [ - { - "schemes": [ - "https://twitter.com/*", - "https://twitter.com/*/status/*", - "https://*.twitter.com/*/status/*" - ], - "url": "https://publish.twitter.com/oembed" - } - ] - }, - { - "provider_name": "TypeCast", - "provider_url": "https://typecast.ai", - "endpoints": [ - { - "schemes": [ - "https://play.typecast.ai/s/*", - "https://play.typecast.ai/e/*", - "https://play.typecast.ai/*" - ], - "url": "https://play.typecast.ai/oembed" - } - ] - }, - { - "provider_name": "Typlog", - "provider_url": "https://typlog.com", - "endpoints": [ - { - "url": "https://typlog.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "UAPod", - "provider_url": "https://uapod.univ-antilles.fr/", - "endpoints": [ - { - "schemes": [ - "https://uapod.univ-antilles.fr/video/*" - ], - "url": "https://uapod.univ-antilles.fr/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "University of Cambridge Map", - "provider_url": "https://map.cam.ac.uk", - "endpoints": [ - { - "schemes": [ - "https://map.cam.ac.uk/*" - ], - "url": "https://map.cam.ac.uk/oembed/" - } - ] - }, - { - "provider_name": "UnivParis1.Pod", - "provider_url": "https://mediatheque.univ-paris1.fr/", - "endpoints": [ - { - "schemes": [ - "https://mediatheque.univ-paris1.fr/video/*" - ], - "url": "https://mediatheque.univ-paris1.fr/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Upec.Pod", - "provider_url": "https://pod.u-pec.fr/", - "endpoints": [ - { - "schemes": [ - "https://pod.u-pec.fr/video/*" - ], - "url": "https://pod.u-pec.fr/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Ustream", - "provider_url": "http://www.ustream.tv", - "endpoints": [ - { - "schemes": [ - "http://*.ustream.tv/*", - "http://*.ustream.com/*" - ], - "url": "http://www.ustream.tv/oembed", - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "uStudio, Inc.", - "provider_url": "https://www.ustudio.com", - "endpoints": [ - { - "schemes": [ - "https://*.ustudio.com/embed/*", - "https://*.ustudio.com/embed/*/*" - ], - "url": "https://app.ustudio.com/api/v2/oembed", - "discovery": true, - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "VeeR VR", - "provider_url": "http://veer.tv/", - "endpoints": [ - { - "schemes": [ - "http://veer.tv/videos/*" - ], - "url": "https://api.veer.tv/oembed", - "discovery": true - }, - { - "schemes": [ - "http://veervr.tv/videos/*" - ], - "url": "https://api.veervr.tv/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "VEVO", - "provider_url": "http://www.vevo.com/", - "endpoints": [ - { - "schemes": [ - "http://www.vevo.com/*", - "https://www.vevo.com/*" - ], - "url": "https://www.vevo.com/oembed", - "discovery": false - } - ] - }, - { - "provider_name": "Videfit", - "provider_url": "https://videfit.com/", - "endpoints": [ - { - "schemes": [ - "https://videfit.com/videos/*" - ], - "url": "https://videfit.com/oembed", - "discovery": false - } - ] - }, - { - "provider_name": "VidMount", - "provider_url": "https://vidmount.com/", - "endpoints": [ - { - "schemes": [ - "https://vidmount.com/*" - ], - "url": "https://vidmount.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Vidyard", - "provider_url": "https://vidyard.com", - "endpoints": [ - { - "schemes": [ - "http://*.vidyard.com/*", - "https://*.vidyard.com/*", - "http://*.hubs.vidyard.com/*", - "https://*.hubs.vidyard.com/*" - ], - "url": "https://api.vidyard.com/dashboard/v1.1/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Vimeo", - "provider_url": "https://vimeo.com/", - "endpoints": [ - { - "schemes": [ - "https://vimeo.com/*", - "https://vimeo.com/album/*/video/*", - "https://vimeo.com/channels/*/*", - "https://vimeo.com/groups/*/videos/*", - "https://vimeo.com/ondemand/*/*", - "https://player.vimeo.com/video/*", - "https://vimeo.com/event/*/*" - ], - "url": "https://vimeo.com/api/oembed.{format}", - "discovery": true - } - ] - }, - { - "provider_name": "Viostream", - "provider_url": "https://www.viostream.com", - "endpoints": [ - { - "schemes": [ - "https://share.viostream.com/*" - ], - "url": "https://play.viostream.com/oembed", - "discovery": true, - "formats": [ - "json", - "xml" - ] - } - ] - }, - { - "provider_name": "Viously", - "provider_url": "https://www.viously.com", - "endpoints": [ - { - "schemes": [ - "https://www.viously.com/*/*" - ], - "url": "https://www.viously.com/oembed", - "discovery": true, - "formats": [ - "json", - "xml" - ] - } - ] - }, - { - "provider_name": "Vizydrop", - "provider_url": "https://vizydrop.com", - "endpoints": [ - { - "schemes": [ - "https://vizydrop.com/shared/*" - ], - "url": "https://vizydrop.com/oembed" - } - ] - }, - { - "provider_name": "Vlipsy", - "provider_url": "https://vlipsy.com/", - "endpoints": [ - { - "schemes": [ - "https://vlipsy.com/*" - ], - "url": "https://vlipsy.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "VLIVE", - "provider_url": "https://www.vlive.tv", - "endpoints": [ - { - "url": "https://www.vlive.tv/oembed", - "schemes": [ - "https://www.vlive.tv/video/*" - ], - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Vouch", - "provider_url": "https://www.vouchfor.com/", - "endpoints": [ - { - "schemes": [ - "https://*.vouchfor.com/*" - ], - "url": "https://embed.vouchfor.com/v1/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "VoxSnap", - "provider_url": "https://voxsnap.com/", - "endpoints": [ - { - "schemes": [ - "https://article.voxsnap.com/*/*" - ], - "url": "https://data.voxsnap.com/oembed", - "discovery": true, - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Waltrack", - "provider_url": "https://waltrack/net", - "endpoints": [ - { - "schemes": [ - "https://waltrack.net/product/*" - ], - "url": "https://waltrack.net/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Wave.video", - "provider_url": "https://wave.video", - "endpoints": [ - { - "schemes": [ - "https://watch.wave.video/*", - "https://embed.wave.video/*" - ], - "url": "https://embed.wave.video/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Web3 is Going Just Great", - "provider_url": "https://www.web3isgoinggreat.com/", - "endpoints": [ - { - "schemes": [ - "https://www.web3isgoinggreat.com/?id=*", - "https://www.web3isgoinggreat.com/single/*", - "https://www.web3isgoinggreat.com/embed/*" - ], - "url": "https://www.web3isgoinggreat.com/api/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "wecandeo", - "provider_url": "https://www.wecandeo.com/", - "endpoints": [ - { - "schemes": [ - "https://play.wecandeo.com/video/v/*" - ], - "url": "https://play.wecandeo.com/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "Whimsical", - "provider_url": "https://www.whimsical.com", - "endpoints": [ - { - "schemes": [ - "https://whimsical.com/*" - ], - "url": "https://whimsical.com/api/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Wistia, Inc.", - "provider_url": "https://wistia.com/", - "endpoints": [ - { - "schemes": [ - "https://fast.wistia.com/embed/iframe/*", - "https://fast.wistia.com/embed/playlists/*", - "https://*.wistia.com/medias/*" - ], - "url": "https://fast.wistia.com/oembed.{format}", - "discovery": true - } - ] - }, - { - "provider_name": "wizer.me", - "provider_url": "https://www.wizer.me/", - "endpoints": [ - { - "schemes": [ - "https://*.wizer.me/learn/*", - "https://*.wizer.me/preview/*" - ], - "url": "https://app.wizer.me/api/oembed.{format}", - "discovery": true - } - ] - }, - { - "provider_name": "Wokwi", - "provider_url": "https://wokwi.com", - "endpoints": [ - { - "schemes": [ - "https://wokwi.com/share/*" - ], - "url": "https://wokwi.com/api/oembed", - "discovery": true, - "formats": [ - "json" - ] - } - ] - }, - { - "provider_name": "Wolfram Cloud", - "provider_url": "https://www.wolframcloud.com", - "endpoints": [ - { - "schemes": [ - "https://*.wolframcloud.com/*" - ], - "url": "https://www.wolframcloud.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "WordPress.com", - "provider_url": "https://wordpress.com/", - "endpoints": [ - { - "schemes": [ - "https://wordpress.com/*", - "http://wordpress.com/*", - "https://*.wordpress.com/*", - "http://*.wordpress.com/*", - "https://*.*.wordpress.com/*", - "http://*.*.wordpress.com/*", - "https://wp.me/*", - "http://wp.me/*" - ], - "url": "http://public-api.wordpress.com/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "X", - "provider_url": "http://www.x.com/", - "endpoints": [ - { - "schemes": [ - "https://x.com/*", - "https://x.com/*/status/*", - "https://*.x.com/*/status/*" - ], - "url": "https://publish.x.com/oembed" - } - ] - }, - { - "provider_name": "YouTube", - "provider_url": "https://www.youtube.com/", - "endpoints": [ - { - "schemes": [ - "https://*.youtube.com/watch*", - "https://*.youtube.com/v/*", - "https://youtu.be/*", - "https://*.youtube.com/playlist?list=*", - "https://youtube.com/playlist?list=*", - "https://*.youtube.com/shorts*", - "https://youtube.com/shorts*", - "https://*.youtube.com/embed/*" - ], - "url": "https://www.youtube.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "YUMPU", - "provider_url": "https://www.yumpu.com/", - "endpoints": [ - { - "schemes": [ - "https://www.yumpu.com/*/document/view/*/*" - ], - "url": "https://www.yumpu.com/services/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "Zeplin", - "provider_url": "https://zeplin.io", - "endpoints": [ - { - "schemes": [ - "https://app.zeplin.io/project/*/screen/*", - "https://app.zeplin.io/project/*/screen/*/version/*", - "https://app.zeplin.io/project/*/styleguide/components?coid=*", - "https://app.zeplin.io/styleguide/*/components?coid=*" - ], - "url": "https://app.zeplin.io/embed", - "discovery": true - } - ] - }, - { - "provider_name": "ZingSoft", - "provider_url": "https://app.zingsoft.com", - "endpoints": [ - { - "schemes": [ - "https://app.zingsoft.com/embed/*", - "https://app.zingsoft.com/view/*" - ], - "url": "https://app.zingsoft.com/oembed", - "discovery": true - } - ] - }, - { - "provider_name": "ZnipeTV", - "provider_url": "https://www.znipe.tv/", - "endpoints": [ - { - "schemes": [ - "https://*.znipe.tv/*" - ], - "url": "https://api.znipe.tv/v3/oembed/", - "discovery": true - } - ] - }, - { - "provider_name": "Zoomable", - "provider_url": "https://zoomable.ca/", - "endpoints": [ - { - "schemes": [ - "https://srv2.zoomable.ca/viewer.php*" - ], - "url": "https://srv2.zoomable.ca/oembed", - "discovery": true - } - ] - } -] \ No newline at end of file diff --git a/trial/artifact_assets/drupal_cms_trial/src/OutgoingHttpInterceptor.php b/trial/artifact_assets/drupal_cms_trial/src/OutgoingHttpInterceptor.php deleted file mode 100644 index bab113607f4d4494233d56e922e1ead36400896c..0000000000000000000000000000000000000000 --- a/trial/artifact_assets/drupal_cms_trial/src/OutgoingHttpInterceptor.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php - -declare(strict_types=1); - -namespace Drupal\drupal_cms_trial; - -use GuzzleHttp\Promise\FulfilledPromise; -use GuzzleHttp\Promise\PromiseInterface; -use GuzzleHttp\Psr7\Response; -use Psr\Http\Message\RequestInterface; - -/** - * Currently PHP in WebAssembly does not support outgoing HTTP requests. - * - * This HTTP client middleware is used to intercept outgoing HTTP requests so - * that they do not fail. - */ -final class OutgoingHttpInterceptor { - - public function __invoke(): callable { - return static function (callable $handler): callable { - return static function (RequestInterface $request, array $options) use ($handler): PromiseInterface { - $request_uri = (string) $request->getUri(); - if ($request_uri === 'https://oembed.com/providers.json') { - $response = file_get_contents( - __DIR__ . '/../oembed-providers.json' - ); - return new FulfilledPromise(new Response(200, ['Content-Type' => 'application/json'], $response)); - } - if ($request_uri === 'https://www.youtube.com/oembed?url=https%3A//www.youtube.com/watch%3Fv%3D21X5lGlDOfg') { - $response = file_get_contents( - __DIR__ . '/../youtube-oembed.json' - ); - return new FulfilledPromise(new Response(200, ['Content-Type' => 'application/json'], $response)); - } - if ($request_uri === 'https://updates.drupal.org/psa.json') { - return new FulfilledPromise(new Response(200, ['Content-Type' => 'application/json'], '[]')); - } - return $handler($request, $options); - }; - }; - } - -} diff --git a/trial/artifact_assets/drupal_cms_trial/youtube-oembed.json b/trial/artifact_assets/drupal_cms_trial/youtube-oembed.json deleted file mode 100644 index 99c8ab14b8fbd99bf5ddb47a58e2398cfd9130ae..0000000000000000000000000000000000000000 --- a/trial/artifact_assets/drupal_cms_trial/youtube-oembed.json +++ /dev/null @@ -1 +0,0 @@ -{"title":"NASA Live: Official Stream of NASA TV","author_name":"NASA","author_url":"https://www.youtube.com/@NASA","type":"video","height":150,"width":200,"version":"1.0","provider_name":"YouTube","provider_url":"https://www.youtube.com/","thumbnail_height":360,"thumbnail_width":480,"thumbnail_url":"https://i.ytimg.com/vi/21X5lGlDOfg/hqdefault.jpg","html":"\u003ciframe width=\u0022200\u0022 height=\u0022150\u0022 src=\u0022https://www.youtube.com/embed/21X5lGlDOfg?feature=oembed\u0022 frameborder=\u00220\u0022 allow=\u0022accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\u0022 referrerpolicy=\u0022strict-origin-when-cross-origin\u0022 allowfullscreen title=\u0022NASA Live: Official Stream of NASA TV\u0022\u003e\u003c/iframe\u003e"} \ No newline at end of file diff --git a/trial/artifact_assets/drush/drush.yml b/trial/artifact_assets/drush/drush.yml deleted file mode 100644 index 7a5fdc68ea3a16aa6af28434feb26658f7f152d0..0000000000000000000000000000000000000000 --- a/trial/artifact_assets/drush/drush.yml +++ /dev/null @@ -1,11 +0,0 @@ -# Contains project-wide configuration for Drush. These options are only used -# for building the in-browser trial. -# @see https://drush.org/latest/using-drush-configuration -command: - site: - install: - options: - account-pass: admin - # SQLite is the only kind of database supported by the in-browser trial. - db-url: sqlite://localhost/db.sqlite - site-name: Drupal CMS diff --git a/trial/artifact_assets/patches.json b/trial/artifact_assets/patches.json deleted file mode 100644 index e1cdda65d24303ed06f65f76e55f513c9eb75916..0000000000000000000000000000000000000000 --- a/trial/artifact_assets/patches.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "patches": { - "drupal/core": { - "Remove renderer support for fibers": "./patches/core/renderer-remove-fibers.patch", - "#3463572: SQLite install tasks requires the file_system service": "./patches/core/8913.patch", - "Remove warnings about opcache and 32-bit integers": "./patches/core/system-reqs-wasm.patch", - "Remove permission hardening warning": "./patches/core/skip-permission-hardening-warning.patch" - } - } -} diff --git a/trial/artifact_assets/patches/core/8913.patch b/trial/artifact_assets/patches/core/8913.patch deleted file mode 100644 index 333ebb967d4ed55282648aa431fd924411cad30b..0000000000000000000000000000000000000000 --- a/trial/artifact_assets/patches/core/8913.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc -index 68ef6a2c81a219cd465c6bb4d2ef0100adb7f61a..b724d9e9bda931be05d837a8b8c5a28a01a88305 100644 ---- a/core/includes/install.core.inc -+++ b/core/includes/install.core.inc -@@ -17,6 +17,7 @@ - use Drupal\Core\Database\Database; - use Drupal\Core\Database\DatabaseExceptionWrapper; - use Drupal\Core\Extension\Exception\UnknownExtensionException; -+use Drupal\Core\File\FileSystem; - use Drupal\Core\File\FileSystemInterface; - use Drupal\Core\Form\FormState; - use Drupal\Core\Installer\Exception\AlreadyInstalledException; -@@ -29,6 +30,7 @@ - use Drupal\Core\Recipe\Recipe; - use Drupal\Core\Recipe\RecipeRunner; - use Drupal\Core\Site\Settings; -+use Drupal\Core\StreamWrapper\StreamWrapperManager; - use Drupal\Core\StringTranslation\Translator\FileTranslation; - use Drupal\Core\StackMiddleware\ReverseProxyMiddleware; - use Drupal\Core\Extension\ExtensionDiscovery; -@@ -378,6 +380,13 @@ function install_begin_request($class_loader, &$install_state) { - // @see \Drupal\Core\Extension\DatabaseDriverList - $container->set('class_loader', $class_loader); - -+ $container->set('settings', Settings::getInstance()); -+ $container->register('stream_wrapper_manager', StreamWrapperManager::class) -+ ->addArgument($container); -+ $container->register('file_system', FileSystem::class) -+ ->addArgument(new Reference('stream_wrapper_manager')) -+ ->addArgument(new Reference('settings')); -+ - \Drupal::setContainer($container); - - // Determine whether base system services are ready to operate. diff --git a/trial/artifact_assets/patches/core/renderer-remove-fibers.patch b/trial/artifact_assets/patches/core/renderer-remove-fibers.patch deleted file mode 100644 index 70cde15c6905c9a55faec6bb216827a65e960bc3..0000000000000000000000000000000000000000 --- a/trial/artifact_assets/patches/core/renderer-remove-fibers.patch +++ /dev/null @@ -1,92 +0,0 @@ -diff --git a/core/lib/Drupal/Core/Render/Renderer.php b/core/lib/Drupal/Core/Render/Renderer.php -index 3774cb2272..e2ab5ad075 100644 ---- a/core/lib/Drupal/Core/Render/Renderer.php -+++ b/core/lib/Drupal/Core/Render/Renderer.php -@@ -179,11 +179,26 @@ protected function doReplacePlaceholder(string $placeholder, string|MarkupInterf - */ - public function renderPlaceholder($placeholder, array $elements) { - // Get the render array for the given placeholder -- $placeholder_element = $elements['#attached']['placeholders'][$placeholder]; -- $markup = $this->doRenderPlaceholder($placeholder_element); -- return $this->doReplacePlaceholder($placeholder, $markup, $elements, $placeholder_element); -+ $placeholder_elements = $elements['#attached']['placeholders'][$placeholder]; -+ -+ // Prevent the render array from being auto-placeholdered again. -+ $placeholder_elements['#create_placeholder'] = FALSE; -+ -+ // Render the placeholder into markup. -+ $markup = $this->renderInIsolation($placeholder_elements); -+ -+ // Replace the placeholder with its rendered markup, and merge its -+ // bubbleable metadata with the main elements'. -+ $elements['#markup'] = Markup::create(str_replace($placeholder, $markup, $elements['#markup'])); -+ $elements = $this->mergeBubbleableMetadata($elements, $placeholder_elements); -+ -+ // Remove the placeholder that we've just rendered. -+ unset($elements['#attached']['placeholders'][$placeholder]); -+ -+ return $elements; - } - -+ - /** - * {@inheritdoc} - */ -@@ -642,7 +657,7 @@ protected function setCurrentRenderContext(RenderContext $context = NULL) { - * bubbleable metadata associated with the markup that replaced the - * placeholders. - * -- * @return bool -+ * @returns bool - * Whether placeholders were replaced. - * - * @see \Drupal\Core\Render\Renderer::renderPlaceholder() -@@ -667,47 +682,13 @@ protected function replacePlaceholders(array &$elements) { - - // First render all placeholders except 'status messages' placeholders. - $message_placeholders = []; -- $fibers = []; - foreach ($elements['#attached']['placeholders'] as $placeholder => $placeholder_element) { - if (isset($placeholder_element['#lazy_builder']) && $placeholder_element['#lazy_builder'][0] === 'Drupal\Core\Render\Element\StatusMessages::renderMessages') { - $message_placeholders[] = $placeholder; - } - else { -- // Get the render array for the given placeholder -- $fibers[$placeholder] = new \Fiber(function () use ($placeholder_element) { -- return [$this->doRenderPlaceholder($placeholder_element), $placeholder_element]; -- }); -- } -- } -- $iterations = 0; -- while (count($fibers) > 0) { -- foreach ($fibers as $placeholder => $fiber) { -- if (!$fiber->isStarted()) { -- $fiber->start(); -- } -- elseif ($fiber->isSuspended()) { -- $fiber->resume(); -- } -- // If the Fiber hasn't terminated by this point, move onto the next -- // placeholder, we'll resume this fiber again when we get back here. -- if (!$fiber->isTerminated()) { -- // If we've gone through the placeholders once already, and they're -- // still not finished, then start to allow code higher up the stack to -- // get on with something else. -- if ($iterations) { -- $fiber = \Fiber::getCurrent(); -- if ($fiber !== NULL) { -- $fiber->suspend(); -- } -- } -- continue; -- } -- [$markup, $placeholder_element] = $fiber->getReturn(); -- -- $elements = $this->doReplacePlaceholder($placeholder, $markup, $elements, $placeholder_element); -- unset($fibers[$placeholder]); -+ $elements = $this->renderPlaceholder($placeholder, $elements); - } -- $iterations++; - } - - // Then render 'status messages' placeholders. diff --git a/trial/artifact_assets/patches/core/skip-permission-hardening-warning.patch b/trial/artifact_assets/patches/core/skip-permission-hardening-warning.patch deleted file mode 100644 index 9468e8779e5a4f07a60afef8700f2dbee4cc4b76..0000000000000000000000000000000000000000 --- a/trial/artifact_assets/patches/core/skip-permission-hardening-warning.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/core/lib/Drupal/Core/Installer/Form/SiteConfigureForm.php b/core/lib/Drupal/Core/Installer/Form/SiteConfigureForm.php -index eed24215eaa..9faa723b26f 100644 ---- a/core/lib/Drupal/Core/Installer/Form/SiteConfigureForm.php -+++ b/core/lib/Drupal/Core/Installer/Form/SiteConfigureForm.php -@@ -157,7 +157,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { - // successfully.) - $post_params = $this->getRequest()->request->all(); - if (empty($post_params) && (Settings::get('skip_permissions_hardening') || !drupal_verify_install_file($this->root . '/' . $settings_file, FILE_EXIST | FILE_READABLE | FILE_NOT_WRITABLE) || !drupal_verify_install_file($this->root . '/' . $settings_dir, FILE_NOT_WRITABLE, 'dir'))) { -- $this->messenger()->addWarning($this->t('All necessary changes to %dir and %file have been made, so you should remove write permissions to them now in order to avoid security risks. If you are unsure how to do so, consult the <a href=":handbook_url">online handbook</a>.', ['%dir' => $settings_dir, '%file' => $settings_file, ':handbook_url' => 'https://www.drupal.org/server-permissions'])); -+ // $this->messenger()->addWarning($this->t('All necessary changes to %dir and %file have been made, so you should remove write permissions to them now in order to avoid security risks. If you are unsure how to do so, consult the <a href=":handbook_url">online handbook</a>.', ['%dir' => $settings_dir, '%file' => $settings_file, ':handbook_url' => 'https://www.drupal.org/server-permissions'])); - } - - $form['#attached']['library'][] = 'system/drupal.system'; diff --git a/trial/artifact_assets/patches/core/system-reqs-wasm.patch b/trial/artifact_assets/patches/core/system-reqs-wasm.patch deleted file mode 100644 index af974f8542757387a54f8f95f1b186f98428f411..0000000000000000000000000000000000000000 --- a/trial/artifact_assets/patches/core/system-reqs-wasm.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/core/modules/system/system.install b/core/modules/system/system.install -index b7deb9dd4b9..596793e3d4e 100644 ---- a/core/modules/system/system.install -+++ b/core/modules/system/system.install -@@ -396,7 +396,7 @@ function system_requirements($phase) { - if (!OpCodeCache::isEnabled()) { - $requirements['php_opcache'] = [ - 'value' => t('Not enabled'), -- 'severity' => REQUIREMENT_WARNING, -+ 'severity' => REQUIREMENT_OK, - 'description' => t('PHP OPcode caching can improve your site\'s performance considerably. It is <strong>highly recommended</strong> to have <a href="http://php.net/manual/opcache.installation.php" target="_blank">OPcache</a> installed on your server.'), - ]; - } -@@ -1430,7 +1430,7 @@ function system_requirements($phase) { - 'title' => t('Limited date range'), - 'value' => t('Your PHP installation has a limited date range.'), - 'description' => t('You are running on a system where PHP is compiled or limited to using 32-bit integers. This will limit the range of dates and timestamps to the years 1901-2038. Read about the <a href=":url">limitations of 32-bit PHP</a>.', [':url' => 'https://www.drupal.org/docs/system-requirements/limitations-of-32-bit-php']), -- 'severity' => REQUIREMENT_WARNING, -+ 'severity' => REQUIREMENT_OK, - ]; - } - diff --git a/trial/artifact_assets/patches/npm/php-cgi-wasm+0.0.9-alpha-25.patch b/trial/artifact_assets/patches/npm/php-cgi-wasm+0.0.9-alpha-25.patch deleted file mode 100644 index 3d196304b61e63d2e6438ff716cb9de32bb4215f..0000000000000000000000000000000000000000 --- a/trial/artifact_assets/patches/npm/php-cgi-wasm+0.0.9-alpha-25.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff --git a/node_modules/php-cgi-wasm/PhpCgiBase.mjs b/node_modules/php-cgi-wasm/PhpCgiBase.mjs -index b5d9fbb..01f7b90 100644 ---- a/node_modules/php-cgi-wasm/PhpCgiBase.mjs -+++ b/node_modules/php-cgi-wasm/PhpCgiBase.mjs -@@ -406,7 +406,7 @@ export class PhpCgiBase - else - { - -- path = docroot + '/' + rewrite.substr((vHostPrefix || this.prefix).length); -+ path = docroot + '/' + rewrite.substr((vHostPrefix || this.prefix).length).replace(/^\/+/, ''); - scriptName = path; - } - -@@ -419,6 +419,15 @@ export class PhpCgiBase - - const extension = path.split('.').pop(); - -+ if(vHostEntrypoint) -+ { -+ if (extension === 'php') { -+ scriptName = vHostPrefix + '/' + rewrite.substr((vHostPrefix || this.prefix).length).replace(/^\/+/, '') -+ } else { -+ scriptName = vHostPrefix + '/' + vHostEntrypoint; -+ } -+ } -+ - if(extension !== 'php' && extension !== 'phar') - { - const aboutPath = php.FS.analyzePath(path); diff --git a/trial/artifact_assets/scaffold/default.settings.php b/trial/artifact_assets/scaffold/default.settings.php deleted file mode 100644 index 097263a079a44aee473852161db13b4c3a69823d..0000000000000000000000000000000000000000 --- a/trial/artifact_assets/scaffold/default.settings.php +++ /dev/null @@ -1,3 +0,0 @@ -$settings['skip_permissions_hardening'] = TRUE; -$config['system.performance']['css']['preprocess'] = FALSE; -$config['system.performance']['js']['preprocess'] = FALSE; diff --git a/trial/modules/drupal_cms_trial/composer.json b/trial/modules/drupal_cms_trial/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..4c4fe3bd2fa001ccea7a2f63a505e433cd7209c8 --- /dev/null +++ b/trial/modules/drupal_cms_trial/composer.json @@ -0,0 +1,6 @@ +{ + "name": "drupal/drupal_cms_trial", + "version": "dev-main", + "type": "drupal-custom-module", + "description": "Provides support code for the trial of Drupal CMS. Not meant for production use." +} diff --git a/trial/artifact_assets/drupal_cms_trial/drupal_cms_trial.info.yml b/trial/modules/drupal_cms_trial/drupal_cms_trial.info.yml similarity index 100% rename from trial/artifact_assets/drupal_cms_trial/drupal_cms_trial.info.yml rename to trial/modules/drupal_cms_trial/drupal_cms_trial.info.yml diff --git a/trial/package-lock.json b/trial/package-lock.json deleted file mode 100644 index 7443594b4c77e8f18d62946856dbe34aad11ebac..0000000000000000000000000000000000000000 --- a/trial/package-lock.json +++ /dev/null @@ -1,7546 +0,0 @@ -{ - "name": "trial", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "hasInstallScript": true, - "devDependencies": { - "@tailwindcss/typography": "^0.5.13", - "@vitest/coverage-v8": "^2.0.5", - "babel-loader": "^9.1.3", - "happy-dom": "^14.12.3", - "patch-package": "^8.0.0", - "php-cgi-wasm": "0.0.9-alpha-25", - "php-wasm": "0.0.9-alpha-25", - "php-wasm-dom": "0.0.9-alpha-25", - "php-wasm-gd": "0.0.9-alpha-25", - "php-wasm-iconv": "0.0.9-alpha-25", - "php-wasm-libxml": "0.0.9-alpha-25", - "php-wasm-libzip": "0.0.9-alpha-25", - "php-wasm-mbstring": "0.0.9-alpha-25", - "php-wasm-simplexml": "0.0.9-alpha-25", - "php-wasm-sqlite": "0.0.9-alpha-25", - "php-wasm-xml": "0.0.9-alpha-25", - "php-wasm-zlib": "0.0.9-alpha-25", - "tailwindcss": "^3.4.4", - "vitest": "^2.0.5", - "webpack": "^5.92.1", - "webpack-cli": "^5.1.4", - "webpack-dev-server": "^5.0.4" - } - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/highlight": "^7.24.7", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", - "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", - "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", - "dev": true, - "peer": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helpers": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/core/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "peer": true - }, - "node_modules/@babel/generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.24.7", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", - "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/compat-data": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "peer": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", - "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", - "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", - "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", - "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", - "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "peer": true - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/template": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/traverse/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "peer": true - }, - "node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@jsonjoy.com/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", - "dev": true, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/json-pack": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.4.tgz", - "integrity": "sha512-aOcSN4MeAtFROysrbqG137b7gaDDSmVrl5mpo6sT/w+kcXpWnzhMjmY/Fh/sDx26NBxyIE7MB1seqLeCAzy9Sg==", - "dev": true, - "dependencies": { - "@jsonjoy.com/base64": "^1.1.1", - "@jsonjoy.com/util": "^1.1.2", - "hyperdyperid": "^1.2.0", - "thingies": "^1.20.0" - }, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/util": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.2.0.tgz", - "integrity": "sha512-4B8B+3vFsY4eo33DMKyJPlQ3sBMpPFUZK2dr3O3rXrOGKKbYG44J0XSFkDo1VOQiri5HFEhIeVvItjR2xcazmg==", - "dev": true, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", - "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", - "dev": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz", - "integrity": "sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.20.0.tgz", - "integrity": "sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz", - "integrity": "sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.20.0.tgz", - "integrity": "sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.20.0.tgz", - "integrity": "sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.20.0.tgz", - "integrity": "sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz", - "integrity": "sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.20.0.tgz", - "integrity": "sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.20.0.tgz", - "integrity": "sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.20.0.tgz", - "integrity": "sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.20.0.tgz", - "integrity": "sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz", - "integrity": "sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz", - "integrity": "sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.20.0.tgz", - "integrity": "sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.20.0.tgz", - "integrity": "sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.20.0.tgz", - "integrity": "sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@tailwindcss/typography": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.13.tgz", - "integrity": "sha512-ADGcJ8dX21dVVHIwTRgzrcunY6YY9uSlAHHGVKvkA+vLc5qLwEszvKts40lx7z0qc4clpjclwLeK5rVCV2P/uw==", - "dev": true, - "dependencies": { - "lodash.castarray": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", - "postcss-selector-parser": "6.0.10" - }, - "peerDependencies": { - "tailwindcss": ">=3.0.0 || insiders" - } - }, - "node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/bonjour": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", - "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", - "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", - "dev": true, - "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "node_modules/@types/eslint": { - "version": "8.56.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", - "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.19.5", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", - "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true - }, - "node_modules/@types/http-proxy": { - "version": "1.17.14", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", - "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true - }, - "node_modules/@types/node": { - "version": "20.14.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", - "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/node-forge": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", - "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true - }, - "node_modules/@types/retry": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", - "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", - "dev": true - }, - "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", - "dev": true, - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-index": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", - "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", - "dev": true, - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", - "dev": true, - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" - } - }, - "node_modules/@types/sockjs": { - "version": "0.3.36", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", - "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/ws": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", - "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@vitest/coverage-v8": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.0.5.tgz", - "integrity": "sha512-qeFcySCg5FLO2bHHSa0tAZAOnAUbp4L6/A5JDuj9+bt53JREl8hpLjLHEWF0e/gWc8INVpJaqA7+Ene2rclpZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.3.0", - "@bcoe/v8-coverage": "^0.2.3", - "debug": "^4.3.5", - "istanbul-lib-coverage": "^3.2.2", - "istanbul-lib-report": "^3.0.1", - "istanbul-lib-source-maps": "^5.0.6", - "istanbul-reports": "^3.1.7", - "magic-string": "^0.30.10", - "magicast": "^0.3.4", - "std-env": "^3.7.0", - "test-exclude": "^7.0.1", - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "vitest": "2.0.5" - } - }, - "node_modules/@vitest/coverage-v8/node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@vitest/coverage-v8/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@vitest/expect": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.5.tgz", - "integrity": "sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "2.0.5", - "@vitest/utils": "2.0.5", - "chai": "^5.1.1", - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/pretty-format": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.5.tgz", - "integrity": "sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.5.tgz", - "integrity": "sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/utils": "2.0.5", - "pathe": "^1.1.2" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/snapshot": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.5.tgz", - "integrity": "sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "2.0.5", - "magic-string": "^0.30.10", - "pathe": "^1.1.2" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/spy": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz", - "integrity": "sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyspy": "^3.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.5.tgz", - "integrity": "sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "2.0.5", - "estree-walker": "^3.0.3", - "loupe": "^3.1.1", - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webpack-cli/configtest": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", - "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", - "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", - "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", - "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", - "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", - "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/ajv": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/babel-loader": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", - "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", - "dev": true, - "dependencies": { - "find-cache-dir": "^4.0.0", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 14.15.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/bonjour-service": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", - "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } - }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.23.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", - "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001629", - "electron-to-chromium": "^1.4.796", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.16" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", - "dev": true, - "dependencies": { - "run-applescript": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001640", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001640.tgz", - "integrity": "sha512-lA4VMpW0PSUrFnkmVuEKBUovSWKhj7puyCg8StBChgu298N1AtuF1sKWEvfDuimSEDbhlb/KqPKC3fs1HbuQUA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chai": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz", - "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/check-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "peer": true - }, - "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/default-browser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", - "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", - "dev": true, - "dependencies": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", - "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", - "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "dev": true, - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "node_modules/dns-packet": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", - "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", - "dev": true, - "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.816", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.816.tgz", - "integrity": "sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw==", - "dev": true, - "license": "ISC" - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", - "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/envinfo": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", - "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", - "dev": true, - "license": "MIT" - }, - "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" - } - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", - "dev": true, - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.6.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/find-cache-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", - "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", - "dev": true, - "dependencies": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "dev": true, - "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-yarn-workspace-root": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", - "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "micromatch": "^4.0.2" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/foreground-child": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", - "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", - "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "node_modules/happy-dom": { - "version": "14.12.3", - "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-14.12.3.tgz", - "integrity": "sha512-vsYlEs3E9gLwA1Hp+w3qzu+RUDFf4VTT8cyKqVICoZ2k7WM++Qyd2LwzyTi5bqMJFiIC/vNpTDYuxdreENRK/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "entities": "^4.5.0", - "webidl-conversions": "^7.0.0", - "whatwg-mimetype": "^3.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/hpack.js/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/hpack.js/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/html-entities": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", - "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ] - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "license": "MIT" - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", - "dev": true, - "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/hyperdyperid": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", - "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", - "dev": true, - "engines": { - "node": ">=10.18" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/interpret": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", - "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", - "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", - "dev": true, - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-network-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", - "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", - "dev": true, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", - "dev": true, - "dependencies": { - "is-inside-container": "^1.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", - "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.23", - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jackspeak": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", - "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", - "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jiti": { - "version": "1.21.6", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", - "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", - "dev": true, - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "peer": true - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "peer": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz", - "integrity": "sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "isarray": "^2.0.5", - "jsonify": "^0.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/json-stable-stringify/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "peer": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", - "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", - "dev": true, - "license": "Public Domain", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klaw-sync": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", - "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.11" - } - }, - "node_modules/launch-editor": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.0.tgz", - "integrity": "sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA==", - "dev": true, - "dependencies": { - "picocolors": "^1.0.0", - "shell-quote": "^1.8.1" - } - }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dev": true, - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.castarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", - "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", - "dev": true - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/loupe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz", - "integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.1" - } - }, - "node_modules/lru-cache": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.3.0.tgz", - "integrity": "sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/magic-string": { - "version": "0.30.11", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", - "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/magicast": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.4.tgz", - "integrity": "sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.24.4", - "@babel/types": "^7.24.0", - "source-map-js": "^1.2.0" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "dev": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/multicast-dns": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", - "dev": true, - "dependencies": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" - } - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "dev": true, - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", - "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", - "dev": true, - "dependencies": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^3.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "dev": true, - "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-retry": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", - "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", - "dev": true, - "dependencies": { - "@types/retry": "0.12.2", - "is-network-error": "^1.0.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", - "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", - "dev": true - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/patch-package": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz", - "integrity": "sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@yarnpkg/lockfile": "^1.1.0", - "chalk": "^4.1.2", - "ci-info": "^3.7.0", - "cross-spawn": "^7.0.3", - "find-yarn-workspace-root": "^2.0.0", - "fs-extra": "^9.0.0", - "json-stable-stringify": "^1.0.2", - "klaw-sync": "^6.0.0", - "minimist": "^1.2.6", - "open": "^7.4.2", - "rimraf": "^2.6.3", - "semver": "^7.5.3", - "slash": "^2.0.0", - "tmp": "^0.0.33", - "yaml": "^2.2.2" - }, - "bin": { - "patch-package": "index.js" - }, - "engines": { - "node": ">=14", - "npm": ">5" - } - }, - "node_modules/patch-package/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/patch-package/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/patch-package/node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/patch-package/node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/patch-package/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/patch-package/node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/patch-package/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/patch-package/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true - }, - "node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/pathval": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", - "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.16" - } - }, - "node_modules/php-cgi-wasm": { - "version": "0.0.9-alpha-25", - "resolved": "https://registry.npmjs.org/php-cgi-wasm/-/php-cgi-wasm-0.0.9-alpha-25.tgz", - "integrity": "sha512-vNFMWn6bsTon8hhm35R0OCZjCmA10Ld4rNCf3PSOeygQoaoiyScMxl6xgBne7kpd0I60SEfkN6jip9clv6OURQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/php-wasm": { - "version": "0.0.9-alpha-25", - "resolved": "https://registry.npmjs.org/php-wasm/-/php-wasm-0.0.9-alpha-25.tgz", - "integrity": "sha512-Sr1DfX1GvCotZbKzo8zAeKbocKgbhvRfKYZeJYCsAqZSy49BQRhHtSft0vV2HZ7+ZX1ZU16L1XTPwoIMPH+pBg==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/php-wasm-dom": { - "version": "0.0.9-alpha-25", - "resolved": "https://registry.npmjs.org/php-wasm-dom/-/php-wasm-dom-0.0.9-alpha-25.tgz", - "integrity": "sha512-xHYbcnBoyhot6CDJko4vFvqVhdoI1sEixXoK6Q425985F1nQNQwrfYnw13vR3iktgS/dy/AZ6n4apXkJV81G1g==", - "dev": true - }, - "node_modules/php-wasm-gd": { - "version": "0.0.9-alpha-25", - "resolved": "https://registry.npmjs.org/php-wasm-gd/-/php-wasm-gd-0.0.9-alpha-25.tgz", - "integrity": "sha512-1ElIlgVDE+D9jXxHn4oDkgl9sF6CmclXP3eEYW3l6BAj6rd1EdF0JmpdVMf6zfOWoLG70c0m/ndsf/0VFhtBBA==", - "dev": true - }, - "node_modules/php-wasm-iconv": { - "version": "0.0.9-alpha-25", - "resolved": "https://registry.npmjs.org/php-wasm-iconv/-/php-wasm-iconv-0.0.9-alpha-25.tgz", - "integrity": "sha512-sI56aA6pFwWEzaiWmvF8AHFesNKEfxpvuQm/2EwPKv5x361y0IjFL5YgvCifVsjrBlhKyOmzxvkJ+89zZ0ML8Q==", - "dev": true - }, - "node_modules/php-wasm-libxml": { - "version": "0.0.9-alpha-25", - "resolved": "https://registry.npmjs.org/php-wasm-libxml/-/php-wasm-libxml-0.0.9-alpha-25.tgz", - "integrity": "sha512-Z1LB4yNCa6SC7Sh6pn3c4wstO4UnLrnZ3XgRIWVTAzMR94tDJWBCnhkgUPTGJaBwhAx9MWV+gtRCmfkj36IWbQ==", - "dev": true - }, - "node_modules/php-wasm-libzip": { - "version": "0.0.9-alpha-25", - "resolved": "https://registry.npmjs.org/php-wasm-libzip/-/php-wasm-libzip-0.0.9-alpha-25.tgz", - "integrity": "sha512-t00u6kxmy9oG+yCsRBhyPHG62bR7gE11e7KAA1L7v/x11XficyyGWNn12shzqrWm0FhA1VkcQsGK3lzj7b/AWQ==", - "dev": true - }, - "node_modules/php-wasm-mbstring": { - "version": "0.0.9-alpha-25", - "resolved": "https://registry.npmjs.org/php-wasm-mbstring/-/php-wasm-mbstring-0.0.9-alpha-25.tgz", - "integrity": "sha512-2vZkbbnjGuonuJ7HeI4IbQF6a4v9E/B9MtboZCVgP+UiRJ66nSRAkN8xCUz+fXCyq/LxKdDU0XZbboa4/mxUGg==", - "dev": true - }, - "node_modules/php-wasm-simplexml": { - "version": "0.0.9-alpha-25", - "resolved": "https://registry.npmjs.org/php-wasm-simplexml/-/php-wasm-simplexml-0.0.9-alpha-25.tgz", - "integrity": "sha512-6i540HEnV9KdwnwzSTI9hQfx5bpOSzM36HWO6u4mjaf/BD+jR9xB7gDTlfX42qvmakaj5xQBh6JKtqP+NObNbw==", - "dev": true - }, - "node_modules/php-wasm-sqlite": { - "version": "0.0.9-alpha-25", - "resolved": "https://registry.npmjs.org/php-wasm-sqlite/-/php-wasm-sqlite-0.0.9-alpha-25.tgz", - "integrity": "sha512-VMTGsZ6arDy+IHaqEv4JBRSMsxvyjVVTkpHLGnkqKk1ooOR+VYm0pE8bnBH3xxsImusXahzaEoQ/EgH2JXVX3w==", - "dev": true - }, - "node_modules/php-wasm-xml": { - "version": "0.0.9-alpha-25", - "resolved": "https://registry.npmjs.org/php-wasm-xml/-/php-wasm-xml-0.0.9-alpha-25.tgz", - "integrity": "sha512-Gk96IaLcFXQG+VYbmXn3AaZ2nofLPodDSdrSrYjhSEo3uNEN7jnGSt7ZFjWM49jpgWQDQBTXt3P9gvtkND8uAQ==", - "dev": true - }, - "node_modules/php-wasm-zlib": { - "version": "0.0.9-alpha-25", - "resolved": "https://registry.npmjs.org/php-wasm-zlib/-/php-wasm-zlib-0.0.9-alpha-25.tgz", - "integrity": "sha512-XZAWupuLbXcuZvKtrSxIXPAX81mDjIntwdDTrtuBu6r/ZyD1/lexwBs1MP5TjT0N2wEsjhmm7Z3npbue44xTng==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", - "dev": true, - "dependencies": { - "find-up": "^6.3.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/postcss": { - "version": "8.4.41", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", - "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.1", - "source-map-js": "^1.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dev": true, - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/postcss-load-config": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", - "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "lilconfig": "^3.0.0", - "yaml": "^2.3.4" - }, - "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-load-config/node_modules/lilconfig": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", - "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, - "node_modules/postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.11" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", - "dev": true, - "dependencies": { - "resolve": "^1.20.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz", - "integrity": "sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==", - "dev": true, - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.20.0.tgz", - "integrity": "sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.5" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.20.0", - "@rollup/rollup-android-arm64": "4.20.0", - "@rollup/rollup-darwin-arm64": "4.20.0", - "@rollup/rollup-darwin-x64": "4.20.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.20.0", - "@rollup/rollup-linux-arm-musleabihf": "4.20.0", - "@rollup/rollup-linux-arm64-gnu": "4.20.0", - "@rollup/rollup-linux-arm64-musl": "4.20.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.20.0", - "@rollup/rollup-linux-riscv64-gnu": "4.20.0", - "@rollup/rollup-linux-s390x-gnu": "4.20.0", - "@rollup/rollup-linux-x64-gnu": "4.20.0", - "@rollup/rollup-linux-x64-musl": "4.20.0", - "@rollup/rollup-win32-arm64-msvc": "4.20.0", - "@rollup/rollup-win32-ia32-msvc": "4.20.0", - "@rollup/rollup-win32-x64-msvc": "4.20.0", - "fsevents": "~2.3.2" - } - }, - "node_modules/run-applescript": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", - "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", - "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true - }, - "node_modules/selfsigned": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", - "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", - "dev": true, - "dependencies": { - "@types/node-forge": "^1.3.0", - "node-forge": "^1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/serve-index/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/siginfo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true, - "license": "ISC" - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "node_modules/spdy-transport/node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/spdy-transport/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/spdy/node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/spdy/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true, - "license": "MIT" - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/std-env": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", - "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/sucrase": { - "version": "3.35.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", - "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "^10.3.10", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tailwindcss": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", - "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==", - "dev": true, - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.3.0", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.21.0", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.31.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz", - "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/test-exclude": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", - "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^10.4.1", - "minimatch": "^9.0.4" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/thingies": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", - "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", - "dev": true, - "engines": { - "node": ">=10.18" - }, - "peerDependencies": { - "tslib": "^2" - } - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "node_modules/tinybench": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", - "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinypool": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.0.tgz", - "integrity": "sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.0.0 || >=20.0.0" - } - }, - "node_modules/tinyrainbow": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", - "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tinyspy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.0.tgz", - "integrity": "sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tree-dump": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.2.tgz", - "integrity": "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==", - "dev": true, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true - }, - "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", - "dev": true - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true, - "license": "MIT" - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vite": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.0.tgz", - "integrity": "sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.40", - "rollup": "^4.13.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vite-node": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.5.tgz", - "integrity": "sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.3.5", - "pathe": "^1.1.2", - "tinyrainbow": "^1.2.0", - "vite": "^5.0.0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vite-node/node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/vite-node/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/vitest": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.5.tgz", - "integrity": "sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.3.0", - "@vitest/expect": "2.0.5", - "@vitest/pretty-format": "^2.0.5", - "@vitest/runner": "2.0.5", - "@vitest/snapshot": "2.0.5", - "@vitest/spy": "2.0.5", - "@vitest/utils": "2.0.5", - "chai": "^5.1.1", - "debug": "^4.3.5", - "execa": "^8.0.1", - "magic-string": "^0.30.10", - "pathe": "^1.1.2", - "std-env": "^3.7.0", - "tinybench": "^2.8.0", - "tinypool": "^1.0.0", - "tinyrainbow": "^1.2.0", - "vite": "^5.0.0", - "vite-node": "2.0.5", - "why-is-node-running": "^2.3.0" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "2.0.5", - "@vitest/ui": "2.0.5", - "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 - } - } - }, - "node_modules/vitest/node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/vitest/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/vitest/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vitest/node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=16.17.0" - } - }, - "node_modules/vitest/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vitest/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vitest/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/vitest/node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vitest/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vitest/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vitest/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/watchpack": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", - "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/webpack": { - "version": "5.92.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz", - "integrity": "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", - "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^2.1.1", - "@webpack-cli/info": "^2.0.2", - "@webpack-cli/serve": "^2.0.5", - "colorette": "^2.0.14", - "commander": "^10.0.1", - "cross-spawn": "^7.0.3", - "envinfo": "^7.7.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^3.1.1", - "rechoir": "^0.8.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/webpack-dev-server": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz", - "integrity": "sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==", - "dev": true, - "dependencies": { - "@types/bonjour": "^3.5.13", - "@types/connect-history-api-fallback": "^1.5.4", - "@types/express": "^4.17.21", - "@types/serve-index": "^1.9.4", - "@types/serve-static": "^1.15.5", - "@types/sockjs": "^0.3.36", - "@types/ws": "^8.5.10", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.2.1", - "chokidar": "^3.6.0", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.4.0", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.1.0", - "launch-editor": "^2.6.1", - "open": "^10.0.3", - "p-retry": "^6.2.0", - "rimraf": "^5.0.5", - "schema-utils": "^4.2.0", - "selfsigned": "^2.4.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^7.1.0", - "ws": "^8.16.0" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - }, - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/ipaddr.js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", - "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-dev-server/node_modules/memfs": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.9.3.tgz", - "integrity": "sha512-bsYSSnirtYTWi1+OPMFb0M048evMKyUYe0EbtuGQgq6BVQM1g1W8/KIUJCCvjgI/El0j6Q4WsmMiBwLUBSw8LA==", - "dev": true, - "dependencies": { - "@jsonjoy.com/json-pack": "^1.0.3", - "@jsonjoy.com/util": "^1.1.2", - "tree-dump": "^1.0.1", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">= 4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - } - }, - "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.2.1.tgz", - "integrity": "sha512-hRLz+jPQXo999Nx9fXVdKlg/aehsw1ajA9skAneGmT03xwmyuhvF93p6HUKKbWhXdcERtGTzUCtIQr+2IQegrA==", - "dev": true, - "dependencies": { - "colorette": "^2.0.10", - "memfs": "^4.6.0", - "mime-types": "^2.1.31", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/webpack-merge": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", - "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "flat": "^5.0.2", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/why-is-node-running": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", - "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - }, - "bin": { - "why-is-node-running": "cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wildcard": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "peer": true - }, - "node_modules/yaml": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", - "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", - "dev": true, - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", - "dev": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/trial/package.json b/trial/package.json deleted file mode 100644 index 59d9d71ffe3cc2f819928512341ff6eb23966ff4..0000000000000000000000000000000000000000 --- a/trial/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "devDependencies": { - "@tailwindcss/typography": "^0.5.13", - "@vitest/coverage-v8": "^2.0.5", - "babel-loader": "^9.1.3", - "happy-dom": "^14.12.3", - "patch-package": "^8.0.0", - "php-cgi-wasm": "0.0.9-alpha-25", - "php-wasm": "0.0.9-alpha-25", - "php-wasm-dom": "0.0.9-alpha-25", - "php-wasm-gd": "0.0.9-alpha-25", - "php-wasm-iconv": "0.0.9-alpha-25", - "php-wasm-libxml": "0.0.9-alpha-25", - "php-wasm-libzip": "0.0.9-alpha-25", - "php-wasm-mbstring": "0.0.9-alpha-25", - "php-wasm-simplexml": "0.0.9-alpha-25", - "php-wasm-sqlite": "0.0.9-alpha-25", - "php-wasm-xml": "0.0.9-alpha-25", - "php-wasm-zlib": "0.0.9-alpha-25", - "tailwindcss": "^3.4.4", - "vitest": "^2.0.5", - "webpack": "^5.92.1", - "webpack-cli": "^5.1.4", - "webpack-dev-server": "^5.0.4" - }, - "scripts": { - "tailwind:build": "npx tailwindcss -i ./src/styles.css -o ./public/styles.css --minify", - "tailwind:watch": "npx tailwindcss -i ./src/styles.css -o ./public/styles.css --watch", - "postinstall": "patch-package --patch-dir=artifact_assets/patches/npm && ./postinstall.sh", - "worker:build": "webpack --config workers.webpack.js", - "build": "npm run worker:build && npm run tailwind:build", - "test": "vitest", - "coverage": "vitest run --coverage" - } -} diff --git a/trial/postinstall.sh b/trial/postinstall.sh deleted file mode 100755 index afdf539a23eb3fcf98a5934e361afd0ea9bf3e39..0000000000000000000000000000000000000000 --- a/trial/postinstall.sh +++ /dev/null @@ -1,10 +0,0 @@ -# Since we're not using a bundler, we need to manually copy the required -# dependencies from node_modules -# -# NOTE: Rollup has been evaluated, but even with preserveModules it does not -# copy over the required .wasm files or .so files, and preserves the dependencies -# directory structure. -# NOTE: Work needs to be done to see about further leveraging Webpack beyond -# compiling the bundles non-ESM service worker. -rsync --exclude='*[nN]ode*' --exclude='*[wW]ebview*' --exclude='php-tags*' --exclude='*index*' node_modules/php-*/*.mjs* public -rsync --exclude='php8.0*' --exclude='php8.1*' --exclude='php8.2*' node_modules/*/*.so public diff --git a/trial/public/assets/export.phpcode b/trial/public/assets/export.phpcode deleted file mode 100644 index a5f6b64ca40fb9e831445bd3acc4f5dd20ada109..0000000000000000000000000000000000000000 --- a/trial/public/assets/export.phpcode +++ /dev/null @@ -1,62 +0,0 @@ -<?php - -$stdErr = fopen('php://stderr', 'w'); - -set_error_handler(function (...$args) use ($stdErr, &$errors) { - fwrite($stdErr, print_r($args, 1)); -}); - -$flavor = file_get_contents('/config/flavor.txt'); - -$docroot = '/persist/' . $flavor; - -$zip = new ZipArchive; - -if ($zip->open('/persist/export.zip', ZipArchive::CREATE) !== TRUE) { - print json_encode([ - 'message' => 'export.zip could not be created', - 'type' => 'error', - ], JSON_THROW_ON_ERROR) . PHP_EOL; - exit(1); -} - -$files = new RecursiveIteratorIterator( - new RecursiveDirectoryIterator($docroot, FilesystemIterator::SKIP_DOTS) -); -$total = iterator_count($files); -$i = $percent = 0; -foreach ($files as $name => $file) { - if (is_dir($name)) { - continue; - } - $added = $zip->addFile($name, str_replace($docroot, '', $name)); - if ($added) { - $newPercent = (++$i / $total); - if ($newPercent - $percent >= 0.01) { - print json_encode([ - 'message' => 'Packing files ' . round($newPercent * 100, 2) . '%', - 'type' => 'archive', - ], JSON_THROW_ON_ERROR) . PHP_EOL; - $percent = $newPercent; - } - } else { - print json_encode([ - 'message' => 'Could not pack file ' . $name, - 'type' => 'error', - ], JSON_THROW_ON_ERROR) . PHP_EOL; - exit(); - } -} -print json_encode([ - 'message' => 'Packing files 100%', - 'type' => 'archive', - ], JSON_THROW_ON_ERROR) . PHP_EOL; - -$zip->close(); - -print json_encode([ - 'message' => 'Export archive created', - 'type' => 'archive', - ], JSON_THROW_ON_ERROR) . PHP_EOL; - -exit(0); diff --git a/trial/public/assets/init.phpcode b/trial/public/assets/init.phpcode deleted file mode 100644 index 8ff8ea81cb1b8042d80f3b27ce666d030e7fb832..0000000000000000000000000000000000000000 --- a/trial/public/assets/init.phpcode +++ /dev/null @@ -1,54 +0,0 @@ -<?php - -$stdErr = fopen('php://stderr', 'w'); - -set_error_handler(function(...$args) use($stdErr, &$errors){ - fwrite($stdErr, print_r($args,1)); -}); - -$flavor = file_get_contents('/config/flavor.txt'); - -$docroot = '/persist/' . $flavor; - -$zip = new ZipArchive; - -if (!file_exists('/persist/artifact.zip')) { - print json_encode([ - 'message' => 'artifact could not be found', - 'type' => 'error', - ], JSON_THROW_ON_ERROR) . PHP_EOL; - exit(1); -} - -if($zip->open('/persist/artifact.zip', ZipArchive::RDONLY) === TRUE) -{ - $total = $zip->count(); - $percent = 0; - for($i = 0; $i < $total; $i++) - { - $zip->extractTo($docroot, $zip->getNameIndex($i)); - $newPercent = ((1+$i) / $total); - - if($newPercent - $percent >= 0.01) - { - print json_encode([ - 'message' => 'Unpacking files ' . round($newPercent * 100, 2) . '%', - 'type' => 'unarchive', - ], JSON_THROW_ON_ERROR) . PHP_EOL; - $percent = $newPercent; - } - } - print json_encode([ - 'message' => 'Unpacking files 100%', - 'type' => 'unarchive', - ], JSON_THROW_ON_ERROR) . PHP_EOL; -} -else { - print json_encode([ - 'message' => 'could not open artifact archive', - 'type' => 'error', - ], JSON_THROW_ON_ERROR) . PHP_EOL; - exit(1); -} - -exit(0); diff --git a/trial/public/assets/install-site.phpcode b/trial/public/assets/install-site.phpcode deleted file mode 100644 index c068120931df585de71c2f64f4dd53d40d6c6726..0000000000000000000000000000000000000000 --- a/trial/public/assets/install-site.phpcode +++ /dev/null @@ -1,109 +0,0 @@ -<?php - -$stdErr = fopen('php://stderr', 'w'); - -set_error_handler(function(...$args) use($stdErr, &$errors){ - fwrite($stdErr, print_r($args,1)); -}); - -$flavor = file_get_contents('/config/flavor.txt'); -$docroot = '/persist/' . $flavor; - -$install_params = \json_decode( - file_get_contents("/config/$flavor-install-params.json") ?: [], - true -); - -chdir($docroot . '/web'); - -$install_type = $install_params['installType'] ?? 'interactive'; - -if ($install_type === 'interactive') { - exit; -} - -if ($install_type === 'preinstalled') { - if (!is_dir('sites/default/files/css') && !mkdir('sites/default/files/css') && !is_dir('sites/default/files/css')) { - throw new \RuntimeException(sprintf('Directory "%s" was not created', 'sites/default/files/css')); - } - if (!is_dir('sites/default/files/js') && !mkdir('sites/default/files/js') && !is_dir('sites/default/files/js')) { - throw new \RuntimeException(sprintf('Directory "%s" was not created', 'sites/default/files/js')); - } - - print json_encode([ - 'message' => "Installed", - 'type' => 'install', - ], JSON_THROW_ON_ERROR) . PHP_EOL; - exit; -} - -$class_loader = require $docroot . '/vendor/autoload.php'; - -$parameters = [ - 'interactive' => FALSE, - 'site_path' => 'sites/default', - 'parameters' => [ - 'profile' => 'drupal_cms_installer', - 'langcode' => $install_params['langcode'] ?? 'en', - ], - 'forms' => [ - 'install_settings_form' => [ - 'driver' => 'Drupal\sqlite\Driver\Database\sqlite', - 'sqlite' => [ - 'database' => 'sites/default/files/.sqlite', - ], - ], - 'install_configure_form' => [ - 'site_name' => $install_params['siteName'], - 'site_mail' => 'drupal@localhost', - 'account' => [ - 'name' => 'admin', - 'mail' => 'admin@localhost', - 'pass' => [ - 'pass1' => 'admin', - 'pass2' => 'admin', - ], - ], - 'enable_update_status_module' => TRUE, - // \Drupal\Core\Render\Element\Checkboxes::valueCallback() requires - // NULL instead of FALSE values for programmatic form submissions to - // disable a checkbox. - 'enable_update_status_emails' => NULL, - ], - ], -]; - -require_once 'core/includes/install.core.inc'; - -try { - install_drupal($class_loader, $parameters, static function ($install_state) { - static $started = FALSE; - static $finished, $total = 0; - if (!$started) { - print json_encode([ - 'message' => 'Beginning install tasks', - 'type' => 'install', - ], JSON_THROW_ON_ERROR) . PHP_EOL; - - $started = TRUE; - $total = count(install_tasks_to_perform($install_state)); - } - print json_encode([ - 'message' => "Performing install task ($finished / $total)", - 'type' => 'install', - ], JSON_THROW_ON_ERROR) . PHP_EOL; - $finished++; - }); - - chmod('sites/default', 0755); - chmod('sites/default/settings.php', 0644); - -} catch (\Exception $e) { - print json_encode([ - 'message' => $e->getMessage(), - 'type' => 'error', - ], JSON_THROW_ON_ERROR) . PHP_EOL; -exit(1); -} - -exit; diff --git a/trial/public/assets/login-admin.phpcode b/trial/public/assets/login-admin.phpcode deleted file mode 100644 index 2bbaaa65b2299db2a8ee87e0947b18fb164b5d97..0000000000000000000000000000000000000000 --- a/trial/public/assets/login-admin.phpcode +++ /dev/null @@ -1,66 +0,0 @@ -<?php - -use Drupal\Core\DrupalKernel; -use Drupal\user\Entity\User; -use Symfony\Component\HttpFoundation\Request; - -$stdErr = fopen('php://stderr', 'w'); - -set_error_handler(function (...$args) use ($stdErr, &$errors) { - fwrite($stdErr, print_r($args, 1)); -}); - -$flavor = file_get_contents('/config/flavor.txt'); -$docroot = '/persist/' . $flavor; - -$install_params = \json_decode( - file_get_contents("/config/$flavor-install-params.json") ?: [], - true -); - -chdir($docroot . '/web'); - -$class_loader = require $docroot . '/vendor/autoload.php'; - -$request = Request::create("/cgi/$flavor/", 'GET', [], [], [], [ - 'HTTP_HOST' => $install_params['host'] ?? 'localhost', - 'REMOTE_ADDR' => '127.0.0.1', - 'SCRIPT_FILENAME' => "/persist/$flavor/web/index.php", - 'SCRIPT_NAME' => "/cgi/$flavor/index.php" -]); -$kernel = DrupalKernel::createFromRequest($request, $class_loader, 'prod'); -$kernel->boot(); -$kernel->loadLegacyIncludes(); - -$container = $kernel->getContainer(); -$container->get('request_stack')->push($request); - -$container->get('module_handler')->loadAll(); - -/** @var \Symfony\Component\HttpFoundation\Session\Session $session */ -$session = $container->get('session'); -$session->start(); -$request->setSession($session); - -$account = User::load(1); -user_login_finalize($account); - -try { - $session->save(); -} catch (\Throwable $e) { - print json_encode([ - 'message' => 'could not get login session', - 'trace' => $e->getTraceAsString(), - 'type' => 'login', - ], JSON_THROW_ON_ERROR) . PHP_EOL; - exit(1); -} - -print json_encode([ - 'message' => 'Logged in!', - 'params' => [ - 'name' => $session->getName(), - 'id' => $session->getId(), - ], - 'type' => 'set_cookie', - ], JSON_THROW_ON_ERROR) . PHP_EOL; diff --git a/trial/public/cookie-map.mjs b/trial/public/cookie-map.mjs deleted file mode 100644 index 0ac8032f7fe87c0fc86394d01c385ae75e4faf90..0000000000000000000000000000000000000000 --- a/trial/public/cookie-map.mjs +++ /dev/null @@ -1,85 +0,0 @@ -export default class CookieMap extends Map { - - name = '/cookies' - store = 'COOKIES' - - constructor(iterable) { - super(); - - this._db = this._openDB(); - this._db.then(db => { - const transaction = db.transaction(this.store, 'readonly'); - const store = transaction.objectStore(this.store); - - const request = store.getAll(); - request.onsuccess = (event) => { - const entries = event.target.result; - entries.forEach(({ key, value }) => super.set(key, value)); - iterable.forEach(([ key, value ]) => { - this.set(key, value) - }); - }; - }); - } - - _openDB() { - return new Promise((resolve, reject) => { - const request = indexedDB.open(this.name); - - request.onupgradeneeded = (event) => { - const db = event.target.result; - if (!db.objectStoreNames.contains(this.store)) { - db.createObjectStore(this.store, { keyPath: 'key' }); - } - }; - - request.onsuccess = (event) => resolve(event.target.result); - request.onerror = (event) => reject(event.target.error); - }); - } - - get(key) { - return super.get(key); - } - - set(key, value) { - if (value === 'deleted') { - return this.delete(key) - } - super.set(key, value) - this._persist(key, value); - return this; - } - - delete(key) { - const result = super.delete(key); - this._delete(key); - return result; - } - - clear() { - super.clear(); - this._clear(); - } - - async _persist(key, value) { - const store = await this._getTransaction() - store.put({value, key}); - } - - async _delete(key) { - const store = await this._getTransaction() - store.delete(key); - } - - async _clear() { - const store = await this._getTransaction() - store.clear(); - } - - async _getTransaction() { - const db = await this._db; - const transaction = db.transaction(this.store, 'readwrite'); - return transaction.objectStore(this.store); - } -} diff --git a/trial/public/drupal-cgi-worker.mjs b/trial/public/drupal-cgi-worker.mjs deleted file mode 100644 index 26e61aa3baeeff2c5d9df1dde30390159d3b0178..0000000000000000000000000000000000000000 --- a/trial/public/drupal-cgi-worker.mjs +++ /dev/null @@ -1,108 +0,0 @@ -import {getBroadcastChannel} from "./utils.mjs"; -import CookieMap from "./cookie-map.mjs"; - -// Fibers are not yet supported in the Wasm runtime. -// Instead of uninstalling BigPipe, set the `big_pipe_nojs` cookie which disables its functionality. -// This will make it easier to export the trial experience in the future. -const cookies = new CookieMap([ - ['big_pipe_nojs', '1'] -]); - -const onRequest = (request, response) => { - const url = new URL(request.url); - const logLine = - `[${new Date().toISOString()}]` + - ` 127.0.0.1 - "${request.method}` + - ` ${url.pathname}" - HTTP/1.1 ${response.status}`; - console.log(logLine); -}; -const notFound = (request) => { - console.log(request) - return new Response(`<body><h1>404</h1>${request.url} not found</body>`, { - status: 404, - headers: {"Content-Type": "text/html"}, - }); -}; - -const sharedLibs = [ - `php\${PHP_VERSION}-zlib.so`, - `php\${PHP_VERSION}-zip.so`, - `php\${PHP_VERSION}-iconv.so`, - `php\${PHP_VERSION}-gd.so`, - `php\${PHP_VERSION}-dom.so`, - `php\${PHP_VERSION}-mbstring.so`, - `php\${PHP_VERSION}-sqlite.so`, - `php\${PHP_VERSION}-pdo-sqlite.so`, - `php\${PHP_VERSION}-xml.so`, - `php\${PHP_VERSION}-simplexml.so`, -]; - -export function setUpWorker(worker, PhpCgiWorker, prefix, docroot) { - const php = new PhpCgiWorker({ - onRequest, - notFound, - sharedLibs, - prefix, - docroot, - types: { - jpeg: "image/jpeg", - jpg: "image/jpeg", - gif: "image/gif", - png: "image/png", - svg: "image/svg+xml" - }, - env: { - HTTP_USER_AGENT: worker.navigator.userAgent, - DRUPAL_CMS_TRIAL: '1', - }, - ini: ` - date.timezone=${Intl.DateTimeFormat().resolvedOptions().timeZone} - `, - cookies, - }) - - const channel = getBroadcastChannel() - channel.addEventListener('message', async ({ data }) => { - const { action, params } = data; - if (action === 'refresh') { - await navigator.locks.request('cgi-worker-action', async () => { - console.log('Refreshing CGI') - php.refresh(); - }); - } - if (action === 'set_vhost') { - await navigator.locks.request('cgi-worker-action', async () => { - const vHost = { - pathPrefix: `/cgi/${params.flavor}`, - directory: `/persist/${params.flavor}/web`, - entrypoint: 'index.php', - }; - const settings = await php.getSettings(); - const vHostExists = settings.vHosts.find(existing => existing.pathPrefix === vHost.pathPrefix); - - if (!vHostExists) { - settings.vHosts.push(vHost) - await php.setSettings(settings) - await php.storeInit() - } - }); - } - else if (action === 'set_cookie') { - await navigator.locks.request('cgi-worker-action', async () => { - cookies.set(params.name, params.id) - }); - } - }) - - worker.addEventListener('install', event => php.handleInstallEvent(event)); - worker.addEventListener('activate', event => php.handleActivateEvent(event)); - worker.addEventListener('activate', () => { - channel.postMessage({ - action: 'service_worker_activated' - }) - }); - worker.addEventListener('fetch', event => php.handleFetchEvent(event)); - worker.addEventListener('message', event => php.handleMessageEvent(event)); - - return php -} diff --git a/trial/public/favicon.ico b/trial/public/favicon.ico deleted file mode 100644 index 63c573b9adf1336978fdd09cd958cd914bee6abb..0000000000000000000000000000000000000000 Binary files a/trial/public/favicon.ico and /dev/null differ diff --git a/trial/public/fonts/inter-cryllic-ext.woff2 b/trial/public/fonts/inter-cryllic-ext.woff2 deleted file mode 100644 index 1029b2511535218cfad5aff3a67b88742683d488..0000000000000000000000000000000000000000 Binary files a/trial/public/fonts/inter-cryllic-ext.woff2 and /dev/null differ diff --git a/trial/public/fonts/inter-cyrillic.woff2 b/trial/public/fonts/inter-cyrillic.woff2 deleted file mode 100644 index 4a88c023d68345726256ebf7df3761d25e2981b1..0000000000000000000000000000000000000000 Binary files a/trial/public/fonts/inter-cyrillic.woff2 and /dev/null differ diff --git a/trial/public/fonts/inter-greek-ext.woff2 b/trial/public/fonts/inter-greek-ext.woff2 deleted file mode 100644 index bbcbf27020c79e5930fecd6a0126b44cdfa6fea8..0000000000000000000000000000000000000000 Binary files a/trial/public/fonts/inter-greek-ext.woff2 and /dev/null differ diff --git a/trial/public/fonts/inter-greek.woff2 b/trial/public/fonts/inter-greek.woff2 deleted file mode 100644 index 1339c681c57e2635b36a9d069d2d45a78b0ca511..0000000000000000000000000000000000000000 Binary files a/trial/public/fonts/inter-greek.woff2 and /dev/null differ diff --git a/trial/public/fonts/inter-italic-cyrillic-ext.woff2 b/trial/public/fonts/inter-italic-cyrillic-ext.woff2 deleted file mode 100644 index 83e50e1edd2560cad6557d7f93651df5e70be4d6..0000000000000000000000000000000000000000 Binary files a/trial/public/fonts/inter-italic-cyrillic-ext.woff2 and /dev/null differ diff --git a/trial/public/fonts/inter-italic-cyrillic.woff2 b/trial/public/fonts/inter-italic-cyrillic.woff2 deleted file mode 100644 index 87a694984b6e0764f49335c238a0dd7d57bbbe36..0000000000000000000000000000000000000000 Binary files a/trial/public/fonts/inter-italic-cyrillic.woff2 and /dev/null differ diff --git a/trial/public/fonts/inter-italic-greek-ext.woff2 b/trial/public/fonts/inter-italic-greek-ext.woff2 deleted file mode 100644 index ea4c043b84c498966663d301f8530ff063ab2d37..0000000000000000000000000000000000000000 Binary files a/trial/public/fonts/inter-italic-greek-ext.woff2 and /dev/null differ diff --git a/trial/public/fonts/inter-italic-greek.woff2 b/trial/public/fonts/inter-italic-greek.woff2 deleted file mode 100644 index 05fae388ecea1d46562382829245c768bfcff1e6..0000000000000000000000000000000000000000 Binary files a/trial/public/fonts/inter-italic-greek.woff2 and /dev/null differ diff --git a/trial/public/fonts/inter-italic-latin-ext.woff2 b/trial/public/fonts/inter-italic-latin-ext.woff2 deleted file mode 100644 index b1fae490f93a7540d755469198c6e50f44d1b36b..0000000000000000000000000000000000000000 Binary files a/trial/public/fonts/inter-italic-latin-ext.woff2 and /dev/null differ diff --git a/trial/public/fonts/inter-italic-latin.woff2 b/trial/public/fonts/inter-italic-latin.woff2 deleted file mode 100644 index ac7e0de6b7778aa91ab99851409f21c0fd7f9920..0000000000000000000000000000000000000000 Binary files a/trial/public/fonts/inter-italic-latin.woff2 and /dev/null differ diff --git a/trial/public/fonts/inter-italic-vietnamese.woff2 b/trial/public/fonts/inter-italic-vietnamese.woff2 deleted file mode 100644 index ddc6badf4fbcc80e3bb40017b0d907b93aa5c254..0000000000000000000000000000000000000000 Binary files a/trial/public/fonts/inter-italic-vietnamese.woff2 and /dev/null differ diff --git a/trial/public/fonts/inter-latin-ext.woff2 b/trial/public/fonts/inter-latin-ext.woff2 deleted file mode 100644 index 82e134726698d0096702766a029be7730583f7e9..0000000000000000000000000000000000000000 Binary files a/trial/public/fonts/inter-latin-ext.woff2 and /dev/null differ diff --git a/trial/public/fonts/inter-latin.woff2 b/trial/public/fonts/inter-latin.woff2 deleted file mode 100644 index e0cab47a8483420dfb61637332265a31990dfd66..0000000000000000000000000000000000000000 Binary files a/trial/public/fonts/inter-latin.woff2 and /dev/null differ diff --git a/trial/public/fonts/inter-vietnamese.woff2 b/trial/public/fonts/inter-vietnamese.woff2 deleted file mode 100644 index e9057325ddd54ddd5218c539cf584b38c91123c8..0000000000000000000000000000000000000000 Binary files a/trial/public/fonts/inter-vietnamese.woff2 and /dev/null differ diff --git a/trial/public/index.html b/trial/public/index.html deleted file mode 100644 index c7b3661cb523bbd3ceb7683e08e37aaff87540d4..0000000000000000000000000000000000000000 --- a/trial/public/index.html +++ /dev/null @@ -1,21 +0,0 @@ -<!doctype html> -<html lang="en" class="h-dvh"> -<head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <title>Try Drupal CMS</title> - <link href="styles.css" rel="stylesheet"> -</head> -<body class="bg-drupal-blue bg-gradient-33-turn from-drupal-purple to-drupal-blue h-dvh flex flex-col justify-center"> -<div class="flex flex-col justify-center w-full max-w-screen-sm mx-auto border border-transparent rounded-lg bg-white py-16 px-12 shadow-lg"> - <div> - <h1 class="font-black mb-8"> - <span class="text-4xl">Drupal</span> - <span class="text-3xl opacity-75">CMS</span> - </h1> - </div> - <trial-manager></trial-manager> -</div> -<script src="main.mjs" type="module"></script> -</body> -</html> diff --git a/trial/public/install-worker.mjs b/trial/public/install-worker.mjs deleted file mode 100644 index c2652340361c193c0a166104b17941f8280dc590..0000000000000000000000000000000000000000 --- a/trial/public/install-worker.mjs +++ /dev/null @@ -1,285 +0,0 @@ -import { PhpWorker } from './PhpWorker.mjs' -import { getBroadcastChannel } from "./utils.mjs"; - -const sharedLibs = [ - `php${PhpWorker.phpVersion}-zip.so`, - `php${PhpWorker.phpVersion}-zlib.so`, - `php${PhpWorker.phpVersion}-iconv.so`, - `php${PhpWorker.phpVersion}-gd.so`, - `php${PhpWorker.phpVersion}-dom.so`, - `php${PhpWorker.phpVersion}-mbstring.so`, - `php${PhpWorker.phpVersion}-sqlite.so`, - `php${PhpWorker.phpVersion}-pdo-sqlite.so`, - `php${PhpWorker.phpVersion}-xml.so`, - `php${PhpWorker.phpVersion}-simplexml.so`, -]; - -console.log('booting PhpWorker') -const php = new PhpWorker({ - sharedLibs, - persist: [{ mountPath: '/persist' }, { mountPath: '/config' }], - ini: ` - date.timezone=${Intl.DateTimeFormat().resolvedOptions().timeZone} - ` -}) -php.addEventListener('output', event => { - event.detail.forEach(detail => { - try { - const data = JSON.parse(detail.trim()); - postMessage({ - action: `status`, - ...data - }) - } catch (e) { - console.log(detail) - } - }) -}); -php.addEventListener('error', event => console.log(event.detail)); - -self.onmessage = async ({data }) => { - const { action, params } = data; - - if (action === 'start') { - await navigator.locks.request('start', async () => { - console.log('Starting') - postMessage({ - action: `started`, - params, - message: 'Starting' - }) - - const { flavor, artifact } = params; - - getBroadcastChannel().postMessage({ - action: 'set_vhost', - params - }) - - const checkWww = await php.analyzePath(`/persist/${flavor}`) - if (checkWww.exists) { - postMessage({ - action: `finished`, - params, - message: 'Site already exists' - }) - } else { - const checkArchive = await php.analyzePath('/persist/artifact.zip'); - if (checkArchive.exists) { - postMessage({ - action: 'status', - params, - message: 'Removing existing Drupal CMS archive' - }) - console.log('Removing archive'); - await php.unlink('/persist/artifact.zip') - } - postMessage({ - action: 'status', - params, - message: 'Downloading Drupal CMS' - }) - const downloader = fetch(artifact); - - const download = await downloader.then(response => { - const contentEncoding = response.headers.get('content-encoding'); - const contentLength = response.headers.get(contentEncoding ? 'x-file-size' : 'content-length'); - const total = parseInt(contentLength, 10); - let loaded = 0; - - return new Response( - new ReadableStream({ - start(controller) { - const reader = response.body.getReader(); - - read(); - function read() { - reader.read().then(({done, value}) => { - if (done) { - controller.close(); - return; - } - loaded += value.byteLength; - postMessage({ - action: 'status', - params, - message: `Downloading Drupal CMS ${Math.round(loaded/total*100)+'%'}` - }) - controller.enqueue(value); - read(); - }).catch(error => { - console.error(error); - controller.error(error) - }) - } - } - }) - ); - }) - - - const zipContents = await download.arrayBuffer(); - - postMessage({ - action: 'status', - params, - message: 'Saving Drupal CMS' - }) - - await php.writeFile('/config/flavor.txt', flavor) - await php.writeFile('/persist/artifact.zip', new Uint8Array(zipContents)) - - postMessage({ - action: 'status', - params, - message: 'Extracting Drupal CMS' - }) - const initPhpCode = fetch('/assets/init.phpcode'); - await php.binary; - - const initPhpExitCode = await php.run(await (await initPhpCode).text()); - console.log(initPhpExitCode) - - const installType = params.installParameters.installType; - if (installType !== 'interactive') { - postMessage({ - action: 'status', - params, - message: 'Preparing Drupal CMS', - }); - - console.log('Writing install parameters'); - await php.writeFile(`/config/${flavor}-install-params.json`, JSON.stringify({ - langcode: 'en', - host: (new URL(globalThis.location || 'http://localhost')).host, - ...params.installParameters, - })); - - if (installType === 'automated') { - console.log('Installing site'); - - await php.run(`<?php putenv('DRUPAL_CMS_TRIAL=1');`); - - const installSiteCode = await (await fetch('/assets/install-site.phpcode')).text(); - console.log('Executing install site code...'); - try { - const installSiteExitCode = await php.run(installSiteCode); - console.log(installSiteExitCode); - } catch (e) { - let message = `An error occured. ${e.name}: ${e.message}`; - if (e.name === 'RangeError') { - message += ' See https://github.com/mglaman/wasm-drupal/issues/28'; - } - - postMessage({ - action: 'status', - type: 'error', - params, - message, - }); - return; - } - } - - postMessage({ - action: 'status', - params, - message: 'Logging you in', - }); - const autoLoginCode = await (await fetch('/assets/login-admin.phpcode')).text(); - await php.run(autoLoginCode); - await php.unlink(`/config/${flavor}-install-params.json`); - } - - postMessage({ - action: 'status', - params, - message: 'Cleaning up files' - }) - await php.unlink('/config/flavor.txt') - await php.unlink('/persist/artifact.zip') - - postMessage({ - action: `finished`, - params, - message: 'Finishing' - }) - } - }) - } - else if (action === 'remove') { - const { flavor } = params; - await self.navigator.locks.request('remove', () => { - const openDb = indexedDB.open("/persist", 21); - openDb.onsuccess = () => { - const db = openDb.result; - const transaction = db.transaction(["FILE_DATA"], "readwrite"); - const objectStore = transaction.objectStore("FILE_DATA"); - // IDBKeyRange.bound trick found at https://stackoverflow.com/a/76714057/1949744 - const objectStoreRequest = objectStore.delete(IDBKeyRange.bound(`/persist/${flavor}`, `/persist/${flavor}/\uffff`)); - - objectStoreRequest.onsuccess = () => { - db.close(); - postMessage({ - action: 'reload' - }) - }; - }; - }) - } - else if (action === 'stop') { - self.close() - } - else if (action === 'export') { - const { flavor } = params; - await self.navigator.locks.request('export', async () => { - postMessage({ - action: `started`, - params, - message: 'Preparing to export' - }) - await php.writeFile('/config/flavor.txt', flavor) - - console.log('fetching export code') - const exportPhpCode = fetch('/assets/export.phpcode'); - await php.binary; - - console.log('running export code') - const exportPhpExitCode = await php.run(await (await exportPhpCode).text()) - console.log(exportPhpExitCode) - - await php.unlink('/config/flavor.txt') - postMessage({ - action: `status`, - params, - message: 'Preparing download' - }) - - const exportContents = await php.readFile('/persist/export.zip') - const blob = new Blob([exportContents], { type: 'application/zip' }) - - postMessage({ - action: `export_finished`, - params: { - ...params, - export: blob - }, - message: 'Download ready' - }) - setTimeout(() => php.unlink('/persist/export.zip'), 0) - - }) - } - else if (action === 'check_existing') { - console.log('Checking for existing session') - const { flavor } = params; - const check = await php.analyzePath(`/persist/${flavor}`) - postMessage({ - action: `check_existing_finished`, - params: { - exists: check.exists, - ...params - } - }) - } -} diff --git a/trial/public/local.html b/trial/public/local.html deleted file mode 100644 index 8f2346fedfc9f6ed7585d8829f52a97691d7c018..0000000000000000000000000000000000000000 --- a/trial/public/local.html +++ /dev/null @@ -1,21 +0,0 @@ -<!doctype html> -<html lang="en" class="h-dvh"> -<head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <title>Try Drupal CMS</title> - <link href="styles.css" rel="stylesheet"> -</head> -<body class="bg-drupal-blue bg-gradient-33-turn from-drupal-purple to-drupal-blue h-dvh flex flex-col justify-center"> -<div class="flex flex-col justify-center w-full max-w-screen-sm mx-auto border border-transparent rounded-lg bg-white py-8 px-4 shadow-lg"> - <div> - <h1 class="font-black mb-8"> - <span class="text-4xl">Drupal</span> - <span class="text-3xl opacity-75">CMS</span> - </h1> - </div> - <trial-manager artifact="assets/trial.zip"></trial-manager> -</div> -<script src="main.mjs" type="module"></script> -</body> -</html> diff --git a/trial/public/main.mjs b/trial/public/main.mjs deleted file mode 100644 index e07b1f1d0288d5bb1cfd76917df620e2da698c4f..0000000000000000000000000000000000000000 --- a/trial/public/main.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { registerWorker } from './utils.mjs' -import { defineTrialManagerElement } from "./trial-manager.mjs"; - -defineTrialManagerElement() -registerWorker( - `${window.location.origin}/service-worker.mjs`, - `${window.location.origin}/service-worker.js` -) diff --git a/trial/public/non-ui.html b/trial/public/non-ui.html deleted file mode 100644 index 606ef8b1600d29cb59aef67abbab653219486d6f..0000000000000000000000000000000000000000 --- a/trial/public/non-ui.html +++ /dev/null @@ -1,21 +0,0 @@ -<!doctype html> -<html lang="en" class="h-dvh"> -<head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <title>Try Drupal CMS</title> - <link href="styles.css" rel="stylesheet"> -</head> -<body class="bg-drupal-blue bg-gradient-33-turn from-drupal-purple to-drupal-blue h-dvh flex flex-col justify-center"> -<div class="flex flex-col justify-center w-full max-w-screen-sm mx-auto border border-transparent rounded-lg bg-white py-8 px-4 shadow-lg"> - <div> - <h1 class="font-black mb-8"> - <span class="text-4xl">Drupal</span> - <span class="text-3xl opacity-75">CMS</span> - </h1> - </div> - <trial-manager install-type="automated"></trial-manager> -</div> -<script src="main.mjs" type="module"></script> -</body> -</html> diff --git a/trial/public/service-worker.mjs b/trial/public/service-worker.mjs deleted file mode 100644 index 2342547110523901320e641ce85e75d9861940c3..0000000000000000000000000000000000000000 --- a/trial/public/service-worker.mjs +++ /dev/null @@ -1,4 +0,0 @@ -import { PhpCgiWorker } from "./PhpCgiWorker.mjs"; -import {setUpWorker} from "./drupal-cgi-worker.mjs"; - -setUpWorker(self, PhpCgiWorker, '/cgi/', '/persist/www') diff --git a/trial/public/trial-manager.mjs b/trial/public/trial-manager.mjs deleted file mode 100644 index deeb625e181da4ba97adfb274c8146df4d3d248a..0000000000000000000000000000000000000000 --- a/trial/public/trial-manager.mjs +++ /dev/null @@ -1,265 +0,0 @@ -import {getBroadcastChannel} from "./utils.mjs"; - -export default class TrialManager extends HTMLElement { - static observedAttributes = ['mode', 'message']; - constructor() { - super() - this.worker = new Worker('/install-worker.mjs', { - type: "module" - }); - this.worker.onmessage = this.onMessage.bind(this) - - this.channel = getBroadcastChannel() - this.channel.addEventListener('message', ({ data }) => { - const { action } = data; - if (action === 'service_worker_ready') { - this.sendWorkerAction('check_existing', { - flavor: this.flavor - }) - } - }) - - this.spinner = this.initializingEl() - this.actions = this.actionsEl() - this.progress = this.progressEl() - } - - render() { - const mode = this.mode; - if (!mode) { - this.replaceChildren(this.spinner) - } else if (mode === 'new_session') { - this.replaceChildren(this.progress) - } else if (mode === 'existing_session') { - this.replaceChildren(this.actions) - } - } - - get mode() { - return this.getAttribute('mode') - } - - set mode(mode) { - this.setAttribute('mode', mode) - } - - get flavor() { - return 'cms' - } - - get artifact() { - // Allow manually overriding the artifact used. - if (this.hasAttribute('artifact')) { - return this.getAttribute('artifact') - } - - const artifactName = this._isMobile() ? 'trial-installed.zip' : 'trial.zip'; - return `https://git.drupalcode.org/api/v4/projects/157093/jobs/artifacts/0.x/raw/${artifactName}?job=build+trial+artifact` - } - - set artifact(artifact) { - this.setAttribute('artifact', artifact) - } - - get message() { - return this.getAttribute('message') || ''; - } - - set message(message) { - this.setAttribute('message', message) - } - - get installType() { - if (!this.hasAttribute('install-type')) { - return !this._isMobile() ? 'interactive' : 'preinstalled' - } - return this.getAttribute('install-type') - } - - connectedCallback() { - this.render() - } - - disconnectedCallback() { - this.worker.terminate(); - } - - sendWorkerAction(action, params) { - this.worker.postMessage({action, params}) - } - - onMessage({ data }) { - const { action, message, type } = data; - - if (type === 'error') { - this.worker.postMessage({ action: 'stop' }) - } - - if (type === 'set_cookie') { - this.channel.postMessage({ - action: 'set_cookie', - params: data.params - }) - } - - if (action === 'started') { - this.setAttribute('mode', 'new_session'); - this.setAttribute('message', 'Starting') - } - else if (action === 'status') { - this.setAttribute('message', message) - } - else if (action === 'finished') { - this.setAttribute('message', 'Refreshing data') - this.channel.postMessage({ - action: 'refresh' - }) - - this.setAttribute('message', 'Redirecting to your site') - window.location = `/cgi/${this.flavor}` - } - else if (action === 'reload') { - this.channel.postMessage({ - action: 'refresh' - }) - window.location.reload(); - } - else if (action === 'export_finished') { - this.setAttribute('message', message) - const link = document.createElement('a'); - link.href = URL.createObjectURL(data.params.export); - link.download = 'drupal.zip' - link.click(); - URL.revokeObjectURL(link.href); - this.setAttribute('mode', 'existing_session'); - } - else if (action === 'check_existing_finished') { - if (data.params.exists) { - this.setAttribute('mode', 'existing_session'); - } else { - this.worker.postMessage({ - action: 'start', - params: { - flavor: this.flavor, - artifact: this.artifact, - installParameters: { - // @see install-site.phpcode - installType: this.installType, - siteName: 'Try Drupal CMS', - langcode: 'en', - } - } - }) - } - } - else { - console.log(data) - } - } - - attributeChangedCallback(name, oldValue, newValue) { - if (name === 'mode') { - this.render() - this.setAttribute('message', '') - } - else if (name === 'message') { - this.progress.innerText = newValue - } - } - - initializingEl() { - const el = document.createElement('div'); - el.classList.add('flex', 'justify-center') - el.innerHTML = `<svg class="animate-spin h-16 w-16 text-drupal-blue" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"> - <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle> - <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path> - </svg>` - return el; - } - actionsEl() { - const buttonWrapper = document.createElement('div'); - buttonWrapper.classList.add('isolate', 'inline-flex', 'space-x-2'); - - const buttonClasses = [ - 'bg-white', - 'relative', - 'inline-flex', - 'items-center', - 'px-4', - 'py-1', - 'font-semibold', - 'text-drupal-darkBlue', - 'border-2', - 'border-drupal-darkBlue', - 'rounded-md', - 'hover:border-drupal-blue', - 'hover:text-drupal-blue' - ]; - const resumeButton = document.createElement('button'); - resumeButton.classList.add(...buttonClasses) - resumeButton.id = 'resume'; - resumeButton.innerText = 'Resume' - resumeButton.addEventListener('click', () => { - this.sendWorkerAction('start', { - flavor: this.flavor, - artifact: this.artifact - }) - }) - - const newButton = document.createElement('button'); - newButton.classList.add(...buttonClasses) - newButton.id = 'new' - newButton.innerText = 'New' - newButton.addEventListener('click', () => { - if (window.confirm("Your site's data will be completely removed, do you want to continue?")) { - this.removeAttribute('mode'); - this.sendWorkerAction('remove', { - flavor: this.flavor - }) - } - }) - - const exportButton = document.createElement('button') - exportButton.classList.add(...buttonClasses, 'group') - exportButton.id = 'export' - exportButton.innerHTML = ` -<svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5 text-drupal-darkBlue group-hover:text-drupal-blue fill-current" viewBox="0 0 256 256"><path d="M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40a8,8,0,0,0-11.32-11.32L136,124.69V32a8,8,0,0,0-16,0v92.69L93.66,98.34a8,8,0,0,0-11.32,11.32Z"></path></svg> -<span class="pl-1.5">Download</span> -` - exportButton.addEventListener('click', () => { - this.removeAttribute('mode'); - this.sendWorkerAction('export', { - flavor: this.flavor - }) - }) - - buttonWrapper.appendChild(resumeButton) - buttonWrapper.appendChild(newButton) - buttonWrapper.appendChild(exportButton) - - const container = document.createElement('div'); - container.classList.add('text-center') - const message = document.createElement('p'); - message.classList.add('mb-4', 'text-lg') - message.innerText = 'You already have a site, what would you like to do?' - container.appendChild(message) - container.appendChild(buttonWrapper) - - return container - } - - progressEl() { - const progress = document.createElement('div') - progress.classList.add('rounded-md', 'p-4', 'bg-white', 'w-96', 'text-center', 'w-full') - progress.innerText = this.message - return progress - } - - _isMobile() { - return (navigator.maxTouchPoints || 'ontouchstart' in document.documentElement) - } -} - -export function defineTrialManagerElement() { - customElements.get('trial-manager') || customElements.define('trial-manager', TrialManager) -} diff --git a/trial/public/utils.mjs b/trial/public/utils.mjs deleted file mode 100644 index c3061d211cc4e29c6cfae10ba4ccc974810eba2b..0000000000000000000000000000000000000000 --- a/trial/public/utils.mjs +++ /dev/null @@ -1,25 +0,0 @@ -export function getBroadcastChannel() { - return new BroadcastChannel('drupal-cgi-worker'); -} - -export function registerWorker(moduleUrl, bundledUrl) { - function registrationReady() { - getBroadcastChannel().postMessage({ - action: 'service_worker_ready', - }) - } - const serviceWorker = navigator.serviceWorker; - serviceWorker.register(moduleUrl, { - type: "module" - }) - .then(registrationReady) - .catch(() => { - console.log('Browser did not support ES modules in service worker, trying bundled service worker') - serviceWorker.register(bundledUrl) - .then(registrationReady) - .catch(error => { - alert("There was an error loading the service worker. Check known compatibility issues and your browser's developer console.") - console.error(error) - }); - }); -} diff --git a/trial/src/styles.css b/trial/src/styles.css deleted file mode 100644 index f59e9244a0efe02ea8baaa672322e76ca933fec4..0000000000000000000000000000000000000000 --- a/trial/src/styles.css +++ /dev/null @@ -1,143 +0,0 @@ -/* cyrillic-ext */ -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 100 900; - font-display: block; - src: url('fonts/inter-italic-cyrillic-ext.woff2') format('woff2'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} - -/* cyrillic */ -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 100 900; - font-display: block; - src: url('fonts/inter-italic-cyrillic.woff2') format('woff2'); - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} - -/* greek-ext */ -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 100 900; - font-display: block; - src: url('fonts/inter-italic-greek-ext.woff2') format('woff2'); - unicode-range: U+1F00-1FFF; -} - -/* greek */ -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 100 900; - font-display: block; - src: url('fonts/inter-italic-greek.woff2') format('woff2'); - unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; -} - -/* vietnamese */ -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 100 900; - font-display: block; - src: url('fonts/inter-italic-vietnamese.woff2') format('woff2'); - unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; -} - -/* latin-ext */ -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 100 900; - font-display: block; - src: url('fonts/inter-italic-latin-ext.woff2') format('woff2'); - unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; -} - -/* latin */ -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 100 900; - font-display: block; - src: url('fonts/inter-italic-latin.woff2') format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} - -/* cyrillic-ext */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 100 900; - font-display: block; - src: url('fonts/inter-cryllic-ext.woff2') format('woff2'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} - -/* cyrillic */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 100 900; - font-display: block; - src: url('fonts/inter-cyrillic.woff2') format('woff2'); - unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} - -/* greek-ext */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 100 900; - font-display: block; - src: url('fonts/inter-greek-ext.woff2') format('woff2'); - unicode-range: U+1F00-1FFF; -} - -/* greek */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 100 900; - font-display: block; - src: url('fonts/inter-greek.woff2') format('woff2'); - unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; -} - -/* vietnamese */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 100 900; - font-display: block; - src: url('fonts/inter-vietnamese.woff2') format('woff2'); - unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; -} - -/* latin-ext */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 100 900; - font-display: block; - src: url('fonts/inter-latin-ext.woff2') format('woff2'); - unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; -} - -/* latin */ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 100 900; - font-display: block; - src: url('fonts/inter-latin.woff2') format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} - -@tailwind base; -@tailwind components; -@tailwind utilities; diff --git a/trial/tailwind.config.js b/trial/tailwind.config.js deleted file mode 100644 index bb3668ae110ff9bd13bb059714d9c380109fe148..0000000000000000000000000000000000000000 --- a/trial/tailwind.config.js +++ /dev/null @@ -1,35 +0,0 @@ -const defaultTheme = require('tailwindcss/defaultTheme') - -// Colors from https://drupal.widencollective.com/portals/gfvztttq/BrandPortal -/** @type {import('tailwindcss').Config} */ -module.exports = { - content: ["./public/**/*.{html,js,mjs}"], - theme: { - extend: { - fontFamily: { - 'sans': ['Inter', ...defaultTheme.fontFamily.sans], - }, - colors: { - drupal: { - blue: "#009CDE", - darkBlue: "#006AA9", - navy: "#12285F", - lightBlue: "#CCEDF9", - purple: "#CCBAF4", - yellow: "#FFC423", - red: "#F46351", - green: "#397618", - white: "#FFFFFF", - black: "#000000" - } - }, - backgroundImage: { - 'gradient-33-turn': 'linear-gradient(0.33turn, var(--tw-gradient-stops))' - }, - }, - }, - plugins: [ - require('@tailwindcss/typography'), - ], -} - diff --git a/trial/tests/cgi-install.test.js b/trial/tests/cgi-install.test.js deleted file mode 100644 index 690796720ae355f42a658e55a21bfd94b778efd9..0000000000000000000000000000000000000000 --- a/trial/tests/cgi-install.test.js +++ /dev/null @@ -1,97 +0,0 @@ -import {describe, it, expect, afterEach, beforeEach} from 'vitest' -import fs from "node:fs"; -import { - createPhp, - runPhpCode, - assertOutput, - rootPath, - setupFixturePaths, - cleanupFixturePaths, - writeFlavorTxt, - copyArtifactFixture, - createCgiPhp, - doRequest, - writeInstallParams, - copyExistingBuildFixture, assertSitesDefaultDirectoryPermissions -} from './utils' - -async function testInstall(php, stdOut, stdErr,persistFixturePath, configFixturePath, siteName) { - expect(fs.existsSync(`${persistFixturePath}/drupal`)).toBe(true) - - await runPhpCode(php, rootPath + '/public/assets/install-site.phpcode') - const lastMessage = stdOut.pop().trim(); - expect(lastMessage).toEqual('{"message":"Performing install task (14 \\/ 14)","type":"install"}') - assertOutput(stdErr, '') - stdOut.length = 0; - - await runPhpCode(php, rootPath + '/public/assets/login-admin.phpcode') - const loginOutput = JSON.parse(stdOut.join('').trim()); - expect(loginOutput).toHaveProperty('type') - expect(loginOutput.type).toStrictEqual('set_cookie') - expect(loginOutput).toHaveProperty('params') - expect(loginOutput.params).toHaveProperty('name') - expect(loginOutput.params).toHaveProperty('id') - assertOutput(stdErr, '') - stdOut.length = 0; - - assertSitesDefaultDirectoryPermissions(persistFixturePath) - - const [cgiOut, cgiErr, phpCgi] = createCgiPhp({ configFixturePath, persistFixturePath }); - phpCgi.cookies.set(loginOutput.params.name, loginOutput.params.id) - - const [, text] = await doRequest(phpCgi, '/cgi/drupal') - assertOutput(cgiOut, 'GET /cgi/drupal 200') - assertOutput(cgiErr, '') - - // Verify custom site title. - expect(text).toContain(`<title>Home | ${siteName}</title>`) - // Verify CSS/JS aggregation turned off - expect(text).toContain('cgi/drupal/core/themes/olivero/css') - expect(text).toContain('cgi/drupal/core/themes/olivero/js') - // Verify default content on homepage - expect(text).toContain('Starshot: a journey beyond the horizon') - // Verify user is logged in. - expect(text).toContain('/cgi/drupal/user/logout') - - // Test OutgoingHttpInterceptor doesn't crash when fetching PSAs. - const [, configText] = await doRequest(phpCgi, '/cgi/drupal/admin/config'); - expect(configText).not.toContain('Request URI not mocked: https://updates.drupal.org/psa.json') -} - -describe('install-site.phpcode', {timeout: 600000}, () => { - beforeEach(setupFixturePaths) - afterEach(cleanupFixturePaths) - - it('installs the site from the artifact', async ({ configFixturePath, persistFixturePath }) => { - writeFlavorTxt(configFixturePath, 'drupal') - writeInstallParams(configFixturePath, { - langcode: 'en', - installType: 'automated', - siteName: 'Drupal CMS Test', - host: globalThis.location.host, - }) - copyArtifactFixture(persistFixturePath, 'trial.zip') - - const [stdOut, stdErr, php] = await createPhp({ configFixturePath, persistFixturePath }) - - await runPhpCode(php, rootPath + '/public/assets/init.phpcode') - expect(stdOut.pop().trim()).toStrictEqual('{"message":"Unpacking files 100%","type":"unarchive"}') - assertOutput(stdErr, '') - stdOut.length = 0; - - await testInstall(php, stdOut, stdErr, persistFixturePath, configFixturePath, 'Drupal CMS Test') - }) - it.skipIf(!fs.existsSync(`${rootPath}/build`))('install-site from source [debug job]', async ({ configFixturePath, persistFixturePath }) => { - writeFlavorTxt(configFixturePath, 'drupal') - writeInstallParams(configFixturePath, { - langcode: 'en', - installType: 'automated', - siteName: 'test install', - host: globalThis.location.host, - }) - copyExistingBuildFixture(persistFixturePath) - - const [stdOut, stdErr, php] = await createPhp({ configFixturePath, persistFixturePath }) - await testInstall(php, stdOut, stdErr, persistFixturePath, configFixturePath, 'test install') - }) -}) diff --git a/trial/tests/cgi-interactive-install.test.js b/trial/tests/cgi-interactive-install.test.js deleted file mode 100644 index a282dfd678d02952378d54b9ed91e1ea74ad7328..0000000000000000000000000000000000000000 --- a/trial/tests/cgi-interactive-install.test.js +++ /dev/null @@ -1,137 +0,0 @@ -import {describe, it, expect, afterEach, beforeEach} from 'vitest' -import fs from "node:fs"; -import { - createPhp, - runPhpCode, - assertOutput, - rootPath, - setupFixturePaths, - cleanupFixturePaths, - writeFlavorTxt, - copyArtifactFixture, - createCgiPhp, - doRequest, - copyExistingBuildFixture, checkForMetaRefresh, assertLocationHeader, assertSitesDefaultDirectoryPermissions -} from './utils' - -/** - * Tests the interactive installation. - * - * Added as a separate function to support the default artifact test and debug from source test. - * - * @param configFixturePath - * @param persistFixturePath - * @returns {Promise<void>} - */ -async function testInteractiveInstall(configFixturePath, persistFixturePath) { - let location; - const [cgiOut, cgiErr, phpCgi] = createCgiPhp({ configFixturePath, persistFixturePath }); - - // Visit the Drupal site to kick off installation, verify it redirects to `core/install.php`. - const [initResponse, initText] = await doRequest(phpCgi, '/cgi/drupal') - assertOutput(cgiOut, 'GET /cgi/drupal 302') - assertOutput(cgiErr, '') - assertLocationHeader(initResponse, '/cgi/drupal/core/install.php', '') - expect(initText).toContain('Redirecting to /cgi/drupal/core/install.php') - - // Submit and skip the first form, which is recipe selection. - const [, , recipesFormDoc] = await doRequest(phpCgi, '/cgi/drupal/core/install.php') - expect(recipesFormDoc.title).toStrictEqual('What are your top goals? | Drupal CMS') - const [postRecipesRes, postRecipesText,] = await doRequest( - phpCgi, - '/cgi/drupal/core/install.php', - 'POST', - { - form_build_id: recipesFormDoc.querySelector('input[name="form_build_id"]').value, - form_id: recipesFormDoc.querySelector('input[name="form_id"]').value, - op: 'Skip this step' - } - ) - location = assertLocationHeader( - postRecipesRes, - '/cgi/drupal/core/install.php', - '?profile=drupal_cms_installer&langcode=en&recipes%5B0%5D=drupal_cms_starter' - ) - expect(postRecipesText).toContain('Redirecting to http://localhost:3000/cgi/drupal/core/install.php') - - // Submit the form which sets the site's name. - const [, siteNameFormText, siteNameFormDoc] = await doRequest(phpCgi, location.pathname + location.search) - expect(siteNameFormText).toContain('<title>Give your site a name | Drupal CMS</title>') - const [postSiteNameFormRes, postSiteNameText,] = await doRequest( - phpCgi, - location.pathname + location.search, - 'POST', - { - site_name: 'Node test', - form_build_id: siteNameFormDoc.querySelector('input[name="form_build_id"]').value, - form_id: siteNameFormDoc.querySelector('input[name="form_id"]').value, - op: siteNameFormDoc.querySelector('input[name="op"]').value - } - ) - - location = assertLocationHeader( - postSiteNameFormRes, - '/cgi/drupal/core/install.php', - '?profile=drupal_cms_installer&langcode=en&recipes%5B0%5D=drupal_cms_starter&site_name=Node%20test' - ) - expect(postSiteNameText).toContain('Redirecting to http://localhost:3000/cgi/drupal/core/install.php') - - const [initiateBatchRes] = await doRequest(phpCgi, location.pathname + location.search) - location = assertLocationHeader( - initiateBatchRes, - '/cgi/drupal/core/install.php', - '?profile=drupal_cms_installer&langcode=en&recipes%5B0%5D=drupal_cms_starter&site_name=Node%20test&id=1&op=start' - ) - - // Follow the batch process which installs recipes. - const [metaRefreshRes, metaRefreshText, metaRefreshDoc] = await doRequest(phpCgi, location.pathname + location.search) - expect(metaRefreshDoc.title).toStrictEqual('Setting up your site | Drupal CMS') - - const [checkedRes] = await checkForMetaRefresh(phpCgi, metaRefreshRes, metaRefreshText, metaRefreshDoc) - - location = assertLocationHeader( - checkedRes, - '/cgi/drupal/core/install.php', - '?profile=drupal_cms_installer&langcode=en&recipes%5B0%5D=drupal_cms_starter&site_name=Node%20test' - ) - const [finishedRes, , ] = await doRequest(phpCgi, location.pathname + location.search) - assertLocationHeader( - finishedRes, - '/cgi/drupal//admin/dashboard/welcome', - '' - ) - - // @todo visit directly, not sure why double `/`. - const [, text, doc] = await doRequest(phpCgi, '/cgi/drupal/admin/dashboard/welcome') - expect(doc.title).toStrictEqual('Dashboard | Node test') - - // Verify CSS/JS aggregation turned off - expect(text).toContain('cgi/drupal/themes/contrib/gin/dist/css') - expect(text).toContain('cgi/drupal/themes/contrib/gin/dist/js') - - assertSitesDefaultDirectoryPermissions(persistFixturePath) -} - -describe('interactive install', { timeout: 900000 }, () => { - beforeEach(setupFixturePaths) - afterEach(cleanupFixturePaths) - - it('interactively installs the site from the artifact', async ({ configFixturePath, persistFixturePath }) => { - writeFlavorTxt(configFixturePath, 'drupal') - copyArtifactFixture(persistFixturePath, 'trial.zip') - - const [stdOut, stdErr, php] = await createPhp({ configFixturePath, persistFixturePath }) - await runPhpCode(php, rootPath + '/public/assets/init.phpcode') - expect(stdOut.pop().trim()).toStrictEqual('{"message":"Unpacking files 100%","type":"unarchive"}') - assertOutput(stdErr, '') - - await testInteractiveInstall(configFixturePath, persistFixturePath) - }) - - it.skipIf(!fs.existsSync(`${rootPath}/build`))('interactive install from source [debug job]', async ({ configFixturePath, persistFixturePath }) => { - copyExistingBuildFixture(persistFixturePath) - expect(fs.existsSync(`${persistFixturePath}/drupal`)).toBe(true) - - await testInteractiveInstall(configFixturePath, persistFixturePath) - }) -}) diff --git a/trial/tests/fixtures/.gitignore b/trial/tests/fixtures/.gitignore deleted file mode 100644 index 72e8ffc0db8aad71a934dd11e5968bd5109e54b4..0000000000000000000000000000000000000000 --- a/trial/tests/fixtures/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/trial/tests/trial-manager.test.js b/trial/tests/trial-manager.test.js deleted file mode 100644 index 435b9405c9cf73b47befac3dec3fee7fa372f011..0000000000000000000000000000000000000000 --- a/trial/tests/trial-manager.test.js +++ /dev/null @@ -1,184 +0,0 @@ -import { describe, it, expect, vi, afterEach, beforeEach } from 'vitest' -import TrialManager, { defineTrialManagerElement } from "../public/trial-manager.mjs"; - -function createMockWorker() { - const mock = { - postMessage: vi.fn(), - terminate: vi.fn() - } - vi.stubGlobal('Worker', vi.fn(() => mock)) - return mock -} - -function createTrialManager(artifact = 'drupal.zip') { - const sut = new TrialManager(); - sut.artifact = artifact - return sut; -} - -describe('TrialManager', () => { - beforeEach(() => { - defineTrialManagerElement() - }) - afterEach(() => { - vi.unstubAllGlobals() - vi.restoreAllMocks() - document.body.replaceChildren() - }) - - it('custom element is defined', () => { - createMockWorker() - document.body.appendChild(createTrialManager()); - expect(document.querySelector('trial-manager')).toBeTruthy(); - }); - - it('changes state based on the mode', () => { - createMockWorker() - const sut = createTrialManager() - document.body.appendChild(sut); - expect(sut.getInnerHTML()).toContain('<svg') - sut.mode = 'new_session' - expect(sut.getInnerHTML()).not.toContain('<svg') - sut.message = 'foobar'; - expect(sut.getInnerHTML()).toContain('foobar') - sut.mode = 'existing_session'; - expect(sut.message).toBe('') - expect(sut.getInnerHTML()).not.toContain('foobar') - expect(sut.getInnerHTML()).toContain('Resume') - expect(sut.getInnerHTML()).toContain('New') - expect(sut.getInnerHTML()).toContain('Download') - }) - - it.each([ - ['resume', 'start', { flavor: 'cms', artifact: 'baz.zip' }, 'started', 'new_session'], - ['export', 'export', { flavor: 'cms' }, 'started', 'new_session'], - ['new', 'remove', { flavor: 'cms' }, 'reload', null] - ])('button %s interacts with worker', (buttonId, buttonAction, expectedParams, workerAction, endMode) => { - vi.stubGlobal('confirm', vi.fn().mockImplementation(() => true)) - const worker = createMockWorker() - worker.postMessage.mockImplementation(({ action, params }) => { - expect(['check_existing', buttonAction]).toContain(action) - if (action === 'check_existing') { - worker.onmessage({ - data: { - action: `check_existing_finished`, - params: { - exists: true, - } - } - }) - } else { - expect(action).toBe(buttonAction) - expect(params).toStrictEqual(expectedParams) - worker.onmessage({ - data: { - action: workerAction, - } - }) - } - }) - - const sut = createTrialManager('baz.zip') - sut.mode = 'existing_session'; - document.body.appendChild(sut); - - const channel = new BroadcastChannel('drupal-cgi-worker'); - channel.postMessage({action: 'service_worker_ready'}) - vi.waitFor(() => { - expect(worker.postMessage).toHaveBeenCalledTimes(1) - }) - - document.getElementById(buttonId).click() - vi.waitFor(() => { - expect(worker.postMessage).toHaveBeenCalledTimes(2) - }) - expect(sut.mode).toStrictEqual(endMode) - }) - - it('checks for existing docroot when service_worker_ready', () => { - const worker = createMockWorker() - worker.postMessage.mockImplementation(({ action, params }) => { - expect(action).toBe('check_existing') - expect(params).toStrictEqual({ flavor: 'cms' }) - }) - - document.body.appendChild(createTrialManager()); - - const channel = new BroadcastChannel('drupal-cgi-worker'); - channel.postMessage({action: 'service_worker_ready'}) - - vi.waitFor(() => { - expect(worker.postMessage).toHaveBeenCalledTimes(1) - }) - }) - - it('starts new session if one does not exist', () => { - const worker = createMockWorker() - worker.postMessage.mockImplementation(({ action, params }) => { - expect(['check_existing', 'start']).toContain(action) - if (action === 'check_existing') { - worker.onmessage({ - data: { - action: `check_existing_finished`, - params: { - exists: false, - } - } - }) - } - else { - expect(params).toStrictEqual({ - artifact: 'drupal.zip', - flavor: 'foo', - installParameters: { - langcode: 'en', - profile: 'standard', - recipes: [], - siteName: 'Try Drupal', - skip: false, - } - }) - worker.onmessage({ - data: { - action: `finished`, - } - }) - } - }) - - document.body.appendChild(createTrialManager()); - - const channel = new BroadcastChannel('drupal-cgi-worker'); - channel.postMessage({action: 'service_worker_ready'}) - - vi.waitFor(() => { - expect(worker.postMessage).toHaveBeenCalledTimes(2) - expect(window.location).toStrictEqual('/cgi/foo') - }) - }) - - it('terminates worker on removal', () => { - const worker = createMockWorker() - const sut = document.body.appendChild(createTrialManager()); - document.body.removeChild(sut) - expect(worker.terminate).toHaveBeenCalledTimes(1) - }) - - it('stops worker on error', () => { - const worker = createMockWorker() - worker.postMessage.mockImplementation(({ action }) => { - expect(action).toBe('stop') - }) - const sut = createTrialManager(); - - worker.onmessage({ - data: { - action: 'status', - type: 'error', - message: 'barbaz', - } - }) - expect(worker.postMessage).toHaveBeenCalledTimes(1) - expect(sut.message).toStrictEqual('barbaz') - }) -}) diff --git a/trial/tests/utils.js b/trial/tests/utils.js deleted file mode 100644 index d08fa5e1ae630e7cbc125e9fdfae272a5f0becef..0000000000000000000000000000000000000000 --- a/trial/tests/utils.js +++ /dev/null @@ -1,312 +0,0 @@ -import {dirname} from "node:path"; -import {PhpNode} from "php-wasm/PhpNode.mjs"; -import {PhpBase} from "php-wasm/PhpBase.mjs"; -import PhpBinary from "php-wasm/php-node.mjs"; -import {PhpCgiNode} from "php-cgi-wasm/PhpCgiNode.mjs"; -import fs from "node:fs"; -import {expect} from "vitest"; -import crypto from "node:crypto"; -import {Window} from "happy-dom"; -import querystring from "node:querystring"; - -export const rootPath = dirname(import.meta.dirname); -export const rootFixturePath = rootPath + '/tests/fixtures' - -const sharedLibs = [ - { - name: `php${PhpNode.phpVersion}-zip.so`, - url: `${rootPath}/node_modules/php-wasm-libzip/php${PhpNode.phpVersion}-zip.so`, - ini: true - }, - { - name: `libzip.so`, - url: `${rootPath}/node_modules/php-wasm-libzip/libzip.so`, - ini: false - }, - { - name: `php${PhpNode.phpVersion}-zlib.so`, - url: `${rootPath}/node_modules/php-wasm-zlib/php${PhpNode.phpVersion}-zlib.so`, - ini: true - }, - { - name: `libz.so`, - url: `${rootPath}/node_modules/php-wasm-zlib/libz.so`, - ini: false - }, - { - name: `php${PhpNode.phpVersion}-dom.so`, - url: `${rootPath}/node_modules/php-wasm-dom/php${PhpNode.phpVersion}-dom.so`, - ini: true - }, - { - name: `php${PhpNode.phpVersion}-simplexml.so`, - url: `${rootPath}/node_modules/php-wasm-simplexml/php${PhpNode.phpVersion}-simplexml.so`, - ini: true - }, - { - name: `php${PhpNode.phpVersion}-xml.so`, - url: `${rootPath}/node_modules/php-wasm-xml/php${PhpNode.phpVersion}-xml.so`, - ini: true - }, - { - name: `php${PhpNode.phpVersion}-gd.so`, - url: `${rootPath}/node_modules/php-wasm-gd/php${PhpNode.phpVersion}-gd.so`, - ini: true - }, - { - name: `libfreetype.so`, - url: `${rootPath}/node_modules/php-wasm-gd/libfreetype.so`, - ini: false - }, - { - name: `libjpeg.so`, - url: `${rootPath}/node_modules/php-wasm-gd/libjpeg.so`, - ini: false - }, - { - name: `libpng.so`, - url: `${rootPath}/node_modules/php-wasm-gd/libpng.so`, - ini: false - }, - { - name: `libwebp.so`, - url: `${rootPath}/node_modules/php-wasm-gd/libwebp.so`, - ini: false - }, - { - name: `php${PhpNode.phpVersion}-pdo-sqlite.so`, - url: `${rootPath}/node_modules/php-wasm-sqlite/php${PhpNode.phpVersion}-pdo-sqlite.so`, - ini: true - }, - { - name: `php${PhpNode.phpVersion}-sqlite.so`, - url: `${rootPath}/node_modules/php-wasm-sqlite/php${PhpNode.phpVersion}-sqlite.so`, - ini: true - }, - { - name: `libsqlite3.so`, - url: `${rootPath}/node_modules/php-wasm-sqlite/libsqlite3.so`, - ini: false - }, - { - name: `php${PhpNode.phpVersion}-iconv.so`, - url: `${rootPath}/node_modules/php-wasm-iconv/php${PhpNode.phpVersion}-iconv.so`, - ini: true - }, - { - name: `libiconv.so`, - url: `${rootPath}/node_modules/php-wasm-iconv/libiconv.so`, - ini: false - }, - { - name: `php${PhpNode.phpVersion}-mbstring.so`, - url: `${rootPath}/node_modules/php-wasm-mbstring/php${PhpNode.phpVersion}-mbstring.so`, - ini: true - }, - { - name: `libonig.so`, - url: `${rootPath}/node_modules/php-wasm-mbstring/libonig.so`, - ini: false - }, -] - -// works around PhpNode and PhpCgiNode locate file issues. -const locateFile = () => undefined; - -export async function createPhp({ configFixturePath, persistFixturePath }) { - const php = new PhpBase(PhpBinary, { - persist: [ - {mountPath: '/persist', localPath: persistFixturePath}, - {mountPath: '/config', localPath: configFixturePath}, - ], - locateFile, - sharedLibs, - }); - const stdOut = [], stdErr = []; - php.addEventListener('output', (event) => event.detail.forEach(line => void (stdOut.push(line)))); - php.addEventListener('error', (event) => event.detail.forEach(line => void (stdErr.push(line)))); - await php.binary - await php.run(`<?php putenv('DRUPAL_CMS_TRIAL=1');`) - return [stdOut, stdErr, php] -} - -export function createCgiPhp({ configFixturePath, persistFixturePath }) { - const stdOut = [], stdErr = []; - - const php = new PhpCgiNode({ - persist: [ - {mountPath: '/persist', localPath: persistFixturePath}, - {mountPath: '/config', localPath: configFixturePath}, - ], - locateFile, - sharedLibs, - env: { - HTTP_USER_AGENT: 'node', - DRUPAL_CMS_TRIAL: '1' - }, - docroot: '/persist/drupal/web', - vHosts: [ - { - pathPrefix: '/cgi/drupal', - directory: '/persist/drupal/web', - entrypoint: 'index.php', - } - ], - /** - * - * @param {Request} request - * @param {Response} response - */ - onRequest(request, response) { - const url = new URL(request.url); - stdOut.push(`${request.method} ${url.pathname}${url.search} ${response.status}`) - }, - notFound(request) { - const url = new URL(request.url); - stdErr.push(`${request.method} ${url.pathname} 404`) - return new Response(`<body><h1>404</h1>${request.url} not found</body>`, { - status: 404, - headers: {"Content-Type": "text/html"}, - }); - } - }) - php.cookies.set('big_pipe_nojs', '1') - return [stdOut, stdErr, php] -} - -export async function runPhpCode(php, path) { - const initPhpCode = fs.readFileSync(path).toString() - await php.binary; - await php.run(initPhpCode); -} - -export function assertOutput(std, expected) { - expect(std.join('').trim()).toStrictEqual(expected) -} - -export function setupFixturePaths(context) { - const testRoot = rootFixturePath + '/' + crypto.randomBytes(5).toString('hex'); - context.configFixturePath = testRoot + '/config' - context.persistFixturePath = testRoot + '/persist' - context.testRoot = testRoot - fs.mkdirSync(context.configFixturePath, { recursive: true }) - fs.mkdirSync(context.persistFixturePath, { recursive: true }) -} - -export function cleanupFixturePaths({ configFixturePath, persistFixturePath, testRoot }) { - if (fs.existsSync(`${configFixturePath}/flavor.txt`)) { - const flavorValue = fs.readFileSync(`${configFixturePath}/flavor.txt`).toString() - if (fs.existsSync(`${persistFixturePath}/${flavorValue}`)) { - fs.chmodSync(`${persistFixturePath}/${flavorValue}/web/sites/default`, 0o777) - fs.rmSync(`${persistFixturePath}/${flavorValue}`, { recursive: true, force: true }) - } - fs.unlinkSync(`${configFixturePath}/flavor.txt`) - } - if (fs.existsSync(`${persistFixturePath}/artifact.zip`)) { - fs.unlinkSync(`${persistFixturePath}/artifact.zip`) - } - fs.rmSync(testRoot, { recursive: true, force: true }) -} - -export function writeFlavorTxt(configFixturePath) { - fs.writeFileSync(`${configFixturePath}/flavor.txt`, 'drupal') -} - -export function writeInstallParams(configFixturePath, params) { - fs.writeFileSync(`${configFixturePath}/drupal-install-params.json`, JSON.stringify({ - langcode: 'en', - skip: false, - siteName: 'test', - profile: 'standard', - recipes: [], - ...params - })) -} - -export function copyArtifactFixture(persistFixturePath, name) { - fs.copyFileSync( - `${rootFixturePath}/${name}`, - `${persistFixturePath}/artifact.zip` - ) -} -export function copyExistingBuildFixture(persistFixturePath) { - fs.cpSync(`${rootPath}/build`, `${persistFixturePath}/drupal`, { - recursive: true - }) -} - -export async function doRequest(phpCgi, url, method = 'GET', body = null) { - const request = { - connection: { - encrypted: false, - }, - method, - url, - headers: { - host: globalThis.location.host - }, - }; - if (body) { - const buffer = new TextEncoder().encode(querystring.stringify(body)); - request.body = new ReadableStream({ - start(controller) { - controller.enqueue(buffer); - controller.close(); - } - }) - } - const response = await phpCgi.request(request) - const text = await response.text() - const document = (new Window()).document - document.write(text) - return [response, text, document] -} - -export async function checkForMetaRefresh(phpCgi, response, text, document) { - if (response.status === 200) { - const meta = document.querySelector('meta[http-equiv="Refresh"]'); - if (meta) { - const match = meta.content.match(/\d+;\s*URL=\'?(?<url>[^\']*)/i) - if (match) { - const url = match.groups.url - const [newRes, newText, newDocument] = await doRequest(phpCgi, url) - return await checkForMetaRefresh(phpCgi, newRes, newText, newDocument) - } - } - } - return [response, text, document] -} - -/** - * Verifies that the `sites/default` directory is writeable. - * - * @param {string} persistFixturePath - */ -export function assertSitesDefaultDirectoryPermissions(persistFixturePath) { - const stat = fs.statSync(`${persistFixturePath}/drupal/web/sites/default`) - expect(stat.mode & 0o777).toStrictEqual(0o755) - - const statSettings = fs.statSync(`${persistFixturePath}/drupal/web/sites/default/settings.php`) - expect(statSettings.mode & 0o777).toStrictEqual(0o644) -} - -/** - * Asserts the location header of a response. - * - * @param {Response} response - * @param {string} pathname - * @param {string} search - */ -export function assertLocationHeader(response, pathname, search) { - expect(response.headers.has('location')).toBeTruthy() - let location; - try { - location = new URL(response.headers.get('location'), globalThis.location.toString()) - } catch (e) { - console.error(e) - expect(response.headers.get('location')).toStrictEqual(pathname + search) - } - expect(location.pathname).toStrictEqual(pathname) - expect(location.search).toStrictEqual(search) - return location -} diff --git a/trial/vitest.config.mts b/trial/vitest.config.mts deleted file mode 100644 index 7403489e7dac1c6a5afcaf879f062ce44b4cb8a2..0000000000000000000000000000000000000000 --- a/trial/vitest.config.mts +++ /dev/null @@ -1,17 +0,0 @@ -import { defineConfig } from 'vitest/config' - -export default defineConfig({ - test: { - environment: 'happy-dom', - coverage: { - provider: 'v8', - reporter: ['text'], - include: [ - 'public/drupal-cgi-worker.mjs', - 'public/install-worker.mjs', - 'public/service-worker.mjs', - 'public/trial-manager.mjs' - ], - } - }, -}) diff --git a/trial/workers.webpack.js b/trial/workers.webpack.js deleted file mode 100644 index 15d7ade302b0946114b8bdc8159691d7f278d4c9..0000000000000000000000000000000000000000 --- a/trial/workers.webpack.js +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Firefox does not support ES modules in service workers, so we have to use - * Webpack to bundle the service worker. - * - * NOTE: See if we can have Webpack replace the `postinstall` hook. - */ -const path = require("path"); - -module.exports = { - mode: "production", - module: { - rules: [ - { - test: /\.mjs$/, - exclude: /node_modules/, - use: { loader: "babel-loader" } - } - ] - }, - entry: { - "service-worker": "./public/service-worker.mjs", - }, - output: { - path: path.resolve(__dirname, "public"), - filename: "[name].js" - }, - target: "webworker" -};