diff --git a/.circleci/.env_8.0-shared.ci b/.circleci/.env_8.0-shared.ci index f31cdae6b..804586d37 100644 --- a/.circleci/.env_8.0-shared.ci +++ b/.circleci/.env_8.0-shared.ci @@ -1,9 +1,10 @@ #!/usr/bin/env make PHP_VERSION=8.0 +WITH_SOURCEMAPS=0 +ASSERTIONS=0 OPTIMIZE=2 -BROTLI=0 -GZIP=0 +SYMBOLS=0 WITH_BCMATH=1 WITH_CALENDAR=1 @@ -14,10 +15,13 @@ WITH_TOKENIZER=1 WITH_PHAR=static -WITH_LIBXML=static -WITH_DOM=static -WITH_XML=static -WITH_SIMPLEXML=static +WITH_LIBXML=shared +WITH_DOM=dynamic +WITH_XML=dynamic +WITH_SIMPLEXML=dynamic +WITH_XMLREADER=dynamic +WITH_XMLWRITER=dynamic +WITH_TIDY=shared WITH_LIBZIP=shared WITH_ICONV=shared @@ -28,13 +32,14 @@ WITH_ZLIB=shared WITH_LIBPNG=shared WITH_FREETYPE=shared WITH_LIBJPEG=shared +WITH_LIBWEBP=shared WITH_YAML=shared -WITH_TIDY=shared WITH_MBSTRING=static WITH_ONIGURUMA=shared WITH_OPENSSL=shared WITH_INTL=shared +WITH_WAITLINE=1 WITH_PDO_PGLITE=0 -WITH_VRZNO=0 +WITH_VRZNO=1 diff --git a/.circleci/.env_8.1-shared.ci b/.circleci/.env_8.1-shared.ci index e4a0629f9..5b0a19522 100644 --- a/.circleci/.env_8.1-shared.ci +++ b/.circleci/.env_8.1-shared.ci @@ -1,9 +1,10 @@ #!/usr/bin/env make PHP_VERSION=8.1 +WITH_SOURCEMAPS=0 +ASSERTIONS=0 OPTIMIZE=2 -BROTLI=0 -GZIP=0 +SYMBOLS=0 WITH_BCMATH=1 WITH_CALENDAR=1 @@ -14,10 +15,13 @@ WITH_TOKENIZER=1 WITH_PHAR=static -WITH_LIBXML=static -WITH_DOM=static -WITH_XML=static -WITH_SIMPLEXML=static +WITH_LIBXML=shared +WITH_DOM=dynamic +WITH_XML=dynamic +WITH_SIMPLEXML=dynamic +WITH_XMLREADER=dynamic +WITH_XMLWRITER=dynamic +WITH_TIDY=shared WITH_LIBZIP=shared WITH_ICONV=shared @@ -28,10 +32,12 @@ WITH_ZLIB=shared WITH_LIBPNG=shared WITH_FREETYPE=shared WITH_LIBJPEG=shared +WITH_LIBWEBP=shared WITH_YAML=shared -WITH_TIDY=shared WITH_MBSTRING=static WITH_ONIGURUMA=shared WITH_OPENSSL=shared WITH_INTL=shared + +WITH_WAITLINE=1 diff --git a/.circleci/.env_8.2-shared.ci b/.circleci/.env_8.2-shared.ci index 039f1f6a8..cc0ce1806 100644 --- a/.circleci/.env_8.2-shared.ci +++ b/.circleci/.env_8.2-shared.ci @@ -1,9 +1,10 @@ #!/usr/bin/env make PHP_VERSION=8.2 +WITH_SOURCEMAPS=0 +ASSERTIONS=0 OPTIMIZE=2 -BROTLI=0 -GZIP=0 +SYMBOLS=0 WITH_BCMATH=1 WITH_CALENDAR=1 @@ -14,10 +15,13 @@ WITH_TOKENIZER=1 WITH_PHAR=static -WITH_LIBXML=static -WITH_DOM=static -WITH_XML=static -WITH_SIMPLEXML=static +WITH_LIBXML=shared +WITH_DOM=dynamic +WITH_XML=dynamic +WITH_SIMPLEXML=dynamic +WITH_XMLREADER=dynamic +WITH_XMLWRITER=dynamic +WITH_TIDY=shared WITH_LIBZIP=shared WITH_ICONV=shared @@ -28,10 +32,12 @@ WITH_ZLIB=shared WITH_LIBPNG=shared WITH_FREETYPE=shared WITH_LIBJPEG=shared +WITH_LIBWEBP=shared WITH_YAML=shared -WITH_TIDY=shared WITH_MBSTRING=static WITH_ONIGURUMA=shared WITH_OPENSSL=shared WITH_INTL=shared + +WITH_WAITLINE=1 diff --git a/.circleci/.env_8.3-shared.ci b/.circleci/.env_8.3-shared.ci index e8a79a8cf..1d11f27da 100644 --- a/.circleci/.env_8.3-shared.ci +++ b/.circleci/.env_8.3-shared.ci @@ -1,9 +1,10 @@ #!/usr/bin/env make PHP_VERSION=8.3 +WITH_SOURCEMAPS=0 +ASSERTIONS=0 OPTIMIZE=2 -BROTLI=0 -GZIP=0 +SYMBOLS=0 WITH_BCMATH=1 WITH_CALENDAR=1 @@ -14,10 +15,13 @@ WITH_TOKENIZER=1 WITH_PHAR=static -WITH_LIBXML=static -WITH_DOM=static -WITH_XML=static -WITH_SIMPLEXML=static +WITH_LIBXML=shared +WITH_DOM=dynamic +WITH_XML=dynamic +WITH_SIMPLEXML=dynamic +WITH_XMLREADER=dynamic +WITH_XMLWRITER=dynamic +WITH_TIDY=shared WITH_LIBZIP=shared WITH_ICONV=shared @@ -28,10 +32,12 @@ WITH_ZLIB=shared WITH_LIBPNG=shared WITH_FREETYPE=shared WITH_LIBJPEG=shared +WITH_LIBWEBP=shared WITH_YAML=shared -WITH_TIDY=shared WITH_MBSTRING=static WITH_ONIGURUMA=shared WITH_OPENSSL=shared WITH_INTL=shared + +WITH_WAITLINE=1 diff --git a/.circleci/.env_8.4-shared.ci b/.circleci/.env_8.4-shared.ci index 8654e379f..db238f9b9 100644 --- a/.circleci/.env_8.4-shared.ci +++ b/.circleci/.env_8.4-shared.ci @@ -1,9 +1,10 @@ #!/usr/bin/env make PHP_VERSION=8.4 +WITH_SOURCEMAPS=0 +ASSERTIONS=0 OPTIMIZE=2 -BROTLI=0 -GZIP=0 +SYMBOLS=0 WITH_BCMATH=1 WITH_CALENDAR=1 @@ -14,10 +15,13 @@ WITH_TOKENIZER=1 WITH_PHAR=static -WITH_LIBXML=static -WITH_DOM=static -WITH_XML=static -WITH_SIMPLEXML=static +WITH_LIBXML=shared +WITH_DOM=dynamic +WITH_XML=dynamic +WITH_SIMPLEXML=dynamic +WITH_XMLREADER=dynamic +WITH_XMLWRITER=dynamic +WITH_TIDY=shared WITH_LIBZIP=shared WITH_ICONV=shared @@ -28,10 +32,12 @@ WITH_ZLIB=shared WITH_LIBPNG=shared WITH_FREETYPE=shared WITH_LIBJPEG=shared +WITH_LIBWEBP=shared WITH_YAML=shared -WITH_TIDY=shared WITH_MBSTRING=static WITH_ONIGURUMA=shared WITH_OPENSSL=shared WITH_INTL=shared + +WITH_WAITLINE=1 diff --git a/.circleci/.env_8.5-dynamic.ci b/.circleci/.env_8.5-dynamic.ci new file mode 100644 index 000000000..f7ad41dd6 --- /dev/null +++ b/.circleci/.env_8.5-dynamic.ci @@ -0,0 +1,37 @@ +#!/usr/bin/env make +PHP_VERSION=8.5 + +OPTIMIZE=2 +BROTLI=0 +GZIP=0 + +WITH_BCMATH=1 +WITH_CALENDAR=1 +WITH_CTYPE=1 +WITH_EXIF=1 +WITH_FILTER=1 +WITH_TOKENIZER=1 + +WITH_PHAR=dynamic + +WITH_LIBXML=dynamic +WITH_DOM=dynamic +WITH_XML=dynamic +WITH_SIMPLEXML=dynamic + +WITH_LIBZIP=dynamic +WITH_ICONV=dynamic +WITH_SQLITE=dynamic + +WITH_GD=dynamic +WITH_ZLIB=dynamic +WITH_LIBPNG=shared +WITH_FREETYPE=shared +WITH_LIBJPEG=shared + +WITH_YAML=dynamic +WITH_TIDY=dynamic +WITH_MBSTRING=dynamic +WITH_ONIGURUMA=dynamic +WITH_OPENSSL=dynamic +WITH_INTL=dynamic diff --git a/.circleci/.env_8.5-shared.ci b/.circleci/.env_8.5-shared.ci new file mode 100644 index 000000000..79a8c8e8e --- /dev/null +++ b/.circleci/.env_8.5-shared.ci @@ -0,0 +1,43 @@ +#!/usr/bin/env make +PHP_VERSION=8.5 + +WITH_SOURCEMAPS=0 +ASSERTIONS=0 +OPTIMIZE=2 +SYMBOLS=0 + +WITH_BCMATH=1 +WITH_CALENDAR=1 +WITH_CTYPE=1 +WITH_EXIF=1 +WITH_FILTER=1 +WITH_TOKENIZER=1 + +WITH_PHAR=static + +WITH_LIBXML=shared +WITH_DOM=dynamic +WITH_XML=dynamic +WITH_SIMPLEXML=dynamic +WITH_XMLREADER=dynamic +WITH_XMLWRITER=dynamic +WITH_TIDY=shared + +WITH_LIBZIP=shared +WITH_ICONV=shared +WITH_SQLITE=shared + +WITH_GD=static +WITH_ZLIB=shared +WITH_LIBPNG=shared +WITH_FREETYPE=shared +WITH_LIBJPEG=shared +WITH_LIBWEBP=shared + +WITH_YAML=shared +WITH_MBSTRING=static +WITH_ONIGURUMA=shared +WITH_OPENSSL=shared +WITH_INTL=shared + +WITH_WAITLINE=1 diff --git a/.circleci/.env_8.5.ci b/.circleci/.env_8.5.ci new file mode 100644 index 000000000..afe70f94c --- /dev/null +++ b/.circleci/.env_8.5.ci @@ -0,0 +1,38 @@ +#!/usr/bin/env make +PHP_VERSION=8.5 + +OPTIMIZE=2 +BROTLI=0 +GZIP=0 + +WITH_BCMATH=1 +WITH_CALENDAR=1 +WITH_CTYPE=1 +WITH_EXIF=1 +WITH_FILTER=1 +WITH_MBSTRING=1 +WITH_PHAR=1 +WITH_TOKENIZER=1 + +WITH_LIBXML=1 +WITH_DOM=1 +WITH_XML=1 +WITH_SIMPLEXML=1 + +WITH_LIBZIP=1 +WITH_ICONV=1 +WITH_SQLITE=1 +WITH_VRZNO=1 + +WITH_EXIF=1 +WITH_GD=1 +WITH_ZLIB=1 +WITH_LIBPNG=1 +WITH_FREETYPE=1 +WITH_LIBJPEG=1 + +WITH_YAML=1 +WITH_TIDY=1 +WITH_ONIGURUMA=1 +WITH_OPENSSL=1 +WITH_INTL=1 diff --git a/.editorconfig b/.editorconfig index f3f9e9904..5d7e727c9 100644 --- a/.editorconfig +++ b/.editorconfig @@ -29,3 +29,6 @@ indent_style = space [*.json] indent_size = 2 indent_style = space + +[test/browser/browser.spec.mjs-snapshots/*.json] +insert_final_newline = false diff --git a/.github/.env_8.0.dynamic.ci b/.github/.env_8.0.dynamic.ci index e1b4eb243..341738cdc 100644 --- a/.github/.env_8.0.dynamic.ci +++ b/.github/.env_8.0.dynamic.ci @@ -8,4 +8,6 @@ SYMBOLS=0 WITH_WAITLINE=1 WITH_PDO_PGLITE=0 -WITH_VRZNO=0 +WITH_VRZNO=1 +WITH_XMLREADER=dynamic +WITH_XMLWRITER=dynamic diff --git a/.github/.env_8.0.shared.ci b/.github/.env_8.0.shared.ci index 9a35079d7..cc59cd409 100644 --- a/.github/.env_8.0.shared.ci +++ b/.github/.env_8.0.shared.ci @@ -19,6 +19,8 @@ WITH_LIBXML=shared WITH_DOM=dynamic WITH_XML=dynamic WITH_SIMPLEXML=dynamic +WITH_XMLREADER=dynamic +WITH_XMLWRITER=dynamic WITH_TIDY=shared WITH_LIBZIP=shared @@ -40,4 +42,4 @@ WITH_INTL=shared WITH_WAITLINE=1 WITH_PDO_PGLITE=0 -WITH_VRZNO=0 +WITH_VRZNO=1 diff --git a/.github/.env_8.0.static.ci b/.github/.env_8.0.static.ci index 6b928d24d..2303d0ad0 100644 --- a/.github/.env_8.0.static.ci +++ b/.github/.env_8.0.static.ci @@ -19,6 +19,8 @@ WITH_LIBXML=static WITH_DOM=static WITH_XML=static WITH_SIMPLEXML=static +WITH_XMLREADER=static +WITH_XMLWRITER=static WITH_TIDY=static WITH_LIBZIP=static @@ -35,9 +37,9 @@ WITH_LIBWEBP=static WITH_YAML=static WITH_MBSTRING=static WITH_ONIGURUMA=static -WITH_OPENSSL=1 +WITH_OPENSSL=static WITH_INTL=static WITH_WAITLINE=1 WITH_PDO_PGLITE=0 -WITH_VRZNO=0 +WITH_VRZNO=1 diff --git a/.github/.env_8.1.dynamic.ci b/.github/.env_8.1.dynamic.ci index 1e5b8c7d7..189d1a105 100644 --- a/.github/.env_8.1.dynamic.ci +++ b/.github/.env_8.1.dynamic.ci @@ -7,3 +7,5 @@ OPTIMIZE=3 SYMBOLS=0 WITH_WAITLINE=1 +WITH_XMLREADER=dynamic +WITH_XMLWRITER=dynamic diff --git a/.github/.env_8.1.shared.ci b/.github/.env_8.1.shared.ci index b31ad648e..b88819ca6 100644 --- a/.github/.env_8.1.shared.ci +++ b/.github/.env_8.1.shared.ci @@ -19,6 +19,8 @@ WITH_LIBXML=shared WITH_DOM=dynamic WITH_XML=dynamic WITH_SIMPLEXML=dynamic +WITH_XMLREADER=dynamic +WITH_XMLWRITER=dynamic WITH_TIDY=shared WITH_LIBZIP=shared diff --git a/.github/.env_8.1.static.ci b/.github/.env_8.1.static.ci index 0d2b4294e..1019e6cd2 100644 --- a/.github/.env_8.1.static.ci +++ b/.github/.env_8.1.static.ci @@ -19,6 +19,8 @@ WITH_LIBXML=static WITH_DOM=static WITH_XML=static WITH_SIMPLEXML=static +WITH_XMLREADER=static +WITH_XMLWRITER=static WITH_TIDY=static WITH_LIBZIP=static @@ -35,7 +37,7 @@ WITH_LIBWEBP=static WITH_YAML=static WITH_MBSTRING=static WITH_ONIGURUMA=static -WITH_OPENSSL=1 +WITH_OPENSSL=static WITH_INTL=static WITH_WAITLINE=1 diff --git a/.github/.env_8.2.dynamic.ci b/.github/.env_8.2.dynamic.ci index 4be9e9bc1..94456f8d8 100644 --- a/.github/.env_8.2.dynamic.ci +++ b/.github/.env_8.2.dynamic.ci @@ -7,3 +7,5 @@ OPTIMIZE=3 SYMBOLS=0 WITH_WAITLINE=1 +WITH_XMLREADER=dynamic +WITH_XMLWRITER=dynamic diff --git a/.github/.env_8.2.shared.ci b/.github/.env_8.2.shared.ci index 919e8ec5e..e2aa53d5e 100644 --- a/.github/.env_8.2.shared.ci +++ b/.github/.env_8.2.shared.ci @@ -19,6 +19,8 @@ WITH_LIBXML=shared WITH_DOM=dynamic WITH_XML=dynamic WITH_SIMPLEXML=dynamic +WITH_XMLREADER=dynamic +WITH_XMLWRITER=dynamic WITH_TIDY=shared WITH_LIBZIP=shared diff --git a/.github/.env_8.2.static.ci b/.github/.env_8.2.static.ci index 7c1e18c62..53c027667 100644 --- a/.github/.env_8.2.static.ci +++ b/.github/.env_8.2.static.ci @@ -19,6 +19,8 @@ WITH_LIBXML=static WITH_DOM=static WITH_XML=static WITH_SIMPLEXML=static +WITH_XMLREADER=static +WITH_XMLWRITER=static WITH_TIDY=static WITH_LIBZIP=static @@ -35,7 +37,7 @@ WITH_LIBWEBP=static WITH_YAML=static WITH_MBSTRING=static WITH_ONIGURUMA=static -WITH_OPENSSL=1 +WITH_OPENSSL=static WITH_INTL=static WITH_WAITLINE=1 diff --git a/.github/.env_8.3.dynamic.ci b/.github/.env_8.3.dynamic.ci index 8cab25521..dcb6a6b4b 100644 --- a/.github/.env_8.3.dynamic.ci +++ b/.github/.env_8.3.dynamic.ci @@ -7,3 +7,5 @@ OPTIMIZE=3 SYMBOLS=0 WITH_WAITLINE=1 +WITH_XMLREADER=dynamic +WITH_XMLWRITER=dynamic diff --git a/.github/.env_8.3.shared.ci b/.github/.env_8.3.shared.ci index d0d126f09..cba12935d 100644 --- a/.github/.env_8.3.shared.ci +++ b/.github/.env_8.3.shared.ci @@ -19,6 +19,8 @@ WITH_LIBXML=shared WITH_DOM=dynamic WITH_XML=dynamic WITH_SIMPLEXML=dynamic +WITH_XMLREADER=dynamic +WITH_XMLWRITER=dynamic WITH_TIDY=shared WITH_LIBZIP=shared diff --git a/.github/.env_8.3.static.ci b/.github/.env_8.3.static.ci index 726cab062..78144b7be 100644 --- a/.github/.env_8.3.static.ci +++ b/.github/.env_8.3.static.ci @@ -19,6 +19,8 @@ WITH_LIBXML=static WITH_DOM=static WITH_XML=static WITH_SIMPLEXML=static +WITH_XMLREADER=static +WITH_XMLWRITER=static WITH_TIDY=static WITH_LIBZIP=static @@ -35,7 +37,7 @@ WITH_LIBWEBP=static WITH_YAML=static WITH_MBSTRING=static WITH_ONIGURUMA=static -WITH_OPENSSL=1 +WITH_OPENSSL=static WITH_INTL=static WITH_WAITLINE=1 diff --git a/.github/.env_8.4.dynamic.ci b/.github/.env_8.4.dynamic.ci index ccf18292a..a8f6abf95 100644 --- a/.github/.env_8.4.dynamic.ci +++ b/.github/.env_8.4.dynamic.ci @@ -7,3 +7,5 @@ OPTIMIZE=3 SYMBOLS=0 WITH_WAITLINE=1 +WITH_XMLREADER=dynamic +WITH_XMLWRITER=dynamic diff --git a/.github/.env_8.4.shared.ci b/.github/.env_8.4.shared.ci index 4e72bbb8f..562228c30 100644 --- a/.github/.env_8.4.shared.ci +++ b/.github/.env_8.4.shared.ci @@ -19,6 +19,8 @@ WITH_LIBXML=shared WITH_DOM=dynamic WITH_XML=dynamic WITH_SIMPLEXML=dynamic +WITH_XMLREADER=dynamic +WITH_XMLWRITER=dynamic WITH_TIDY=shared WITH_LIBZIP=shared diff --git a/.github/.env_8.4.static.ci b/.github/.env_8.4.static.ci index cab51e993..71ac9a0bb 100644 --- a/.github/.env_8.4.static.ci +++ b/.github/.env_8.4.static.ci @@ -19,6 +19,8 @@ WITH_LIBXML=static WITH_DOM=static WITH_XML=static WITH_SIMPLEXML=static +WITH_XMLREADER=static +WITH_XMLWRITER=static WITH_TIDY=static WITH_LIBZIP=static @@ -35,7 +37,7 @@ WITH_LIBWEBP=static WITH_YAML=static WITH_MBSTRING=static WITH_ONIGURUMA=static -WITH_OPENSSL=1 +WITH_OPENSSL=static WITH_INTL=static WITH_WAITLINE=1 diff --git a/.github/.env_8.5.dynamic.ci b/.github/.env_8.5.dynamic.ci index c6bfac7d4..b15b02bb6 100644 --- a/.github/.env_8.5.dynamic.ci +++ b/.github/.env_8.5.dynamic.ci @@ -7,3 +7,5 @@ OPTIMIZE=3 SYMBOLS=0 WITH_WAITLINE=1 +WITH_XMLREADER=dynamic +WITH_XMLWRITER=dynamic diff --git a/.github/.env_8.5.shared.ci b/.github/.env_8.5.shared.ci index b9a628406..239123385 100644 --- a/.github/.env_8.5.shared.ci +++ b/.github/.env_8.5.shared.ci @@ -19,6 +19,8 @@ WITH_LIBXML=shared WITH_DOM=dynamic WITH_XML=dynamic WITH_SIMPLEXML=dynamic +WITH_XMLREADER=dynamic +WITH_XMLWRITER=dynamic WITH_TIDY=shared WITH_LIBZIP=shared diff --git a/.github/.env_8.5.static.ci b/.github/.env_8.5.static.ci index efc64421b..85a80c69f 100644 --- a/.github/.env_8.5.static.ci +++ b/.github/.env_8.5.static.ci @@ -19,6 +19,8 @@ WITH_LIBXML=static WITH_DOM=static WITH_XML=static WITH_SIMPLEXML=static +WITH_XMLREADER=static +WITH_XMLWRITER=static WITH_TIDY=static WITH_LIBZIP=static @@ -35,7 +37,7 @@ WITH_LIBWEBP=static WITH_YAML=static WITH_MBSTRING=static WITH_ONIGURUMA=static -WITH_OPENSSL=1 +WITH_OPENSSL=static WITH_INTL=static WITH_WAITLINE=1 diff --git a/.github/bin/verify-sdl-main-module.sh b/.github/bin/verify-sdl-main-module.sh new file mode 100755 index 000000000..7700aaf69 --- /dev/null +++ b/.github/bin/verify-sdl-main-module.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash + +set -euo pipefail + +PHP_VERSION="${1:?usage: verify-sdl-main-module.sh }" +WRAPPER="packages/php-wasm/php${PHP_VERSION}_sdl-web.mjs" + +if [[ ! -f "${WRAPPER}" ]]; then + echo "missing SDL wrapper artifact: ${WRAPPER}" >&2 + exit 1 +fi + +WASM_BASENAME="$( + perl -ne ' + if (/new URL\("([^"]+\.wasm)", import\.meta\.url\)/) { + print "$1\n"; + exit 0; + } + if (/var f="([^"]+\.wasm)"/) { + print "$1\n"; + exit 0; + } + ' "${WRAPPER}" +)" + +if [[ -z "${WASM_BASENAME}" ]]; then + echo "could not resolve wasm path from SDL wrapper: ${WRAPPER}" >&2 + exit 1 +fi + +WASM="$(dirname "${WRAPPER}")/${WASM_BASENAME}" + +if [[ ! -f "${WASM}" ]]; then + echo "missing SDL wasm artifact: ${WASM}" >&2 + exit 1 +fi + +if ! command -v wasm-objdump >/dev/null 2>&1; then + echo "wasm-objdump is required to validate ${WASM}" >&2 + exit 1 +fi + +OBJDUMP_LOG="$(mktemp)" +trap 'rm -f "${OBJDUMP_LOG}"' EXIT +wasm-objdump -x "${WASM}" > "${OBJDUMP_LOG}" + +if grep -E -q 'GOT\.mem\.SDL_(HIDAPI|VIRTUAL|DUMMY)_JoystickDriver' "${OBJDUMP_LOG}"; then + echo "SDL main module still imports joystick driver globals: ${WASM}" >&2 + exit 1 +fi + +if grep -E -q ' <- env\.emscripten_compute_dom_pk_code' "${OBJDUMP_LOG}"; then + echo "SDL main module still imports emscripten_compute_dom_pk_code: ${WASM}" >&2 + exit 1 +fi + +if grep -E -q 'asyncifyStubs\["emscripten_compute_dom_pk_code"\]=undefined' "${WRAPPER}"; then + echo "SDL wrapper still leaves emscripten_compute_dom_pk_code unresolved: ${WRAPPER}" >&2 + exit 1 +fi diff --git a/.github/workflows/build-demo-step.yaml b/.github/workflows/build-demo-step.yaml new file mode 100644 index 000000000..5d4515b91 --- /dev/null +++ b/.github/workflows/build-demo-step.yaml @@ -0,0 +1,62 @@ +name: Build Web Demo + +on: + workflow_call: + inputs: + libType: + required: true + type: string + +jobs: + test: + name: Build Web Demo w/${{ inputs.libType }} libs + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v6 + + - name: Disable man-db auto-update + run: | + echo "set man-db/auto-update false" | sudo debconf-communicate + sudo dpkg-reconfigure man-db + + - name: Download Artifact + uses: actions/download-artifact@v8 + with: + pattern: php-compressed-${{ inputs.libType }} + merge-multiple: true + path: ./ + + - name: Extract Artifact + run: | + for TAR in php-compressed-*.tar.gz; do + tar -xzf ${TAR} + done; + + - name: Ensure the demo uses local packages + run: cd demo-web; ./switch-packages.sh local; npm ci; cd ..; + + - name: Build Web Demo + run: cd demo-web; ./switch-packages.sh local; npm run build; cd ..; + env: + LIB_TYPE: ${{ inputs.libType }} + CI: '' + + - name: Take Snapshot + run: | + sudo chown -R ${USER}:${USER} . + sudo chmod -R u+rwX,go+rX . + tar --exclude=.git \ + --format=posix \ + --exclude='php-demo-web-${{ inputs.libType }}.tar.gz' \ + --ignore-failed-read \ + --warning=no-file-changed \ + -czf 'php-demo-web-${{ inputs.libType }}.tar.gz' \ + docs + + - name: Upload artifact + uses: actions/upload-artifact@v6 + with: + name: php-demo-web-${{ inputs.libType }} + path: php-demo-web-${{ inputs.libType }}.tar.gz + compression-level: 0 diff --git a/.github/workflows/build-step.yaml b/.github/workflows/build-step.yaml index 6ac54299a..c76e683ca 100644 --- a/.github/workflows/build-step.yaml +++ b/.github/workflows/build-step.yaml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Import `.env` file run: | @@ -33,7 +33,7 @@ jobs: - name: Download Artifact if: ${{ inputs.libType != 'static' }} - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: pattern: php-dependencies-* merge-multiple: true @@ -46,22 +46,27 @@ jobs: tar -xzf ${TAR} done; + - name: Re-flatten mtimes after extraction + if: ${{ inputs.libType != 'static' }} + run: find . \( -name node_modules -o -name .git \) -type d -prune -o -type f -print0 | xargs -0 touch -d '1970-01-01 00:00:00 UTC' + - name: Apply executable cache if: ${{ inputs.libType != 'static' }} run: | - ls ./.cache/executables-* | while read -r CACHE; do - cat ${CACHE} | xargs -I{} chmod +x {} + shopt -s nullglob + for CACHE in ./.cache/executables-*; do + xargs -r -a "${CACHE}" chmod +x done - name: Install NPM packages run: npm ci - - name: Install deps - run: sudo apt update && sudo apt install coreutils docker-compose -y + - name: Verify Docker Compose + run: docker compose version - name: Cache Docker image id: cache-docker-image - uses: actions/cache@v3 + uses: actions/cache@v5 with: path: /tmp/builder-image.tar key: ${{ runner.os }}-docker-${{ hashFiles('emscripten-builder.dockerfile') }} @@ -76,29 +81,37 @@ jobs: time make --debug=basic image docker save -o /tmp/builder-image.tar seanmorris/php-emscripten-builder:latest - - name: Spin up docker-network - run: docker network create phpwasm_default - - name: Build demo-node run: npm install --prefix demo-node - name: Build PHP For Node - run: time make --debug=basic node-mjs + run: time make --debug=basic node-mjs node-js + + - name: Build PHP for Web + run: time make --debug=basic web-mjs web-js - - name: Build PHP for Web & PHP-CGI for Worker - run: time make --debug=basic web-mjs worker-cgi-mjs + - name: Build PHP-CGI for Worker + run: time make --debug=basic worker-cgi-mjs worker-cgi-js - name: Build PHP CGI for Node - run: time make --debug=basic node-cgi-mjs + run: time make --debug=basic node-cgi-mjs node-cgi-js - - name: Build php${{ inputs.phpVersion }}-sdl.so - run: time make --debug=basic packages/sdl/php${{ inputs.phpVersion }}-sdl.so packages/sdl/libGL.so PHP_VERSION=${{ inputs.phpVersion }} + - name: Build PHP CLI for Node + run: time make --debug=basic node-cli-mjs node-cli-js - - name: Build PHP (sdl) for Web - run: time make --debug=basic web-mjs WITH_SDL=1 + - name: Build PHP DBG for Node + run: time make --debug=basic node-dbg-mjs node-dbg-js - - name: Build PHP DBG & CLI Previews - run: time make --debug=basic web-dbg-mjs web-cli-mjs + - name: Build PHP CLI for Web + run: time make --debug=basic web-cli-mjs web-cli-js + + - name: Build PHP DBG for Web + run: time make --debug=basic web-dbg-mjs web-dbg-js + + - name: Build PHP (sdl variant) for Web + run: | + sudo rm -f .cache/config-cache third_party/php${{ inputs.phpVersion }}-src/configured + time make --debug=basic web-mjs WITH_SDL=1 - name: Take Snapshot run: | @@ -116,7 +129,7 @@ jobs: lib - name: Upload Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: php-uncompressed-${{ inputs.phpVersion }}-${{ inputs.libType }} path: php-uncompressed-${{ inputs.phpVersion }}-${{ inputs.libType }}.tar.gz @@ -130,7 +143,7 @@ jobs: tar --exclude=.git --exclude='snapshot.tar.gz' --ignore-failed-read --warning=no-file-changed -czf snapshot.tar.gz . - name: Upload Failure Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 if: ${{ failure() }} with: name: failure-snapshot-${{ inputs.phpVersion }}-${{ inputs.libType }} diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 7b66ec20b..883d38f13 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -22,15 +22,15 @@ jobs: matrix: ${{ steps.set-matrix.outputs.libgroups }} steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Disable man-db auto-update run: | echo "set man-db/auto-update false" | sudo debconf-communicate sudo dpkg-reconfigure man-db - - name: Install docker-compose - run: sudo apt update && sudo apt install docker-compose -y + - name: Verify Docker Compose + run: docker compose version - name: Install NPM packages run: npm ci @@ -44,7 +44,7 @@ jobs: - name: Cache Docker image id: cache-docker-image - uses: actions/cache@v3 + uses: actions/cache@v5 with: path: /tmp/builder-image.tar key: ${{ runner.os }}-docker-${{ hashFiles('emscripten-builder.dockerfile') }} @@ -69,7 +69,7 @@ jobs: libgroup: ${{ fromJSON(needs.generate-lib-group-matrix.outputs.matrix) }} steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Disable man-db auto-update run: | @@ -79,15 +79,15 @@ jobs: - name: Install NPM packages run: npm ci - - name: Install docker-compose - run: sudo apt update && sudo apt install docker-compose -y + - name: Verify Docker Compose + run: docker compose version - name: Import configuration run: cp -p .github/.env_8.4.dynamic.ci .env - name: Cache Docker image id: cache-docker-image - uses: actions/cache@v3 + uses: actions/cache@v5 with: path: /tmp/builder-image.tar key: ${{ runner.os }}-docker-${{ hashFiles('emscripten-builder.dockerfile') }} @@ -102,9 +102,6 @@ jobs: time make --debug=basic image docker save -o /tmp/builder-image.tar seanmorris/php-emscripten-builder:latest - - name: Spin up docker-network - run: docker network create phpwasm_default - - name: Build shared libraries run: time make --debug=basic ${{ matrix.libgroup }} WITH_SDL=dynamic @@ -127,7 +124,7 @@ jobs: lib - name: Upload Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: php-dependencies-${{ matrix.libgroup }} path: php-dependencies-${{ matrix.libgroup }}.tar.gz @@ -135,7 +132,6 @@ jobs: - build-php-dynamic: needs: [build-libs] strategy: @@ -166,12 +162,55 @@ jobs: phpVersion: ${{ matrix.phpVersion }} libType: static + verify-sdl-dynamic: + name: Verify SDL ${{ matrix.phpVersion }} w/${{ matrix.libType }} libs + needs: [build-php-dynamic] + strategy: + fail-fast: false + matrix: + phpVersion: ['8.5', '8.4', '8.3', '8.2', '8.1', '8.0'] + libType: ['dynamic'] + uses: ./.github/workflows/verify-sdl-step.yaml + with: + artifactPattern: php-uncompressed-${{ matrix.phpVersion }}-${{ matrix.libType }} + phpVersion: ${{ matrix.phpVersion }} + libType: ${{ matrix.libType }} + + verify-sdl-shared: + name: Verify SDL ${{ matrix.phpVersion }} w/${{ matrix.libType }} libs + needs: [build-php-shared] + strategy: + fail-fast: false + matrix: + phpVersion: ['8.5', '8.4', '8.3', '8.2', '8.1', '8.0'] + libType: ['shared'] + uses: ./.github/workflows/verify-sdl-step.yaml + with: + artifactPattern: php-uncompressed-${{ matrix.phpVersion }}-${{ matrix.libType }} + phpVersion: ${{ matrix.phpVersion }} + libType: ${{ matrix.libType }} + + verify-sdl-static: + name: Verify SDL ${{ matrix.phpVersion }} w/${{ matrix.libType }} libs + needs: [build-php-static] + strategy: + fail-fast: false + matrix: + phpVersion: ['8.5', '8.4', '8.3', '8.2', '8.1', '8.0'] + libType: ['static'] + uses: ./.github/workflows/verify-sdl-step.yaml + with: + artifactPattern: php-uncompressed-${{ matrix.phpVersion }}-${{ matrix.libType }} + phpVersion: ${{ matrix.phpVersion }} + libType: ${{ matrix.libType }} + test-node-dynamic: name: Test ${{ matrix.testType }} ${{ matrix.phpVersion }} w/dynamic libs needs: [build-php-dynamic] strategy: + fail-fast: false matrix: phpVersion: ['8.5', '8.4', '8.3', '8.2', '8.1', '8.0'] testType: ['node', 'deno'] @@ -187,6 +226,7 @@ jobs: name: Test ${{ matrix.testType }} ${{ matrix.phpVersion }} w/shared libs needs: [build-php-shared] strategy: + fail-fast: false matrix: phpVersion: ['8.5', '8.4', '8.3', '8.2', '8.1', '8.0'] testType: ['node', 'deno'] @@ -202,6 +242,7 @@ jobs: name: Test ${{ matrix.testType }} ${{ matrix.phpVersion }} w/static libs needs: [build-php-static] strategy: + fail-fast: false matrix: phpVersion: ['8.5', '8.4', '8.3', '8.2', '8.1', '8.0'] testType: ['node', 'deno'] @@ -219,6 +260,7 @@ jobs: name: Test Browser ${{ matrix.phpVersion }} w/${{ matrix.libType }} libs needs: [build-php-dynamic] strategy: + fail-fast: false matrix: phpVersion: ['8.5', '8.4', '8.3', '8.2', '8.1', '8.0'] libType: ['dynamic'] @@ -232,6 +274,7 @@ jobs: name: Test Browser ${{ matrix.phpVersion }} w/${{ matrix.libType }} libs needs: [build-php-shared] strategy: + fail-fast: false matrix: phpVersion: ['8.5', '8.4', '8.3', '8.2', '8.1', '8.0'] libType: ['shared'] @@ -245,6 +288,7 @@ jobs: name: Test Browser ${{ matrix.phpVersion }} w/${{ matrix.libType }} libs needs: [build-php-static] strategy: + fail-fast: false matrix: phpVersion: ['8.5', '8.4', '8.3', '8.2', '8.1', '8.0'] libType: ['static'] @@ -260,6 +304,7 @@ jobs: name: Test CGI Node ${{ matrix.phpVersion }} w/${{ matrix.libType }} libs needs: [build-php-dynamic] strategy: + fail-fast: false matrix: phpVersion: ['8.5', '8.4', '8.3', '8.2', '8.1', '8.0'] libType: ['dynamic'] @@ -273,6 +318,7 @@ jobs: name: Test CGI Node ${{ matrix.phpVersion }} w/${{ matrix.libType }} libs needs: [build-php-shared] strategy: + fail-fast: false matrix: phpVersion: ['8.5', '8.4', '8.3', '8.2', '8.1', '8.0'] libType: ['shared'] @@ -286,6 +332,7 @@ jobs: name: Test CGI Node ${{ matrix.phpVersion }} w/${{ matrix.libType }} libs needs: [build-php-static] strategy: + fail-fast: false matrix: phpVersion: ['8.5', '8.4', '8.3', '8.2', '8.1', '8.0'] libType: ['static'] @@ -301,6 +348,7 @@ jobs: name: Compress PHP w/${{ matrix.libType }} libs runs-on: ubuntu-latest needs: + - verify-sdl-dynamic - test-node-dynamic - test-browser-dynamic - test-cgi-node-dynamic @@ -309,7 +357,7 @@ jobs: libType: ['dynamic'] steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Disable man-db auto-update run: | @@ -317,7 +365,7 @@ jobs: sudo dpkg-reconfigure man-db - name: Download Artifact - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: pattern: php-uncompressed-*-${{ matrix.libType }} merge-multiple: true @@ -357,7 +405,7 @@ jobs: lib - name: Upload Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: php-compressed-${{ matrix.libType }} path: php-compressed-${{ matrix.libType }}.tar.gz @@ -367,6 +415,7 @@ jobs: name: Compress PHP w/${{ matrix.libType }} libs runs-on: ubuntu-latest needs: + - verify-sdl-shared - test-node-shared - test-browser-shared - test-cgi-node-shared @@ -375,7 +424,7 @@ jobs: libType: ['shared'] steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Disable man-db auto-update run: | @@ -383,7 +432,7 @@ jobs: sudo dpkg-reconfigure man-db - name: Download Artifact - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: pattern: php-uncompressed-*-${{ matrix.libType }} merge-multiple: true @@ -423,7 +472,7 @@ jobs: lib - name: Upload Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: php-compressed-${{ matrix.libType }} path: php-compressed-${{ matrix.libType }}.tar.gz @@ -433,6 +482,7 @@ jobs: name: Compress PHP w/${{ matrix.libType }} libs runs-on: ubuntu-latest needs: + - verify-sdl-static - test-node-static - test-browser-static - test-cgi-node-static @@ -441,7 +491,7 @@ jobs: libType: ['static'] steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Disable man-db auto-update run: | @@ -449,7 +499,7 @@ jobs: sudo dpkg-reconfigure man-db - name: Download Artifact - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: pattern: php-uncompressed-*-${{ matrix.libType }} merge-multiple: true @@ -489,7 +539,7 @@ jobs: lib - name: Upload Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: php-compressed-${{ matrix.libType }} path: php-compressed-${{ matrix.libType }}.tar.gz @@ -502,6 +552,7 @@ jobs: name: Test ${{ matrix.testType }} ${{ matrix.phpVersion }} w/${{ matrix.libType }} libs (compressed) needs: [compress-dynamic-packages] strategy: + fail-fast: false matrix: phpVersion: ['8.5', '8.4', '8.3', '8.2', '8.1', '8.0'] testType: ['node', 'deno'] @@ -517,6 +568,7 @@ jobs: name: Test ${{ matrix.testType }} ${{ matrix.phpVersion }} w/${{ matrix.libType }} libs (compressed) needs: [compress-shared-packages] strategy: + fail-fast: false matrix: phpVersion: ['8.5', '8.4', '8.3', '8.2', '8.1', '8.0'] testType: ['node', 'deno'] @@ -532,6 +584,7 @@ jobs: name: Test ${{ matrix.testType }} ${{ matrix.phpVersion }} w/${{ matrix.libType }} libs (compressed) needs: [compress-static-packages] strategy: + fail-fast: false matrix: phpVersion: ['8.5', '8.4', '8.3', '8.2', '8.1', '8.0'] testType: ['node', 'deno'] @@ -549,6 +602,7 @@ jobs: name: Test Browser ${{ matrix.phpVersion }} w/${{ matrix.libType }} libs (compressed) needs: [compress-dynamic-packages] strategy: + fail-fast: false matrix: phpVersion: ['8.5', '8.4', '8.3', '8.2', '8.1', '8.0'] libType: ['dynamic'] @@ -562,6 +616,7 @@ jobs: name: Test Browser ${{ matrix.phpVersion }} w/${{ matrix.libType }} libs (compressed) needs: [compress-shared-packages] strategy: + fail-fast: false matrix: phpVersion: ['8.5', '8.4', '8.3', '8.2', '8.1', '8.0'] libType: ['shared'] @@ -575,6 +630,7 @@ jobs: name: Test Browser ${{ matrix.phpVersion }} w/${{ matrix.libType }} libs (compressed) needs: [compress-static-packages] strategy: + fail-fast: false matrix: phpVersion: ['8.5', '8.4', '8.3', '8.2', '8.1', '8.0'] libType: ['static'] @@ -584,12 +640,30 @@ jobs: phpVersion: ${{ matrix.phpVersion }} libType: ${{ matrix.libType }} + test-browser-sdl-compressed: + name: Test Browser 8.4 _sdl w/${{ matrix.libType }} libs (compressed) + needs: + - compress-dynamic-packages + - compress-shared-packages + - compress-static-packages + strategy: + fail-fast: false + matrix: + libType: ['dynamic', 'shared', 'static'] + uses: ./.github/workflows/test-browser-step.yaml + with: + artifactPattern: php-compressed-${{ matrix.libType }} + phpVersion: '8.4' + phpVariant: '_sdl' + libType: ${{ matrix.libType }} + test-cgi-node-dynamic-compressed: name: Test CGI Node ${{ matrix.phpVersion }} w/${{ matrix.libType }} libs (compressed) needs: [compress-dynamic-packages] strategy: + fail-fast: false matrix: phpVersion: ['8.5', '8.4', '8.3', '8.2', '8.1', '8.0'] libType: ['dynamic'] @@ -603,6 +677,7 @@ jobs: name: Test CGI Node ${{ matrix.phpVersion }} w/${{ matrix.libType }} libs (compressed) needs: [compress-shared-packages] strategy: + fail-fast: false matrix: phpVersion: ['8.5', '8.4', '8.3', '8.2', '8.1', '8.0'] libType: ['shared'] @@ -616,6 +691,7 @@ jobs: name: Test CGI Node ${{ matrix.phpVersion }} w/${{ matrix.libType }} libs (compressed) needs: [compress-static-packages] strategy: + fail-fast: false matrix: phpVersion: ['8.5', '8.4', '8.3', '8.2', '8.1', '8.0'] libType: ['static'] @@ -637,7 +713,7 @@ jobs: - test-cgi-node-dynamic-compressed steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Disable man-db auto-update run: | @@ -645,7 +721,7 @@ jobs: sudo dpkg-reconfigure man-db - name: Download Artifact - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: pattern: php-compressed-dynamic merge-multiple: true @@ -677,7 +753,7 @@ jobs: .cache - name: Upload Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: php-indexed-packages path: php-indexed-packages.tar.gz @@ -717,83 +793,75 @@ jobs: -d "{\"content\": \"New nightly build available: https://nightly.php-wasm.seanmorr.is/${{ env.STAMP }}-${{ env.SHORT_SHA }}/\"}" \ ${{ secrets.DISCORD_WEBHOOK_URL }} - build-demo: - name: Build Web Demo - if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/develop' - runs-on: ubuntu-latest - needs: - - index-packages - steps: - - name: Check out repository code - uses: actions/checkout@v4 - - name: Disable man-db auto-update - run: | - echo "set man-db/auto-update false" | sudo debconf-communicate - sudo dpkg-reconfigure man-db - - name: Download Artifact - uses: actions/download-artifact@v4 - with: - pattern: php-compressed-dynamic - merge-multiple: true - path: ./ + build-demo-dynamic: + name: Build Web Demo w/dynamic libs + needs: + - test-browser-dynamic-compressed + - test-node-dynamic-compressed + - test-cgi-node-dynamic-compressed + uses: ./.github/workflows/build-demo-step.yaml + with: + libType: dynamic - - name: Extract Artifact - run: | - for TAR in php-compressed-*.tar.gz; do - tar -xzf ${TAR} - done; + build-demo-shared: + name: Build Web Demo w/shared libs + needs: + - test-browser-shared-compressed + - test-node-shared-compressed + - test-cgi-node-shared-compressed + uses: ./.github/workflows/build-demo-step.yaml + with: + libType: shared - - name: Download Index Artifact - uses: actions/download-artifact@v4 - with: - pattern: php-indexed-packages - merge-multiple: true - path: ./ + build-demo-static: + name: Build Web Demo w/static libs + needs: + - test-browser-static-compressed + - test-node-static-compressed + - test-cgi-node-static-compressed + uses: ./.github/workflows/build-demo-step.yaml + with: + libType: static - - name: Extract Artifact - run: | - for TAR in php-indexed-packages.tar.gz; do - tar -xzf ${TAR} - done; - - name: Ensure the demo uses local packages - run: cd demo-web; ./switch-packages.sh local; npm ci; cd ..; - - name: Build Web Demo - run: cd demo-web; ./switch-packages.sh local; npm run build; cd ..; - env: - CI: '' + test-demo-web-dynamic: + name: Test demo-web artifact w/dynamic libs + needs: + - build-demo-dynamic + uses: ./.github/workflows/test-demo-web-step.yaml + with: + artifactName: php-demo-web-dynamic + libType: dynamic - - name: Copy packages into web demo - run: cp -rfv packages demo-web/build/nightly + test-demo-web-shared: + name: Test demo-web artifact w/shared libs + needs: + - build-demo-shared + uses: ./.github/workflows/test-demo-web-step.yaml + with: + artifactName: php-demo-web-shared + libType: shared + + test-demo-web-static: + name: Test demo-web artifact w/static libs + needs: + - build-demo-static + uses: ./.github/workflows/test-demo-web-step.yaml + with: + artifactName: php-demo-web-static + libType: static - - name: Take Snapshot - run: | - sudo chown -R ${USER}:${USER} . - sudo chmod -R u+rwX,go+rX . - tar --exclude=.git \ - --format=posix \ - --exclude='php-demo-web.tar.gz' \ - --ignore-failed-read \ - --warning=no-file-changed \ - -czf 'php-demo-web.tar.gz' \ - docs - - name: Upload artifact - uses: actions/upload-artifact@v4 - with: - name: php-demo-web - path: php-demo-web.tar.gz - compression-level: 0 - deploy-docs: + deploy-to-pages: name: Deploy Docs to GitHub Pages if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/develop' runs-on: ubuntu-latest needs: - - build-demo + - test-demo-web-dynamic permissions: contents: read pages: write @@ -803,18 +871,18 @@ jobs: cancel-in-progress: true steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Download Artifact - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: - pattern: php-demo-web + pattern: php-demo-web-dynamic merge-multiple: true path: ./ - name: Extract Artifact run: | - for TAR in php-demo-web.tar.gz; do + for TAR in php-demo-web-dynamic.tar.gz; do tar -xzf ${TAR} done; diff --git a/.github/workflows/deploy-pages-function.yaml b/.github/workflows/deploy-pages-function.yaml index e103a79e3..cfdeba2c5 100644 --- a/.github/workflows/deploy-pages-function.yaml +++ b/.github/workflows/deploy-pages-function.yaml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install Wrangler run: npm install -g wrangler @@ -27,4 +27,4 @@ jobs: wrangler pages deploy --branch=main --project-name=php-wasm-nightly env: CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_PAGES_API_TOKEN }} - CLOUDFLARE_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }} \ No newline at end of file + CLOUDFLARE_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }} diff --git a/.github/workflows/test-browser-step.yaml b/.github/workflows/test-browser-step.yaml index 725d4adc3..3629aac87 100644 --- a/.github/workflows/test-browser-step.yaml +++ b/.github/workflows/test-browser-step.yaml @@ -12,6 +12,10 @@ on: artifactPattern: required: true type: string + phpVariant: + required: false + type: string + default: '' jobs: test: @@ -19,7 +23,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Disable man-db auto-update run: | @@ -32,7 +36,7 @@ jobs: touch -d '1970-01-01 00:00:00 UTC' .env - name: Download Artifact - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: pattern: ${{ inputs.artifactPattern }} merge-multiple: true @@ -44,14 +48,14 @@ jobs: tar -xzf ${TAR} done; + - name: Flatten mtimes after extraction + run: find . \( -name node_modules -o -name .git \) -type d -prune -o -type f -print0 | xargs -0 touch -d '1970-01-01 00:00:00 UTC' + - name: Install NPM packages run: npm ci - - name: Install Global NPM packages - run: npm install -g deno cv3-test netcat - - - name: Install docker-compose - run: sudo apt update && sudo apt install docker-compose -y + - name: Verify browser harness assets + run: node test/browser/verify-browser-assets.mjs - name: Install Chrome's APT key run: wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add - @@ -62,11 +66,8 @@ jobs: - name: Install Chrome run: sudo apt-get update && sudo apt install -y software-properties-common google-chrome-stable - - name: Ensure the demo uses local packages - run: cd demo-web; ./switch-packages.sh local; npm ci; cd ..; - - name: Run tests - run: BUILD_TYPE=${{ inputs.libType }} make --debug=basic test-browser + run: PHP_VERSION=${{ inputs.phpVersion }} PHP_VARIANT=${{ inputs.phpVariant }} LIB_TYPE=${{ inputs.libType }} make --debug=basic test-browser - name: Take Failure Snapshot if: ${{ failure() }} @@ -76,7 +77,7 @@ jobs: tar --exclude=.git --exclude='snapshot.tar.gz' --ignore-failed-read --warning=no-file-changed -czf snapshot.tar.gz . - name: Upload Failure Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 if: ${{ failure() }} with: name: failure-snapshot-browser-test-${{ inputs.phpVersion }}-${{ inputs.libType }} diff --git a/.github/workflows/test-cgi-node-step.yaml b/.github/workflows/test-cgi-node-step.yaml index 6d32f75ba..c13ddaee2 100644 --- a/.github/workflows/test-cgi-node-step.yaml +++ b/.github/workflows/test-cgi-node-step.yaml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Disable man-db auto-update run: | @@ -32,7 +32,7 @@ jobs: touch -d '1970-01-01 00:00:00 UTC' .env - name: Download Artifact - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: pattern: ${{ inputs.artifactPattern }} merge-multiple: true @@ -44,17 +44,17 @@ jobs: tar -xzf ${TAR} done; - - name: Install NPM packages - run: npm ci - - - name: Install Global NPM packages - run: npm install -g deno cv3-test netcat + - name: Flatten mtimes after extraction + run: find . \( -name node_modules -o -name .git \) -type d -prune -o -type f -print0 | xargs -0 touch -d '1970-01-01 00:00:00 UTC' - - name: Install docker-compose - run: sudo apt update && sudo apt install docker-compose -y + - name: Install NPM packages + run: | + npm ci - name: Run tests - run: BUILD_TYPE=${{ inputs.libType }} make --debug=basic test-cgi-node + run: | + PHP_VERSION=${{ inputs.phpVersion }} LIB_TYPE=${{ inputs.libType }} make --debug=basic test-cgi-node + PHP_VERSION=${{ inputs.phpVersion }} LIB_TYPE=${{ inputs.libType }} make --debug=basic test-cgi-node-cjs - name: Take Failure Snapshot if: ${{ failure() }} @@ -64,7 +64,7 @@ jobs: tar --exclude=.git --exclude='snapshot.tar.gz' --ignore-failed-read --warning=no-file-changed -czf snapshot.tar.gz . - name: Upload Failure Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 if: ${{ failure() }} with: name: failure-snapshot-cgi-node-test-${{ inputs.phpVersion }}-${{ inputs.libType }} diff --git a/.github/workflows/test-demo-web-step.yaml b/.github/workflows/test-demo-web-step.yaml new file mode 100644 index 000000000..cbae9e6ba --- /dev/null +++ b/.github/workflows/test-demo-web-step.yaml @@ -0,0 +1,73 @@ +name: Test Demo Web Artifact + +on: + workflow_call: + inputs: + artifactName: + required: true + type: string + libType: + required: true + type: string + +jobs: + test: + name: Test demo-web artifact w/${{ inputs.libType }} libs + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v6 + + - name: Disable man-db auto-update + run: | + echo "set man-db/auto-update false" | sudo debconf-communicate + sudo dpkg-reconfigure man-db + + - name: Download Artifact + uses: actions/download-artifact@v8 + with: + name: ${{ inputs.artifactName }} + path: ./ + + - name: Extract Artifact + run: | + for TAR in php-demo-web-${{ inputs.libType }}.tar.gz; do + tar -xzf ${TAR} + done; + + - name: Install NPM packages + run: npm ci + + - name: Install Chrome's APT key + run: wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add - + + - name: Install Chrome's APT source + run: sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' + + - name: Install Chrome + run: sudo apt-get update && sudo apt install -y software-properties-common google-chrome-stable + + - name: Run tests + run: LIB_TYPE=${{ inputs.libType }} DEMO_WEB_ARTIFACT_ROOT=docs make --debug=basic test-demo-web + + - name: Take Failure Snapshot + if: ${{ failure() }} + run: | + sudo chown -R ${USER}:${USER} . + sudo chmod -R u+rwX,go+rX . + tar --exclude=.git \ + --exclude='demo-web-artifact-failure.tar.gz' \ + --ignore-failed-read \ + --warning=no-file-changed \ + -czf demo-web-artifact-failure.tar.gz \ + php-demo-web-${{ inputs.libType }}.tar.gz \ + docs \ + test-results + + - name: Upload Failure Artifact + uses: actions/upload-artifact@v6 + if: ${{ failure() }} + with: + name: failure-snapshot-demo-web-test-${{ inputs.libType }} + path: demo-web-artifact-failure.tar.gz + compression-level: 0 diff --git a/.github/workflows/test-node-step.yaml b/.github/workflows/test-node-step.yaml index f26237266..88c32b8b1 100644 --- a/.github/workflows/test-node-step.yaml +++ b/.github/workflows/test-node-step.yaml @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Import `.env` file run: | @@ -34,7 +34,7 @@ jobs: - name: Cache Docker image id: cache-docker-image - uses: actions/cache@v3 + uses: actions/cache@v5 with: path: /tmp/builder-image.tar key: ${{ runner.os }}-docker-${{ hashFiles('emscripten-builder.dockerfile') }} @@ -49,17 +49,16 @@ jobs: time make --debug=basic image docker save -o /tmp/builder-image.tar seanmorris/php-emscripten-builder:latest - - name: Install deps - run: sudo apt update && sudo apt install coreutils docker-compose -y + - name: Verify Docker Compose + run: docker compose version - name: npm install run: | npm ci - npm ci --prefix demo-node npm install -g deno@2.5.6 - name: Download Artifact - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: pattern: ${{ inputs.artifactPattern }} merge-multiple: true @@ -71,17 +70,27 @@ jobs: tar -xzf ${TAR} done; - - name: Spin up docker-network - run: docker network create phpwasm_default + - name: Re-flatten mtimes after extraction + run: find . \( -name node_modules -o -name .git \) -type d -prune -o -type f -print0 | xargs -0 touch -d '1970-01-01 00:00:00 UTC' - name: Apply executable cache run: | - ls ./.cache/executables-* | while read -r CACHE; do - cat ${CACHE} | xargs -I{} chmod +x {} + shopt -s nullglob + for CACHE in ./.cache/executables-*; do + xargs -r -a "${CACHE}" chmod +x done - name: Run tests - run: make --debug=basic test-${{ inputs.testType }} PHP_VERSION=${{ inputs.phpVersion }} + run: | + TARGET=test-${{ inputs.testType }} + + if [ "${{ inputs.testType }}" = "node" ]; then + make --debug=basic test-node-standard PHP_VERSION=${{ inputs.phpVersion }} LIB_TYPE=${{ inputs.libType }} + make --debug=basic test-node-cjs-standard PHP_VERSION=${{ inputs.phpVersion }} LIB_TYPE=${{ inputs.libType }} + exit 0 + fi + + make --debug=basic ${TARGET} PHP_VERSION=${{ inputs.phpVersion }} LIB_TYPE=${{ inputs.libType }} - name: Take Failure Snapshot if: ${{ failure() }} @@ -91,7 +100,7 @@ jobs: tar --exclude=.git --exclude='snapshot.tar.gz' --ignore-failed-read --warning=no-file-changed -czf snapshot.tar.gz . - name: Upload Failure Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 if: ${{ failure() }} with: name: failure-snapshot-${{ inputs.testType }}-test-${{ inputs.phpVersion }}-${{ inputs.libType }} diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 3688902f4..061781e39 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -11,21 +11,36 @@ concurrency: jobs: + test-8-5-static: + name: Test 8.5 Static + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v6 + - run: npm install + - run: npm install -g deno@2.5.6 + - run: | + echo "set man-db/auto-update false" | sudo debconf-communicate + sudo dpkg-reconfigure man-db + - run: docker compose version + - run: cp .circleci/.env_8.5.ci .env + - run: make image + - run: PHP_VERSION=8.5 make test + test-8-4-static: name: Test 8.4 Static runs-on: ubuntu-latest steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - run: npm install - run: npm install -g deno@2.5.6 - run: | echo "set man-db/auto-update false" | sudo debconf-communicate sudo dpkg-reconfigure man-db - - run: sudo apt update && sudo apt install docker-compose -y + - run: docker compose version - run: cp .circleci/.env_8.4.ci .env - run: make image - - run: docker network create phpwasm_default - run: PHP_VERSION=8.4 make test test-8-3-static: @@ -33,16 +48,15 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - run: npm install - run: npm install -g deno@2.5.6 - run: | echo "set man-db/auto-update false" | sudo debconf-communicate sudo dpkg-reconfigure man-db - - run: sudo apt update && sudo apt install docker-compose -y + - run: docker compose version - run: cp .circleci/.env_8.3.ci .env - run: make image - - run: docker network create phpwasm_default - run: PHP_VERSION=8.3 make test test-8-2-static: @@ -50,16 +64,15 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - run: npm install - run: npm install -g deno@2.5.6 - run: | echo "set man-db/auto-update false" | sudo debconf-communicate sudo dpkg-reconfigure man-db - - run: sudo apt update && sudo apt install docker-compose -y + - run: docker compose version - run: cp .circleci/.env_8.2.ci .env - run: make image - - run: docker network create phpwasm_default - run: PHP_VERSION=8.2 make test test-8-1-static: @@ -67,16 +80,15 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - run: npm install - run: npm install -g deno@2.5.6 - run: | echo "set man-db/auto-update false" | sudo debconf-communicate sudo dpkg-reconfigure man-db - - run: sudo apt update && sudo apt install docker-compose -y + - run: docker compose version - run: cp .circleci/.env_8.1.ci .env - run: make image - - run: docker network create phpwasm_default - run: PHP_VERSION=8.1 make test test-8-0-static: @@ -84,34 +96,47 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - run: npm install - run: npm install -g deno@2.5.6 - run: | echo "set man-db/auto-update false" | sudo debconf-communicate sudo dpkg-reconfigure man-db - - run: sudo apt update && sudo apt install docker-compose -y + - run: docker compose version - run: cp .circleci/.env_8.0.ci .env - run: make image - - run: docker network create phpwasm_default - run: PHP_VERSION=8.0 make test + test-8-5-dynamic: + name: Test 8.5 Dynamic + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v6 + - run: npm install + - run: npm install -g deno@2.5.6 + - run: | + echo "set man-db/auto-update false" | sudo debconf-communicate + sudo dpkg-reconfigure man-db + - run: docker compose version + - run: cp .circleci/.env_8.5-dynamic.ci .env + - run: make image + - run: PHP_VERSION=8.5 make test test-8-4-dynamic: name: Test 8.4 Dynamic runs-on: ubuntu-latest steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - run: npm install - run: npm install -g deno@2.5.6 - run: | echo "set man-db/auto-update false" | sudo debconf-communicate sudo dpkg-reconfigure man-db - - run: sudo apt update && sudo apt install docker-compose -y + - run: docker compose version - run: cp .circleci/.env_8.4-dynamic.ci .env - run: make image - - run: docker network create phpwasm_default - run: PHP_VERSION=8.4 make test test-8-3-dynamic: @@ -119,16 +144,15 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - run: npm install - run: npm install -g deno@2.5.6 - run: | echo "set man-db/auto-update false" | sudo debconf-communicate sudo dpkg-reconfigure man-db - - run: sudo apt update && sudo apt install docker-compose -y + - run: docker compose version - run: cp .circleci/.env_8.3-dynamic.ci .env - run: make image - - run: docker network create phpwasm_default - run: PHP_VERSION=8.3 make test test-8-2-dynamic: @@ -136,16 +160,15 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - run: npm install - run: npm install -g deno@2.5.6 - run: | echo "set man-db/auto-update false" | sudo debconf-communicate sudo dpkg-reconfigure man-db - - run: sudo apt update && sudo apt install docker-compose -y + - run: docker compose version - run: cp .circleci/.env_8.2-dynamic.ci .env - run: make image - - run: docker network create phpwasm_default - run: PHP_VERSION=8.2 make test test-8-1-dynamic: @@ -153,16 +176,15 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - run: npm install - run: npm install -g deno@2.5.6 - run: | echo "set man-db/auto-update false" | sudo debconf-communicate sudo dpkg-reconfigure man-db - - run: sudo apt update && sudo apt install docker-compose -y + - run: docker compose version - run: cp .circleci/.env_8.1-dynamic.ci .env - run: make image - - run: docker network create phpwasm_default - run: PHP_VERSION=8.1 make test test-8-0-dynamic: @@ -170,34 +192,47 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - run: npm install - run: npm install -g deno@2.5.6 - run: | echo "set man-db/auto-update false" | sudo debconf-communicate sudo dpkg-reconfigure man-db - - run: sudo apt update && sudo apt install docker-compose -y + - run: docker compose version - run: cp .circleci/.env_8.0-dynamic.ci .env - run: make image - - run: docker network create phpwasm_default - run: PHP_VERSION=8.0 make test + test-8-5-shared: + name: Test 8.5 Shared + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v6 + - run: npm install + - run: npm install -g deno@2.5.6 + - run: | + echo "set man-db/auto-update false" | sudo debconf-communicate + sudo dpkg-reconfigure man-db + - run: docker compose version + - run: cp .circleci/.env_8.5-shared.ci .env + - run: make image + - run: PHP_VERSION=8.5 make test test-8-4-shared: name: Test 8.4 Shared runs-on: ubuntu-latest steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - run: npm install - run: npm install -g deno@2.5.6 - run: | echo "set man-db/auto-update false" | sudo debconf-communicate sudo dpkg-reconfigure man-db - - run: sudo apt update && sudo apt install docker-compose -y + - run: docker compose version - run: cp .circleci/.env_8.4-shared.ci .env - run: make image - - run: docker network create phpwasm_default - run: PHP_VERSION=8.4 make test test-8-3-shared: @@ -205,16 +240,15 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - run: npm install - run: npm install -g deno@2.5.6 - run: | echo "set man-db/auto-update false" | sudo debconf-communicate sudo dpkg-reconfigure man-db - - run: sudo apt update && sudo apt install docker-compose -y + - run: docker compose version - run: cp .circleci/.env_8.3-shared.ci .env - run: make image - - run: docker network create phpwasm_default - run: PHP_VERSION=8.3 make test test-8-2-shared: @@ -222,13 +256,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - run: npm install - run: npm install -g deno@2.5.6 - - run: sudo apt update && sudo apt install docker-compose -y + - run: docker compose version - run: cp .circleci/.env_8.2-shared.ci .env - run: make image - - run: docker network create phpwasm_default - run: PHP_VERSION=8.2 make test test-8-1-shared: @@ -236,16 +269,15 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - run: npm install - run: npm install -g deno@2.5.6 - run: | echo "set man-db/auto-update false" | sudo debconf-communicate sudo dpkg-reconfigure man-db - - run: sudo apt update && sudo apt install docker-compose -y + - run: docker compose version - run: cp .circleci/.env_8.1-shared.ci .env - run: make image - - run: docker network create phpwasm_default - run: PHP_VERSION=8.1 make test test-8-0-shared: @@ -253,14 +285,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - run: npm install - run: npm install -g deno@2.5.6 - run: | echo "set man-db/auto-update false" | sudo debconf-communicate sudo dpkg-reconfigure man-db - - run: sudo apt update && sudo apt install docker-compose -y + - run: docker compose version - run: cp .circleci/.env_8.0-shared.ci .env - run: make image - - run: docker network create phpwasm_default - run: PHP_VERSION=8.0 make test diff --git a/.github/workflows/verify-sdl-step.yaml b/.github/workflows/verify-sdl-step.yaml new file mode 100644 index 000000000..98596658e --- /dev/null +++ b/.github/workflows/verify-sdl-step.yaml @@ -0,0 +1,43 @@ +name: Verify SDL Step + +on: + workflow_call: + inputs: + phpVersion: + required: true + type: string + libType: + required: true + type: string + artifactPattern: + required: true + type: string + +jobs: + verify: + name: Verify SDL ${{ inputs.phpVersion }} ${{ inputs.libType }} + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v6 + + - name: Install wabt + run: | + sudo apt-get update + sudo apt-get install -y wabt + + - name: Download Artifact + uses: actions/download-artifact@v8 + with: + pattern: ${{ inputs.artifactPattern }} + merge-multiple: true + path: ./ + + - name: Extract Artifact + run: | + for TAR in ${{ inputs.artifactPattern }}.tar.gz; do + tar -xzf ${TAR} + done + + - name: Verify PHP (sdl variant) for Web + run: ./.github/bin/verify-sdl-main-module.sh ${{ inputs.phpVersion }} diff --git a/.gitignore b/.gitignore index 03ca0e549..142b1f8e2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,53 +1,31 @@ -/php*.js -/php*.mjs -/php*.wasm -/php*.wat -/php*.wasm.map -/php*.data -docs-source/app/assets/php*.js -docs-source/app/assets/php*.wasm -docs-source/app/assets/php*.wat -docs-source/app/assets/php*.wasm.map -docs-source/app/assets/php*.data -/Php*.js -/Php*.mjs -/*.js -/*.mjs -/node_modules -configured +.DS_Store .env -/*-src/ -/docs/*.map -/.cache .env* -packages/**/*.so -packages/**/*.dat -emscripten/ -**.generated.mjs - -packages/php-wasm/*.map -packages/php-wasm/*.map.BAK -packages/php-wasm/build.log +configured -packages/php-cli-wasm/*.map -packages/php-cli-wasm/*.map.BAK -packages/php-cli-wasm/build.log +.cache/ +/docs/ +emscripten/ +node_modules/ -packages/php-cgi-wasm/*.map -packages/php-cgi-wasm/*.map.BAK -packages/php-cgi-wasm/build.log +packages/**/*.so +packages/**/*.dat +packages/**/*.map +packages/**/*.log +packages/**/*.BAK +packages/**/*.wasm packages/php-wasm/mapped packages/php-cli-wasm/mapped packages/php-cgi-wasm/mapped -docs/static/media/mapped/* -demo-web/public/static/media/mapped/* +demo-web/public/ +demo-web/build/ -.DS_Store packages/**/index.html packages/*.tar.gz -packages/dependencies.json +packages/**/*.generated.mjs + *.gz -*.br \ No newline at end of file +*.br diff --git a/CHANGELOG.md b/CHANGELOG.md index 198f9d85a..6fa670499 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,22 @@ Changes -## v0.0.9 - Aiming for the (GitHub) Stars +## v0.1.0 - Aiming for the (GitHub) Stars + +* Rebuilt `demo-web` around Vite, reorganized it into `pages`, `components`, `lib`, and `assets`, and added the newer browser/e2e harnesses plus runtime path helpers for the worker and page builds. +* Added Quickbus-backed browser messaging, a richer `phpdbg` bus session, and a VSCode debugger bridge for the demo app and debugger workflow. +* Expanded runtime/build coverage across older targets, including `phpdbg`, SDL, and Vrzno support in PHP `8.0` builds. SDL now ships as the `_sdl` runtime variant instead of a separately loaded shared library. +* Added `version` and `variant` support to `php-tags`, making it possible to select non-default runtimes from static HTML. +* Standardized the maintained runtime sources on `.mjs` modules and expanded type/JSDoc coverage across `php-wasm`, `php-cgi-wasm`, `php-cli-wasm`, `php-dbg-wasm`, and the extension helper packages. +* Reworked shared and dynamic extension loading so built-in support libraries, ICU payloads, OpenSSL, libxml/XML, DOM, SimpleXML, XMLReader, and XMLWriter behave consistently across Node, browser, demo, and docs/test harnesses. +* Suppressed implicit `libxml2.so` loading when it is not provided in `sharedLibs`, which reduces startup download size for minimal runtime configurations. +* Broadened verification with vendored `php-wasm-site` docs fixtures, split docs/CGI coverage suites, deeper CLI-node PHPT coverage, richer XML/intl/tidy/iconv/sqlite smoke tests, and browser-test race-condition fixes. +* Tightened the build/test pipeline by preserving `BUILD_TYPE` through CI, adding a dynamic fallback when it is omitted, smoke-testing packaged demo artifacts, centralizing shared-lib resolution, and refreshing the workflow matrix for the newer runtime surface. +* Improved local workspace and release plumbing with symlink-aware package loading, action-artifact overlay support, and refreshed README/package docs around runtime defaults, versioned `.wasm` assets, extension wiring, interactive CLI/debugger behavior via `waitline`, and Cloudflare D1 setup through `pdo_cfd1`. + +## v0.0.9 - Here there be dragons + +*Version 0.0.9 is represented by a near endless stream of letter-tagged alpha releases and will be considered officially skipped. The changes in v0.1.0 mostly landed somewhere in this range, but since the API is not stable, here there be dragons.* * Adding PHP-CGI support! * Runtime extension loading! diff --git a/Makefile b/Makefile index 89e6debf0..beac2262e 100755 --- a/Makefile +++ b/Makefile @@ -20,6 +20,7 @@ MAKEFLAGS += --no-builtin-rules --no-builtin-variables --warn-undefined-variable ENV_DIR?=. ENV_FILE?=.env -include ${ENV_FILE} +LIB_TYPE ?=$(shell basename '${ENV_FILE}' | sed -n 's/^\.env_[0-9][0-9.]*\.\([^.]*\)\.ci$$/\1/p') ## PHP Version PHP_VERSION_DEFAULT=8.4 @@ -38,6 +39,7 @@ WITH_SESSION ?=1 WITH_TOKENIZER?=1 SKIP_SHARED_LIBS?=0 +PRELOAD_ASSETS?= ifeq ($(filter ${WITH_BCMATH},0 1),) $(error WITH_BCMATH MUST BE 0 or 1. PLEASE CHECK YOUR SETTINGS FILE: $(abspath ${ENV_FILE})) @@ -132,9 +134,10 @@ SHELL=bash -euo pipefail PKG_CONFIG_PATH=/src/lib/lib/pkgconfig -DOCKER_COMPOSE?=docker-compose +DOCKER_COMPOSE?=docker compose CPU_COUNT=`nproc || echo 1` MAX_LOAD=$(shell echo $$(( `nproc` + $$(( `nproc` / 2 )) ))) +LTO_FLAG?=-flto DOCKER_ENV=PHP_DIST_DIR=$(realpath ${PHP_DIST_DIR}) ${DOCKER_COMPOSE} -p phpwasm run -T --rm -e PKG_CONFIG_PATH=${PKG_CONFIG_PATH} -e OUTER_UID=${UID} DOCKER_RUN=${DOCKER_ENV} emscripten-builder DOCKER_RUN_IN_PHP=${DOCKER_ENV} -w /src/third_party/php${PHP_VERSION}-src/ emscripten-builder @@ -153,6 +156,7 @@ ARCHIVES= SHARED_LIBS= PRE_JS_FILES=source/env.js EXTRA_PRE_JS_FILES?= +PRE_JS_CACHE?= PHPIZE=third_party/php${PHP_VERSION}-src/scripts/phpize PRE_JS_FILES+= ${EXTRA_PRE_JS_FILES} @@ -209,10 +213,6 @@ PHP_ASSET_LIST= PHP_ASSET_DIR?=${PHP_DIST_DIR} SHARED_ASSET_PATHS=${PHP_ASSET_DIR} -ifneq (${PHP_ASSET_DIR},${PHP_DIST_DIR}) -PHP_ASSET_LIST+= -endif - PRELOAD_NAME=php NOTPARALLEL= @@ -365,12 +365,13 @@ EXTRA_FLAGS+= --source-map-base ${SOURCE_MAP_BASE} endif ifneq (${PRE_JS_FILES},) -EXTRA_FLAGS+= --pre-js /src/.cache/pre.js +PRE_JS_CACHE:=.cache/pre.$(shell printf '%s\n' '${PRE_JS_FILES}' | sha1sum | cut -d' ' -f1).js +EXTRA_FLAGS+= --pre-js /src/${PRE_JS_CACHE} endif -.cache/pre.js: ${PRE_JS_FILES} +${PRE_JS_CACHE}: ${PRE_JS_FILES} ifneq (${PRE_JS_FILES},) - ${DOCKER_RUN} cat $(addprefix /src/,${PRE_JS_FILES}) > .cache/pre.js + ${DOCKER_RUN} cat $(addprefix /src/,${PRE_JS_FILES}) > ${PRE_JS_CACHE} endif WEB_FS_TYPE?=-lidbfs.js @@ -400,11 +401,11 @@ BUILD_FLAGS+=-f ../../php.mk \ BUILD_BINARY='${SAPI_PHPDBG_PATH}'\ SAPI_PHPDBG_PATH='${SAPI_PHPDBG_PATH}'\ PHP_CLI_OBJS='${PHP_CLI_OBJS}' \ - EXTRA_CFLAGS=' -Wno-int-conversion -Wimplicit-function-declaration -flto -fPIC ${EXTRA_CFLAGS} ${SYMBOL_FLAGS} -D HAVE_REALLOCARRAY=1 '\ - EXTRA_CXXFLAGS=' -Wno-int-conversion -Wimplicit-function-declaration -flto -fPIC ${EXTRA_CFLAGS} ${SYMBOL_FLAGS} '\ + EXTRA_CFLAGS=' -Wno-int-conversion -Wimplicit-function-declaration ${LTO_FLAG} -fPIC ${EXTRA_CFLAGS} ${SYMBOL_FLAGS} -D HAVE_REALLOCARRAY=1 '\ + EXTRA_CXXFLAGS=' -Wno-int-conversion -Wimplicit-function-declaration ${LTO_FLAG} -fPIC ${EXTRA_CFLAGS} ${SYMBOL_FLAGS} '\ EXTRA_LDFLAGS_PROGRAM='-O${OPTIMIZE} -static \ -Wl,-zcommon-page-size=2097152 -Wl,-zmax-page-size=2097152 -L/src/lib/lib \ - ${SYMBOL_FLAGS} -flto -fPIC \ + ${SYMBOL_FLAGS} ${LTO_FLAG} -fPIC \ -s EXPORTED_FUNCTIONS='\''["_malloc", "_free", "_main"]'\'' \ -s EXPORTED_RUNTIME_METHODS='\''["ccall", "UTF8ToString", "lengthBytesUTF8", "stringToUTF8", "getValue", "setValue", "lengthBytesUTF8", "FS", "ENV"]'\'' \ -s INITIAL_MEMORY=${INITIAL_MEMORY} \ @@ -437,7 +438,7 @@ BUILD_FLAGS+=-f ../../php.mk \ BUILD_TYPE ?=js ifneq (${PRE_JS_FILES},) -DEPENDENCIES+= .cache/pre.js +DEPENDENCIES+= ${PRE_JS_CACHE} endif HELPER_MJS=${PHP_DIST_DIR}/php-tags.mjs ${PHP_DIST_DIR}/php-tags.jsdelivr.mjs ${PHP_DIST_DIR}/php-tags.local.mjs ${PHP_DIST_DIR}/php-tags.unpkg.mjs @@ -487,14 +488,44 @@ ALL=${MJS} ${CJS} ${TAG_JS} tags: ${TAG_JS} +############### StdLibs ############### + +STDLIB_NODE_TARGET= +STDLIB_WEB_TARGET= +STDLIB_WORKER_TARGET= +STDLIB_WEBVIEW_TARGET= + +ifneq ($(filter ${WITH_LIBXML},dynamic),) +ifneq ($(filter ${PHP_VERSION},8.5 8.4 8.3 8.2),) +STDLIB_NODE_TARGET=packages/php-wasm/stdlib/${PHP_VERSION}-node.mjs +STDLIB_WEB_TARGET=packages/php-wasm/stdlib/${PHP_VERSION}-web.mjs +STDLIB_WORKER_TARGET=packages/php-wasm/stdlib/${PHP_VERSION}-worker.mjs +STDLIB_WEBVIEW_TARGET=packages/php-wasm/stdlib/${PHP_VERSION}-webview.mjs +endif +endif + +stdlib: ${STDLIB_NODE_TARGET} ${STDLIB_WEB_TARGET} ${STDLIB_WORKER_TARGET} ${STDLIB_WEBVIEW_TARGET} + +packages/php-wasm/stdlib/${PHP_VERSION}-node.mjs: ${PHP_DIST_DIR}/php${PHP_VERSION}-node.mjs ${PHP_DIST_DIR}/PhpNode.mjs + node demo-node/get-symbols.mjs ${PHP_VERSION} Node > $@ + +packages/php-wasm/stdlib/${PHP_VERSION}-web.mjs: ${PHP_DIST_DIR}/php${PHP_VERSION}-node.mjs ${PHP_DIST_DIR}/PhpNode.mjs + node demo-node/get-symbols.mjs ${PHP_VERSION} Web > $@ + +packages/php-wasm/stdlib/${PHP_VERSION}-worker.mjs: ${PHP_DIST_DIR}/php${PHP_VERSION}-node.mjs ${PHP_DIST_DIR}/PhpNode.mjs + node demo-node/get-symbols.mjs ${PHP_VERSION} Worker > $@ + +packages/php-wasm/stdlib/${PHP_VERSION}-webview.mjs: ${PHP_DIST_DIR}/php${PHP_VERSION}-node.mjs ${PHP_DIST_DIR}/PhpNode.mjs + node demo-node/get-symbols.mjs ${PHP_VERSION} Webview > $@ + # Single Builds web-mjs: $(MAKE) -j${CPU_COUNT} -l${MAX_LOAD} ${PHP_CONFIGURE_DEPS} $(MAKE) ${WEB_MJS} $(MAKE) -j${CPU_COUNT} -l${MAX_LOAD} ${WEB_MJS_ASSETS} -ifneq ($(filter ${PHP_VERSION},8.5 8.4 8.3 8.2),) - ${MAKE} packages/php-wasm/stdlib/${PHP_VERSION}-web.mjs +ifneq (${STDLIB_WEB_TARGET},) + ${MAKE} ${STDLIB_WEB_TARGET} endif @ cat ico.ans >&2 @@ -508,8 +539,8 @@ worker-mjs: $(MAKE) -j${CPU_COUNT} -l${MAX_LOAD} ${PHP_CONFIGURE_DEPS} $(MAKE) ${WORKER_MJS} $(MAKE) -j${CPU_COUNT} -l${MAX_LOAD} ${WORKER_MJS_ASSETS} -ifneq ($(filter ${PHP_VERSION},8.5 8.4 8.3 8.2),) - ${MAKE} packages/php-wasm/stdlib/${PHP_VERSION}-worker.mjs +ifneq (${STDLIB_WORKER_TARGET},) + ${MAKE} ${STDLIB_WORKER_TARGET} endif @ cat ico.ans >&2 @@ -523,8 +554,8 @@ webview-mjs: $(MAKE) -j${CPU_COUNT} -l${MAX_LOAD} ${PHP_CONFIGURE_DEPS} $(MAKE) ${WEBVIEW_MJS} $(MAKE) -j${CPU_COUNT} -l${MAX_LOAD} ${WEBVIEW_MJS_ASSETS} -ifneq ($(filter ${PHP_VERSION},8.5 8.4 8.3 8.2),) - ${MAKE} packages/php-wasm/stdlib/${PHP_VERSION}-webview.mjs +ifneq (${STDLIB_WEBVIEW_TARGET},) + ${MAKE} ${STDLIB_WEBVIEW_TARGET} endif @ cat ico.ans >&2 @@ -538,8 +569,8 @@ node-mjs: $(MAKE) -j${CPU_COUNT} -l${MAX_LOAD} ${PHP_CONFIGURE_DEPS} $(MAKE) ${NODE_MJS} $(MAKE) -j${CPU_COUNT} -l${MAX_LOAD} ${NODE_MJS_ASSETS} -ifneq ($(filter ${PHP_VERSION},8.5 8.4 8.3 8.2),) - ${MAKE} packages/php-wasm/stdlib/${PHP_VERSION}-node.mjs +ifneq (${STDLIB_NODE_TARGET},) + ${MAKE} ${STDLIB_NODE_TARGET} endif @ cat ico.ans >&2 @@ -783,14 +814,13 @@ ${PHP_DIST_DIR}/php${PHP_SUFFIX}-webview.mjs.wasm.map.MAPPED: ${PHP_DIST_DIR}/ph ########## Package files ########### -${PHP_DIST_DIR}/%.js: source/%.js +${PHP_DIST_DIR}/%.js: source/%.mjs npx babel $< --out-dir ${PHP_DIST_DIR} - perl -pi -w -e 's|import.meta|(undefined /*import.meta*/)|' ${PHP_DIST_DIR}/$(notdir $@) - perl -pi -w -e 's|require\("(\..+?)"\)|require("\1.js")|' ${PHP_DIST_DIR}/$(notdir $@) + perl -pi -w -e 's|import.meta|(undefined /*import.meta*/)|g' ${PHP_DIST_DIR}/$(notdir $@) + perl -pi -w -e 's|require\("(\..+?).mjs"\)|require("\1.js")|g' ${PHP_DIST_DIR}/$(notdir $@) -${PHP_DIST_DIR}/%.mjs: source/%.js +${PHP_DIST_DIR}/%.mjs: source/%.mjs cp $< $@; - perl -pi -w -e "s~\b(import.+ from )(['\"])(?!node\:)([^'\"]+)\2~\1\2\3.mjs\2~g" $@; ${PHP_DIST_DIR}/php-tags.mjs: source/php-tags.mjs cp $< $@; @@ -804,22 +834,6 @@ ${PHP_DIST_DIR}/php-tags.unpkg.mjs: source/php-tags.unpkg.mjs ${PHP_DIST_DIR}/php-tags.local.mjs: source/php-tags.local.mjs cp $< $@; -############### StdLibs ############### - -stdlib: packages/php-wasm/stdlib/${PHP_VERSION}-node.mjs packages/php-wasm/stdlib/${PHP_VERSION}-web.mjs packages/php-wasm/stdlib/${PHP_VERSION}-worker.mjs packages/php-wasm/stdlib/${PHP_VERSION}-webview.mjs - -packages/php-wasm/stdlib/${PHP_VERSION}-node.mjs: ${PHP_DIST_DIR}/php${PHP_VERSION}-node.mjs ${PHP_DIST_DIR}/PhpNode.mjs - BUILD_TYPE=${WITH_LIBXML} node demo-node/get-symbols.mjs ${PHP_VERSION} Node > $@ - -packages/php-wasm/stdlib/${PHP_VERSION}-web.mjs: ${PHP_DIST_DIR}/php${PHP_VERSION}-node.mjs ${PHP_DIST_DIR}/PhpNode.mjs - BUILD_TYPE=${WITH_LIBXML} node demo-node/get-symbols.mjs ${PHP_VERSION} Web > $@ - -packages/php-wasm/stdlib/${PHP_VERSION}-worker.mjs: ${PHP_DIST_DIR}/php${PHP_VERSION}-node.mjs ${PHP_DIST_DIR}/PhpNode.mjs - BUILD_TYPE=${WITH_LIBXML} node demo-node/get-symbols.mjs ${PHP_VERSION} Worker > $@ - -packages/php-wasm/stdlib/${PHP_VERSION}-webview.mjs: ${PHP_DIST_DIR}/php${PHP_VERSION}-node.mjs ${PHP_DIST_DIR}/PhpNode.mjs - BUILD_TYPE=${WITH_LIBXML} node demo-node/get-symbols.mjs ${PHP_VERSION} Webview > $@ - ########### Clerical stuff. ########### ${ENV_FILE}: @@ -832,7 +846,6 @@ shared: $(MAKE) -j${CPU_COUNT} -l${MAX_LOAD} ${SHARED_LIBS} assets: $(foreach P,$(sort ${SHARED_ASSET_PATHS}),$(addprefix ${P}/,${PHP_ASSET_LIST})) -# @ echo $(foreach P,$(sort ${SHARED_ASSET_PATHS}),$(addprefix ${P}/,${PHP_ASSET_LIST})) deps: ${MAKE} -j${CPU_COUNT} -l${MAX_LOAD} ${ARCHIVES} ${PHP_CONFIGURE_DEPS} @@ -893,12 +906,20 @@ php-clean: sapi/cli/php \ sapi/cgi/php-cgi' ${DOCKER_RUN} bash -c 'rm -f \ - packages/php-wasm/php-*.mjs \ - packages/php-cgi-wasm/php-*.mjs \ - packages/php-wasm/php-*.wasm \ - packages/php-cgi-wasm/php-*.wasm \ + packages/php-wasm/php${PHP_VERSION}-*.mjs \ + packages/php-cgi-wasm/php${PHP_VERSION}-*.mjs \ + packages/php-cli-wasm/php${PHP_VERSION}-*.mjs \ + packages/php-dbg-wasm/php${PHP_VERSION}-*.mjs \ + packages/php-wasm/php${PHP_VERSION}-*.wasm \ + packages/php-cgi-wasm/php${PHP_VERSION}-*.wasm \ + packages/php-cli-wasm/php${PHP_VERSION}-*.wasm \ + packages/php-dbg-wasm/php${PHP_VERSION}-*.wasm \ packages/php-wasm/Php*.mjs \ - packages/php-cgi-wasm/Php*.mjs' + packages/php-cgi-wasm/Php*.mjs' \ + packages/php-cli-wasm/Php*.mjs' \ + packages/php-dbg-wasm/Php*.mjs' + ${DOCKER_RUN} rm -rf lib/include/lexbor + ${DOCKER_RUN} rm -rf third_party/php${PHP_VERSION}-src/ext/yaml ${DOCKER_RUN} bash -c 'ls third_party/ | grep "php${PHP_VERSION}-.*" | while read DIR; do { \ cd "third_party/$${DIR}"; \ make clean; \ @@ -941,7 +962,7 @@ clean: packages/php-cli-wasm/*.mjs* \ third_party/php${PHP_VERSION}-src/configured \ third_party/preload \ - .cache/pre.js \ + .cache/pre*.js \ .cache/preload-collected ${MAKE} php-clean @@ -975,10 +996,11 @@ save-image: mkdir -p ./image docker image save seanmorris/php-emscripten-builder -o ./image/builder.tar +NPM_PUBLISH_TAG?=latest NPM_PUBLISH_DRY?=--dry-run publish: - npm publish ${NPM_PUBLISH_DRY} + ./publish-packages.sh ${NPM_PUBLISH_TAG} ${NPM_PUBLISH_DRY} test: ${MAKE} test-node @@ -987,14 +1009,50 @@ ifneq ($(filter ${PHP_VERSION},8.5 8.4 8.3 8.2),) endif NODE_TEST_FLAGS= +DOC_TESTS= +DOC_TESTS_CJS= + +ifeq (${LIB_TYPE},dynamic) +DOC_TESTS+=test/docs.test.mjs +DOC_TESTS+=test/docs-cgi.test.mjs +DOC_TESTS_CJS+=test/docs.test.cjs +endif + +test-node: node-mjs node-cgi-mjs + PHP_VERSION=${PHP_VERSION} \ + PHP_VARIANT=${PHP_VARIANT} \ + LIB_TYPE=${LIB_TYPE} \ + WITH_LIBXML=${WITH_LIBXML} \ + WITH_LIBZIP=${WITH_LIBZIP} \ + WITH_ICONV=${WITH_ICONV} \ + WITH_SQLITE=${WITH_SQLITE} \ + WITH_GD=${WITH_GD} \ + WITH_PHAR=${WITH_PHAR} \ + WITH_ZLIB=${WITH_ZLIB} \ + WITH_LIBPNG=${WITH_LIBPNG} \ + WITH_FREETYPE=${WITH_FREETYPE} \ + WITH_LIBJPEG=${WITH_LIBJPEG} \ + WITH_DOM=${WITH_DOM} \ + WITH_SIMPLEXML=${WITH_SIMPLEXML} \ + WITH_XML=${WITH_XML} \ + WITH_XMLREADER=${WITH_XMLREADER} \ + WITH_XMLWRITER=${WITH_XMLWRITER} \ + WITH_YAML=${WITH_YAML} \ + WITH_TIDY=${WITH_TIDY} \ + WITH_MBSTRING=${WITH_MBSTRING} \ + WITH_ONIGURUMA=${WITH_ONIGURUMA} \ + WITH_OPENSSL=${WITH_OPENSSL} \ + WITH_SDL=${WITH_SDL} \ + WITH_INTL=${WITH_INTL} node ${NODE_TEST_FLAGS} --test ${TEST_LIST} ${DOC_TESTS} `find test -maxdepth 1 -name '*.mjs' ! -name 'docs.test.mjs' ! -name 'docs-cgi.test.mjs' | sort` -test-node: node-mjs +test-node-standard: node-mjs node-cgi-mjs node-cli-mjs node-dbg-mjs PHP_VERSION=${PHP_VERSION} \ PHP_VARIANT=${PHP_VARIANT} \ + LIB_TYPE=${LIB_TYPE} \ WITH_LIBXML=${WITH_LIBXML} \ WITH_LIBZIP=${WITH_LIBZIP} \ WITH_ICONV=${WITH_ICONV} \ - WITH_SQLITE=${WITH_ICONV} \ + WITH_SQLITE=${WITH_SQLITE} \ WITH_GD=${WITH_GD} \ WITH_PHAR=${WITH_PHAR} \ WITH_ZLIB=${WITH_ZLIB} \ @@ -1004,21 +1062,27 @@ test-node: node-mjs WITH_DOM=${WITH_DOM} \ WITH_SIMPLEXML=${WITH_SIMPLEXML} \ WITH_XML=${WITH_XML} \ + WITH_XMLREADER=${WITH_XMLREADER} \ + WITH_XMLWRITER=${WITH_XMLWRITER} \ WITH_YAML=${WITH_YAML} \ WITH_TIDY=${WITH_TIDY} \ WITH_MBSTRING=${WITH_MBSTRING} \ WITH_ONIGURUMA=${WITH_ONIGURUMA} \ WITH_OPENSSL=${WITH_OPENSSL} \ WITH_SDL=${WITH_SDL} \ - WITH_INTL=${WITH_INTL} node ${NODE_TEST_FLAGS} --test ${TEST_LIST} `ls test/*.mjs` + WITH_INTL=${WITH_INTL} node ${NODE_TEST_FLAGS} --test ${TEST_LIST} ${DOC_TESTS} \ + `find test -maxdepth 1 -name '*.mjs' ! -name 'docs.test.mjs' ! -name 'docs-cgi.test.mjs' | sort` \ + test/cli-node/cli-node.test.mjs \ + test/dbg-node/dbg-node.test.mjs -test-deno: node-mjs +test-node-cjs: node-js PHP_VERSION=${PHP_VERSION} \ PHP_VARIANT=${PHP_VARIANT} \ + LIB_TYPE=${LIB_TYPE} \ WITH_LIBXML=${WITH_LIBXML} \ WITH_LIBZIP=${WITH_LIBZIP} \ WITH_ICONV=${WITH_ICONV} \ - WITH_SQLITE=${WITH_ICONV} \ + WITH_SQLITE=${WITH_SQLITE} \ WITH_GD=${WITH_GD} \ WITH_PHAR=${WITH_PHAR} \ WITH_ZLIB=${WITH_ZLIB} \ @@ -1028,22 +1092,188 @@ test-deno: node-mjs WITH_DOM=${WITH_DOM} \ WITH_SIMPLEXML=${WITH_SIMPLEXML} \ WITH_XML=${WITH_XML} \ + WITH_XMLREADER=${WITH_XMLREADER} \ + WITH_XMLWRITER=${WITH_XMLWRITER} \ WITH_YAML=${WITH_YAML} \ WITH_TIDY=${WITH_TIDY} \ WITH_MBSTRING=${WITH_MBSTRING} \ WITH_ONIGURUMA=${WITH_ONIGURUMA} \ WITH_OPENSSL=${WITH_OPENSSL} \ WITH_SDL=${WITH_SDL} \ - WITH_INTL=${WITH_INTL} deno test ${TEST_LIST} `ls test/*.mjs` --allow-read --allow-write --allow-env --allow-net --allow-sys + WITH_INTL=${WITH_INTL} node ${NODE_TEST_FLAGS} --test ${TEST_LIST} ${DOC_TESTS_CJS} `find test -maxdepth 1 -name '*.cjs' ! -name 'docs.test.cjs' ! -name 'docs-cgi.test.cjs' | sort` + +test-node-cjs-standard: node-js node-cli-js node-dbg-js + PHP_VERSION=${PHP_VERSION} \ + PHP_VARIANT=${PHP_VARIANT} \ + LIB_TYPE=${LIB_TYPE} \ + WITH_LIBXML=${WITH_LIBXML} \ + WITH_LIBZIP=${WITH_LIBZIP} \ + WITH_ICONV=${WITH_ICONV} \ + WITH_SQLITE=${WITH_SQLITE} \ + WITH_GD=${WITH_GD} \ + WITH_PHAR=${WITH_PHAR} \ + WITH_ZLIB=${WITH_ZLIB} \ + WITH_LIBPNG=${WITH_LIBPNG} \ + WITH_FREETYPE=${WITH_FREETYPE} \ + WITH_LIBJPEG=${WITH_LIBJPEG} \ + WITH_DOM=${WITH_DOM} \ + WITH_SIMPLEXML=${WITH_SIMPLEXML} \ + WITH_XML=${WITH_XML} \ + WITH_XMLREADER=${WITH_XMLREADER} \ + WITH_XMLWRITER=${WITH_XMLWRITER} \ + WITH_YAML=${WITH_YAML} \ + WITH_TIDY=${WITH_TIDY} \ + WITH_MBSTRING=${WITH_MBSTRING} \ + WITH_ONIGURUMA=${WITH_ONIGURUMA} \ + WITH_OPENSSL=${WITH_OPENSSL} \ + WITH_SDL=${WITH_SDL} \ + WITH_INTL=${WITH_INTL} node ${NODE_TEST_FLAGS} --test ${TEST_LIST} ${DOC_TESTS_CJS} \ + `find test -maxdepth 1 -name '*.cjs' ! -name 'docs.test.cjs' ! -name 'docs-cgi.test.cjs' | sort` \ + test/cli-node/cli-node.test.cjs \ + test/dbg-node/dbg-node.test.cjs + +test-deno: node-mjs node-cgi-mjs + PHP_VERSION=${PHP_VERSION} \ + PHP_VARIANT=${PHP_VARIANT} \ + LIB_TYPE=${LIB_TYPE} \ + WITH_LIBXML=${WITH_LIBXML} \ + WITH_LIBZIP=${WITH_LIBZIP} \ + WITH_ICONV=${WITH_ICONV} \ + WITH_SQLITE=${WITH_SQLITE} \ + WITH_GD=${WITH_GD} \ + WITH_PHAR=${WITH_PHAR} \ + WITH_ZLIB=${WITH_ZLIB} \ + WITH_LIBPNG=${WITH_LIBPNG} \ + WITH_FREETYPE=${WITH_FREETYPE} \ + WITH_LIBJPEG=${WITH_LIBJPEG} \ + WITH_DOM=${WITH_DOM} \ + WITH_SIMPLEXML=${WITH_SIMPLEXML} \ + WITH_XML=${WITH_XML} \ + WITH_XMLREADER=${WITH_XMLREADER} \ + WITH_XMLWRITER=${WITH_XMLWRITER} \ + WITH_YAML=${WITH_YAML} \ + WITH_TIDY=${WITH_TIDY} \ + WITH_MBSTRING=${WITH_MBSTRING} \ + WITH_ONIGURUMA=${WITH_ONIGURUMA} \ + WITH_OPENSSL=${WITH_OPENSSL} \ + WITH_SDL=${WITH_SDL} \ + WITH_INTL=${WITH_INTL} deno test ${TEST_LIST} ${DOC_TESTS} `find test -maxdepth 1 -name '*.mjs' ! -name 'docs.test.mjs' ! -name 'docs-cgi.test.mjs' | sort` --allow-read --allow-write --allow-env --allow-net --allow-sys --allow-run=npm test-browser: - PHP_VERSION=${PHP_VERSION} PHP_VARIANT=${PHP_VARIANT} BUILD_TYPE=${BUILD_TYPE} REACT_APP_BUILD_TYPE=${BUILD_TYPE} test/browser-test.sh + PHP_VERSION=${PHP_VERSION} PHP_VARIANT=${PHP_VARIANT} LIB_TYPE=${LIB_TYPE} test/browser-test.sh + +DEMO_WEB_PHP_VERSION ?= 8.4 -test-cgi-node: - PHP_VERSION=${PHP_VERSION} BUILD_TYPE=${BUILD_TYPE} test/node-cgi-test.sh +test-demo-web: + PHP_VERSION=${DEMO_WEB_PHP_VERSION} LIB_TYPE=${LIB_TYPE} DEMO_WEB_ARTIFACT_ROOT=${DEMO_WEB_ARTIFACT_ROOT} test/demo-web-test.sh + +test-cgi-node: node-mjs node-cgi-mjs + PHP_VERSION=${PHP_VERSION} \ + LIB_TYPE=${LIB_TYPE} \ + WITH_LIBXML=${WITH_LIBXML} \ + WITH_LIBZIP=${WITH_LIBZIP} \ + WITH_ICONV=${WITH_ICONV} \ + WITH_SQLITE=${WITH_SQLITE} \ + WITH_GD=${WITH_GD} \ + WITH_PHAR=${WITH_PHAR} \ + WITH_ZLIB=${WITH_ZLIB} \ + WITH_LIBPNG=${WITH_LIBPNG} \ + WITH_FREETYPE=${WITH_FREETYPE} \ + WITH_LIBJPEG=${WITH_LIBJPEG} \ + WITH_DOM=${WITH_DOM} \ + WITH_SIMPLEXML=${WITH_SIMPLEXML} \ + WITH_XML=${WITH_XML} \ + WITH_XMLREADER=${WITH_XMLREADER} \ + WITH_XMLWRITER=${WITH_XMLWRITER} \ + WITH_YAML=${WITH_YAML} \ + WITH_TIDY=${WITH_TIDY} \ + WITH_MBSTRING=${WITH_MBSTRING} \ + WITH_ONIGURUMA=${WITH_ONIGURUMA} \ + WITH_OPENSSL=${WITH_OPENSSL} \ + WITH_SDL=${WITH_SDL} \ + WITH_INTL=${WITH_INTL} test/node-cgi-test.sh +ifeq (${LIB_TYPE},dynamic) + PHP_VERSION=${PHP_VERSION} \ + LIB_TYPE=${LIB_TYPE} \ + WITH_LIBXML=${WITH_LIBXML} \ + WITH_LIBZIP=${WITH_LIBZIP} \ + WITH_ICONV=${WITH_ICONV} \ + WITH_SQLITE=${WITH_SQLITE} \ + WITH_GD=${WITH_GD} \ + WITH_PHAR=${WITH_PHAR} \ + WITH_ZLIB=${WITH_ZLIB} \ + WITH_LIBPNG=${WITH_LIBPNG} \ + WITH_FREETYPE=${WITH_FREETYPE} \ + WITH_LIBJPEG=${WITH_LIBJPEG} \ + WITH_DOM=${WITH_DOM} \ + WITH_SIMPLEXML=${WITH_SIMPLEXML} \ + WITH_XML=${WITH_XML} \ + WITH_XMLREADER=${WITH_XMLREADER} \ + WITH_XMLWRITER=${WITH_XMLWRITER} \ + WITH_YAML=${WITH_YAML} \ + WITH_TIDY=${WITH_TIDY} \ + WITH_MBSTRING=${WITH_MBSTRING} \ + WITH_ONIGURUMA=${WITH_ONIGURUMA} \ + WITH_OPENSSL=${WITH_OPENSSL} \ + WITH_SDL=${WITH_SDL} \ + WITH_INTL=${WITH_INTL} node --test test/docs-cgi.test.mjs +endif + +test-cgi-node-cjs: node-js node-cgi-js + PHP_VERSION=${PHP_VERSION} \ + LIB_TYPE=${LIB_TYPE} \ + WITH_LIBXML=${WITH_LIBXML} \ + WITH_LIBZIP=${WITH_LIBZIP} \ + WITH_ICONV=${WITH_ICONV} \ + WITH_SQLITE=${WITH_SQLITE} \ + WITH_GD=${WITH_GD} \ + WITH_PHAR=${WITH_PHAR} \ + WITH_ZLIB=${WITH_ZLIB} \ + WITH_LIBPNG=${WITH_LIBPNG} \ + WITH_FREETYPE=${WITH_FREETYPE} \ + WITH_LIBJPEG=${WITH_LIBJPEG} \ + WITH_DOM=${WITH_DOM} \ + WITH_SIMPLEXML=${WITH_SIMPLEXML} \ + WITH_XML=${WITH_XML} \ + WITH_XMLREADER=${WITH_XMLREADER} \ + WITH_XMLWRITER=${WITH_XMLWRITER} \ + WITH_YAML=${WITH_YAML} \ + WITH_TIDY=${WITH_TIDY} \ + WITH_MBSTRING=${WITH_MBSTRING} \ + WITH_ONIGURUMA=${WITH_ONIGURUMA} \ + WITH_OPENSSL=${WITH_OPENSSL} \ + WITH_SDL=${WITH_SDL} \ + WITH_INTL=${WITH_INTL} \ + TEST_FORMAT=cjs test/node-cgi-test.sh +ifeq (${LIB_TYPE},dynamic) + PHP_VERSION=${PHP_VERSION} \ + LIB_TYPE=${LIB_TYPE} \ + WITH_LIBXML=${WITH_LIBXML} \ + WITH_LIBZIP=${WITH_LIBZIP} \ + WITH_ICONV=${WITH_ICONV} \ + WITH_SQLITE=${WITH_SQLITE} \ + WITH_GD=${WITH_GD} \ + WITH_PHAR=${WITH_PHAR} \ + WITH_ZLIB=${WITH_ZLIB} \ + WITH_LIBPNG=${WITH_LIBPNG} \ + WITH_FREETYPE=${WITH_FREETYPE} \ + WITH_LIBJPEG=${WITH_LIBJPEG} \ + WITH_DOM=${WITH_DOM} \ + WITH_SIMPLEXML=${WITH_SIMPLEXML} \ + WITH_XML=${WITH_XML} \ + WITH_XMLREADER=${WITH_XMLREADER} \ + WITH_XMLWRITER=${WITH_XMLWRITER} \ + WITH_YAML=${WITH_YAML} \ + WITH_TIDY=${WITH_TIDY} \ + WITH_MBSTRING=${WITH_MBSTRING} \ + WITH_ONIGURUMA=${WITH_ONIGURUMA} \ + WITH_OPENSSL=${WITH_OPENSSL} \ + WITH_SDL=${WITH_SDL} \ + WITH_INTL=${WITH_INTL} node --test test/docs-cgi.test.cjs +endif update-snapshots: - PHP_VERSION=${PHP_VERSION} PHP_VARIANT=${PHP_VARIANT} BUILD_TYPE=${BUILD_TYPE} REACT_APP_BUILD_TYPE=${BUILD_TYPE} CV_UPDATE_SNAPSHOTS=1 test/browser-test.sh + PHP_VERSION=${PHP_VERSION} PHP_VARIANT=${PHP_VARIANT} LIB_TYPE=${LIB_TYPE} UPDATE_SNAPSHOTS=1 test/browser-test.sh run: ${DOCKER_ENV} emscripten-builder bash @@ -1110,10 +1340,10 @@ reconfigure: rebuild: ${DOCKER_RUN} touch third_party/php${PHP_VERSION}-src/configured -demo: web-mjs worker-cgi-mjs web-dbg-mjs packages/sdl/libSDL2.so +demo: web-mjs worker-cgi-mjs web-dbg-mjs npm run build --prefix ./demo-web -serve-demo: web-mjs worker-cgi-mjs web-dbg-mjs packages/sdl/libSDL2.so +serve-demo: web-mjs worker-cgi-mjs web-dbg-mjs npm run start --prefix ./demo-web -null: \ No newline at end of file +null: diff --git a/README.md b/README.md index e332e7c2e..df4511c55 100644 --- a/README.md +++ b/README.md @@ -6,61 +6,43 @@ _PHP in WebAssembly, npm not required._ -## [npm](https://npmjs.com/package/php-wasm) | [github](https://github.com/seanmorris/php-wasm) | [unpkg](https://unpkg.com/browse/php-wasm/) | [reddit](https://www.reddit.com/r/phpwasm) | [discord](https://discord.gg/j8VZzju7gJ) - +[npm](https://npmjs.com/package/php-wasm) | [github](https://github.com/seanmorris/php-wasm) | [unpkg](https://unpkg.com/browse/php-wasm/) | [reddit](https://www.reddit.com/r/phpwasm) | [discord](https://discord.gg/j8VZzju7gJ) + +## 📦 Current Packages -## 🌟 v0.0.9-alpha - Aiming for the (GitHub) Stars - -* Adding PHP-CGI & PH-DBG support! -* Faster build time! -* Runtime extension loading! -* libicu, freetype, zlib, gd, libpng, libjpeg, openssl, & phar support. -* php-wasm, php-cgi-wasm, & php-wasm-builder are now separate packages. -* [Vrzno](https://github.com/seanmorris/vrzno) now facilitates url fopen via the fetch() api. -* [pdo_cfd1](https://github.com/seanmorris/pdo-cfd1) is now a separate extension from Vrzno. -* [pdo_pglite](https://github.com/seanmorris/pdo-pglite) adds local Postgres support. -* SQLite is now using version 3.46. -* Demos for CodeIgniter, CakePHP, Laravel & Laminas. -* Drupal & all other demos now use standard build + zip install. -* Modules are now webpack-compatible out of the box. -* Exposing FS methods w/queueing & locking to sync files between tabs & workers. -* Fixed the bug with POST requests under Firefox. -* Adding support for PHP 8.3.11 & 8.4.1. -* Automatic CI testing for PHP 8.0, 8.1, 8.2, 8.3, & 8.4. +* `php-wasm`, `php-cgi-wasm`, `php-cli-wasm`, `php-dbg-wasm`, and `php-wasm-builder` are published separately. +* Published runtimes currently cover PHP `8.0` through `8.5`, depending on the package and entrypoint. +* `php-wasm`, `php-cgi-wasm`, and `php-dbg-wasm` currently default to PHP `8.4`; `php-cli-wasm` currently defaults to PHP `8.3`. Pass `version` explicitly when your asset filenames need to line up. +* Runtime-loadable libraries are available for `gd`, `iconv`, `intl`, `libxml`, `xml`, `dom`, `simplexml`, `yaml`, `zip`, `mbstring`, `openssl`, `phar`, `sqlite`, and `zlib`. +* [Vrzno](https://github.com/seanmorris/vrzno), [pdo_cfd1](https://github.com/seanmorris/pdo-cfd1), and [pdo_pglite](https://github.com/seanmorris/pdo-pglite) are maintained as separate packages. [changelog](https://raw.githubusercontent.com/seanmorris/php-wasm/master/CHANGELOG.md) -Installing php-wasm: - -```sh -$ npm i php-wasm@alpha -``` - -Installing php-cgi-wasm: - -```sh -$ npm i php-cgi-wasm@alpha -``` -Installing php-wasm-builder: +Install the packages you need: ```sh -$ npm i php-wasm-builder@alpha +$ npm i php-wasm +$ npm i php-cgi-wasm +$ npm i php-cli-wasm +$ npm i php-dbg-wasm +$ npm i php-wasm-builder ``` ## ☀️ Examples @@ -130,7 +112,7 @@ $ npm i php-wasm-builder@alpha ## 🎩 Introducing php-cgi-wasm! -Version 0.0.9 adds `php-cgi-wasm` to the mix. This allows you to run php in web-server mode, similar to how it runs under apache or nginx. Running within a Service Worker, it can intercept and respond to HTTP requests just like a normal webserver. This means the browser can simply navigate to a URL, and PHP will generate the page, and everything will work as-normal, AJAX and all. From the perspective of the webpage, its just making HTTP requests. Its not worried about whether the PHP runs on the server or in a Service Worker. +`php-cgi-wasm` runs PHP in web-server mode, similar to Apache or nginx. Running within a Service Worker, it can intercept and respond to HTTP requests just like a normal web server. This means the browser can simply navigate to a URL and let PHP generate the page, with AJAX and other in-page requests still flowing over normal HTTP. ### Install the php-cgi-wasm package @@ -163,9 +145,9 @@ self.addEventListener('fetch', event => php.handleFetchEvent(event)); self.addEventListener('message', event => php.handleMessageEvent(event)); ``` -You can see examples of php-cgi-wasm running in a service worker and nodejs in [`demo-web/src/cgi-worker.mjs`](demo-web/src/cgi-worker.mjs) & [`demo-node/index.mjs`](demo-node/index.mjs) respectively. +You can see examples of `php-cgi-wasm` running in a service worker and Node.js in [`demo-web/src/cgi-worker.mjs`](demo-web/src/cgi-worker.mjs) and [`demo-node/index.mjs`](demo-node/index.mjs) respectively. -***Note:*** `php-cgi-wasm` & `php-wasm` are separate packages. One "embeds" php right into your javascript, the other runs in "cgi-mode," just like php would under apache or nginx. +***Note:*** `php-cgi-wasm` and `php-wasm` are separate packages. One embeds PHP directly into your JavaScript runtime; the other runs in CGI mode, like PHP under Apache or nginx. You can find documentation specific to php-cgi-wasm [here](packages/php-cgi-wasm). @@ -177,14 +159,7 @@ Install php-wasm with npm: $ npm install php-wasm ``` -Include the module in your preferred format: - -### Common JS - -```javascript -const { PhpWeb } = require('php-wasm/PhpWeb.js'); -const php = new PhpWeb; -``` +Include the module: ### ESM @@ -207,33 +182,47 @@ const php = new PhpWeb; ##### unpkg ```javascript -const { PhpWeb } = await import('https://www.unpkg.com/php-wasm/php-wasm/PhpWeb.mjs'); +const { PhpWeb } = await import('https://unpkg.com/php-wasm/PhpWeb.mjs'); const php = new PhpWeb; ``` #### Pre-Packaged Static Assets: -If you're using a bundler, use the vendor's documentation to learn how to move the files matching the following pattern to your public directory: +If you're using a bundler, use the vendor's documentation to move the versioned `.wasm` file that matches the runtime, PHP version, and module format you import. For example: ```bash -node_modules/php-wasm/php-web.mjs.wasm -node_modules/php-wasm/php-worker.mjs.wasm # ONLY if you're running the standard build in a worker +node_modules/php-wasm/php8.4-web.mjs.wasm +node_modules/php-wasm/php8.4-worker.mjs.wasm # ONLY if you're running the standard build in a worker ``` -For php-cgi-wasm: +For `php-cgi-wasm`: + ```bash -node_modules/php-cgi-wasm/php-cgi-worker.mjs.wasm -node_modules/php-cgi-wasm/php-cgi-web.mjs.wasm # ONLY if you're running the cgi build in a page +node_modules/php-cgi-wasm/php8.4-cgi-node.mjs.wasm # ONLY if you're running the CGI build in Node.js +node_modules/php-cgi-wasm/php8.4-cgi-worker.mjs.wasm # ONLY if you're running the CGI build in a worker ``` +If you import a different runtime version, copy the matching `php8.x-*.mjs.wasm` file as well. + +Core Node runtimes support both ESM and CommonJS. + +For `0.1.0`, use the published entrypoints across the runtime packages: + +- `php-wasm/PhpNode` +- `php-cgi-wasm/PhpCgiNode` +- `php-cli-wasm/PhpCliNode` +- `php-dbg-wasm/PhpDbgNode` + +Browser/runtime helper entrypoints such as `PhpWeb` and `php-tags` remain ESM-first. + ## 🍎 Quickstart ### Inline PHP -Include the `php-tags.js` script from a CDN: +Include the `php-tags` module from a CDN: ```html - + ``` And run some PHP right in the page! @@ -245,10 +234,10 @@ And run some PHP right in the page!
``` -Inline php can use standard input, output and error with `data-` attributes. Just set the value of the attribute to a selector that will match that tag. +Inline PHP can use standard input, output, and error with `data-` attributes. Set each attribute value to a selector that matches the corresponding element. ```html - + @@ -265,7 +254,7 @@ The `src` attribute can be used on ` + @@ -281,19 +270,19 @@ The `src` attribute can be used on ` + ``` ##### Unpkg ```html - + ``` ## 🥤 Running PHP & Taking Output @@ -336,16 +325,18 @@ const exitCode = await php.run(' + ``` +The example above assumes the default `php-tags` runtime version (`8.4`). If you set `data-version` to something else, update the `php8.x-*.so` filenames to match. + ## ⚙️ Configuration You can pass in the `ini` property to the constructor to add lines to `/php.ini`: @@ -382,7 +373,7 @@ PHP will replace strings in INI files in the form `${ENVIRONMENT_VARIABLE}` with extension=php${PHP_VERSION}-phar.so ``` -Remember to correctly escape the `$` if you're supplying the INI from Javascript with ``backtics``: +Remember to correctly escape the `$` if you're supplying the INI from JavaScript with backticks: ```javascript const php = new PhpWeb({ini: ` @@ -395,12 +386,13 @@ const php = new PhpWeb({ini: ` ### Loading extensions at runtime -The following extensions may be loaded at runtime. This allows the shared extension & their dependencies to be cached, re-used, and selected a-la-carte for each application. +The following extensions may be loaded at runtime. This allows the shared extensions and their dependencies to be cached, reused, and selected a la carte for each application. * gd (https://www.npmjs.com/package/php-wasm-gd) * iconv (https://www.npmjs.com/package/php-wasm-iconv) * intl (https://www.npmjs.com/package/php-wasm-intl) -* xml (https://www.npmjs.com/package/php-wasm-libxml) +* libxml (https://www.npmjs.com/package/php-wasm-libxml) +* xml (https://www.npmjs.com/package/php-wasm-xml) * dom (https://www.npmjs.com/package/php-wasm-dom) * simplexml (https://www.npmjs.com/package/php-wasm-simplexml) * yaml (https://www.npmjs.com/package/php-wasm-libyaml) @@ -416,25 +408,27 @@ There are two ways to load extensions at runtime, using the `dl()` function or ` ```php `/my/static/path/${filename}`}); ### IDBFS (Web & Worker) -To use IDBFS in PhpWeb, pass a `persist` object with a `mountPath` key. +To use IDBFS in `PhpWeb`, pass a `persist` object with a `mountPath` key. `mountPath` will be used as the path to the persistent directory within the PHP environment. @@ -559,17 +589,23 @@ const { PhpWeb } = await import('https://cdn.jsdelivr.net/npm/php-wasm/PhpWeb.mj const php = new PhpWeb({persist: {mountPath: '/persist'}}); ``` -### NodeFS (NodeJS Only) +### NodeFS (Node.js Only) -To use NodeFS in PhpWeb, pass a `persist` object with `mountPath` & `localPath` keys. +To use NodeFS in `PhpNode`, pass a `persist` object with `mountPath` and `localPath` keys. `localPath` will be used as the path to the HOST directory to expose to PHP. `mountPath` will be used as the path to the persistent directory within the PHP environment. ```javascript -const { PhpNode } = await import('https://cdn.jsdelivr.net/npm/php-wasm/PhpNode.mjs'); +import path from 'node:path'; +import { PhpNode } from 'php-wasm/PhpNode'; -const php = new PhpNode({persist: {mountPath: '/persist', localPath: '~/your-files'}}); +const php = new PhpNode({ + persist: { + mountPath: '/persist', + localPath: path.join(process.cwd(), 'persist'), + } +}); ``` ## 📁 Filesystem Operations @@ -595,7 +631,7 @@ await php.analyzePath(path); #### php.readdir -Get a list of files and folders in or directory. +Get a list of files and folders in a directory. ```javascript await php.readdir(path); @@ -642,7 +678,7 @@ await php.rmdir(path); Delete a file. ```javascript -await php.rmdir(path); +await php.unlink(path); ``` #### php.rename @@ -669,11 +705,11 @@ await php.writeFile(path, data, {encoding: 'utf8'}); **Web and Worker only!** -The web and worker build use `navigator.locks.request` to request a lock named `php-wasm-fs-lock` before performing filesystem operations. This ensure multiple tabs & the service worker can interact with the filesystem without overwriting eachother's work. Before any FS operation takes place, the entire FS is loaded from IDBFS, and before the lock is released, the entire FS is laoded BACK into IDBFS. +The web and worker builds use `navigator.locks.request` to request a lock named `php-wasm-fs-lock` before performing filesystem operations. This ensures multiple tabs and the service worker can interact with the filesystem without overwriting each other's work. Before any filesystem operation takes place, the entire FS is loaded from IDBFS, and before the lock is released, the entire FS is loaded back into IDBFS. -The operations are enqueued asyncronously, **so if multiple requests are generated before one transaction closes, they will be batched automatically.** This also applies to multiple requests generated before the lock is acquired. There is generally no need to take explicit control of FS mirroring. +The operations are enqueued asynchronously, **so if multiple requests are generated before one transaction closes, they will be batched automatically.** This also applies to multiple requests generated before the lock is acquired. There is generally no need to take explicit control of FS mirroring. -To suppress this behavior and take explicit control of the FS mirroring, you can pass the `{autoTransaction: false}` option to the constructor. Doing this will require you to call `php.startTransaction()` before any FS operations take place, and then`php.commitTransaction()` when you're done. **Using this incorrectly may leave your filesystem in a corrupted state.** +To suppress this behavior and take explicit control of FS mirroring, you can pass the `{autoTransaction: false}` option to the constructor. Doing this requires you to call `php.startTransaction()` before any FS operations take place, and then `php.commitTransaction()` when you're done. **Using this incorrectly may leave your filesystem in a corrupted state.** #### php.startTransaction @@ -689,9 +725,9 @@ await php.commitTransaction(); ### msg-bus -There is a `msg-bus` module supplied by `php-cgi-wasm` as a helper to communicate with php running inside a worker. The module exposes two functions: `sendMessageFor` and `onMessage`. +There is a `msg-bus` module supplied by `php-cgi-wasm` as a helper to communicate with PHP running inside a worker. The module exposes two functions: `sendMessageFor` and `onMessage`. -This allows you to simply `await` the result of calls to file system methods (see above) on the service worker: +This lets you simply `await` the result of calls to filesystem methods (see above) on the service worker: ```javascript const result = await sendMessage(methodName, [param, param, param]); @@ -703,7 +739,7 @@ const result = await sendMessage(methodName, [param, param, param]); * Use `sendMessageFor` to **GENERATE A FUNCTION** that you can use to send messages to your service worker. ```javascript -import { onMessage, sendMessageFor } from `php-cgi-wasm/msg-bus`; +import { onMessage, sendMessageFor } from 'php-cgi-wasm/msg-bus'; const SERVICE_WORKER_SCRIPT_URL = '/cgi-worker.mjs'; @@ -782,7 +818,7 @@ $ php-wasm-builder build web cgi mjs $ php-wasm-builder build worker cgi mjs ``` -This will build the package inside of the current directory (or in `PHP_DIST_DIR`, *see below for more info.*) +This will build the package inside the current directory (or in `PHP_DIST_DIR`, *see below for more info.*) ### .php-wasm-rc @@ -790,7 +826,7 @@ You can also create a `.php-wasm-rc` file in this directory to customize the bui ```make # Select a PHP version -PHP_VERSION=8.3 +PHP_VERSION=8.4 # Build the package to a directory other than the current one (RELATIVE path) PHP_DIST_DIR=./public @@ -816,7 +852,7 @@ INITIAL_MEMORY=2048MB ASSERTIONS=0 # Select the optimization level -OPTIMIZATION=3 +OPTIMIZE=3 # Build with extensions WITH_GD=1 @@ -833,19 +869,19 @@ The following options may appear in `.php-wasm-rc`. ##### PHP_VERSION -8.0|8.1|8.2|**8.3** +8.0|8.1|8.2|8.3|**8.4**|8.5 --- ##### PHP_DIST_DIR -This is the directory where javascript & wasm files will be built to, *relative to the current directory.* +This is the directory where JavaScript and wasm files will be built, *relative to the current directory.* --- ##### PHP_ASSET_DIR -This is the directory where shared libs, extension, `.data` files & other supporting files will be built to, *relative to the current directory.* Defaults to `PHP_DIST_DIR`. +This is the directory where preload `.data` / `.dat` files and other supporting assets will be built, *relative to the current directory.* Shared libraries and side modules remain in their owning packages. Defaults to `PHP_DIST_DIR`. --- @@ -857,7 +893,7 @@ The optimization level to use while compiling. --- -##### SUBOPTIMIZE +##### SUB_OPTIMIZE The optimization level to use while compiling libraries. Defaults to `OPTIMIZE`. @@ -887,7 +923,7 @@ As stated above, extensions may be compiled as `dynamic`, `shared`, or `static`. (defaults provided below in **bold**) -The following options are availavle for building static PHP extensions: +The following options are available for building static PHP extensions: ``` WITH_BCMATH # [0, 1] Enabled by default @@ -897,9 +933,10 @@ WITH_EXIF # [0, 1] Enabled by default WITH_FILTER # [0, 1] Enabled by default WITH_TOKENIZER # [0, 1] Enabled by default WITH_VRZNO # [0, 1] Enabled by default +WITH_WAITLINE # [0, 1] Disabled by default in raw custom builds ``` -The following extension may be compiled as static, shared or dynamic: +The following extensions may be compiled as static, shared, or dynamic: ``` WITH_PHAR # [0, 1, static, dynamic] @@ -937,9 +974,9 @@ When compiled as a `dynamic` extension, this will produce the extension file `ph static|**shared** -This actual `php-libxml` extension must be statically compiled, but `libxml` itself may be loaded as a shared library. +The `libxml` extension itself must be statically compiled, but `libxml2` may be loaded as a shared library. -When compiled as a `shared` library, it will produce the library `libxml.so`. +When compiled as a `shared` library, it will produce the library `libxml2.so`. --- @@ -947,7 +984,7 @@ When compiled as a `shared` library, it will produce the library `libxml.so`. static|shared|**dynamic** -When compiled as a `dynamic` extension, this will produce the extension `php-8.x-zip.so`. +When compiled as a `dynamic` extension, this will produce the extension `php8.x-zip.so`. When compiled as a `dynamic` or `shared` extension, it will produce the library `libzip.so`. @@ -959,7 +996,7 @@ This extension depends on `zlib`. static|shared|**dynamic** -When compiled as a `dynamic` extension, this will produce the extension `php-8.x-iconv.so`. +When compiled as a `dynamic` extension, this will produce the extension `php8.x-iconv.so`. When compiled as a `dynamic` or `shared` extension, it will produce the library `libiconv.so`. @@ -969,7 +1006,7 @@ When compiled as a `dynamic` or `shared` extension, it will produce the library static|shared|**dynamic** -When compiled as a `dynamic` extension, this will produce the extensions `php-8.x-sqlite.so`, & `php-8.x-pdo-sqlite.so`. +When compiled as a `dynamic` extension, this will produce the extensions `php8.x-sqlite.so` and `php8.x-pdo-sqlite.so`. When compiled as a `dynamic` or `shared` extension, it will produce the library `libsqlite3.so`. @@ -979,9 +1016,9 @@ When compiled as a `dynamic` or `shared` extension, it will produce the library static|**dynamic** -This extenstion makes use of `freetype`, `libjpeg`, `libpng`, & `zlib`. +This extension makes use of `freetype`, `libjpeg`, `libpng`, and `zlib`. -When compiled as a `dynamic` extension, this will produce the extension `php-8.x-gd.so`. +When compiled as a `dynamic` extension, this will produce the extension `php8.x-gd.so`. ###### WITH_LIBPNG @@ -1013,7 +1050,7 @@ If WITH_GD is dynamic, then loading will be deferred until after gd is loaded. static|shared|**dynamic** -When compiled as a `dynamic` extension, this will produce the extension `php-8.x-zlib.so`. +When compiled as a `dynamic` extension, this will produce the extension `php8.x-zlib.so`. When compiled as a `dynamic` or `shared` extension, it will produce the library `libz.so`. @@ -1023,7 +1060,7 @@ When compiled as a `dynamic` or `shared` extension, it will produce the library static|shared|**dynamic** -When compiled as a `dynamic` extension, this will produce the extension `php-8.x-yaml.so`. +When compiled as a `dynamic` extension, this will produce the extension `php8.x-yaml.so`. When compiled as a `dynamic` or `shared` extension, it will produce the library `libyaml.so`. @@ -1033,7 +1070,7 @@ When compiled as a `dynamic` or `shared` extension, it will produce the library static|shared|**dynamic** -When compiled as a `dynamic` extension, this will produce the extension `php-8.x-tidy.so`. +When compiled as a `dynamic` extension, this will produce the extension `php8.x-tidy.so`. When compiled as a `dynamic` or `shared` extension, it will produce the library `libtidy.so`. @@ -1043,7 +1080,7 @@ When compiled as a `dynamic` or `shared` extension, it will produce the library static|**dynamic** -When compiled as a `dynamic` extension, this will produce the extension `php-8.x-mbstring.so`. +When compiled as a `dynamic` extension, this will produce the extension `php8.x-mbstring.so`. --- @@ -1053,7 +1090,7 @@ static|shared|**dynamic** Support library for `mbstring`. -When compiled as a `dynamic` or `shared ` library, this will produce the library `libonig.so`. +When compiled as a `dynamic` or `shared` library, this will produce the library `libonig.so`. If `WITH_MBSTRING` is `dynamic`, then loading will be deferred until after `mbstring` is loaded. @@ -1063,7 +1100,7 @@ If `WITH_MBSTRING` is `dynamic`, then loading will be deferred until after `mbst shared|**dynamic** -When compiled as a `dynamic` extension, this will produce the extension `php-8.x-openssl`. +When compiled as a `dynamic` extension, this will produce the extension `php8.x-openssl.so`. When compiled as a `dynamic` or `shared` extension, it will produce the libraries `libssl.so` & `libcrypto.so`. @@ -1071,7 +1108,7 @@ When compiled as a `dynamic` or `shared` extension, it will produce the librarie static|shared|**dynamic** -When compiled as a `dynamic`, or `shared` extension, this will produce the extension `php-8.x-intl.so` & the following libraries: +When compiled as a `dynamic` or `shared` extension, this will produce the extension `php8.x-intl.so` and the following libraries: * libicuuc.so * libicutu.so @@ -1087,7 +1124,7 @@ When compiled as a `dynamic`, or `shared` extension, this will produce the exten #### php-wasm-builder build -Use this to build custom version of php-wasm. Its recommended to build this to an empty directory using a `.php-wasm-rc` file. +Use this to build a custom version of `php-wasm`. It's recommended to build into an empty directory using a `.php-wasm-rc` file. ```bash npx php-wasm-builder build @@ -1103,7 +1140,7 @@ npx php-wasm-builder image #### php-wasm-builder copy-assets -This will scan the current package's node_modules directory for shared libraries & supporting files, and copy them to `PHP_ASSET_DIR`. +This will scan the current package's `node_modules` directory for supporting data files, and copy them to `PHP_ASSET_DIR`. You can use this with `.php-wasm-rc` to copy assets even if you're not using a custom build. @@ -1113,7 +1150,7 @@ npx php-wasm-builder copy-assets #### php-wasm-builder build-assets -Similar to `copy-assets`, but will actually compile the shared libaries, then copy them to `PHP_ASSET_DIR`. +Similar to `copy-assets`, but will build the supporting asset files described by `.php-wasm-rc`, then copy them to `PHP_ASSET_DIR`. You can use this with `.php-wasm-rc` to copy assets even if you're not using a custom build. diff --git a/bin/docs-snippet-report.js b/bin/docs-snippet-report.js new file mode 100644 index 000000000..72a2b4f64 --- /dev/null +++ b/bin/docs-snippet-report.js @@ -0,0 +1,10 @@ +#!/usr/bin/env node + +(async () => { + const { buildDocsCoverageReport } = await import('../test/docs/report.mjs'); + const report = await buildDocsCoverageReport(); + process.stdout.write(JSON.stringify(report, null, 2) + '\n'); +})().catch(error => { + console.error(error); + process.exit(1); +}); diff --git a/bin/translate-test.js b/bin/translate-test.js index 9d652ef4f..8e8af9e73 100644 --- a/bin/translate-test.js +++ b/bin/translate-test.js @@ -5,6 +5,7 @@ const { parseArgs } = require('node:util'); const parsedArgs = parseArgs({allowPositionals:true, options: { file: { type: 'string' } , phpVersion: { type: 'string' } + , libType: { type: 'string', default: 'shared' } , buildType: { type: 'string', default: 'shared' } }}).values; @@ -36,6 +37,7 @@ async function translate() console.log(`import { test } from 'node:test'; import { strict as assert } from 'node:assert'; import { PhpNode } from '../../../packages/php-wasm/PhpNode.mjs'; +import { nodeRuntimeOptions } from '../../../test/lib/node-runtime-options.mjs'; test(${JSON.stringify(String(sections.TEST).trim())}, async () => { const sharedLibs = []; @@ -50,7 +52,7 @@ test(${JSON.stringify(String(sections.TEST).trim())}, async () => { const files = []; process.env.WITH_INTL === 'dynamic' && files.push({parent: '/preload/', name: 'icudt72l.dat', url: './node_modules/php-wasm-intl/icudt72l.dat'}); - const php = new PhpNode( { sharedLibs, files, persist: { mountPath: '/persist', localPath: process.cwd() + '/test/' } } ); + const php = new PhpNode(nodeRuntimeOptions({ sharedLibs, files, persist: { mountPath: '/persist', localPath: process.cwd() + '/test/' } })); let stdOut = '', stdErr = ''; diff --git a/demo-node/get-symbols.mjs b/demo-node/get-symbols.mjs index 7df069837..6400c512b 100644 --- a/demo-node/get-symbols.mjs +++ b/demo-node/get-symbols.mjs @@ -2,44 +2,8 @@ import { PhpNode } from 'php-wasm/PhpNode.mjs'; import fs from 'node:fs'; -const sharedLibs = []; -const buildType = process.env.BUILD_TYPE ?? 'dynamic'; - -if(buildType === 'static') -{ - sharedLibs.push( - {name: 'libcrypto.so', url: new URL('node_modules/php-wasm-openssl/libcrypto.so', import.meta.url)}, - {name: 'libssl.so', url: new URL('node_modules/php-wasm-openssl/libssl.so', import.meta.url)}, - ); -} -else if(buildType === 'shared') -{ - sharedLibs.push( - {name: 'libxml2.so', url: new URL('node_modules/php-wasm-libxml/libxml2.so', import.meta.url)}, - - {name: 'libz.so', url: new URL('node_modules/php-wasm-zlib/libz.so', import.meta.url)}, - {name: 'libzip.so', url: new URL('node_modules/php-wasm-libzip/libzip.so', import.meta.url)}, - {name: 'libfreetype.so', url: new URL('node_modules/php-wasm-gd/libfreetype.so', import.meta.url)}, - {name: 'libjpeg.so', url: new URL('node_modules/php-wasm-gd/libjpeg.so', import.meta.url)}, - {name: 'libwebp.so', url: new URL('node_modules/php-wasm-gd/libwebp.so', import.meta.url)}, - {name: 'libpng.so', url: new URL('node_modules/php-wasm-gd/libpng.so', import.meta.url)}, - {name: 'libiconv.so', url: new URL('node_modules/php-wasm-iconv/libiconv.so', import.meta.url)}, - {name: 'libicuuc.so', url: new URL('node_modules/php-wasm-intl/libicuuc.so', import.meta.url)}, - {name: 'libicutu.so', url: new URL('node_modules/php-wasm-intl/libicutu.so', import.meta.url)}, - {name: 'libicutest.so', url: new URL('node_modules/php-wasm-intl/libicutest.so', import.meta.url)}, - {name: 'libicuio.so', url: new URL('node_modules/php-wasm-intl/libicuio.so', import.meta.url)}, - {name: 'libicui18n.so', url: new URL('node_modules/php-wasm-intl/libicui18n.so', import.meta.url)}, - {name: 'libicudata.so', url: new URL('node_modules/php-wasm-intl/libicudata.so', import.meta.url)}, - {name: 'libcrypto.so', url: new URL('node_modules/php-wasm-openssl/libcrypto.so', import.meta.url)}, - {name: 'libssl.so', url: new URL('node_modules/php-wasm-openssl/libssl.so', import.meta.url)}, - {name: 'libonig.so', url: new URL('node_modules/php-wasm-mbstring/libonig.so', import.meta.url)}, - {name: 'libsqlite3.so', url: new URL('node_modules/php-wasm-sqlite/libsqlite3.so', import.meta.url)}, - {name: 'libtidy.so', url: new URL('node_modules/php-wasm-tidy/libtidy.so', import.meta.url)}, - {name: 'libyaml.so', url: new URL('node_modules/php-wasm-yaml/libyaml.so', import.meta.url)}, - ); -} const [version, envName] = process.argv.slice(2); -const php = new PhpNode({version, envName, sharedLibs, buildType}); +const php = new PhpNode({ version, envName }); php.addEventListener('output', event => console.log(event.detail.map(line => line.replace(/\s+$/, '')).join(''))); php.addEventListener('error', event => console.log(event.detail.map(line => line.replace(/\s+$/, '')).join(''))); diff --git a/demo-node/index.mjs b/demo-node/index.mjs index 6af260708..93d17d910 100755 --- a/demo-node/index.mjs +++ b/demo-node/index.mjs @@ -2,10 +2,10 @@ import http from 'node:http'; import { PhpCgiNode } from 'php-cgi-wasm/PhpCgiNode.mjs'; -const buildType = process.env.BUILD_TYPE ?? 'dynamic'; +const libType = process.env.LIB_TYPE ?? process.env.BUILD_TYPE ?? 'dynamic'; const sharedLibs = []; -if(buildType === 'dynamic') +if(libType === 'dynamic') { sharedLibs.push( await import('php-wasm-intl') @@ -21,39 +21,31 @@ if(buildType === 'dynamic') , await import('php-wasm-gd') ); } -else if(buildType === 'shared') +else if(libType === 'shared') { sharedLibs.push( - {name: 'libxml2.so', url: new URL('php-wasm-libxml/libxml2.so', import.meta.url)}, - {name: 'libz.so', url: new URL('php-wasm-zlib/libz.so', import.meta.url)}, - {name: 'libzip.so', url: new URL('php-wasm-libzip/libzip.so', import.meta.url)}, - {name: 'libfreetype.so', url: new URL('php-wasm-gd/libfreetype.so', import.meta.url)}, - {name: 'libjpeg.so', url: new URL('php-wasm-gd/libjpeg.so', import.meta.url)}, - {name: 'libwebp.so', url: new URL('php-wasm-gd/libwebp.so', import.meta.url)}, - {name: 'libpng.so', url: new URL('php-wasm-gd/libpng.so', import.meta.url)}, - {name: 'libiconv.so', url: new URL('php-wasm-iconv/libiconv.so', import.meta.url)}, - {name: 'libicuuc.so', url: new URL('php-wasm-intl/libicuuc.so', import.meta.url)}, - {name: 'libicutu.so', url: new URL('php-wasm-intl/libicutu.so', import.meta.url)}, - {name: 'libicutest.so', url: new URL('php-wasm-intl/libicutest.so', import.meta.url)}, - {name: 'libicuio.so', url: new URL('php-wasm-intl/libicuio.so', import.meta.url)}, - {name: 'libicui18n.so', url: new URL('php-wasm-intl/libicui18n.so', import.meta.url)}, - {name: 'libicudata.so', url: new URL('php-wasm-intl/libicudata.so', import.meta.url)}, - {name: 'libcrypto.so', url: new URL('php-wasm-openssl/libcrypto.so', import.meta.url)}, - {name: 'libssl.so', url: new URL('php-wasm-openssl/libssl.so', import.meta.url)}, - {name: 'libonig.so', url: new URL('php-wasm-mbstring/libonig.so', import.meta.url)}, - {name: 'libsqlite3.so', url: new URL('php-wasm-sqlite/libsqlite3.so', import.meta.url)}, - {name: 'libtidy.so', url: new URL('php-wasm-tidy/libtidy.so', import.meta.url)}, - {name: 'libyaml.so', url: new URL('php-wasm-yaml/libyaml.so', import.meta.url)}, + {name: 'libxml2.so', url: new URL('node_modules/php-wasm-libxml/libxml2.so', import.meta.url)}, + {name: 'libz.so', url: new URL('node_modules/php-wasm-zlib/libz.so', import.meta.url)}, + {name: 'libzip.so', url: new URL('node_modules/php-wasm-libzip/libzip.so', import.meta.url)}, + {name: 'libfreetype.so', url: new URL('node_modules/php-wasm-gd/libfreetype.so', import.meta.url)}, + {name: 'libjpeg.so', url: new URL('node_modules/php-wasm-gd/libjpeg.so', import.meta.url)}, + {name: 'libwebp.so', url: new URL('node_modules/php-wasm-gd/libwebp.so', import.meta.url)}, + {name: 'libpng.so', url: new URL('node_modules/php-wasm-gd/libpng.so', import.meta.url)}, + {name: 'libiconv.so', url: new URL('node_modules/php-wasm-iconv/libiconv.so', import.meta.url)}, + {name: 'libicuuc.so', url: new URL('node_modules/php-wasm-intl/libicuuc.so', import.meta.url)}, + {name: 'libicutu.so', url: new URL('node_modules/php-wasm-intl/libicutu.so', import.meta.url)}, + {name: 'libicutest.so', url: new URL('node_modules/php-wasm-intl/libicutest.so', import.meta.url)}, + {name: 'libicuio.so', url: new URL('node_modules/php-wasm-intl/libicuio.so', import.meta.url)}, + {name: 'libicui18n.so', url: new URL('node_modules/php-wasm-intl/libicui18n.so', import.meta.url)}, + {name: 'libicudata.so', url: new URL('node_modules/php-wasm-intl/libicudata.so', import.meta.url)}, + {name: 'libcrypto.so', url: new URL('node_modules/php-wasm-openssl/libcrypto.so', import.meta.url)}, + {name: 'libssl.so', url: new URL('node_modules/php-wasm-openssl/libssl.so', import.meta.url)}, + {name: 'libonig.so', url: new URL('node_modules/php-wasm-mbstring/libonig.so', import.meta.url)}, + {name: 'libsqlite3.so', url: new URL('node_modules/php-wasm-sqlite/libsqlite3.so', import.meta.url)}, + {name: 'libtidy.so', url: new URL('node_modules/php-wasm-tidy/libtidy.so', import.meta.url)}, + {name: 'libyaml.so', url: new URL('node_modules/php-wasm-yaml/libyaml.so', import.meta.url)}, ); } -if(buildType === 'static') -{ - sharedLibs.push( - {name: 'libcrypto.so', url: (new URL('php-wasm-openssl/libcrypto.so', import.meta.url))}, - {name: 'libssl.so', url: (new URL('php-wasm-openssl/libssl.so', import.meta.url))}, - ); -} - const php = new PhpCgiNode({ version: process.env.PHP_VERSION ?? '8.3' , sharedLibs diff --git a/demo-node/persist/symbols.php b/demo-node/persist/symbols.php index 5a2a6cd45..72a7362f6 100644 --- a/demo-node/persist/symbols.php +++ b/demo-node/persist/symbols.php @@ -1,11 +1,5 @@ import { Php } from '../Php.mjs'; -const sharedLibs = [ - - {name: 'libcrypto.so', url: new URL('php-wasm-openssl/libcrypto.so', import.meta.url)}, - {name: 'libssl.so', url: new URL('php-wasm-openssl/libssl.so', import.meta.url)}, - -]; -const php = new Php({version: '', sharedLibs, ini: `error_reporting = E_ALL ^ E_DEPRECATED`}); +const php = new Php({version: '', ini: `error_reporting = E_ALL ^ E_DEPRECATED`}); php.addEventListener('output', event => console.log(event.detail.map(line => line.replace(/\s+$/, '')).join(''))); php.addEventListener('error', event => console.error(event.detail.map(line => line.replace(/\s+$/, '')).join(''))); $val): diff --git a/demo-web/eslint.config.mjs b/demo-web/eslint.config.mjs new file mode 100644 index 000000000..fda7cde14 --- /dev/null +++ b/demo-web/eslint.config.mjs @@ -0,0 +1,102 @@ +/** + * ESLint flat-config for the demo-web app, tests, and build scripts. + */ +import js from '@eslint/js'; +import globals from 'globals'; +import jsxA11y from 'eslint-plugin-jsx-a11y'; +import reactPlugin from 'eslint-plugin-react'; +import reactHooks from 'eslint-plugin-react-hooks'; +import smNoSaccadeStyle from 'sm-no-saccade-style'; + +const [smRecommended] = smNoSaccadeStyle.configs.recommended; + +/** + * Source files that should be linted with the browser-and-JSX rule set. + */ +const appFiles = ['src/**/*.{js,mjs}']; + +export default [ + js.configs.recommended + , { + ignores: [ + 'build/**' + , 'coverage/**' + , 'public/**' + ] + } + , { + files: appFiles + , languageOptions: { + ecmaVersion: 'latest' + , sourceType: 'module' + , parserOptions: { + ecmaFeatures: { + jsx: true + } + } + , globals: { + ...globals.browser + , ...globals.serviceworker + } + } + , plugins: { + react: reactPlugin + , 'react-hooks': reactHooks + , 'jsx-a11y': jsxA11y + } + , settings: { + react: { + version: 'detect' + } + } + , rules: { + ...reactPlugin.configs.recommended.rules + , ...reactPlugin.configs['jsx-runtime'].rules + , ...jsxA11y.configs.recommended.rules + , 'react-hooks/rules-of-hooks': 'error' + , 'react-hooks/exhaustive-deps': 'warn' + , 'no-case-declarations': 'off' + , 'no-constant-binary-expression': 'off' + , 'no-empty': 'off' + , 'no-unused-vars': 'warn' + , 'react/display-name': 'off' + , 'react/jsx-no-target-blank': 'warn' + , 'react/prop-types': 'off' + , 'jsx-a11y/alt-text': 'warn' + , 'jsx-a11y/anchor-is-valid': 'off' + , 'jsx-a11y/click-events-have-key-events': 'off' + , 'jsx-a11y/label-has-associated-control': 'off' + , 'jsx-a11y/no-autofocus': 'off' + , 'jsx-a11y/no-noninteractive-element-interactions': 'off' + , 'jsx-a11y/no-noninteractive-tabindex': 'off' + , 'jsx-a11y/no-static-element-interactions': 'off' + } + } + , { + files: ['src/**/*.test.{js,mjs}'] + , languageOptions: { + globals: { + ...globals.browser + , ...globals.vitest + } + } + } + , { + files: ['eslint.config.mjs', 'vite.config.mjs', 'vite.worker.config.mjs'] + , languageOptions: { + ecmaVersion: 'latest' + , sourceType: 'module' + , globals: globals.node + } + } + , { + ...smRecommended + , files: [ + 'eslint.config.mjs' + , 'vite.config.mjs' + , 'vite.worker.config.mjs' + , 'src/**/*.{js,mjs}' + , 'test/**/*.{js,mjs}' + ] + } +]; diff --git a/demo-web/npm-build.sh b/demo-web/npm-build.sh index 820358165..86dee4425 100755 --- a/demo-web/npm-build.sh +++ b/demo-web/npm-build.sh @@ -2,6 +2,9 @@ set -eux; +export VITE_LIB_TYPE="${VITE_LIB_TYPE:-${LIB_TYPE:-${VITE_BUILD_TYPE:-${BUILD_TYPE:-}}}}" +export VITE_BUILD_TYPE="${VITE_BUILD_TYPE:-${VITE_LIB_TYPE}}" + if [ -d 'public/static/media/mapped' ]; then { rm public/static/media/*.map || true rm -rf public/static/media/mapped @@ -21,23 +24,15 @@ rm -f public/*.map; rm -f public/*.js; rm -f public/*.so; rm -f public/*.dat; +rm -rf public/worker-assets; +rm -f public/assets/php*-web.mjs public/assets/php*-web.mjs.wasm || true rm -rf public/static/media/*.map public/static/media/mapped -GENERATE_SOURCEMAP=false NODE_OPTIONS='--max_old_space_size=8192' npx webpack --config service-worker-prod.config.ts; -GENERATE_SOURCEMAP=false NODE_OPTIONS='--max_old_space_size=8192' npx react-scripts build; - -cat aphex.txt >> build/index.html; +NODE_OPTIONS='--max_old_space_size=8192' npm run build:worker; +NODE_OPTIONS='--max_old_space_size=8192' npm run build:app; -cp build/index.html build/404.html; -cp build/index.html build/code-editor.html; -cp build/index.html build/dbg-preview.html; -cp build/index.html build/cli-preview.html; -cp build/index.html build/embedded-php.html; -cp build/index.html build/home.html; -cp build/index.html build/install-demo.html; -cp build/index.html build/select-framework.html; -cp build/index.html build/vscode.html; +node ./scripts/generate-html-aliases.cjs; # git add \ # ../docs/*.js \ diff --git a/demo-web/npm-start.sh b/demo-web/npm-start.sh index 421f3e634..845b657bd 100755 --- a/demo-web/npm-start.sh +++ b/demo-web/npm-start.sh @@ -2,6 +2,9 @@ set -eux; +export VITE_LIB_TYPE="${VITE_LIB_TYPE:-${LIB_TYPE:-${VITE_BUILD_TYPE:-${BUILD_TYPE:-}}}}" +export VITE_BUILD_TYPE="${VITE_BUILD_TYPE:-${VITE_LIB_TYPE}}" + mkdir -p public/static/media if [ -d 'public/static/media/mapped' ]; then { @@ -47,7 +50,9 @@ rm -f public/*.data; rm -f public/*.so; rm -f public/*.dat; rm -f public/*.map; +rm -rf public/worker-assets; +rm -f public/assets/php*-web.mjs public/assets/php*-web.mjs.wasm || true -NODE_OPTIONS=--max_old_space_size=4096 npx webpack --config service-worker-dev.config.ts; +NODE_OPTIONS=--max_old_space_size=4096 npm run build:worker; -react-scripts start --no-cache +npx vite --host 0.0.0.0 diff --git a/demo-web/package-lock.json b/demo-web/package-lock.json index e1f856075..1cf1aefea 100644 --- a/demo-web/package-lock.json +++ b/demo-web/package-lock.json @@ -9,9 +9,10 @@ "version": "0.0.0", "dependencies": { "@electric-sql/pglite": "0.2.17", - "@testing-library/jest-dom": "^5.17.0", - "@testing-library/react": "^13.4.0", - "@testing-library/user-event": "^13.5.0", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/react": "^16.3.0", + "@testing-library/user-event": "^14.6.1", + "ace-builds": "^1.43.6", "ansi-to-html": "^0.7.2", "pdo-pglite": "../packages/pdo-pglite", "php-cgi-wasm": "../packages/php-cgi-wasm", @@ -27,113 +28,142 @@ "php-wasm-mbstring": "../packages/mbstring", "php-wasm-openssl": "../packages/openssl", "php-wasm-phar": "../packages/phar", - "php-wasm-sdl": "../packages/sdl", "php-wasm-simplexml": "../packages/simplexml", "php-wasm-sqlite": "../packages/sqlite", "php-wasm-tidy": "../packages/tidy", "php-wasm-xml": "../packages/xml", + "php-wasm-xmlreader": "../packages/xmlreader", + "php-wasm-xmlwriter": "../packages/xmlwriter", "php-wasm-yaml": "../packages/libyaml", "php-wasm-zlib": "../packages/zlib", - "quickbus": "^0.0.0", - "react": "^18.3.1", - "react-ace-builds": "^7.4.1", - "react-dom": "^18.3.1", + "quickbus": "^1.0.1", + "react": "^19.2.0", + "react-ace": "^14.0.1", + "react-dom": "^19.2.0", "react-router-dom": "^6.23.0", - "react-scripts": "5.0.1", - "vscode-react": "^0.1.5", + "vscode-react": "^0.2.2", "web-vitals": "^2.1.4" }, "devDependencies": { - "@babel/plugin-proposal-private-property-in-object": "^7.21.11", + "@eslint/js": "^9.39.1", + "@vitejs/plugin-react": "^5.2.0", + "babel-loader": "10.1.0", "baseline-browser-mapping": "^2.9.11", - "webpack-cli": "^5.1.4" + "eslint": "^9.39.1", + "eslint-plugin-jsx-a11y": "^6.10.2", + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-react-hooks": "^7.1.1", + "globals": "^17.5.0", + "jsdom": "^27.0.1", + "sm-no-saccade-style": "^0.1.1", + "vite": "^7.3.2", + "vitest": "^4.1.5", + "webpack": "5.102.1", + "webpack-cli": "5.1.4" } }, "../packages/dom": { "name": "php-wasm-dom", - "version": "0.0.9-alpha-33" + "version": "0.1.0" }, "../packages/gd": { "name": "php-wasm-gd", - "version": "0.0.9-alpha-33" + "version": "0.1.0" }, "../packages/iconv": { "name": "php-wasm-iconv", - "version": "0.0.9-alpha-33" + "version": "0.1.0" }, "../packages/intl": { "name": "php-wasm-intl", - "version": "0.0.9-alpha-33" + "version": "0.1.0" }, "../packages/libxml": { "name": "php-wasm-libxml", - "version": "0.0.9-alpha-33" + "version": "0.1.0" }, "../packages/libyaml": { "name": "php-wasm-yaml", - "version": "0.0.9-alpha-33" + "version": "0.1.0" }, "../packages/libzip": { "name": "php-wasm-libzip", - "version": "0.0.9-alpha-33" + "version": "0.1.0" }, "../packages/mbstring": { "name": "php-wasm-mbstring", - "version": "0.0.9-alpha-33" + "version": "0.1.0" }, "../packages/openssl": { "name": "php-wasm-openssl", - "version": "0.0.9-alpha-33" + "version": "0.1.0" }, "../packages/pdo-pglite": { - "version": "0.0.9-alpha-33", + "version": "0.1.0", "optionalDependencies": { "@electric-sql/pglite": "^0.2.7" } }, "../packages/phar": { "name": "php-wasm-phar", - "version": "0.0.9-alpha-33" + "version": "0.1.0" }, "../packages/php-cgi-wasm": { - "version": "0.0.9-alpha-33", - "license": "Apache-2.0" + "version": "0.1.0", + "license": "Apache-2.0", + "engines": { + "node": ">=24.5.0" + } }, "../packages/php-cli-wasm": { - "version": "0.0.9-alpha-32", + "version": "0.1.0", "license": "Apache-2.0" }, "../packages/php-dbg-wasm": { - "version": "0.0.9-alpha-33", - "license": "Apache-2.0" + "version": "0.1.0", + "license": "Apache-2.0", + "dependencies": { + "php-wasm": "^0.1.0" + } }, "../packages/php-wasm": { - "version": "0.0.9-alpha-33", + "version": "0.1.0", "license": "Apache-2.0" }, - "../packages/sdl": { - "name": "php-wasm-sdl", - "version": "0.0.9-alpha-33" - }, "../packages/simplexml": { "name": "php-wasm-simplexml", - "version": "0.0.9-alpha-33" + "version": "0.1.0" }, "../packages/sqlite": { "name": "php-wasm-sqlite", - "version": "0.0.9-alpha-33" + "version": "0.1.0" }, "../packages/tidy": { "name": "php-wasm-tidy", - "version": "0.0.9-alpha-33" + "version": "0.1.0" }, "../packages/xml": { "name": "php-wasm-xml", - "version": "0.0.9-alpha-33" + "version": "0.1.0" + }, + "../packages/xmlreader": { + "name": "php-wasm-xmlreader", + "version": "0.1.0" + }, + "../packages/xmlwriter": { + "name": "php-wasm-xmlwriter", + "version": "0.1.0" }, "../packages/zlib": { "name": "php-wasm-zlib", - "version": "0.0.9-alpha-33" + "version": "0.1.0" + }, + "node_modules/@acemir/cssom": { + "version": "0.9.31", + "resolved": "https://registry.npmjs.org/@acemir/cssom/-/cssom-0.9.31.tgz", + "integrity": "sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==", + "dev": true, + "license": "MIT" }, "node_modules/@adobe/css-tools": { "version": "4.4.4", @@ -141,25 +171,89 @@ "integrity": "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==", "license": "MIT" }, - "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==", + "node_modules/@asamuzakjp/css-color": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-4.1.2.tgz", + "integrity": "sha512-NfBUvBaYgKIuq6E/RBLY1m0IohzNHAYyaJGuTK79Z23uNwmz2jl1mPsC5ZxCCxylinKhT1Amn5oNTlx1wN8cQg==", + "dev": true, "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^3.0.0", + "@csstools/css-color-parser": "^4.0.1", + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0", + "lru-cache": "^11.2.5" + } + }, + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.5.tgz", + "integrity": "sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==", + "dev": true, + "license": "BlueOak-1.0.0", "engines": { - "node": ">=10" + "node": "20 || >=22" + } + }, + "node_modules/@asamuzakjp/dom-selector": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-6.8.1.tgz", + "integrity": "sha512-MvRz1nCqW0fsy8Qz4dnLIvhOlMzqDVBabZx6lH+YywFDdjXhMY37SmpV1XFX3JzG5GWHn63j6HX6QPr3lZXHvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/nwsapi": "^2.3.9", + "bidi-js": "^1.0.3", + "css-tree": "^3.1.0", + "is-potential-custom-element-name": "^1.0.1", + "lru-cache": "^11.2.6" + } + }, + "node_modules/@asamuzakjp/dom-selector/node_modules/css-tree": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/@asamuzakjp/dom-selector/node_modules/lru-cache": { + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.5.tgz", + "integrity": "sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" } }, + "node_modules/@asamuzakjp/dom-selector/node_modules/mdn-data": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", + "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/@asamuzakjp/nwsapi": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@asamuzakjp/nwsapi/-/nwsapi-2.3.9.tgz", + "integrity": "sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -168,30 +262,31 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", - "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", - "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.4", - "@babel/parser": "^7.28.4", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.4", - "@babel/types": "^7.28.4", + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -207,41 +302,15 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/eslint-parser": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.4.tgz", - "integrity": "sha512-Aa+yDiH87980jR6zvRfFuCR1+dLb00vBydhTL+zI992Rz/wQhSvuxjmOOuJOgO3XmakO6RykRGD2S1mq1AtgHA==", - "license": "MIT", - "dependencies": { - "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || >=14.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0", - "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "license": "Apache-2.0", - "engines": { - "node": ">=10" - } - }, "node_modules/@babel/generator": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", - "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.3", - "@babel/types": "^7.28.2", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -250,25 +319,14 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", - "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.3" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.27.2", + "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -278,104 +336,40 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz", - "integrity": "sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==", - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-member-expression-to-functions": "^7.27.1", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.28.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", - "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "regexpu-core": "^6.2.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", - "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", - "debug": "^4.4.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.22.10" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, "node_modules/@babel/helper-globals": { "version": "7.28.0", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", - "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", - "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.28.3" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -384,70 +378,12 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", - "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", - "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-wrap-function": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", - "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", - "license": "MIT", - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.27.1", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", - "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, "engines": { "node": ">=6.9.0" } @@ -456,15 +392,16 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -474,45 +411,34 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz", - "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==", - "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.3", - "@babel/types": "^7.28.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helpers": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", - "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4" + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", - "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.28.4" + "@babel/types": "^7.29.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -521,26 +447,27 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "node_modules/@babel/plugin-transform-react-jsx-self": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz", - "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "node_modules/@babel/plugin-transform-react-jsx-source": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", - "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -549,2711 +476,2758 @@ "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", - "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", - "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-transform-optional-chaining": "^7.27.1" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" } }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz", - "integrity": "sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==", + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.28.3" + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.28.0.tgz", - "integrity": "sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-syntax-decorators": "^7.27.1" - }, + "node_modules/@csstools/color-helpers": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-6.0.2.tgz", + "integrity": "sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.19.0" } }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", + "node_modules/@csstools/css-calc": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.2.0.tgz", + "integrity": "sha512-bR9e6o2BDB12jzN/gIbjHa5wLJ4UjD1CB9pM7ehlc0ddk6EBz+yYS1EV2MF55/HUxrHcB/hehAyt5vhsA3hx7w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, "engines": { - "node": ">=6.9.0" + "node": ">=20.19.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0" } }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "node_modules/@csstools/css-color-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.1.0.tgz", + "integrity": "sha512-U0KhLYmy2GVj6q4T3WaAe6NPuFYCPQoE3b0dRGxejWDgcPp8TP7S5rVdM5ZrFaqu4N67X8YaPBw14dQSYx3IyQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^6.0.2", + "@csstools/css-calc": "^3.2.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.19.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0" } }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", - "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", + "node_modules/@csstools/css-parser-algorithms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.0.tgz", + "integrity": "sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, "engines": { - "node": ">=6.9.0" + "node": ">=20.19.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@csstools/css-tokenizer": "^4.0.0" } }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", + "node_modules/@csstools/css-tokenizer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-4.0.0.tgz", + "integrity": "sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.19.0" } }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", - "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.", + "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", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=10.0.0" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "node_modules/@electric-sql/pglite": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/@electric-sql/pglite/-/pglite-0.2.17.tgz", + "integrity": "sha512-qEpKRT2oUaWDH6tjRxLHjdzMqRUGYDnGZlKrnL4dJ77JVMcP2Hpo3NYnOSPKdZdeec57B6QPprCUFg0picx5Pw==", + "license": "Apache-2.0" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", + "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", + "cpu": [ + "ppc64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "node_modules/@esbuild/android-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", + "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", + "cpu": [ + "arm" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "node_modules/@esbuild/android-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", + "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "node_modules/@esbuild/android-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", + "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.27.1.tgz", - "integrity": "sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", + "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-flow": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.27.1.tgz", - "integrity": "sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", + "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", - "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", + "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", - "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", + "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "node_modules/@esbuild/linux-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", + "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", + "cpu": [ + "arm" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", + "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", - "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", + "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", + "cpu": [ + "ia32" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", + "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", + "cpu": [ + "loong64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", + "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", + "cpu": [ + "mips64el" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", + "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", + "cpu": [ + "ppc64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", + "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", + "cpu": [ + "riscv64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", + "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", + "cpu": [ + "s390x" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "node_modules/@esbuild/linux-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", + "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", + "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", + "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", - "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", + "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", + "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", - "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", + "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, + "optional": true, + "os": [ + "openharmony" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", - "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", + "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-remap-async-to-generator": "^7.27.1", - "@babel/traverse": "^7.28.0" - }, + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", - "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", + "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-remap-async-to-generator": "^7.27.1" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", - "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", + "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", + "cpu": [ + "ia32" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.4.tgz", - "integrity": "sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A==", + "node_modules/@esbuild/win32-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", + "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", - "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz", - "integrity": "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==", + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.28.3", - "@babel/helper-plugin-utils": "^7.27.1" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz", - "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==", - "license": "MIT", + "node_modules/@eslint/config-array": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-globals": "^7.28.0", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", - "@babel/traverse": "^7.28.4" + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.5" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", - "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", - "license": "MIT", + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/template": "^7.27.1" + "@eslint/core": "^0.17.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz", - "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==", - "license": "MIT", + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.28.0" + "@types/json-schema": "^7.0.15" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", - "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", + "node_modules/@eslint/eslintrc": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "ajv": "^6.14.0", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.5", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=6.9.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", - "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, "engines": { - "node": ">=6.9.0" + "node": ">=18" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", - "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" + "argparse": "^2.0.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", - "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "node_modules/@eslint/js": { + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, "engines": { - "node": ">=6.9.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://eslint.org/donate" } }, - "node_modules/@babel/plugin-transform-explicit-resource-management": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", - "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", - "license": "MIT", + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.28.0" + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", - "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", - "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "node_modules/@exodus/bytes": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.15.0.tgz", + "integrity": "sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.27.1.tgz", - "integrity": "sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-syntax-flow": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" + "@noble/hashes": "^1.8.0 || ^2.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "peerDependenciesMeta": { + "@noble/hashes": { + "optional": true + } } }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", - "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", - "license": "MIT", + "node_modules/@humanfs/core": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + "@humanfs/types": "^0.15.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.18.0" } }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", - "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", - "license": "MIT", + "node_modules/@humanfs/node": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-compilation-targets": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", + "@humanwhocodes/retry": "^0.4.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.18.0" } }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", - "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.18.0" } }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", - "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=6.9.0" + "node": ">=12.22" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", - "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=6.9.0" + "node": ">=18.18" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", - "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", - "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", - "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", + "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, "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", - "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", - "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", - "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", - "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "node_modules/@remix-run/router": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.0.tgz", + "integrity": "sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==", "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=14.0.0" } }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", - "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz", + "integrity": "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==", + "dev": true, + "license": "MIT" }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", - "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.2.tgz", + "integrity": "sha512-dnlp69efPPg6Uaw2dVqzWRfAWRnYVb1XJ8CyyhIbZeaq4CA5/mLeZ1IEt9QqQxmbdvagjLIm2ZL8BxXv5lH4Yw==", + "cpu": [ + "arm" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz", - "integrity": "sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.2.tgz", + "integrity": "sha512-OqZTwDRDchGRHHm/hwLOL7uVPB9aUvI0am/eQuWMNyFHf5PSEQmyEeYYheA0EPPKUO/l0uigCp+iaTjoLjVoHg==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.28.0", - "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/traverse": "^7.28.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", - "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.2.tgz", + "integrity": "sha512-UwRE7CGpvSVEQS8gUMBe1uADWjNnVgP3Iusyda1nSRwNDCsRjnGc7w6El6WLQsXmZTbLZx9cecegumcitNfpmA==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", - "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.2.tgz", + "integrity": "sha512-gjEtURKLCC5VXm1I+2i1u9OhxFsKAQJKTVB8WvDAHF+oZlq0GTVFOlTlO1q3AlCTE/DF32c16ESvfgqR7343/g==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.2.tgz", + "integrity": "sha512-Bcl6CYDeAgE70cqZaMojOi/eK63h5Me97ZqAQoh77VPjMysA/4ORQBRGo3rRy45x4MzVlU9uZxs8Uwy7ZaKnBw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.2.tgz", + "integrity": "sha512-LU+TPda3mAE2QB0/Hp5VyeKJivpC6+tlOXd1VMoXV/YFMvk/MNk5iXeBfB4MQGRWyOYVJ01625vjkr0Az98OJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.2.tgz", + "integrity": "sha512-2QxQrM+KQ7DAW4o22j+XZ6RKdxjLD7BOWTP0Bv0tmjdyhXSsr2Ul1oJDQqh9Zf5qOwTuTc7Ek83mOFaKnodPjg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.2.tgz", + "integrity": "sha512-TbziEu2DVsTEOPif2mKWkMeDMLoYjx95oESa9fkQQK7r/Orta0gnkcDpzwufEcAO2BLBsD7mZkXGFqEdMRRwfw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.2.tgz", + "integrity": "sha512-bO/rVDiDUuM2YfuCUwZ1t1cP+/yqjqz+Xf2VtkdppefuOFS2OSeAfgafaHNkFn0t02hEyXngZkxtGqXcXwO8Rg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.2.tgz", + "integrity": "sha512-hr26p7e93Rl0Za+JwW7EAnwAvKkehh12BU1Llm9Ykiibg4uIr2rbpxG9WCf56GuvidlTG9KiiQT/TXT1yAWxTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.2.tgz", + "integrity": "sha512-pOjB/uSIyDt+ow3k/RcLvUAOGpysT2phDn7TTUB3n75SlIgZzM6NKAqlErPhoFU+npgY3/n+2HYIQVbF70P9/A==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.2.tgz", + "integrity": "sha512-2/w+q8jszv9Ww1c+6uJT3OwqhdmGP2/4T17cu8WuwyUuuaCDDJ2ojdyYwZzCxx0GcsZBhzi3HmH+J5pZNXnd+Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.2.tgz", + "integrity": "sha512-11+aL5vKheYgczxtPVVRhdptAM2H7fcDR5Gw4/bTcteuZBlH4oP9f5s9zYO9aGZvoGeBpqXI/9TZZihZ609wKw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.2.tgz", + "integrity": "sha512-i16fokAGK46IVZuV8LIIwMdtqhin9hfYkCh8pf8iC3QU3LpwL+1FSFGej+O7l3E/AoknL6Dclh2oTdnRMpTzFQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.2.tgz", + "integrity": "sha512-49FkKS6RGQoriDSK/6E2GkAsAuU5kETFCh7pG4yD/ylj9rKhTmO3elsnmBvRD4PgJPds5W2PkhC82aVwmUcJ7A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.2.tgz", + "integrity": "sha512-mjYNkHPfGpUR00DuM1ZZIgs64Hpf4bWcz9Z41+4Q+pgDx73UwWdAYyf6EG/lRFldmdHHzgrYyge5akFUW0D3mQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.2.tgz", + "integrity": "sha512-ALyvJz965BQk8E9Al/JDKKDLH2kfKFLTGMlgkAbbYtZuJt9LU8DW3ZoDMCtQpXAltZxwBHevXz5u+gf0yA0YoA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.2.tgz", + "integrity": "sha512-UQjrkIdWrKI626Du8lCQ6MJp/6V1LAo2bOK9OTu4mSn8GGXIkPXk/Vsp4bLHCd9Z9Iz2OTEaokUE90VweJgIYQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.2.tgz", + "integrity": "sha512-bTsRGj6VlSdn/XD4CGyzMnzaBs9bsRxy79eTqTCBsA8TMIEky7qg48aPkvJvFe1HyzQ5oMZdg7AnVlWQSKLTnw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.2.tgz", + "integrity": "sha512-6d4Z3534xitaA1FcMWP7mQPq5zGwBmGbhphh2DwaA1aNIXUu3KTOfwrWpbwI4/Gr0uANo7NTtaykFyO2hPuFLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.2.tgz", + "integrity": "sha512-NetAg5iO2uN7eB8zE5qrZ3CSil+7IJt4WDFLcC75Ymywq1VZVD6qJ6EvNLjZ3rEm6gB7XW5JdT60c6MN35Z85Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.2.tgz", + "integrity": "sha512-NCYhOotpgWZ5kdxCZsv6Iudx0wX8980Q/oW4pNFNihpBKsDbEA1zpkfxJGC0yugsUuyDZ7gL37dbzwhR0VI7pQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.2.tgz", + "integrity": "sha512-RXsaOqXxfoUBQoOgvmmijVxJnW2IGB0eoMO7F8FAjaj0UTywUO/luSqimWBJn04WNgUkeNhh7fs7pESXajWmkg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.2.tgz", + "integrity": "sha512-qdAzEULD+/hzObedtmV6iBpdL5TIbKVztGiK7O3/KYSf+HIzU257+MX1EXJcyIiDbMAqmbwaufcYPvyRryeZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.2.tgz", + "integrity": "sha512-Nd/SgG27WoA9e+/TdK74KnHz852TLa94ovOYySo/yMPuTmpckK/jIF2jSwS3g7ELSKXK13/cVdmg1Z/DaCWKxA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", - "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@stylistic/eslint-plugin": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.13.0.tgz", + "integrity": "sha512-RnO1SaiCFHn666wNz2QfZEFxvmiNRqhzaMXHXxXXKt+MEP7aajlPxUSMIQpKAaJfverpovEYqjBOXDq6dDcaOQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + "@typescript-eslint/utils": "^8.13.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "estraverse": "^5.3.0", + "picomatch": "^4.0.2" }, "engines": { - "node": ">=6.9.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "eslint": ">=8.40.0" } }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.27.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", - "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.1.tgz", + "integrity": "sha512-LwuHQI4pDOYVKvmH2dkaJo6YZCSgouVgnS/z7yBPKBMvgtBvyLqiLy9Z6b7+m/TRcX1NFYUqZetI5Y+aT4GEfg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@typescript-eslint/types": "8.59.1", + "@typescript-eslint/visitor-keys": "8.59.1" }, "engines": { - "node": ">=6.9.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", - "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", + "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.1.tgz", + "integrity": "sha512-ZDCjgccSdYPw5Bxh+my4Z0lJU96ZDN7jbBzvmEn0FZx3RtU1C7VWl6NbDx94bwY3V5YsgwRzJPOgeY2Q/nLG8A==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, "engines": { - "node": ">=6.9.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", - "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", + "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.1.tgz", + "integrity": "sha512-OUd+vJS05sSkOip+BkZ/2NS8RMxrAAJemsC6vU3kmfLyeaJT0TftHkV9mcx2107MmsBVXXexhVu4F0TZXyMl4g==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@typescript-eslint/project-service": "8.59.1", + "@typescript-eslint/tsconfig-utils": "8.59.1", + "@typescript-eslint/types": "8.59.1", + "@typescript-eslint/visitor-keys": "8.59.1", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" }, "engines": { - "node": ">=6.9.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", - "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.1.tgz", + "integrity": "sha512-3pIeoXhCeYH9FSCBI8P3iNwJlGuzPlYKkTlen2O9T1DSeeg8UG8jstq6BLk+Mda0qup7mgk4z4XL4OzRaxZ8LA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.59.1", + "@typescript-eslint/types": "8.59.1", + "@typescript-eslint/typescript-estree": "8.59.1" }, "engines": { - "node": ">=6.9.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/@babel/plugin-transform-react-constant-elements": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.27.1.tgz", - "integrity": "sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug==", + "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.1.tgz", + "integrity": "sha512-LdDNl6C5iJExcM0Yh0PwAIBb9PrSiCsWamF/JyEZawm3kFDnRoaq3LGE4bpyRao/fWeGKKyw7icx0YxrLFC5Cg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@typescript-eslint/types": "8.59.1", + "eslint-visitor-keys": "^5.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", - "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, + "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz", - "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==", + "node_modules/@stylistic/eslint-plugin/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/types": "^7.27.1" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "18 || 20 || >=22" } }, - "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", - "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", + "node_modules/@stylistic/eslint-plugin/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.27.1" + "balanced-match": "^4.0.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "18 || 20 || >=22" } }, - "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", - "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, + "node_modules/@stylistic/eslint-plugin/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=6.9.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz", - "integrity": "sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==", - "license": "MIT", + "node_modules/@stylistic/eslint-plugin/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "brace-expansion": "^5.0.5" }, "engines": { - "node": ">=6.9.0" + "node": "18 || 20 || >=22" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@babel/plugin-transform-regexp-modifiers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", - "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "node_modules/@stylistic/eslint-plugin/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=10" } }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", - "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "node_modules/@testing-library/dom": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", "license": "MIT", + "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "picocolors": "1.1.1", + "pretty-format": "^27.0.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.3.tgz", - "integrity": "sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg==", + "node_modules/@testing-library/jest-dom": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz", + "integrity": "sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==", "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "babel-plugin-polyfill-corejs2": "^0.4.14", - "babel-plugin-polyfill-corejs3": "^0.13.0", - "babel-plugin-polyfill-regenerator": "^0.6.5", - "semver": "^6.3.1" + "@adobe/css-tools": "^4.4.0", + "aria-query": "^5.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "picocolors": "^1.1.1", + "redent": "^3.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" } }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", - "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "license": "MIT" + }, + "node_modules/@testing-library/react": { + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.2.tgz", + "integrity": "sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/runtime": "^7.12.5" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0 || ^19.0.0", + "@types/react-dom": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", - "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", + "node_modules/@testing-library/user-event": { + "version": "14.6.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz", + "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" - }, "engines": { - "node": ">=6.9.0" + "node": ">=12", + "npm": ">=6" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@testing-library/dom": ">=7.21.4" } }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", - "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "license": "MIT", + "peer": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", - "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/types": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", - "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-typescript": { + "node_modules/@types/babel__traverse": { "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.0.tgz", - "integrity": "sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/types": "^7.28.2" } }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", - "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" } }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", - "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@types/estree": "*", + "@types/json-schema": "*" } }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", - "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "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": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@types/eslint": "*", + "@types/estree": "*" } }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", - "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "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/node": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.8.0.tgz", + "integrity": "sha512-5x08bUtU8hfboMTrJ7mEO4CpepS9yBwAqcL52y86SWNmbPX8LVbNs3EP4cNrIZgdjk2NAlP2ahNihozpoZIxSg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "undici-types": "~7.14.0" } }, - "node_modules/@babel/preset-env": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.3.tgz", - "integrity": "sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==", + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.28.0", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.27.1", - "@babel/plugin-syntax-import-attributes": "^7.27.1", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.27.1", - "@babel/plugin-transform-async-generator-functions": "^7.28.0", - "@babel/plugin-transform-async-to-generator": "^7.27.1", - "@babel/plugin-transform-block-scoped-functions": "^7.27.1", - "@babel/plugin-transform-block-scoping": "^7.28.0", - "@babel/plugin-transform-class-properties": "^7.27.1", - "@babel/plugin-transform-class-static-block": "^7.28.3", - "@babel/plugin-transform-classes": "^7.28.3", - "@babel/plugin-transform-computed-properties": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.28.0", - "@babel/plugin-transform-dotall-regex": "^7.27.1", - "@babel/plugin-transform-duplicate-keys": "^7.27.1", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", - "@babel/plugin-transform-dynamic-import": "^7.27.1", - "@babel/plugin-transform-explicit-resource-management": "^7.28.0", - "@babel/plugin-transform-exponentiation-operator": "^7.27.1", - "@babel/plugin-transform-export-namespace-from": "^7.27.1", - "@babel/plugin-transform-for-of": "^7.27.1", - "@babel/plugin-transform-function-name": "^7.27.1", - "@babel/plugin-transform-json-strings": "^7.27.1", - "@babel/plugin-transform-literals": "^7.27.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", - "@babel/plugin-transform-member-expression-literals": "^7.27.1", - "@babel/plugin-transform-modules-amd": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.27.1", - "@babel/plugin-transform-modules-systemjs": "^7.27.1", - "@babel/plugin-transform-modules-umd": "^7.27.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", - "@babel/plugin-transform-new-target": "^7.27.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", - "@babel/plugin-transform-numeric-separator": "^7.27.1", - "@babel/plugin-transform-object-rest-spread": "^7.28.0", - "@babel/plugin-transform-object-super": "^7.27.1", - "@babel/plugin-transform-optional-catch-binding": "^7.27.1", - "@babel/plugin-transform-optional-chaining": "^7.27.1", - "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/plugin-transform-private-methods": "^7.27.1", - "@babel/plugin-transform-private-property-in-object": "^7.27.1", - "@babel/plugin-transform-property-literals": "^7.27.1", - "@babel/plugin-transform-regenerator": "^7.28.3", - "@babel/plugin-transform-regexp-modifiers": "^7.27.1", - "@babel/plugin-transform-reserved-words": "^7.27.1", - "@babel/plugin-transform-shorthand-properties": "^7.27.1", - "@babel/plugin-transform-spread": "^7.27.1", - "@babel/plugin-transform-sticky-regex": "^7.27.1", - "@babel/plugin-transform-template-literals": "^7.27.1", - "@babel/plugin-transform-typeof-symbol": "^7.27.1", - "@babel/plugin-transform-unicode-escapes": "^7.27.1", - "@babel/plugin-transform-unicode-property-regex": "^7.27.1", - "@babel/plugin-transform-unicode-regex": "^7.27.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.14", - "babel-plugin-polyfill-corejs3": "^0.13.0", - "babel-plugin-polyfill-regenerator": "^0.6.5", - "core-js-compat": "^3.43.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "optional": true, + "peer": true }, - "node_modules/@babel/preset-env/node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "node_modules/@types/react": { + "version": "18.3.26", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.26.tgz", + "integrity": "sha512-RFA/bURkcKzx/X9oumPG9Vp3D3JUgus/d0b67KB0t5S/raciymilkOa66olh78MUI92QLbEJevO7rvqU/kjwKA==", "license": "MIT", - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "peer": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" } }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "node_modules/@types/react-dom": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, + "optional": true, + "peer": true, "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + "@types/react": "^18.0.0" } }, - "node_modules/@babel/preset-react": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.27.1.tgz", - "integrity": "sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==", + "node_modules/@typescript-eslint/project-service": { + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.1.tgz", + "integrity": "sha512-+MuHQlHiEr00Of/IQbE/MmEoi44znZHbR/Pz7Opq4HryUOlRi+/44dro9Ycy8Fyo+/024IWtw8m4JUMCGTYxDg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-transform-react-display-name": "^7.27.1", - "@babel/plugin-transform-react-jsx": "^7.27.1", - "@babel/plugin-transform-react-jsx-development": "^7.27.1", - "@babel/plugin-transform-react-pure-annotations": "^7.27.1" + "@typescript-eslint/tsconfig-utils": "^8.59.1", + "@typescript-eslint/types": "^8.59.1", + "debug": "^4.4.3" }, "engines": { - "node": ">=6.9.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/@babel/preset-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz", - "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==", + "node_modules/@typescript-eslint/project-service/node_modules/@typescript-eslint/types": { + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.1.tgz", + "integrity": "sha512-ZDCjgccSdYPw5Bxh+my4Z0lJU96ZDN7jbBzvmEn0FZx3RtU1C7VWl6NbDx94bwY3V5YsgwRzJPOgeY2Q/nLG8A==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.27.1", - "@babel/plugin-transform-typescript": "^7.27.1" - }, "engines": { - "node": ">=6.9.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.1.tgz", + "integrity": "sha512-/0nEyPbX7gRsk0Uwfe4ALwwgxuA66d/l2mhRDNlAvaj4U3juhUtJNq0DsY8M2AYwwb9rEq2hrC3IcIcEt++iJA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "node_modules/@vitejs/plugin-react": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.2.0.tgz", + "integrity": "sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "@babel/core": "^7.29.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-rc.3", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.18.0" }, "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@babel/traverse": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", - "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", + "node_modules/@vitest/expect": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.5.tgz", + "integrity": "sha512-PWBaRY5JoKuRnHlUHfpV/KohFylaDZTupcXN1H9vYryNLOnitSw60Mw9IAE2r67NbwwzBw/Cc/8q9BK3kIX8Kw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.4", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4", - "debug": "^4.3.1" + "@standard-schema/spec": "^1.1.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.1.5", + "@vitest/utils": "4.1.5", + "chai": "^6.2.2", + "tinyrainbow": "^3.1.0" }, - "engines": { - "node": ">=6.9.0" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@babel/types": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", - "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "node_modules/@vitest/mocker": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.5.tgz", + "integrity": "sha512-/x2EmFC4mT4NNzqvC3fmesuV97w5FC903KPmey4gsnJiMQ3Be1IlDKVaDaG8iqaLFHqJ2FVEkxZk5VmeLjIItw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" - }, - "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==", - "license": "MIT" - }, - "node_modules/@csstools/normalize.css": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.1.1.tgz", - "integrity": "sha512-YAYeJ+Xqh7fUou1d1j9XHl44BmsuThiTr4iNrgCQ3J27IbhXsxXDGZ1cXv8Qvs99d4rBbLiSKy3+WZiet32PcQ==", - "license": "CC0-1.0" - }, - "node_modules/@csstools/postcss-cascade-layers": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", - "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", - "license": "CC0-1.0", - "dependencies": { - "@csstools/selector-specificity": "^2.0.2", - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" + "@vitest/spy": "4.1.5", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-color-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", - "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", - "license": "CC0-1.0", - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, - "peerDependencies": { - "postcss": "^8.2" + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } } }, - "node_modules/@csstools/postcss-font-format-keywords": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", - "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", - "license": "CC0-1.0", + "node_modules/@vitest/mocker/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": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "@types/estree": "^1.0.0" } }, - "node_modules/@csstools/postcss-hwb-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", - "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", - "license": "CC0-1.0", + "node_modules/@vitest/mocker/node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "node_modules/@csstools/postcss-ic-unit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", - "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", - "license": "CC0-1.0", + "node_modules/@vitest/pretty-format": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.5.tgz", + "integrity": "sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==", + "dev": true, + "license": "MIT", "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" + "tinyrainbow": "^3.1.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "url": "https://opencollective.com/vitest" } }, - "node_modules/@csstools/postcss-is-pseudo-class": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", - "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", - "license": "CC0-1.0", + "node_modules/@vitest/runner": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.5.tgz", + "integrity": "sha512-2D+o7Pr82IEO46YPpoA/YU0neeyr6FTerQb5Ro7BUnBuv6NQtT/kmVnczngiMEBhzgqz2UZYl5gArejsyERDSQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" + "@vitest/utils": "4.1.5", + "pathe": "^2.0.3" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "url": "https://opencollective.com/vitest" } }, - "node_modules/@csstools/postcss-nested-calc": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", - "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", - "license": "CC0-1.0", + "node_modules/@vitest/snapshot": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.5.tgz", + "integrity": "sha512-zypXEt4KH/XgKGPUz4eC2AvErYx0My5hfL8oDb1HzGFpEk1P62bxSohdyOmvz+d9UJwanI68MKwr2EquOaOgMQ==", + "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" + "@vitest/pretty-format": "4.1.5", + "@vitest/utils": "4.1.5", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "url": "https://opencollective.com/vitest" } }, - "node_modules/@csstools/postcss-normalize-display-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", - "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", - "license": "CC0-1.0", + "node_modules/@vitest/snapshot/node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "node_modules/@csstools/postcss-oklab-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", - "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", - "license": "CC0-1.0", - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, + "node_modules/@vitest/spy": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.5.tgz", + "integrity": "sha512-2lNOsh6+R2Idnf1TCZqSwYlKN2E/iDlD8sgU59kYVl+OMDmvldO1VDk39smRfpUNwYpNRVn3w4YfuC7KfbBnkQ==", + "dev": true, + "license": "MIT", "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "url": "https://opencollective.com/vitest" } }, - "node_modules/@csstools/postcss-progressive-custom-properties": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", - "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.3" - } - }, - "node_modules/@csstools/postcss-stepped-value-functions": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", - "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", - "license": "CC0-1.0", + "node_modules/@vitest/utils": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.5.tgz", + "integrity": "sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==", + "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" + "@vitest/pretty-format": "4.1.5", + "convert-source-map": "^2.0.0", + "tinyrainbow": "^3.1.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "url": "https://opencollective.com/vitest" } }, - "node_modules/@csstools/postcss-text-decoration-shorthand": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", - "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", - "license": "CC0-1.0", + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, - "node_modules/@csstools/postcss-trigonometric-functions": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", - "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT" }, - "node_modules/@csstools/postcss-unset-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", - "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", - "license": "CC0-1.0", - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT" }, - "node_modules/@csstools/selector-specificity": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", - "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", - "license": "CC0-1.0", - "engines": { - "node": "^14 || ^16 || >=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss-selector-parser": "^6.0.10" - } + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "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==", + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10.0.0" + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" } }, - "node_modules/@electric-sql/pglite": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/@electric-sql/pglite/-/pglite-0.2.17.tgz", - "integrity": "sha512-qEpKRT2oUaWDH6tjRxLHjdzMqRUGYDnGZlKrnL4dJ77JVMcP2Hpo3NYnOSPKdZdeec57B6QPprCUFg0picx5Pw==", - "license": "Apache-2.0" + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT" }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "dependencies": { + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "license": "MIT", + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "@xtuc/long": "4.2.2" } }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT" }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, "license": "MIT", "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", - "license": "Apache-2.0", + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "license": "MIT", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "license": "BSD-3-Clause" - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "license": "ISC", + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "license": "MIT", "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" + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "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, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=14.15.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "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, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=14.15.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "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, "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, "engines": { - "node": ">=12" + "node": ">=14.15.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "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/ace-builds": { + "version": "1.43.6", + "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.43.6.tgz", + "integrity": "sha512-L1ddibQ7F3vyXR2k2fg+I8TQTPWVA6CKeDQr/h2+8CeyTp3W6EQL8xNFZRTztuP8xNOAqL3IYPqdzs31GCjDvg==", + "license": "BSD-3-Clause" + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=0.4.0" } }, - "node_modules/@isaacs/cliui/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==", + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "dev": true, "license": "MIT", - "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/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "license": "ISC", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "node": ">=10.13.0" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "acorn": "^8.14.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "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==", + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 14" } }, - "node_modules/@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@jest/console/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "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": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "ajv": "^8.0.0" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/console/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@jest/console/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } + "node_modules/ajv-formats/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/@jest/console/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "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==", "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, + "peer": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/@jest/console/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "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": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "color-convert": "^2.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/console/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "node_modules/ansi-to-html": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.7.2.tgz", + "integrity": "sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g==", "license": "MIT", "dependencies": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "entities": "^2.2.0" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/core/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "bin": { + "ansi-to-html": "bin/ansi-to-html" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8.0.0" } }, - "node_modules/@jest/core/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "license": "Apache-2.0", "dependencies": { - "@types/yargs-parser": "*" + "dequal": "^2.0.3" } }, - "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@jest/core/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/core/node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "license": "MIT", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@jest/core/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/core/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@jest/diff-sequences": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", - "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@jest/environment/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, "license": "MIT", "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@jest/environment/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, "license": "MIT", "dependencies": { - "@types/yargs-parser": "*" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/@jest/environment/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@jest/environment/node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "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", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=12" } }, - "node_modules/@jest/expect-utils": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", - "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true, + "license": "MIT" }, - "node_modules/@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.4" } }, - "node_modules/@jest/fake-timers/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, "license": "MIT", "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "possible-typed-array-names": "^1.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@jest/fake-timers/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" + "node_modules/axe-core": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.0.tgz", + "integrity": "sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" } }, - "node_modules/@jest/fake-timers/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/babel-loader": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.1.0.tgz", + "integrity": "sha512-5HTUZa013O4SWEYlJDHexrqSIYkWatfA9w/ZZQa7V2nMc0dRWkfu/0pmioC7XMYm8M7Z/3+q42NWj6e+fAT0MQ==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "find-up": "^5.0.0" }, "engines": { - "node": ">=10" + "node": "^18.20.0 || ^20.10.0 || >=22.0.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.12.0 || ^8.0.0-beta.1", + "@rspack/core": "^1.0.0 || ^2.0.0-0", + "webpack": ">=5.61.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/@jest/fake-timers/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.24", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.24.tgz", + "integrity": "sha512-I2NkZOOrj2XuguvWCK6OVh9GavsNjZjK908Rq3mIBK25+GD8vPX5w2WdxVqnQ7xx3SrZJiCiZFu+/Oz50oSYSA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/@jest/fake-timers/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "node_modules/bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "require-from-string": "^2.0.2" } }, - "node_modules/@jest/fake-timers/node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@jest/fake-timers/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "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": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/@jest/fake-timers/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "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/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, "engines": { - "node": ">=8.6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@jest/get-type": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", - "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" } }, - "node_modules/@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@jest/globals/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6" } }, - "node_modules/@jest/globals/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "node_modules/caniuse-lite": { + "version": "1.0.30001791", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001791.tgz", + "integrity": "sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==", + "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": "6.2.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", + "dev": true, "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" + "engines": { + "node": ">=18" } }, - "node_modules/@jest/globals/node_modules/chalk": { + "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", @@ -3266,14552 +3240,2876 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/globals/node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "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", - "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6.0" } }, - "node_modules/@jest/globals/node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "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, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6" } }, - "node_modules/@jest/globals/node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "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, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "color-name": "~1.1.4" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=7.0.0" } }, - "node_modules/@jest/globals/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" }, - "node_modules/@jest/pattern": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", - "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-regex-util": "30.0.1" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=14" } }, - "node_modules/@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", - "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": 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/@jest/reporters/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, "license": "MIT", "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 8" } }, - "node_modules/@jest/reporters/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "license": "MIT" }, - "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/cssstyle": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.7.tgz", + "integrity": "sha512-7D2EPVltRrsTkhpQmksIu+LxeWAIEk6wRDMJ1qljlv+CKHJM+cJLlfhWIzNA44eAsHXSNe3+vO6DW1yCYx8SuQ==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@asamuzakjp/css-color": "^4.1.1", + "@csstools/css-syntax-patches-for-csstree": "^1.0.21", + "css-tree": "^3.1.0", + "lru-cache": "^11.2.4" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=20" } }, - "node_modules/@jest/reporters/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "node_modules/cssstyle/node_modules/@csstools/css-syntax-patches-for-csstree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.3.tgz", + "integrity": "sha512-SH60bMfrRCJF3morcdk57WklujF4Jr/EsQUzqkarfHXEFcAR1gg7fS/chAE922Sehgzc1/+Tz5H3Ypa1HiEKrg==", + "dev": true, "funding": [ { "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" } ], - "license": "MIT", - "engines": { - "node": ">=8" + "license": "MIT-0", + "peerDependencies": { + "css-tree": "^3.2.1" + }, + "peerDependenciesMeta": { + "css-tree": { + "optional": true + } } }, - "node_modules/@jest/reporters/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "node_modules/cssstyle/node_modules/css-tree": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, - "node_modules/@jest/reporters/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", + "node_modules/cssstyle/node_modules/lru-cache": { + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.5.tgz", + "integrity": "sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==", + "dev": true, + "license": "BlueOak-1.0.0", "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": "20 || >=22" } }, - "node_modules/@jest/reporters/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==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } + "node_modules/cssstyle/node_modules/mdn-data": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", + "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", + "dev": true, + "license": "CC0-1.0" }, - "node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "optional": true, + "peer": true }, - "node_modules/@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/data-urls": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-6.0.1.tgz", + "integrity": "sha512-euIQENZg6x8mj3fO6o9+fOW8MimUI4PpD/fZBhJfeioZVy9TUpM4UY7KjQNVZFlqwJ0UdzRDzkycB997HEq1BQ==", + "dev": true, "license": "MIT", "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" + "whatwg-mimetype": "^5.0.0", + "whatwg-url": "^15.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/source-map/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==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "node": ">=20" } }, - "node_modules/@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "node_modules/data-urls/node_modules/whatwg-mimetype": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz", + "integrity": "sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==", + "dev": true, "license": "MIT", - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=20" } }, - "node_modules/@jest/test-result/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, "license": "MIT", "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/test-result/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@jest/test-result/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/inspect-js" } }, - "node_modules/@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "ms": "^2.1.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@jest/transform/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "dev": true, + "license": "MIT" + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, "license": "MIT", "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/transform/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@jest/transform/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/@jest/transform/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "license": "MIT" - }, - "node_modules/@jest/transform/node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "license": "MIT", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" } }, - "node_modules/@jest/transform/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "node_modules/diff-match-patch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", + "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", + "license": "Apache-2.0" + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "license": "MIT", + "peer": true + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.4" } }, - "node_modules/@jest/transform/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/electron-to-chromium": { + "version": "1.5.345", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.345.tgz", + "integrity": "sha512-F9JXQGiMrz6yVNPI2qOVPvB9HzjH5cGzhs8oJ6A28V5L/YnzN/0KsuiibqF+F1Fd9qxFzD1BUnYSd8JfULxTwg==", + "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, + "license": "MIT" + }, + "node_modules/enhanced-resolve": { + "version": "5.21.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.0.tgz", + "integrity": "sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8.6" + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": ">=10.13.0" } }, - "node_modules/@jest/transform/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==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "node_modules/envinfo": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", + "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", + "dev": true, "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" + "bin": { + "envinfo": "dist/cli.js" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=4" } }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/es-abstract": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" + "engines": { + "node": ">= 0.4" } }, - "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==", + "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, "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": ">= 0.4" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "node_modules/es-module-lexer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz", + "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", + "dev": true, "license": "MIT" }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" } }, - "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==", - "license": "MIT" - }, - "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { - "version": "5.1.1-v1", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", - "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, "license": "MIT", "dependencies": { - "eslint-scope": "5.1.1" - } - }, - "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/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==", - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": ">=8.0.0" + "node": ">= 0.4" } }, - "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "license": "BSD-2-Clause", + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, "engines": { - "node": ">=4.0" + "node": ">= 0.4" } }, - "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==", + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { - "node": ">= 8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/esbuild": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", + "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", + "dev": true, + "hasInstallScript": true, "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, "engines": { - "node": ">= 8" + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.7", + "@esbuild/android-arm": "0.27.7", + "@esbuild/android-arm64": "0.27.7", + "@esbuild/android-x64": "0.27.7", + "@esbuild/darwin-arm64": "0.27.7", + "@esbuild/darwin-x64": "0.27.7", + "@esbuild/freebsd-arm64": "0.27.7", + "@esbuild/freebsd-x64": "0.27.7", + "@esbuild/linux-arm": "0.27.7", + "@esbuild/linux-arm64": "0.27.7", + "@esbuild/linux-ia32": "0.27.7", + "@esbuild/linux-loong64": "0.27.7", + "@esbuild/linux-mips64el": "0.27.7", + "@esbuild/linux-ppc64": "0.27.7", + "@esbuild/linux-riscv64": "0.27.7", + "@esbuild/linux-s390x": "0.27.7", + "@esbuild/linux-x64": "0.27.7", + "@esbuild/netbsd-arm64": "0.27.7", + "@esbuild/netbsd-x64": "0.27.7", + "@esbuild/openbsd-arm64": "0.27.7", + "@esbuild/openbsd-x64": "0.27.7", + "@esbuild/openharmony-arm64": "0.27.7", + "@esbuild/sunos-x64": "0.27.7", + "@esbuild/win32-arm64": "0.27.7", + "@esbuild/win32-ia32": "0.27.7", + "@esbuild/win32-x64": "0.27.7" } }, - "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==", + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, "engines": { - "node": ">= 8" + "node": ">=6" } }, - "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==", + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, "license": "MIT", - "optional": true, "engines": { - "node": ">=14" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.5.17", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.17.tgz", - "integrity": "sha512-tXDyE1/jzFsHXjhRZQ3hMl0IVhYe5qula43LDWIhVfjp9G/nT5OQY5AORVOrkEGAUltBJOfOWeETbmhm6kHhuQ==", + "node_modules/eslint": { + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-html": "^0.0.9", - "core-js-pure": "^3.23.3", - "error-stack-parser": "^2.0.6", - "html-entities": "^2.1.0", - "loader-utils": "^2.0.4", - "schema-utils": "^4.2.0", - "source-map": "^0.7.3" + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.2", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "9.39.4", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.5", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">= 10.13" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" }, "peerDependencies": { - "@types/webpack": "4.x || 5.x", - "react-refresh": ">=0.10.0 <1.0.0", - "sockjs-client": "^1.4.0", - "type-fest": ">=0.17.0 <5.0.0", - "webpack": ">=4.43.0 <6.0.0", - "webpack-dev-server": "3.x || 4.x || 5.x", - "webpack-hot-middleware": "2.x", - "webpack-plugin-serve": "0.x || 1.x" + "jiti": "*" }, "peerDependenciesMeta": { - "@types/webpack": { - "optional": true - }, - "sockjs-client": { - "optional": true - }, - "type-fest": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - }, - "webpack-hot-middleware": { - "optional": true - }, - "webpack-plugin-serve": { + "jiti": { "optional": true } } }, - "node_modules/@remix-run/router": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.0.tgz", - "integrity": "sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@rollup/plugin-babel": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", - "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.10.4", - "@rollup/pluginutils": "^3.1.0" + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" }, "engines": { - "node": ">= 10.0.0" + "node": ">=4.0" }, "peerDependencies": { - "@babel/core": "^7.0.0", - "@types/babel__core": "^7.1.9", - "rollup": "^1.20.0||^2.0.0" - }, - "peerDependenciesMeta": { - "@types/babel__core": { - "optional": true - } + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" } }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "dev": true, "license": "MIT", "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" }, "engines": { - "node": ">= 10.0.0" + "node": ">=4" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, - "node_modules/@rollup/plugin-replace": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", - "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "node_modules/eslint-plugin-react-hooks": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.1.1.tgz", + "integrity": "sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==", + "dev": true, "license": "MIT", "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "magic-string": "^0.25.7" + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, + "engines": { + "node": ">=18" }, "peerDependencies": { - "rollup": "^1.20.0 || ^2.0.0" + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0" } }, - "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "license": "MIT", + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" + "esutils": "^2.0.2" }, "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" + "node": ">=0.10.0" } }, - "node_modules/@rollup/pluginutils/node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "license": "MIT" - }, - "node_modules/@rollup/pluginutils/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8.6" + "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/jonschlinkert" - } - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "license": "MIT" - }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.14.0.tgz", - "integrity": "sha512-WJFej426qe4RWOm9MMtP4V3CV4AucXolQty+GRgAWLgQXmpCuwzs7hEpxxhSc/znXUSxum9d/P/32MW0FlAAlA==", - "license": "MIT" - }, - "node_modules/@sinclair/typebox": { - "version": "0.34.41", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", - "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", - "license": "MIT" - }, - "node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", - "license": "BSD-3-Clause", + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@sinonjs/commons": "^1.7.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@surma/rollup-plugin-off-main-thread": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", - "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, "license": "Apache-2.0", - "dependencies": { - "ejs": "^3.1.6", - "json5": "^2.2.0", - "magic-string": "^0.25.0", - "string.prototype.matchall": "^4.0.6" - } - }, - "node_modules/@svgr/babel-plugin-add-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", - "license": "MIT", "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "url": "https://opencollective.com/eslint" } }, - "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", - "license": "MIT", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "url": "https://opencollective.com/eslint" } }, - "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", - "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", - "license": "MIT", + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "url": "https://opencollective.com/eslint" } }, - "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", - "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", - "license": "MIT", + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "url": "https://opencollective.com/eslint" } }, - "node_modules/@svgr/babel-plugin-svg-dynamic-title": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", - "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", - "license": "MIT", + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, "engines": { - "node": ">=10" + "node": ">=0.10" + } + }, + "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" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "engines": { + "node": ">=4.0" } }, - "node_modules/@svgr/babel-plugin-svg-em-dimensions": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", - "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", - "license": "MIT", + "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": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "node": ">=4.0" } }, - "node_modules/@svgr/babel-plugin-transform-react-native-svg": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", - "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", - "license": "MIT", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "node": ">=0.10.0" } }, - "node_modules/@svgr/babel-plugin-transform-svg-component": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", - "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", + "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": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "node": ">=0.8.x" } }, - "node_modules/@svgr/babel-preset": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", - "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", + "node_modules/expect-type": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.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-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/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "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, "license": "MIT", - "dependencies": { - "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", - "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", - "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", - "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", - "@svgr/babel-plugin-transform-svg-component": "^5.5.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "node": ">= 4.9.1" } }, - "node_modules/@svgr/core": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", - "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, "license": "MIT", - "dependencies": { - "@svgr/plugin-jsx": "^5.5.0", - "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.0" - }, "engines": { - "node": ">=10" + "node": ">=12.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/@svgr/hast-util-to-babel-ast": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", - "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.12.6" + "flat-cache": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "node": ">=16.0.0" } }, - "node_modules/@svgr/plugin-jsx": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", - "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.12.3", - "@svgr/babel-preset": "^5.5.0", - "@svgr/hast-util-to-babel-ast": "^5.5.0", - "svg-parser": "^2.0.2" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { "node": ">=10" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@svgr/plugin-svgo": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", - "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", + "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, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, "license": "MIT", "dependencies": { - "cosmiconfig": "^7.0.0", - "deepmerge": "^4.2.2", - "svgo": "^1.2.2" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "node": ">=16" } }, - "node_modules/@svgr/webpack": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", - "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", + "node_modules/flatted": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/plugin-transform-react-constant-elements": "^7.12.1", - "@babel/preset-env": "^7.12.1", - "@babel/preset-react": "^7.12.5", - "@svgr/core": "^5.5.0", - "@svgr/plugin-jsx": "^5.5.0", - "@svgr/plugin-svgo": "^5.5.0", - "loader-utils": "^2.0.0" + "is-callable": "^1.2.7" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@testing-library/dom": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", - "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", + "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, "license": "MIT", - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^5.0.1", - "aria-query": "5.3.0", - "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.5.0", - "picocolors": "1.1.1", - "pretty-format": "^27.0.2" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=18" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/@testing-library/jest-dom": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", - "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, "license": "MIT", - "dependencies": { - "@adobe/css-tools": "^4.0.1", - "@babel/runtime": "^7.9.2", - "@types/testing-library__jest-dom": "^5.9.1", - "aria-query": "^5.0.0", - "chalk": "^3.0.0", - "css.escape": "^1.5.1", - "dom-accessibility-api": "^0.5.6", - "lodash": "^4.17.15", - "redent": "^3.0.0" - }, - "engines": { - "node": ">=8", - "npm": ">=6", - "yarn": ">=1" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@testing-library/react": { - "version": "13.4.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz", - "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==", + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^8.5.0", - "@types/react-dom": "^18.0.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, - "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@testing-library/react/node_modules/@testing-library/dom": { - "version": "8.20.1", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", - "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^5.0.1", - "aria-query": "5.1.3", - "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.5.0", - "pretty-format": "^27.0.2" - }, "engines": { - "node": ">=12" + "node": ">= 0.4" } }, - "node_modules/@testing-library/react/node_modules/aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", - "license": "Apache-2.0", - "dependencies": { - "deep-equal": "^2.0.5" + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@testing-library/react/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@testing-library/user-event": { - "version": "13.5.0", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz", - "integrity": "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.12.5" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=10", - "npm": ">=6" - }, - "peerDependencies": { - "@testing-library/dom": ">=7.21.4" + "node": ">= 0.4" } }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, "engines": { - "node": ">= 6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "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, "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, "engines": { "node": ">=10.13.0" } }, - "node_modules/@types/aria-query": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", - "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", - "license": "MIT" + "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/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "node_modules/globals": { + "version": "17.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.5.0.tgz", + "integrity": "sha512-qoV+HK2yFl/366t2/Cb3+xxPUo5BuMynomoDmiaZBIdbs+0pYbjfZU+twLhGKp4uCZ/+NbtpVepH5bGCxRyy2g==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.0.0" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "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/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.2" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@types/body-parser": { - "version": "1.19.6", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", - "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "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", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" + "engines": { + "node": ">=8" } }, - "node_modules/@types/bonjour": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", - "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "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, "license": "MIT", "dependencies": { - "@types/node": "*" + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, "license": "MIT", - "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@types/eslint": { - "version": "8.56.12", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.12.tgz", - "integrity": "sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, "license": "MIT", "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, "license": "MIT" }, - "node_modules/@types/express": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz", - "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==", + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, "license": "MIT", "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" + "hermes-estree": "0.25.1" } }, - "node_modules/@types/express-serve-static-core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.0.tgz", - "integrity": "sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==", + "node_modules/html-encoding-sniffer": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-6.0.0.tgz", + "integrity": "sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==", + "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" + "@exodus/bytes": "^1.6.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, - "node_modules/@types/express/node_modules/@types/express-serve-static-core": { - "version": "4.19.7", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz", - "integrity": "sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==", + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" } }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" } }, - "node_modules/@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "license": "MIT" - }, - "node_modules/@types/http-errors": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", - "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", - "license": "MIT" - }, - "node_modules/@types/http-proxy": { - "version": "1.17.16", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", - "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, "license": "MIT", - "dependencies": { - "@types/node": "*" + "engines": { + "node": ">= 4" } }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, "license": "MIT", "dependencies": { - "@types/istanbul-lib-coverage": "*" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" + "engines": { + "node": ">=4" } }, - "node_modules/@types/jest": { - "version": "30.0.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", - "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, "license": "MIT", "dependencies": { - "expect": "^30.0.0", - "pretty-format": "^30.0.0" - } - }, - "node_modules/@types/jest/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "license": "MIT", + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/jest/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=0.8.19" } }, - "node_modules/@types/jest/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "license": "MIT" - }, - "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==", - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "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==", - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.8.0.tgz", - "integrity": "sha512-5x08bUtU8hfboMTrJ7mEO4CpepS9yBwAqcL52y86SWNmbPX8LVbNs3EP4cNrIZgdjk2NAlP2ahNihozpoZIxSg==", + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "license": "MIT", - "dependencies": { - "undici-types": "~7.14.0" + "engines": { + "node": ">=8" } }, - "node_modules/@types/node-forge": { - "version": "1.3.14", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", - "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/@types/parse-json": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "license": "MIT" - }, - "node_modules/@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "license": "MIT" - }, - "node_modules/@types/prop-types": { - "version": "15.7.15", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", - "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", - "license": "MIT" - }, - "node_modules/@types/q": { - "version": "1.5.8", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz", - "integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==", - "license": "MIT" - }, - "node_modules/@types/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", - "license": "MIT" - }, - "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==", - "license": "MIT" - }, - "node_modules/@types/react": { - "version": "18.3.26", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.26.tgz", - "integrity": "sha512-RFA/bURkcKzx/X9oumPG9Vp3D3JUgus/d0b67KB0t5S/raciymilkOa66olh78MUI92QLbEJevO7rvqU/kjwKA==", + "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, "license": "MIT", - "peer": true, - "dependencies": { - "@types/prop-types": "*", - "csstype": "^3.0.2" + "engines": { + "node": ">=10.13.0" } }, - "node_modules/@types/react-dom": { - "version": "18.3.7", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", - "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, "license": "MIT", - "peerDependencies": { - "@types/react": "^18.0.0" + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "license": "MIT" - }, - "node_modules/@types/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", - "license": "MIT" - }, - "node_modules/@types/send": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.0.tgz", - "integrity": "sha512-zBF6vZJn1IaMpg3xUF25VK3gd3l8zwE0ZLRX7dsQyQi+jp4E8mMDJNGDYnYse+bQhYwWERTxVwHpi3dMOq7RKQ==", + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, "license": "MIT", "dependencies": { - "@types/express": "*" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@types/serve-static": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.9.tgz", - "integrity": "sha512-dOTIuqpWLyl3BBXU3maNQsS4A3zuuoYRNIvYSxxhebPfXg2mzWQEPne/nlJ37yOse6uGgR386uTpdsx4D0QZWA==", + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, "license": "MIT", - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "<1" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@types/serve-static/node_modules/@types/send": { - "version": "0.17.5", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", - "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, "license": "MIT", "dependencies": { - "@types/mime": "^1", - "@types/node": "*" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "license": "MIT" - }, - "node_modules/@types/testing-library__jest-dom": { - "version": "5.14.9", - "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", - "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, "license": "MIT", "dependencies": { - "@types/jest": "*" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "license": "MIT" - }, - "node_modules/@types/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "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, "license": "MIT", - "dependencies": { - "@types/node": "*" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, "license": "MIT", "dependencies": { - "@types/yargs-parser": "*" + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "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, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz", - "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==", + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, "license": "MIT", - "dependencies": { - "@typescript-eslint/utils": "5.62.0" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", - "license": "BSD-2-Clause", - "peer": true, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "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, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" + "isobject": "^3.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=0.10.0" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "license": "BSD-2-Clause", + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "call-bound": "^1.0.3" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@typescript-eslint/utils/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==", - "license": "BSD-2-Clause", + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node": ">= 0.4" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" + "which-typed-array": "^1.1.16" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "license": "ISC" - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.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, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT", - "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==", - "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==", - "license": "Apache-2.0" - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "deprecated": "Use your platform's native atob() and btoa() methods instead", - "license": "BSD-3-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==", - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/accepts/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/ace-builds": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.31.1.tgz", - "integrity": "sha512-3DnE5bZF6Ji+l4F5acoLk+rV7mxrUt1C4r61Xy9owp5rVM4lj5NL8GJfoX6Jnnbhx6kKV7Vdpb+Tco+0ORTvhg==", - "license": "BSD-3-Clause" - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "license": "MIT", - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "license": "MIT", - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-phases": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", - "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", - "license": "MIT", - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "acorn": "^8.14.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/address": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", - "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "license": "MIT", - "dependencies": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "engines": { - "node": ">=8.9" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "license": "MIT", - "peer": true, - "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/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/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==", - "license": "MIT" - }, - "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==", - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-html": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.9.tgz", - "integrity": "sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==", - "engines": [ - "node >= 0.8.0" - ], - "license": "Apache-2.0", - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "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==", - "engines": [ - "node >= 0.8.0" - ], - "license": "Apache-2.0", - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ansi-to-html": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.7.2.tgz", - "integrity": "sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g==", - "license": "MIT", - "dependencies": { - "entities": "^2.2.0" - }, - "bin": { - "ansi-to-html": "bin/ansi-to-html" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "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==", - "license": "MIT" - }, - "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==", - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "license": "Apache-2.0", - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.reduce": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.8.tgz", - "integrity": "sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-array-method-boxes-properly": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "is-string": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "license": "MIT" - }, - "node_modules/ast-types-flow": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", - "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", - "license": "MIT" - }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "license": "MIT" - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "license": "ISC", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.21", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", - "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "browserslist": "^4.24.4", - "caniuse-lite": "^1.0.30001702", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.1.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axe-core": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.0.tgz", - "integrity": "sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==", - "license": "MPL-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/axobject-query": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", - "license": "MIT", - "dependencies": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-jest/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/babel-jest/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/babel-loader": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.4.1.tgz", - "integrity": "sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==", - "license": "MIT", - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.4", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/babel-loader/node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", - "license": "MIT", - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">=10", - "npm": ">=6" - } - }, - "node_modules/babel-plugin-named-asset-import": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", - "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==", - "license": "MIT", - "peerDependencies": { - "@babel/core": "^7.1.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", - "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.27.7", - "@babel/helper-define-polyfill-provider": "^0.6.5", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", - "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5", - "core-js-compat": "^3.43.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", - "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-transform-react-remove-prop-types": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", - "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", - "license": "MIT" - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", - "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" - }, - "peerDependencies": { - "@babel/core": "^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", - "license": "MIT", - "dependencies": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-react-app": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.1.0.tgz", - "integrity": "sha512-f9B1xMdnkCIqe+2dHrJsoQFRz7reChaAHE/65SdaykPklQqhme2WaC08oD3is77x9ff98/9EazAKFDZv5rFEQg==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.16.0", - "@babel/plugin-proposal-class-properties": "^7.16.0", - "@babel/plugin-proposal-decorators": "^7.16.4", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", - "@babel/plugin-proposal-numeric-separator": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-private-methods": "^7.16.0", - "@babel/plugin-proposal-private-property-in-object": "^7.16.7", - "@babel/plugin-transform-flow-strip-types": "^7.16.0", - "@babel/plugin-transform-react-display-name": "^7.16.0", - "@babel/plugin-transform-runtime": "^7.16.4", - "@babel/preset-env": "^7.16.4", - "@babel/preset-react": "^7.16.0", - "@babel/preset-typescript": "^7.16.0", - "@babel/runtime": "^7.16.3", - "babel-plugin-macros": "^3.1.0", - "babel-plugin-transform-react-remove-prop-types": "^0.4.24" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/baseline-browser-mapping": { - "version": "2.9.11", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.11.tgz", - "integrity": "sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==", - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.js" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/bfj": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.1.0.tgz", - "integrity": "sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==", - "license": "MIT", - "dependencies": { - "bluebird": "^3.7.2", - "check-types": "^11.2.3", - "hoopy": "^0.1.4", - "jsonpath": "^1.1.1", - "tryer": "^1.0.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "license": "MIT" - }, - "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "license": "MIT", - "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.13.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/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/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==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/bonjour-service": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", - "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "license": "ISC" - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "license": "BSD-2-Clause" - }, - "node_modules/browserslist": { - "version": "4.26.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz", - "integrity": "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==", - "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", - "peer": true, - "dependencies": { - "baseline-browser-mapping": "^2.8.9", - "caniuse-lite": "^1.0.30001746", - "electron-to-chromium": "^1.5.227", - "node-releases": "^2.0.21", - "update-browserslist-db": "^1.1.3" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "license": "MIT", - "engines": { - "node": ">=6" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "license": "MIT", - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "license": "MIT", - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001751", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz", - "integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==", - "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/case-sensitive-paths-webpack-plugin": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", - "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/check-types": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.3.tgz", - "integrity": "sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==", - "license": "MIT" - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "license": "MIT", - "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==", - "license": "ISC", - "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==", - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", - "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", - "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", - "license": "MIT" - }, - "node_modules/clean-css": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", - "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", - "license": "MIT", - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 10.0" - } - }, - "node_modules/clean-css/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "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, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "license": "MIT", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "license": "MIT", - "dependencies": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/coa/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==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/coa/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==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/coa/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==", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/coa/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==", - "license": "MIT" - }, - "node_modules/coa/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==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/coa/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==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/coa/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==", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", - "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", - "license": "MIT" - }, - "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==", - "license": "MIT", - "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==", - "license": "MIT" - }, - "node_modules/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "license": "MIT" - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "license": "MIT" - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "license": "MIT", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", - "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "compressible": "~2.0.18", - "debug": "2.6.9", - "negotiator": "~0.6.4", - "on-headers": "~1.1.0", - "safe-buffer": "5.2.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "license": "MIT" - }, - "node_modules/confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "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==", - "license": "MIT", - "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==", - "license": "MIT", - "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==", - "license": "MIT", - "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==", - "license": "MIT" - }, - "node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", - "license": "MIT", - "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==", - "license": "MIT" - }, - "node_modules/core-js": { - "version": "3.46.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.46.0.tgz", - "integrity": "sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==", - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat": { - "version": "3.46.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.46.0.tgz", - "integrity": "sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==", - "license": "MIT", - "dependencies": { - "browserslist": "^4.26.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-pure": { - "version": "3.46.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.46.0.tgz", - "integrity": "sha512-NMCW30bHNofuhwLhYPt66OLOKTMbOhgTTatKVbaQC3KRHpTCiRIBYvtshr+NBYSnBxwAFhjW/RfJ0XbIjS16rw==", - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "license": "MIT", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/css-blank-pseudo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", - "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", - "license": "CC0-1.0", - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "bin": { - "css-blank-pseudo": "dist/cli.cjs" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/css-declaration-sorter": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", - "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.0.9" - } - }, - "node_modules/css-has-pseudo": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", - "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", - "license": "CC0-1.0", - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "bin": { - "css-has-pseudo": "dist/cli.cjs" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/css-loader": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", - "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", - "license": "MIT", - "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.33", - "postcss-modules-extract-imports": "^3.1.0", - "postcss-modules-local-by-default": "^4.0.5", - "postcss-modules-scope": "^3.2.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, - "node_modules/css-loader/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/css-minimizer-webpack-plugin": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", - "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", - "license": "MIT", - "dependencies": { - "cssnano": "^5.0.6", - "jest-worker": "^27.0.2", - "postcss": "^8.3.5", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@parcel/css": { - "optional": true - }, - "clean-css": { - "optional": true - }, - "csso": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/css-minimizer-webpack-plugin/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==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/css-prefers-color-scheme": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", - "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", - "license": "CC0-1.0", - "bin": { - "css-prefers-color-scheme": "dist/cli.cjs" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "license": "MIT" - }, - "node_modules/css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-tree/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==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "license": "MIT" - }, - "node_modules/cssdb": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.11.2.tgz", - "integrity": "sha512-lhQ32TFkc1X4eTefGfYPvgovRSzIMofHkigfH8nWtyRL4XJLsRhJFreRvEgKzept7x1rjBuy3J/MurXLaFxW/A==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - } - ], - "license": "CC0-1.0" - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssnano": { - "version": "5.1.15", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", - "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", - "license": "MIT", - "dependencies": { - "cssnano-preset-default": "^5.2.14", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-preset-default": { - "version": "5.2.14", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", - "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", - "license": "MIT", - "dependencies": { - "css-declaration-sorter": "^6.3.1", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.1", - "postcss-convert-values": "^5.1.3", - "postcss-discard-comments": "^5.1.2", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.7", - "postcss-merge-rules": "^5.1.4", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.4", - "postcss-minify-selectors": "^5.2.1", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.1", - "postcss-normalize-repeat-style": "^5.1.1", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.1", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.2", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "license": "MIT", - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "license": "CC0-1.0" - }, - "node_modules/csso/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==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "license": "MIT" - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "license": "MIT", - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "license": "MIT" - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "license": "MIT" - }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "license": "BSD-2-Clause" - }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "license": "MIT", - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decimal.js": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", - "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", - "license": "MIT" - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "license": "MIT" - }, - "node_modules/deep-equal": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", - "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.5", - "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.2", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.2", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "license": "MIT" - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "license": "BSD-2-Clause", - "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==", - "license": "MIT", - "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": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/detect-port-alt": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", - "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", - "license": "MIT", - "dependencies": { - "address": "^1.0.1", - "debug": "^2.6.0" - }, - "bin": { - "detect": "bin/detect-port", - "detect-port": "bin/detect-port" - }, - "engines": { - "node": ">= 4.2.1" - } - }, - "node_modules/detect-port-alt/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/detect-port-alt/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "license": "Apache-2.0" - }, - "node_modules/diff-match-patch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", - "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", - "license": "Apache-2.0" - }, - "node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "license": "MIT", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "license": "MIT" - }, - "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==", - "license": "MIT", - "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-accessibility-api": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", - "license": "MIT" - }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "license": "MIT", - "dependencies": { - "utila": "~0.4" - } - }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "deprecated": "Use your platform's native DOMException instead", - "license": "MIT", - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=10" - } - }, - "node_modules/dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "license": "BSD-2-Clause" - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "license": "MIT" - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" - }, - "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==", - "license": "MIT" - }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", - "license": "Apache-2.0", - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.237", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.237.tgz", - "integrity": "sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==" - }, - "node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.18.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", - "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/envinfo": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.18.0.tgz", - "integrity": "sha512-02QGCLRW+Jb8PC270ic02lat+N57iBaWsvHjcJViqp6UVupRB+Vsg7brYPTqEFXvsdTql3KnSczv5ModZFpl8Q==", - "dev": true, - "license": "MIT", - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/error-ex": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", - "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "license": "MIT", - "dependencies": { - "stackframe": "^1.3.4" - } - }, - "node_modules/es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "license": "MIT" - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-get-iterator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", - "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", - "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.6", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.4", - "safe-array-concat": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", - "license": "MIT" - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "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==", - "license": "MIT" - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/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==", - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "license": "MIT", - "peer": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-react-app": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz", - "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.16.0", - "@babel/eslint-parser": "^7.16.3", - "@rushstack/eslint-patch": "^1.1.0", - "@typescript-eslint/eslint-plugin": "^5.5.0", - "@typescript-eslint/parser": "^5.5.0", - "babel-preset-react-app": "^10.0.1", - "confusing-browser-globals": "^1.0.11", - "eslint-plugin-flowtype": "^8.0.3", - "eslint-plugin-import": "^2.25.3", - "eslint-plugin-jest": "^25.3.0", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.27.1", - "eslint-plugin-react-hooks": "^4.3.0", - "eslint-plugin-testing-library": "^5.0.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "eslint": "^8.0.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", - "license": "MIT", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-flowtype": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", - "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", - "license": "BSD-3-Clause", - "dependencies": { - "lodash": "^4.17.21", - "string-natural-compare": "^3.0.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@babel/plugin-syntax-flow": "^7.14.5", - "@babel/plugin-transform-react-jsx": "^7.14.9", - "eslint": "^8.1.0" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", - "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", - "license": "MIT", - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.9", - "array.prototype.findlastindex": "^1.2.6", - "array.prototype.flat": "^1.3.3", - "array.prototype.flatmap": "^1.3.3", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.1", - "hasown": "^2.0.2", - "is-core-module": "^2.16.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.1", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.9", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-jest": { - "version": "25.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", - "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/experimental-utils": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - }, - "jest": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", - "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", - "license": "MIT", - "dependencies": { - "aria-query": "^5.3.2", - "array-includes": "^3.1.8", - "array.prototype.flatmap": "^1.3.2", - "ast-types-flow": "^0.0.8", - "axe-core": "^4.10.0", - "axobject-query": "^4.1.0", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "hasown": "^2.0.2", - "jsx-ast-utils": "^3.3.5", - "language-tags": "^1.0.9", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "safe-regex-test": "^1.0.3", - "string.prototype.includes": "^2.0.1" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.37.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", - "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.3", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.2.1", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.9", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.1", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.12", - "string.prototype.repeat": "^1.0.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", - "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "license": "MIT", - "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/eslint-plugin-testing-library": { - "version": "5.11.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz", - "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/utils": "^5.58.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0", - "npm": ">=6" - }, - "peerDependencies": { - "eslint": "^7.5.0 || ^8.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", - "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==", - "license": "MIT", - "dependencies": { - "@types/eslint": "^7.29.0 || ^8.4.1", - "jest-worker": "^28.0.2", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0", - "webpack": "^5.0.0" - } - }, - "node_modules/eslint-webpack-plugin/node_modules/jest-worker": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", - "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/eslint-webpack-plugin/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==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "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==", - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "license": "MIT" - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "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==", - "license": "MIT" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "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==", - "license": "MIT", - "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/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", - "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", - "license": "MIT", - "dependencies": { - "@jest/expect-utils": "30.2.0", - "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "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" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "license": "MIT", - "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.8" - }, - "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==", - "license": "ISC", - "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==", - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "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, - "license": "MIT", - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "license": "ISC", - "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==", - "license": "Apache-2.0", - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "license": "MIT", - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/file-loader/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==", - "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/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "license": "Apache-2.0", - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/filesize": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", - "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">= 0.4.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==", - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "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/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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, - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "license": "ISC" - }, - "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/foreground-child/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==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", - "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cosmiconfig": "^6.0.0", - "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "memfs": "^3.1.2", - "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=10", - "yarn": ">=1.0.0" - }, - "peerDependencies": { - "eslint": ">= 6", - "typescript": ">= 2.7", - "vue-template-compiler": "*", - "webpack": ">= 4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - } - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "license": "MIT", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/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==", - "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/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/form-data": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.4.tgz", - "integrity": "sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.35" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs-monkey": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", - "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", - "license": "Unlicense" - }, - "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==", - "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==", - "hasInstallScript": true, - "license": "MIT", - "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==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "license": "ISC" - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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", - "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/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==", - "license": "ISC", - "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==", - "license": "BSD-2-Clause" - }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "license": "MIT", - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "license": "MIT", - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "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==", - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "license": "MIT" - }, - "node_modules/gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "license": "MIT", - "dependencies": { - "duplexer": "^0.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/harmony-reflect": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", - "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", - "license": "(Apache-2.0 OR MPL-1.1)" - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "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==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "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==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "license": "MIT", - "bin": { - "he": "bin/he" - } - }, - "node_modules/hoopy": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", - "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", - "license": "MIT", - "engines": { - "node": ">= 6.0.0" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/hpack.js/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" - }, - "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==", - "license": "MIT", - "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==", - "license": "MIT" - }, - "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==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "license": "MIT", - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/html-entities": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", - "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ], - "license": "MIT" - }, - "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==", - "license": "MIT" - }, - "node_modules/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", - "license": "MIT", - "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/html-webpack-plugin": { - "version": "5.6.4", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.4.tgz", - "integrity": "sha512-V/PZeWsqhfpE27nKeX9EO2sbR+D17A+tLf6qU+ht66jdUsN0QLKJN27Z+1+gHrVMKgndBahes0PU6rRihDgHTw==", - "license": "MIT", - "dependencies": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.20.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "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==", - "license": "MIT" - }, - "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==", - "license": "MIT", - "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.10", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", - "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", - "license": "MIT" - }, - "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==", - "license": "MIT", - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "license": "MIT", - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-proxy-middleware": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", - "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", - "license": "MIT", - "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/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "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==", - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/idb": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", - "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", - "license": "ISC" - }, - "node_modules/identity-obj-proxy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", - "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", - "license": "MIT", - "dependencies": { - "harmony-reflect": "^1.4.6" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/immer": { - "version": "9.0.21", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", - "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "license": "MIT", - "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/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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.", - "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==", - "license": "ISC" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "license": "ISC" - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/is-arguments": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "license": "MIT" - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "license": "MIT" - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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==", - "license": "MIT", - "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, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "license": "MIT" - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-root": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", - "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "license": "MIT" - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "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, - "license": "MIT", - "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==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "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==", - "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-report/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==", - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/istanbul-lib-report/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "license": "BSD-3-Clause", - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps/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==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jake": { - "version": "10.9.4", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", - "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", - "license": "Apache-2.0", - "dependencies": { - "async": "^3.2.6", - "filelist": "^1.0.4", - "picocolors": "^1.1.1" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@jest/core": "^27.5.1", - "import-local": "^3.0.2", - "jest-cli": "^27.5.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "execa": "^5.0.0", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-changed-files/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", - "license": "MIT", - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jest-circus/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-circus/node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", - "license": "MIT", - "dependencies": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-cli/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-cli/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jest-cli/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-cli/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-cli/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-config/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jest-config/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-config/node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "license": "MIT", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-diff": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", - "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", - "license": "MIT", - "dependencies": { - "@jest/diff-sequences": "30.0.1", - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "pretty-format": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jest-diff/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-diff/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "license": "MIT" - }, - "node_modules/jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", - "license": "MIT", - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jest-each/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-each/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", - "license": "MIT", - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-environment-jsdom/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jest-environment-jsdom/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-jsdom/node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", - "license": "MIT", - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-environment-node/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jest-environment-node/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-node/node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "license": "MIT", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-haste-map/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-haste-map/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-haste-map/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jest-haste-map/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-haste-map/node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "license": "MIT", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-haste-map/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-haste-map/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", - "license": "MIT", - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-jasmine2/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jest-jasmine2/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-jasmine2/node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", - "license": "MIT", - "dependencies": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", - "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "jest-diff": "30.2.0", - "pretty-format": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jest-matcher-utils/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "license": "MIT" - }, - "node_modules/jest-message-util": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", - "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.2.0", - "@types/stack-utils": "^2.0.3", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "micromatch": "^4.0.8", - "pretty-format": "30.2.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jest-message-util/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "license": "MIT" - }, - "node_modules/jest-mock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", - "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", - "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-util": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "license": "MIT", - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jest-resolve-dependencies/node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "license": "MIT", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jest-resolve/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", - "license": "MIT", - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jest-runner/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runner/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "license": "MIT", - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jest-runtime/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "license": "MIT", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jest-snapshot/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-snapshot/node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-util": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", - "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", - "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "leven": "^3.1.0", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jest-watch-typeahead": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz", - "integrity": "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==", - "license": "MIT", - "dependencies": { - "ansi-escapes": "^4.3.1", - "chalk": "^4.0.0", - "jest-regex-util": "^28.0.0", - "jest-watcher": "^28.0.0", - "slash": "^4.0.0", - "string-length": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "jest": "^27.0.0 || ^28.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/@jest/console": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", - "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/@jest/console/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watch-typeahead/node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.24.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/@jest/test-result": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", - "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", - "license": "MIT", - "dependencies": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "license": "MIT", - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "license": "MIT" - }, - "node_modules/jest-watch-typeahead/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jest-watch-typeahead/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watch-typeahead/node_modules/emittery": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", - "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-message-util/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", - "license": "MIT", - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-watcher": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", - "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", - "license": "MIT", - "dependencies": { - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "jest-util": "^28.1.3", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "license": "MIT", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-watcher/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==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watch-typeahead/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-watch-typeahead/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "license": "MIT", - "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "license": "MIT" - }, - "node_modules/jest-watch-typeahead/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watch-typeahead/node_modules/string-length": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", - "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", - "license": "MIT", - "dependencies": { - "char-regex": "^2.0.0", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watch-typeahead/node_modules/string-length/node_modules/char-regex": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.2.tgz", - "integrity": "sha512-cbGOjAptfM2LVmWhwRFHEKTPkLwNddVmuqYZQt895yXwAsWsXObCG+YN4DGQ/JBtT4GP1a1lPPdio2z413LmTg==", - "license": "MIT", - "engines": { - "node": ">=12.20" - } - }, - "node_modules/jest-watch-typeahead/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", - "license": "MIT", - "dependencies": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.5.1", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-watcher/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-watcher/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jest-watcher/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-watcher/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "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==", - "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==", - "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.7", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", - "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", - "license": "MIT", - "peer": 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==", - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "license": "MIT", - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "license": "MIT" - }, - "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==", - "license": "MIT" - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "license": "(AFL-2.1 OR BSD-3-Clause)" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "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==", - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonpath": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz", - "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", - "license": "MIT", - "dependencies": { - "esprima": "1.2.2", - "static-eval": "2.0.2", - "underscore": "1.12.1" - } - }, - "node_modules/jsonpath/node_modules/esprima": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", - "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/jsonpointer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", - "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/klona": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", - "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/language-subtag-registry": { - "version": "0.3.23", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", - "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", - "license": "CC0-1.0" - }, - "node_modules/language-tags": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", - "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", - "license": "MIT", - "dependencies": { - "language-subtag-registry": "^0.3.20" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/launch-editor": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.11.1.tgz", - "integrity": "sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg==", - "license": "MIT", - "dependencies": { - "picocolors": "^1.1.1", - "shell-quote": "^1.8.3" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "license": "MIT", - "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==", - "license": "MIT" - }, - "node_modules/loader-runner": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", - "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", - "license": "MIT", - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "license": "MIT" - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", - "license": "MIT" - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", - "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", - "license": "MIT" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "license": "MIT" - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", - "license": "MIT" - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "license": "MIT" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "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==", - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/lz-string": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "license": "MIT", - "bin": { - "lz-string": "bin/bin.js" - } - }, - "node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "license": "MIT", - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "license": "BSD-3-Clause", - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "license": "CC0-1.0" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", - "license": "Unlicense", - "dependencies": { - "fs-monkey": "^1.0.4" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "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==", - "license": "MIT", - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "license": "MIT", - "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==", - "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==", - "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==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/mini-css-extract-plugin": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.4.tgz", - "integrity": "sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==", - "license": "MIT", - "dependencies": { - "schema-utils": "^4.0.0", - "tapable": "^2.2.1" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "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==", - "license": "ISC" - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "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==", - "license": "MIT" - }, - "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==", - "license": "MIT", - "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==", - "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "license": "MIT" - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", - "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", - "license": "MIT", - "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==", - "license": "MIT" - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "license": "MIT", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "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==", - "license": "(BSD-3-Clause OR GPL-2.0)", - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.25", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.25.tgz", - "integrity": "sha512-4auku8B/vw5psvTiiN9j1dAOsXvMoGqJuKJcR+dTdqiXEK20mMTk1UEo3HS16LeGQsVG6+qKTPM9u/qQ2LqATA==", - "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==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/nwsapi": { - "version": "2.2.22", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz", - "integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==", - "license": "MIT" - }, - "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==", - "license": "MIT", - "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==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", - "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.8.tgz", - "integrity": "sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==", - "license": "MIT", - "dependencies": { - "array.prototype.reduce": "^1.0.6", - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "gopd": "^1.0.1", - "safe-array-concat": "^1.1.2" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "license": "MIT" - }, - "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==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", - "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", - "license": "MIT", - "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==", - "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==", - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "license": "MIT", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", - "license": "MIT", - "dependencies": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "license": "BlueOak-1.0.0" - }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "license": "MIT" - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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==", - "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==", - "license": "MIT", - "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==", - "license": "MIT" - }, - "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==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "license": "MIT" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/pdo-pglite": { - "resolved": "../packages/pdo-pglite", - "link": true - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "license": "MIT" - }, - "node_modules/php-cgi-wasm": { - "resolved": "../packages/php-cgi-wasm", - "link": true - }, - "node_modules/php-cli-wasm": { - "resolved": "../packages/php-cli-wasm", - "link": true - }, - "node_modules/php-dbg-wasm": { - "resolved": "../packages/php-dbg-wasm", - "link": true - }, - "node_modules/php-wasm": { - "resolved": "../packages/php-wasm", - "link": true - }, - "node_modules/php-wasm-dom": { - "resolved": "../packages/dom", - "link": true - }, - "node_modules/php-wasm-gd": { - "resolved": "../packages/gd", - "link": true - }, - "node_modules/php-wasm-iconv": { - "resolved": "../packages/iconv", - "link": true - }, - "node_modules/php-wasm-intl": { - "resolved": "../packages/intl", - "link": true - }, - "node_modules/php-wasm-libxml": { - "resolved": "../packages/libxml", - "link": true - }, - "node_modules/php-wasm-libzip": { - "resolved": "../packages/libzip", - "link": true - }, - "node_modules/php-wasm-mbstring": { - "resolved": "../packages/mbstring", - "link": true - }, - "node_modules/php-wasm-openssl": { - "resolved": "../packages/openssl", - "link": true - }, - "node_modules/php-wasm-phar": { - "resolved": "../packages/phar", - "link": true - }, - "node_modules/php-wasm-sdl": { - "resolved": "../packages/sdl", - "link": true - }, - "node_modules/php-wasm-simplexml": { - "resolved": "../packages/simplexml", - "link": true - }, - "node_modules/php-wasm-sqlite": { - "resolved": "../packages/sqlite", - "link": true - }, - "node_modules/php-wasm-tidy": { - "resolved": "../packages/tidy", - "link": true - }, - "node_modules/php-wasm-xml": { - "resolved": "../packages/xml", - "link": true - }, - "node_modules/php-wasm-yaml": { - "resolved": "../packages/libyaml", - "link": true - }, - "node_modules/php-wasm-zlib": { - "resolved": "../packages/zlib", - "link": true - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", - "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "license": "MIT", - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "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", - "peer": true, - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-attribute-case-insensitive": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", - "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-browser-comments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", - "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", - "license": "CC0-1.0", - "engines": { - "node": ">=8" - }, - "peerDependencies": { - "browserslist": ">=4", - "postcss": ">=8" - } - }, - "node_modules/postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" - }, - "peerDependencies": { - "postcss": "^8.2.2" - } - }, - "node_modules/postcss-clamp": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", - "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": ">=7.6.0" - }, - "peerDependencies": { - "postcss": "^8.4.6" - } - }, - "node_modules/postcss-color-functional-notation": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", - "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-color-hex-alpha": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", - "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-color-rebeccapurple": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", - "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-colormin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", - "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-convert-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", - "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-custom-media": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", - "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.3" - } - }, - "node_modules/postcss-custom-properties": { - "version": "12.1.11", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", - "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-custom-selectors": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", - "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.3" - } - }, - "node_modules/postcss-dir-pseudo-class": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", - "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", - "license": "CC0-1.0", - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-discard-comments": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", - "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-double-position-gradients": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", - "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", - "license": "CC0-1.0", - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-env-function": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", - "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-flexbugs-fixes": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", - "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", - "license": "MIT", - "peerDependencies": { - "postcss": "^8.1.4" - } - }, - "node_modules/postcss-focus-visible": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", - "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", - "license": "CC0-1.0", - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-focus-within": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", - "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", - "license": "CC0-1.0", - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-font-variant": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", - "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", - "license": "MIT", - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-gap-properties": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", - "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", - "license": "CC0-1.0", - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-image-set-function": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", - "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "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==", - "license": "MIT", - "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-initial": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", - "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", - "license": "MIT", - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-js": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", - "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/postcss-lab-function": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", - "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", - "license": "CC0-1.0", - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-loader": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", - "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", - "license": "MIT", - "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" - } - }, - "node_modules/postcss-loader/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postcss-logical": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", - "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", - "license": "CC0-1.0", - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-media-minmax": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", - "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-merge-longhand": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", - "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-merge-rules": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", - "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", - "license": "MIT", - "dependencies": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-params": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", - "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-selectors": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", - "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", - "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", - "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", - "license": "MIT", - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^7.0.0", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-modules-scope": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", - "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", - "license": "ISC", - "dependencies": { - "postcss-selector-parser": "^7.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "license": "ISC", - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-nested": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", - "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.1.1" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-nesting": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", - "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", - "license": "CC0-1.0", - "dependencies": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-normalize": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz", - "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==", - "license": "CC0-1.0", - "dependencies": { - "@csstools/normalize.css": "*", - "postcss-browser-comments": "^4", - "sanitize.css": "*" - }, - "engines": { - "node": ">= 12" - }, - "peerDependencies": { - "browserslist": ">= 4", - "postcss": ">= 8" - } - }, - "node_modules/postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-positions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", - "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-repeat-style": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", - "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-unicode": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", - "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", - "license": "MIT", - "dependencies": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-opacity-percentage": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", - "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", - "funding": [ - { - "type": "kofi", - "url": "https://ko-fi.com/mrcgrtz" - }, - { - "type": "liberapay", - "url": "https://liberapay.com/mrcgrtz" - } - ], - "license": "MIT", - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-ordered-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", - "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", - "license": "MIT", - "dependencies": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-overflow-shorthand": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", - "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-page-break": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", - "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", - "license": "MIT", - "peerDependencies": { - "postcss": "^8" - } - }, - "node_modules/postcss-place": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", - "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-preset-env": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz", - "integrity": "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==", - "license": "CC0-1.0", - "dependencies": { - "@csstools/postcss-cascade-layers": "^1.1.1", - "@csstools/postcss-color-function": "^1.1.1", - "@csstools/postcss-font-format-keywords": "^1.0.1", - "@csstools/postcss-hwb-function": "^1.0.2", - "@csstools/postcss-ic-unit": "^1.0.1", - "@csstools/postcss-is-pseudo-class": "^2.0.7", - "@csstools/postcss-nested-calc": "^1.0.0", - "@csstools/postcss-normalize-display-values": "^1.0.1", - "@csstools/postcss-oklab-function": "^1.1.1", - "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "@csstools/postcss-stepped-value-functions": "^1.0.1", - "@csstools/postcss-text-decoration-shorthand": "^1.0.0", - "@csstools/postcss-trigonometric-functions": "^1.0.2", - "@csstools/postcss-unset-value": "^1.0.2", - "autoprefixer": "^10.4.13", - "browserslist": "^4.21.4", - "css-blank-pseudo": "^3.0.3", - "css-has-pseudo": "^3.0.4", - "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^7.1.0", - "postcss-attribute-case-insensitive": "^5.0.2", - "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^4.2.4", - "postcss-color-hex-alpha": "^8.0.4", - "postcss-color-rebeccapurple": "^7.1.1", - "postcss-custom-media": "^8.0.2", - "postcss-custom-properties": "^12.1.10", - "postcss-custom-selectors": "^6.0.3", - "postcss-dir-pseudo-class": "^6.0.5", - "postcss-double-position-gradients": "^3.1.2", - "postcss-env-function": "^4.0.6", - "postcss-focus-visible": "^6.0.4", - "postcss-focus-within": "^5.0.4", - "postcss-font-variant": "^5.0.0", - "postcss-gap-properties": "^3.0.5", - "postcss-image-set-function": "^4.0.7", - "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.2.1", - "postcss-logical": "^5.0.4", - "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.2.0", - "postcss-opacity-percentage": "^1.1.2", - "postcss-overflow-shorthand": "^3.0.4", - "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.5", - "postcss-pseudo-class-any-link": "^7.1.6", - "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^6.0.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-pseudo-class-any-link": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", - "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", - "license": "CC0-1.0", - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-reduce-initial": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", - "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-replace-overflow-wrap": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", - "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", - "license": "MIT", - "peerDependencies": { - "postcss": "^8.0.3" - } - }, - "node_modules/postcss-selector-not": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", - "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "license": "MIT", - "peer": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-svgo/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/postcss-svgo/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/postcss-svgo/node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "license": "CC0-1.0" - }, - "node_modules/postcss-svgo/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==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-svgo/node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "license": "MIT", - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "license": "MIT", - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" - } - }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/promise": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", - "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", - "license": "MIT", - "dependencies": { - "asap": "~2.0.6" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" - }, - "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==", + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, "license": "MIT", "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" + "call-bound": "^1.0.3" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-addr/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==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/lupomontero" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "license": "MIT", - "engines": { - "node": ">=6" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">=0.6" + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "license": "MIT" - }, - "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==", - "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/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/quickbus": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/quickbus/-/quickbus-0.0.0.tgz", - "integrity": "sha512-rXndHN7mtJgBsZTLYs4gH2d0tPhuOt4+DEs25pORT5ZSHjVqPSdAxclMefVRHYhp5ZjKQFspBMeFa5/0K/mW6A==", - "peer": true - }, - "node_modules/raf": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", - "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", - "license": "MIT", - "dependencies": { - "performance-now": "^2.1.0" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "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==", - "license": "MIT", - "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==", - "license": "MIT", - "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/raw-body/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==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" }, - "node_modules/react": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "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, "license": "MIT", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/react-ace-builds": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/react-ace-builds/-/react-ace-builds-7.4.1.tgz", - "integrity": "sha512-pvzBDp7Fc0Jv6NDKThF0DziFfClVO/X+YO6qZhhCkHDlQqJOJtxvW1Vq1PVMh+BZa5rUR7nZDvNnMVDk9DfKbg==", - "license": "MIT", - "dependencies": { - "ace-builds": "1.31.1", - "diff-match-patch": "^1.0.5", - "lodash.get": "^4.4.2", - "lodash.isequal": "^4.5.0" - }, - "peerDependencies": { - "react": "^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/react-app-polyfill": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz", - "integrity": "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==", - "license": "MIT", - "dependencies": { - "core-js": "^3.19.2", - "object-assign": "^4.1.1", - "promise": "^8.1.0", - "raf": "^3.4.1", - "regenerator-runtime": "^0.13.9", - "whatwg-fetch": "^3.6.2" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/react-dev-utils": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", - "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.16.0", - "address": "^1.1.2", - "browserslist": "^4.18.1", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "detect-port-alt": "^1.1.6", - "escape-string-regexp": "^4.0.0", - "filesize": "^8.0.6", - "find-up": "^5.0.0", - "fork-ts-checker-webpack-plugin": "^6.5.0", - "global-modules": "^2.0.0", - "globby": "^11.0.4", - "gzip-size": "^6.0.0", - "immer": "^9.0.7", - "is-root": "^2.1.0", - "loader-utils": "^3.2.0", - "open": "^8.4.0", - "pkg-up": "^3.1.0", - "prompts": "^2.4.2", - "react-error-overlay": "^6.0.11", - "recursive-readdir": "^2.2.2", - "shell-quote": "^1.7.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" }, "engines": { - "node": ">=14" + "node": ">= 0.4" } }, - "node_modules/react-dev-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 10.13.0" } }, - "node_modules/react-dev-utils/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "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": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/react-dev-utils/node_modules/loader-utils": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", - "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 12.13.0" + "optional": true, + "peer": true, + "bin": { + "jiti": "bin/jiti.js" } }, - "node_modules/react-dev-utils/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "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==", + "license": "MIT" + }, + "node_modules/jsdom": { + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-27.4.0.tgz", + "integrity": "sha512-mjzqwWRD9Y1J1KUi7W97Gja1bwOOM5Ug0EZ6UDK3xS7j7mndrkwozHtSblfomlzyB4NepioNt+B2sOSzczVgtQ==", + "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" + "@acemir/cssom": "^0.9.28", + "@asamuzakjp/dom-selector": "^6.7.6", + "@exodus/bytes": "^1.6.0", + "cssstyle": "^5.3.4", + "data-urls": "^6.0.0", + "decimal.js": "^10.6.0", + "html-encoding-sniffer": "^6.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "is-potential-custom-element-name": "^1.0.1", + "parse5": "^8.0.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^6.0.0", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^8.0.0", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^15.1.0", + "ws": "^8.18.3", + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=10" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "canvas": "^3.0.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/react-dev-utils/node_modules/p-limit": { + "node_modules/jsesc": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" + "bin": { + "jsesc": "bin/jsesc" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/react-dev-utils/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "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": "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/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" + "bin": { + "json5": "lib/cli.js" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" }, - "peerDependencies": { - "react": "^18.3.1" + "engines": { + "node": ">=4.0" } }, - "node_modules/react-error-overlay": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.1.0.tgz", - "integrity": "sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==", - "license": "MIT" - }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "license": "MIT" + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } }, - "node_modules/react-refresh": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", - "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", + "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, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/react-router": { - "version": "6.30.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.1.tgz", - "integrity": "sha512-X1m21aEmxGXqENEPG3T6u0Th7g0aS4ZmoNynhbs+Cn+q+QGTLt+d5IQ2bHAXKzKcxGJjxACpVbnYQSCRcfxHlQ==", + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, "license": "MIT", "dependencies": { - "@remix-run/router": "1.23.0" + "language-subtag-registry": "^0.3.20" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "react": ">=16.8" + "node": ">=0.10" } }, - "node_modules/react-router-dom": { - "version": "6.30.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.1.tgz", - "integrity": "sha512-llKsgOkZdbPU1Eg3zK8lCn+sjD9wMRZZPuzmdWWX5SUs8OFkN5HnFVC0u5KMeMaC9aoancFI/KoLuKPqN+hxHw==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, "license": "MIT", "dependencies": { - "@remix-run/router": "1.23.0", - "react-router": "6.30.1" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "react": ">=16.8", - "react-dom": ">=16.8" + "node": ">= 0.8.0" } }, - "node_modules/react-scripts": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", - "integrity": "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.16.0", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", - "@svgr/webpack": "^5.5.0", - "babel-jest": "^27.4.2", - "babel-loader": "^8.2.3", - "babel-plugin-named-asset-import": "^0.3.8", - "babel-preset-react-app": "^10.0.1", - "bfj": "^7.0.2", - "browserslist": "^4.18.1", - "camelcase": "^6.2.1", - "case-sensitive-paths-webpack-plugin": "^2.4.0", - "css-loader": "^6.5.1", - "css-minimizer-webpack-plugin": "^3.2.0", - "dotenv": "^10.0.0", - "dotenv-expand": "^5.1.0", - "eslint": "^8.3.0", - "eslint-config-react-app": "^7.0.1", - "eslint-webpack-plugin": "^3.1.1", - "file-loader": "^6.2.0", - "fs-extra": "^10.0.0", - "html-webpack-plugin": "^5.5.0", - "identity-obj-proxy": "^3.0.0", - "jest": "^27.4.3", - "jest-resolve": "^27.4.2", - "jest-watch-typeahead": "^1.0.0", - "mini-css-extract-plugin": "^2.4.5", - "postcss": "^8.4.4", - "postcss-flexbugs-fixes": "^5.0.2", - "postcss-loader": "^6.2.1", - "postcss-normalize": "^10.0.1", - "postcss-preset-env": "^7.0.1", - "prompts": "^2.4.2", - "react-app-polyfill": "^3.0.0", - "react-dev-utils": "^12.0.1", - "react-refresh": "^0.11.0", - "resolve": "^1.20.0", - "resolve-url-loader": "^4.0.0", - "sass-loader": "^12.3.0", - "semver": "^7.3.5", - "source-map-loader": "^3.0.0", - "style-loader": "^3.3.1", - "tailwindcss": "^3.0.2", - "terser-webpack-plugin": "^5.2.5", - "webpack": "^5.64.4", - "webpack-dev-server": "^4.6.0", - "webpack-manifest-plugin": "^4.0.2", - "workbox-webpack-plugin": "^6.4.1" - }, - "bin": { - "react-scripts": "bin/react-scripts.js" + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "license": "MPL-2.0", + "optional": true, + "peer": true, + "dependencies": { + "detect-libc": "^2.0.3" }, "engines": { - "node": ">=14.0.0" + "node": ">= 12.0.0" }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" }, - "peerDependencies": { - "react": ">= 16", - "typescript": "^3.2.1 || ^4" + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/react-scripts/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, "engines": { - "node": ">=10" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "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==", - "license": "MIT", - "dependencies": { - "pify": "^2.3.0" + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "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==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, "engines": { - "node": ">= 6" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": ">=8.10.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/readdirp/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": ">=8.6" + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "resolve": "^1.20.0" - }, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": ">= 10.13.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/recursive-readdir": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", - "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", - "license": "MIT", - "dependencies": { - "minimatch": "^3.0.5" - }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": ">=6.0.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "license": "MIT", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": ">=8" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "peer": true, "engines": { - "node": ">= 0.4" + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "license": "MIT" - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", - "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.2" - }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "peer": true, "engines": { - "node": ">=4" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "license": "MIT" - }, - "node_modules/regex-parser": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.1.tgz", - "integrity": "sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==", - "license": "MIT" - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "node_modules/loader-runner": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.2.tgz", + "integrity": "sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==", + "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, "engines": { - "node": ">= 0.4" + "node": ">=6.11.5" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/regexpu-core": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", - "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, "license": "MIT", "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.2.2", - "regjsgen": "^0.8.0", - "regjsparser": "^0.13.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.2.1" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", "license": "MIT" }, - "node_modules/regjsparser": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", - "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", - "license": "BSD-2-Clause", + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", "dependencies": { - "jsesc": "~3.1.0" + "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "license": "MIT", - "engines": { - "node": ">= 0.10" + "loose-envify": "cli.js" } }, - "node_modules/renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "license": "MIT", + "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, + "license": "ISC", "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" + "yallist": "^3.0.2" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "peer": true, + "bin": { + "lz-string": "bin/bin.js" } }, - "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==", + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "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==", + "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/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "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/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==", + "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": { - "resolve-from": "^5.0.0" + "mime-db": "1.52.0" }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "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==", + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/resolve-url-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", - "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", - "license": "MIT", + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", "dependencies": { - "adjust-sourcemap-loader": "^4.0.0", - "convert-source-map": "^1.7.0", - "loader-utils": "^2.0.0", - "postcss": "^7.0.35", - "source-map": "0.6.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8.9" - }, - "peerDependencies": { - "rework": "1.0.1", - "rework-visit": "1.0.0" - }, - "peerDependenciesMeta": { - "rework": { - "optional": true - }, - "rework-visit": { - "optional": true - } + "node": "*" } }, - "node_modules/resolve-url-loader/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "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, "license": "MIT" }, - "node_modules/resolve-url-loader/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "license": "ISC" - }, - "node_modules/resolve-url-loader/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "bin": { + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/resolve-url-loader/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==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" }, - "node_modules/resolve.exports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", - "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", - "license": "MIT", - "engines": { - "node": ">=10" - } + "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/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "license": "MIT", - "engines": { - "node": ">= 4" - } + "node_modules/node-releases": { + "version": "2.0.38", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.38.tgz", + "integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==", + "dev": true, + "license": "MIT" }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "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==", "license": "MIT", "engines": { - "iojs": ">=1.0.0", "node": ">=0.10.0" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/rollup": { - "version": "2.79.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", - "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", + "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", - "peer": true, - "bin": { - "rollup": "dist/bin/rollup" - }, "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">= 0.4" } }, - "node_modules/rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" }, - "peerDependencies": { - "rollup": "^2.0.0" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/rollup-plugin-terser/node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" }, "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" + "node": ">= 0.4" } }, - "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==", - "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/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, "license": "MIT", "dependencies": { - "queue-microtask": "^1.2.2" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=0.4" + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "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" - } + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" ], "license": "MIT" }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8.0" } }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -17820,440 +6118,535 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/sanitize.css": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", - "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==", - "license": "CC0-1.0" - }, - "node_modules/sass-loader": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", - "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "license": "MIT", "dependencies": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", - "sass": "^1.3.0", - "sass-embedded": "*", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - } + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "license": "ISC" - }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "license": "ISC", + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", "dependencies": { - "xmlchars": "^2.2.0" + "p-limit": "^3.0.2" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0" + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "node_modules/parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.1.tgz", + "integrity": "sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==", + "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" + "entities": "^8.0.0" }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-8.0.0.tgz", + "integrity": "sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==", + "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">= 10.13.0" + "node": ">=20.19.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "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, "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT", + "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, + "license": "MIT" + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/pdo-pglite": { + "resolved": "../packages/pdo-pglite", + "link": true + }, + "node_modules/php-cgi-wasm": { + "resolved": "../packages/php-cgi-wasm", + "link": true + }, + "node_modules/php-cli-wasm": { + "resolved": "../packages/php-cli-wasm", + "link": true + }, + "node_modules/php-dbg-wasm": { + "resolved": "../packages/php-dbg-wasm", + "link": true + }, + "node_modules/php-wasm": { + "resolved": "../packages/php-wasm", + "link": true + }, + "node_modules/php-wasm-dom": { + "resolved": "../packages/dom", + "link": true + }, + "node_modules/php-wasm-gd": { + "resolved": "../packages/gd", + "link": true + }, + "node_modules/php-wasm-iconv": { + "resolved": "../packages/iconv", + "link": true + }, + "node_modules/php-wasm-intl": { + "resolved": "../packages/intl", + "link": true + }, + "node_modules/php-wasm-libxml": { + "resolved": "../packages/libxml", + "link": true + }, + "node_modules/php-wasm-libzip": { + "resolved": "../packages/libzip", + "link": true + }, + "node_modules/php-wasm-mbstring": { + "resolved": "../packages/mbstring", + "link": true + }, + "node_modules/php-wasm-openssl": { + "resolved": "../packages/openssl", + "link": true + }, + "node_modules/php-wasm-phar": { + "resolved": "../packages/phar", + "link": true + }, + "node_modules/php-wasm-simplexml": { + "resolved": "../packages/simplexml", + "link": true + }, + "node_modules/php-wasm-sqlite": { + "resolved": "../packages/sqlite", + "link": true + }, + "node_modules/php-wasm-tidy": { + "resolved": "../packages/tidy", + "link": true + }, + "node_modules/php-wasm-xml": { + "resolved": "../packages/xml", + "link": true + }, + "node_modules/php-wasm-xmlreader": { + "resolved": "../packages/xmlreader", + "link": true + }, + "node_modules/php-wasm-xmlwriter": { + "resolved": "../packages/xmlwriter", + "link": true + }, + "node_modules/php-wasm-yaml": { + "resolved": "../packages/libyaml", + "link": true + }, + "node_modules/php-wasm-zlib": { + "resolved": "../packages/zlib", + "link": true + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/schema-utils/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==", + "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, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3" + "find-up": "^4.0.0" }, - "peerDependencies": { - "ajv": "^8.8.2" + "engines": { + "node": ">=8" } }, - "node_modules/schema-utils/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==", - "license": "MIT" - }, - "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==", - "license": "MIT" + "node_modules/pkg-dir/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, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/selfsigned": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", - "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "node_modules/pkg-dir/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, "license": "MIT", "dependencies": { - "@types/node-forge": "^1.3.0", - "node-forge": "^1" + "p-locate": "^4.1.0" }, "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==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node": ">=8" } }, - "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "node_modules/pkg-dir/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, "license": "MIT", "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" + "p-try": "^2.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/pkg-dir/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, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/send/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==", + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">= 0.4" } }, - "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==", - "license": "BSD-3-Clause", + "node_modules/postcss": { + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.12.tgz", + "integrity": "sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==", + "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": { - "randombytes": "^2.1.0" + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" } }, - "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==", + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, "license": "MIT", - "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/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "license": "MIT", + "peer": true, "dependencies": { - "ms": "2.0.0" + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.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==", + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "license": "MIT", + "peer": true, "engines": { - "node": ">= 0.6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "license": "MIT", "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" } }, - "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==", - "license": "ISC" - }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "license": "MIT" }, - "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==", - "license": "ISC" - }, - "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==", + "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": ">= 0.6" + "node": ">=6" } }, - "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "engines": { - "node": ">= 0.8.0" - } + "node_modules/quickbus": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/quickbus/-/quickbus-1.0.1.tgz", + "integrity": "sha512-wUY8xt+bLKY53hqPTjWfyEMEbz7Qmz7nVnojicyRGFoHM2wprOfF9bB/xOaJtzVo1I+G3+4vGeAvyaOeXxMghA==", + "license": "Apache-2.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==", + "node_modules/react": { + "version": "19.2.5", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.5.tgz", + "integrity": "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==", "license": "MIT", - "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": ">=0.10.0" } }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "node_modules/react-ace": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/react-ace/-/react-ace-14.0.1.tgz", + "integrity": "sha512-z6YAZ20PNf/FqmYEic//G/UK6uw0rn21g58ASgHJHl9rfE4nITQLqthr9rHMVQK4ezwohJbp2dGrZpkq979PYQ==", "license": "MIT", "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" + "ace-builds": "^1.36.3", + "diff-match-patch": "^1.0.5", + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "prop-types": "^15.8.1" }, - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "react": "^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "node_modules/react-dom": { + "version": "19.2.5", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.5.tgz", + "integrity": "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==", "license": "MIT", "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" + "scheduler": "^0.27.0" }, - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "react": "^19.2.5" } }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "license": "MIT", + "peer": 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==", + "node_modules/react-refresh": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", + "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", "dev": true, "license": "MIT", - "dependencies": { - "kind-of": "^6.0.2" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "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==", + "node_modules/react-router": { + "version": "6.30.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.1.tgz", + "integrity": "sha512-X1m21aEmxGXqENEPG3T6u0Th7g0aS4ZmoNynhbs+Cn+q+QGTLt+d5IQ2bHAXKzKcxGJjxACpVbnYQSCRcfxHlQ==", "license": "MIT", "dependencies": { - "shebang-regex": "^3.0.0" + "@remix-run/router": "1.23.0" }, "engines": { - "node": ">=8" + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.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==", + "node_modules/react-router-dom": { + "version": "6.30.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.1.tgz", + "integrity": "sha512-llKsgOkZdbPU1Eg3zK8lCn+sjD9wMRZZPuzmdWWX5SUs8OFkN5HnFVC0u5KMeMaC9aoancFI/KoLuKPqN+hxHw==", "license": "MIT", + "dependencies": { + "@remix-run/router": "1.23.0", + "react-router": "6.30.1" + }, "engines": { - "node": ">=8" + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" } }, - "node_modules/shell-quote": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", - "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "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, "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "resolve": "^1.20.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 10.13.0" } }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, "license": "MIT", "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -18262,16 +6655,19 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -18280,17 +6676,30 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "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/resolve": { + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", + "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "engines": { "node": ">= 0.4" @@ -18299,403 +6708,312 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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==", - "license": "ISC" - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "license": "MIT" - }, - "node_modules/slash": { + "node_modules/resolve-cwd": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "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, "license": "MIT", - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "license": "MIT" - }, - "node_modules/source-map": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", - "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">= 12" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "license": "BSD-3-Clause", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/source-map-loader": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz", - "integrity": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==", + "node_modules/rollup": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.2.tgz", + "integrity": "sha512-J9qZyW++QK/09NyN/zeO0dG/1GdGfyp9lV8ajHnRVLfo/uFsbji5mHnDgn/qYdUHyCkM2N+8VyspgZclfAh0eQ==", + "dev": true, "license": "MIT", "dependencies": { - "abab": "^2.0.5", - "iconv-lite": "^0.6.3", - "source-map-js": "^1.0.1" + "@types/estree": "1.0.8" }, - "engines": { - "node": ">= 12.13.0" + "bin": { + "rollup": "dist/bin/rollup" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" }, - "peerDependencies": { - "webpack": "^5.0.0" + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.60.2", + "@rollup/rollup-android-arm64": "4.60.2", + "@rollup/rollup-darwin-arm64": "4.60.2", + "@rollup/rollup-darwin-x64": "4.60.2", + "@rollup/rollup-freebsd-arm64": "4.60.2", + "@rollup/rollup-freebsd-x64": "4.60.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.2", + "@rollup/rollup-linux-arm-musleabihf": "4.60.2", + "@rollup/rollup-linux-arm64-gnu": "4.60.2", + "@rollup/rollup-linux-arm64-musl": "4.60.2", + "@rollup/rollup-linux-loong64-gnu": "4.60.2", + "@rollup/rollup-linux-loong64-musl": "4.60.2", + "@rollup/rollup-linux-ppc64-gnu": "4.60.2", + "@rollup/rollup-linux-ppc64-musl": "4.60.2", + "@rollup/rollup-linux-riscv64-gnu": "4.60.2", + "@rollup/rollup-linux-riscv64-musl": "4.60.2", + "@rollup/rollup-linux-s390x-gnu": "4.60.2", + "@rollup/rollup-linux-x64-gnu": "4.60.2", + "@rollup/rollup-linux-x64-musl": "4.60.2", + "@rollup/rollup-openbsd-x64": "4.60.2", + "@rollup/rollup-openharmony-arm64": "4.60.2", + "@rollup/rollup-win32-arm64-msvc": "4.60.2", + "@rollup/rollup-win32-ia32-msvc": "4.60.2", + "@rollup/rollup-win32-x64-gnu": "4.60.2", + "@rollup/rollup-win32-x64-msvc": "4.60.2", + "fsevents": "~2.3.2" } }, - "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==", + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/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==", - "license": "BSD-3-Clause", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, "engines": { - "node": ">=0.10.0" + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "license": "MIT" - }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, "license": "MIT", "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" + "es-errors": "^1.3.0", + "isarray": "^2.0.5" }, "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==", - "license": "MIT", - "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": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "license": "BSD-3-Clause" - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", - "license": "MIT" - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, "license": "MIT", "dependencies": { - "escape-string-regexp": "^2.0.0" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" }, "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "license": "MIT" - }, - "node_modules/static-eval": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", - "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", - "license": "MIT", - "dependencies": { - "escodegen": "^1.8.1" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/static-eval/node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "license": "BSD-2-Clause", + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "license": "ISC", "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" + "xmlchars": "^2.2.0" }, "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" + "node": ">=v12.22.7" } }, - "node_modules/static-eval/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" }, - "node_modules/static-eval/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, "license": "MIT", "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/static-eval/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "dev": true, "license": "MIT", "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/static-eval/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/static-eval/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==", - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/static-eval/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "node_modules/schema-utils/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": { - "prelude-ls": "~1.1.2" + "fast-deep-equal": "^3.1.3" }, - "engines": { - "node": ">= 0.8.0" + "peerDependencies": { + "ajv": "^8.8.2" } }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" + "node_modules/schema-utils/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/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "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, "license": "MIT", "dependencies": { + "define-data-property": "^1.1.4", "es-errors": "^1.3.0", - "internal-slot": "^1.1.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/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==", + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "~5.2.0" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, "license": "MIT", "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/string-natural-compare": { + "node_modules/shallow-clone": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", - "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", - "license": "MIT" - }, - "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==", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "kind-of": "^6.0.2" }, "engines": { "node": ">=8" } }, - "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==", + "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, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "shebang-regex": "^3.0.0" }, "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==", - "license": "MIT" - }, - "node_modules/string-width/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==", - "license": "MIT" - }, - "node_modules/string.prototype.includes": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", - "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "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, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3" - }, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/string.prototype.matchall": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", - "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "regexp.prototype.flags": "^1.5.3", - "set-function-name": "^2.0.2", - "side-channel": "^1.1.0" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -18704,29 +7022,15 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string.prototype.repeat": { + "node_modules/side-channel-list": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", - "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" }, "engines": { "node": ">= 0.4" @@ -18735,16 +7039,17 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" }, "engines": { "node": ">= 0.4" @@ -18753,15 +7058,18 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -18770,573 +7078,441 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "license": "BSD-2-Clause", - "dependencies": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, - "engines": { - "node": ">=4" - } + "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/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", + "node_modules/sm-no-saccade-style": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/sm-no-saccade-style/-/sm-no-saccade-style-0.1.1.tgz", + "integrity": "sha512-oZkNiX437kNkAk1CiiyCpgPMdSiBaXOpXSAmaZKCbuq+RXXKB44WFnhkzrQ4EVE4N57BT0f5rQKZlI0SrJaISg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" + "@stylistic/eslint-plugin": "^2.11.0", + "@typescript-eslint/parser": "^8.46.2" } }, - "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==", + "node_modules/sm-no-saccade-style/node_modules/@typescript-eslint/parser": { + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.1.tgz", + "integrity": "sha512-HDQH9O/47Dxi1ceDhBXdaldtf/WV9yRYMjbjCuNk3qnaTD564qwv61Y7+gTxwxRKzSrgO5uhtw584igXVuuZkA==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "@typescript-eslint/scope-manager": "8.59.1", + "@typescript-eslint/types": "8.59.1", + "@typescript-eslint/typescript-estree": "8.59.1", + "@typescript-eslint/visitor-keys": "8.59.1", + "debug": "^4.4.3" }, "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", - "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">=6" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "node_modules/sm-no-saccade-style/node_modules/@typescript-eslint/scope-manager": { + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.1.tgz", + "integrity": "sha512-LwuHQI4pDOYVKvmH2dkaJo6YZCSgouVgnS/z7yBPKBMvgtBvyLqiLy9Z6b7+m/TRcX1NFYUqZetI5Y+aT4GEfg==", + "dev": true, "license": "MIT", "dependencies": { - "min-indent": "^1.0.0" + "@typescript-eslint/types": "8.59.1", + "@typescript-eslint/visitor-keys": "8.59.1" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/sm-no-saccade-style/node_modules/@typescript-eslint/types": { + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.1.tgz", + "integrity": "sha512-ZDCjgccSdYPw5Bxh+my4Z0lJU96ZDN7jbBzvmEn0FZx3RtU1C7VWl6NbDx94bwY3V5YsgwRzJPOgeY2Q/nLG8A==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/style-loader": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", - "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", + "node_modules/sm-no-saccade-style/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.1.tgz", + "integrity": "sha512-OUd+vJS05sSkOip+BkZ/2NS8RMxrAAJemsC6vU3kmfLyeaJT0TftHkV9mcx2107MmsBVXXexhVu4F0TZXyMl4g==", + "dev": true, "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.59.1", + "@typescript-eslint/tsconfig-utils": "8.59.1", + "@typescript-eslint/types": "8.59.1", + "@typescript-eslint/visitor-keys": "8.59.1", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" + }, "engines": { - "node": ">= 12.13.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "webpack": "^5.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/stylehacks": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", - "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "node_modules/sm-no-saccade-style/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.1.tgz", + "integrity": "sha512-LdDNl6C5iJExcM0Yh0PwAIBb9PrSiCsWamF/JyEZawm3kFDnRoaq3LGE4bpyRao/fWeGKKyw7icx0YxrLFC5Cg==", + "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" + "@typescript-eslint/types": "8.59.1", + "eslint-visitor-keys": "^5.0.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "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==", + "node_modules/sm-no-saccade-style/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, "license": "MIT", - "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": "18 || 20 || >=22" } }, - "node_modules/sucrase/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "node_modules/sm-no-saccade-style/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, - "node_modules/sucrase/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "license": "MIT", + "node_modules/sm-no-saccade-style/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">= 6" + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/sucrase/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "license": "ISC", + "node_modules/sm-no-saccade-style/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", "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" + "brace-expansion": "^5.0.5" }, - "bin": { - "glob": "dist/esm/bin.mjs" + "engines": { + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/sucrase/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/sm-no-saccade-style/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10" } }, - "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==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "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": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "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==", - "license": "MIT", + "node_modules/source-map-support/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.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/svg-parser": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", - "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "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/svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", - "license": "MIT", - "dependencies": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=4.0.0" - } + "node_modules/std-env": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.1.0.tgz", + "integrity": "sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==", + "dev": true, + "license": "MIT" }, - "node_modules/svgo/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==", + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" }, "engines": { - "node": ">=4" + "node": ">= 0.4" } }, - "node_modules/svgo/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==", + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" }, "engines": { - "node": ">=4" + "node": ">= 0.4" } }, - "node_modules/svgo/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==", + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, "license": "MIT", "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/svgo/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==", - "license": "MIT" - }, - "node_modules/svgo/node_modules/css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "node_modules/svgo/node_modules/css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "license": "BSD-2-Clause", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, "engines": { - "node": ">= 6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/svgo/node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/svgo/node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "license": "BSD-2-Clause" - }, - "node_modules/svgo/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==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/svgo/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==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/svgo/node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "~1.0.0" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/svgo/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==", + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "license": "MIT" - }, - "node_modules/tailwindcss": { - "version": "3.4.18", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.18.tgz", - "integrity": "sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ==", + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, "license": "MIT", "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.6.0", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.3.2", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.21.7", - "lilconfig": "^3.1.3", - "micromatch": "^4.0.8", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.1.1", - "postcss": "^8.4.47", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", - "postcss-nested": "^6.2.0", - "postcss-selector-parser": "^6.1.2", - "resolve": "^1.22.8", - "sucrase": "^3.35.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" }, "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tailwindcss/node_modules/lilconfig": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", - "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", - "license": "MIT", - "engines": { - "node": ">=14" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/antonk52" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tailwindcss/node_modules/postcss-load-config": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", - "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, "license": "MIT", "dependencies": { - "lilconfig": "^3.1.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "jiti": ">=1.21.0", - "postcss": ">=8.0.9", - "tsx": "^4.8.1", - "yaml": "^2.4.2" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - }, - "postcss": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tapable": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", - "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, "engines": { - "node": ">=6" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/tempy": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", - "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, "license": "MIT", - "dependencies": { - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tempy/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "license": "(MIT OR CC0-1.0)", + "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": ">=10" + "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, + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "dev": true, "license": "MIT", - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, "engines": { - "node": ">=8" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/terser": { "version": "5.44.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz", "integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -19352,15 +7528,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", - "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-UYhptBwhWvfIjKd/UuFo6D8uq9xpGLDK+z8EDsj/zWhrTaH34cKEbrkMKfV5YWqGBvAYA3tlzZbs2R+qYrbQJA==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", - "serialize-javascript": "^6.0.2", "terser": "^5.31.1" }, "engines": { @@ -19389,200 +7565,117 @@ "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": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "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/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "license": "MIT", - "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==", + "node_modules/tinyexec": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.1.2.tgz", + "integrity": "sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==", + "dev": true, "license": "MIT", - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, "engines": { - "node": ">=0.8" + "node": ">=18" } }, - "node_modules/throat": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", - "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", - "license": "MIT" - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "license": "MIT" - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "license": "BSD-3-Clause" - }, - "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==", + "node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "dev": true, "license": "MIT", "dependencies": { - "is-number": "^7.0.0" + "fdir": "^6.5.0", + "picomatch": "^4.0.4" }, "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==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + "node": ">=12.0.0" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "node_modules/tinyrainbow": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", + "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 4.0.0" + "node": ">=14.0.0" } }, - "node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "node_modules/tldts": { + "version": "7.0.29", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.29.tgz", + "integrity": "sha512-JIXCerhudr/N6OWLwLF1HVsTTUo7ry6qHa5eWZEkiMuxsIiAACL55tGLfqfHfoH7QaMQUW8fngD7u7TxWexYQg==", + "dev": true, "license": "MIT", "dependencies": { - "punycode": "^2.1.1" + "tldts-core": "^7.0.29" }, - "engines": { - "node": ">=8" + "bin": { + "tldts": "bin/cli.js" } }, - "node_modules/tryer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "node_modules/tldts-core": { + "version": "7.0.29", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.29.tgz", + "integrity": "sha512-W99NuU7b1DcG3uJ3v9k9VztCH3WialNbBkBft5wCs8V8mexu0XQqaZEYb9l9RNNzK8+3EJ9PKWB0/RUtTQ/o+Q==", + "dev": true, "license": "MIT" }, - "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==", - "license": "Apache-2.0" - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "license": "MIT", + "node_modules/tough-cookie": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.1.tgz", + "integrity": "sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" + "tldts": "^7.0.5" + }, + "engines": { + "node": ">=16" } }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "node_modules/tr46": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz", + "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==", + "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.0" + "punycode": "^2.3.1" }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "license": "MIT", "engines": { - "node": ">=4" + "node": ">=20" } }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", + "dev": true, "license": "MIT", - "dependencies": { - "tslib": "^1.8.1" - }, "engines": { - "node": ">= 6" + "node": ">=18.12" }, "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "typescript": ">=4.8.4" } }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" @@ -19591,45 +7684,11 @@ "node": ">= 0.8.0" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "license": "(MIT OR CC0-1.0)", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/typed-array-buffer": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -19644,6 +7703,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -19663,6 +7723,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", @@ -19684,6 +7745,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -19700,19 +7762,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "license": "MIT", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, "node_modules/typescript": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, "license": "Apache-2.0", "peer": true, "bin": { @@ -19720,129 +7774,40 @@ "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/underscore": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", - "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", - "license": "MIT" - }, - "node_modules/undici-types": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.14.0.tgz", - "integrity": "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==", - "license": "MIT" - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", - "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "license": "MIT", - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", - "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", - "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "license": "MIT", - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" + "node": ">=4.2.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==", + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, "engines": { - "node": ">= 0.8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", + "node_modules/undici-types": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.14.0.tgz", + "integrity": "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==", + "dev": true, "license": "MIT" }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "license": "MIT", - "engines": { - "node": ">=4", - "yarn": "*" - } - }, "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, "funding": [ { "type": "opencollective", @@ -19873,139 +7838,217 @@ "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/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.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==", - "license": "MIT" - }, - "node_modules/util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "node_modules/vite": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.2.tgz", + "integrity": "sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==", + "dev": true, "license": "MIT", "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "license": "MIT" - }, - "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==", - "license": "MIT", "engines": { - "node": ">= 0.4.0" + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } } }, - "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==", + "node_modules/vitest": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.5.tgz", + "integrity": "sha512-9Xx1v3/ih3m9hN+SbfkUyy0JAs72ap3r7joc87XL6jwF0jGg6mFBvQ1SrwaX+h8BlkX6Hz9shdd1uo6AF+ZGpg==", + "dev": true, "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", - "license": "ISC", "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" + "@vitest/expect": "4.1.5", + "@vitest/mocker": "4.1.5", + "@vitest/pretty-format": "4.1.5", + "@vitest/runner": "4.1.5", + "@vitest/snapshot": "4.1.5", + "@vitest/spy": "4.1.5", + "@vitest/utils": "4.1.5", + "es-module-lexer": "^2.0.0", + "expect-type": "^1.3.0", + "magic-string": "^0.30.21", + "obug": "^2.1.1", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "std-env": "^4.0.0-rc.1", + "tinybench": "^2.9.0", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.1.0", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" }, "engines": { - "node": ">=10.12.0" + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.1.5", + "@vitest/browser-preview": "4.1.5", + "@vitest/browser-webdriverio": "4.1.5", + "@vitest/coverage-istanbul": "4.1.5", + "@vitest/coverage-v8": "4.1.5", + "@vitest/ui": "4.1.5", + "happy-dom": "*", + "jsdom": "*", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { + "optional": true + }, + "@vitest/coverage-istanbul": { + "optional": true + }, + "@vitest/coverage-v8": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + }, + "vite": { + "optional": false + } } }, - "node_modules/v8-to-istanbul/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "license": "MIT" - }, - "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==", + "node_modules/vitest/node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.8" + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" } }, "node_modules/vscode-react": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/vscode-react/-/vscode-react-0.1.5.tgz", - "integrity": "sha512-me/87BpMpHYhjGbViqq43GhyLoGiwA0yCp8m6LMxQh1iOu2jXlx28c5D/O3QrxndbysSp7v1sGdXtXFf7PgrdQ==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/vscode-react/-/vscode-react-0.2.2.tgz", + "integrity": "sha512-Eym6nNee98ZgOLaL/cJclk+/0kNJCPtnkKrBoeB1f6AsLVYd5WKBn9XCTs+DWWHokc54W+lIGZf6tQFgJxT9+w==", + "license": "Apache-2.0", + "dependencies": { + "quickbus": "^1.0.0" + }, "peerDependencies": { - "quickbus": "*", "react": ">=18.0.0" } }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", - "license": "MIT", - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, "license": "MIT", "dependencies": { - "xml-name-validator": "^3.0.0" + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=10" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "license": "Apache-2.0", - "dependencies": { - "makeerror": "1.0.12" + "node": ">=18" } }, "node_modules/watchpack": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", - "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", + "dev": true, "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", @@ -20015,15 +8058,6 @@ "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==", - "license": "MIT", - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, "node_modules/web-vitals": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz", @@ -20031,20 +8065,21 @@ "license": "Apache-2.0" }, "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.1.tgz", + "integrity": "sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==", + "dev": true, "license": "BSD-2-Clause", "engines": { - "node": ">=10.4" + "node": ">=20" } }, "node_modules/webpack": { - "version": "5.99.6", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.6.tgz", - "integrity": "sha512-TJOLrJ6oeccsGWPl7ujCYuc0pIq2cNsuD6GZDma8i5o5Npvcco/z+NKvZSFsP0/x6SShVb0+X2JK/JHUjKY9dQ==", + "version": "5.102.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.102.1.tgz", + "integrity": "sha512-7h/weGm9d/ywQ6qzJ+Xy+r9n/3qgp/thalBbpOi5i223dPXKi04IBtqPN9nTd+jBc7QKfvDbaBnFipYp4sJAUQ==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -20094,7 +8129,6 @@ "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^2.1.1", @@ -20135,158 +8169,6 @@ } } }, - "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, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/webpack-dev-middleware": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", - "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", - "license": "MIT", - "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-dev-server": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", - "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.5", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "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.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.4", - "ws": "^8.13.0" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - }, - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "license": "MIT", - "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-manifest-plugin": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz", - "integrity": "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==", - "license": "MIT", - "dependencies": { - "tapable": "^2.0.0", - "webpack-sources": "^2.2.0" - }, - "engines": { - "node": ">=12.22.0" - }, - "peerDependencies": { - "webpack": "^4.44.2 || ^5.47.0" - } - }, - "node_modules/webpack-manifest-plugin/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==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", - "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", - "license": "MIT", - "dependencies": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/webpack-merge": { "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", @@ -20303,18 +8185,27 @@ } }, "node_modules/webpack-sources": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", - "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.4.1.tgz", + "integrity": "sha512-eACpxRN02yaawnt+uUNIF7Qje6A9zArxBbcAJjK1PK3S9Ycg5jIuJ8pW4q8EMnwNZCEGltcjkRx1QzOxOkKD8A==", + "dev": true, "license": "MIT", "engines": { "node": ">=10.13.0" } }, + "node_modules/webpack/node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, "node_modules/webpack/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", @@ -20328,85 +8219,41 @@ "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/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "license": "Apache-2.0", - "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==", - "license": "Apache-2.0", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "license": "MIT", - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-encoding/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==", + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/whatwg-fetch": { - "version": "3.6.20", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", - "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", - "license": "MIT" - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "license": "MIT" - }, "node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-15.1.0.tgz", + "integrity": "sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==", + "dev": true, "license": "MIT", "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" + "tr46": "^6.0.0", + "webidl-conversions": "^8.0.0" }, "engines": { - "node": ">=10" + "node": ">=20" } }, "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, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -20422,6 +8269,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, "license": "MIT", "dependencies": { "is-bigint": "^1.1.0", @@ -20441,6 +8289,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -20468,6 +8317,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, "license": "MIT", "dependencies": { "is-map": "^2.0.3", @@ -20486,6 +8336,7 @@ "version": "1.1.19", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", @@ -20503,6 +8354,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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", @@ -20514,400 +8382,24 @@ "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/workbox-background-sync": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.6.0.tgz", - "integrity": "sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==", - "license": "MIT", - "dependencies": { - "idb": "^7.0.1", - "workbox-core": "6.6.0" - } - }, - "node_modules/workbox-broadcast-update": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.6.0.tgz", - "integrity": "sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==", - "license": "MIT", - "dependencies": { - "workbox-core": "6.6.0" - } - }, - "node_modules/workbox-build": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.6.0.tgz", - "integrity": "sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==", - "license": "MIT", - "dependencies": { - "@apideck/better-ajv-errors": "^0.3.1", - "@babel/core": "^7.11.1", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.2", - "@rollup/plugin-babel": "^5.2.0", - "@rollup/plugin-node-resolve": "^11.2.1", - "@rollup/plugin-replace": "^2.4.1", - "@surma/rollup-plugin-off-main-thread": "^2.2.3", - "ajv": "^8.6.0", - "common-tags": "^1.8.0", - "fast-json-stable-stringify": "^2.1.0", - "fs-extra": "^9.0.1", - "glob": "^7.1.6", - "lodash": "^4.17.20", - "pretty-bytes": "^5.3.0", - "rollup": "^2.43.1", - "rollup-plugin-terser": "^7.0.0", - "source-map": "^0.8.0-beta.0", - "stringify-object": "^3.3.0", - "strip-comments": "^2.0.1", - "tempy": "^0.6.0", - "upath": "^1.2.0", - "workbox-background-sync": "6.6.0", - "workbox-broadcast-update": "6.6.0", - "workbox-cacheable-response": "6.6.0", - "workbox-core": "6.6.0", - "workbox-expiration": "6.6.0", - "workbox-google-analytics": "6.6.0", - "workbox-navigation-preload": "6.6.0", - "workbox-precaching": "6.6.0", - "workbox-range-requests": "6.6.0", - "workbox-recipes": "6.6.0", - "workbox-routing": "6.6.0", - "workbox-strategies": "6.6.0", - "workbox-streams": "6.6.0", - "workbox-sw": "6.6.0", - "workbox-window": "6.6.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", - "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", - "license": "MIT", - "dependencies": { - "json-schema": "^0.4.0", - "jsonpointer": "^5.0.0", - "leven": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "ajv": ">=8" - } - }, - "node_modules/workbox-build/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/workbox-build/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==", - "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/workbox-build/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==", - "license": "MIT" - }, - "node_modules/workbox-build/node_modules/source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "deprecated": "The work that was done in this beta branch won't be included in future versions", - "license": "BSD-3-Clause", - "dependencies": { - "whatwg-url": "^7.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/workbox-build/node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "license": "MIT", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/workbox-build/node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "license": "BSD-2-Clause" - }, - "node_modules/workbox-build/node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "license": "MIT", - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/workbox-cacheable-response": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.6.0.tgz", - "integrity": "sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==", - "deprecated": "workbox-background-sync@6.6.0", - "license": "MIT", - "dependencies": { - "workbox-core": "6.6.0" - } - }, - "node_modules/workbox-core": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.6.0.tgz", - "integrity": "sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==", - "license": "MIT" - }, - "node_modules/workbox-expiration": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.6.0.tgz", - "integrity": "sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==", - "license": "MIT", - "dependencies": { - "idb": "^7.0.1", - "workbox-core": "6.6.0" - } - }, - "node_modules/workbox-google-analytics": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.6.0.tgz", - "integrity": "sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==", - "deprecated": "It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained", - "license": "MIT", - "dependencies": { - "workbox-background-sync": "6.6.0", - "workbox-core": "6.6.0", - "workbox-routing": "6.6.0", - "workbox-strategies": "6.6.0" - } - }, - "node_modules/workbox-navigation-preload": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.6.0.tgz", - "integrity": "sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==", - "license": "MIT", - "dependencies": { - "workbox-core": "6.6.0" - } - }, - "node_modules/workbox-precaching": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.6.0.tgz", - "integrity": "sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==", - "license": "MIT", - "dependencies": { - "workbox-core": "6.6.0", - "workbox-routing": "6.6.0", - "workbox-strategies": "6.6.0" - } - }, - "node_modules/workbox-range-requests": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.6.0.tgz", - "integrity": "sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==", - "license": "MIT", - "dependencies": { - "workbox-core": "6.6.0" - } - }, - "node_modules/workbox-recipes": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.6.0.tgz", - "integrity": "sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==", - "license": "MIT", - "dependencies": { - "workbox-cacheable-response": "6.6.0", - "workbox-core": "6.6.0", - "workbox-expiration": "6.6.0", - "workbox-precaching": "6.6.0", - "workbox-routing": "6.6.0", - "workbox-strategies": "6.6.0" - } - }, - "node_modules/workbox-routing": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.6.0.tgz", - "integrity": "sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==", - "license": "MIT", - "dependencies": { - "workbox-core": "6.6.0" - } - }, - "node_modules/workbox-strategies": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.6.0.tgz", - "integrity": "sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==", - "license": "MIT", - "dependencies": { - "workbox-core": "6.6.0" - } - }, - "node_modules/workbox-streams": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.6.0.tgz", - "integrity": "sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==", - "license": "MIT", - "dependencies": { - "workbox-core": "6.6.0", - "workbox-routing": "6.6.0" - } - }, - "node_modules/workbox-sw": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.6.0.tgz", - "integrity": "sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==", - "license": "MIT" - }, - "node_modules/workbox-webpack-plugin": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.0.tgz", - "integrity": "sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==", - "license": "MIT", - "dependencies": { - "fast-json-stable-stringify": "^2.1.0", - "pretty-bytes": "^5.4.1", - "upath": "^1.2.0", - "webpack-sources": "^1.4.3", - "workbox-build": "6.6.0" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "webpack": "^4.4.0 || ^5.9.0" - } - }, - "node_modules/workbox-webpack-plugin/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==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "license": "MIT", - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/workbox-window": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.6.0.tgz", - "integrity": "sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==", - "license": "MIT", - "dependencies": { - "@types/trusted-types": "^2.0.2", - "workbox-core": "6.6.0" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", - "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": { - "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==", - "license": "MIT", - "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/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, "node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", + "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -20919,72 +8411,52 @@ } }, "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "license": "Apache-2.0" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } }, "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, "license": "MIT" }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, "license": "ISC" }, "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", + "dev": true, "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "license": "MIT", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" }, "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "license": "ISC", - "engines": { - "node": ">=10" + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" } }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -20992,6 +8464,29 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zod": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.1.tgz", + "integrity": "sha512-a6ENMBBGZBsnlSebQ/eKCguSBeGKSf4O7BPnqVPmYGtpBYI7VSqoVqw+QcB7kPRjbqPwhYTpFbVj/RqNz/CT0Q==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } } } } diff --git a/demo-web/package.json b/demo-web/package.json index 1a1defd9e..6626b6938 100644 --- a/demo-web/package.json +++ b/demo-web/package.json @@ -4,9 +4,10 @@ "private": true, "dependencies": { "@electric-sql/pglite": "0.2.17", - "@testing-library/jest-dom": "^5.17.0", - "@testing-library/react": "^13.4.0", - "@testing-library/user-event": "^13.5.0", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/react": "^16.3.0", + "@testing-library/user-event": "^14.6.1", + "ace-builds": "^1.43.6", "ansi-to-html": "^0.7.2", "pdo-pglite": "../packages/pdo-pglite", "php-cgi-wasm": "../packages/php-cgi-wasm", @@ -22,35 +23,33 @@ "php-wasm-mbstring": "../packages/mbstring", "php-wasm-openssl": "../packages/openssl", "php-wasm-phar": "../packages/phar", - "php-wasm-sdl": "../packages/sdl", "php-wasm-simplexml": "../packages/simplexml", "php-wasm-sqlite": "../packages/sqlite", "php-wasm-tidy": "../packages/tidy", "php-wasm-xml": "../packages/xml", + "php-wasm-xmlreader": "../packages/xmlreader", + "php-wasm-xmlwriter": "../packages/xmlwriter", "php-wasm-yaml": "../packages/libyaml", "php-wasm-zlib": "../packages/zlib", - "quickbus": "^0.0.0", - "react": "^18.3.1", - "react-ace-builds": "^7.4.1", - "react-dom": "^18.3.1", + "quickbus": "^1.0.1", + "react": "^19.2.0", + "react-ace": "^14.0.1", + "react-dom": "^19.2.0", "react-router-dom": "^6.23.0", - "react-scripts": "5.0.1", - "vscode-react": "^0.1.5", + "vscode-react": "^0.2.2", "web-vitals": "^2.1.4" }, "scripts": { "start": "bash ./npm-start.sh", "build": "bash ./npm-build.sh", - "test": "react-scripts test", - "eject": "react-scripts eject", + "build:app": "vite build", + "build:worker": "node ./scripts/build-worker.cjs", + "test": "vitest run", + "test:watch": "vitest", + "lint": "eslint eslint.config.mjs vite.config.mjs vite.worker.config.mjs src", + "lint:fix": "eslint eslint.config.mjs vite.config.mjs vite.worker.config.mjs src --fix", "clean": "" }, - "eslintConfig": { - "extends": [ - "react-app", - "react-app/jest" - ] - }, "browserslist": { "production": [ ">0.2%", @@ -64,8 +63,20 @@ ] }, "devDependencies": { - "@babel/plugin-proposal-private-property-in-object": "^7.21.11", + "@eslint/js": "^9.39.1", + "@vitejs/plugin-react": "^5.2.0", + "babel-loader": "10.1.0", "baseline-browser-mapping": "^2.9.11", - "webpack-cli": "^5.1.4" + "eslint": "^9.39.1", + "eslint-plugin-jsx-a11y": "^6.10.2", + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-react-hooks": "^7.1.1", + "globals": "^17.5.0", + "jsdom": "^27.0.1", + "sm-no-saccade-style": "^0.1.1", + "vite": "^7.3.2", + "vitest": "^4.1.5", + "webpack": "5.102.1", + "webpack-cli": "5.1.4" } } diff --git a/demo-web/package.local.json b/demo-web/package.local.json index 693deb2c5..b00137209 100644 --- a/demo-web/package.local.json +++ b/demo-web/package.local.json @@ -14,7 +14,6 @@ "php-wasm-mbstring": "../packages/mbstring", "php-wasm-openssl": "../packages/openssl", "php-wasm-phar": "../packages/phar", - "php-wasm-sdl": "../packages/sdl", "php-wasm-simplexml": "../packages/simplexml", "php-wasm-sqlite": "../packages/sqlite", "php-wasm-tidy": "../packages/tidy", @@ -22,4 +21,4 @@ "php-wasm-yaml": "../packages/libyaml", "php-wasm-zlib": "../packages/zlib" } -} \ No newline at end of file +} diff --git a/demo-web/public/.gitignore b/demo-web/public/.gitignore index 6bc4538ec..396b8f4a2 100644 --- a/demo-web/public/.gitignore +++ b/demo-web/public/.gitignore @@ -2,9 +2,5 @@ !.gitignore !/backups/ !/backups/* -!/php-wasm/ -!/php-wasm/* -!/public/ -!/public/* !/scripts/ !/scripts/* diff --git a/demo-web/public/6a6af95f67e70830cb39.data b/demo-web/public/6a6af95f67e70830cb39.data deleted file mode 100644 index 4e6041ff5..000000000 Binary files a/demo-web/public/6a6af95f67e70830cb39.data and /dev/null differ diff --git a/demo-web/public/882a4fc4178bf2b803a6.wasm b/demo-web/public/882a4fc4178bf2b803a6.wasm deleted file mode 100644 index d1659fca9..000000000 Binary files a/demo-web/public/882a4fc4178bf2b803a6.wasm and /dev/null differ diff --git a/demo-web/public/cgi-worker.js b/demo-web/public/cgi-worker.js deleted file mode 100644 index bdd7624b3..000000000 --- a/demo-web/public/cgi-worker.js +++ /dev/null @@ -1,1839 +0,0 @@ -/******/ (() => { // webpackBootstrap -/******/ var __webpack_modules__ = ({ - -/***/ "../packages/php-cgi-wasm lazy recursive ^\\.\\/php.*\\-cgi\\-worker\\.mjs$": -/*!********************************************************************************************!*\ - !*** ../packages/php-cgi-wasm/ lazy ^\.\/php.*\-cgi\-worker\.mjs$ strict namespace object ***! - \********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var map = { - "./php8.3-cgi-worker.mjs": [ - "../packages/php-cgi-wasm/php8.3-cgi-worker.mjs", - "packages_php-cgi-wasm_php8_3-cgi-worker_mjs" - ] -}; -function webpackAsyncContext(req) { - if(!__webpack_require__.o(map, req)) { - return Promise.resolve().then(() => { - var e = new Error("Cannot find module '" + req + "'"); - e.code = 'MODULE_NOT_FOUND'; - throw e; - }); - } - - var ids = map[req], id = ids[0]; - return __webpack_require__.e(ids[1]).then(() => { - return __webpack_require__(id); - }); -} -webpackAsyncContext.keys = () => (Object.keys(map)); -webpackAsyncContext.id = "../packages/php-cgi-wasm lazy recursive ^\\.\\/php.*\\-cgi\\-worker\\.mjs$"; -module.exports = webpackAsyncContext; - -/***/ }), - -/***/ "../packages/php-cgi-wasm/PhpCgiBase.mjs": -/*!***********************************************!*\ - !*** ../packages/php-cgi-wasm/PhpCgiBase.mjs ***! - \***********************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ PhpCgiBase: () => (/* binding */ PhpCgiBase) -/* harmony export */ }); -/* harmony import */ var _parseResponse_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./parseResponse.mjs */ "../packages/php-cgi-wasm/parseResponse.mjs"); -/* harmony import */ var _breakoutRequest_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./breakoutRequest.mjs */ "../packages/php-cgi-wasm/breakoutRequest.mjs"); -/* harmony import */ var _fsOps_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fsOps.mjs */ "../packages/php-cgi-wasm/fsOps.mjs"); -/* harmony import */ var _resolveDependencies_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./resolveDependencies.mjs */ "../packages/php-cgi-wasm/resolveDependencies.mjs"); - - - - - -/** - * An object representing a dynamically loaded data file. - * @typedef {string|object} FileDef - * @property {string} url - * @property {string} path - * @property {string} parent - */ - -/** - * A string or object representing a dynamically loaded shared library. - * @typedef {string|object} LibDef - * @property {string} name - * @property {string} url - * @property {boolean} ini - * @property {function():libDef[]} getLibs - * @property {function():fileDef[]} getFiles - */ - -const STR = 'string'; -const NUM = 'number'; -const putEnv = (php, key, value) => php.ccall('wasm_sapi_cgi_putenv', 'number', ['string', 'string'], [key, value]); -const requestTimes = new WeakMap(); -const noTrailingSlash = s => s.slice(-1) !== '/' ? s : s.slice(0, -1); -const noLeadingSlash = s => s.slice(0, 1) !== '/' ? s : s.slice(1); -const joinPaths = (...args) => [noTrailingSlash(args[0]), -// Don't strip the leading slash on the first segment... -...args.slice(1).map(a => noLeadingSlash(noTrailingSlash(a)))].join('/'); -class CookieJar { - cookies = new Map(); - store(rawCookie) { - let name = null; - const cookie = { - created: Date.now(), - raw: rawCookie - }; - const parts = rawCookie.split(';').map(p => p.trim()); - for (const part of parts) { - const equal = part.indexOf('='); - const key = part.substr(0, equal); - const value = part.substr(1 + equal); - const lowerKey = key.toLowerCase(); - if (!name) { - name = key; - cookie.name = key; - cookie.value = value; - } else if (lowerKey === 'expires') { - cookie[lowerKey] = new Date(value).getTime(); - } else if (lowerKey === 'max-age') { - cookie[lowerKey] = 1000 * Number(value); - } else { - cookie[lowerKey] = value; - } - } - if (cookie.expires && cookie.created >= cookie.expires) { - this.cookies.delete(cookie.name); - } else { - this.cookies.set(cookie.name, cookie); - } - } - retrieve(path = null) { - const cookies = []; - const now = Date.now(); - for (const cookie of this.cookies.values()) { - if (cookie.expires && cookie.expires <= now) { - this.cookies.delete(cookie.name); - continue; - } - if (cookie['max-age'] && cookie['max-age'] >= now - cookie.created) { - this.cookies.delete(cookie.name); - continue; - } - if (path === null || !cookie.path || cookie.path === path.substr(0, cookie.path.length)) { - cookies.push(cookie); - } - } - return cookies; - } - dump(path = null) { - return this.retrieve(path).map(c => c.raw).join('\n'); - } - load(rawCookies) { - rawCookies.trim().split('\n').map(line => this.store(line)); - } - toEnv(path = null) { - return this.retrieve(path).map(e => `${e.name}=${e.value}`).join(';'); - } -} -class PhpCgiBase { - docroot = null; - prefix = '/php-wasm'; - exclude = []; - rewrite = path => path; - cookies = null; - types = {}; - onRequest = () => {}; - notFound = () => {}; - sharedLibs = []; - files = []; - phpArgs = {}; - maxRequestAge = 0; - staticCacheTime = 60_000; - dynamicCacheTime = 0; - vHosts = []; - php = null; - input = []; - output = []; - error = []; - count = 0; - queue = []; - - /** - * Creates a new PHP instance (async) - * @param {*} binLoader - * @param {string} options.prefix The URL path prefix to look for when routing to PHP. - * @param {string} options.docroot The internal directory to use as the public document root. - * @param {string[]} options.exclude Array of URL prefixes to exclude from routing to PHP. - * @param {Array.<{pathPrefix: string, directory: string, entrypoint: string}>} options.vHosts A list of prefixes, directories and entrypoints to serve multiple PHP applications by URL prefix. - * @param {string} options.entrypoint Path to PHP file under docroot to serve as an entrypoint - * @param {function(string):string} options.rewrite Function to rewrite URLs - * @param {object} options.types Mapping of file extensions to mime types to populate the `Content-type` header. - * @param {function()} options.onRequest Function to be executed on each request. - * @param {function(Request):Response|string} options.notFound Function to handle 404s. - * @param {LibDef[]} options.sharedLibs Dynamically load shared libraries with LibDefs - * @param {LibDef[]} options.dynamicLibs Similar to sharedLibs but will NEVER use the ini based loader. - * @param {FileDef[]} options.files Dynamically load files with FileDefs - * @param {boolean} options.autoTransaction Automatically handle FS transactions on each request - * @param {number} options.maxRequestAge Oldest request to process (ms) - * @param {number} options.staticCacheTime Static cache time (ms) - * @param {number} options.dynamicCacheTime Dynamic cache time (ms) - * @param {object} options.env Mapping of environment variable names to values to set inside the server. - */ - constructor(phpBinLoader, { - version, - docroot, - prefix, - exclude, - rewrite, - entrypoint, - cookies, - types, - onRequest, - notFound, - sharedLibs, - dynamicLibs, - actions, - files, - ...args - } = {}) { - this.binLoader = phpBinLoader; - this.phpVersion = version; - this.docroot = docroot || this.docroot; - this.prefix = prefix || this.prefix; - this.exclude = exclude || this.exclude; - this.rewrite = rewrite || this.rewrite; - this.entrypoint = entrypoint || this.entrypoint; - this.cookieJar = new CookieJar(cookies); - this.types = types || this.types; - this.onRequest = onRequest || this.onRequest; - this.notFound = notFound || this.notFound; - this.sharedLibs = sharedLibs || this.sharedLibs; - this.dynamicLibs = dynamicLibs || this.dynamicLibs; - this.files = files || this.files; - this.extraActions = actions || {}; - this.phpArgs = args; - this.autoTransaction = 'autoTransaction' in args ? args.autoTransaction : true; - this.transactionStarted = false; - this.maxRequestAge = args.maxRequestAge || this.maxRequestAge; - this.staticCacheTime = args.staticCacheTime || this.staticCacheTime; - this.dynamicCacheTime = args.dynamicCacheTime || this.dynamicCacheTime; - this.vHosts = args.vHosts || []; - this.env = {}; - Object.assign(this.env, args.env || {}); - this.refresh(); - } - handleInstallEvent(event) { - return event.waitUntil(self.skipWaiting()); - } - handleActivateEvent(event) { - return event.waitUntil(self.clients.claim()); - } - async handleMessageEvent(event) { - const { - data, - source - } = event; - const { - action, - token, - params = [] - } = data; - const actions = ['analyzePath', 'readdir', 'readFile', 'stat', 'mkdir', 'rmdir', 'writeFile', 'rename', 'unlink', 'putEnv', 'refresh', 'getSettings', 'setSettings', 'getEnvs', 'setEnvs', 'storeInit']; - await this.binary; - if (actions.includes(action)) { - let result, error; - try { - result = await this[action](...params); - } catch (_error) { - error = JSON.parse(JSON.stringify(_error)); - console.warn(_error); - } finally { - source.postMessage({ - re: token, - result, - error - }); - } - } else if (action in this.extraActions) { - let result, error; - try { - result = await this.extraActions[action](this, ...params); - } catch (_error) { - error = JSON.parse(JSON.stringify(_error)); - console.warn(_error); - } finally { - source.postMessage({ - re: token, - result, - error - }); - } - } - } - handleFetchEvent(event) { - const url = new URL(event.request.url); - const prefix = this.prefix; - const { - files: sharedLibFiles, - urlLibs: sharedLibUrls - } = (0,_resolveDependencies_mjs__WEBPACK_IMPORTED_MODULE_3__.resolveDependencies)(this.sharedLibs, this); - const { - files: dynamicLibFiles, - urlLibs: dynamicLibUrls - } = (0,_resolveDependencies_mjs__WEBPACK_IMPORTED_MODULE_3__.resolveDependencies)(this.dynamicLibs, this); - let isWhitelisted = false; - let isBlacklisted = false; - if (globalThis.location) { - const libFiles = [...sharedLibFiles, ...dynamicLibFiles]; - const libUrls = { - ...sharedLibUrls, - ...dynamicLibUrls - }; - const staticUrls = [self.location.pathname, ...libFiles.map(file => file.url), ...Object.values(libUrls)].map(url => new URL(url, self.location.origin)).filter(url => url.origin === self.location.origin).map(url => url.pathname); - isWhitelisted = url.pathname.substr(0, prefix.length) === prefix && url.hostname === self.location.hostname; - isBlacklisted = url.pathname.match(/\.wasm$/i) || staticUrls.includes(url.pathname) || this.exclude.findIndex(exclude => url.pathname.substr(0, exclude.length) === exclude) > -1 || false; - } else { - isWhitelisted = url.pathname.substr(0, prefix.length) === prefix; - isBlacklisted = url.pathname.match(/\.wasm$/i) || this.exclude.findIndex(exclude => url.pathname.substr(0, exclude.length) === exclude) > -1 || false; - } - if (isWhitelisted && !isBlacklisted) { - requestTimes.set(event.request, Date.now()); - const response = this.request(event.request); - return event.respondWith(response); - } - } - async _enqueue(callback, params = [], readOnly = false) { - let accept, reject; - const coordinator = new Promise((a, r) => [accept, reject] = [a, r]); - this.queue.push([callback, params, accept, reject]); - if (!this.queue.length) { - return; - } - while (this.queue.length) { - const [callback, params, accept, reject] = this.queue.shift(); - await callback(...params).then(accept).catch(reject); - } - return coordinator; - } - refresh() { - const { - files: sharedLibFiles, - libs: sharedLibs, - urlLibs: sharedLibUrls - } = (0,_resolveDependencies_mjs__WEBPACK_IMPORTED_MODULE_3__.resolveDependencies)(this.sharedLibs, this); - const { - files: dynamicLibFiles, - libs: dynamicLibs, - urlLibs: dynamicLibUrls - } = (0,_resolveDependencies_mjs__WEBPACK_IMPORTED_MODULE_3__.resolveDependencies)(this.dynamicLibs, this); - const userLocateFile = this.phpArgs.locateFile || (() => undefined); - const locateFile = (path, directory) => { - let located = userLocateFile(path, directory); - if (located !== undefined) { - return located; - } - if (sharedLibUrls[path]) { - if (sharedLibUrls[path].protocol === 'file:') { - return sharedLibUrls[path].pathname; - } - return String(sharedLibUrls[path]); - } - if (dynamicLibUrls[path]) { - if (dynamicLibUrls[path].protocol === 'file:') { - return dynamicLibUrls[path].pathname; - } - return String(dynamicLibUrls[path]); - } - - // Suppress attempt to load libxml when - // it hasn't been provided in sharedLibs - if (path === 'libxml2.so') { - return 'data:,'; - } - }; - const phpArgs = { - persist: [{ - mountPath: '/persist' - }, { - mountPath: '/config' - }], - ...this.phpArgs, - stdin: () => this.input ? String(this.input.shift()).charCodeAt(0) : null, - stdout: x => this.output.push(x), - stderr: x => this.error.push(x), - locateFile - }; - return this.binary = this.binLoader.then(({ - default: PHP - }) => new PHP(phpArgs)).then(async php => { - await php.ccall('pib_storage_init', NUM, [], [], { - async: true - }); - if (!php.FS.analyzePath('/preload').exists) { - php.FS.mkdir('/preload'); - } - const allFiles = this.files.concat(sharedLibFiles).concat(dynamicLibFiles); - - // Make sure folder structure exists before preloading files - allFiles.forEach(fileDef => { - const segments = fileDef.parent.split('/'); - let currentPath = ''; - for (const segment of segments) { - if (!segment) continue; - currentPath += segment + '/'; - if (!php.FS.analyzePath(currentPath).exists) { - php.FS.mkdir(currentPath); - } - } - }); - await Promise.all(allFiles.map(fileDef => php.FS.createPreloadedFile(fileDef.parent, fileDef.name, userLocateFile(fileDef.url) ?? fileDef.url, true, false))); - const iniLines = sharedLibs.map(lib => { - if (typeof lib === 'string' || lib instanceof URL) { - return `extension=${lib}`; - } else if (typeof lib === 'object' && lib.ini) { - return `extension=${String(lib.url).split('/').pop()}`; - } - }); - this.phpArgs.ini && iniLines.push(this.phpArgs.ini.replace(/\n\s+/g, '\n')); - php.FS.writeFile('/php.ini', iniLines.join("\n") + "\n", { - encoding: 'utf8' - }); - await php.ccall('wasm_sapi_cgi_init', 'number', [], [], { - async: true - }); - const cookieStat = php.FS.analyzePath('/config/.cookies'); - if (cookieStat.exists) { - this.cookieJar.load(php.FS.readFile('/config/.cookies', { - encoding: 'utf8' - })); - } - this.loadInit(php); - return php; - }); - } - async _beforeRequest() {} - async _afterRequest() {} - async request(request) { - const { - url, - method = 'GET', - get, - post, - contentType - } = await (0,_breakoutRequest_mjs__WEBPACK_IMPORTED_MODULE_1__.breakoutRequest)(request); - if (globalThis.caches) { - const cache = await caches.open('static-v1'); - const cached = await cache.match(url); - if (cached) { - const cacheTime = Number(cached.headers.get('x-php-wasm-cache-time')); - if (this.staticCacheTime > 0 && this.staticCacheTime > Date.now() - cacheTime) { - this.onRequest(request, cached); - return cached; - } - } - } - const php = await this.binary; - await this._beforeRequest(); - let docroot = this.docroot; - let vHostEntrypoint, - vHostPrefix = this.prefix; - for (const { - pathPrefix, - directory, - entrypoint - } of this.vHosts) { - if (pathPrefix === url.pathname.substr(0, pathPrefix.length)) { - docroot = directory; - vHostEntrypoint = entrypoint; - vHostPrefix = pathPrefix; - break; - } - } - const rewrite = this.rewrite(url.pathname); - let scriptName, path; - if (typeof rewrite === 'object') { - scriptName = rewrite.scriptName; - path = docroot + rewrite.path; - } else { - path = joinPaths(docroot, rewrite.substr((vHostPrefix || this.prefix).length)); - scriptName = path; - } - const aboutPath = php.FS.analyzePath(path); - if (vHostEntrypoint) { - if (!aboutPath.exists || aboutPath.object.isFolder) - // Rewrite SCRIPT_NAME to the entrypoint if we don't have a php file... - { - scriptName = joinPaths(vHostPrefix, vHostEntrypoint); - } else { - scriptName = joinPaths(vHostPrefix, rewrite.substr(vHostPrefix.length)); - } - } - let originalPath = url.pathname; - const extension = path.split('.').pop(); - if (extension !== 'php' && extension !== 'phar') { - if (aboutPath.exists && php.FS.isFile(aboutPath.object.mode)) { - // Return static file - const response = new Response(php.FS.readFile(path, { - encoding: 'binary', - url - }), {}); - response.headers.append('x-php-wasm-cache-time', new Date().getTime()); - if (extension in this.types) { - response.headers.append('Content-type', this.types[extension]); - } - if (globalThis.caches) { - const cache = await caches.open('static-v1'); - cache.put(url, response.clone()); - } - this.onRequest(request, response); - return response; - } else if (aboutPath.exists && php.FS.isDir(aboutPath.object.mode) && '/' !== originalPath[-1 + originalPath.length]) { - originalPath += '/'; - } - - // Rewrite to entrypoint or index.php - path = joinPaths(docroot, vHostEntrypoint ?? 'index.php'); - } - - // Ensure query parameters are preserved. - originalPath += url.search; - if (this.maxRequestAge > 0 && Date.now() - requestTimes.get(request) > this.maxRequestAge) { - const response = new Response('408: Request Timed Out.', { - status: 408 - }); - this.onRequest(request, response); - return response; - } - - // path may have changed, so re-check it: - if (!php.FS.analyzePath(path).exists) { - const rawResponse = this.notFound ? this.notFound(request) : '404 - Not Found.'; - if (rawResponse) { - return rawResponse instanceof Response ? rawResponse : new Response(rawResponse, { - status: 404 - }); - } - } - let exitCode = -1; - try { - // We need "return await" otherwise the finally block will run before the lock releases. - return await navigator.locks.request('php-wasm-request-lock', async () => { - this.input = ['POST', 'PUT', 'PATCH'].includes(method) ? post.split('') : []; - this.output = []; - this.error = []; - const selfUrl = new URL(globalThis.location || request.url); - putEnv(php, 'PHP_VERSION', this.phpVersion); - putEnv(php, 'PHP_INI_SCAN_DIR', `/config:/preload:${docroot}`); - putEnv(php, 'PHPRC', '/php.ini'); - for (const [name, value] of Object.entries(this.env)) { - putEnv(php, name, value); - } - const protocol = selfUrl.protocol.substr(0, selfUrl.protocol.length - 1); - putEnv(php, 'SERVER_SOFTWARE', globalThis.navigator ? globalThis.navigator.userAgent : globalThis.process ? 'Node ' + globalThis.process.version : 'Javascript - Unknown'); - putEnv(php, 'REQUEST_METHOD', method); - putEnv(php, 'REMOTE_ADDR', '127.0.0.1'); - putEnv(php, 'HTTP_HOST', selfUrl.host); - putEnv(php, 'REQUEST_SCHEME', protocol); - putEnv(php, 'HTTPS', protocol === 'https' ? 'on' : 'off'); - putEnv(php, 'DOCUMENT_ROOT', docroot); - putEnv(php, 'REQUEST_URI', originalPath); - putEnv(php, 'SCRIPT_NAME', scriptName); - putEnv(php, 'SCRIPT_FILENAME', path); - putEnv(php, 'PATH_TRANSLATED', path); - putEnv(php, 'QUERY_STRING', get); - putEnv(php, 'HTTP_COOKIE', this.cookieJar.toEnv()); - putEnv(php, 'REDIRECT_STATUS', '200'); - putEnv(php, 'CONTENT_TYPE', contentType); - putEnv(php, 'CONTENT_LENGTH', String(this.input.length)); - this.output = []; - exitCode = await php.ccall('main', 'number', ['number', 'string'], [], { - async: true - }); - ++this.count; - const parsedResponse = (0,_parseResponse_mjs__WEBPACK_IMPORTED_MODULE_0__.parseResponse)(this.output); - let status = 200; - if (parsedResponse.headers.has('Status')) { - status = parsedResponse.headers.get('Status').substr(0, 3); - } - for (const rawCookie of parsedResponse.headers.getSetCookie()) { - this.cookieJar.store(rawCookie); - } - php.FS.writeFile('/config/.cookies', this.cookieJar.dump()); - const headers = new Headers(parsedResponse.headers); - if (!headers.has('Content-type')) { - if (extension in this.types) { - headers.set('Content-type', this.types[extension]); - } else { - headers.set('Content-type', 'text/html; charset=utf-8'); - } - } - if (parsedResponse.headers.has('Location')) { - headers.set('Location', parsedResponse.headers.get('Location')); - } - const response = new Response(parsedResponse.body || '', { - status, - headers, - url - }); - this.onRequest(request, response); - return response; - }); - } catch (error) { - console.error(error); - const response = new Response(`500: Internal Server Error.\n` + `=`.repeat(80) + `\n\n` + `Stacktrace:\n${error.stack}\n` + `=`.repeat(80) + `\n\n` + `STDERR:\n${new TextDecoder().decode(new Uint8Array(this.error).buffer)}\n` + `=`.repeat(80) + `\n\n` + `STDOUT:\n${new TextDecoder().decode(new Uint8Array(this.output).buffer)}\n` + `=`.repeat(80) + `\n\n`, { - status: 500 - }); - this.onRequest(request, response); - this.refresh(); - return response; - } finally { - if (exitCode === 0) { - this._afterRequest(); - } else { - console.warn(new TextDecoder().decode(new Uint8Array(this.output).buffer)); - console.error(new TextDecoder().decode(new Uint8Array(this.error).buffer)); - this.refresh(); - } - } - } - analyzePath(path) { - return this._enqueue(_fsOps_mjs__WEBPACK_IMPORTED_MODULE_2__.fsOps.analyzePath, [this.binary, path]); - } - readdir(path) { - return this._enqueue(_fsOps_mjs__WEBPACK_IMPORTED_MODULE_2__.fsOps.readdir, [this.binary, path]); - } - readFile(path, options) { - return this._enqueue(_fsOps_mjs__WEBPACK_IMPORTED_MODULE_2__.fsOps.readFile, [this.binary, path, options]); - } - stat(path) { - return this._enqueue(_fsOps_mjs__WEBPACK_IMPORTED_MODULE_2__.fsOps.stat, [this.binary, path]); - } - mkdir(path) { - return this._enqueue(_fsOps_mjs__WEBPACK_IMPORTED_MODULE_2__.fsOps.mkdir, [this.binary, path]); - } - rmdir(path) { - return this._enqueue(_fsOps_mjs__WEBPACK_IMPORTED_MODULE_2__.fsOps.rmdir, [this.binary, path]); - } - rename(path, newPath) { - return this._enqueue(_fsOps_mjs__WEBPACK_IMPORTED_MODULE_2__.fsOps.rename, [this.binary, path, newPath]); - } - writeFile(path, data, options) { - return this._enqueue(_fsOps_mjs__WEBPACK_IMPORTED_MODULE_2__.fsOps.writeFile, [this.binary, path, data, options]); - } - unlink(path) { - return this._enqueue(_fsOps_mjs__WEBPACK_IMPORTED_MODULE_2__.fsOps.unlink, [this.binary, path]); - } - async putEnv(name, value) { - return (await this.binary).ccall('wasm_sapi_cgi_putenv', 'number', ['string', 'string'], [name, value]); - } - async getSettings() { - return { - docroot: this.docroot, - maxRequestAge: this.maxRequestAge, - staticCacheTime: this.staticCacheTime, - dynamicCacheTime: this.dynamicCacheTime, - vHosts: this.vHosts - }; - } - setSettings({ - docroot, - maxRequestAge, - staticCacheTime, - dynamicCacheTime, - vHosts - }) { - this.docroot = docroot ?? this.docroot; - this.maxRequestAge = maxRequestAge ?? this.maxRequestAge; - this.staticCacheTime = staticCacheTime ?? this.staticCacheTime; - this.dynamicCacheTime = dynamicCacheTime ?? this.dynamicCacheTime; - this.vHosts = vHosts ?? this.vHosts; - } - async getEnvs() { - return { - ...this.env - }; - } - setEnvs(env) { - for (const key of Object.keys(this.env)) { - this.env[key] = undefined; - } - Object.assign(this.env, env); - } - async storeInit() { - const settings = await this.getSettings(); - const env = await this.getEnvs(); - await this.writeFile('/config/init.json', JSON.stringify({ - settings, - env - }, null, 4), { - encoding: 'utf8' - }); - } - loadInit(binary) { - const initPath = '/config/init.json'; - const check = binary.FS.analyzePath(initPath); - if (!check.exists) { - return; - } - const initJson = binary.FS.readFile(initPath, { - encoding: 'utf8' - }); - const init = JSON.parse(initJson || '{}'); - const { - settings, - env - } = init; - this.setSettings(settings); - this.setEnvs(env); - } -} - -/***/ }), - -/***/ "../packages/php-cgi-wasm/PhpCgiWebBase.mjs": -/*!**************************************************!*\ - !*** ../packages/php-cgi-wasm/PhpCgiWebBase.mjs ***! - \**************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ PhpCgiWebBase: () => (/* binding */ PhpCgiWebBase) -/* harmony export */ }); -/* harmony import */ var _PhpCgiBase_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PhpCgiBase.mjs */ "../packages/php-cgi-wasm/PhpCgiBase.mjs"); -/* harmony import */ var _webTransactions_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./webTransactions.mjs */ "../packages/php-cgi-wasm/webTransactions.mjs"); -/* harmony import */ var _resolveDependencies_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./resolveDependencies.mjs */ "../packages/php-cgi-wasm/resolveDependencies.mjs"); - - - -const STR = 'string'; -const NUM = 'number'; -class PhpCgiWebBase extends _PhpCgiBase_mjs__WEBPACK_IMPORTED_MODULE_0__.PhpCgiBase { - startTransaction() { - return (0,_webTransactions_mjs__WEBPACK_IMPORTED_MODULE_1__.startTransaction)(this); - } - commitTransaction(readOnly = false) { - return (0,_webTransactions_mjs__WEBPACK_IMPORTED_MODULE_1__.commitTransaction)(this, readOnly); - } - async _beforeRequest() { - if (!this.initialized) { - const php = await this.binary; - this.loadInit(php); - await navigator.locks.request('php-wasm-fs-lock', () => { - return new Promise((accept, reject) => php.FS.syncfs(true, err => { - if (err) reject(err);else accept(); - })); - }); - } - this.initialized = true; - } - async _afterRequest() { - if (this.phpArgs.staticFS) { - return; - } - const php = await this.binary; - await navigator.locks.request('php-wasm-fs-lock', () => { - return new Promise((accept, reject) => php.FS.syncfs(false, err => { - if (err) reject(err);else accept(); - })); - }); - } - refresh() { - const { - files: sharedLibFiles, - libs: sharedLibs, - urlLibs: sharedLibUrls - } = (0,_resolveDependencies_mjs__WEBPACK_IMPORTED_MODULE_2__.resolveDependencies)(this.sharedLibs, this); - const { - files: dynamicLibFiles, - libs: dynamicLibs, - urlLibs: dynamicLibUrls - } = (0,_resolveDependencies_mjs__WEBPACK_IMPORTED_MODULE_2__.resolveDependencies)(this.dynamicLibs, this); - const userLocateFile = this.phpArgs.locateFile || (() => undefined); - const locateFile = path => { - let located = userLocateFile(path); - if (located !== undefined) { - return located; - } - if (sharedLibUrls[path]) { - return sharedLibUrls[path]; - } - if (dynamicLibUrls[path]) { - return dynamicLibUrls[path]; - } - }; - const phpArgs = { - persist: [{ - mountPath: '/persist' - }, { - mountPath: '/config' - }], - ...this.phpArgs, - stdin: () => this.input ? String(this.input.shift()).charCodeAt(0) : null, - stdout: x => this.output.push(x), - stderr: x => this.error.push(x), - locateFile - }; - this.binary = navigator.locks.request('php-wasm-fs-lock', async () => { - const { - default: PHP - } = await this.binLoader; - const php = await new PHP(phpArgs); - await php.ccall('pib_storage_init', NUM, [], [], { - async: true - }); - if (!php.FS.analyzePath('/preload').exists) { - php.FS.mkdir('/preload'); - } - const allFiles = this.files.concat(sharedLibFiles, dynamicLibFiles); - - // Make sure folder structure exists before preloading files - allFiles.forEach(fileDef => { - const segments = fileDef.parent.split('/'); - let currentPath = ''; - for (const segment of segments) { - if (!segment) continue; - currentPath += segment + '/'; - if (!php.FS.analyzePath(currentPath).exists) { - php.FS.mkdir(currentPath); - } - } - }); - await Promise.all(allFiles.map(fileDef => php.FS.createPreloadedFile(fileDef.parent, fileDef.name, fileDef.url, true, false))); - const iniLines = sharedLibs.map(lib => { - if (typeof lib === 'string' || lib instanceof URL) { - return `extension=${lib}`; - } else if (typeof lib === 'object' && lib.ini) { - return `extension=${String(lib.url).split('/').pop()}`; - } - }); - this.phpArgs.ini && iniLines.push(this.phpArgs.ini.replace(/\n\s+/g, '\n')); - php.FS.writeFile('/php.ini', iniLines.join("\n") + "\n", { - encoding: 'utf8' - }); - await new Promise((accept, reject) => { - php.FS.syncfs(true, error => { - if (error) reject(error);else accept(); - }); - }); - await php.ccall('wasm_sapi_cgi_init', 'number', [], [], { - async: true - }); - const cookieStat = php.FS.analyzePath('/config/.cookies'); - if (cookieStat.exists) { - this.cookieJar.load(php.FS.readFile('/config/.cookies', { - encoding: 'utf8' - })); - } - this.loadInit(php); - return php; - }); - } - async _enqueue(callback, params = [], readOnly = false) { - let accept, reject; - const coordinator = new Promise((a, r) => [accept, reject] = [a, r]); - this.queue.push([callback, params, accept, reject]); - navigator.locks.request('php-wasm-fs-lock', async () => { - if (!this.queue.length) { - return; - } - await (this.autoTransaction ? this.startTransaction() : Promise.resolve()); - do { - const [callback, params, accept, reject] = this.queue.shift(); - await callback(...params).then(accept).catch(reject); - let lockChecks = 5; - while (!this.queue.length && lockChecks--) { - await new Promise(a => setTimeout(a, 5)); - } - } while (this.queue.length); - await (this.autoTransaction ? this.commitTransaction(readOnly) : Promise.resolve()); - }); - return coordinator; - } -} - -/***/ }), - -/***/ "../packages/php-cgi-wasm/PhpCgiWorker.mjs": -/*!*************************************************!*\ - !*** ../packages/php-cgi-wasm/PhpCgiWorker.mjs ***! - \*************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ PhpCgiWorker: () => (/* binding */ PhpCgiWorker) -/* harmony export */ }); -/* harmony import */ var _PhpCgiWebBase_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PhpCgiWebBase.mjs */ "../packages/php-cgi-wasm/PhpCgiWebBase.mjs"); - -const defaultVersion = '8.4'; -class PhpCgiWorker extends _PhpCgiWebBase_mjs__WEBPACK_IMPORTED_MODULE_0__.PhpCgiWebBase { - constructor({ - version, - docroot, - prefix, - rewrite, - cookies, - types, - onRequest, - notFound, - ...args - } = {}) { - super(__webpack_require__("../packages/php-cgi-wasm lazy recursive ^\\.\\/php.*\\-cgi\\-worker\\.mjs$")(`./php${version ?? defaultVersion}-cgi-worker.mjs`), { - version, - docroot, - prefix, - rewrite, - cookies, - types, - onRequest, - notFound, - ...args - }); - } -} - -/***/ }), - -/***/ "../packages/php-cgi-wasm/breakoutRequest.mjs": -/*!****************************************************!*\ - !*** ../packages/php-cgi-wasm/breakoutRequest.mjs ***! - \****************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ breakoutRequest: () => (/* binding */ breakoutRequest) -/* harmony export */ }); -const breakoutRequest = request => { - let getPost = Promise.resolve(''); - if (request.body) { - getPost = new Promise(accept => { - const reader = request.body.getReader(); - const postBody = []; - const processBody = ({ - done, - value - }) => { - if (value) { - postBody.push([...value].map(x => String.fromCharCode(x)).join('')); - } - if (!done) { - return reader.read().then(processBody); - } - accept(postBody.join('')); - }; - return reader.read().then(processBody); - }); - } else if (request.arrayBuffer) { - getPost = request.arrayBuffer().then(buffer => [...new Uint8Array(buffer)].map(x => String.fromCharCode(x)).join('')); - } else if (request.on) { - getPost = new Promise(accept => { - let body = []; - request.on('data', chunk => body.push(chunk)); - request.on('end', () => accept([...new Uint8Array(Buffer.concat(body))].map(x => String.fromCharCode(x)).join(''))); - }); - } - const url = new URL(request.url); - return getPost.then(post => ({ - url, - method: request.method, - get: url.search ? url.search.substr(1) : '', - post: request.method === 'POST' ? post : null, - contentType: request.method === 'POST' ? request.headers && request.headers.get('Content-Type') || 'application/x-www-form-urlencoded' : null - })); -}; - -/***/ }), - -/***/ "../packages/php-cgi-wasm/fsOps.mjs": -/*!******************************************!*\ - !*** ../packages/php-cgi-wasm/fsOps.mjs ***! - \******************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ fsOps: () => (/* binding */ fsOps) -/* harmony export */ }); -class fsOps { - static async analyzePath(binary, path) { - const result = (await binary).FS.analyzePath(path); - if (!result.object) { - return { - exists: false - }; - } - const object = { - exists: true, - id: result.object.id, - mode: result.object.mode, - mount: { - mountpoint: result.object.mount.mountpoint, - mounts: result.object.mount.mounts.map(m => m.mountpoint) - }, - isDevice: result.object.isDevice, - isFolder: result.object.isFolder, - read: result.object.read, - write: result.object.write - }; - return { - ...result, - object, - parentObject: undefined - }; - } - static async readdir(binary, path) { - return (await binary).FS.readdir(path); - } - static async readFile(binary, path, options) { - return (await binary).FS.readFile(path, options); - } - static async stat(binary, path) { - return (await binary).FS.stat(path); - } - static async mkdir(binary, path) { - const php = await binary; - const _result = php.FS.mkdir(path); - return { - id: _result.id, - mode: _result.mode, - mount: { - mountpoint: _result.mount.mountpoint, - mounts: _result.mount.mounts.map(m => m.mountpoint) - }, - isDevice: _result.isDevice, - isFolder: _result.isFolder, - read: _result.read, - write: _result.write - }; - } - static async rmdir(binary, path) { - return (await binary).FS.rmdir(path); - } - static async rename(binary, path, newPath) { - return (await binary).FS.rename(path, newPath); - } - static async writeFile(binary, path, data, options) { - const bin = await binary; - const about = bin.FS.analyzePath(path); - let forced = false; - if (about.object && about.object.mode) { - if (!(about.object.mode & 0o200)) { - await bin.FS.chmod(path, about.object.mode | 0o200); - } - } - const result = bin.FS.writeFile(path, data, options); - if (forced) { - await bin.FS.chmod(path, about.object.mode); - } - return result; - } - static async unlink(binary, path) { - return (await binary).FS.unlink(path); - } - static async chmod(binary, mode) { - return (await binary).FS.chmod(mode); - } -} - -/***/ }), - -/***/ "../packages/php-cgi-wasm/parseResponse.mjs": -/*!**************************************************!*\ - !*** ../packages/php-cgi-wasm/parseResponse.mjs ***! - \**************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ parseResponse: () => (/* binding */ parseResponse) -/* harmony export */ }); -const parseResponse = response => { - const headers = new Headers(); - const line = []; - const decoder = new TextDecoder(); - let i = 0; - for (; i < response.length; i++) { - if (response[i] === 0xD && response[i + 1] === 0xA) - // We're at a CRLF - { - if (line.length) { - const header = decoder.decode(new Uint8Array(line).buffer); - const colon = header.indexOf(':'); - if (colon < 0) { - headers.append(header, true); - } else { - headers.append(header.substring(0, colon), header.substring(colon + 2)); - } - line.length = 0; - i++; - continue; - } else { - i++; - break; - } - } - line.push(response[i]); - } - return { - headers, - body: new Uint8Array(response.slice(1 + i)).buffer - }; -}; - -/***/ }), - -/***/ "../packages/php-cgi-wasm/resolveDependencies.mjs": -/*!********************************************************!*\ - !*** ../packages/php-cgi-wasm/resolveDependencies.mjs ***! - \********************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ resolveDependencies: () => (/* binding */ resolveDependencies) -/* harmony export */ }); -/** - * An object representing files, libs and urlLibs for a shared library. - * @typedef {object} ResolvedDependencies - * @property {FileDef[]} files - * @property {LibDef[]} libs - * @property {Object} urlLibs mapping of resource names to URLs - */ - -/** - * Resolves dependencies related to dynamically loaded shared libs. - * Normalizes LibDefs & FileDefs, and extracts URLs to specified resources. - * @param {LibDef[]} sharedLibs List of LibDefs to resolve dependencies for. - * @param {object} wrapper PHP Object to resolve depencencies for. - * @returns {ResolvedDependencies} Normalized LibDefs, FileDefs, and their URLs. - */ -const resolveDependencies = (sharedLibs, wrapper) => { - const _files = []; - const _libs = []; - (sharedLibs || []).flat().forEach(libDef => { - if (typeof libDef === 'object') { - if (typeof libDef.getLibs === 'function') { - _libs.push(...libDef.getLibs(wrapper)); - } else { - _libs.push(libDef); - } - if (typeof libDef.getFiles === 'function') { - _files.push(...libDef.getFiles(wrapper)); - } - } else { - _libs.push(libDef); - } - }); - const files = _files.map(fileDef => { - const url = new URL(fileDef.url).href; - const path = fileDef.path; - const name = fileDef.name || path.split('/').pop(); - const parent = path.substr(0, path.length - name.length); - return { - parent, - name, - url - }; - }); - const urlLibs = {}; - const libs = _libs.map(libDef => { - if (typeof libDef === 'string' || libDef instanceof URL) { - libDef = String(libDef); - if (libDef.substr(0, 1) == '/' || libDef.substr(0, 2) == './' || libDef.substr(0, 2) == '../' || libDef.substr(0, 8) == 'https://' || libDef.substr(0, 7) == 'http://' || libDef.substr(0, 7) == 'file://') { - const name = libDef.split('/').pop(); - const url = libDef; - urlLibs[name] = url; - return { - name, - url, - ini: true - }; - } - return libDef; - } else if (typeof libDef === 'object') { - const name = libDef.name ?? String(libDef.url).split('/').pop(); - urlLibs[name] = String(libDef.url); - libDef.url = String(libDef.url); - return libDef; - } - }); - return { - files, - libs, - urlLibs - }; -}; - -/***/ }), - -/***/ "../packages/php-cgi-wasm/webTransactions.mjs": -/*!****************************************************!*\ - !*** ../packages/php-cgi-wasm/webTransactions.mjs ***! - \****************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ commitTransaction: () => (/* binding */ commitTransaction), -/* harmony export */ startTransaction: () => (/* binding */ startTransaction) -/* harmony export */ }); -async function startTransaction(wrapper) { - const php = await wrapper.binary; - if (wrapper.transactionStarted || !php.persist) { - return wrapper.transactionStarted; - } - wrapper.transactionStarted = new Promise((accept, reject) => { - return php.FS.syncfs(true, error => { - if (error) { - reject(error); - } else { - accept(); - } - }); - }); - return await wrapper.transactionStarted; -} -async function commitTransaction(wrapper, readOnly = false) { - const php = await wrapper.binary; - if (!php.persist) { - return; - } - if (!wrapper.transactionStarted) { - throw new Error('No transaction initialized.'); - } - if (readOnly) { - wrapper.transactionStarted = false; - return Promise.resolve(); - } - return await new Promise((accept, reject) => { - return php.FS.syncfs(false, error => { - if (error) { - reject(error); - } else { - wrapper.transactionStarted = false; - accept(); - } - }); - }); -} - -/***/ }), - -/***/ "./node_modules/@electric-sql/pglite/dist/chunk-A7RFOIQ7.js": -/*!******************************************************************!*\ - !*** ./node_modules/@electric-sql/pglite/dist/chunk-A7RFOIQ7.js ***! - \******************************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ a: () => (/* binding */ z) -/* harmony export */ }); -/* harmony import */ var _chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-EADU5A67.js */ "./node_modules/@electric-sql/pglite/dist/chunk-EADU5A67.js"); -/* harmony import */ var _chunk_STOZMFXW_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./chunk-STOZMFXW.js */ "./node_modules/@electric-sql/pglite/dist/chunk-STOZMFXW.js"); -/* harmony import */ var _chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chunk-BTBUZ646.js */ "./node_modules/@electric-sql/pglite/dist/chunk-BTBUZ646.js"); -(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.j)();var b,u,r,l,g,h,R,z=class{constructor(){(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.f)(this,r);this.serializers={..._chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_0__.b};this.parsers={..._chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_0__.a};(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.f)(this,b,!1);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.f)(this,u,!1)}async _initArrayTypes({force:t=!1}={}){if((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.e)(this,b)&&!t)return;(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.g)(this,b,!0);let e=await this.query(` - SELECT b.oid, b.typarray - FROM pg_catalog.pg_type a - LEFT JOIN pg_catalog.pg_type b ON b.oid = a.typelem - WHERE a.typcategory = 'A' - GROUP BY b.oid, b.typarray - ORDER BY b.oid - `);for(let s of e.rows)this.serializers[s.typarray]=i=>(0,_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_0__.c)(i,this.serializers[s.oid],s.typarray),this.parsers[s.typarray]=i=>(0,_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_0__.d)(i,this.parsers[s.oid],s.typarray)}async refreshArrayTypes(){await this._initArrayTypes({force:!0})}async query(t,e,s){return await this._checkReady(),await this._runExclusiveTransaction(async()=>await (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.h)(this,r,g).call(this,t,e,s))}async sql(t,...e){let{query:s,params:i}=(0,_chunk_STOZMFXW_js__WEBPACK_IMPORTED_MODULE_1__.d)(t,...e);return await this.query(s,i)}async exec(t,e){return await this._checkReady(),await this._runExclusiveTransaction(async()=>await (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.h)(this,r,h).call(this,t,e))}async describeQuery(t,e){try{await (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.h)(this,r,l).call(this,_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_0__.i.parse({text:t,types:e?.paramTypes}),e);let s=await (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.h)(this,r,l).call(this,_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_0__.i.describe({type:"S"}),e),i=s.messages.find(n=>n.name==="parameterDescription"),c=s.messages.find(n=>n.name==="rowDescription"),y=i?.dataTypeIDs.map(n=>({dataTypeID:n,serializer:this.serializers[n]}))??[],m=c?.fields.map(n=>({name:n.name,dataTypeID:n.dataTypeID,parser:this.parsers[n.dataTypeID]}))??[];return{queryParams:y,resultFields:m}}finally{await (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.h)(this,r,l).call(this,_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_0__.i.sync(),e)}}async transaction(t){return await this._checkReady(),await this._runExclusiveTransaction(async()=>{await (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.h)(this,r,h).call(this,"BEGIN"),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.g)(this,u,!0);let e=!1,s=()=>{if(e)throw new Error("Transaction is closed")},i={query:async(c,y,m)=>(s(),await (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.h)(this,r,g).call(this,c,y,m)),sql:async(c,...y)=>{let{query:m,params:n}=(0,_chunk_STOZMFXW_js__WEBPACK_IMPORTED_MODULE_1__.d)(c,...y);return await (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.h)(this,r,g).call(this,m,n)},exec:async(c,y)=>(s(),await (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.h)(this,r,h).call(this,c,y)),rollback:async()=>{s(),await (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.h)(this,r,h).call(this,"ROLLBACK"),e=!0},get closed(){return e}};try{let c=await t(i);return e||(e=!0,await (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.h)(this,r,h).call(this,"COMMIT")),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.g)(this,u,!1),c}catch(c){throw e||await (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.h)(this,r,h).call(this,"ROLLBACK"),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.g)(this,u,!1),c}})}async runExclusive(t){return await this._runExclusiveQuery(t)}};b=new WeakMap,u=new WeakMap,r=new WeakSet,l=async function(t,e={}){return await this.execProtocol(t,{...e,syncToFs:!1})},g=async function(t,e=[],s){return await this._runExclusiveQuery(async()=>{(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.h)(this,r,R).call(this,"runQuery",t,e,s),await this._handleBlob(s?.blob);let i;try{let{messages:y}=await (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.h)(this,r,l).call(this,_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_0__.i.parse({text:t,types:s?.paramTypes}),s),m=(0,_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_0__.g)((await (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.h)(this,r,l).call(this,_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_0__.i.describe({type:"S"}),s)).messages),n=e.map((T,B)=>{let x=m[B];if(T==null)return null;let _=s?.serializers?.[x]??this.serializers[x];return _?_(T):T.toString()});i=[...y,...(await (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.h)(this,r,l).call(this,_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_0__.i.bind({values:n}),s)).messages,...(await (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.h)(this,r,l).call(this,_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_0__.i.describe({type:"P"}),s)).messages,...(await (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.h)(this,r,l).call(this,_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_0__.i.execute({}),s)).messages]}finally{await (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.h)(this,r,l).call(this,_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_0__.i.sync(),s)}await this._cleanupBlob(),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.e)(this,u)||await this.syncToFs();let c=await this._getWrittenBlob();return (0,_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_0__.f)(i,this.parsers,s,c)[0]})},h=async function(t,e){return await this._runExclusiveQuery(async()=>{(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.h)(this,r,R).call(this,"runExec",t,e),await this._handleBlob(e?.blob);let s;try{s=(await (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.h)(this,r,l).call(this,_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_0__.i.query(t),e)).messages}finally{await (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.h)(this,r,l).call(this,_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_0__.i.sync(),e)}this._cleanupBlob(),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_2__.e)(this,u)||await this.syncToFs();let i=await this._getWrittenBlob();return (0,_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_0__.f)(s,this.parsers,e,i)})},R=function(...t){this.debug>0&&console.log(...t)}; -//# sourceMappingURL=chunk-A7RFOIQ7.js.map - -/***/ }), - -/***/ "./node_modules/@electric-sql/pglite/dist/chunk-BTBUZ646.js": -/*!******************************************************************!*\ - !*** ./node_modules/@electric-sql/pglite/dist/chunk-BTBUZ646.js ***! - \******************************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ a: () => (/* binding */ D), -/* harmony export */ b: () => (/* binding */ F), -/* harmony export */ c: () => (/* binding */ L), -/* harmony export */ d: () => (/* binding */ P), -/* harmony export */ e: () => (/* binding */ h), -/* harmony export */ f: () => (/* binding */ R), -/* harmony export */ g: () => (/* binding */ x), -/* harmony export */ h: () => (/* binding */ T), -/* harmony export */ i: () => (/* binding */ U), -/* harmony export */ j: () => (/* binding */ u) -/* harmony export */ }); -var p=Object.create;var i=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty;var a=t=>{throw TypeError(t)};var _=(t,e,o)=>e in t?i(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o;var d=(t,e)=>()=>(t&&(e=t(t=0)),e);var D=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),F=(t,e)=>{for(var o in e)i(t,o,{get:e[o],enumerable:!0})},g=(t,e,o,m)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of f(e))!s.call(t,r)&&r!==o&&i(t,r,{get:()=>e[r],enumerable:!(m=c(e,r))||m.enumerable});return t};var L=(t,e,o)=>(o=t!=null?p(l(t)):{},g(e||!t||!t.__esModule?i(o,"default",{value:t,enumerable:!0}):o,t));var P=(t,e,o)=>_(t,typeof e!="symbol"?e+"":e,o),n=(t,e,o)=>e.has(t)||a("Cannot "+o);var h=(t,e,o)=>(n(t,e,"read from private field"),o?o.call(t):e.get(t)),R=(t,e,o)=>e.has(t)?a("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,o),x=(t,e,o,m)=>(n(t,e,"write to private field"),m?m.call(t,o):e.set(t,o),o),T=(t,e,o)=>(n(t,e,"access private method"),o);var U=(t,e,o,m)=>({set _(r){x(t,e,r,o)},get _(){return h(t,e,m)}});var u=d(()=>{"use strict"}); -//# sourceMappingURL=chunk-BTBUZ646.js.map - -/***/ }), - -/***/ "./node_modules/@electric-sql/pglite/dist/chunk-EADU5A67.js": -/*!******************************************************************!*\ - !*** ./node_modules/@electric-sql/pglite/dist/chunk-EADU5A67.js ***! - \******************************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ a: () => (/* binding */ ln), -/* harmony export */ b: () => (/* binding */ cn), -/* harmony export */ c: () => (/* binding */ Ke), -/* harmony export */ d: () => (/* binding */ yn), -/* harmony export */ e: () => (/* binding */ hn), -/* harmony export */ f: () => (/* binding */ bn), -/* harmony export */ g: () => (/* binding */ De), -/* harmony export */ h: () => (/* binding */ wn), -/* harmony export */ i: () => (/* binding */ O), -/* harmony export */ j: () => (/* binding */ E), -/* harmony export */ k: () => (/* binding */ X), -/* harmony export */ l: () => (/* binding */ ee), -/* harmony export */ m: () => (/* binding */ ne), -/* harmony export */ n: () => (/* binding */ Ue), -/* harmony export */ o: () => (/* binding */ ye), -/* harmony export */ p: () => (/* binding */ zn), -/* harmony export */ q: () => (/* binding */ Fe), -/* harmony export */ r: () => (/* binding */ Rr), -/* harmony export */ s: () => (/* binding */ Tr), -/* harmony export */ t: () => (/* binding */ Er), -/* harmony export */ u: () => (/* binding */ Cr), -/* harmony export */ v: () => (/* binding */ Pr), -/* harmony export */ w: () => (/* binding */ Ur), -/* harmony export */ x: () => (/* binding */ Nr) -/* harmony export */ }); -/* harmony import */ var _chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-BTBUZ646.js */ "./node_modules/@electric-sql/pglite/dist/chunk-BTBUZ646.js"); -var hn={};(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.b)(hn,{ABSTIME:()=>Et,ACLITEM:()=>Vt,BIT:()=>Wt,BOOL:()=>be,BPCHAR:()=>_e,BYTEA:()=>ge,CHAR:()=>gt,CID:()=>St,CIDR:()=>Tt,CIRCLE:()=>Ut,DATE:()=>He,FLOAT4:()=>je,FLOAT8:()=>Qe,GTSVECTOR:()=>rn,INET:()=>kt,INT2:()=>ve,INT4:()=>Ge,INT8:()=>we,INTERVAL:()=>vt,JSON:()=>Ae,JSONB:()=>Ye,MACADDR:()=>Ot,MACADDR8:()=>Nt,MONEY:()=>Lt,NUMERIC:()=>Qt,OID:()=>We,PATH:()=>Mt,PG_DEPENDENCIES:()=>en,PG_LSN:()=>Xt,PG_NDISTINCT:()=>Zt,PG_NODE_TREE:()=>Bt,POLYGON:()=>Rt,REFCURSOR:()=>_t,REGCLASS:()=>Yt,REGCONFIG:()=>sn,REGDICTIONARY:()=>an,REGNAMESPACE:()=>on,REGOPER:()=>Ht,REGOPERATOR:()=>qt,REGPROC:()=>wt,REGPROCEDURE:()=>zt,REGROLE:()=>un,REGTYPE:()=>$t,RELTIME:()=>Ct,SMGR:()=>It,TEXT:()=>F,TID:()=>At,TIME:()=>Ft,TIMESTAMP:()=>qe,TIMESTAMPTZ:()=>xe,TIMETZ:()=>Gt,TINTERVAL:()=>Pt,TSQUERY:()=>nn,TSVECTOR:()=>tn,TXID_SNAPSHOT:()=>Jt,UUID:()=>Kt,VARBIT:()=>jt,VARCHAR:()=>ze,XID:()=>xt,XML:()=>Dt,arrayParser:()=>yn,arraySerializer:()=>Ke,parseType:()=>ue,parsers:()=>ln,serializers:()=>cn,types:()=>$e});(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.j)();var ht=globalThis.JSON.parse,bt=globalThis.JSON.stringify,be=16,ge=17,gt=18,we=20,ve=21,Ge=23,wt=24,F=25,We=26,At=27,xt=28,St=29,Ae=114,Dt=142,Bt=194,It=210,Mt=602,Rt=604,Tt=650,je=700,Qe=701,Et=702,Ct=703,Pt=704,Ut=718,Nt=774,Lt=790,Ot=829,kt=869,Vt=1033,_e=1042,ze=1043,He=1082,Ft=1083,qe=1114,xe=1184,vt=1186,Gt=1266,Wt=1560,jt=1562,Qt=1700,_t=1790,zt=2202,Ht=2203,qt=2204,Yt=2205,$t=2206,Kt=2950,Jt=2970,Xt=3220,Zt=3361,en=3402,tn=3614,nn=3615,rn=3642,sn=3734,an=3769,Ye=3802,on=4089,un=4096,$e={string:{to:F,from:[F,ze,_e],serialize:e=>{if(typeof e=="string")return e;if(typeof e=="number")return e.toString();throw new Error("Invalid input for string type")},parse:e=>e},number:{to:0,from:[ve,Ge,We,je,Qe],serialize:e=>e.toString(),parse:e=>+e},bigint:{to:we,from:[we],serialize:e=>e.toString(),parse:e=>{let t=BigInt(e);return tNumber.MAX_SAFE_INTEGER?t:Number(t)}},json:{to:Ae,from:[Ae,Ye],serialize:e=>typeof e=="string"?e:bt(e),parse:e=>ht(e)},boolean:{to:be,from:[be],serialize:e=>{if(typeof e!="boolean")throw new Error("Invalid input for boolean type");return e?"t":"f"},parse:e=>e==="t"},date:{to:xe,from:[He,qe,xe],serialize:e=>{if(typeof e=="string")return e;if(typeof e=="number")return new Date(e).toISOString();if(e instanceof Date)return e.toISOString();throw new Error("Invalid input for date type")},parse:e=>new Date(e)},bytea:{to:ge,from:[ge],serialize:e=>{if(!(e instanceof Uint8Array))throw new Error("Invalid input for bytea type");return"\\x"+Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")},parse:e=>{let t=e.slice(2);return Uint8Array.from({length:t.length/2},(n,r)=>parseInt(t.substring(r*2,(r+1)*2),16))}}},Se=pn($e),ln=Se.parsers,cn=Se.serializers;function ue(e,t,n){if(e===null)return null;let r=n?.[t]??Se.parsers[t];return r?r(e,t):e}function pn(e){return Object.keys(e).reduce(({parsers:t,serializers:n},r)=>{let{to:i,from:a,serialize:u,parse:d}=e[r];return n[i]=u,n[r]=u,t[r]=d,Array.isArray(a)?a.forEach(c=>{t[c]=d,n[c]=u}):(t[a]=d,n[a]=u),{parsers:t,serializers:n}},{parsers:{},serializers:{}})}var dn=/\\/g,fn=/"/g;function mn(e){return e.replace(dn,"\\\\").replace(fn,'\\"')}function Ke(e,t,n){if(Array.isArray(e)===!1)return e;if(!e.length)return"{}";let r=e[0],i=n===1020?";":",";return Array.isArray(r)?`{${e.map(a=>Ke(a,t,n)).join(i)}}`:`{${e.map(a=>(a===void 0&&(a=null),a===null?"null":'"'+mn(t?t(a):a.toString())+'"')).join(i)}}`}var he={i:0,char:null,str:"",quoted:!1,last:0,p:null};function yn(e,t,n){return he.i=he.last=0,Je(he,e,t,n)[0]}function Je(e,t,n,r){let i=[],a=r===1020?";":",";for(;e.iDe,parseResults:()=>bn});(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.j)();function bn(e,t,n,r){let i=[],a={rows:[],fields:[]},u=0,d={...t,...n?.parsers};return e.forEach(c=>{switch(c.name){case"rowDescription":{let V=c;a.fields=V.fields.map(T=>({name:T.name,dataTypeID:T.dataTypeID}));break}case"dataRow":{if(!a)break;let V=c;n?.rowMode==="array"?a.rows.push(V.fields.map((T,ie)=>ue(T,a.fields[ie].dataTypeID,d))):a.rows.push(Object.fromEntries(V.fields.map((T,ie)=>[a.fields[ie].name,ue(T,a.fields[ie].dataTypeID,d)])));break}case"commandComplete":{u+=gn(c),i.push({...a,affectedRows:u,...r?{blob:r}:{}}),a={rows:[],fields:[]};break}}}),i.length===0&&i.push({affectedRows:0,rows:[],fields:[]}),i}function gn(e){let t=e.text.split(" ");switch(t[0]){case"INSERT":return parseInt(t[2],10);case"UPDATE":case"DELETE":case"COPY":return parseInt(t[1],10);default:return 0}}function De(e){let t=e.find(n=>n.name==="parameterDescription");return t?t.dataTypeIDs:[]}var Ue={};(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.b)(Ue,{AuthenticationCleartextPassword:()=>G,AuthenticationMD5Password:()=>W,AuthenticationOk:()=>v,AuthenticationSASL:()=>j,AuthenticationSASLContinue:()=>Q,AuthenticationSASLFinal:()=>_,BackendKeyDataMessage:()=>J,CommandCompleteMessage:()=>ee,CopyDataMessage:()=>z,CopyResponse:()=>H,DataRowMessage:()=>te,DatabaseError:()=>E,Field:()=>q,NoticeMessage:()=>ne,NotificationResponseMessage:()=>X,ParameterDescriptionMessage:()=>$,ParameterStatusMessage:()=>K,ReadyForQueryMessage:()=>Z,RowDescriptionMessage:()=>Y,bindComplete:()=>Ie,closeComplete:()=>Me,copyDone:()=>Pe,emptyQuery:()=>Ce,noData:()=>Re,parseComplete:()=>Be,portalSuspended:()=>Te,replicationStart:()=>Ee});(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.j)();var Be={name:"parseComplete",length:5},Ie={name:"bindComplete",length:5},Me={name:"closeComplete",length:5},Re={name:"noData",length:5},Te={name:"portalSuspended",length:5},Ee={name:"replicationStart",length:4},Ce={name:"emptyQuery",length:4},Pe={name:"copyDone",length:4},v=class{constructor(t){this.length=t;this.name="authenticationOk"}},G=class{constructor(t){this.length=t;this.name="authenticationCleartextPassword"}},W=class{constructor(t,n){this.length=t;this.salt=n;this.name="authenticationMD5Password"}},j=class{constructor(t,n){this.length=t;this.mechanisms=n;this.name="authenticationSASL"}},Q=class{constructor(t,n){this.length=t;this.data=n;this.name="authenticationSASLContinue"}},_=class{constructor(t,n){this.length=t;this.data=n;this.name="authenticationSASLFinal"}},E=class extends Error{constructor(n,r,i){super(n);this.length=r;this.name=i}},z=class{constructor(t,n){this.length=t;this.chunk=n;this.name="copyData"}},H=class{constructor(t,n,r,i){this.length=t;this.name=n;this.binary=r;this.columnTypes=new Array(i)}},q=class{constructor(t,n,r,i,a,u,d){this.name=t;this.tableID=n;this.columnID=r;this.dataTypeID=i;this.dataTypeSize=a;this.dataTypeModifier=u;this.format=d}},Y=class{constructor(t,n){this.length=t;this.fieldCount=n;this.name="rowDescription";this.fields=new Array(this.fieldCount)}},$=class{constructor(t,n){this.length=t;this.parameterCount=n;this.name="parameterDescription";this.dataTypeIDs=new Array(this.parameterCount)}},K=class{constructor(t,n,r){this.length=t;this.parameterName=n;this.parameterValue=r;this.name="parameterStatus"}},J=class{constructor(t,n,r){this.length=t;this.processID=n;this.secretKey=r;this.name="backendKeyData"}},X=class{constructor(t,n,r,i){this.length=t;this.processId=n;this.channel=r;this.payload=i;this.name="notification"}},Z=class{constructor(t,n){this.length=t;this.status=n;this.name="readyForQuery"}},ee=class{constructor(t,n){this.length=t;this.text=n;this.name="commandComplete"}},te=class{constructor(t,n){this.length=t;this.fields=n;this.name="dataRow";this.fieldCount=n.length}},ne=class{constructor(t,n){this.length=t;this.message=n;this.name="notice"}};var zn={};(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.b)(zn,{Parser:()=>ye,messages:()=>Ue,serialize:()=>O});(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.j)();(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.j)();(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.j)();(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.j)();function C(e){let t=e.length;for(let n=e.length-1;n>=0;n--){let r=e.charCodeAt(n);r>127&&r<=2047?t++:r>2047&&r<=65535&&(t+=2),r>=56320&&r<=57343&&n--}return t}var b,g,U,ce,N,x,le,P,Xe,R=class{constructor(t=256){this.size=t;(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.f)(this,x);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.f)(this,b);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.f)(this,g,5);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.f)(this,U,!1);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.f)(this,ce,new TextEncoder);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.f)(this,N,0);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,b,(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,x,le).call(this,t))}addInt32(t){return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,x,P).call(this,4),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,b).setInt32((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,g),t,(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,U)),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,g,(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,g)+4),this}addInt16(t){return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,x,P).call(this,2),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,b).setInt16((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,g),t,(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,U)),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,g,(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,g)+2),this}addCString(t){return t&&this.addString(t),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,x,P).call(this,1),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,b).setUint8((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,g),0),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.i)(this,g)._++,this}addString(t=""){let n=C(t);return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,x,P).call(this,n),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,ce).encodeInto(t,new Uint8Array((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,b).buffer,(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,g))),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,g,(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,g)+n),this}add(t){return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,x,P).call(this,t.byteLength),new Uint8Array((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,b).buffer).set(new Uint8Array(t),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,g)),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,g,(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,g)+t.byteLength),this}flush(t){let n=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,x,Xe).call(this,t);return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,g,5),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,b,(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,x,le).call(this,this.size)),new Uint8Array(n)}};b=new WeakMap,g=new WeakMap,U=new WeakMap,ce=new WeakMap,N=new WeakMap,x=new WeakSet,le=function(t){return new DataView(new ArrayBuffer(t))},P=function(t){if((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,b).byteLength-(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,g)>1)+t;(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,b,(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,x,le).call(this,i)),new Uint8Array((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,b).buffer).set(new Uint8Array(r))}},Xe=function(t){if(t){(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,b).setUint8((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,N),t);let n=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,g)-((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,N)+1);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,b).setInt32((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,N)+1,n,(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,U))}return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,b).buffer.slice(t?0:5,(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,g))};var m=new R,An=e=>{m.addInt16(3).addInt16(0);for(let r of Object.keys(e))m.addCString(r).addCString(e[r]);m.addCString("client_encoding").addCString("UTF8");let t=m.addCString("").flush(),n=t.byteLength+4;return new R().addInt32(n).add(t).flush()},xn=()=>{let e=new DataView(new ArrayBuffer(8));return e.setInt32(0,8,!1),e.setInt32(4,80877103,!1),new Uint8Array(e.buffer)},Sn=e=>m.addCString(e).flush(112),Dn=(e,t)=>(m.addCString(e).addInt32(C(t)).addString(t),m.flush(112)),Bn=e=>m.addString(e).flush(112),In=e=>m.addCString(e).flush(81),Mn=[],Rn=e=>{let t=e.name??"";t.length>63&&(console.error("Warning! Postgres only supports 63 characters for query names."),console.error("You supplied %s (%s)",t,t.length),console.error("This can cause conflicts and silent errors executing queries"));let n=m.addCString(t).addCString(e.text).addInt16(e.types?.length??0);return e.types?.forEach(r=>n.addInt32(r)),m.flush(80)},L=new R;var Tn=(e,t)=>{for(let n=0;n{let t=e.portal??"",n=e.statement??"",r=e.binary??!1,i=e.values??Mn,a=i.length;return m.addCString(t).addCString(n),m.addInt16(a),Tn(i,e.valueMapper),m.addInt16(a),m.add(L.flush()),m.addInt16(r?1:0),m.flush(66)},Cn=new Uint8Array([69,0,0,0,9,0,0,0,0,0]),Pn=e=>{if(!e||!e.portal&&!e.rows)return Cn;let t=e.portal??"",n=e.rows??0,r=C(t),i=4+r+1+4,a=new DataView(new ArrayBuffer(1+i));return a.setUint8(0,69),a.setInt32(1,i,!1),new TextEncoder().encodeInto(t,new Uint8Array(a.buffer,5)),a.setUint8(r+5,0),a.setUint32(a.byteLength-4,n,!1),new Uint8Array(a.buffer)},Un=(e,t)=>{let n=new DataView(new ArrayBuffer(16));return n.setInt32(0,16,!1),n.setInt16(4,1234,!1),n.setInt16(6,5678,!1),n.setInt32(8,e,!1),n.setInt32(12,t,!1),new Uint8Array(n.buffer)},Ne=(e,t)=>{let n=new R;return n.addCString(t),n.flush(e)},Nn=m.addCString("P").flush(68),Ln=m.addCString("S").flush(68),On=e=>e.name?Ne(68,`${e.type}${e.name??""}`):e.type==="P"?Nn:Ln,kn=e=>{let t=`${e.type}${e.name??""}`;return Ne(67,t)},Vn=e=>m.add(e).flush(100),Fn=e=>Ne(102,e),pe=e=>new Uint8Array([e,0,0,0,4]),vn=pe(72),Gn=pe(83),Wn=pe(88),jn=pe(99),O={startup:An,password:Sn,requestSsl:xn,sendSASLInitialResponseMessage:Dn,sendSCRAMClientFinalMessage:Bn,query:In,parse:Rn,bind:En,execute:Pn,describe:On,close:kn,flush:()=>vn,sync:()=>Gn,end:()=>Wn,copyData:Vn,copyDone:()=>jn,copyFail:Fn,cancel:Un};(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.j)();(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.j)();var Le={text:0,binary:1};(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.j)();var Qn=new ArrayBuffer(0),M,w,fe,me,re,de=class{constructor(t=0){(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.f)(this,M,new DataView(Qn));(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.f)(this,w);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.f)(this,fe,"utf-8");(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.f)(this,me,new TextDecoder((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,fe)));(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.f)(this,re,!1);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,w,t)}setBuffer(t,n){(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,w,t),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,M,new DataView(n))}int16(){let t=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,M).getInt16((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,w),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,re));return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,w,(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,w)+2),t}byte(){let t=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,M).getUint8((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,w));return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.i)(this,w)._++,t}int32(){let t=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,M).getInt32((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,w),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,re));return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,w,(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,w)+4),t}string(t){return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,me).decode(this.bytes(t))}cstring(){let t=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,w),n=t;for(;(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,M).getUint8(n++)!==0;);let r=this.string(n-t-1);return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,w,n),r}bytes(t){let n=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,M).buffer.slice((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,w),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,w)+t);return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,w,(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,w)+t),new Uint8Array(n)}};M=new WeakMap,w=new WeakMap,fe=new WeakMap,me=new WeakMap,re=new WeakMap;var Oe=1,_n=4,Ze=Oe+_n,et=new ArrayBuffer(0);var A,S,D,o,l,tt,nt,rt,st,it,at,ot,ke,ut,lt,ct,pt,dt,ft,mt,yt,Ve,ye=class{constructor(){(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.f)(this,l);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.f)(this,A,new DataView(et));(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.f)(this,S,0);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.f)(this,D,0);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.f)(this,o,new de)}parse(t,n){(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,l,tt).call(this,ArrayBuffer.isView(t)?t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength):t);let r=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,D)+(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,S),i=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,D);for(;i+Ze<=r;){let a=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,A).getUint8(i),u=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,A).getUint32(i+Oe,!1),d=Oe+u;if(d+i<=r){let c=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,l,nt).call(this,i+Ze,a,u,(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,A).buffer);n(c),i+=d}else break}i===r?((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,A,new DataView(et)),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,S,0),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,D,0)):((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,S,r-i),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,D,i))}};A=new WeakMap,S=new WeakMap,D=new WeakMap,o=new WeakMap,l=new WeakSet,tt=function(t){if((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,S)>0){let n=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,S)+t.byteLength;if(n+(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,D)>(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,A).byteLength){let i;if(n<=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,A).byteLength&&(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,D)>=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,S))i=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,A).buffer;else{let a=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,A).byteLength*2;for(;n>=a;)a*=2;i=new ArrayBuffer(a)}new Uint8Array(i).set(new Uint8Array((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,A).buffer,(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,D),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,S))),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,A,new DataView(i)),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,D,0)}new Uint8Array((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,A).buffer).set(new Uint8Array(t),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,D)+(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,S)),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,S,n)}else (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,A,new DataView(t)),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,D,0),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.g)(this,S,t.byteLength)},nt=function(t,n,r,i){switch(n){case 50:return Ie;case 49:return Be;case 51:return Me;case 110:return Re;case 115:return Te;case 99:return Pe;case 87:return Ee;case 73:return Ce;case 68:return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,l,dt).call(this,t,r,i);case 67:return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,l,st).call(this,t,r,i);case 90:return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,l,rt).call(this,t,r,i);case 65:return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,l,ut).call(this,t,r,i);case 82:return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,l,yt).call(this,t,r,i);case 83:return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,l,ft).call(this,t,r,i);case 75:return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,l,mt).call(this,t,r,i);case 69:return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,l,Ve).call(this,t,r,i,"error");case 78:return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,l,Ve).call(this,t,r,i,"notice");case 84:return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,l,lt).call(this,t,r,i);case 116:return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,l,pt).call(this,t,r,i);case 71:return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,l,at).call(this,t,r,i);case 72:return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,l,ot).call(this,t,r,i);case 100:return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,l,it).call(this,t,r,i);default:return new E("received invalid response: "+n.toString(16),r,"error")}},rt=function(t,n,r){(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,o).setBuffer(t,r);let i=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,o).string(1);return new Z(n,i)},st=function(t,n,r){(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,o).setBuffer(t,r);let i=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,o).cstring();return new ee(n,i)},it=function(t,n,r){let i=r.slice(t,t+(n-4));return new z(n,new Uint8Array(i))},at=function(t,n,r){return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,l,ke).call(this,t,n,r,"copyInResponse")},ot=function(t,n,r){return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.h)(this,l,ke).call(this,t,n,r,"copyOutResponse")},ke=function(t,n,r,i){(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,o).setBuffer(t,r);let a=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,o).byte()!==0,u=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.e)(this,o).int16(),d=new H(n,i,a,u);for(let c=0;c{if(globalThis.crypto?.randomUUID)return globalThis.crypto.randomUUID();let e=new Uint8Array(16);if(globalThis.crypto?.getRandomValues)globalThis.crypto.getRandomValues(e);else for(let n=0;n{t.push(n.toString(16).padStart(2,"0"))}),t.slice(0,4).join("")+"-"+t.slice(4,6).join("")+"-"+t.slice(6,8).join("")+"-"+t.slice(8,10).join("")+"-"+t.slice(10).join("")};async function Pr(e,t,n,r){if(!n||n.length===0)return t;r=r??e;let i;try{await e.execProtocol(O.parse({text:t}),{syncToFs:!1}),i=De((await e.execProtocol(O.describe({type:"S"}),{syncToFs:!1})).messages)}finally{await e.execProtocol(O.sync(),{syncToFs:!1})}let a=t.replace(/\$([0-9]+)/g,(d,c)=>"%"+c+"L");return(await r.query(`SELECT format($1, ${n.map((d,c)=>`$${c+2}`).join(", ")}) as query`,[a,...n],{paramTypes:[F,...i]})).rows[0].query}function Ur(e){let t,n=!1,r=async()=>{if(!t){n=!1;return}n=!0;let{args:i,resolve:a,reject:u}=t;t=void 0;try{let d=await e(...i);a(d)}catch(d){u(d)}finally{r()}};return async(...i)=>{t&&t.resolve(void 0);let a=new Promise((u,d)=>{t={args:i,resolve:u,reject:d}});return n||r(),a}}function Nr(e){let t;return e.startsWith('"')&&e.endsWith('"')?t=e.substring(1,e.length-1):t=e.toLowerCase(),t} -//# sourceMappingURL=chunk-EADU5A67.js.map - -/***/ }), - -/***/ "./node_modules/@electric-sql/pglite/dist/chunk-STOZMFXW.js": -/*!******************************************************************!*\ - !*** ./node_modules/@electric-sql/pglite/dist/chunk-STOZMFXW.js ***! - \******************************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ a: () => (/* binding */ y), -/* harmony export */ b: () => (/* binding */ c), -/* harmony export */ c: () => (/* binding */ m), -/* harmony export */ d: () => (/* binding */ g) -/* harmony export */ }); -/* harmony import */ var _chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-BTBUZ646.js */ "./node_modules/@electric-sql/pglite/dist/chunk-BTBUZ646.js"); -(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.j)();var o={part:"part",container:"container"};function s(t,r,...e){let a=t.length-1,p=e.length-1;if(p!==-1){if(p===0){t[a]=t[a]+e[0]+r;return}t[a]=t[a]+e[0],t.push(...e.slice(1,p)),t.push(e[p]+r)}}function y(t,...r){let e=[t[0]];e.raw=[t.raw[0]];let a=[];for(let p=0;p[`$${n+1}`,e[n+1]])].join(""),params:a}} -//# sourceMappingURL=chunk-STOZMFXW.js.map - -/***/ }), - -/***/ "./node_modules/@electric-sql/pglite/dist/chunk-WGR4JCLS.js": -/*!******************************************************************!*\ - !*** ./node_modules/@electric-sql/pglite/dist/chunk-WGR4JCLS.js ***! - \******************************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ a: () => (/* binding */ or), -/* harmony export */ b: () => (/* binding */ ce), -/* harmony export */ c: () => (/* binding */ Vr), -/* harmony export */ d: () => (/* binding */ C), -/* harmony export */ e: () => (/* binding */ ur), -/* harmony export */ f: () => (/* binding */ cr), -/* harmony export */ g: () => (/* binding */ pr) -/* harmony export */ }); -/* harmony import */ var _chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-BTBUZ646.js */ "./node_modules/@electric-sql/pglite/dist/chunk-BTBUZ646.js"); -var w=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.a)(($r,l)=>{"use strict";(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.j)();var j=9007199254740991,B=function(r){return r}();function mr(r){return r===B}function q(r){return typeof r=="string"||Object.prototype.toString.call(r)=="[object String]"}function lr(r){return Object.prototype.toString.call(r)=="[object Date]"}function N(r){return r!==null&&typeof r=="object"}function U(r){return typeof r=="function"}function fr(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=j}function yr(r){return Object.prototype.toString.call(r)=="[object Array]"}function Y(r){return N(r)&&!U(r)&&fr(r.length)}function D(r){return Object.prototype.toString.call(r)=="[object ArrayBuffer]"}function gr(r,e){return Array.prototype.map.call(r,e)}function hr(r,e){var t=B;return U(e)&&Array.prototype.every.call(r,function(s,a,n){var o=e(s,a,n);return o&&(t=s),!o}),t}function Sr(r){return Object.assign.apply(null,arguments)}function W(r){var e,t,s;if(q(r)){for(t=r.length,s=new Uint8Array(t),e=0;e{"use strict";(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.j)();var M="\0";X.exports={NULL_CHAR:M,TMAGIC:"ustar"+M+"00",OLDGNU_MAGIC:"ustar "+M,REGTYPE:0,LNKTYPE:1,SYMTYPE:2,CHRTYPE:3,BLKTYPE:4,DIRTYPE:5,FIFOTYPE:6,CONTTYPE:7,TSUID:parseInt("4000",8),TSGID:parseInt("2000",8),TSVTX:parseInt("1000",8),TUREAD:parseInt("0400",8),TUWRITE:parseInt("0200",8),TUEXEC:parseInt("0100",8),TGREAD:parseInt("0040",8),TGWRITE:parseInt("0020",8),TGEXEC:parseInt("0010",8),TOREAD:parseInt("0004",8),TOWRITE:parseInt("0002",8),TOEXEC:parseInt("0001",8),TPERMALL:parseInt("0777",8),TPERMMASK:parseInt("0777",8)}});var L=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.a)((ee,f)=>{"use strict";(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.j)();var K=w(),p=x(),Fr=512,I=p.TPERMALL,V=0,Z=0,_=[["name",100,0,function(r,e){return v(r[e[0]],e[1])},function(r,e,t){return A(r.slice(e,e+t[1]))}],["mode",8,100,function(r,e){var t=r[e[0]]||I;return t=t&p.TPERMMASK,P(t,e[1],I)},function(r,e,t){var s=S(r.slice(e,e+t[1]));return s&=p.TPERMMASK,s}],["uid",8,108,function(r,e){return P(r[e[0]],e[1],V)},function(r,e,t){return S(r.slice(e,e+t[1]))}],["gid",8,116,function(r,e){return P(r[e[0]],e[1],Z)},function(r,e,t){return S(r.slice(e,e+t[1]))}],["size",12,124,function(r,e){return P(r.data.length,e[1])},function(r,e,t){return S(r.slice(e,e+t[1]))}],["modifyTime",12,136,function(r,e){return k(r[e[0]],e[1])},function(r,e,t){return z(r.slice(e,e+t[1]))}],["checksum",8,148,function(r,e){return" "},function(r,e,t){return S(r.slice(e,e+t[1]))}],["type",1,156,function(r,e){return""+(parseInt(r[e[0]],10)||0)%8},function(r,e,t){return(parseInt(String.fromCharCode(r[e]),10)||0)%8}],["linkName",100,157,function(r,e){return""},function(r,e,t){return A(r.slice(e,e+t[1]))}],["ustar",8,257,function(r,e){return p.TMAGIC},function(r,e,t){return br(A(r.slice(e,e+t[1]),!0))},function(r,e){return r[e[0]]==p.TMAGIC||r[e[0]]==p.OLDGNU_MAGIC}],["owner",32,265,function(r,e){return v(r[e[0]],e[1])},function(r,e,t){return A(r.slice(e,e+t[1]))}],["group",32,297,function(r,e){return v(r[e[0]],e[1])},function(r,e,t){return A(r.slice(e,e+t[1]))}],["majorNumber",8,329,function(r,e){return""},function(r,e,t){return S(r.slice(e,e+t[1]))}],["minorNumber",8,337,function(r,e){return""},function(r,e,t){return S(r.slice(e,e+t[1]))}],["prefix",131,345,function(r,e){return v(r[e[0]],e[1])},function(r,e,t){return A(r.slice(e,e+t[1]))}],["accessTime",12,476,function(r,e){return k(r[e[0]],e[1])},function(r,e,t){return z(r.slice(e,e+t[1]))}],["createTime",12,488,function(r,e){return k(r[e[0]],e[1])},function(r,e,t){return z(r.slice(e,e+t[1]))}]],$=function(r){var e=r[r.length-1];return e[2]+e[1]}(_);function br(r){if(r.length==8){var e=r.split("");if(e[5]==p.NULL_CHAR)return(e[6]==" "||e[6]==p.NULL_CHAR)&&(e[6]="0"),(e[7]==" "||e[7]==p.NULL_CHAR)&&(e[7]="0"),e=e.join(""),e==p.TMAGIC?e:r;if(e[7]==p.NULL_CHAR)return e[5]==p.NULL_CHAR&&(e[5]=" "),e[6]==p.NULL_CHAR&&(e[6]=" "),e==p.OLDGNU_MAGIC?e:r}return r}function v(r,e){return e-=1,K.isUndefined(r)&&(r=""),r=(""+r).substr(0,e),r+p.NULL_CHAR}function P(r,e,t){for(t=parseInt(t)||0,e-=1,r=(parseInt(r)||t).toString(8).substr(-e,e);r.length=0?t.substr(0,s):t}function S(r){var e=String.fromCharCode.apply(null,r);return parseInt(e.replace(/^0+$/g,""),8)||0}function z(r){return r.length==0||r[0]==0?null:new Date(1e3*S(r))}function Tr(r,e,t){var s=parseInt(e,10)||0,a=Math.min(s+$,r.length),n=0,o=0,i=0;t&&_.every(function(y){return y[0]=="checksum"?(o=s+y[2],i=o+y[1],!1):!0});for(var u=32,c=s;c=o&&c{"use strict";(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.j)();var Ar=x(),O=w(),F=L();function J(r){return F.recordSize}function Q(r){return Math.ceil(r.data.length/F.recordSize)*F.recordSize}function Er(r){var e=0;return r.forEach(function(t){e+=J(t)+Q(t)}),e+=F.recordSize*2,new Uint8Array(e)}function Pr(r,e,t){t=parseInt(t)||0;var s=t;F.posixHeader.forEach(function(u){for(var c=u[3](e,u),m=c.length,y=0;y{"use strict";(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.j)();var vr=x(),G=w(),h=L(),Nr={extractData:!0,checkHeader:!0,checkChecksum:!0,checkFileSize:!0},Ur={size:!0,checksum:!0,ustar:!0},R={unexpectedEndOfFile:"Unexpected end of file.",fileCorrupted:"File is corrupted.",checksumCheckFailed:"Checksum check failed."};function kr(r){return h.recordSize}function zr(r){return Math.ceil(r/h.recordSize)*h.recordSize}function Or(r,e){for(var t=e,s=Math.min(r.length,e+h.recordSize*2),a=t;a=h.recordSize;){r=G.toUint8Array(r);var n=Cr(r,s,e);if(!n)break;s+=kr(n);var o=Dr(r,s,n,e);if(t.push(Mr(n,o)),s+=zr(n.size),Or(r,s))break}return t}tr.exports.untar=Ir});var or=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.a)((se,ir)=>{"use strict";(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.j)();var _r=w(),Lr=x(),Rr=er(),Gr=nr();_r.extend(ir.exports,Rr,Gr,Lr)});(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.j)();(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.j)();var g=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_0__.c)(or(),1);async function H(r,e,t="pgdata",s="auto"){let a=Br(r,e),[n,o]=await qr(a,s),i=t+(o?".tar.gz":".tar"),u=o?"application/x-gzip":"application/x-tar";return typeof File<"u"?new File([n],i,{type:u}):new Blob([n],{type:u})}var Hr=["application/x-gtar","application/x-tar+gzip","application/x-gzip","application/gzip"];async function ce(r,e,t){let s=new Uint8Array(await e.arrayBuffer()),a=typeof File<"u"&&e instanceof File?e.name:void 0;(Hr.includes(e.type)||a?.endsWith(".tgz")||a?.endsWith(".tar.gz"))&&(s=await ar(s));let o;try{o=(0,g.untar)(s)}catch(i){if(i instanceof Error&&i.message.includes("File is corrupted"))s=await ar(s),o=(0,g.untar)(s);else throw i}for(let i of o){let u=t+i.name,c=u.split("/").slice(0,-1);for(let m=1;m<=c.length;m++){let y=c.slice(0,m).join("/");r.analyzePath(y).exists||r.mkdir(y)}i.type===g.REGTYPE?(r.writeFile(u,i.data),r.utime(u,sr(i.modifyTime),sr(i.modifyTime))):i.type===g.DIRTYPE&&r.mkdir(u)}}function jr(r,e){let t=[],s=a=>{r.readdir(a).forEach(o=>{if(o==="."||o==="..")return;let i=a+"/"+o,u=r.stat(i),c=r.isFile(u.mode)?r.readFile(i,{encoding:"binary"}):new Uint8Array(0);t.push({name:i.substring(e.length),mode:u.mode,size:u.size,type:r.isFile(u.mode)?g.REGTYPE:g.DIRTYPE,modifyTime:u.mtime,data:c}),r.isDir(u.mode)&&s(i)})};return s(e),t}function Br(r,e){let t=jr(r,e);return(0,g.tar)(t)}async function qr(r,e="auto"){if(e==="none")return[r,!1];if(typeof CompressionStream<"u")return[await Yr(r),!0];if(typeof process<"u"&&process.versions&&process.versions.node)return[await Wr(r),!0];if(e==="auto")return[r,!1];throw new Error("Compression not supported in this environment")}async function Yr(r){let e=new CompressionStream("gzip"),t=e.writable.getWriter(),s=e.readable.getReader();t.write(r),t.close();let a=[];for(;;){let{value:i,done:u}=await s.read();if(u)break;i&&a.push(i)}let n=new Uint8Array(a.reduce((i,u)=>i+u.length,0)),o=0;return a.forEach(i=>{n.set(i,o),o+=i.length}),n}async function Wr(r){let{promisify:e}=await __webpack_require__.e(/*! import() */ "_c78c").then(__webpack_require__.t.bind(__webpack_require__, /*! util */ "?c78c", 19)),{gzip:t}=await __webpack_require__.e(/*! import() */ "_4971").then(__webpack_require__.t.bind(__webpack_require__, /*! zlib */ "?4971", 19));return await e(t)(r)}async function ar(r){if(typeof CompressionStream<"u")return await Xr(r);if(typeof process<"u"&&process.versions&&process.versions.node)return await Kr(r);throw new Error("Unsupported environment for decompression")}async function Xr(r){let e=new DecompressionStream("gzip"),t=e.writable.getWriter(),s=e.readable.getReader();t.write(r),t.close();let a=[];for(;;){let{value:i,done:u}=await s.read();if(u)break;i&&a.push(i)}let n=new Uint8Array(a.reduce((i,u)=>i+u.length,0)),o=0;return a.forEach(i=>{n.set(i,o),o+=i.length}),n}async function Kr(r){let{promisify:e}=await __webpack_require__.e(/*! import() */ "_c78c").then(__webpack_require__.t.bind(__webpack_require__, /*! util */ "?c78c", 19)),{gunzip:t}=await __webpack_require__.e(/*! import() */ "_4971").then(__webpack_require__.t.bind(__webpack_require__, /*! zlib */ "?4971", 19));return await e(t)(r)}function sr(r){return r?typeof r=="number"?r:Math.floor(r.getTime()/1e3):Math.floor(Date.now()/1e3)}var Vr="/tmp/pglite",C=Vr+"/base",ur=class{constructor(e){this.dataDir=e}async init(e,t){return this.pg=e,{emscriptenOpts:t}}async syncToFs(e){}async initialSyncFs(){}async closeFs(){}async dumpTar(e,t){return H(this.pg.Module.FS,C,e,t)}},cr=class{constructor(e,{debug:t=!1}={}){this.dataDir=e,this.debug=t}async syncToFs(e){}async initialSyncFs(){}async closeFs(){}async dumpTar(e,t){return H(this.pg.Module.FS,C,e,t)}async init(e,t){return this.pg=e,{emscriptenOpts:{...t,preRun:[...t.preRun||[],a=>{let n=Zr(a,this);a.FS.mkdir(C),a.FS.mount(n,{},C)}]}}}},pr={EBADF:8,EBADFD:127,EEXIST:20,EINVAL:28,EISDIR:31,ENODEV:43,ENOENT:44,ENOTDIR:54,ENOTEMPTY:55},Zr=(r,e)=>{let t=r.FS,s=e.debug?console.log:null,a={tryFSOperation(n){try{return n()}catch(o){throw o.code?o.code==="UNKNOWN"?new t.ErrnoError(pr.EINVAL):new t.ErrnoError(o.code):o}},mount(n){return a.createNode(null,"/",16895,0)},syncfs(n,o,i){},createNode(n,o,i,u){if(!t.isDir(i)&&!t.isFile(i))throw new t.ErrnoError(28);let c=t.createNode(n,o,i);return c.node_ops=a.node_ops,c.stream_ops=a.stream_ops,c},getMode:function(n){return s?.("getMode",n),a.tryFSOperation(()=>e.lstat(n).mode)},realPath:function(n){let o=[];for(;n.parent!==n;)o.push(n.name),n=n.parent;return o.push(n.mount.opts.root),o.reverse(),o.join("/")},node_ops:{getattr(n){s?.("getattr",a.realPath(n));let o=a.realPath(n);return a.tryFSOperation(()=>{let i=e.lstat(o);return{...i,dev:0,ino:n.id,nlink:1,rdev:n.rdev,atime:new Date(i.atime),mtime:new Date(i.mtime),ctime:new Date(i.ctime)}})},setattr(n,o){s?.("setattr",a.realPath(n),o);let i=a.realPath(n);a.tryFSOperation(()=>{o.mode!==void 0&&e.chmod(i,o.mode),o.size!==void 0&&e.truncate(i,o.size),o.timestamp!==void 0&&e.utimes(i,o.timestamp,o.timestamp),o.size!==void 0&&e.truncate(i,o.size)})},lookup(n,o){s?.("lookup",a.realPath(n),o);let i=[a.realPath(n),o].join("/"),u=a.getMode(i);return a.createNode(n,o,u)},mknod(n,o,i,u){s?.("mknod",a.realPath(n),o,i,u);let c=a.createNode(n,o,i,u),m=a.realPath(c);return a.tryFSOperation(()=>(t.isDir(c.mode)?e.mkdir(m,{mode:i}):e.writeFile(m,"",{mode:i}),c))},rename(n,o,i){s?.("rename",a.realPath(n),a.realPath(o),i);let u=a.realPath(n),c=[a.realPath(o),i].join("/");a.tryFSOperation(()=>{e.rename(u,c)}),n.name=i},unlink(n,o){s?.("unlink",a.realPath(n),o);let i=[a.realPath(n),o].join("/");try{e.unlink(i)}catch{}},rmdir(n,o){s?.("rmdir",a.realPath(n),o);let i=[a.realPath(n),o].join("/");return a.tryFSOperation(()=>{e.rmdir(i)})},readdir(n){s?.("readdir",a.realPath(n));let o=a.realPath(n);return a.tryFSOperation(()=>e.readdir(o))},symlink(n,o,i){throw s?.("symlink",a.realPath(n),o,i),new t.ErrnoError(63)},readlink(n){throw s?.("readlink",a.realPath(n)),new t.ErrnoError(63)}},stream_ops:{open(n){s?.("open stream",a.realPath(n.node));let o=a.realPath(n.node);return a.tryFSOperation(()=>{t.isFile(n.node.mode)&&(n.shared.refcount=1,n.nfd=e.open(o))})},close(n){return s?.("close stream",a.realPath(n.node)),a.tryFSOperation(()=>{t.isFile(n.node.mode)&&n.nfd&&--n.shared.refcount===0&&e.close(n.nfd)})},dup(n){s?.("dup stream",a.realPath(n.node)),n.shared.refcount++},read(n,o,i,u,c){return s?.("read stream",a.realPath(n.node),i,u,c),u===0?0:a.tryFSOperation(()=>e.read(n.nfd,o,i,u,c))},write(n,o,i,u,c){return s?.("write stream",a.realPath(n.node),i,u,c),a.tryFSOperation(()=>e.write(n.nfd,o.buffer,i,u,c))},llseek(n,o,i){s?.("llseek stream",a.realPath(n.node),o,i);let u=o;if(i===1?u+=n.position:i===2&&t.isFile(n.node.mode)&&a.tryFSOperation(()=>{let c=e.fstat(n.nfd);u+=c.size}),u<0)throw new t.ErrnoError(28);return u},mmap(n,o,i,u,c){if(s?.("mmap stream",a.realPath(n.node),o,i,u,c),!t.isFile(n.node.mode))throw new t.ErrnoError(pr.ENODEV);let m=r.mmapAlloc(o);return a.stream_ops.read(n,r.HEAP8,m,o,i),{ptr:m,allocated:!0}},msync(n,o,i,u,c){return s?.("msync stream",a.realPath(n.node),i,u,c),a.stream_ops.write(n,o,0,u,i),0}}};return a}; -//# sourceMappingURL=chunk-WGR4JCLS.js.map - -/***/ }), - -/***/ "./node_modules/@electric-sql/pglite/dist/index.js": -/*!*********************************************************!*\ - !*** ./node_modules/@electric-sql/pglite/dist/index.js ***! - \*********************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ IdbFs: () => (/* binding */ ee), -/* harmony export */ MemoryFS: () => (/* binding */ te), -/* harmony export */ Mutex: () => (/* binding */ H), -/* harmony export */ PGlite: () => (/* binding */ Ue), -/* harmony export */ formatQuery: () => (/* reexport safe */ _chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_1__.v), -/* harmony export */ messages: () => (/* reexport safe */ _chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_1__.n), -/* harmony export */ parse: () => (/* reexport safe */ _chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_1__.h), -/* harmony export */ protocol: () => (/* reexport safe */ _chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_1__.p), -/* harmony export */ types: () => (/* reexport safe */ _chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_1__.e), -/* harmony export */ uuid: () => (/* reexport safe */ _chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_1__.u) -/* harmony export */ }); -/* harmony import */ var _chunk_A7RFOIQ7_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-A7RFOIQ7.js */ "./node_modules/@electric-sql/pglite/dist/chunk-A7RFOIQ7.js"); -/* harmony import */ var _chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./chunk-EADU5A67.js */ "./node_modules/@electric-sql/pglite/dist/chunk-EADU5A67.js"); -/* harmony import */ var _chunk_WGR4JCLS_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chunk-WGR4JCLS.js */ "./node_modules/@electric-sql/pglite/dist/chunk-WGR4JCLS.js"); -/* harmony import */ var _chunk_STOZMFXW_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./chunk-STOZMFXW.js */ "./node_modules/@electric-sql/pglite/dist/chunk-STOZMFXW.js"); -/* harmony import */ var _chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./chunk-BTBUZ646.js */ "./node_modules/@electric-sql/pglite/dist/chunk-BTBUZ646.js"); -(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.j)();(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.j)();(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.j)();var Ye=new Error("timeout while waiting for mutex to become available"),Je=new Error("mutex already locked"),He=new Error("request for lock canceled"),We=function(e,t,r,a){function o(s){return s instanceof r?s:new r(function(l){l(s)})}return new(r||(r=Promise))(function(s,l){function n(p){try{m(a.next(p))}catch(d){l(d)}}function _(p){try{m(a.throw(p))}catch(d){l(d)}}function m(p){p.done?s(p.value):o(p.value).then(n,_)}m((a=a.apply(e,t||[])).next())})},ce=class{constructor(t,r=He){this._value=t,this._cancelError=r,this._weightedQueues=[],this._weightedWaiters=[]}acquire(t=1){if(t<=0)throw new Error(`invalid weight ${t}: must be positive`);return new Promise((r,a)=>{this._weightedQueues[t-1]||(this._weightedQueues[t-1]=[]),this._weightedQueues[t-1].push({resolve:r,reject:a}),this._dispatch()})}runExclusive(t,r=1){return We(this,void 0,void 0,function*(){let[a,o]=yield this.acquire(r);try{return yield t(a)}finally{o()}})}waitForUnlock(t=1){if(t<=0)throw new Error(`invalid weight ${t}: must be positive`);return new Promise(r=>{this._weightedWaiters[t-1]||(this._weightedWaiters[t-1]=[]),this._weightedWaiters[t-1].push(r),this._dispatch()})}isLocked(){return this._value<=0}getValue(){return this._value}setValue(t){this._value=t,this._dispatch()}release(t=1){if(t<=0)throw new Error(`invalid weight ${t}: must be positive`);this._value+=t,this._dispatch()}cancel(){this._weightedQueues.forEach(t=>t.forEach(r=>r.reject(this._cancelError))),this._weightedQueues=[]}_dispatch(){var t;for(let r=this._value;r>0;r--){let a=(t=this._weightedQueues[r-1])===null||t===void 0?void 0:t.shift();if(!a)continue;let o=this._value,s=r;this._value-=r,r=this._value+1,a.resolve([o,this._newReleaser(s)])}this._drainUnlockWaiters()}_newReleaser(t){let r=!1;return()=>{r||(r=!0,this.release(t))}}_drainUnlockWaiters(){for(let t=this._value;t>0;t--)this._weightedWaiters[t-1]&&(this._weightedWaiters[t-1].forEach(r=>r()),this._weightedWaiters[t-1]=[])}},je=function(e,t,r,a){function o(s){return s instanceof r?s:new r(function(l){l(s)})}return new(r||(r=Promise))(function(s,l){function n(p){try{m(a.next(p))}catch(d){l(d)}}function _(p){try{m(a.throw(p))}catch(d){l(d)}}function m(p){p.done?s(p.value):o(p.value).then(n,_)}m((a=a.apply(e,t||[])).next())})},H=class{constructor(t){this._semaphore=new ce(1,t)}acquire(){return je(this,void 0,void 0,function*(){let[,t]=yield this._semaphore.acquire();return t})}runExclusive(t){return this._semaphore.runExclusive(()=>t())}isLocked(){return this._semaphore.isLocked()}waitForUnlock(){return this._semaphore.waitForUnlock()}release(){this._semaphore.isLocked()&&this._semaphore.release()}cancel(){return this._semaphore.cancel()}};(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.j)();var Ie=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.c)((0,_chunk_WGR4JCLS_js__WEBPACK_IMPORTED_MODULE_2__.a)(),1);async function ge(e){if(_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_1__.q){let t=await __webpack_require__.e(/*! import() */ "_8414").then(__webpack_require__.t.bind(__webpack_require__, /*! fs */ "?8414", 19)),r=await __webpack_require__.e(/*! import() */ "_4971").then(__webpack_require__.t.bind(__webpack_require__, /*! zlib */ "?4971", 19)),{Writable:a}=await __webpack_require__.e(/*! import() */ "_5cd3").then(__webpack_require__.t.bind(__webpack_require__, /*! stream */ "?5cd3", 19)),{pipeline:o}=await __webpack_require__.e(/*! import() */ "_ae24").then(__webpack_require__.t.bind(__webpack_require__, /*! stream/promises */ "?ae24", 19));if(!t.existsSync(e))throw new Error(`Extension bundle not found: ${e}`);let s=r.createGunzip(),l=[];return await o(t.createReadStream(e),s,new a({write(n,_,m){l.push(n),m()}})),new Blob(l)}else{let t=await fetch(e.toString());if(!t.ok||!t.body)return null;if(t.headers.get("Content-Encoding")==="gzip")return t.blob();{let r=new DecompressionStream("gzip");return new Response(t.body.pipeThrough(r)).blob()}}}async function Pe(e,t){for(let r in e.pg_extensions){let a;try{a=await e.pg_extensions[r]}catch(o){console.error("Failed to fetch extension:",r,o);continue}if(a){let o=new Uint8Array(await a.arrayBuffer());Ve(e,r,o,t)}else console.error("Could not get binary data for extension:",r)}}function Ve(e,t,r,a){Ie.default.untar(r).forEach(s=>{if(!s.name.startsWith(".")){let l=e.WASM_PREFIX+"/"+s.name;if(s.name.endsWith(".so")){let n=(...m)=>{a("pgfs:ext OK",l,m)},_=(...m)=>{a("pgfs:ext FAIL",l,m)};e.FS.createPreloadedFile(Ke(l),s.name.split("/").pop().slice(0,-3),s.data,!0,!0,n,_,!1)}else e.FS.writeFile(l,s.data)}})}function Ke(e){let t=e.lastIndexOf("/");return t>0?e.slice(0,t):e}(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.j)();(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.j)();var ee=class extends _chunk_WGR4JCLS_js__WEBPACK_IMPORTED_MODULE_2__.e{async init(t,r){return this.pg=t,{emscriptenOpts:{...r,preRun:[...r.preRun||[],o=>{let s=o.FS.filesystems.IDBFS;o.FS.mkdir("/pglite"),o.FS.mkdir(`/pglite/${this.dataDir}`),o.FS.mount(s,{},`/pglite/${this.dataDir}`),o.FS.symlink(`/pglite/${this.dataDir}`,_chunk_WGR4JCLS_js__WEBPACK_IMPORTED_MODULE_2__.d)}]}}}initialSyncFs(){return new Promise((t,r)=>{this.pg.Module.FS.syncfs(!0,a=>{a?r(a):t()})})}syncToFs(t){return new Promise((r,a)=>{this.pg.Module.FS.syncfs(!1,o=>{o?a(o):r()})})}async closeFs(){let t=this.pg.Module.FS.filesystems.IDBFS.dbs[this.dataDir];t&&t.close(),this.pg.Module.FS.quit()}};(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.j)();var te=class extends _chunk_WGR4JCLS_js__WEBPACK_IMPORTED_MODULE_2__.e{async closeFs(){this.pg.Module.FS.quit()}};function Fe(e){let t;if(e?.startsWith("file://")){if(e=e.slice(7),!e)throw new Error("Invalid dataDir, must be a valid path");t="nodefs"}else e?.startsWith("idb://")?(e=e.slice(6),t="idbfs"):e?.startsWith("opfs-ahp://")?(e=e.slice(11),t="opfs-ahp"):!e||e?.startsWith("memory://")?t="memoryfs":t="nodefs";return{dataDir:e,fsType:t}}async function Ae(e,t){let r;if(e&&t==="nodefs"){let{NodeFS:a}=await __webpack_require__.e(/*! import() */ "node_modules_electric-sql_pglite_dist_fs_nodefs_js").then(__webpack_require__.bind(__webpack_require__, /*! ./fs/nodefs.js */ "./node_modules/@electric-sql/pglite/dist/fs/nodefs.js"));r=new a(e)}else if(e&&t==="idbfs")r=new ee(e);else if(e&&t==="opfs-ahp"){let{OpfsAhpFS:a}=await __webpack_require__.e(/*! import() */ "vendors-node_modules_electric-sql_pglite_dist_fs_opfs-ahp_js").then(__webpack_require__.bind(__webpack_require__, /*! ./fs/opfs-ahp.js */ "./node_modules/@electric-sql/pglite/dist/fs/opfs-ahp.js"));r=new a(e)}else r=new te;return r}(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.j)();(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.j)();var Qe=(()=>{var _scriptName="file:///home/sean/projects/php-wasm/demo-web/node_modules/@electric-sql/pglite/dist/index.js";return async function(moduleArg={}){var moduleRtn,Module=moduleArg,readyPromiseResolve,readyPromiseReject,readyPromise=new Promise((e,t)=>{readyPromiseResolve=e,readyPromiseReject=t}),ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof WorkerGlobalScope<"u",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&process.type!="renderer";if(ENVIRONMENT_IS_NODE){let{createRequire:e}=await __webpack_require__.e(/*! import() */ "_b1c1").then(__webpack_require__.t.bind(__webpack_require__, /*! module */ "?b1c1", 19)),t="file:///home/sean/projects/php-wasm/demo-web/node_modules/@electric-sql/pglite/dist/index.js";t.startsWith("data:")&&(t="/");var require=e(t)}Module.expectedDataFileDownloads??(Module.expectedDataFileDownloads=0),Module.expectedDataFileDownloads++,(()=>{var e=typeof ENVIRONMENT_IS_PTHREAD<"u"&&ENVIRONMENT_IS_PTHREAD,t=typeof ENVIRONMENT_IS_WASM_WORKER<"u"&&ENVIRONMENT_IS_WASM_WORKER;if(e||t)return;var r=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";function a(o){var s="";typeof window=="object"?s=window.encodeURIComponent(window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/"):typeof process>"u"&&typeof location<"u"&&(s=encodeURIComponent(location.pathname.substring(0,location.pathname.lastIndexOf("/"))+"/"));var l="postgres.data",n="postgres.data",_=Module.locateFile?Module.locateFile(n,""):n,m=o.remote_package_size;function p(u,w,h,S){if(r){require("fs").readFile(u,(M,y)=>{M?S(M):h(y.buffer)});return}Module.dataFileDownloads??(Module.dataFileDownloads={}),fetch(u).catch(M=>Promise.reject(new Error(`Network Error: ${u}`,{cause:M}))).then(M=>{if(!M.ok)return Promise.reject(new Error(`${M.status}: ${M.url}`));if(!M.body&&M.arrayBuffer)return M.arrayBuffer().then(h);let y=M.body.getReader(),x=()=>y.read().then(X).catch(R=>Promise.reject(new Error(`Unexpected error while handling : ${M.url} ${R}`,{cause:R}))),E=[],b=M.headers,T=Number(b.get("Content-Length")??w),D=0,X=({done:R,value:z})=>{if(R){let P=new Uint8Array(E.map(A=>A.length).reduce((A,Re)=>A+Re,0)),U=0;for(let A of E)P.set(A,U),U+=A.length;h(P.buffer)}else{E.push(z),D+=z.length,Module.dataFileDownloads[u]={loaded:D,total:T};let P=0,U=0;for(let A of Object.values(Module.dataFileDownloads))P+=A.loaded,U+=A.total;return Module.setStatus?.(`Downloading data... (${P}/${U})`),x()}};return Module.setStatus?.("Downloading data..."),x()})}function d(u){console.error("package error:",u)}var g=null,c=Module.getPreloadedPackage?Module.getPreloadedPackage(_,m):null;c||p(_,m,u=>{g?(g(u),g=null):c=u},d);function f(u){function w(x,E){if(!x)throw E+new Error().stack}u.FS_createPath("/","home",!0,!0),u.FS_createPath("/home","web_user",!0,!0),u.FS_createPath("/","tmp",!0,!0),u.FS_createPath("/tmp","pglite",!0,!0),u.FS_createPath("/tmp/pglite","bin",!0,!0),u.FS_createPath("/tmp/pglite","lib",!0,!0),u.FS_createPath("/tmp/pglite/lib","postgresql",!0,!0),u.FS_createPath("/tmp/pglite/lib/postgresql","pgxs",!0,!0),u.FS_createPath("/tmp/pglite/lib/postgresql/pgxs","config",!0,!0),u.FS_createPath("/tmp/pglite/lib/postgresql/pgxs","src",!0,!0),u.FS_createPath("/tmp/pglite/lib/postgresql/pgxs/src","makefiles",!0,!0),u.FS_createPath("/tmp/pglite/lib/postgresql/pgxs/src","test",!0,!0),u.FS_createPath("/tmp/pglite/lib/postgresql/pgxs/src/test","isolation",!0,!0),u.FS_createPath("/tmp/pglite/lib/postgresql/pgxs/src/test","regress",!0,!0),u.FS_createPath("/tmp/pglite","share",!0,!0),u.FS_createPath("/tmp/pglite/share","postgresql",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql","extension",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql","timezone",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql/timezone","Africa",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql/timezone","America",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql/timezone/America","Argentina",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql/timezone/America","Indiana",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql/timezone/America","Kentucky",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql/timezone/America","North_Dakota",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql/timezone","Antarctica",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql/timezone","Arctic",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql/timezone","Asia",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql/timezone","Atlantic",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql/timezone","Australia",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql/timezone","Brazil",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql/timezone","Canada",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql/timezone","Chile",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql/timezone","Etc",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql/timezone","Europe",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql/timezone","Indian",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql/timezone","Mexico",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql/timezone","Pacific",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql/timezone","US",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql","timezonesets",!0,!0),u.FS_createPath("/tmp/pglite/share/postgresql","tsearch_data",!0,!0);function h(x,E,b){this.start=x,this.end=E,this.audio=b}h.prototype={requests:{},open:function(x,E){this.name=E,this.requests[E]=this,u.addRunDependency(`fp ${this.name}`)},send:function(){},onload:function(){var x=this.byteArray.subarray(this.start,this.end);this.finish(x)},finish:function(x){var E=this;u.FS_createDataFile(this.name,null,x,!0,!0,!0),u.removeRunDependency(`fp ${E.name}`),this.requests[this.name]=null}};for(var S=o.files,M=0;M{throw t},scriptDirectory="";function locateFile(e){return Module.locateFile?Module.locateFile(e,scriptDirectory):scriptDirectory+e}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs"),nodePath=require("path");"file:///home/sean/projects/php-wasm/demo-web/node_modules/@electric-sql/pglite/dist/index.js".startsWith("data:")||(scriptDirectory=nodePath.dirname(require("url").fileURLToPath("file:///home/sean/projects/php-wasm/demo-web/node_modules/@electric-sql/pglite/dist/index.js"))+"/"),readBinary=e=>{e=isFileURI(e)?new URL(e):e;var t=fs.readFileSync(e);return t},readAsync=async(e,t=!0)=>{e=isFileURI(e)?new URL(e):e;var r=fs.readFileSync(e,t?void 0:"utf8");return r},!Module.thisProgram&&process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),quit_=(e,t)=>{throw process.exitCode=e,t}}else(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:typeof document<"u"&&document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptName&&(scriptDirectory=_scriptName),scriptDirectory.startsWith("blob:")?scriptDirectory="":scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1),readAsync=async e=>{var t=await fetch(e,{credentials:"same-origin"});if(t.ok)return t.arrayBuffer();throw new Error(t.status+" : "+t.url)});var out=Module.print||console.log.bind(console),err=Module.printErr||console.error.bind(console);Object.assign(Module,moduleOverrides),moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram);var dynamicLibraries=Module.dynamicLibraries||[],wasmBinary=Module.wasmBinary;function intArrayFromBase64(e){if(typeof ENVIRONMENT_IS_NODE<"u"&&ENVIRONMENT_IS_NODE){var t=Buffer.from(e,"base64");return new Uint8Array(t.buffer,t.byteOffset,t.length)}for(var r=atob(e),a=new Uint8Array(r.length),o=0;oe.startsWith(dataURIPrefix),isFileURI=e=>e.startsWith("file://");function findWasmBinary(){if(Module.locateFile){var e="postgres.wasm";return isDataURI(e)?e:locateFile(e)}return new URL(/* asset import */ __webpack_require__(/*! postgres.wasm */ "./node_modules/@electric-sql/pglite/dist/postgres.wasm"), __webpack_require__.b).href}var wasmBinaryFile;function getBinarySync(e){if(e==wasmBinaryFile&&wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(e);throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(e){if(!wasmBinary)try{var t=await readAsync(e);return new Uint8Array(t)}catch{}return getBinarySync(e)}async function instantiateArrayBuffer(e,t){try{var r=await getWasmBinary(e),a=await WebAssembly.instantiate(r,t);return a}catch(o){err(`failed to asynchronously prepare wasm: ${o}`),abort(o)}}async function instantiateAsync(e,t,r){if(!e&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(t)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function")try{var a=fetch(t,{credentials:"same-origin"}),o=await WebAssembly.instantiateStreaming(a,r);return o}catch(s){err(`wasm streaming compile failed: ${s}`),err("falling back to ArrayBuffer instantiation")}return instantiateArrayBuffer(t,r)}function getWasmImports(){return{env:wasmImports,wasi_snapshot_preview1:wasmImports,"GOT.mem":new Proxy(wasmImports,GOTHandler),"GOT.func":new Proxy(wasmImports,GOTHandler)}}async function createWasm(){function e(o,s){wasmExports=o.exports,wasmExports=relocateExports(wasmExports,16777216);var l=getDylinkMetadata(s);return l.neededDynlibs&&(dynamicLibraries=l.neededDynlibs.concat(dynamicLibraries)),mergeLibSymbols(wasmExports,"main"),LDSO.init(),loadDylibs(),addOnInit(wasmExports.__wasm_call_ctors),__RELOC_FUNCS__.push(wasmExports.__wasm_apply_data_relocs),removeRunDependency("wasm-instantiate"),wasmExports}addRunDependency("wasm-instantiate");function t(o){e(o.instance,o.module)}var r=getWasmImports();if(Module.instantiateWasm)try{return Module.instantiateWasm(r,e)}catch(o){err(`Module.instantiateWasm callback failed with error: ${o}`),readyPromiseReject(o)}wasmBinaryFile??(wasmBinaryFile=findWasmBinary());try{var a=await instantiateAsync(wasmBinary,wasmBinaryFile,r);return t(a),a}catch(o){readyPromiseReject(o);return}}var ASM_CONSTS={18792944:e=>{Module.is_worker=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,Module.FD_BUFFER_MAX=e,Module.emscripten_copy_to=console.warn},18793117:()=>{Module.postMessage=function(t){console.log("# 1252: onCustomMessage:",__FILE__,t)}},18793242:()=>{if(Module.is_worker){let t=function(r){console.log("onCustomMessage:",r)};var e=t;Module.onCustomMessage=t}else Module.postMessage=function(r){switch(r.type){case"raw":{stringToUTF8(r.data,shm_rawinput,Module.FD_BUFFER_MAX);break}case"stdin":{stringToUTF8(r.data,1,Module.FD_BUFFER_MAX);break}case"rcon":{stringToUTF8(r.data,shm_rcon,Module.FD_BUFFER_MAX);break}default:console.warn("custom_postMessage?",r)}}}};function is_web_env(){try{if(window)return 1}catch{return 0}}is_web_env.sig="i";class ExitStatus{constructor(t){(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.d)(this,"name","ExitStatus");this.message=`Program terminated with exit(${t})`,this.status=t}}var GOT={},currentModuleWeakSymbols=new Set([]),GOTHandler={get(e,t){var r=GOT[t];return r||(r=GOT[t]=new WebAssembly.Global({value:"i32",mutable:!0})),currentModuleWeakSymbols.has(t)||(r.required=!0),r}},callRuntimeCallbacks=e=>{for(;e.length>0;)e.shift()(Module)},UTF8Decoder=typeof TextDecoder<"u"?new TextDecoder:void 0,UTF8ArrayToString=(e,t=0,r=NaN)=>{for(var a=t+r,o=t;e[o]&&!(o>=a);)++o;if(o-t>16&&e.buffer&&UTF8Decoder)return UTF8Decoder.decode(e.subarray(t,o));for(var s="";t>10,56320|m&1023)}}return s},getDylinkMetadata=e=>{var t=0,r=0;function a(){return e[t++]}function o(){for(var P=0,U=1;;){var A=e[t++];if(P+=(A&127)*U,U*=128,!(A&128))break}return P}function s(){var P=o();return t+=P,UTF8ArrayToString(e,t-P,P)}function l(P,U){if(P)throw new Error(U)}var n="dylink.0";if(e instanceof WebAssembly.Module){var _=WebAssembly.Module.customSections(e,n);_.length===0&&(n="dylink",_=WebAssembly.Module.customSections(e,n)),l(_.length===0,"need dylink section"),e=new Uint8Array(_[0]),r=e.length}else{var m=new Uint32Array(new Uint8Array(e.subarray(0,24)).buffer),p=m[0]==1836278016;l(!p,"need to see wasm magic number"),l(e[8]!==0,"need the dylink section to be first"),t=9;var d=o();r=t+d,n=s()}var g={neededDynlibs:[],tlsExports:new Set,weakImports:new Set};if(n=="dylink"){g.memorySize=o(),g.memoryAlign=o(),g.tableSize=o(),g.tableAlign=o();for(var c=o(),f=0;f>1];case"i32":return HEAP32[e>>2];case"i64":return HEAP64[e>>3];case"float":return HEAPF32[e>>2];case"double":return HEAPF64[e>>3];case"*":return HEAPU32[e>>2];default:abort(`invalid type for getValue: ${t}`)}}var newDSO=(e,t,r)=>{var a={refcount:1/0,name:e,exports:r,global:!0};return LDSO.loadedLibsByName[e]=a,t!=null&&(LDSO.loadedLibsByHandle[t]=a),a},LDSO={loadedLibsByName:{},loadedLibsByHandle:{},init(){newDSO("__main__",0,wasmImports)}},___heap_base=23144432,alignMemory=(e,t)=>Math.ceil(e/t)*t,getMemory=e=>{if(runtimeInitialized)return _calloc(e,1);var t=___heap_base,r=t+alignMemory(e,16);return ___heap_base=r,GOT.__heap_base.value=r,t},isInternalSym=e=>["__cpp_exception","__c_longjmp","__wasm_apply_data_relocs","__dso_handle","__tls_size","__tls_align","__set_stack_limits","_emscripten_tls_init","__wasm_init_tls","__wasm_call_ctors","__start_em_asm","__stop_em_asm","__start_em_js","__stop_em_js"].includes(e)||e.startsWith("__em_js__"),uleb128Encode=(e,t)=>{e<128?t.push(e):t.push(e%128|128,e>>7)},sigToWasmTypes=e=>{for(var t={i:"i32",j:"i64",f:"f32",d:"f64",e:"externref",p:"i32"},r={parameters:[],results:e[0]=="v"?[]:[t[e[0]]]},a=1;a{var r=e.slice(0,1),a=e.slice(1),o={i:127,p:127,j:126,f:125,d:124,e:111};t.push(96),uleb128Encode(a.length,t);for(var s=0;s{if(typeof WebAssembly.Function=="function")return new WebAssembly.Function(sigToWasmTypes(t),e);var r=[1];generateFuncType(t,r);var a=[0,97,115,109,1,0,0,0,1];uleb128Encode(r.length,a),a.push(...r),a.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var o=new WebAssembly.Module(new Uint8Array(a)),s=new WebAssembly.Instance(o,{e:{f:e}}),l=s.exports.f;return l},wasmTableMirror=[],wasmTable=new WebAssembly.Table({initial:5360,element:"anyfunc"}),getWasmTableEntry=e=>{var t=wasmTableMirror[e];return t||(e>=wasmTableMirror.length&&(wasmTableMirror.length=e+1),wasmTableMirror[e]=t=wasmTable.get(e)),t},updateTableMap=(e,t)=>{if(functionsInTableMap)for(var r=e;r(functionsInTableMap||(functionsInTableMap=new WeakMap,updateTableMap(0,wasmTable.length)),functionsInTableMap.get(e)||0),freeTableIndexes=[],getEmptyTableSlot=()=>{if(freeTableIndexes.length)return freeTableIndexes.pop();try{wasmTable.grow(1)}catch(e){throw e instanceof RangeError?"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.":e}return wasmTable.length-1},setWasmTableEntry=(e,t)=>{wasmTable.set(e,t),wasmTableMirror[e]=wasmTable.get(e)},addFunction=(e,t)=>{var r=getFunctionAddress(e);if(r)return r;var a=getEmptyTableSlot();try{setWasmTableEntry(a,e)}catch(s){if(!(s instanceof TypeError))throw s;var o=convertJsFunctionToWasm(e,t);setWasmTableEntry(a,o)}return functionsInTableMap.set(e,a),a},updateGOT=(e,t)=>{for(var r in e)if(!isInternalSym(r)){var a=e[r];GOT[r]||(GOT[r]=new WebAssembly.Global({value:"i32",mutable:!0})),(t||GOT[r].value==0)&&(typeof a=="function"?GOT[r].value=addFunction(a):typeof a=="number"?GOT[r].value=a:err(`unhandled export type for '${r}': ${typeof a}`))}},relocateExports=(e,t,r)=>{var a={};for(var o in e){var s=e[o];typeof s=="object"&&(s=s.value),typeof s=="number"&&(s+=t),a[o]=s}return updateGOT(a,r),a},isSymbolDefined=e=>{var t=wasmImports[e];return!(!t||t.stub)},dynCall=(e,t,r=[])=>{var a=getWasmTableEntry(t)(...r);return a},stackSave=()=>_emscripten_stack_get_current(),stackRestore=e=>__emscripten_stack_restore(e),createInvokeFunction=e=>(t,...r)=>{var a=stackSave();try{return dynCall(e,t,r)}catch(o){if(stackRestore(a),o!==o+0)throw o;if(_setThrew(1,0),e[0]=="j")return 0n}},resolveGlobalSymbol=(e,t=!1)=>{var r;return isSymbolDefined(e)?r=wasmImports[e]:e.startsWith("invoke_")&&(r=wasmImports[e]=createInvokeFunction(e.split("_")[1])),{sym:r,name:e}},UTF8ToString=(e,t)=>e?UTF8ArrayToString(HEAPU8,e,t):"",loadWebAssemblyModule=(binary,flags,libName,localScope,handle)=>{var metadata=getDylinkMetadata(binary);currentModuleWeakSymbols=metadata.weakImports;function loadModule(){var firstLoad=!handle||!HEAP8[handle+8];if(firstLoad){var memAlign=Math.pow(2,metadata.memoryAlign),memoryBase=metadata.memorySize?alignMemory(getMemory(metadata.memorySize+memAlign),memAlign):0,tableBase=metadata.tableSize?wasmTable.length:0;handle&&(HEAP8[handle+8]=1,HEAPU32[handle+12>>2]=memoryBase,HEAP32[handle+16>>2]=metadata.memorySize,HEAPU32[handle+20>>2]=tableBase,HEAP32[handle+24>>2]=metadata.tableSize)}else memoryBase=HEAPU32[handle+12>>2],tableBase=HEAPU32[handle+20>>2];var tableGrowthNeeded=tableBase+metadata.tableSize-wasmTable.length;tableGrowthNeeded>0&&wasmTable.grow(tableGrowthNeeded);var moduleExports;function resolveSymbol(e){var t=resolveGlobalSymbol(e).sym;return!t&&localScope&&(t=localScope[e]),t||(t=moduleExports[e]),t}var proxyHandler={get(e,t){switch(t){case"__memory_base":return memoryBase;case"__table_base":return tableBase}if(t in wasmImports&&!wasmImports[t].stub)return wasmImports[t];if(!(t in e)){var r;e[t]=(...a)=>(r||(r=resolveSymbol(t)),r(...a))}return e[t]}},proxy=new Proxy({},proxyHandler),info={"GOT.mem":new Proxy({},GOTHandler),"GOT.func":new Proxy({},GOTHandler),env:proxy,wasi_snapshot_preview1:proxy};function postInstantiation(module,instance){updateTableMap(tableBase,metadata.tableSize),moduleExports=relocateExports(instance.exports,memoryBase),flags.allowUndefined||reportUndefinedSymbols();function addEmAsm(addr,body){for(var args=[],arity=0;arity<16&&body.indexOf("$"+arity)!=-1;arity++)args.push("$"+arity);args=args.join(",");var func=`(${args}) => { ${body} };`;ASM_CONSTS[start]=eval(func)}if("__start_em_asm"in moduleExports)for(var start=moduleExports.__start_em_asm,stop=moduleExports.__stop_em_asm;start ${body};`;moduleExports[name]=eval(func)}for(var name in moduleExports)if(name.startsWith("__em_js__")){var start=moduleExports[name],jsString=UTF8ToString(start),parts=jsString.split("<::>");addEmJs(name.replace("__em_js__",""),parts[0],parts[1]),delete moduleExports[name]}var applyRelocs=moduleExports.__wasm_apply_data_relocs;applyRelocs&&(runtimeInitialized?applyRelocs():__RELOC_FUNCS__.push(applyRelocs));var init=moduleExports.__wasm_call_ctors;return init&&(runtimeInitialized?init():__ATINIT__.push(init)),moduleExports}if(flags.loadAsync){if(binary instanceof WebAssembly.Module){var instance=new WebAssembly.Instance(binary,info);return Promise.resolve(postInstantiation(binary,instance))}return WebAssembly.instantiate(binary,info).then(e=>postInstantiation(e.module,e.instance))}var module=binary instanceof WebAssembly.Module?binary:new WebAssembly.Module(binary),instance=new WebAssembly.Instance(module,info);return postInstantiation(module,instance)}return flags.loadAsync?metadata.neededDynlibs.reduce((e,t)=>e.then(()=>loadDynamicLibrary(t,flags,localScope)),Promise.resolve()).then(loadModule):(metadata.neededDynlibs.forEach(e=>loadDynamicLibrary(e,flags,localScope)),loadModule())},mergeLibSymbols=(e,t)=>{for(var[r,a]of Object.entries(e)){let o=l=>{isSymbolDefined(l)||(wasmImports[l]=a)};o(r);let s="__main_argc_argv";r=="main"&&o(s),r==s&&o("main")}},asyncLoad=async e=>{var t=await readAsync(e);return new Uint8Array(t)},preloadPlugins=Module.preloadPlugins||[],registerWasmPlugin=()=>{var e={promiseChainEnd:Promise.resolve(),canHandle:t=>!Module.noWasmDecoding&&t.endsWith(".so"),handle:(t,r,a,o)=>{e.promiseChainEnd=e.promiseChainEnd.then(()=>loadWebAssemblyModule(t,{loadAsync:!0,nodelete:!0},r,{})).then(s=>{preloadedWasm[r]=s,a(t)},s=>{err(`failed to instantiate wasm: ${r}: ${s}`),o()})}};preloadPlugins.push(e)},preloadedWasm={};function loadDynamicLibrary(e,t={global:!0,nodelete:!0},r,a){var o=LDSO.loadedLibsByName[e];if(o)return t.global?o.global||(o.global=!0,mergeLibSymbols(o.exports,e)):r&&Object.assign(r,o.exports),t.nodelete&&o.refcount!==1/0&&(o.refcount=1/0),o.refcount++,a&&(LDSO.loadedLibsByHandle[a]=o),t.loadAsync?Promise.resolve(!0):!0;o=newDSO(e,a,"loading"),o.refcount=t.nodelete?1/0:1,o.global=t.global;function s(){if(a){var _=HEAPU32[a+28>>2],m=HEAPU32[a+32>>2];if(_&&m){var p=HEAP8.slice(_,_+m);return t.loadAsync?Promise.resolve(p):p}}var d=locateFile(e);if(t.loadAsync)return asyncLoad(d);if(!readBinary)throw new Error(`${d}: file not found, and synchronous loading of external files is not available`);return readBinary(d)}function l(){var _=preloadedWasm[e];return _?t.loadAsync?Promise.resolve(_):_:t.loadAsync?s().then(m=>loadWebAssemblyModule(m,t,e,r,a)):loadWebAssemblyModule(s(),t,e,r,a)}function n(_){o.global?mergeLibSymbols(_,e):r&&Object.assign(r,_),o.exports=_}return t.loadAsync?l().then(_=>(n(_),!0)):(n(l()),!0)}var reportUndefinedSymbols=()=>{for(var[e,t]of Object.entries(GOT))if(t.value==0){var r=resolveGlobalSymbol(e,!0).sym;if(!r&&!t.required)continue;if(typeof r=="function")t.value=addFunction(r,r.sig);else if(typeof r=="number")t.value=r;else throw new Error(`bad export type for '${e}': ${typeof r}`)}},loadDylibs=()=>{if(!dynamicLibraries.length){reportUndefinedSymbols();return}addRunDependency("loadDylibs"),dynamicLibraries.reduce((e,t)=>e.then(()=>loadDynamicLibrary(t,{loadAsync:!0,global:!0,nodelete:!0,allowUndefined:!0})),Promise.resolve()).then(()=>{reportUndefinedSymbols(),removeRunDependency("loadDylibs")})},noExitRuntime=Module.noExitRuntime||!0;function setValue(e,t,r="i8"){switch(r.endsWith("*")&&(r="*"),r){case"i1":HEAP8[e]=t;break;case"i8":HEAP8[e]=t;break;case"i16":HEAP16[e>>1]=t;break;case"i32":HEAP32[e>>2]=t;break;case"i64":HEAP64[e>>3]=BigInt(t);break;case"float":HEAPF32[e>>2]=t;break;case"double":HEAPF64[e>>3]=t;break;case"*":HEAPU32[e>>2]=t;break;default:abort(`invalid type for setValue: ${r}`)}}var ___assert_fail=(e,t,r,a)=>abort(`Assertion failed: ${UTF8ToString(e)}, at: `+[t?UTF8ToString(t):"unknown filename",r,a?UTF8ToString(a):"unknown function"]);___assert_fail.sig="vppip";var ___call_sighandler=(e,t)=>getWasmTableEntry(e)(t);___call_sighandler.sig="vpi";var ___memory_base=new WebAssembly.Global({value:"i32",mutable:!1},16777216),___stack_pointer=new WebAssembly.Global({value:"i32",mutable:!0},23144432),PATH={isAbs:e=>e.charAt(0)==="/",splitPath:e=>{var t=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return t.exec(e).slice(1)},normalizeArray:(e,t)=>{for(var r=0,a=e.length-1;a>=0;a--){var o=e[a];o==="."?e.splice(a,1):o===".."?(e.splice(a,1),r++):r&&(e.splice(a,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=PATH.isAbs(e),r=e.substr(-1)==="/";return e=PATH.normalizeArray(e.split("/").filter(a=>!!a),!t).join("/"),!e&&!t&&(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=PATH.splitPath(e),r=t[0],a=t[1];return!r&&!a?".":(a&&(a=a.substr(0,a.length-1)),r+a)},basename:e=>{if(e==="/")return"/";e=PATH.normalize(e),e=e.replace(/\/$/,"");var t=e.lastIndexOf("/");return t===-1?e:e.substr(t+1)},join:(...e)=>PATH.normalize(e.join("/")),join2:(e,t)=>PATH.normalize(e+"/"+t)},initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function")return a=>crypto.getRandomValues(a);if(ENVIRONMENT_IS_NODE)try{var e=require("crypto"),t=e.randomFillSync;if(t)return a=>e.randomFillSync(a);var r=e.randomBytes;return a=>(a.set(r(a.byteLength)),a)}catch{}abort("initRandomDevice")},randomFill=e=>(randomFill=initRandomFill())(e),PATH_FS={resolve:(...e)=>{for(var t="",r=!1,a=e.length-1;a>=-1&&!r;a--){var o=a>=0?e[a]:FS.cwd();if(typeof o!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!o)return"";t=o+"/"+t,r=PATH.isAbs(o)}return t=PATH.normalizeArray(t.split("/").filter(s=>!!s),!r).join("/"),(r?"/":"")+t||"."},relative:(e,t)=>{e=PATH_FS.resolve(e).substr(1),t=PATH_FS.resolve(t).substr(1);function r(m){for(var p=0;p=0&&m[d]==="";d--);return p>d?[]:m.slice(p,d-p+1)}for(var a=r(e.split("/")),o=r(t.split("/")),s=Math.min(a.length,o.length),l=s,n=0;n{for(var t=0,r=0;r=55296&&a<=57343?(t+=4,++r):t+=3}return t},stringToUTF8Array=(e,t,r,a)=>{if(!(a>0))return 0;for(var o=r,s=r+a-1,l=0;l=55296&&n<=57343){var _=e.charCodeAt(++l);n=65536+((n&1023)<<10)|_&1023}if(n<=127){if(r>=s)break;t[r++]=n}else if(n<=2047){if(r+1>=s)break;t[r++]=192|n>>6,t[r++]=128|n&63}else if(n<=65535){if(r+2>=s)break;t[r++]=224|n>>12,t[r++]=128|n>>6&63,t[r++]=128|n&63}else{if(r+3>=s)break;t[r++]=240|n>>18,t[r++]=128|n>>12&63,t[r++]=128|n>>6&63,t[r++]=128|n&63}}return t[r]=0,r-o};function intArrayFromString(e,t,r){var a=r>0?r:lengthBytesUTF8(e)+1,o=new Array(a),s=stringToUTF8Array(e,o,0,o.length);return t&&(o.length=s),o}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var e=null;if(ENVIRONMENT_IS_NODE){var t=256,r=Buffer.alloc(t),a=0,o=process.stdin.fd;try{a=fs.readSync(o,r,0,t)}catch(s){if(s.toString().includes("EOF"))a=0;else throw s}a>0&&(e=r.slice(0,a).toString("utf-8"))}else typeof window<"u"&&typeof window.prompt=="function"&&(e=window.prompt("Input: "),e!==null&&(e+=` -`));if(!e)return null;FS_stdin_getChar_buffer=intArrayFromString(e,!0)}return FS_stdin_getChar_buffer.shift()},TTY={ttys:[],init(){},shutdown(){},register(e,t){TTY.ttys[e]={input:[],output:[],ops:t},FS.registerDevice(e,TTY.stream_ops)},stream_ops:{open(e){var t=TTY.ttys[e.node.rdev];if(!t)throw new FS.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,a,o){if(!e.tty||!e.tty.ops.get_char)throw new FS.ErrnoError(60);for(var s=0,l=0;l0&&(out(UTF8ArrayToString(e.output)),e.output=[])},ioctl_tcgets(e){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(e,t,r){return 0},ioctl_tiocgwinsz(e){return[24,80]}},default_tty1_ops:{put_char(e,t){t===null||t===10?(err(UTF8ArrayToString(e.output)),e.output=[]):t!=0&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(err(UTF8ArrayToString(e.output)),e.output=[])}}},zeroMemory=(e,t)=>{HEAPU8.fill(0,e,e+t)},mmapAlloc=e=>{e=alignMemory(e,65536);var t=_emscripten_builtin_memalign(65536,e);return t&&zeroMemory(t,e),t},MEMFS={ops_table:null,mount(e){return MEMFS.createNode(null,"/",16895,0)},createNode(e,t,r,a){if(FS.isBlkdev(r)||FS.isFIFO(r))throw new FS.ErrnoError(63);MEMFS.ops_table||(MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}});var o=FS.createNode(e,t,r,a);return FS.isDir(o.mode)?(o.node_ops=MEMFS.ops_table.dir.node,o.stream_ops=MEMFS.ops_table.dir.stream,o.contents={}):FS.isFile(o.mode)?(o.node_ops=MEMFS.ops_table.file.node,o.stream_ops=MEMFS.ops_table.file.stream,o.usedBytes=0,o.contents=null):FS.isLink(o.mode)?(o.node_ops=MEMFS.ops_table.link.node,o.stream_ops=MEMFS.ops_table.link.stream):FS.isChrdev(o.mode)&&(o.node_ops=MEMFS.ops_table.chrdev.node,o.stream_ops=MEMFS.ops_table.chrdev.stream),o.atime=o.mtime=o.ctime=Date.now(),e&&(e.contents[t]=o,e.atime=e.mtime=e.ctime=o.atime),o},getFileDataAsTypedArray(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){var a=1024*1024;t=Math.max(t,r*(r>>0),r!=0&&(t=Math.max(t,256));var o=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(o.subarray(0,e.usedBytes),0)}},resizeFileStorage(e,t){if(e.usedBytes!=t)if(t==0)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr(e){var t={};return t.dev=FS.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,FS.isDir(e.mode)?t.size=4096:FS.isFile(e.mode)?t.size=e.usedBytes:FS.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.atime),t.mtime=new Date(e.mtime),t.ctime=new Date(e.ctime),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr(e,t){for(let r of["mode","atime","mtime","ctime"])t[r]&&(e[r]=t[r]);t.size!==void 0&&MEMFS.resizeFileStorage(e,t.size)},lookup(e,t){throw MEMFS.doesNotExistError},mknod(e,t,r,a){return MEMFS.createNode(e,t,r,a)},rename(e,t,r){var a;try{a=FS.lookupNode(t,r)}catch{}if(a){if(FS.isDir(e.mode))for(var o in a.contents)throw new FS.ErrnoError(55);FS.hashRemoveNode(a)}delete e.parent.contents[e.name],t.contents[r]=e,e.name=r,t.ctime=t.mtime=e.parent.ctime=e.parent.mtime=Date.now()},unlink(e,t){delete e.contents[t],e.ctime=e.mtime=Date.now()},rmdir(e,t){var r=FS.lookupNode(e,t);for(var a in r.contents)throw new FS.ErrnoError(55);delete e.contents[t],e.ctime=e.mtime=Date.now()},readdir(e){return[".","..",...Object.keys(e.contents)]},symlink(e,t,r){var a=MEMFS.createNode(e,t,41471,0);return a.link=r,a},readlink(e){if(!FS.isLink(e.mode))throw new FS.ErrnoError(28);return e.link}},stream_ops:{read(e,t,r,a,o){var s=e.node.contents;if(o>=e.node.usedBytes)return 0;var l=Math.min(e.node.usedBytes-o,a);if(l>8&&s.subarray)t.set(s.subarray(o,o+l),r);else for(var n=0;n0||r+t{FS.createDataFile(e,t,r,a,o,s)},FS_handledByPreloadPlugin=(e,t,r,a)=>{typeof Browser<"u"&&Browser.init();var o=!1;return preloadPlugins.forEach(s=>{o||s.canHandle(t)&&(s.handle(e,t,r,a),o=!0)}),o},FS_createPreloadedFile=(e,t,r,a,o,s,l,n,_,m)=>{var p=t?PATH_FS.resolve(PATH.join2(e,t)):e,d=`cp ${p}`;function g(c){function f(u){m?.(),n||FS_createDataFile(e,t,u,a,o,_),s?.(),removeRunDependency(d)}FS_handledByPreloadPlugin(c,p,f,()=>{l?.(),removeRunDependency(d)})||f(c)}addRunDependency(d),typeof r=="string"?asyncLoad(r).then(g,l):g(r)},FS_modeStringToFlags=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},r=t[e];if(typeof r>"u")throw new Error(`Unknown file open mode: ${e}`);return r},FS_getMode=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},IDBFS={dbs:{},indexedDB:()=>{if(typeof indexedDB<"u")return indexedDB;var e=null;return typeof window=="object"&&(e=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB),e},DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",queuePersist:e=>{function t(){e.idbPersistState==="again"?r():e.idbPersistState=0}function r(){e.idbPersistState="idb",IDBFS.syncfs(e,!1,t)}e.idbPersistState?e.idbPersistState==="idb"&&(e.idbPersistState="again"):e.idbPersistState=setTimeout(r,0)},mount:e=>{var t=MEMFS.mount(e);if(e?.opts?.autoPersist){t.idbPersistState=0;var r=t.node_ops;t.node_ops=Object.assign({},t.node_ops),t.node_ops.mknod=(a,o,s,l)=>{var n=r.mknod(a,o,s,l);return n.node_ops=t.node_ops,n.idbfs_mount=t.mount,n.memfs_stream_ops=n.stream_ops,n.stream_ops=Object.assign({},n.stream_ops),n.stream_ops.write=(_,m,p,d,g,c)=>(_.node.isModified=!0,n.memfs_stream_ops.write(_,m,p,d,g,c)),n.stream_ops.close=_=>{var m=_.node;if(m.isModified&&(IDBFS.queuePersist(m.idbfs_mount),m.isModified=!1),m.memfs_stream_ops.close)return m.memfs_stream_ops.close(_)},n},t.node_ops.mkdir=(...a)=>(IDBFS.queuePersist(t.mount),r.mkdir(...a)),t.node_ops.rmdir=(...a)=>(IDBFS.queuePersist(t.mount),r.rmdir(...a)),t.node_ops.symlink=(...a)=>(IDBFS.queuePersist(t.mount),r.symlink(...a)),t.node_ops.unlink=(...a)=>(IDBFS.queuePersist(t.mount),r.unlink(...a)),t.node_ops.rename=(...a)=>(IDBFS.queuePersist(t.mount),r.rename(...a))}return t},syncfs:(e,t,r)=>{IDBFS.getLocalSet(e,(a,o)=>{if(a)return r(a);IDBFS.getRemoteSet(e,(s,l)=>{if(s)return r(s);var n=t?l:o,_=t?o:l;IDBFS.reconcile(n,_,r)})})},quit:()=>{Object.values(IDBFS.dbs).forEach(e=>e.close()),IDBFS.dbs={}},getDB:(e,t)=>{var r=IDBFS.dbs[e];if(r)return t(null,r);var a;try{a=IDBFS.indexedDB().open(e,IDBFS.DB_VERSION)}catch(o){return t(o)}if(!a)return t("Unable to connect to IndexedDB");a.onupgradeneeded=o=>{var s=o.target.result,l=o.target.transaction,n;s.objectStoreNames.contains(IDBFS.DB_STORE_NAME)?n=l.objectStore(IDBFS.DB_STORE_NAME):n=s.createObjectStore(IDBFS.DB_STORE_NAME),n.indexNames.contains("timestamp")||n.createIndex("timestamp","timestamp",{unique:!1})},a.onsuccess=()=>{r=a.result,IDBFS.dbs[e]=r,t(null,r)},a.onerror=o=>{t(o.target.error),o.preventDefault()}},getLocalSet:(e,t)=>{var r={};function a(_){return _!=="."&&_!==".."}function o(_){return m=>PATH.join2(_,m)}for(var s=FS.readdir(e.mountpoint).filter(a).map(o(e.mountpoint));s.length;){var l=s.pop(),n;try{n=FS.stat(l)}catch(_){return t(_)}FS.isDir(n.mode)&&s.push(...FS.readdir(l).filter(a).map(o(l))),r[l]={timestamp:n.mtime}}return t(null,{type:"local",entries:r})},getRemoteSet:(e,t)=>{var r={};IDBFS.getDB(e.mountpoint,(a,o)=>{if(a)return t(a);try{var s=o.transaction([IDBFS.DB_STORE_NAME],"readonly");s.onerror=_=>{t(_.target.error),_.preventDefault()};var l=s.objectStore(IDBFS.DB_STORE_NAME),n=l.index("timestamp");n.openKeyCursor().onsuccess=_=>{var m=_.target.result;if(!m)return t(null,{type:"remote",db:o,entries:r});r[m.primaryKey]={timestamp:m.key},m.continue()}}catch(_){return t(_)}})},loadLocalEntry:(e,t)=>{var r,a;try{var o=FS.lookupPath(e);a=o.node,r=FS.stat(e)}catch(s){return t(s)}return FS.isDir(r.mode)?t(null,{timestamp:r.mtime,mode:r.mode}):FS.isFile(r.mode)?(a.contents=MEMFS.getFileDataAsTypedArray(a),t(null,{timestamp:r.mtime,mode:r.mode,contents:a.contents})):t(new Error("node type not supported"))},storeLocalEntry:(e,t,r)=>{try{if(FS.isDir(t.mode))FS.mkdirTree(e,t.mode);else if(FS.isFile(t.mode))FS.writeFile(e,t.contents,{canOwn:!0});else return r(new Error("node type not supported"));FS.chmod(e,t.mode),FS.utime(e,t.timestamp,t.timestamp)}catch(a){return r(a)}r(null)},removeLocalEntry:(e,t)=>{try{var r=FS.stat(e);FS.isDir(r.mode)?FS.rmdir(e):FS.isFile(r.mode)&&FS.unlink(e)}catch(a){return t(a)}t(null)},loadRemoteEntry:(e,t,r)=>{var a=e.get(t);a.onsuccess=o=>r(null,o.target.result),a.onerror=o=>{r(o.target.error),o.preventDefault()}},storeRemoteEntry:(e,t,r,a)=>{try{var o=e.put(r,t)}catch(s){a(s);return}o.onsuccess=s=>a(),o.onerror=s=>{a(s.target.error),s.preventDefault()}},removeRemoteEntry:(e,t,r)=>{var a=e.delete(t);a.onsuccess=o=>r(),a.onerror=o=>{r(o.target.error),o.preventDefault()}},reconcile:(e,t,r)=>{var a=0,o=[];Object.keys(e.entries).forEach(d=>{var g=e.entries[d],c=t.entries[d];(!c||g.timestamp.getTime()!=c.timestamp.getTime())&&(o.push(d),a++)});var s=[];if(Object.keys(t.entries).forEach(d=>{e.entries[d]||(s.push(d),a++)}),!a)return r(null);var l=!1,n=e.type==="remote"?e.db:t.db,_=n.transaction([IDBFS.DB_STORE_NAME],"readwrite"),m=_.objectStore(IDBFS.DB_STORE_NAME);function p(d){if(d&&!l)return l=!0,r(d)}_.onerror=_.onabort=d=>{p(d.target.error),d.preventDefault()},_.oncomplete=d=>{l||r(null)},o.sort().forEach(d=>{t.type==="local"?IDBFS.loadRemoteEntry(m,d,(g,c)=>{if(g)return p(g);IDBFS.storeLocalEntry(d,c,p)}):IDBFS.loadLocalEntry(d,(g,c)=>{if(g)return p(g);IDBFS.storeRemoteEntry(m,d,c,p)})}),s.sort().reverse().forEach(d=>{t.type==="local"?IDBFS.removeLocalEntry(d,p):IDBFS.removeRemoteEntry(m,d,p)})}},ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},NODEFS={isWindows:!1,staticInit(){NODEFS.isWindows=!!process.platform.match(/^win/);var e=process.binding("constants");e.fs&&(e=e.fs),NODEFS.flagsForNodeMap={1024:e.O_APPEND,64:e.O_CREAT,128:e.O_EXCL,256:e.O_NOCTTY,0:e.O_RDONLY,2:e.O_RDWR,4096:e.O_SYNC,512:e.O_TRUNC,1:e.O_WRONLY,131072:e.O_NOFOLLOW}},convertNodeCode(e){var t=e.code;return ERRNO_CODES[t]},tryFSOperation(e){try{return e()}catch(t){throw t.code?t.code==="UNKNOWN"?new FS.ErrnoError(28):new FS.ErrnoError(NODEFS.convertNodeCode(t)):t}},mount(e){return NODEFS.createNode(null,"/",NODEFS.getMode(e.opts.root),0)},createNode(e,t,r,a){if(!FS.isDir(r)&&!FS.isFile(r)&&!FS.isLink(r))throw new FS.ErrnoError(28);var o=FS.createNode(e,t,r);return o.node_ops=NODEFS.node_ops,o.stream_ops=NODEFS.stream_ops,o},getMode(e){return NODEFS.tryFSOperation(()=>{var t=fs.lstatSync(e).mode;return NODEFS.isWindows&&(t|=(t&292)>>2),t})},realPath(e){for(var t=[];e.parent!==e;)t.push(e.name),e=e.parent;return t.push(e.mount.opts.root),t.reverse(),PATH.join(...t)},flagsForNode(e){e&=-2097153,e&=-2049,e&=-32769,e&=-524289,e&=-65537;var t=0;for(var r in NODEFS.flagsForNodeMap)e&r&&(t|=NODEFS.flagsForNodeMap[r],e^=r);if(e)throw new FS.ErrnoError(28);return t},node_ops:{getattr(e){var t=NODEFS.realPath(e),r;return NODEFS.tryFSOperation(()=>r=fs.lstatSync(t)),NODEFS.isWindows&&(r.blksize||(r.blksize=4096),r.blocks||(r.blocks=(r.size+r.blksize-1)/r.blksize|0),r.mode|=(r.mode&292)>>2),{dev:r.dev,ino:r.ino,mode:r.mode,nlink:r.nlink,uid:r.uid,gid:r.gid,rdev:r.rdev,size:r.size,atime:r.atime,mtime:r.mtime,ctime:r.ctime,blksize:r.blksize,blocks:r.blocks}},setattr(e,t){var r=NODEFS.realPath(e);NODEFS.tryFSOperation(()=>{if(t.mode!==void 0){var a=t.mode;NODEFS.isWindows&&(a&=384),fs.chmodSync(r,a),e.mode=t.mode}if(t.atime||t.mtime){var o=t.atime&&new Date(t.atime),s=t.mtime&&new Date(t.mtime);fs.utimesSync(r,o,s)}t.size!==void 0&&fs.truncateSync(r,t.size)})},lookup(e,t){var r=PATH.join2(NODEFS.realPath(e),t),a=NODEFS.getMode(r);return NODEFS.createNode(e,t,a)},mknod(e,t,r,a){var o=NODEFS.createNode(e,t,r,a),s=NODEFS.realPath(o);return NODEFS.tryFSOperation(()=>{FS.isDir(o.mode)?fs.mkdirSync(s,o.mode):fs.writeFileSync(s,"",{mode:o.mode})}),o},rename(e,t,r){var a=NODEFS.realPath(e),o=PATH.join2(NODEFS.realPath(t),r);try{FS.unlink(o)}catch{}NODEFS.tryFSOperation(()=>fs.renameSync(a,o)),e.name=r},unlink(e,t){var r=PATH.join2(NODEFS.realPath(e),t);NODEFS.tryFSOperation(()=>fs.unlinkSync(r))},rmdir(e,t){var r=PATH.join2(NODEFS.realPath(e),t);NODEFS.tryFSOperation(()=>fs.rmdirSync(r))},readdir(e){var t=NODEFS.realPath(e);return NODEFS.tryFSOperation(()=>fs.readdirSync(t))},symlink(e,t,r){var a=PATH.join2(NODEFS.realPath(e),t);NODEFS.tryFSOperation(()=>fs.symlinkSync(r,a))},readlink(e){var t=NODEFS.realPath(e);return NODEFS.tryFSOperation(()=>fs.readlinkSync(t))},statfs(e){var t=NODEFS.tryFSOperation(()=>fs.statfsSync(e));return t.frsize=t.bsize,t}},stream_ops:{open(e){var t=NODEFS.realPath(e.node);NODEFS.tryFSOperation(()=>{FS.isFile(e.node.mode)&&(e.shared.refcount=1,e.nfd=fs.openSync(t,NODEFS.flagsForNode(e.flags)))})},close(e){NODEFS.tryFSOperation(()=>{FS.isFile(e.node.mode)&&e.nfd&&--e.shared.refcount===0&&fs.closeSync(e.nfd)})},dup(e){e.shared.refcount++},read(e,t,r,a,o){return a===0?0:NODEFS.tryFSOperation(()=>fs.readSync(e.nfd,new Int8Array(t.buffer,r,a),0,a,o))},write(e,t,r,a,o){return NODEFS.tryFSOperation(()=>fs.writeSync(e.nfd,new Int8Array(t.buffer,r,a),0,a,o))},llseek(e,t,r){var a=t;if(r===1?a+=e.position:r===2&&FS.isFile(e.node.mode)&&NODEFS.tryFSOperation(()=>{var o=fs.fstatSync(e.nfd);a+=o.size}),a<0)throw new FS.ErrnoError(28);return a},mmap(e,t,r,a,o){if(!FS.isFile(e.node.mode))throw new FS.ErrnoError(43);var s=mmapAlloc(t);return NODEFS.stream_ops.read(e,HEAP8,s,t,r),{ptr:s,allocated:!0}},msync(e,t,r,a,o){return NODEFS.stream_ops.write(e,t,0,a,r,!1),0}}},FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:class{constructor(e){(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.d)(this,"name","ErrnoError");this.errno=e}},filesystems:null,syncFSRequests:0,readFiles:{},FSStream:class{constructor(){(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.d)(this,"shared",{})}get object(){return this.node}set object(e){this.node=e}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(e){this.shared.flags=e}get position(){return this.shared.position}set position(e){this.shared.position=e}},FSNode:class{constructor(e,t,r,a){(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.d)(this,"node_ops",{});(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.d)(this,"stream_ops",{});(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.d)(this,"readMode",365);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.d)(this,"writeMode",146);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.d)(this,"mounted",null);e||(e=this),this.parent=e,this.mount=e.mount,this.id=FS.nextInode++,this.name=t,this.mode=r,this.rdev=a,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(e){e?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(e){e?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(e,t={}){if(!e)return{path:"",node:null};t.follow_mount??(t.follow_mount=!0),PATH.isAbs(e)||(e=FS.cwd()+"/"+e);e:for(var r=0;r<40;r++){for(var a=e.split("/").filter(m=>!!m&&m!=="."),o=FS.root,s="/",l=0;l>>0)%FS.nameTable.length},hashAddNode(e){var t=FS.hashName(e.parent.id,e.name);e.name_next=FS.nameTable[t],FS.nameTable[t]=e},hashRemoveNode(e){var t=FS.hashName(e.parent.id,e.name);if(FS.nameTable[t]===e)FS.nameTable[t]=e.name_next;else for(var r=FS.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=FS.mayLookup(e);if(r)throw new FS.ErrnoError(r);for(var a=FS.hashName(e.id,t),o=FS.nameTable[a];o;o=o.name_next){var s=o.name;if(o.parent.id===e.id&&s===t)return o}return FS.lookup(e,t)},createNode(e,t,r,a){var o=new FS.FSNode(e,t,r,a);return FS.hashAddNode(o),o},destroyNode(e){FS.hashRemoveNode(e)},isRoot(e){return e===e.parent},isMountpoint(e){return!!e.mounted},isFile(e){return(e&61440)===32768},isDir(e){return(e&61440)===16384},isLink(e){return(e&61440)===40960},isChrdev(e){return(e&61440)===8192},isBlkdev(e){return(e&61440)===24576},isFIFO(e){return(e&61440)===4096},isSocket(e){return(e&49152)===49152},flagsToPermissionString(e){var t=["r","w","rw"][e&3];return e&512&&(t+="w"),t},nodePermissions(e,t){return FS.ignorePermissions?0:t.includes("r")&&!(e.mode&292)||t.includes("w")&&!(e.mode&146)||t.includes("x")&&!(e.mode&73)?2:0},mayLookup(e){if(!FS.isDir(e.mode))return 54;var t=FS.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){if(!FS.isDir(e.mode))return 54;try{var r=FS.lookupNode(e,t);return 20}catch{}return FS.nodePermissions(e,"wx")},mayDelete(e,t,r){var a;try{a=FS.lookupNode(e,t)}catch(s){return s.errno}var o=FS.nodePermissions(e,"wx");if(o)return o;if(r){if(!FS.isDir(a.mode))return 54;if(FS.isRoot(a)||FS.getPath(a)===FS.cwd())return 10}else if(FS.isDir(a.mode))return 31;return 0},mayOpen(e,t){return e?FS.isLink(e.mode)?32:FS.isDir(e.mode)&&(FS.flagsToPermissionString(t)!=="r"||t&512)?31:FS.nodePermissions(e,FS.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=FS.MAX_OPEN_FDS;e++)if(!FS.streams[e])return e;throw new FS.ErrnoError(33)},getStreamChecked(e){var t=FS.getStream(e);if(!t)throw new FS.ErrnoError(8);return t},getStream:e=>FS.streams[e],createStream(e,t=-1){return e=Object.assign(new FS.FSStream,e),t==-1&&(t=FS.nextfd()),e.fd=t,FS.streams[t]=e,e},closeStream(e){FS.streams[e]=null},dupStream(e,t=-1){var r=FS.createStream(e,t);return r.stream_ops?.dup?.(r),r},chrdev_stream_ops:{open(e){var t=FS.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open?.(e)},llseek(){throw new FS.ErrnoError(70)}},major:e=>e>>8,minor:e=>e&255,makedev:(e,t)=>e<<8|t,registerDevice(e,t){FS.devices[e]={stream_ops:t}},getDevice:e=>FS.devices[e],getMounts(e){for(var t=[],r=[e];r.length;){var a=r.pop();t.push(a),r.push(...a.mounts)}return t},syncfs(e,t){typeof e=="function"&&(t=e,e=!1),FS.syncFSRequests++,FS.syncFSRequests>1&&err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=FS.getMounts(FS.root.mount),a=0;function o(l){return FS.syncFSRequests--,t(l)}function s(l){if(l)return s.errored?void 0:(s.errored=!0,o(l));++a>=r.length&&o(null)}r.forEach(l=>{if(!l.type.syncfs)return s(null);l.type.syncfs(l,e,s)})},mount(e,t,r){var a=r==="/",o=!r,s;if(a&&FS.root)throw new FS.ErrnoError(10);if(!a&&!o){var l=FS.lookupPath(r,{follow_mount:!1});if(r=l.path,s=l.node,FS.isMountpoint(s))throw new FS.ErrnoError(10);if(!FS.isDir(s.mode))throw new FS.ErrnoError(54)}var n={type:e,opts:t,mountpoint:r,mounts:[]},_=e.mount(n);return _.mount=n,n.root=_,a?FS.root=_:s&&(s.mounted=n,s.mount&&s.mount.mounts.push(n)),_},unmount(e){var t=FS.lookupPath(e,{follow_mount:!1});if(!FS.isMountpoint(t.node))throw new FS.ErrnoError(28);var r=t.node,a=r.mounted,o=FS.getMounts(a);Object.keys(FS.nameTable).forEach(l=>{for(var n=FS.nameTable[l];n;){var _=n.name_next;o.includes(n.mount)&&FS.destroyNode(n),n=_}}),r.mounted=null;var s=r.mount.mounts.indexOf(a);r.mount.mounts.splice(s,1)},lookup(e,t){return e.node_ops.lookup(e,t)},mknod(e,t,r){var a=FS.lookupPath(e,{parent:!0}),o=a.node,s=PATH.basename(e);if(!s||s==="."||s==="..")throw new FS.ErrnoError(28);var l=FS.mayCreate(o,s);if(l)throw new FS.ErrnoError(l);if(!o.node_ops.mknod)throw new FS.ErrnoError(63);return o.node_ops.mknod(o,s,t,r)},statfs(e){var t={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:FS.nextInode,ffree:FS.nextInode-1,fsid:42,flags:2,namelen:255},r=FS.lookupPath(e,{follow:!0}).node;return r?.node_ops.statfs&&Object.assign(t,r.node_ops.statfs(r.mount.opts.root)),t},create(e,t=438){return t&=4095,t|=32768,FS.mknod(e,t,0)},mkdir(e,t=511){return t&=1023,t|=16384,FS.mknod(e,t,0)},mkdirTree(e,t){for(var r=e.split("/"),a="",o=0;o"u"&&(r=t,t=438),t|=8192,FS.mknod(e,t,r)},symlink(e,t){if(!PATH_FS.resolve(e))throw new FS.ErrnoError(44);var r=FS.lookupPath(t,{parent:!0}),a=r.node;if(!a)throw new FS.ErrnoError(44);var o=PATH.basename(t),s=FS.mayCreate(a,o);if(s)throw new FS.ErrnoError(s);if(!a.node_ops.symlink)throw new FS.ErrnoError(63);return a.node_ops.symlink(a,o,e)},rename(e,t){var r=PATH.dirname(e),a=PATH.dirname(t),o=PATH.basename(e),s=PATH.basename(t),l,n,_;if(l=FS.lookupPath(e,{parent:!0}),n=l.node,l=FS.lookupPath(t,{parent:!0}),_=l.node,!n||!_)throw new FS.ErrnoError(44);if(n.mount!==_.mount)throw new FS.ErrnoError(75);var m=FS.lookupNode(n,o),p=PATH_FS.relative(e,a);if(p.charAt(0)!==".")throw new FS.ErrnoError(28);if(p=PATH_FS.relative(t,r),p.charAt(0)!==".")throw new FS.ErrnoError(55);var d;try{d=FS.lookupNode(_,s)}catch{}if(m!==d){var g=FS.isDir(m.mode),c=FS.mayDelete(n,o,g);if(c)throw new FS.ErrnoError(c);if(c=d?FS.mayDelete(_,s,g):FS.mayCreate(_,s),c)throw new FS.ErrnoError(c);if(!n.node_ops.rename)throw new FS.ErrnoError(63);if(FS.isMountpoint(m)||d&&FS.isMountpoint(d))throw new FS.ErrnoError(10);if(_!==n&&(c=FS.nodePermissions(n,"w"),c))throw new FS.ErrnoError(c);FS.hashRemoveNode(m);try{n.node_ops.rename(m,_,s),m.parent=_}catch(f){throw f}finally{FS.hashAddNode(m)}}},rmdir(e){var t=FS.lookupPath(e,{parent:!0}),r=t.node,a=PATH.basename(e),o=FS.lookupNode(r,a),s=FS.mayDelete(r,a,!0);if(s)throw new FS.ErrnoError(s);if(!r.node_ops.rmdir)throw new FS.ErrnoError(63);if(FS.isMountpoint(o))throw new FS.ErrnoError(10);r.node_ops.rmdir(r,a),FS.destroyNode(o)},readdir(e){var t=FS.lookupPath(e,{follow:!0}),r=t.node;if(!r.node_ops.readdir)throw new FS.ErrnoError(54);return r.node_ops.readdir(r)},unlink(e){var t=FS.lookupPath(e,{parent:!0}),r=t.node;if(!r)throw new FS.ErrnoError(44);var a=PATH.basename(e),o=FS.lookupNode(r,a),s=FS.mayDelete(r,a,!1);if(s)throw new FS.ErrnoError(s);if(!r.node_ops.unlink)throw new FS.ErrnoError(63);if(FS.isMountpoint(o))throw new FS.ErrnoError(10);r.node_ops.unlink(r,a),FS.destroyNode(o)},readlink(e){var t=FS.lookupPath(e),r=t.node;if(!r)throw new FS.ErrnoError(44);if(!r.node_ops.readlink)throw new FS.ErrnoError(28);return r.node_ops.readlink(r)},stat(e,t){var r=FS.lookupPath(e,{follow:!t}),a=r.node;if(!a)throw new FS.ErrnoError(44);if(!a.node_ops.getattr)throw new FS.ErrnoError(63);return a.node_ops.getattr(a)},lstat(e){return FS.stat(e,!0)},chmod(e,t,r){var a;if(typeof e=="string"){var o=FS.lookupPath(e,{follow:!r});a=o.node}else a=e;if(!a.node_ops.setattr)throw new FS.ErrnoError(63);a.node_ops.setattr(a,{mode:t&4095|a.mode&-4096,ctime:Date.now()})},lchmod(e,t){FS.chmod(e,t,!0)},fchmod(e,t){var r=FS.getStreamChecked(e);FS.chmod(r.node,t)},chown(e,t,r,a){var o;if(typeof e=="string"){var s=FS.lookupPath(e,{follow:!a});o=s.node}else o=e;if(!o.node_ops.setattr)throw new FS.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown(e,t,r){FS.chown(e,t,r,!0)},fchown(e,t,r){var a=FS.getStreamChecked(e);FS.chown(a.node,t,r)},truncate(e,t){if(t<0)throw new FS.ErrnoError(28);var r;if(typeof e=="string"){var a=FS.lookupPath(e,{follow:!0});r=a.node}else r=e;if(!r.node_ops.setattr)throw new FS.ErrnoError(63);if(FS.isDir(r.mode))throw new FS.ErrnoError(31);if(!FS.isFile(r.mode))throw new FS.ErrnoError(28);var o=FS.nodePermissions(r,"w");if(o)throw new FS.ErrnoError(o);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=FS.getStreamChecked(e);if(!(r.flags&2097155))throw new FS.ErrnoError(28);FS.truncate(r.node,t)},utime(e,t,r){var a=FS.lookupPath(e,{follow:!0}),o=a.node;o.node_ops.setattr(o,{atime:t,mtime:r})},open(e,t,r=438){if(e==="")throw new FS.ErrnoError(44);t=typeof t=="string"?FS_modeStringToFlags(t):t,t&64?r=r&4095|32768:r=0;var a;if(typeof e=="object")a=e;else{var o=FS.lookupPath(e,{follow:!(t&131072),noent_okay:!0});a=o.node,e=o.path}var s=!1;if(t&64)if(a){if(t&128)throw new FS.ErrnoError(20)}else a=FS.mknod(e,r,0),s=!0;if(!a)throw new FS.ErrnoError(44);if(FS.isChrdev(a.mode)&&(t&=-513),t&65536&&!FS.isDir(a.mode))throw new FS.ErrnoError(54);if(!s){var l=FS.mayOpen(a,t);if(l)throw new FS.ErrnoError(l)}t&512&&!s&&FS.truncate(a,0),t&=-131713;var n=FS.createStream({node:a,path:FS.getPath(a),flags:t,seekable:!0,position:0,stream_ops:a.stream_ops,ungotten:[],error:!1});return n.stream_ops.open&&n.stream_ops.open(n),Module.logReadFiles&&!(t&1)&&(e in FS.readFiles||(FS.readFiles[e]=1)),n},close(e){if(FS.isClosed(e))throw new FS.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(t){throw t}finally{FS.closeStream(e.fd)}e.fd=null},isClosed(e){return e.fd===null},llseek(e,t,r){if(FS.isClosed(e))throw new FS.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new FS.ErrnoError(70);if(r!=0&&r!=1&&r!=2)throw new FS.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read(e,t,r,a,o){if(a<0||o<0)throw new FS.ErrnoError(28);if(FS.isClosed(e))throw new FS.ErrnoError(8);if((e.flags&2097155)===1)throw new FS.ErrnoError(8);if(FS.isDir(e.node.mode))throw new FS.ErrnoError(31);if(!e.stream_ops.read)throw new FS.ErrnoError(28);var s=typeof o<"u";if(!s)o=e.position;else if(!e.seekable)throw new FS.ErrnoError(70);var l=e.stream_ops.read(e,t,r,a,o);return s||(e.position+=l),l},write(e,t,r,a,o,s){if(a<0||o<0)throw new FS.ErrnoError(28);if(FS.isClosed(e))throw new FS.ErrnoError(8);if(!(e.flags&2097155))throw new FS.ErrnoError(8);if(FS.isDir(e.node.mode))throw new FS.ErrnoError(31);if(!e.stream_ops.write)throw new FS.ErrnoError(28);e.seekable&&e.flags&1024&&FS.llseek(e,0,2);var l=typeof o<"u";if(!l)o=e.position;else if(!e.seekable)throw new FS.ErrnoError(70);var n=e.stream_ops.write(e,t,r,a,o,s);return l||(e.position+=n),n},allocate(e,t,r){if(FS.isClosed(e))throw new FS.ErrnoError(8);if(t<0||r<=0)throw new FS.ErrnoError(28);if(!(e.flags&2097155))throw new FS.ErrnoError(8);if(!FS.isFile(e.node.mode)&&!FS.isDir(e.node.mode))throw new FS.ErrnoError(43);if(!e.stream_ops.allocate)throw new FS.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,a,o){if(a&2&&!(o&2)&&(e.flags&2097155)!==2)throw new FS.ErrnoError(2);if((e.flags&2097155)===1)throw new FS.ErrnoError(2);if(!e.stream_ops.mmap)throw new FS.ErrnoError(43);if(!t)throw new FS.ErrnoError(28);return e.stream_ops.mmap(e,t,r,a,o)},msync(e,t,r,a,o){return e.stream_ops.msync?e.stream_ops.msync(e,t,r,a,o):0},ioctl(e,t,r){if(!e.stream_ops.ioctl)throw new FS.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e,t={}){if(t.flags=t.flags||0,t.encoding=t.encoding||"binary",t.encoding!=="utf8"&&t.encoding!=="binary")throw new Error(`Invalid encoding type "${t.encoding}"`);var r,a=FS.open(e,t.flags),o=FS.stat(e),s=o.size,l=new Uint8Array(s);return FS.read(a,l,0,s,0),t.encoding==="utf8"?r=UTF8ArrayToString(l):t.encoding==="binary"&&(r=l),FS.close(a),r},writeFile(e,t,r={}){r.flags=r.flags||577;var a=FS.open(e,r.flags,r.mode);if(typeof t=="string"){var o=new Uint8Array(lengthBytesUTF8(t)+1),s=stringToUTF8Array(t,o,0,o.length);FS.write(a,o,0,s,void 0,r.canOwn)}else if(ArrayBuffer.isView(t))FS.write(a,t,0,t.byteLength,void 0,r.canOwn);else throw new Error("Unsupported data type");FS.close(a)},cwd:()=>FS.currentPath,chdir(e){var t=FS.lookupPath(e,{follow:!0});if(t.node===null)throw new FS.ErrnoError(44);if(!FS.isDir(t.node.mode))throw new FS.ErrnoError(54);var r=FS.nodePermissions(t.node,"x");if(r)throw new FS.ErrnoError(r);FS.currentPath=t.path},createDefaultDirectories(){FS.mkdir("/tmp"),FS.mkdir("/home"),FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev"),FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(a,o,s,l,n)=>l,llseek:()=>0}),FS.mkdev("/dev/null",FS.makedev(1,3)),TTY.register(FS.makedev(5,0),TTY.default_tty_ops),TTY.register(FS.makedev(6,0),TTY.default_tty1_ops),FS.mkdev("/dev/tty",FS.makedev(5,0)),FS.mkdev("/dev/tty1",FS.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(t===0&&(t=randomFill(e).byteLength),e[--t]);FS.createDevice("/dev","random",r),FS.createDevice("/dev","urandom",r),FS.mkdir("/dev/shm"),FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var e=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd"),FS.mount({mount(){var t=FS.createNode(e,"fd",16895,73);return t.stream_ops={llseek:MEMFS.stream_ops.llseek},t.node_ops={lookup(r,a){var o=+a,s=FS.getStreamChecked(o),l={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>s.path},id:o+1};return l.parent=l,l},readdir(){return Array.from(FS.streams.entries()).filter(([r,a])=>a).map(([r,a])=>r.toString())}},t}},{},"/proc/self/fd")},createStandardStreams(e,t,r){e?FS.createDevice("/dev","stdin",e):FS.symlink("/dev/tty","/dev/stdin"),t?FS.createDevice("/dev","stdout",null,t):FS.symlink("/dev/tty","/dev/stdout"),r?FS.createDevice("/dev","stderr",null,r):FS.symlink("/dev/tty1","/dev/stderr");var a=FS.open("/dev/stdin",0),o=FS.open("/dev/stdout",1),s=FS.open("/dev/stderr",1)},staticInit(){FS.nameTable=new Array(4096),FS.mount(MEMFS,{},"/"),FS.createDefaultDirectories(),FS.createDefaultDevices(),FS.createSpecialDirectories(),FS.filesystems={MEMFS,IDBFS,NODEFS}},init(e,t,r){FS.initialized=!0,e??(e=Module.stdin),t??(t=Module.stdout),r??(r=Module.stderr),FS.createStandardStreams(e,t,r)},quit(){FS.initialized=!1,_fflush(0);for(var e=0;ethis.length-1||c<0)){var f=c%this.chunkSize,u=c/this.chunkSize|0;return this.getter(u)[f]}}setDataGetter(c){this.getter=c}cacheLength(){var c=new XMLHttpRequest;if(c.open("HEAD",r,!1),c.send(null),!(c.status>=200&&c.status<300||c.status===304))throw new Error("Couldn't load "+r+". Status: "+c.status);var f=Number(c.getResponseHeader("Content-length")),u,w=(u=c.getResponseHeader("Accept-Ranges"))&&u==="bytes",h=(u=c.getResponseHeader("Content-Encoding"))&&u==="gzip",S=1024*1024;w||(S=f);var M=(x,E)=>{if(x>E)throw new Error("invalid range ("+x+", "+E+") or no bytes requested!");if(E>f-1)throw new Error("only "+f+" bytes available! programmer error!");var b=new XMLHttpRequest;if(b.open("GET",r,!1),f!==S&&b.setRequestHeader("Range","bytes="+x+"-"+E),b.responseType="arraybuffer",b.overrideMimeType&&b.overrideMimeType("text/plain; charset=x-user-defined"),b.send(null),!(b.status>=200&&b.status<300||b.status===304))throw new Error("Couldn't load "+r+". Status: "+b.status);return b.response!==void 0?new Uint8Array(b.response||[]):intArrayFromString(b.responseText||"",!0)},y=this;y.setDataGetter(x=>{var E=x*S,b=(x+1)*S-1;if(b=Math.min(b,f-1),typeof y.chunks[x]>"u"&&(y.chunks[x]=M(E,b)),typeof y.chunks[x]>"u")throw new Error("doXHR failed!");return y.chunks[x]}),(h||!f)&&(S=f=1,f=this.getter(0).length,S=f,out("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=f,this._chunkSize=S,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(typeof XMLHttpRequest<"u"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var l=new s,n={isDevice:!1,contents:l}}else var n={isDevice:!1,url:r};var _=FS.createFile(e,t,n,a,o);n.contents?_.contents=n.contents:n.url&&(_.contents=null,_.url=n.url),Object.defineProperties(_,{usedBytes:{get:function(){return this.contents.length}}});var m={},p=Object.keys(_.stream_ops);p.forEach(g=>{var c=_.stream_ops[g];m[g]=(...f)=>(FS.forceLoadFile(_),c(...f))});function d(g,c,f,u,w){var h=g.node.contents;if(w>=h.length)return 0;var S=Math.min(h.length-w,u);if(h.slice)for(var M=0;M(FS.forceLoadFile(_),d(g,c,f,u,w)),m.mmap=(g,c,f,u,w)=>{FS.forceLoadFile(_);var h=mmapAlloc(c);if(!h)throw new FS.ErrnoError(48);return d(g,HEAP8,h,c,f),{ptr:h,allocated:!0}},_.stream_ops=m,_}},SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(PATH.isAbs(t))return t;var a;if(e===-100)a=FS.cwd();else{var o=SYSCALLS.getStreamFromFD(e);a=o.path}if(t.length==0){if(!r)throw new FS.ErrnoError(44);return a}return a+"/"+t},doStat(e,t,r){var a=e(t);HEAP32[r>>2]=a.dev,HEAP32[r+4>>2]=a.mode,HEAPU32[r+8>>2]=a.nlink,HEAP32[r+12>>2]=a.uid,HEAP32[r+16>>2]=a.gid,HEAP32[r+20>>2]=a.rdev,HEAP64[r+24>>3]=BigInt(a.size),HEAP32[r+32>>2]=4096,HEAP32[r+36>>2]=a.blocks;var o=a.atime.getTime(),s=a.mtime.getTime(),l=a.ctime.getTime();return HEAP64[r+40>>3]=BigInt(Math.floor(o/1e3)),HEAPU32[r+48>>2]=o%1e3*1e3*1e3,HEAP64[r+56>>3]=BigInt(Math.floor(s/1e3)),HEAPU32[r+64>>2]=s%1e3*1e3*1e3,HEAP64[r+72>>3]=BigInt(Math.floor(l/1e3)),HEAPU32[r+80>>2]=l%1e3*1e3*1e3,HEAP64[r+88>>3]=BigInt(a.ino),0},doMsync(e,t,r,a,o){if(!FS.isFile(t.node.mode))throw new FS.ErrnoError(43);if(a&2)return 0;var s=HEAPU8.slice(e,e+r);FS.msync(t,s,o,r,a)},getStreamFromFD(e){var t=FS.getStreamChecked(e);return t},varargs:void 0,getStr(e){var t=UTF8ToString(e);return t}},___syscall__newselect=function(e,t,r,a,o){try{for(var s=0,l=t?HEAP32[t>>2]:0,n=t?HEAP32[t+4>>2]:0,_=r?HEAP32[r>>2]:0,m=r?HEAP32[r+4>>2]:0,p=a?HEAP32[a>>2]:0,d=a?HEAP32[a+4>>2]:0,g=0,c=0,f=0,u=0,w=0,h=0,S=(t?HEAP32[t>>2]:0)|(r?HEAP32[r>>2]:0)|(a?HEAP32[a>>2]:0),M=(t?HEAP32[t+4>>2]:0)|(r?HEAP32[r+4>>2]:0)|(a?HEAP32[a+4>>2]:0),y=(z,P,U,A)=>z<32?P&A:U&A,x=0;x>2]:0,R=t?HEAP32[o+4>>2]:0;D=(X+R/1e6)*1e3}T=b.stream_ops.poll(b,D)}T&1&&y(x,l,n,E)&&(x<32?g=g|E:c=c|E,s++),T&4&&y(x,_,m,E)&&(x<32?f=f|E:u=u|E,s++),T&2&&y(x,p,d,E)&&(x<32?w=w|E:h=h|E,s++)}}return t&&(HEAP32[t>>2]=g,HEAP32[t+4>>2]=c),r&&(HEAP32[r>>2]=f,HEAP32[r+4>>2]=u),a&&(HEAP32[a>>2]=w,HEAP32[a+4>>2]=h),s}catch(z){if(typeof FS>"u"||z.name!=="ErrnoError")throw z;return-z.errno}};___syscall__newselect.sig="iipppp";var SOCKFS={websocketArgs:{},callbacks:{},on(e,t){SOCKFS.callbacks[e]=t},emit(e,t){SOCKFS.callbacks[e]?.(t)},mount(e){return SOCKFS.websocketArgs=Module.websocket||{},(Module.websocket??(Module.websocket={})).on=SOCKFS.on,FS.createNode(null,"/",16895,0)},createSocket(e,t,r){t&=-526337;var a=t==1;if(a&&r&&r!=6)throw new FS.ErrnoError(66);var o={family:e,type:t,protocol:r,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops},s=SOCKFS.nextname(),l=FS.createNode(SOCKFS.root,s,49152,0);l.sock=o;var n=FS.createStream({path:s,node:l,flags:2,seekable:!1,stream_ops:SOCKFS.stream_ops});return o.stream=n,o},getSocket(e){var t=FS.getStream(e);return!t||!FS.isSocket(t.node.mode)?null:t.node.sock},stream_ops:{poll(e){var t=e.node.sock;return t.sock_ops.poll(t)},ioctl(e,t,r){var a=e.node.sock;return a.sock_ops.ioctl(a,t,r)},read(e,t,r,a,o){var s=e.node.sock,l=s.sock_ops.recvmsg(s,a);return l?(t.set(l.buffer,r),l.buffer.length):0},write(e,t,r,a,o){var s=e.node.sock;return s.sock_ops.sendmsg(s,t,r,a)},close(e){var t=e.node.sock;t.sock_ops.close(t)}},nextname(){return SOCKFS.nextname.current||(SOCKFS.nextname.current=0),`socket[${SOCKFS.nextname.current++}]`},websocket_sock_ops:{createPeer(e,t,r){var a;if(typeof t=="object"&&(a=t,t=null,r=null),a)if(a._socket)t=a._socket.remoteAddress,r=a._socket.remotePort;else{var o=/ws[s]?:\/\/([^:]+):(\d+)/.exec(a.url);if(!o)throw new Error("WebSocket URL must be in the format ws(s)://address:port");t=o[1],r=parseInt(o[2],10)}else try{var s="ws:#".replace("#","//"),l="binary",n=void 0;if(SOCKFS.websocketArgs.url&&(s=SOCKFS.websocketArgs.url),SOCKFS.websocketArgs.subprotocol?l=SOCKFS.websocketArgs.subprotocol:SOCKFS.websocketArgs.subprotocol===null&&(l="null"),s==="ws://"||s==="wss://"){var _=t.split("/");s=s+_[0]+":"+r+"/"+_.slice(1).join("/")}l!=="null"&&(l=l.replace(/^ +| +$/g,"").split(/ *, */),n=l);var m;ENVIRONMENT_IS_NODE?m=require("ws"):m=WebSocket,a=new m(s,n),a.binaryType="arraybuffer"}catch{throw new FS.ErrnoError(23)}var p={addr:t,port:r,socket:a,msg_send_queue:[]};return SOCKFS.websocket_sock_ops.addPeer(e,p),SOCKFS.websocket_sock_ops.handlePeerEvents(e,p),e.type===2&&typeof e.sport<"u"&&p.msg_send_queue.push(new Uint8Array([255,255,255,255,112,111,114,116,(e.sport&65280)>>8,e.sport&255])),p},getPeer(e,t,r){return e.peers[t+":"+r]},addPeer(e,t){e.peers[t.addr+":"+t.port]=t},removePeer(e,t){delete e.peers[t.addr+":"+t.port]},handlePeerEvents(e,t){var r=!0,a=function(){e.connecting=!1,SOCKFS.emit("open",e.stream.fd);try{for(var s=t.msg_send_queue.shift();s;)t.socket.send(s),s=t.msg_send_queue.shift()}catch{t.socket.close()}};function o(s){if(typeof s=="string"){var l=new TextEncoder;s=l.encode(s)}else{if(assert(s.byteLength!==void 0),s.byteLength==0)return;s=new Uint8Array(s)}var n=r;if(r=!1,n&&s.length===10&&s[0]===255&&s[1]===255&&s[2]===255&&s[3]===255&&s[4]===112&&s[5]===111&&s[6]===114&&s[7]===116){var _=s[8]<<8|s[9];SOCKFS.websocket_sock_ops.removePeer(e,t),t.port=_,SOCKFS.websocket_sock_ops.addPeer(e,t);return}e.recv_queue.push({addr:t.addr,port:t.port,data:s}),SOCKFS.emit("message",e.stream.fd)}ENVIRONMENT_IS_NODE?(t.socket.on("open",a),t.socket.on("message",function(s,l){l&&o(new Uint8Array(s).buffer)}),t.socket.on("close",function(){SOCKFS.emit("close",e.stream.fd)}),t.socket.on("error",function(s){e.error=14,SOCKFS.emit("error",[e.stream.fd,e.error,"ECONNREFUSED: Connection refused"])})):(t.socket.onopen=a,t.socket.onclose=function(){SOCKFS.emit("close",e.stream.fd)},t.socket.onmessage=function(l){o(l.data)},t.socket.onerror=function(s){e.error=14,SOCKFS.emit("error",[e.stream.fd,e.error,"ECONNREFUSED: Connection refused"])})},poll(e){if(e.type===1&&e.server)return e.pending.length?65:0;var t=0,r=e.type===1?SOCKFS.websocket_sock_ops.getPeer(e,e.daddr,e.dport):null;return(e.recv_queue.length||!r||r&&r.socket.readyState===r.socket.CLOSING||r&&r.socket.readyState===r.socket.CLOSED)&&(t|=65),(!r||r&&r.socket.readyState===r.socket.OPEN)&&(t|=4),(r&&r.socket.readyState===r.socket.CLOSING||r&&r.socket.readyState===r.socket.CLOSED)&&(e.connecting?t|=4:t|=16),t},ioctl(e,t,r){switch(t){case 21531:var a=0;return e.recv_queue.length&&(a=e.recv_queue[0].data.length),HEAP32[r>>2]=a,0;default:return 28}},close(e){if(e.server){try{e.server.close()}catch{}e.server=null}for(var t=Object.keys(e.peers),r=0;r{var t=SOCKFS.getSocket(e);if(!t)throw new FS.ErrnoError(8);return t},inetNtop4=e=>(e&255)+"."+(e>>8&255)+"."+(e>>16&255)+"."+(e>>24&255),inetNtop6=e=>{var t="",r=0,a=0,o=0,s=0,l=0,n=0,_=[e[0]&65535,e[0]>>16,e[1]&65535,e[1]>>16,e[2]&65535,e[2]>>16,e[3]&65535,e[3]>>16],m=!0,p="";for(n=0;n<5;n++)if(_[n]!==0){m=!1;break}if(m){if(p=inetNtop4(_[6]|_[7]<<16),_[5]===-1)return t="::ffff:",t+=p,t;if(_[5]===0)return t="::",p==="0.0.0.0"&&(p=""),p==="0.0.0.1"&&(p="1"),t+=p,t}for(r=0;r<8;r++)_[r]===0&&(r-o>1&&(l=0),o=r,l++),l>a&&(a=l,s=r-a+1);for(r=0;r<8;r++){if(a>1&&_[r]===0&&r>=s&&r{var r=HEAP16[e>>1],a=_ntohs(HEAPU16[e+2>>1]),o;switch(r){case 2:if(t!==16)return{errno:28};o=HEAP32[e+4>>2],o=inetNtop4(o);break;case 10:if(t!==28)return{errno:28};o=[HEAP32[e+8>>2],HEAP32[e+12>>2],HEAP32[e+16>>2],HEAP32[e+20>>2]],o=inetNtop6(o);break;default:return{errno:5}}return{family:r,addr:o,port:a}},inetPton4=e=>{for(var t=e.split("."),r=0;r<4;r++){var a=Number(t[r]);if(isNaN(a))return null;t[r]=a}return(t[0]|t[1]<<8|t[2]<<16|t[3]<<24)>>>0},jstoi_q=e=>parseInt(e),inetPton6=e=>{var t,r,a,o,s=/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i,l=[];if(!s.test(e))return null;if(e==="::")return[0,0,0,0,0,0,0,0];for(e.startsWith("::")?e=e.replace("::","Z:"):e=e.replace("::",":Z:"),e.indexOf(".")>0?(e=e.replace(new RegExp("[.]","g"),":"),t=e.split(":"),t[t.length-4]=jstoi_q(t[t.length-4])+jstoi_q(t[t.length-3])*256,t[t.length-3]=jstoi_q(t[t.length-2])+jstoi_q(t[t.length-1])*256,t=t.slice(0,t.length-2)):t=e.split(":"),a=0,o=0,r=0;r{var r=readSockaddr(e,t);if(r.errno)throw new FS.ErrnoError(r.errno);return r.addr=DNS.lookup_addr(r.addr)||r.addr,r};function ___syscall_bind(e,t,r,a,o,s){try{var l=getSocketFromFD(e),n=getSocketAddress(t,r);return l.sock_ops.bind(l,n.addr,n.port),0}catch(_){if(typeof FS>"u"||_.name!=="ErrnoError")throw _;return-_.errno}}___syscall_bind.sig="iippiii";function ___syscall_chdir(e){try{return e=SYSCALLS.getStr(e),FS.chdir(e),0}catch(t){if(typeof FS>"u"||t.name!=="ErrnoError")throw t;return-t.errno}}___syscall_chdir.sig="ip";function ___syscall_chmod(e,t){try{return e=SYSCALLS.getStr(e),FS.chmod(e,t),0}catch(r){if(typeof FS>"u"||r.name!=="ErrnoError")throw r;return-r.errno}}___syscall_chmod.sig="ipi";function ___syscall_connect(e,t,r,a,o,s){try{var l=getSocketFromFD(e),n=getSocketAddress(t,r);return l.sock_ops.connect(l,n.addr,n.port),0}catch(_){if(typeof FS>"u"||_.name!=="ErrnoError")throw _;return-_.errno}}___syscall_connect.sig="iippiii";function ___syscall_dup(e){try{var t=SYSCALLS.getStreamFromFD(e);return FS.dupStream(t).fd}catch(r){if(typeof FS>"u"||r.name!=="ErrnoError")throw r;return-r.errno}}___syscall_dup.sig="ii";function ___syscall_dup3(e,t,r){try{var a=SYSCALLS.getStreamFromFD(e);if(a.fd===t)return-28;if(t<0||t>=FS.MAX_OPEN_FDS)return-8;var o=FS.getStream(t);return o&&FS.close(o),FS.dupStream(a,t).fd}catch(s){if(typeof FS>"u"||s.name!=="ErrnoError")throw s;return-s.errno}}___syscall_dup3.sig="iiii";function ___syscall_faccessat(e,t,r,a){try{if(t=SYSCALLS.getStr(t),t=SYSCALLS.calculateAt(e,t),r&-8)return-28;var o=FS.lookupPath(t,{follow:!0}),s=o.node;if(!s)return-44;var l="";return r&4&&(l+="r"),r&2&&(l+="w"),r&1&&(l+="x"),l&&FS.nodePermissions(s,l)?-2:0}catch(n){if(typeof FS>"u"||n.name!=="ErrnoError")throw n;return-n.errno}}___syscall_faccessat.sig="iipii";var ___syscall_fadvise64=(e,t,r,a)=>0;___syscall_fadvise64.sig="iijji";var INT53_MAX=9007199254740992,INT53_MIN=-9007199254740992,bigintToI53Checked=e=>eINT53_MAX?NaN:Number(e);function ___syscall_fallocate(e,t,r,a){r=bigintToI53Checked(r),a=bigintToI53Checked(a);try{if(isNaN(r))return 61;var o=SYSCALLS.getStreamFromFD(e);return FS.allocate(o,r,a),0}catch(s){if(typeof FS>"u"||s.name!=="ErrnoError")throw s;return-s.errno}}___syscall_fallocate.sig="iiijj";var syscallGetVarargI=()=>{var e=HEAP32[+SYSCALLS.varargs>>2];return SYSCALLS.varargs+=4,e},syscallGetVarargP=syscallGetVarargI;function ___syscall_fcntl64(e,t,r){SYSCALLS.varargs=r;try{var a=SYSCALLS.getStreamFromFD(e);switch(t){case 0:{var o=syscallGetVarargI();if(o<0)return-28;for(;FS.streams[o];)o++;var s;return s=FS.dupStream(a,o),s.fd}case 1:case 2:return 0;case 3:return a.flags;case 4:{var o=syscallGetVarargI();return a.flags|=o,0}case 12:{var o=syscallGetVarargP(),l=0;return HEAP16[o+l>>1]=2,0}case 13:case 14:return 0}return-28}catch(n){if(typeof FS>"u"||n.name!=="ErrnoError")throw n;return-n.errno}}___syscall_fcntl64.sig="iiip";function ___syscall_fdatasync(e){try{var t=SYSCALLS.getStreamFromFD(e);return 0}catch(r){if(typeof FS>"u"||r.name!=="ErrnoError")throw r;return-r.errno}}___syscall_fdatasync.sig="ii";function ___syscall_fstat64(e,t){try{var r=SYSCALLS.getStreamFromFD(e);return SYSCALLS.doStat(FS.stat,r.path,t)}catch(a){if(typeof FS>"u"||a.name!=="ErrnoError")throw a;return-a.errno}}___syscall_fstat64.sig="iip";function ___syscall_ftruncate64(e,t){t=bigintToI53Checked(t);try{return isNaN(t)?61:(FS.ftruncate(e,t),0)}catch(r){if(typeof FS>"u"||r.name!=="ErrnoError")throw r;return-r.errno}}___syscall_ftruncate64.sig="iij";var stringToUTF8=(e,t,r)=>stringToUTF8Array(e,HEAPU8,t,r);function ___syscall_getcwd(e,t){try{if(t===0)return-28;var r=FS.cwd(),a=lengthBytesUTF8(r)+1;return t"u"||o.name!=="ErrnoError")throw o;return-o.errno}}___syscall_getcwd.sig="ipp";function ___syscall_getdents64(e,t,r){try{var a=SYSCALLS.getStreamFromFD(e);a.getdents||(a.getdents=FS.readdir(a.path));for(var o=280,s=0,l=FS.llseek(a,0,1),n=Math.floor(l/o),_=Math.min(a.getdents.length,n+Math.floor(r/o)),m=n;m<_;m++){var p,d,g=a.getdents[m];if(g===".")p=a.node.id,d=4;else if(g===".."){var c=FS.lookupPath(a.path,{parent:!0});p=c.node.id,d=4}else{var f;try{f=FS.lookupNode(a.node,g)}catch(u){if(u?.errno===28)continue;throw u}p=f.id,d=FS.isChrdev(f.mode)?2:FS.isDir(f.mode)?4:FS.isLink(f.mode)?10:8}HEAP64[t+s>>3]=BigInt(p),HEAP64[t+s+8>>3]=BigInt((m+1)*o),HEAP16[t+s+16>>1]=280,HEAP8[t+s+18]=d,stringToUTF8(g,t+s+19,256),s+=o}return FS.llseek(a,m*o,0),s}catch(u){if(typeof FS>"u"||u.name!=="ErrnoError")throw u;return-u.errno}}___syscall_getdents64.sig="iipp";var writeSockaddr=(e,t,r,a,o)=>{switch(t){case 2:r=inetPton4(r),zeroMemory(e,16),o&&(HEAP32[o>>2]=16),HEAP16[e>>1]=t,HEAP32[e+4>>2]=r,HEAP16[e+2>>1]=_htons(a);break;case 10:r=inetPton6(r),zeroMemory(e,28),o&&(HEAP32[o>>2]=28),HEAP32[e>>2]=t,HEAP32[e+8>>2]=r[0],HEAP32[e+12>>2]=r[1],HEAP32[e+16>>2]=r[2],HEAP32[e+20>>2]=r[3],HEAP16[e+2>>1]=_htons(a);break;default:return 5}return 0};function ___syscall_getsockname(e,t,r,a,o,s){try{var l=getSocketFromFD(e),n=writeSockaddr(t,l.family,DNS.lookup_name(l.saddr||"0.0.0.0"),l.sport,r);return 0}catch(_){if(typeof FS>"u"||_.name!=="ErrnoError")throw _;return-_.errno}}___syscall_getsockname.sig="iippiii";function ___syscall_getsockopt(e,t,r,a,o,s){try{var l=getSocketFromFD(e);return t===1&&r===4?(HEAP32[a>>2]=l.error,HEAP32[o>>2]=4,l.error=null,0):-50}catch(n){if(typeof FS>"u"||n.name!=="ErrnoError")throw n;return-n.errno}}___syscall_getsockopt.sig="iiiippi";function ___syscall_ioctl(e,t,r){SYSCALLS.varargs=r;try{var a=SYSCALLS.getStreamFromFD(e);switch(t){case 21509:return a.tty?0:-59;case 21505:{if(!a.tty)return-59;if(a.tty.ops.ioctl_tcgets){var o=a.tty.ops.ioctl_tcgets(a),s=syscallGetVarargP();HEAP32[s>>2]=o.c_iflag||0,HEAP32[s+4>>2]=o.c_oflag||0,HEAP32[s+8>>2]=o.c_cflag||0,HEAP32[s+12>>2]=o.c_lflag||0;for(var l=0;l<32;l++)HEAP8[s+l+17]=o.c_cc[l]||0;return 0}return 0}case 21510:case 21511:case 21512:return a.tty?0:-59;case 21506:case 21507:case 21508:{if(!a.tty)return-59;if(a.tty.ops.ioctl_tcsets){for(var s=syscallGetVarargP(),n=HEAP32[s>>2],_=HEAP32[s+4>>2],m=HEAP32[s+8>>2],p=HEAP32[s+12>>2],d=[],l=0;l<32;l++)d.push(HEAP8[s+l+17]);return a.tty.ops.ioctl_tcsets(a.tty,t,{c_iflag:n,c_oflag:_,c_cflag:m,c_lflag:p,c_cc:d})}return 0}case 21519:{if(!a.tty)return-59;var s=syscallGetVarargP();return HEAP32[s>>2]=0,0}case 21520:return a.tty?-28:-59;case 21531:{var s=syscallGetVarargP();return FS.ioctl(a,t,s)}case 21523:{if(!a.tty)return-59;if(a.tty.ops.ioctl_tiocgwinsz){var g=a.tty.ops.ioctl_tiocgwinsz(a.tty),s=syscallGetVarargP();HEAP16[s>>1]=g[0],HEAP16[s+2>>1]=g[1]}return 0}case 21524:return a.tty?0:-59;case 21515:return a.tty?0:-59;default:return-28}}catch(c){if(typeof FS>"u"||c.name!=="ErrnoError")throw c;return-c.errno}}___syscall_ioctl.sig="iiip";function ___syscall_lstat64(e,t){try{return e=SYSCALLS.getStr(e),SYSCALLS.doStat(FS.lstat,e,t)}catch(r){if(typeof FS>"u"||r.name!=="ErrnoError")throw r;return-r.errno}}___syscall_lstat64.sig="ipp";function ___syscall_mkdirat(e,t,r){try{return t=SYSCALLS.getStr(t),t=SYSCALLS.calculateAt(e,t),FS.mkdir(t,r,0),0}catch(a){if(typeof FS>"u"||a.name!=="ErrnoError")throw a;return-a.errno}}___syscall_mkdirat.sig="iipi";function ___syscall_newfstatat(e,t,r,a){try{t=SYSCALLS.getStr(t);var o=a&256,s=a&4096;return a=a&-6401,t=SYSCALLS.calculateAt(e,t,s),SYSCALLS.doStat(o?FS.lstat:FS.stat,t,r)}catch(l){if(typeof FS>"u"||l.name!=="ErrnoError")throw l;return-l.errno}}___syscall_newfstatat.sig="iippi";function ___syscall_openat(e,t,r,a){SYSCALLS.varargs=a;try{t=SYSCALLS.getStr(t),t=SYSCALLS.calculateAt(e,t);var o=a?syscallGetVarargI():0;return FS.open(t,r,o).fd}catch(s){if(typeof FS>"u"||s.name!=="ErrnoError")throw s;return-s.errno}}___syscall_openat.sig="iipip";var PIPEFS={BUCKET_BUFFER_SIZE:8192,mount(e){return FS.createNode(null,"/",16895,0)},createPipe(){var e={buckets:[],refcnt:2};e.buckets.push({buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:0,roffset:0});var t=PIPEFS.nextname(),r=PIPEFS.nextname(),a=FS.createNode(PIPEFS.root,t,4096,0),o=FS.createNode(PIPEFS.root,r,4096,0);a.pipe=e,o.pipe=e;var s=FS.createStream({path:t,node:a,flags:0,seekable:!1,stream_ops:PIPEFS.stream_ops});a.stream=s;var l=FS.createStream({path:r,node:o,flags:1,seekable:!1,stream_ops:PIPEFS.stream_ops});return o.stream=l,{readable_fd:s.fd,writable_fd:l.fd}},stream_ops:{poll(e){var t=e.node.pipe;if((e.flags&2097155)===1)return 260;if(t.buckets.length>0)for(var r=0;r0)return 65}return 0},ioctl(e,t,r){return 28},fsync(e){return 28},read(e,t,r,a,o){for(var s=e.node.pipe,l=0,n=0;n=n)return _.buffer.set(l,_.offset),_.offset+=n,n;m>0&&(_.buffer.set(l.subarray(0,m),_.offset),_.offset+=m,l=l.subarray(m,l.byteLength));for(var p=l.byteLength/PIPEFS.BUCKET_BUFFER_SIZE|0,d=l.byteLength%PIPEFS.BUCKET_BUFFER_SIZE,g=0;g0){var c={buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:l.byteLength,roffset:0};s.buckets.push(c),c.buffer.set(l)}return n},close(e){var t=e.node.pipe;t.refcnt--,t.refcnt===0&&(t.buckets=null)}},nextname(){return PIPEFS.nextname.current||(PIPEFS.nextname.current=0),"pipe["+PIPEFS.nextname.current+++"]"}};function ___syscall_pipe(e){try{if(e==0)throw new FS.ErrnoError(21);var t=PIPEFS.createPipe();return HEAP32[e>>2]=t.readable_fd,HEAP32[e+4>>2]=t.writable_fd,0}catch(r){if(typeof FS>"u"||r.name!=="ErrnoError")throw r;return-r.errno}}___syscall_pipe.sig="ip";function ___syscall_poll(e,t,r){try{for(var a=0,o=0;o>2],n=HEAP16[s+4>>1],_=32,m=FS.getStream(l);m&&(_=SYSCALLS.DEFAULT_POLLMASK,m.stream_ops.poll&&(_=m.stream_ops.poll(m,-1))),_&=n|8|16,_&&a++,HEAP16[s+6>>1]=_}return a}catch(p){if(typeof FS>"u"||p.name!=="ErrnoError")throw p;return-p.errno}}___syscall_poll.sig="ipii";function ___syscall_readlinkat(e,t,r,a){try{if(t=SYSCALLS.getStr(t),t=SYSCALLS.calculateAt(e,t),a<=0)return-28;var o=FS.readlink(t),s=Math.min(a,lengthBytesUTF8(o)),l=HEAP8[r+s];return stringToUTF8(o,r,a+1),HEAP8[r+s]=l,s}catch(n){if(typeof FS>"u"||n.name!=="ErrnoError")throw n;return-n.errno}}___syscall_readlinkat.sig="iippp";function ___syscall_recvfrom(e,t,r,a,o,s){try{var l=getSocketFromFD(e),n=l.sock_ops.recvmsg(l,r);if(!n)return 0;if(o)var _=writeSockaddr(o,l.family,DNS.lookup_name(n.addr),n.port,s);return HEAPU8.set(n.buffer,t),n.buffer.byteLength}catch(m){if(typeof FS>"u"||m.name!=="ErrnoError")throw m;return-m.errno}}___syscall_recvfrom.sig="iippipp";function ___syscall_renameat(e,t,r,a){try{return t=SYSCALLS.getStr(t),a=SYSCALLS.getStr(a),t=SYSCALLS.calculateAt(e,t),a=SYSCALLS.calculateAt(r,a),FS.rename(t,a),0}catch(o){if(typeof FS>"u"||o.name!=="ErrnoError")throw o;return-o.errno}}___syscall_renameat.sig="iipip";function ___syscall_rmdir(e){try{return e=SYSCALLS.getStr(e),FS.rmdir(e),0}catch(t){if(typeof FS>"u"||t.name!=="ErrnoError")throw t;return-t.errno}}___syscall_rmdir.sig="ip";function ___syscall_sendto(e,t,r,a,o,s){try{var l=getSocketFromFD(e);if(!o)return FS.write(l.stream,HEAP8,t,r);var n=getSocketAddress(o,s);return l.sock_ops.sendmsg(l,HEAP8,t,r,n.addr,n.port)}catch(_){if(typeof FS>"u"||_.name!=="ErrnoError")throw _;return-_.errno}}___syscall_sendto.sig="iippipp";function ___syscall_socket(e,t,r){try{var a=SOCKFS.createSocket(e,t,r);return a.stream.fd}catch(o){if(typeof FS>"u"||o.name!=="ErrnoError")throw o;return-o.errno}}___syscall_socket.sig="iiiiiii";function ___syscall_stat64(e,t){try{return e=SYSCALLS.getStr(e),SYSCALLS.doStat(FS.stat,e,t)}catch(r){if(typeof FS>"u"||r.name!=="ErrnoError")throw r;return-r.errno}}___syscall_stat64.sig="ipp";function ___syscall_symlinkat(e,t,r){try{return e=SYSCALLS.getStr(e),r=SYSCALLS.getStr(r),r=SYSCALLS.calculateAt(t,r),FS.symlink(e,r),0}catch(a){if(typeof FS>"u"||a.name!=="ErrnoError")throw a;return-a.errno}}___syscall_symlinkat.sig="ipip";function ___syscall_truncate64(e,t){t=bigintToI53Checked(t);try{return isNaN(t)?61:(e=SYSCALLS.getStr(e),FS.truncate(e,t),0)}catch(r){if(typeof FS>"u"||r.name!=="ErrnoError")throw r;return-r.errno}}___syscall_truncate64.sig="ipj";function ___syscall_unlinkat(e,t,r){try{return t=SYSCALLS.getStr(t),t=SYSCALLS.calculateAt(e,t),r===0?FS.unlink(t):r===512?FS.rmdir(t):abort("Invalid flags passed to unlinkat"),0}catch(a){if(typeof FS>"u"||a.name!=="ErrnoError")throw a;return-a.errno}}___syscall_unlinkat.sig="iipi";var ___table_base=new WebAssembly.Global({value:"i32",mutable:!1},1),__abort_js=()=>abort("");__abort_js.sig="v";var ENV={},stackAlloc=e=>__emscripten_stack_alloc(e),stringToUTF8OnStack=e=>{var t=lengthBytesUTF8(e)+1,r=stackAlloc(t);return stringToUTF8(e,r,t),r},dlSetError=e=>{var t=stackSave(),r=stringToUTF8OnStack(e);___dl_seterr(r,0),stackRestore(t)},dlopenInternal=(e,t)=>{var r=UTF8ToString(e+36),a=HEAP32[e+4>>2];r=PATH.normalize(r);var o=!!(a&256),s=o?null:{},l={global:o,nodelete:!!(a&4096),loadAsync:t.loadAsync};if(t.loadAsync)return loadDynamicLibrary(r,l,s,e);try{return loadDynamicLibrary(r,l,s,e)}catch(n){return dlSetError(`Could not load dynamic lib: ${r} -${n}`),0}},__dlopen_js=e=>dlopenInternal(e,{loadAsync:!1});__dlopen_js.sig="pp";var __dlsym_js=(e,t,r)=>{t=UTF8ToString(t);var a,o,s=LDSO.loadedLibsByHandle[e];if(!s.exports.hasOwnProperty(t)||s.exports[t].stub)return dlSetError(`Tried to lookup unknown symbol "${t}" in dynamic lib: ${s.name}`),0;if(o=Object.keys(s.exports).indexOf(t),a=s.exports[t],typeof a=="function"){var l=getFunctionAddress(a);l?a=l:(a=addFunction(a,a.sig),HEAPU32[r>>2]=o)}return a};__dlsym_js.sig="pppp";var __emscripten_memcpy_js=(e,t,r)=>HEAPU8.copyWithin(e,t,t+r);__emscripten_memcpy_js.sig="vppp";var runtimeKeepaliveCounter=0,__emscripten_runtime_keepalive_clear=()=>{noExitRuntime=!1,runtimeKeepaliveCounter=0};__emscripten_runtime_keepalive_clear.sig="v";var __emscripten_system=e=>{if(ENVIRONMENT_IS_NODE){if(!e)return 1;var t=UTF8ToString(e);if(!t.length)return 0;var r=require("child_process"),a=r.spawnSync(t,[],{shell:!0,stdio:"inherit"}),o=(l,n)=>l<<8|n;if(a.status===null){var s=l=>{switch(l){case"SIGHUP":return 1;case"SIGQUIT":return 3;case"SIGFPE":return 8;case"SIGKILL":return 9;case"SIGALRM":return 14;case"SIGTERM":return 15;default:return 2}};return o(0,s(a.signal))}return o(a.status,0)}return e?-52:0};__emscripten_system.sig="ip";var __emscripten_throw_longjmp=()=>{throw 1/0};__emscripten_throw_longjmp.sig="v";function __gmtime_js(e,t){e=bigintToI53Checked(e);var r=new Date(e*1e3);HEAP32[t>>2]=r.getUTCSeconds(),HEAP32[t+4>>2]=r.getUTCMinutes(),HEAP32[t+8>>2]=r.getUTCHours(),HEAP32[t+12>>2]=r.getUTCDate(),HEAP32[t+16>>2]=r.getUTCMonth(),HEAP32[t+20>>2]=r.getUTCFullYear()-1900,HEAP32[t+24>>2]=r.getUTCDay();var a=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),o=(r.getTime()-a)/(1e3*60*60*24)|0;HEAP32[t+28>>2]=o}__gmtime_js.sig="vjp";var isLeapYear=e=>e%4===0&&(e%100!==0||e%400===0),MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335],MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334],ydayFromDate=e=>{var t=isLeapYear(e.getFullYear()),r=t?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE,a=r[e.getMonth()]+e.getDate()-1;return a};function __localtime_js(e,t){e=bigintToI53Checked(e);var r=new Date(e*1e3);HEAP32[t>>2]=r.getSeconds(),HEAP32[t+4>>2]=r.getMinutes(),HEAP32[t+8>>2]=r.getHours(),HEAP32[t+12>>2]=r.getDate(),HEAP32[t+16>>2]=r.getMonth(),HEAP32[t+20>>2]=r.getFullYear()-1900,HEAP32[t+24>>2]=r.getDay();var a=ydayFromDate(r)|0;HEAP32[t+28>>2]=a,HEAP32[t+36>>2]=-(r.getTimezoneOffset()*60);var o=new Date(r.getFullYear(),0,1),s=new Date(r.getFullYear(),6,1).getTimezoneOffset(),l=o.getTimezoneOffset(),n=(s!=l&&r.getTimezoneOffset()==Math.min(l,s))|0;HEAP32[t+32>>2]=n}__localtime_js.sig="vjp";function __mmap_js(e,t,r,a,o,s,l){o=bigintToI53Checked(o);try{if(isNaN(o))return 61;var n=SYSCALLS.getStreamFromFD(a),_=FS.mmap(n,e,o,t,r),m=_.ptr;return HEAP32[s>>2]=_.allocated,HEAPU32[l>>2]=m,0}catch(p){if(typeof FS>"u"||p.name!=="ErrnoError")throw p;return-p.errno}}__mmap_js.sig="ipiiijpp";function __munmap_js(e,t,r,a,o,s){s=bigintToI53Checked(s);try{var l=SYSCALLS.getStreamFromFD(o);r&2&&SYSCALLS.doMsync(e,l,t,a,s)}catch(n){if(typeof FS>"u"||n.name!=="ErrnoError")throw n;return-n.errno}}__munmap_js.sig="ippiiij";var timers={},handleException=e=>{if(e instanceof ExitStatus||e=="unwind")return EXITSTATUS;quit_(1,e)},keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0,_proc_exit=e=>{EXITSTATUS=e,keepRuntimeAlive()||(Module.onExit?.(e),ABORT=!0),quit_(e,new ExitStatus(e))};_proc_exit.sig="vi";var exitJS=(e,t)=>{EXITSTATUS=e,_proc_exit(e)},_exit=exitJS;_exit.sig="vi";var maybeExit=()=>{if(!keepRuntimeAlive())try{_exit(EXITSTATUS)}catch(e){handleException(e)}},callUserCallback=e=>{if(!ABORT)try{e(),maybeExit()}catch(t){handleException(t)}},_emscripten_get_now=()=>performance.now();_emscripten_get_now.sig="d";var __setitimer_js=(e,t)=>{if(timers[e]&&(clearTimeout(timers[e].id),delete timers[e]),!t)return 0;var r=setTimeout(()=>{delete timers[e],callUserCallback(()=>__emscripten_timeout(e,_emscripten_get_now()))},t);return timers[e]={id:r,timeout_ms:t},0};__setitimer_js.sig="iid";var __tzset_js=(e,t,r,a)=>{var o=new Date().getFullYear(),s=new Date(o,0,1),l=new Date(o,6,1),n=s.getTimezoneOffset(),_=l.getTimezoneOffset(),m=Math.max(n,_);HEAPU32[e>>2]=m*60,HEAP32[t>>2]=+(n!=_);var p=c=>{var f=c>=0?"-":"+",u=Math.abs(c),w=String(Math.floor(u/60)).padStart(2,"0"),h=String(u%60).padStart(2,"0");return`UTC${f}${w}${h}`},d=p(n),g=p(_);_Date.now();_emscripten_date_now.sig="d";var nowIsMonotonic=1,checkWasiClock=e=>e>=0&&e<=3;function _clock_time_get(e,t,r){if(t=bigintToI53Checked(t),!checkWasiClock(e))return 28;var a;if(e===0)a=_emscripten_date_now();else if(nowIsMonotonic)a=_emscripten_get_now();else return 52;var o=Math.round(a*1e3*1e3);return HEAP64[r>>3]=BigInt(o),0}_clock_time_get.sig="iijp";var readEmAsmArgsArray=[],readEmAsmArgs=(e,t)=>{readEmAsmArgsArray.length=0;for(var r;r=HEAPU8[e++];){var a=r!=105;a&=r!=112,t+=a&&t%8?4:0,readEmAsmArgsArray.push(r==112?HEAPU32[t>>2]:r==106?HEAP64[t>>3]:r==105?HEAP32[t>>2]:HEAPF64[t>>3]),t+=a?8:4}return readEmAsmArgsArray},runEmAsmFunction=(e,t,r)=>{var a=readEmAsmArgs(t,r);return ASM_CONSTS[e](...a)},_emscripten_asm_const_int=(e,t,r)=>runEmAsmFunction(e,t,r);_emscripten_asm_const_int.sig="ippp";var _emscripten_force_exit=e=>{__emscripten_runtime_keepalive_clear(),_exit(e)};_emscripten_force_exit.sig="vi";var getHeapMax=()=>2147483648,growMemory=e=>{var t=wasmMemory.buffer,r=(e-t.byteLength+65535)/65536|0;try{return wasmMemory.grow(r),updateMemoryViews(),1}catch{}},_emscripten_resize_heap=e=>{var t=HEAPU8.length;e>>>=0;var r=getHeapMax();if(e>r)return!1;for(var a=1;a<=4;a*=2){var o=t*(1+.2/a);o=Math.min(o,e+100663296);var s=Math.min(r,alignMemory(Math.max(e,o),65536)),l=growMemory(s);if(l)return!0}return!1};_emscripten_resize_heap.sig="ip";var _emscripten_set_main_loop_timing=(e,t)=>{if(MainLoop.timingMode=e,MainLoop.timingValue=t,!MainLoop.func)return 1;if(MainLoop.running||(MainLoop.running=!0),e==0)MainLoop.scheduler=function(){var l=Math.max(0,MainLoop.tickStartTime+t-_emscripten_get_now())|0;setTimeout(MainLoop.runner,l)},MainLoop.method="timeout";else if(e==1)MainLoop.scheduler=function(){MainLoop.requestAnimationFrame(MainLoop.runner)},MainLoop.method="rAF";else if(e==2){if(typeof MainLoop.setImmediate>"u")if(typeof setImmediate>"u"){var r=[],a="setimmediate",o=s=>{(s.data===a||s.data.target===a)&&(s.stopPropagation(),r.shift()())};addEventListener("message",o,!0),MainLoop.setImmediate=s=>{r.push(s),ENVIRONMENT_IS_WORKER?(Module.setImmediates??(Module.setImmediates=[]),Module.setImmediates.push(s),postMessage({target:a})):postMessage(a,"*")}}else MainLoop.setImmediate=setImmediate;MainLoop.scheduler=function(){MainLoop.setImmediate(MainLoop.runner)},MainLoop.method="immediate"}return 0};_emscripten_set_main_loop_timing.sig="iii";var MainLoop={running:!1,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],preMainLoop:[],postMainLoop:[],pause(){MainLoop.scheduler=null,MainLoop.currentlyRunningMainloop++},resume(){MainLoop.currentlyRunningMainloop++;var e=MainLoop.timingMode,t=MainLoop.timingValue,r=MainLoop.func;MainLoop.func=null,setMainLoop(r,0,!1,MainLoop.arg,!0),_emscripten_set_main_loop_timing(e,t),MainLoop.scheduler()},updateStatus(){if(Module.setStatus){var e=Module.statusMessage||"Please wait...",t=MainLoop.remainingBlockers??0,r=MainLoop.expectedBlockers??0;t?t=MainLoop.nextRAF;)MainLoop.nextRAF+=1e3/60;var r=Math.max(MainLoop.nextRAF-t,0);setTimeout(e,r)},requestAnimationFrame(e){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(e);return}var t=MainLoop.fakeRequestAnimationFrame;t(e)}},setMainLoop=(e,t,r,a,o)=>{MainLoop.func=e,MainLoop.arg=a;var s=MainLoop.currentlyRunningMainloop;function l(){return s0){var _=Date.now(),m=MainLoop.queue.shift();if(m.func(m.arg),MainLoop.remainingBlockers){var p=MainLoop.remainingBlockers,d=p%1==0?p-1:Math.floor(p);m.counted?MainLoop.remainingBlockers=d:(d=d+.5,MainLoop.remainingBlockers=(8*p+d)/9)}if(MainLoop.updateStatus(),!l())return;setTimeout(MainLoop.runner,0);return}if(l()){if(MainLoop.currentFrameNumber=MainLoop.currentFrameNumber+1|0,MainLoop.timingMode==1&&MainLoop.timingValue>1&&MainLoop.currentFrameNumber%MainLoop.timingValue!=0){MainLoop.scheduler();return}else MainLoop.timingMode==0&&(MainLoop.tickStartTime=_emscripten_get_now());MainLoop.runIter(e),l()&&MainLoop.scheduler()}}},o||(t&&t>0?_emscripten_set_main_loop_timing(0,1e3/t):_emscripten_set_main_loop_timing(1,1),MainLoop.scheduler()),r)throw"unwind"},_emscripten_set_main_loop=(e,t,r)=>{var a=getWasmTableEntry(e);setMainLoop(a,t,r)};_emscripten_set_main_loop.sig="vpii";var getExecutableName=()=>thisProgram||"./this.program",getEnvStrings=()=>{if(!getEnvStrings.strings){var e=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",t={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:e,_:getExecutableName()};for(var r in ENV)ENV[r]===void 0?delete t[r]:t[r]=ENV[r];var a=[];for(var r in t)a.push(`${r}=${t[r]}`);getEnvStrings.strings=a}return getEnvStrings.strings},stringToAscii=(e,t)=>{for(var r=0;r{var r=0;return getEnvStrings().forEach((a,o)=>{var s=t+r;HEAPU32[e+o*4>>2]=s,stringToAscii(a,s),r+=a.length+1}),0};_environ_get.sig="ipp";var _environ_sizes_get=(e,t)=>{var r=getEnvStrings();HEAPU32[e>>2]=r.length;var a=0;return r.forEach(o=>a+=o.length+1),HEAPU32[t>>2]=a,0};_environ_sizes_get.sig="ipp";function _fd_close(e){try{var t=SYSCALLS.getStreamFromFD(e);return FS.close(t),0}catch(r){if(typeof FS>"u"||r.name!=="ErrnoError")throw r;return r.errno}}_fd_close.sig="ii";function _fd_fdstat_get(e,t){try{var r=0,a=0,o=0,s=SYSCALLS.getStreamFromFD(e),l=s.tty?2:FS.isDir(s.mode)?3:FS.isLink(s.mode)?7:4;return HEAP8[t]=l,HEAP16[t+2>>1]=o,HEAP64[t+8>>3]=BigInt(r),HEAP64[t+16>>3]=BigInt(a),0}catch(n){if(typeof FS>"u"||n.name!=="ErrnoError")throw n;return n.errno}}_fd_fdstat_get.sig="iip";var doReadv=(e,t,r,a)=>{for(var o=0,s=0;s>2],n=HEAPU32[t+4>>2];t+=8;var _=FS.read(e,HEAP8,l,n,a);if(_<0)return-1;if(o+=_,_>2]=l,0}catch(n){if(typeof FS>"u"||n.name!=="ErrnoError")throw n;return n.errno}}_fd_pread.sig="iippjp";var doWritev=(e,t,r,a)=>{for(var o=0,s=0;s>2],n=HEAPU32[t+4>>2];t+=8;var _=FS.write(e,HEAP8,l,n,a);if(_<0)return-1;if(o+=_,_>2]=l,0}catch(n){if(typeof FS>"u"||n.name!=="ErrnoError")throw n;return n.errno}}_fd_pwrite.sig="iippjp";function _fd_read(e,t,r,a){try{var o=SYSCALLS.getStreamFromFD(e),s=doReadv(o,t,r);return HEAPU32[a>>2]=s,0}catch(l){if(typeof FS>"u"||l.name!=="ErrnoError")throw l;return l.errno}}_fd_read.sig="iippp";function _fd_seek(e,t,r,a){t=bigintToI53Checked(t);try{if(isNaN(t))return 61;var o=SYSCALLS.getStreamFromFD(e);return FS.llseek(o,t,r),HEAP64[a>>3]=BigInt(o.position),o.getdents&&t===0&&r===0&&(o.getdents=null),0}catch(s){if(typeof FS>"u"||s.name!=="ErrnoError")throw s;return s.errno}}_fd_seek.sig="iijip";function _fd_sync(e){try{var t=SYSCALLS.getStreamFromFD(e);return t.stream_ops?.fsync?t.stream_ops.fsync(t):0}catch(r){if(typeof FS>"u"||r.name!=="ErrnoError")throw r;return r.errno}}_fd_sync.sig="ii";function _fd_write(e,t,r,a){try{var o=SYSCALLS.getStreamFromFD(e),s=doWritev(o,t,r);return HEAPU32[a>>2]=s,0}catch(l){if(typeof FS>"u"||l.name!=="ErrnoError")throw l;return l.errno}}_fd_write.sig="iippp";var _getaddrinfo=(e,t,r,a)=>{var o=0,s=0,l=0,n=0,_=0,m=0,p;function d(g,c,f,u,w,h){var S,M,y,x;return M=g===10?28:16,w=g===10?inetNtop6(w):inetNtop4(w),S=_malloc(M),x=writeSockaddr(S,g,w,h),assert(!x),y=_malloc(32),HEAP32[y+4>>2]=g,HEAP32[y+8>>2]=c,HEAP32[y+12>>2]=f,HEAPU32[y+24>>2]=u,HEAPU32[y+20>>2]=S,g===10?HEAP32[y+16>>2]=28:HEAP32[y+16>>2]=16,HEAP32[y+28>>2]=0,y}if(r&&(l=HEAP32[r>>2],n=HEAP32[r+4>>2],_=HEAP32[r+8>>2],m=HEAP32[r+12>>2]),_&&!m&&(m=_===2?17:6),!_&&m&&(_=m===17?2:1),m===0&&(m=6),_===0&&(_=1),!e&&!t)return-2;if(l&-1088||r!==0&&HEAP32[r>>2]&2&&!e)return-1;if(l&32)return-2;if(_!==0&&_!==1&&_!==2)return-7;if(n!==0&&n!==2&&n!==10)return-6;if(t&&(t=UTF8ToString(t),s=parseInt(t,10),isNaN(s)))return l&1024?-2:-8;if(!e)return n===0&&(n=2),l&1||(n===2?o=_htonl(2130706433):o=[0,0,0,_htonl(1)]),p=d(n,_,m,null,o,s),HEAPU32[a>>2]=p,0;if(e=UTF8ToString(e),o=inetPton4(e),o!==null)if(n===0||n===2)n=2;else if(n===10&&l&8)o=[0,0,_htonl(65535),o],n=10;else return-2;else if(o=inetPton6(e),o!==null)if(n===0||n===10)n=10;else return-2;return o!=null?(p=d(n,_,m,e,o,s),HEAPU32[a>>2]=p,0):l&4?-2:(e=DNS.lookup_name(e),o=inetPton4(e),n===0?n=2:n===10&&(o=[0,0,_htonl(65535),o]),p=d(n,_,m,null,o,s),HEAPU32[a>>2]=p,0)};_getaddrinfo.sig="ipppp";var _getnameinfo=(e,t,r,a,o,s,l)=>{var n=readSockaddr(e,t);if(n.errno)return-6;var _=n.port,m=n.addr,p=!1;if(r&&a){var d;if(l&1||!(d=DNS.lookup_addr(m))){if(l&8)return-2}else m=d;var g=stringToUTF8(m,r,a);g+1>=a&&(p=!0)}if(o&&s){_=""+_;var g=stringToUTF8(_,o,s);g+1>=s&&(p=!0)}return p?-12:0};_getnameinfo.sig="ipipipii";var stringToNewUTF8=e=>{var t=lengthBytesUTF8(e)+1,r=_malloc(t);return r&&stringToUTF8(e,r,t),r},getCFunc=e=>{var t=Module["_"+e];return t},writeArrayToMemory=(e,t)=>{HEAP8.set(e,t)},ccall=(e,t,r,a,o)=>{var s={string:f=>{var u=0;return f!=null&&f!==0&&(u=stringToUTF8OnStack(f)),u},array:f=>{var u=stackAlloc(f.length);return writeArrayToMemory(f,u),u}};function l(f){return t==="string"?UTF8ToString(f):t==="boolean"?!!f:f}var n=getCFunc(e),_=[],m=0;if(a)for(var p=0;p{var o=!r||r.every(l=>l==="number"||l==="boolean"),s=t!=="string";return s&&o&&!a?getCFunc(e):(...l)=>ccall(e,t,r,l,a)},FS_createPath=FS.createPath,FS_unlink=e=>FS.unlink(e),FS_createLazyFile=FS.createLazyFile,FS_createDevice=FS.createDevice,setTempRet0=e=>__emscripten_tempret_set(e),_setTempRet0=setTempRet0;Module._setTempRet0=_setTempRet0;var getTempRet0=e=>__emscripten_tempret_get(),_getTempRet0=getTempRet0;Module._getTempRet0=_getTempRet0,registerWasmPlugin(),FS.createPreloadedFile=FS_createPreloadedFile,FS.staticInit(),Module.FS_createPath=FS.createPath,Module.FS_createDataFile=FS.createDataFile,Module.FS_createPreloadedFile=FS.createPreloadedFile,Module.FS_unlink=FS.unlink,Module.FS_createLazyFile=FS.createLazyFile,Module.FS_createDevice=FS.createDevice,MEMFS.doesNotExistError=new FS.ErrnoError(44),MEMFS.doesNotExistError.stack="",ENVIRONMENT_IS_NODE&&NODEFS.staticInit(),Module.requestAnimationFrame=MainLoop.requestAnimationFrame,Module.pauseMainLoop=MainLoop.pause,Module.resumeMainLoop=MainLoop.resume,MainLoop.init();var wasmImports={__assert_fail:___assert_fail,__call_sighandler:___call_sighandler,__heap_base:___heap_base,__indirect_function_table:wasmTable,__memory_base:___memory_base,__stack_pointer:___stack_pointer,__syscall__newselect:___syscall__newselect,__syscall_bind:___syscall_bind,__syscall_chdir:___syscall_chdir,__syscall_chmod:___syscall_chmod,__syscall_connect:___syscall_connect,__syscall_dup:___syscall_dup,__syscall_dup3:___syscall_dup3,__syscall_faccessat:___syscall_faccessat,__syscall_fadvise64:___syscall_fadvise64,__syscall_fallocate:___syscall_fallocate,__syscall_fcntl64:___syscall_fcntl64,__syscall_fdatasync:___syscall_fdatasync,__syscall_fstat64:___syscall_fstat64,__syscall_ftruncate64:___syscall_ftruncate64,__syscall_getcwd:___syscall_getcwd,__syscall_getdents64:___syscall_getdents64,__syscall_getsockname:___syscall_getsockname,__syscall_getsockopt:___syscall_getsockopt,__syscall_ioctl:___syscall_ioctl,__syscall_lstat64:___syscall_lstat64,__syscall_mkdirat:___syscall_mkdirat,__syscall_newfstatat:___syscall_newfstatat,__syscall_openat:___syscall_openat,__syscall_pipe:___syscall_pipe,__syscall_poll:___syscall_poll,__syscall_readlinkat:___syscall_readlinkat,__syscall_recvfrom:___syscall_recvfrom,__syscall_renameat:___syscall_renameat,__syscall_rmdir:___syscall_rmdir,__syscall_sendto:___syscall_sendto,__syscall_socket:___syscall_socket,__syscall_stat64:___syscall_stat64,__syscall_symlinkat:___syscall_symlinkat,__syscall_truncate64:___syscall_truncate64,__syscall_unlinkat:___syscall_unlinkat,__table_base:___table_base,_abort_js:__abort_js,_dlopen_js:__dlopen_js,_dlsym_js:__dlsym_js,_emscripten_memcpy_js:__emscripten_memcpy_js,_emscripten_runtime_keepalive_clear:__emscripten_runtime_keepalive_clear,_emscripten_system:__emscripten_system,_emscripten_throw_longjmp:__emscripten_throw_longjmp,_gmtime_js:__gmtime_js,_localtime_js:__localtime_js,_mmap_js:__mmap_js,_munmap_js:__munmap_js,_setitimer_js:__setitimer_js,_tzset_js:__tzset_js,clock_time_get:_clock_time_get,emscripten_asm_const_int:_emscripten_asm_const_int,emscripten_date_now:_emscripten_date_now,emscripten_force_exit:_emscripten_force_exit,emscripten_get_now:_emscripten_get_now,emscripten_resize_heap:_emscripten_resize_heap,emscripten_set_main_loop:_emscripten_set_main_loop,environ_get:_environ_get,environ_sizes_get:_environ_sizes_get,exit:_exit,fd_close:_fd_close,fd_fdstat_get:_fd_fdstat_get,fd_pread:_fd_pread,fd_pwrite:_fd_pwrite,fd_read:_fd_read,fd_seek:_fd_seek,fd_sync:_fd_sync,fd_write:_fd_write,getTempRet0:_getTempRet0,getaddrinfo:_getaddrinfo,getnameinfo:_getnameinfo,invoke_di,invoke_i,invoke_id,invoke_ii,invoke_iii,invoke_iiii,invoke_iiiii,invoke_iiiiii,invoke_iiiiiii,invoke_iiiiiiii,invoke_iiiiiiiii,invoke_iiiiiiiiii,invoke_iiiiiiiiiiiiiiiii,invoke_iiiiiji,invoke_iiiij,invoke_iiiijii,invoke_iiij,invoke_iiji,invoke_ij,invoke_ijiiiii,invoke_ijiiiiii,invoke_ji,invoke_jii,invoke_jiiii,invoke_jiiiii,invoke_jiiiiiiii,invoke_v,invoke_vi,invoke_vid,invoke_vii,invoke_viii,invoke_viiii,invoke_viiiii,invoke_viiiiii,invoke_viiiiiii,invoke_viiiiiiii,invoke_viiiiiiiii,invoke_viiiiiiiiiiii,invoke_viiij,invoke_viij,invoke_viiji,invoke_viijii,invoke_viijiiii,invoke_vij,invoke_viji,invoke_vijiji,invoke_vj,invoke_vji,is_web_env,memory:wasmMemory,proc_exit:_proc_exit,setTempRet0:_setTempRet0},wasmExports;createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports.__wasm_call_ctors)(),_ScanKeywordLookup=Module._ScanKeywordLookup=(e,t)=>(_ScanKeywordLookup=Module._ScanKeywordLookup=wasmExports.ScanKeywordLookup)(e,t),_pg_snprintf=Module._pg_snprintf=(e,t,r,a)=>(_pg_snprintf=Module._pg_snprintf=wasmExports.pg_snprintf)(e,t,r,a),_strlen=Module._strlen=e=>(_strlen=Module._strlen=wasmExports.strlen)(e),_memset=Module._memset=(e,t,r)=>(_memset=Module._memset=wasmExports.memset)(e,t,r),_strchr=Module._strchr=(e,t)=>(_strchr=Module._strchr=wasmExports.strchr)(e,t),_PQserverVersion=Module._PQserverVersion=e=>(_PQserverVersion=Module._PQserverVersion=wasmExports.PQserverVersion)(e),_strstr=Module._strstr=(e,t)=>(_strstr=Module._strstr=wasmExports.strstr)(e,t),_pg_fprintf=Module._pg_fprintf=(e,t,r)=>(_pg_fprintf=Module._pg_fprintf=wasmExports.pg_fprintf)(e,t,r),_strspn=Module._strspn=(e,t)=>(_strspn=Module._strspn=wasmExports.strspn)(e,t),_malloc=Module._malloc=e=>(_malloc=Module._malloc=wasmExports.malloc)(e),_pg_strcasecmp=Module._pg_strcasecmp=(e,t)=>(_pg_strcasecmp=Module._pg_strcasecmp=wasmExports.pg_strcasecmp)(e,t),_strcmp=Module._strcmp=(e,t)=>(_strcmp=Module._strcmp=wasmExports.strcmp)(e,t),_free=Module._free=e=>(_free=Module._free=wasmExports.free)(e),_pg_tolower=Module._pg_tolower=e=>(_pg_tolower=Module._pg_tolower=wasmExports.pg_tolower)(e),_memchr=Module._memchr=(e,t,r)=>(_memchr=Module._memchr=wasmExports.memchr)(e,t,r),_getenv=Module._getenv=e=>(_getenv=Module._getenv=wasmExports.getenv)(e),_fileno=Module._fileno=e=>(_fileno=Module._fileno=wasmExports.fileno)(e),_isatty=Module._isatty=e=>(_isatty=Module._isatty=wasmExports.isatty)(e),_strdup=Module._strdup=e=>(_strdup=Module._strdup=wasmExports.strdup)(e),___errno_location=Module.___errno_location=()=>(___errno_location=Module.___errno_location=wasmExports.__errno_location)(),_fflush=Module._fflush=e=>(_fflush=Module._fflush=wasmExports.fflush)(e),_pg_vsnprintf=Module._pg_vsnprintf=(e,t,r,a)=>(_pg_vsnprintf=Module._pg_vsnprintf=wasmExports.pg_vsnprintf)(e,t,r,a),_pg_malloc_extended=Module._pg_malloc_extended=(e,t)=>(_pg_malloc_extended=Module._pg_malloc_extended=wasmExports.pg_malloc_extended)(e,t),_PageInit=Module._PageInit=(e,t,r)=>(_PageInit=Module._PageInit=wasmExports.PageInit)(e,t,r),_pg_checksum_page=Module._pg_checksum_page=(e,t)=>(_pg_checksum_page=Module._pg_checksum_page=wasmExports.pg_checksum_page)(e,t),_errstart=Module._errstart=(e,t)=>(_errstart=Module._errstart=wasmExports.errstart)(e,t),_errcode=Module._errcode=e=>(_errcode=Module._errcode=wasmExports.errcode)(e),_errmsg=Module._errmsg=(e,t)=>(_errmsg=Module._errmsg=wasmExports.errmsg)(e,t),_errfinish=Module._errfinish=(e,t,r)=>(_errfinish=Module._errfinish=wasmExports.errfinish)(e,t,r),_PageAddItemExtended=Module._PageAddItemExtended=(e,t,r,a,o)=>(_PageAddItemExtended=Module._PageAddItemExtended=wasmExports.PageAddItemExtended)(e,t,r,a,o),_errstart_cold=Module._errstart_cold=(e,t)=>(_errstart_cold=Module._errstart_cold=wasmExports.errstart_cold)(e,t),_puts=Module._puts=e=>(_puts=Module._puts=wasmExports.puts)(e),_errmsg_internal=Module._errmsg_internal=(e,t)=>(_errmsg_internal=Module._errmsg_internal=wasmExports.errmsg_internal)(e,t),_memmove=Module._memmove=(e,t,r)=>(_memmove=Module._memmove=wasmExports.memmove)(e,t,r),_memcpy=Module._memcpy=(e,t,r)=>(_memcpy=Module._memcpy=wasmExports.memcpy)(e,t,r),_palloc=Module._palloc=e=>(_palloc=Module._palloc=wasmExports.palloc)(e),_pfree=Module._pfree=e=>(_pfree=Module._pfree=wasmExports.pfree)(e),_PageGetFreeSpace=Module._PageGetFreeSpace=e=>(_PageGetFreeSpace=Module._PageGetFreeSpace=wasmExports.PageGetFreeSpace)(e),_PageGetExactFreeSpace=Module._PageGetExactFreeSpace=e=>(_PageGetExactFreeSpace=Module._PageGetExactFreeSpace=wasmExports.PageGetExactFreeSpace)(e),_PageGetHeapFreeSpace=Module._PageGetHeapFreeSpace=e=>(_PageGetHeapFreeSpace=Module._PageGetHeapFreeSpace=wasmExports.PageGetHeapFreeSpace)(e),_PageIndexMultiDelete=Module._PageIndexMultiDelete=(e,t,r)=>(_PageIndexMultiDelete=Module._PageIndexMultiDelete=wasmExports.PageIndexMultiDelete)(e,t,r),_PageIndexTupleOverwrite=Module._PageIndexTupleOverwrite=(e,t,r,a)=>(_PageIndexTupleOverwrite=Module._PageIndexTupleOverwrite=wasmExports.PageIndexTupleOverwrite)(e,t,r,a),_ItemPointerEquals=Module._ItemPointerEquals=(e,t)=>(_ItemPointerEquals=Module._ItemPointerEquals=wasmExports.ItemPointerEquals)(e,t),_ItemPointerCompare=Module._ItemPointerCompare=(e,t)=>(_ItemPointerCompare=Module._ItemPointerCompare=wasmExports.ItemPointerCompare)(e,t),_add_size=Module._add_size=(e,t)=>(_add_size=Module._add_size=wasmExports.add_size)(e,t),_ShmemInitStruct=Module._ShmemInitStruct=(e,t,r)=>(_ShmemInitStruct=Module._ShmemInitStruct=wasmExports.ShmemInitStruct)(e,t,r),_s_init_lock_sema=Module._s_init_lock_sema=(e,t)=>(_s_init_lock_sema=Module._s_init_lock_sema=wasmExports.s_init_lock_sema)(e,t),_LWLockAcquire=Module._LWLockAcquire=(e,t)=>(_LWLockAcquire=Module._LWLockAcquire=wasmExports.LWLockAcquire)(e,t),_LWLockRelease=Module._LWLockRelease=e=>(_LWLockRelease=Module._LWLockRelease=wasmExports.LWLockRelease)(e),_on_shmem_exit=Module._on_shmem_exit=(e,t)=>(_on_shmem_exit=Module._on_shmem_exit=wasmExports.on_shmem_exit)(e,t),_tas_sema=Module._tas_sema=e=>(_tas_sema=Module._tas_sema=wasmExports.tas_sema)(e),_s_lock=Module._s_lock=(e,t,r,a)=>(_s_lock=Module._s_lock=wasmExports.s_lock)(e,t,r,a),_s_unlock_sema=Module._s_unlock_sema=e=>(_s_unlock_sema=Module._s_unlock_sema=wasmExports.s_unlock_sema)(e),_StartTransactionCommand=Module._StartTransactionCommand=()=>(_StartTransactionCommand=Module._StartTransactionCommand=wasmExports.StartTransactionCommand)(),_CommitTransactionCommand=Module._CommitTransactionCommand=()=>(_CommitTransactionCommand=Module._CommitTransactionCommand=wasmExports.CommitTransactionCommand)(),_WaitLatch=Module._WaitLatch=(e,t,r,a)=>(_WaitLatch=Module._WaitLatch=wasmExports.WaitLatch)(e,t,r,a),_ResetLatch=Module._ResetLatch=e=>(_ResetLatch=Module._ResetLatch=wasmExports.ResetLatch)(e),_ProcessInterrupts=Module._ProcessInterrupts=()=>(_ProcessInterrupts=Module._ProcessInterrupts=wasmExports.ProcessInterrupts)(),_MemoryContextAlloc=Module._MemoryContextAlloc=(e,t)=>(_MemoryContextAlloc=Module._MemoryContextAlloc=wasmExports.MemoryContextAlloc)(e,t),_AllocateDir=Module._AllocateDir=e=>(_AllocateDir=Module._AllocateDir=wasmExports.AllocateDir)(e),_ReadDir=Module._ReadDir=(e,t)=>(_ReadDir=Module._ReadDir=wasmExports.ReadDir)(e,t),_strncmp=Module._strncmp=(e,t,r)=>(_strncmp=Module._strncmp=wasmExports.strncmp)(e,t,r),_unlink=Module._unlink=e=>(_unlink=Module._unlink=wasmExports.unlink)(e),_errcode_for_file_access=Module._errcode_for_file_access=()=>(_errcode_for_file_access=Module._errcode_for_file_access=wasmExports.errcode_for_file_access)(),_FreeDir=Module._FreeDir=e=>(_FreeDir=Module._FreeDir=wasmExports.FreeDir)(e),_pg_prng_uint32=Module._pg_prng_uint32=e=>(_pg_prng_uint32=Module._pg_prng_uint32=wasmExports.pg_prng_uint32)(e),_dsm_create=Module._dsm_create=(e,t)=>(_dsm_create=Module._dsm_create=wasmExports.dsm_create)(e,t),_dsm_attach=Module._dsm_attach=e=>(_dsm_attach=Module._dsm_attach=wasmExports.dsm_attach)(e),_dsm_detach=Module._dsm_detach=e=>(_dsm_detach=Module._dsm_detach=wasmExports.dsm_detach)(e),_dsm_segment_address=Module._dsm_segment_address=e=>(_dsm_segment_address=Module._dsm_segment_address=wasmExports.dsm_segment_address)(e),_dsm_segment_handle=Module._dsm_segment_handle=e=>(_dsm_segment_handle=Module._dsm_segment_handle=wasmExports.dsm_segment_handle)(e),_MemoryContextAllocZero=Module._MemoryContextAllocZero=(e,t)=>(_MemoryContextAllocZero=Module._MemoryContextAllocZero=wasmExports.MemoryContextAllocZero)(e,t),_read=Module._read=(e,t,r)=>(_read=Module._read=wasmExports.read)(e,t,r),_hash_create=Module._hash_create=(e,t,r,a)=>(_hash_create=Module._hash_create=wasmExports.hash_create)(e,t,r,a),_hash_destroy=Module._hash_destroy=e=>(_hash_destroy=Module._hash_destroy=wasmExports.hash_destroy)(e),_hash_seq_init=Module._hash_seq_init=(e,t)=>(_hash_seq_init=Module._hash_seq_init=wasmExports.hash_seq_init)(e,t),_hash_seq_search=Module._hash_seq_search=e=>(_hash_seq_search=Module._hash_seq_search=wasmExports.hash_seq_search)(e),_hash_search=Module._hash_search=(e,t,r,a)=>(_hash_search=Module._hash_search=wasmExports.hash_search)(e,t,r,a),_initStringInfo=Module._initStringInfo=e=>(_initStringInfo=Module._initStringInfo=wasmExports.initStringInfo)(e),_appendStringInfo=Module._appendStringInfo=(e,t,r)=>(_appendStringInfo=Module._appendStringInfo=wasmExports.appendStringInfo)(e,t,r),_GetCurrentTimestamp=Module._GetCurrentTimestamp=()=>(_GetCurrentTimestamp=Module._GetCurrentTimestamp=wasmExports.GetCurrentTimestamp)(),_pg_usleep=Module._pg_usleep=e=>(_pg_usleep=Module._pg_usleep=wasmExports.pg_usleep)(e),_errdetail=Module._errdetail=(e,t)=>(_errdetail=Module._errdetail=wasmExports.errdetail)(e,t),_TransactionIdDidCommit=Module._TransactionIdDidCommit=e=>(_TransactionIdDidCommit=Module._TransactionIdDidCommit=wasmExports.TransactionIdDidCommit)(e),_TransactionIdPrecedes=Module._TransactionIdPrecedes=(e,t)=>(_TransactionIdPrecedes=Module._TransactionIdPrecedes=wasmExports.TransactionIdPrecedes)(e,t),_XLogBeginInsert=Module._XLogBeginInsert=()=>(_XLogBeginInsert=Module._XLogBeginInsert=wasmExports.XLogBeginInsert)(),_XLogRegisterData=Module._XLogRegisterData=(e,t)=>(_XLogRegisterData=Module._XLogRegisterData=wasmExports.XLogRegisterData)(e,t),_XLogInsert=Module._XLogInsert=(e,t)=>(_XLogInsert=Module._XLogInsert=wasmExports.XLogInsert)(e,t),_ConditionVariableInit=Module._ConditionVariableInit=e=>(_ConditionVariableInit=Module._ConditionVariableInit=wasmExports.ConditionVariableInit)(e),_ConditionVariableCancelSleep=Module._ConditionVariableCancelSleep=()=>(_ConditionVariableCancelSleep=Module._ConditionVariableCancelSleep=wasmExports.ConditionVariableCancelSleep)(),_ConditionVariableSleep=Module._ConditionVariableSleep=(e,t)=>(_ConditionVariableSleep=Module._ConditionVariableSleep=wasmExports.ConditionVariableSleep)(e,t),___wasm_setjmp=Module.___wasm_setjmp=(e,t,r)=>(___wasm_setjmp=Module.___wasm_setjmp=wasmExports.__wasm_setjmp)(e,t,r),___wasm_setjmp_test=Module.___wasm_setjmp_test=(e,t)=>(___wasm_setjmp_test=Module.___wasm_setjmp_test=wasmExports.__wasm_setjmp_test)(e,t),_pg_re_throw=Module._pg_re_throw=()=>(_pg_re_throw=Module._pg_re_throw=wasmExports.pg_re_throw)(),_emscripten_longjmp=Module._emscripten_longjmp=(e,t)=>(_emscripten_longjmp=Module._emscripten_longjmp=wasmExports.emscripten_longjmp)(e,t),_procsignal_sigusr1_handler=Module._procsignal_sigusr1_handler=e=>(_procsignal_sigusr1_handler=Module._procsignal_sigusr1_handler=wasmExports.procsignal_sigusr1_handler)(e),_close=Module._close=e=>(_close=Module._close=wasmExports.close)(e),_ReleaseExternalFD=Module._ReleaseExternalFD=()=>(_ReleaseExternalFD=Module._ReleaseExternalFD=wasmExports.ReleaseExternalFD)(),_fcntl=Module._fcntl=(e,t,r)=>(_fcntl=Module._fcntl=wasmExports.fcntl)(e,t,r),_pqsignal=Module._pqsignal=(e,t)=>(_pqsignal=Module._pqsignal=wasmExports.pqsignal)(e,t),_write=Module._write=(e,t,r)=>(_write=Module._write=wasmExports.write)(e,t,r),_AddWaitEventToSet=Module._AddWaitEventToSet=(e,t,r,a,o)=>(_AddWaitEventToSet=Module._AddWaitEventToSet=wasmExports.AddWaitEventToSet)(e,t,r,a,o),_clock_gettime=Module._clock_gettime=(e,t)=>(_clock_gettime=Module._clock_gettime=wasmExports.clock_gettime)(e,t),_poll=Module._poll=(e,t,r)=>(_poll=Module._poll=wasmExports.poll)(e,t,r),_WaitLatchOrSocket=Module._WaitLatchOrSocket=(e,t,r,a,o)=>(_WaitLatchOrSocket=Module._WaitLatchOrSocket=wasmExports.WaitLatchOrSocket)(e,t,r,a,o),_GetNumRegisteredWaitEvents=Module._GetNumRegisteredWaitEvents=e=>(_GetNumRegisteredWaitEvents=Module._GetNumRegisteredWaitEvents=wasmExports.GetNumRegisteredWaitEvents)(e),_ShmemInitHash=Module._ShmemInitHash=(e,t,r,a,o)=>(_ShmemInitHash=Module._ShmemInitHash=wasmExports.ShmemInitHash)(e,t,r,a,o),_InitMaterializedSRF=Module._InitMaterializedSRF=(e,t)=>(_InitMaterializedSRF=Module._InitMaterializedSRF=wasmExports.InitMaterializedSRF)(e,t),_cstring_to_text=Module._cstring_to_text=e=>(_cstring_to_text=Module._cstring_to_text=wasmExports.cstring_to_text)(e),_Int64GetDatum=Module._Int64GetDatum=e=>(_Int64GetDatum=Module._Int64GetDatum=wasmExports.Int64GetDatum)(e),_tuplestore_putvalues=Module._tuplestore_putvalues=(e,t,r,a)=>(_tuplestore_putvalues=Module._tuplestore_putvalues=wasmExports.tuplestore_putvalues)(e,t,r,a),_shm_toc_allocate=Module._shm_toc_allocate=(e,t)=>(_shm_toc_allocate=Module._shm_toc_allocate=wasmExports.shm_toc_allocate)(e,t),_shm_toc_insert=Module._shm_toc_insert=(e,t,r)=>(_shm_toc_insert=Module._shm_toc_insert=wasmExports.shm_toc_insert)(e,t,r),_shm_toc_lookup=Module._shm_toc_lookup=(e,t,r)=>(_shm_toc_lookup=Module._shm_toc_lookup=wasmExports.shm_toc_lookup)(e,t,r),_superuser_arg=Module._superuser_arg=e=>(_superuser_arg=Module._superuser_arg=wasmExports.superuser_arg)(e),_superuser=Module._superuser=()=>(_superuser=Module._superuser=wasmExports.superuser)(),_GetUserId=Module._GetUserId=()=>(_GetUserId=Module._GetUserId=wasmExports.GetUserId)(),_has_privs_of_role=Module._has_privs_of_role=(e,t)=>(_has_privs_of_role=Module._has_privs_of_role=wasmExports.has_privs_of_role)(e,t),_errmsg_plural=Module._errmsg_plural=(e,t,r,a)=>(_errmsg_plural=Module._errmsg_plural=wasmExports.errmsg_plural)(e,t,r,a),_errhint=Module._errhint=(e,t)=>(_errhint=Module._errhint=wasmExports.errhint)(e,t),_fstat=Module._fstat=(e,t)=>(_fstat=Module._fstat=wasmExports.fstat)(e,t),_ftruncate=Module._ftruncate=(e,t)=>(_ftruncate=Module._ftruncate=wasmExports.ftruncate)(e,t),_RequestAddinShmemSpace=Module._RequestAddinShmemSpace=e=>(_RequestAddinShmemSpace=Module._RequestAddinShmemSpace=wasmExports.RequestAddinShmemSpace)(e),_hash_estimate_size=Module._hash_estimate_size=(e,t)=>(_hash_estimate_size=Module._hash_estimate_size=wasmExports.hash_estimate_size)(e,t),_pg_sprintf=Module._pg_sprintf=(e,t,r)=>(_pg_sprintf=Module._pg_sprintf=wasmExports.pg_sprintf)(e,t,r),_SetConfigOption=Module._SetConfigOption=(e,t,r,a)=>(_SetConfigOption=Module._SetConfigOption=wasmExports.SetConfigOption)(e,t,r,a),_pg_printf=Module._pg_printf=(e,t)=>(_pg_printf=Module._pg_printf=wasmExports.pg_printf)(e,t),_before_shmem_exit=Module._before_shmem_exit=(e,t)=>(_before_shmem_exit=Module._before_shmem_exit=wasmExports.before_shmem_exit)(e,t),_cancel_before_shmem_exit=Module._cancel_before_shmem_exit=(e,t)=>(_cancel_before_shmem_exit=Module._cancel_before_shmem_exit=wasmExports.cancel_before_shmem_exit)(e,t),_pg_qsort=Module._pg_qsort=(e,t,r,a)=>(_pg_qsort=Module._pg_qsort=wasmExports.pg_qsort)(e,t,r,a),_TransactionIdIsInProgress=Module._TransactionIdIsInProgress=e=>(_TransactionIdIsInProgress=Module._TransactionIdIsInProgress=wasmExports.TransactionIdIsInProgress)(e),_TransactionIdIsCurrentTransactionId=Module._TransactionIdIsCurrentTransactionId=e=>(_TransactionIdIsCurrentTransactionId=Module._TransactionIdIsCurrentTransactionId=wasmExports.TransactionIdIsCurrentTransactionId)(e),_RecoveryInProgress=Module._RecoveryInProgress=()=>(_RecoveryInProgress=Module._RecoveryInProgress=wasmExports.RecoveryInProgress)(),_GetOldestNonRemovableTransactionId=Module._GetOldestNonRemovableTransactionId=e=>(_GetOldestNonRemovableTransactionId=Module._GetOldestNonRemovableTransactionId=wasmExports.GetOldestNonRemovableTransactionId)(e),_GetCurrentCommandId=Module._GetCurrentCommandId=e=>(_GetCurrentCommandId=Module._GetCurrentCommandId=wasmExports.GetCurrentCommandId)(e),_BackendXidGetPid=Module._BackendXidGetPid=e=>(_BackendXidGetPid=Module._BackendXidGetPid=wasmExports.BackendXidGetPid)(e),_lappend_int=Module._lappend_int=(e,t)=>(_lappend_int=Module._lappend_int=wasmExports.lappend_int)(e,t),_index_close=Module._index_close=(e,t)=>(_index_close=Module._index_close=wasmExports.index_close)(e,t),_table_close=Module._table_close=(e,t)=>(_table_close=Module._table_close=wasmExports.table_close)(e,t),_CommandCounterIncrement=Module._CommandCounterIncrement=()=>(_CommandCounterIncrement=Module._CommandCounterIncrement=wasmExports.CommandCounterIncrement)(),_GetActiveSnapshot=Module._GetActiveSnapshot=()=>(_GetActiveSnapshot=Module._GetActiveSnapshot=wasmExports.GetActiveSnapshot)(),_ScanKeyInit=Module._ScanKeyInit=(e,t,r,a,o)=>(_ScanKeyInit=Module._ScanKeyInit=wasmExports.ScanKeyInit)(e,t,r,a,o),_table_open=Module._table_open=(e,t)=>(_table_open=Module._table_open=wasmExports.table_open)(e,t),_systable_beginscan=Module._systable_beginscan=(e,t,r,a,o,s)=>(_systable_beginscan=Module._systable_beginscan=wasmExports.systable_beginscan)(e,t,r,a,o,s),_systable_getnext=Module._systable_getnext=e=>(_systable_getnext=Module._systable_getnext=wasmExports.systable_getnext)(e),_systable_endscan=Module._systable_endscan=e=>(_systable_endscan=Module._systable_endscan=wasmExports.systable_endscan)(e),_index_open=Module._index_open=(e,t)=>(_index_open=Module._index_open=wasmExports.index_open)(e,t),_systable_beginscan_ordered=Module._systable_beginscan_ordered=(e,t,r,a,o)=>(_systable_beginscan_ordered=Module._systable_beginscan_ordered=wasmExports.systable_beginscan_ordered)(e,t,r,a,o),_systable_getnext_ordered=Module._systable_getnext_ordered=(e,t)=>(_systable_getnext_ordered=Module._systable_getnext_ordered=wasmExports.systable_getnext_ordered)(e,t),_systable_endscan_ordered=Module._systable_endscan_ordered=e=>(_systable_endscan_ordered=Module._systable_endscan_ordered=wasmExports.systable_endscan_ordered)(e),_heap_form_tuple=Module._heap_form_tuple=(e,t,r)=>(_heap_form_tuple=Module._heap_form_tuple=wasmExports.heap_form_tuple)(e,t,r),_heap_freetuple=Module._heap_freetuple=e=>(_heap_freetuple=Module._heap_freetuple=wasmExports.heap_freetuple)(e),_AllocSetContextCreateInternal=Module._AllocSetContextCreateInternal=(e,t,r,a,o)=>(_AllocSetContextCreateInternal=Module._AllocSetContextCreateInternal=wasmExports.AllocSetContextCreateInternal)(e,t,r,a,o),_list_free_deep=Module._list_free_deep=e=>(_list_free_deep=Module._list_free_deep=wasmExports.list_free_deep)(e),_lappend=Module._lappend=(e,t)=>(_lappend=Module._lappend=wasmExports.lappend)(e,t),_LockBuffer=Module._LockBuffer=(e,t)=>(_LockBuffer=Module._LockBuffer=wasmExports.LockBuffer)(e,t),_GetFreeIndexPage=Module._GetFreeIndexPage=e=>(_GetFreeIndexPage=Module._GetFreeIndexPage=wasmExports.GetFreeIndexPage)(e),_RecordFreeIndexPage=Module._RecordFreeIndexPage=(e,t)=>(_RecordFreeIndexPage=Module._RecordFreeIndexPage=wasmExports.RecordFreeIndexPage)(e,t),_IndexFreeSpaceMapVacuum=Module._IndexFreeSpaceMapVacuum=e=>(_IndexFreeSpaceMapVacuum=Module._IndexFreeSpaceMapVacuum=wasmExports.IndexFreeSpaceMapVacuum)(e),_UnlockReleaseBuffer=Module._UnlockReleaseBuffer=e=>(_UnlockReleaseBuffer=Module._UnlockReleaseBuffer=wasmExports.UnlockReleaseBuffer)(e),_smgropen=Module._smgropen=(e,t)=>(_smgropen=Module._smgropen=wasmExports.smgropen)(e,t),_smgrsetowner=Module._smgrsetowner=(e,t)=>(_smgrsetowner=Module._smgrsetowner=wasmExports.smgrsetowner)(e,t),_RelationGetNumberOfBlocksInFork=Module._RelationGetNumberOfBlocksInFork=(e,t)=>(_RelationGetNumberOfBlocksInFork=Module._RelationGetNumberOfBlocksInFork=wasmExports.RelationGetNumberOfBlocksInFork)(e,t),_ReleaseBuffer=Module._ReleaseBuffer=e=>(_ReleaseBuffer=Module._ReleaseBuffer=wasmExports.ReleaseBuffer)(e),_GetRecordedFreeSpace=Module._GetRecordedFreeSpace=(e,t)=>(_GetRecordedFreeSpace=Module._GetRecordedFreeSpace=wasmExports.GetRecordedFreeSpace)(e,t),_smgrexists=Module._smgrexists=(e,t)=>(_smgrexists=Module._smgrexists=wasmExports.smgrexists)(e,t),_ReadBufferExtended=Module._ReadBufferExtended=(e,t,r,a,o)=>(_ReadBufferExtended=Module._ReadBufferExtended=wasmExports.ReadBufferExtended)(e,t,r,a,o),_MarkBufferDirty=Module._MarkBufferDirty=e=>(_MarkBufferDirty=Module._MarkBufferDirty=wasmExports.MarkBufferDirty)(e),_log_newpage_buffer=Module._log_newpage_buffer=(e,t)=>(_log_newpage_buffer=Module._log_newpage_buffer=wasmExports.log_newpage_buffer)(e,t),_copy_file=Module._copy_file=(e,t)=>(_copy_file=Module._copy_file=wasmExports.copy_file)(e,t),_fd_fsync_fname=Module._fd_fsync_fname=(e,t)=>(_fd_fsync_fname=Module._fd_fsync_fname=wasmExports.fd_fsync_fname)(e,t),_OpenTransientFile=Module._OpenTransientFile=(e,t)=>(_OpenTransientFile=Module._OpenTransientFile=wasmExports.OpenTransientFile)(e,t),_CloseTransientFile=Module._CloseTransientFile=e=>(_CloseTransientFile=Module._CloseTransientFile=wasmExports.CloseTransientFile)(e),_hash_bytes=Module._hash_bytes=(e,t)=>(_hash_bytes=Module._hash_bytes=wasmExports.hash_bytes)(e,t),_pstrdup=Module._pstrdup=e=>(_pstrdup=Module._pstrdup=wasmExports.pstrdup)(e),_repalloc=Module._repalloc=(e,t)=>(_repalloc=Module._repalloc=wasmExports.repalloc)(e,t),_wasm_OpenPipeStream=Module._wasm_OpenPipeStream=(e,t)=>(_wasm_OpenPipeStream=Module._wasm_OpenPipeStream=wasmExports.wasm_OpenPipeStream)(e,t),_access=Module._access=(e,t)=>(_access=Module._access=wasmExports.access)(e,t),_fopen=Module._fopen=(e,t)=>(_fopen=Module._fopen=wasmExports.fopen)(e,t),_fiprintf=Module._fiprintf=(e,t,r)=>(_fiprintf=Module._fiprintf=wasmExports.fiprintf)(e,t,r),_fclose=Module._fclose=e=>(_fclose=Module._fclose=wasmExports.fclose)(e),_fsync_fname_ext=Module._fsync_fname_ext=(e,t,r,a)=>(_fsync_fname_ext=Module._fsync_fname_ext=wasmExports.fsync_fname_ext)(e,t,r,a),_fd_durable_rename=Module._fd_durable_rename=(e,t,r)=>(_fd_durable_rename=Module._fd_durable_rename=wasmExports.fd_durable_rename)(e,t,r),_rename=Module._rename=(e,t)=>(_rename=Module._rename=wasmExports.rename)(e,t),_strlcpy=Module._strlcpy=(e,t,r)=>(_strlcpy=Module._strlcpy=wasmExports.strlcpy)(e,t,r),_dup=Module._dup=e=>(_dup=Module._dup=wasmExports.dup)(e),_open=Module._open=(e,t,r)=>(_open=Module._open=wasmExports.open)(e,t,r),_AcquireExternalFD=Module._AcquireExternalFD=()=>(_AcquireExternalFD=Module._AcquireExternalFD=wasmExports.AcquireExternalFD)(),_realloc=Module._realloc=(e,t)=>(_realloc=Module._realloc=wasmExports.realloc)(e,t),_stat=Module._stat=(e,t)=>(_stat=Module._stat=wasmExports.stat)(e,t),_pwrite=Module._pwrite=(e,t,r,a)=>(_pwrite=Module._pwrite=wasmExports.pwrite)(e,t,r,a),_lseek=Module._lseek=(e,t,r)=>(_lseek=Module._lseek=wasmExports.lseek)(e,t,r),_AllocateFile=Module._AllocateFile=(e,t)=>(_AllocateFile=Module._AllocateFile=wasmExports.AllocateFile)(e,t),_GetCurrentSubTransactionId=Module._GetCurrentSubTransactionId=()=>(_GetCurrentSubTransactionId=Module._GetCurrentSubTransactionId=wasmExports.GetCurrentSubTransactionId)(),_FreeFile=Module._FreeFile=e=>(_FreeFile=Module._FreeFile=wasmExports.FreeFile)(e),_pclose=Module._pclose=e=>(_pclose=Module._pclose=wasmExports.pclose)(e),_ClosePipeStream=Module._ClosePipeStream=e=>(_ClosePipeStream=Module._ClosePipeStream=wasmExports.ClosePipeStream)(e),_pg_prng_uint64_range=Module._pg_prng_uint64_range=(e,t,r)=>(_pg_prng_uint64_range=Module._pg_prng_uint64_range=wasmExports.pg_prng_uint64_range)(e,t,r),_AtEOSubXact_Files=Module._AtEOSubXact_Files=(e,t,r)=>(_AtEOSubXact_Files=Module._AtEOSubXact_Files=wasmExports.AtEOSubXact_Files)(e,t,r),_pre_format_elog_string=Module._pre_format_elog_string=(e,t)=>(_pre_format_elog_string=Module._pre_format_elog_string=wasmExports.pre_format_elog_string)(e,t),_format_elog_string=Module._format_elog_string=(e,t)=>(_format_elog_string=Module._format_elog_string=wasmExports.format_elog_string)(e,t),_list_free=Module._list_free=e=>(_list_free=Module._list_free=wasmExports.list_free)(e),_guc_malloc=Module._guc_malloc=(e,t)=>(_guc_malloc=Module._guc_malloc=wasmExports.guc_malloc)(e,t),_MemoryContextDelete=Module._MemoryContextDelete=e=>(_MemoryContextDelete=Module._MemoryContextDelete=wasmExports.MemoryContextDelete)(e),_strtoul=Module._strtoul=(e,t,r)=>(_strtoul=Module._strtoul=wasmExports.strtoul)(e,t,r),_hash_get_num_entries=Module._hash_get_num_entries=e=>(_hash_get_num_entries=Module._hash_get_num_entries=wasmExports.hash_get_num_entries)(e),_LWLockInitialize=Module._LWLockInitialize=(e,t)=>(_LWLockInitialize=Module._LWLockInitialize=wasmExports.LWLockInitialize)(e,t),_PrefetchBuffer=Module._PrefetchBuffer=(e,t,r,a)=>(_PrefetchBuffer=Module._PrefetchBuffer=wasmExports.PrefetchBuffer)(e,t,r,a),_LockBufHdr=Module._LockBufHdr=e=>(_LockBufHdr=Module._LockBufHdr=wasmExports.LockBufHdr)(e),_ReadBuffer=Module._ReadBuffer=(e,t)=>(_ReadBuffer=Module._ReadBuffer=wasmExports.ReadBuffer)(e,t),_pgstat_assoc_relation=Module._pgstat_assoc_relation=e=>(_pgstat_assoc_relation=Module._pgstat_assoc_relation=wasmExports.pgstat_assoc_relation)(e),_ExtendBufferedRel=Module._ExtendBufferedRel=(e,t,r,a)=>(_ExtendBufferedRel=Module._ExtendBufferedRel=wasmExports.ExtendBufferedRel)(e,t,r,a),_LockBufferForCleanup=Module._LockBufferForCleanup=e=>(_LockBufferForCleanup=Module._LockBufferForCleanup=wasmExports.LockBufferForCleanup)(e),_smgrread=Module._smgrread=(e,t,r,a)=>(_smgrread=Module._smgrread=wasmExports.smgrread)(e,t,r,a),_LockRelationForExtension=Module._LockRelationForExtension=(e,t)=>(_LockRelationForExtension=Module._LockRelationForExtension=wasmExports.LockRelationForExtension)(e,t),_UnlockRelationForExtension=Module._UnlockRelationForExtension=(e,t)=>(_UnlockRelationForExtension=Module._UnlockRelationForExtension=wasmExports.UnlockRelationForExtension)(e,t),_BufferGetBlockNumber=Module._BufferGetBlockNumber=e=>(_BufferGetBlockNumber=Module._BufferGetBlockNumber=wasmExports.BufferGetBlockNumber)(e),_bsearch=Module._bsearch=(e,t,r,a,o)=>(_bsearch=Module._bsearch=wasmExports.bsearch)(e,t,r,a,o),_set_errcontext_domain=Module._set_errcontext_domain=e=>(_set_errcontext_domain=Module._set_errcontext_domain=wasmExports.set_errcontext_domain)(e),_errcontext_msg=Module._errcontext_msg=(e,t)=>(_errcontext_msg=Module._errcontext_msg=wasmExports.errcontext_msg)(e,t),_GetAccessStrategy=Module._GetAccessStrategy=e=>(_GetAccessStrategy=Module._GetAccessStrategy=wasmExports.GetAccessStrategy)(e),_FreeAccessStrategy=Module._FreeAccessStrategy=e=>(_FreeAccessStrategy=Module._FreeAccessStrategy=wasmExports.FreeAccessStrategy)(e),_ConditionalLockBuffer=Module._ConditionalLockBuffer=e=>(_ConditionalLockBuffer=Module._ConditionalLockBuffer=wasmExports.ConditionalLockBuffer)(e),_TestForOldSnapshot_impl=Module._TestForOldSnapshot_impl=(e,t)=>(_TestForOldSnapshot_impl=Module._TestForOldSnapshot_impl=wasmExports.TestForOldSnapshot_impl)(e,t),_calloc=Module._calloc=(e,t)=>(_calloc=Module._calloc=wasmExports.calloc)(e,t),_have_free_buffer=Module._have_free_buffer=()=>(_have_free_buffer=Module._have_free_buffer=wasmExports.have_free_buffer)(),_palloc0=Module._palloc0=e=>(_palloc0=Module._palloc0=wasmExports.palloc0)(e),_resetStringInfo=Module._resetStringInfo=e=>(_resetStringInfo=Module._resetStringInfo=wasmExports.resetStringInfo)(e),_appendStringInfoChar=Module._appendStringInfoChar=(e,t)=>(_appendStringInfoChar=Module._appendStringInfoChar=wasmExports.appendStringInfoChar)(e,t),_appendBinaryStringInfo=Module._appendBinaryStringInfo=(e,t,r)=>(_appendBinaryStringInfo=Module._appendBinaryStringInfo=wasmExports.appendBinaryStringInfo)(e,t,r),_errdetail_internal=Module._errdetail_internal=(e,t)=>(_errdetail_internal=Module._errdetail_internal=wasmExports.errdetail_internal)(e,t),_strcpy=Module._strcpy=(e,t)=>(_strcpy=Module._strcpy=wasmExports.strcpy)(e,t),_LWLockRegisterTranche=Module._LWLockRegisterTranche=(e,t)=>(_LWLockRegisterTranche=Module._LWLockRegisterTranche=wasmExports.LWLockRegisterTranche)(e,t),_GetNamedLWLockTranche=Module._GetNamedLWLockTranche=e=>(_GetNamedLWLockTranche=Module._GetNamedLWLockTranche=wasmExports.GetNamedLWLockTranche)(e),_LWLockNewTrancheId=Module._LWLockNewTrancheId=()=>(_LWLockNewTrancheId=Module._LWLockNewTrancheId=wasmExports.LWLockNewTrancheId)(),_RequestNamedLWLockTranche=Module._RequestNamedLWLockTranche=(e,t)=>(_RequestNamedLWLockTranche=Module._RequestNamedLWLockTranche=wasmExports.RequestNamedLWLockTranche)(e,t),_pg_prng_double=Module._pg_prng_double=e=>(_pg_prng_double=Module._pg_prng_double=wasmExports.pg_prng_double)(e),_getpid=Module._getpid=()=>(_getpid=Module._getpid=wasmExports.getpid)(),_GetTransactionSnapshot=Module._GetTransactionSnapshot=()=>(_GetTransactionSnapshot=Module._GetTransactionSnapshot=wasmExports.GetTransactionSnapshot)(),_ConditionVariableSignal=Module._ConditionVariableSignal=e=>(_ConditionVariableSignal=Module._ConditionVariableSignal=wasmExports.ConditionVariableSignal)(e),_LockPage=Module._LockPage=(e,t,r)=>(_LockPage=Module._LockPage=wasmExports.LockPage)(e,t,r),_UnlockPage=Module._UnlockPage=(e,t,r)=>(_UnlockPage=Module._UnlockPage=wasmExports.UnlockPage)(e,t,r),_pgstat_progress_update_param=Module._pgstat_progress_update_param=(e,t)=>(_pgstat_progress_update_param=Module._pgstat_progress_update_param=wasmExports.pgstat_progress_update_param)(e,t),_list_make1_impl=Module._list_make1_impl=(e,t)=>(_list_make1_impl=Module._list_make1_impl=wasmExports.list_make1_impl)(e,t),_psprintf=Module._psprintf=(e,t)=>(_psprintf=Module._psprintf=wasmExports.psprintf)(e,t),_smgrtruncate=Module._smgrtruncate=(e,t,r,a)=>(_smgrtruncate=Module._smgrtruncate=wasmExports.smgrtruncate)(e,t,r,a),_log=Module._log=e=>(_log=Module._log=wasmExports.log)(e),_pairingheap_allocate=Module._pairingheap_allocate=(e,t)=>(_pairingheap_allocate=Module._pairingheap_allocate=wasmExports.pairingheap_allocate)(e,t),_pairingheap_add=Module._pairingheap_add=(e,t)=>(_pairingheap_add=Module._pairingheap_add=wasmExports.pairingheap_add)(e,t),_pairingheap_first=Module._pairingheap_first=e=>(_pairingheap_first=Module._pairingheap_first=wasmExports.pairingheap_first)(e),_pairingheap_remove_first=Module._pairingheap_remove_first=e=>(_pairingheap_remove_first=Module._pairingheap_remove_first=wasmExports.pairingheap_remove_first)(e),_bloom_create=Module._bloom_create=(e,t,r)=>(_bloom_create=Module._bloom_create=wasmExports.bloom_create)(e,t,r),_bloom_free=Module._bloom_free=e=>(_bloom_free=Module._bloom_free=wasmExports.bloom_free)(e),_bloom_add_element=Module._bloom_add_element=(e,t,r)=>(_bloom_add_element=Module._bloom_add_element=wasmExports.bloom_add_element)(e,t,r),_hash_bytes_extended=Module._hash_bytes_extended=(e,t,r)=>(_hash_bytes_extended=Module._hash_bytes_extended=wasmExports.hash_bytes_extended)(e,t,r),_bloom_lacks_element=Module._bloom_lacks_element=(e,t,r)=>(_bloom_lacks_element=Module._bloom_lacks_element=wasmExports.bloom_lacks_element)(e,t,r),_bloom_prop_bits_set=Module._bloom_prop_bits_set=e=>(_bloom_prop_bits_set=Module._bloom_prop_bits_set=wasmExports.bloom_prop_bits_set)(e),_pg_popcount=Module._pg_popcount=(e,t)=>(_pg_popcount=Module._pg_popcount=wasmExports.pg_popcount)(e,t),_memcmp=Module._memcmp=(e,t,r)=>(_memcmp=Module._memcmp=wasmExports.memcmp)(e,t,r),_bms_make_singleton=Module._bms_make_singleton=e=>(_bms_make_singleton=Module._bms_make_singleton=wasmExports.bms_make_singleton)(e),_bms_add_members=Module._bms_add_members=(e,t)=>(_bms_add_members=Module._bms_add_members=wasmExports.bms_add_members)(e,t),_bms_add_member=Module._bms_add_member=(e,t)=>(_bms_add_member=Module._bms_add_member=wasmExports.bms_add_member)(e,t),_bms_del_member=Module._bms_del_member=(e,t)=>(_bms_del_member=Module._bms_del_member=wasmExports.bms_del_member)(e,t),_check_stack_depth=Module._check_stack_depth=()=>(_check_stack_depth=Module._check_stack_depth=wasmExports.check_stack_depth)(),_parser_errposition=Module._parser_errposition=(e,t)=>(_parser_errposition=Module._parser_errposition=wasmExports.parser_errposition)(e,t),_makeVar=Module._makeVar=(e,t,r,a,o,s)=>(_makeVar=Module._makeVar=wasmExports.makeVar)(e,t,r,a,o,s),_bms_union=Module._bms_union=(e,t)=>(_bms_union=Module._bms_union=wasmExports.bms_union)(e,t),_varstr_levenshtein_less_equal=Module._varstr_levenshtein_less_equal=(e,t,r,a,o,s,l,n,_)=>(_varstr_levenshtein_less_equal=Module._varstr_levenshtein_less_equal=wasmExports.varstr_levenshtein_less_equal)(e,t,r,a,o,s,l,n,_),_SearchSysCacheExists=Module._SearchSysCacheExists=(e,t,r,a,o)=>(_SearchSysCacheExists=Module._SearchSysCacheExists=wasmExports.SearchSysCacheExists)(e,t,r,a,o),_MemoryContextAllocZeroAligned=Module._MemoryContextAllocZeroAligned=(e,t)=>(_MemoryContextAllocZeroAligned=Module._MemoryContextAllocZeroAligned=wasmExports.MemoryContextAllocZeroAligned)(e,t),_makeString=Module._makeString=e=>(_makeString=Module._makeString=wasmExports.makeString)(e),_addRTEPermissionInfo=Module._addRTEPermissionInfo=(e,t)=>(_addRTEPermissionInfo=Module._addRTEPermissionInfo=wasmExports.addRTEPermissionInfo)(e,t),_copyObjectImpl=Module._copyObjectImpl=e=>(_copyObjectImpl=Module._copyObjectImpl=wasmExports.copyObjectImpl)(e),_exprType=Module._exprType=e=>(_exprType=Module._exprType=wasmExports.exprType)(e),_lappend_oid=Module._lappend_oid=(e,t)=>(_lappend_oid=Module._lappend_oid=wasmExports.lappend_oid)(e,t),_exprTypmod=Module._exprTypmod=e=>(_exprTypmod=Module._exprTypmod=wasmExports.exprTypmod)(e),_exprLocation=Module._exprLocation=e=>(_exprLocation=Module._exprLocation=wasmExports.exprLocation)(e),_CreateTemplateTupleDesc=Module._CreateTemplateTupleDesc=e=>(_CreateTemplateTupleDesc=Module._CreateTemplateTupleDesc=wasmExports.CreateTemplateTupleDesc)(e),_TupleDescInitEntry=Module._TupleDescInitEntry=(e,t,r,a,o,s)=>(_TupleDescInitEntry=Module._TupleDescInitEntry=wasmExports.TupleDescInitEntry)(e,t,r,a,o,s),_TupleDescInitEntryCollation=Module._TupleDescInitEntryCollation=(e,t,r)=>(_TupleDescInitEntryCollation=Module._TupleDescInitEntryCollation=wasmExports.TupleDescInitEntryCollation)(e,t,r),_typenameTypeIdAndMod=Module._typenameTypeIdAndMod=(e,t,r,a)=>(_typenameTypeIdAndMod=Module._typenameTypeIdAndMod=wasmExports.typenameTypeIdAndMod)(e,t,r,a),_format_type_be=Module._format_type_be=e=>(_format_type_be=Module._format_type_be=wasmExports.format_type_be)(e),_list_concat=Module._list_concat=(e,t)=>(_list_concat=Module._list_concat=wasmExports.list_concat)(e,t),_list_copy=Module._list_copy=e=>(_list_copy=Module._list_copy=wasmExports.list_copy)(e),_relation_open=Module._relation_open=(e,t)=>(_relation_open=Module._relation_open=wasmExports.relation_open)(e,t),_relation_close=Module._relation_close=(e,t)=>(_relation_close=Module._relation_close=wasmExports.relation_close)(e,t),_makeTargetEntry=Module._makeTargetEntry=(e,t,r,a)=>(_makeTargetEntry=Module._makeTargetEntry=wasmExports.makeTargetEntry)(e,t,r,a),_get_attname=Module._get_attname=(e,t,r)=>(_get_attname=Module._get_attname=wasmExports.get_attname)(e,t,r),_SearchSysCache2=Module._SearchSysCache2=(e,t,r)=>(_SearchSysCache2=Module._SearchSysCache2=wasmExports.SearchSysCache2)(e,t,r),_ReleaseSysCache=Module._ReleaseSysCache=e=>(_ReleaseSysCache=Module._ReleaseSysCache=wasmExports.ReleaseSysCache)(e),_RangeVarGetRelidExtended=Module._RangeVarGetRelidExtended=(e,t,r,a,o)=>(_RangeVarGetRelidExtended=Module._RangeVarGetRelidExtended=wasmExports.RangeVarGetRelidExtended)(e,t,r,a,o),_pg_mbstrlen_with_len=Module._pg_mbstrlen_with_len=(e,t)=>(_pg_mbstrlen_with_len=Module._pg_mbstrlen_with_len=wasmExports.pg_mbstrlen_with_len)(e,t),_errposition=Module._errposition=e=>(_errposition=Module._errposition=wasmExports.errposition)(e),_numeric_in=Module._numeric_in=e=>(_numeric_in=Module._numeric_in=wasmExports.numeric_in)(e),_DirectFunctionCall3Coll=Module._DirectFunctionCall3Coll=(e,t,r,a,o)=>(_DirectFunctionCall3Coll=Module._DirectFunctionCall3Coll=wasmExports.DirectFunctionCall3Coll)(e,t,r,a,o),_bit_in=Module._bit_in=e=>(_bit_in=Module._bit_in=wasmExports.bit_in)(e),_NameListToString=Module._NameListToString=e=>(_NameListToString=Module._NameListToString=wasmExports.NameListToString)(e),_appendStringInfoString=Module._appendStringInfoString=(e,t)=>(_appendStringInfoString=Module._appendStringInfoString=wasmExports.appendStringInfoString)(e,t),_lookup_type_cache=Module._lookup_type_cache=(e,t)=>(_lookup_type_cache=Module._lookup_type_cache=wasmExports.lookup_type_cache)(e,t),_CacheRegisterSyscacheCallback=Module._CacheRegisterSyscacheCallback=(e,t,r)=>(_CacheRegisterSyscacheCallback=Module._CacheRegisterSyscacheCallback=wasmExports.CacheRegisterSyscacheCallback)(e,t,r),_SearchSysCache1=Module._SearchSysCache1=(e,t)=>(_SearchSysCache1=Module._SearchSysCache1=wasmExports.SearchSysCache1)(e,t),_list_make2_impl=Module._list_make2_impl=(e,t,r)=>(_list_make2_impl=Module._list_make2_impl=wasmExports.list_make2_impl)(e,t,r),_get_base_element_type=Module._get_base_element_type=e=>(_get_base_element_type=Module._get_base_element_type=wasmExports.get_base_element_type)(e),_downcase_truncate_identifier=Module._downcase_truncate_identifier=(e,t,r)=>(_downcase_truncate_identifier=Module._downcase_truncate_identifier=wasmExports.downcase_truncate_identifier)(e,t,r),_pg_database_encoding_max_length=Module._pg_database_encoding_max_length=()=>(_pg_database_encoding_max_length=Module._pg_database_encoding_max_length=wasmExports.pg_database_encoding_max_length)(),_truncate_identifier=Module._truncate_identifier=(e,t,r)=>(_truncate_identifier=Module._truncate_identifier=wasmExports.truncate_identifier)(e,t,r),_scanner_isspace=Module._scanner_isspace=e=>(_scanner_isspace=Module._scanner_isspace=wasmExports.scanner_isspace)(e),_get_typcollation=Module._get_typcollation=e=>(_get_typcollation=Module._get_typcollation=wasmExports.get_typcollation)(e),_list_delete_cell=Module._list_delete_cell=(e,t)=>(_list_delete_cell=Module._list_delete_cell=wasmExports.list_delete_cell)(e,t),_makeTypeNameFromNameList=Module._makeTypeNameFromNameList=e=>(_makeTypeNameFromNameList=Module._makeTypeNameFromNameList=wasmExports.makeTypeNameFromNameList)(e),_SysCacheGetAttrNotNull=Module._SysCacheGetAttrNotNull=(e,t,r)=>(_SysCacheGetAttrNotNull=Module._SysCacheGetAttrNotNull=wasmExports.SysCacheGetAttrNotNull)(e,t,r),_text_to_cstring=Module._text_to_cstring=e=>(_text_to_cstring=Module._text_to_cstring=wasmExports.text_to_cstring)(e),_stringToNode=Module._stringToNode=e=>(_stringToNode=Module._stringToNode=wasmExports.stringToNode)(e),_bms_is_member=Module._bms_is_member=(e,t)=>(_bms_is_member=Module._bms_is_member=wasmExports.bms_is_member)(e,t),_bms_free=Module._bms_free=e=>(_bms_free=Module._bms_free=wasmExports.bms_free)(e),_core_yylex=Module._core_yylex=(e,t,r)=>(_core_yylex=Module._core_yylex=wasmExports.core_yylex)(e,t,r),_getc=Module._getc=e=>(_getc=Module._getc=wasmExports.getc)(e),_ferror=Module._ferror=e=>(_ferror=Module._ferror=wasmExports.ferror)(e),_fread=Module._fread=(e,t,r,a)=>(_fread=Module._fread=wasmExports.fread)(e,t,r,a),_clearerr=Module._clearerr=e=>(_clearerr=Module._clearerr=wasmExports.clearerr)(e),_scanner_init=Module._scanner_init=(e,t,r,a)=>(_scanner_init=Module._scanner_init=wasmExports.scanner_init)(e,t,r,a),_scanner_finish=Module._scanner_finish=e=>(_scanner_finish=Module._scanner_finish=wasmExports.scanner_finish)(e),_get_namespace_name=Module._get_namespace_name=e=>(_get_namespace_name=Module._get_namespace_name=wasmExports.get_namespace_name)(e),_lookup_rowtype_tupdesc=Module._lookup_rowtype_tupdesc=(e,t)=>(_lookup_rowtype_tupdesc=Module._lookup_rowtype_tupdesc=wasmExports.lookup_rowtype_tupdesc)(e,t),_DecrTupleDescRefCount=Module._DecrTupleDescRefCount=e=>(_DecrTupleDescRefCount=Module._DecrTupleDescRefCount=wasmExports.DecrTupleDescRefCount)(e),_relation_openrv=Module._relation_openrv=(e,t)=>(_relation_openrv=Module._relation_openrv=wasmExports.relation_openrv)(e,t),_errdetail_relkind_not_supported=Module._errdetail_relkind_not_supported=e=>(_errdetail_relkind_not_supported=Module._errdetail_relkind_not_supported=wasmExports.errdetail_relkind_not_supported)(e),_object_aclcheck=Module._object_aclcheck=(e,t,r,a)=>(_object_aclcheck=Module._object_aclcheck=wasmExports.object_aclcheck)(e,t,r,a),_aclcheck_error=Module._aclcheck_error=(e,t,r)=>(_aclcheck_error=Module._aclcheck_error=wasmExports.aclcheck_error)(e,t,r),_pg_class_aclcheck=Module._pg_class_aclcheck=(e,t,r)=>(_pg_class_aclcheck=Module._pg_class_aclcheck=wasmExports.pg_class_aclcheck)(e,t,r),_get_relkind_objtype=Module._get_relkind_objtype=e=>(_get_relkind_objtype=Module._get_relkind_objtype=wasmExports.get_relkind_objtype)(e),_list_make3_impl=Module._list_make3_impl=(e,t,r,a)=>(_list_make3_impl=Module._list_make3_impl=wasmExports.list_make3_impl)(e,t,r,a),_quote_qualified_identifier=Module._quote_qualified_identifier=(e,t)=>(_quote_qualified_identifier=Module._quote_qualified_identifier=wasmExports.quote_qualified_identifier)(e,t),_table_openrv=Module._table_openrv=(e,t)=>(_table_openrv=Module._table_openrv=wasmExports.table_openrv)(e,t),_equal=Module._equal=(e,t)=>(_equal=Module._equal=wasmExports.equal)(e,t),_RelationGetIndexList=Module._RelationGetIndexList=e=>(_RelationGetIndexList=Module._RelationGetIndexList=wasmExports.RelationGetIndexList)(e),_pg_detoast_datum=Module._pg_detoast_datum=e=>(_pg_detoast_datum=Module._pg_detoast_datum=wasmExports.pg_detoast_datum)(e),_SysCacheGetAttr=Module._SysCacheGetAttr=(e,t,r,a)=>(_SysCacheGetAttr=Module._SysCacheGetAttr=wasmExports.SysCacheGetAttr)(e,t,r,a),_deconstruct_array_builtin=Module._deconstruct_array_builtin=(e,t,r,a,o)=>(_deconstruct_array_builtin=Module._deconstruct_array_builtin=wasmExports.deconstruct_array_builtin)(e,t,r,a,o),_untransformRelOptions=Module._untransformRelOptions=e=>(_untransformRelOptions=Module._untransformRelOptions=wasmExports.untransformRelOptions)(e),_transformExpr=Module._transformExpr=(e,t,r)=>(_transformExpr=Module._transformExpr=wasmExports.transformExpr)(e,t,r),_get_rel_namespace=Module._get_rel_namespace=e=>(_get_rel_namespace=Module._get_rel_namespace=wasmExports.get_rel_namespace)(e),_get_rel_name=Module._get_rel_name=e=>(_get_rel_name=Module._get_rel_name=wasmExports.get_rel_name)(e),_makeRangeVar=Module._makeRangeVar=(e,t,r)=>(_makeRangeVar=Module._makeRangeVar=wasmExports.makeRangeVar)(e,t,r),_makeDefElem=Module._makeDefElem=(e,t,r)=>(_makeDefElem=Module._makeDefElem=wasmExports.makeDefElem)(e,t,r),_makeRangeVarFromNameList=Module._makeRangeVarFromNameList=e=>(_makeRangeVarFromNameList=Module._makeRangeVarFromNameList=wasmExports.makeRangeVarFromNameList)(e),_coerce_to_target_type=Module._coerce_to_target_type=(e,t,r,a,o,s,l,n)=>(_coerce_to_target_type=Module._coerce_to_target_type=wasmExports.coerce_to_target_type)(e,t,r,a,o,s,l,n),_LookupTypeName=Module._LookupTypeName=(e,t,r,a)=>(_LookupTypeName=Module._LookupTypeName=wasmExports.LookupTypeName)(e,t,r,a),_GetSysCacheOid=Module._GetSysCacheOid=(e,t,r,a,o,s)=>(_GetSysCacheOid=Module._GetSysCacheOid=wasmExports.GetSysCacheOid)(e,t,r,a,o,s),_construct_array_builtin=Module._construct_array_builtin=(e,t,r)=>(_construct_array_builtin=Module._construct_array_builtin=wasmExports.construct_array_builtin)(e,t,r),_get_collation_oid=Module._get_collation_oid=(e,t)=>(_get_collation_oid=Module._get_collation_oid=wasmExports.get_collation_oid)(e,t),_typeStringToTypeName=Module._typeStringToTypeName=(e,t)=>(_typeStringToTypeName=Module._typeStringToTypeName=wasmExports.typeStringToTypeName)(e,t),_raw_parser=Module._raw_parser=(e,t)=>(_raw_parser=Module._raw_parser=wasmExports.raw_parser)(e,t),_errsave_start=Module._errsave_start=(e,t)=>(_errsave_start=Module._errsave_start=wasmExports.errsave_start)(e,t),_errsave_finish=Module._errsave_finish=(e,t,r,a)=>(_errsave_finish=Module._errsave_finish=wasmExports.errsave_finish)(e,t,r,a),_defGetBoolean=Module._defGetBoolean=e=>(_defGetBoolean=Module._defGetBoolean=wasmExports.defGetBoolean)(e),_list_delete_last=Module._list_delete_last=e=>(_list_delete_last=Module._list_delete_last=wasmExports.list_delete_last)(e),_format_type_with_typemod=Module._format_type_with_typemod=(e,t)=>(_format_type_with_typemod=Module._format_type_with_typemod=wasmExports.format_type_with_typemod)(e,t),_list_member=Module._list_member=(e,t)=>(_list_member=Module._list_member=wasmExports.list_member)(e,t),_list_member_int=Module._list_member_int=(e,t)=>(_list_member_int=Module._list_member_int=wasmExports.list_member_int)(e,t),_list_sort=Module._list_sort=(e,t)=>(_list_sort=Module._list_sort=wasmExports.list_sort)(e,t),_get_element_type=Module._get_element_type=e=>(_get_element_type=Module._get_element_type=wasmExports.get_element_type)(e),_makeBoolean=Module._makeBoolean=e=>(_makeBoolean=Module._makeBoolean=wasmExports.makeBoolean)(e),_makeInteger=Module._makeInteger=e=>(_makeInteger=Module._makeInteger=wasmExports.makeInteger)(e),_makeTypeName=Module._makeTypeName=e=>(_makeTypeName=Module._makeTypeName=wasmExports.makeTypeName)(e),_list_make4_impl=Module._list_make4_impl=(e,t,r,a,o)=>(_list_make4_impl=Module._list_make4_impl=wasmExports.list_make4_impl)(e,t,r,a,o),_isxdigit=Module._isxdigit=e=>(_isxdigit=Module._isxdigit=wasmExports.isxdigit)(e),_strip_implicit_coercions=Module._strip_implicit_coercions=e=>(_strip_implicit_coercions=Module._strip_implicit_coercions=wasmExports.strip_implicit_coercions)(e),_SearchSysCacheList=Module._SearchSysCacheList=(e,t,r,a,o)=>(_SearchSysCacheList=Module._SearchSysCacheList=wasmExports.SearchSysCacheList)(e,t,r,a,o),_ReleaseCatCacheList=Module._ReleaseCatCacheList=e=>(_ReleaseCatCacheList=Module._ReleaseCatCacheList=wasmExports.ReleaseCatCacheList)(e),_get_sortgroupref_tle=Module._get_sortgroupref_tle=(e,t)=>(_get_sortgroupref_tle=Module._get_sortgroupref_tle=wasmExports.get_sortgroupref_tle)(e,t),_type_is_rowtype=Module._type_is_rowtype=e=>(_type_is_rowtype=Module._type_is_rowtype=wasmExports.type_is_rowtype)(e),_bms_next_member=Module._bms_next_member=(e,t)=>(_bms_next_member=Module._bms_next_member=wasmExports.bms_next_member)(e,t),_MemoryContextReset=Module._MemoryContextReset=e=>(_MemoryContextReset=Module._MemoryContextReset=wasmExports.MemoryContextReset)(e),_abort=Module._abort=()=>(_abort=Module._abort=wasmExports.abort)(),_heap_getnext=Module._heap_getnext=(e,t)=>(_heap_getnext=Module._heap_getnext=wasmExports.heap_getnext)(e,t),_OidOutputFunctionCall=Module._OidOutputFunctionCall=(e,t)=>(_OidOutputFunctionCall=Module._OidOutputFunctionCall=wasmExports.OidOutputFunctionCall)(e,t),_atoi=Module._atoi=e=>(_atoi=Module._atoi=wasmExports.atoi)(e),_GetConfigOption=Module._GetConfigOption=(e,t,r)=>(_GetConfigOption=Module._GetConfigOption=wasmExports.GetConfigOption)(e,t,r),_pg_strong_random=Module._pg_strong_random=(e,t)=>(_pg_strong_random=Module._pg_strong_random=wasmExports.pg_strong_random)(e,t),_pg_prng_seed_check=Module._pg_prng_seed_check=e=>(_pg_prng_seed_check=Module._pg_prng_seed_check=wasmExports.pg_prng_seed_check)(e),_pg_prng_seed=Module._pg_prng_seed=(e,t)=>(_pg_prng_seed=Module._pg_prng_seed=wasmExports.pg_prng_seed)(e,t),_fputc=Module._fputc=(e,t)=>(_fputc=Module._fputc=wasmExports.fputc)(e,t),_time=Module._time=e=>(_time=Module._time=wasmExports.time)(e),_TimestampDifferenceMilliseconds=Module._TimestampDifferenceMilliseconds=(e,t)=>(_TimestampDifferenceMilliseconds=Module._TimestampDifferenceMilliseconds=wasmExports.TimestampDifferenceMilliseconds)(e,t),_ProcessConfigFile=Module._ProcessConfigFile=e=>(_ProcessConfigFile=Module._ProcessConfigFile=wasmExports.ProcessConfigFile)(e),_send=Module._send=(e,t,r,a)=>(_send=Module._send=wasmExports.send)(e,t,r,a),_parse_bool=Module._parse_bool=(e,t)=>(_parse_bool=Module._parse_bool=wasmExports.parse_bool)(e,t),_enlargeStringInfo=Module._enlargeStringInfo=(e,t)=>(_enlargeStringInfo=Module._enlargeStringInfo=wasmExports.enlargeStringInfo)(e,t),_BackgroundWorkerInitializeConnectionByOid=Module._BackgroundWorkerInitializeConnectionByOid=(e,t,r)=>(_BackgroundWorkerInitializeConnectionByOid=Module._BackgroundWorkerInitializeConnectionByOid=wasmExports.BackgroundWorkerInitializeConnectionByOid)(e,t,r),_BackgroundWorkerUnblockSignals=Module._BackgroundWorkerUnblockSignals=()=>(_BackgroundWorkerUnblockSignals=Module._BackgroundWorkerUnblockSignals=wasmExports.BackgroundWorkerUnblockSignals)(),_pg_getnameinfo_all=Module._pg_getnameinfo_all=(e,t,r,a,o,s,l)=>(_pg_getnameinfo_all=Module._pg_getnameinfo_all=wasmExports.pg_getnameinfo_all)(e,t,r,a,o,s,l),_gai_strerror=Module._gai_strerror=e=>(_gai_strerror=Module._gai_strerror=wasmExports.gai_strerror)(e),_SignalHandlerForConfigReload=Module._SignalHandlerForConfigReload=e=>(_SignalHandlerForConfigReload=Module._SignalHandlerForConfigReload=wasmExports.SignalHandlerForConfigReload)(e),_fwrite=Module._fwrite=(e,t,r,a)=>(_fwrite=Module._fwrite=wasmExports.fwrite)(e,t,r,a),_SignalHandlerForShutdownRequest=Module._SignalHandlerForShutdownRequest=e=>(_SignalHandlerForShutdownRequest=Module._SignalHandlerForShutdownRequest=wasmExports.SignalHandlerForShutdownRequest)(e),_EmitErrorReport=Module._EmitErrorReport=()=>(_EmitErrorReport=Module._EmitErrorReport=wasmExports.EmitErrorReport)(),_FlushErrorState=Module._FlushErrorState=()=>(_FlushErrorState=Module._FlushErrorState=wasmExports.FlushErrorState)(),_die=Module._die=e=>(_die=Module._die=wasmExports.die)(e),_MultiXactIdPrecedes=Module._MultiXactIdPrecedes=(e,t)=>(_MultiXactIdPrecedes=Module._MultiXactIdPrecedes=wasmExports.MultiXactIdPrecedes)(e,t),_CreateTupleDescCopy=Module._CreateTupleDescCopy=e=>(_CreateTupleDescCopy=Module._CreateTupleDescCopy=wasmExports.CreateTupleDescCopy)(e),_pgstat_report_activity=Module._pgstat_report_activity=(e,t)=>(_pgstat_report_activity=Module._pgstat_report_activity=wasmExports.pgstat_report_activity)(e,t),_DirectFunctionCall2Coll=Module._DirectFunctionCall2Coll=(e,t,r,a)=>(_DirectFunctionCall2Coll=Module._DirectFunctionCall2Coll=wasmExports.DirectFunctionCall2Coll)(e,t,r,a),_RegisterBackgroundWorker=Module._RegisterBackgroundWorker=e=>(_RegisterBackgroundWorker=Module._RegisterBackgroundWorker=wasmExports.RegisterBackgroundWorker)(e),_RegisterDynamicBackgroundWorker=Module._RegisterDynamicBackgroundWorker=(e,t)=>(_RegisterDynamicBackgroundWorker=Module._RegisterDynamicBackgroundWorker=wasmExports.RegisterDynamicBackgroundWorker)(e,t),_WaitForBackgroundWorkerStartup=Module._WaitForBackgroundWorkerStartup=(e,t)=>(_WaitForBackgroundWorkerStartup=Module._WaitForBackgroundWorkerStartup=wasmExports.WaitForBackgroundWorkerStartup)(e,t),_WaitForBackgroundWorkerShutdown=Module._WaitForBackgroundWorkerShutdown=e=>(_WaitForBackgroundWorkerShutdown=Module._WaitForBackgroundWorkerShutdown=wasmExports.WaitForBackgroundWorkerShutdown)(e),_GetXLogReplayRecPtr=Module._GetXLogReplayRecPtr=e=>(_GetXLogReplayRecPtr=Module._GetXLogReplayRecPtr=wasmExports.GetXLogReplayRecPtr)(e),_gettimeofday=Module._gettimeofday=(e,t)=>(_gettimeofday=Module._gettimeofday=wasmExports.gettimeofday)(e,t),_sscanf=Module._sscanf=(e,t,r)=>(_sscanf=Module._sscanf=wasmExports.sscanf)(e,t,r),_get_call_result_type=Module._get_call_result_type=(e,t,r)=>(_get_call_result_type=Module._get_call_result_type=wasmExports.get_call_result_type)(e,t,r),_HeapTupleHeaderGetDatum=Module._HeapTupleHeaderGetDatum=e=>(_HeapTupleHeaderGetDatum=Module._HeapTupleHeaderGetDatum=wasmExports.HeapTupleHeaderGetDatum)(e),_wal_segment_close=Module._wal_segment_close=e=>(_wal_segment_close=Module._wal_segment_close=wasmExports.wal_segment_close)(e),_wal_segment_open=Module._wal_segment_open=(e,t,r)=>(_wal_segment_open=Module._wal_segment_open=wasmExports.wal_segment_open)(e,t,r),_GetFlushRecPtr=Module._GetFlushRecPtr=e=>(_GetFlushRecPtr=Module._GetFlushRecPtr=wasmExports.GetFlushRecPtr)(e),_XLogReadRecord=Module._XLogReadRecord=(e,t)=>(_XLogReadRecord=Module._XLogReadRecord=wasmExports.XLogReadRecord)(e,t),_RmgrNotFound=Module._RmgrNotFound=e=>(_RmgrNotFound=Module._RmgrNotFound=wasmExports.RmgrNotFound)(e),_CacheRegisterRelcacheCallback=Module._CacheRegisterRelcacheCallback=(e,t)=>(_CacheRegisterRelcacheCallback=Module._CacheRegisterRelcacheCallback=wasmExports.CacheRegisterRelcacheCallback)(e,t),_free_attrmap=Module._free_attrmap=e=>(_free_attrmap=Module._free_attrmap=wasmExports.free_attrmap)(e),_BuildIndexInfo=Module._BuildIndexInfo=e=>(_BuildIndexInfo=Module._BuildIndexInfo=wasmExports.BuildIndexInfo)(e),_hash_seq_term=Module._hash_seq_term=e=>(_hash_seq_term=Module._hash_seq_term=wasmExports.hash_seq_term)(e),_PushActiveSnapshot=Module._PushActiveSnapshot=e=>(_PushActiveSnapshot=Module._PushActiveSnapshot=wasmExports.PushActiveSnapshot)(e),_PopActiveSnapshot=Module._PopActiveSnapshot=()=>(_PopActiveSnapshot=Module._PopActiveSnapshot=wasmExports.PopActiveSnapshot)(),_MakePerTupleExprContext=Module._MakePerTupleExprContext=e=>(_MakePerTupleExprContext=Module._MakePerTupleExprContext=wasmExports.MakePerTupleExprContext)(e),_ExecInitExpr=Module._ExecInitExpr=(e,t)=>(_ExecInitExpr=Module._ExecInitExpr=wasmExports.ExecInitExpr)(e,t),_FreeExecutorState=Module._FreeExecutorState=e=>(_FreeExecutorState=Module._FreeExecutorState=wasmExports.FreeExecutorState)(e),_list_member_oid=Module._list_member_oid=(e,t)=>(_list_member_oid=Module._list_member_oid=wasmExports.list_member_oid)(e,t),_MemoryContextStrdup=Module._MemoryContextStrdup=(e,t)=>(_MemoryContextStrdup=Module._MemoryContextStrdup=wasmExports.MemoryContextStrdup)(e,t),_pq_getmsgint=Module._pq_getmsgint=(e,t)=>(_pq_getmsgint=Module._pq_getmsgint=wasmExports.pq_getmsgint)(e,t),_CreateExecutorState=Module._CreateExecutorState=()=>(_CreateExecutorState=Module._CreateExecutorState=wasmExports.CreateExecutorState)(),_ExecInitRangeTable=Module._ExecInitRangeTable=(e,t,r)=>(_ExecInitRangeTable=Module._ExecInitRangeTable=wasmExports.ExecInitRangeTable)(e,t,r),_getTypeInputInfo=Module._getTypeInputInfo=(e,t,r)=>(_getTypeInputInfo=Module._getTypeInputInfo=wasmExports.getTypeInputInfo)(e,t,r),_ExecStoreVirtualTuple=Module._ExecStoreVirtualTuple=e=>(_ExecStoreVirtualTuple=Module._ExecStoreVirtualTuple=wasmExports.ExecStoreVirtualTuple)(e),_execute_attr_map_slot=Module._execute_attr_map_slot=(e,t,r)=>(_execute_attr_map_slot=Module._execute_attr_map_slot=wasmExports.execute_attr_map_slot)(e,t,r),_slot_getsomeattrs_int=Module._slot_getsomeattrs_int=(e,t)=>(_slot_getsomeattrs_int=Module._slot_getsomeattrs_int=wasmExports.slot_getsomeattrs_int)(e,t),_GetUserNameFromId=Module._GetUserNameFromId=(e,t)=>(_GetUserNameFromId=Module._GetUserNameFromId=wasmExports.GetUserNameFromId)(e,t),_makeStringInfo=Module._makeStringInfo=()=>(_makeStringInfo=Module._makeStringInfo=wasmExports.makeStringInfo)(),_list_member_xid=Module._list_member_xid=(e,t)=>(_list_member_xid=Module._list_member_xid=wasmExports.list_member_xid)(e,t),_lappend_xid=Module._lappend_xid=(e,t)=>(_lappend_xid=Module._lappend_xid=wasmExports.lappend_xid)(e,t),_tuplestore_end=Module._tuplestore_end=e=>(_tuplestore_end=Module._tuplestore_end=wasmExports.tuplestore_end)(e),_quote_literal_cstr=Module._quote_literal_cstr=e=>(_quote_literal_cstr=Module._quote_literal_cstr=wasmExports.quote_literal_cstr)(e),_MakeSingleTupleTableSlot=Module._MakeSingleTupleTableSlot=(e,t)=>(_MakeSingleTupleTableSlot=Module._MakeSingleTupleTableSlot=wasmExports.MakeSingleTupleTableSlot)(e,t),_ExecDropSingleTupleTableSlot=Module._ExecDropSingleTupleTableSlot=e=>(_ExecDropSingleTupleTableSlot=Module._ExecDropSingleTupleTableSlot=wasmExports.ExecDropSingleTupleTableSlot)(e),_tuplestore_tuple_count=Module._tuplestore_tuple_count=e=>(_tuplestore_tuple_count=Module._tuplestore_tuple_count=wasmExports.tuplestore_tuple_count)(e),_quote_identifier=Module._quote_identifier=e=>(_quote_identifier=Module._quote_identifier=wasmExports.quote_identifier)(e),_BeginCopyFrom=Module._BeginCopyFrom=(e,t,r,a,o,s,l,n)=>(_BeginCopyFrom=Module._BeginCopyFrom=wasmExports.BeginCopyFrom)(e,t,r,a,o,s,l,n),_array_contains_nulls=Module._array_contains_nulls=e=>(_array_contains_nulls=Module._array_contains_nulls=wasmExports.array_contains_nulls)(e),_format_procedure=Module._format_procedure=e=>(_format_procedure=Module._format_procedure=wasmExports.format_procedure)(e),_pg_detoast_datum_packed=Module._pg_detoast_datum_packed=e=>(_pg_detoast_datum_packed=Module._pg_detoast_datum_packed=wasmExports.pg_detoast_datum_packed)(e),_cstring_to_text_with_len=Module._cstring_to_text_with_len=(e,t)=>(_cstring_to_text_with_len=Module._cstring_to_text_with_len=wasmExports.cstring_to_text_with_len)(e,t),_GenerationContextCreate=Module._GenerationContextCreate=(e,t,r,a,o)=>(_GenerationContextCreate=Module._GenerationContextCreate=wasmExports.GenerationContextCreate)(e,t,r,a,o),_BeginInternalSubTransaction=Module._BeginInternalSubTransaction=e=>(_BeginInternalSubTransaction=Module._BeginInternalSubTransaction=wasmExports.BeginInternalSubTransaction)(e),_RollbackAndReleaseCurrentSubTransaction=Module._RollbackAndReleaseCurrentSubTransaction=()=>(_RollbackAndReleaseCurrentSubTransaction=Module._RollbackAndReleaseCurrentSubTransaction=wasmExports.RollbackAndReleaseCurrentSubTransaction)(),_CopyErrorData=Module._CopyErrorData=()=>(_CopyErrorData=Module._CopyErrorData=wasmExports.CopyErrorData)(),_FreeErrorData=Module._FreeErrorData=e=>(_FreeErrorData=Module._FreeErrorData=wasmExports.FreeErrorData)(e),_RelidByRelfilenumber=Module._RelidByRelfilenumber=(e,t)=>(_RelidByRelfilenumber=Module._RelidByRelfilenumber=wasmExports.RelidByRelfilenumber)(e,t),_RelationIdGetRelation=Module._RelationIdGetRelation=e=>(_RelationIdGetRelation=Module._RelationIdGetRelation=wasmExports.RelationIdGetRelation)(e),_heap_deform_tuple=Module._heap_deform_tuple=(e,t,r,a)=>(_heap_deform_tuple=Module._heap_deform_tuple=wasmExports.heap_deform_tuple)(e,t,r,a),_RelationClose=Module._RelationClose=e=>(_RelationClose=Module._RelationClose=wasmExports.RelationClose)(e),_nocachegetattr=Module._nocachegetattr=(e,t,r)=>(_nocachegetattr=Module._nocachegetattr=wasmExports.nocachegetattr)(e,t,r),_XLogReaderAllocate=Module._XLogReaderAllocate=(e,t,r,a)=>(_XLogReaderAllocate=Module._XLogReaderAllocate=wasmExports.XLogReaderAllocate)(e,t,r,a),_XLogReaderFree=Module._XLogReaderFree=e=>(_XLogReaderFree=Module._XLogReaderFree=wasmExports.XLogReaderFree)(e),_OutputPluginPrepareWrite=Module._OutputPluginPrepareWrite=(e,t)=>(_OutputPluginPrepareWrite=Module._OutputPluginPrepareWrite=wasmExports.OutputPluginPrepareWrite)(e,t),_OutputPluginWrite=Module._OutputPluginWrite=(e,t)=>(_OutputPluginWrite=Module._OutputPluginWrite=wasmExports.OutputPluginWrite)(e,t),_OutputPluginUpdateProgress=Module._OutputPluginUpdateProgress=(e,t)=>(_OutputPluginUpdateProgress=Module._OutputPluginUpdateProgress=wasmExports.OutputPluginUpdateProgress)(e,t),_replorigin_by_oid=Module._replorigin_by_oid=(e,t,r)=>(_replorigin_by_oid=Module._replorigin_by_oid=wasmExports.replorigin_by_oid)(e,t,r),_logicalrep_write_begin=Module._logicalrep_write_begin=(e,t)=>(_logicalrep_write_begin=Module._logicalrep_write_begin=wasmExports.logicalrep_write_begin)(e,t),_logicalrep_write_commit=Module._logicalrep_write_commit=(e,t,r)=>(_logicalrep_write_commit=Module._logicalrep_write_commit=wasmExports.logicalrep_write_commit)(e,t,r),_logicalrep_write_begin_prepare=Module._logicalrep_write_begin_prepare=(e,t)=>(_logicalrep_write_begin_prepare=Module._logicalrep_write_begin_prepare=wasmExports.logicalrep_write_begin_prepare)(e,t),_logicalrep_write_prepare=Module._logicalrep_write_prepare=(e,t,r)=>(_logicalrep_write_prepare=Module._logicalrep_write_prepare=wasmExports.logicalrep_write_prepare)(e,t,r),_logicalrep_write_commit_prepared=Module._logicalrep_write_commit_prepared=(e,t,r)=>(_logicalrep_write_commit_prepared=Module._logicalrep_write_commit_prepared=wasmExports.logicalrep_write_commit_prepared)(e,t,r),_logicalrep_write_rollback_prepared=Module._logicalrep_write_rollback_prepared=(e,t,r,a)=>(_logicalrep_write_rollback_prepared=Module._logicalrep_write_rollback_prepared=wasmExports.logicalrep_write_rollback_prepared)(e,t,r,a),_logicalrep_write_stream_prepare=Module._logicalrep_write_stream_prepare=(e,t,r)=>(_logicalrep_write_stream_prepare=Module._logicalrep_write_stream_prepare=wasmExports.logicalrep_write_stream_prepare)(e,t,r),_logicalrep_write_origin=Module._logicalrep_write_origin=(e,t,r)=>(_logicalrep_write_origin=Module._logicalrep_write_origin=wasmExports.logicalrep_write_origin)(e,t,r),_logicalrep_write_insert=Module._logicalrep_write_insert=(e,t,r,a,o,s)=>(_logicalrep_write_insert=Module._logicalrep_write_insert=wasmExports.logicalrep_write_insert)(e,t,r,a,o,s),_logicalrep_write_update=Module._logicalrep_write_update=(e,t,r,a,o,s,l)=>(_logicalrep_write_update=Module._logicalrep_write_update=wasmExports.logicalrep_write_update)(e,t,r,a,o,s,l),_logicalrep_write_delete=Module._logicalrep_write_delete=(e,t,r,a,o,s)=>(_logicalrep_write_delete=Module._logicalrep_write_delete=wasmExports.logicalrep_write_delete)(e,t,r,a,o,s),_logicalrep_write_truncate=Module._logicalrep_write_truncate=(e,t,r,a,o,s)=>(_logicalrep_write_truncate=Module._logicalrep_write_truncate=wasmExports.logicalrep_write_truncate)(e,t,r,a,o,s),_logicalrep_write_message=Module._logicalrep_write_message=(e,t,r,a,o,s,l)=>(_logicalrep_write_message=Module._logicalrep_write_message=wasmExports.logicalrep_write_message)(e,t,r,a,o,s,l),_logicalrep_write_rel=Module._logicalrep_write_rel=(e,t,r,a)=>(_logicalrep_write_rel=Module._logicalrep_write_rel=wasmExports.logicalrep_write_rel)(e,t,r,a),_logicalrep_write_typ=Module._logicalrep_write_typ=(e,t,r)=>(_logicalrep_write_typ=Module._logicalrep_write_typ=wasmExports.logicalrep_write_typ)(e,t,r),_logicalrep_write_stream_start=Module._logicalrep_write_stream_start=(e,t,r)=>(_logicalrep_write_stream_start=Module._logicalrep_write_stream_start=wasmExports.logicalrep_write_stream_start)(e,t,r),_logicalrep_write_stream_stop=Module._logicalrep_write_stream_stop=e=>(_logicalrep_write_stream_stop=Module._logicalrep_write_stream_stop=wasmExports.logicalrep_write_stream_stop)(e),_logicalrep_write_stream_commit=Module._logicalrep_write_stream_commit=(e,t,r)=>(_logicalrep_write_stream_commit=Module._logicalrep_write_stream_commit=wasmExports.logicalrep_write_stream_commit)(e,t,r),_logicalrep_write_stream_abort=Module._logicalrep_write_stream_abort=(e,t,r,a,o,s)=>(_logicalrep_write_stream_abort=Module._logicalrep_write_stream_abort=wasmExports.logicalrep_write_stream_abort)(e,t,r,a,o,s),_ProcessWalRcvInterrupts=Module._ProcessWalRcvInterrupts=()=>(_ProcessWalRcvInterrupts=Module._ProcessWalRcvInterrupts=wasmExports.ProcessWalRcvInterrupts)(),_timestamptz_to_str=Module._timestamptz_to_str=e=>(_timestamptz_to_str=Module._timestamptz_to_str=wasmExports.timestamptz_to_str)(e),_GetDatabaseEncodingName=Module._GetDatabaseEncodingName=()=>(_GetDatabaseEncodingName=Module._GetDatabaseEncodingName=wasmExports.GetDatabaseEncodingName)(),_PQconnectStartParams=Module._PQconnectStartParams=(e,t,r)=>(_PQconnectStartParams=Module._PQconnectStartParams=wasmExports.PQconnectStartParams)(e,t,r),_PQstatus=Module._PQstatus=e=>(_PQstatus=Module._PQstatus=wasmExports.PQstatus)(e),_PQsocket=Module._PQsocket=e=>(_PQsocket=Module._PQsocket=wasmExports.PQsocket)(e),_PQconnectPoll=Module._PQconnectPoll=e=>(_PQconnectPoll=Module._PQconnectPoll=wasmExports.PQconnectPoll)(e),_PQconnectionUsedPassword=Module._PQconnectionUsedPassword=e=>(_PQconnectionUsedPassword=Module._PQconnectionUsedPassword=wasmExports.PQconnectionUsedPassword)(e),_PQfinish=Module._PQfinish=e=>(_PQfinish=Module._PQfinish=wasmExports.PQfinish)(e),_PQresultStatus=Module._PQresultStatus=e=>(_PQresultStatus=Module._PQresultStatus=wasmExports.PQresultStatus)(e),_PQclear=Module._PQclear=e=>(_PQclear=Module._PQclear=wasmExports.PQclear)(e),_PQerrorMessage=Module._PQerrorMessage=e=>(_PQerrorMessage=Module._PQerrorMessage=wasmExports.PQerrorMessage)(e),_pchomp=Module._pchomp=e=>(_pchomp=Module._pchomp=wasmExports.pchomp)(e),_PQnfields=Module._PQnfields=e=>(_PQnfields=Module._PQnfields=wasmExports.PQnfields)(e),_PQntuples=Module._PQntuples=e=>(_PQntuples=Module._PQntuples=wasmExports.PQntuples)(e),_PQgetvalue=Module._PQgetvalue=(e,t,r)=>(_PQgetvalue=Module._PQgetvalue=wasmExports.PQgetvalue)(e,t,r),_pg_strtoint32=Module._pg_strtoint32=e=>(_pg_strtoint32=Module._pg_strtoint32=wasmExports.pg_strtoint32)(e),_PQconsumeInput=Module._PQconsumeInput=e=>(_PQconsumeInput=Module._PQconsumeInput=wasmExports.PQconsumeInput)(e),_pg_lsn_in=Module._pg_lsn_in=e=>(_pg_lsn_in=Module._pg_lsn_in=wasmExports.pg_lsn_in)(e),_DirectFunctionCall1Coll=Module._DirectFunctionCall1Coll=(e,t,r)=>(_DirectFunctionCall1Coll=Module._DirectFunctionCall1Coll=wasmExports.DirectFunctionCall1Coll)(e,t,r),_PQgetisnull=Module._PQgetisnull=(e,t,r)=>(_PQgetisnull=Module._PQgetisnull=wasmExports.PQgetisnull)(e,t,r),_tuplestore_begin_heap=Module._tuplestore_begin_heap=(e,t,r)=>(_tuplestore_begin_heap=Module._tuplestore_begin_heap=wasmExports.tuplestore_begin_heap)(e,t,r),_TupleDescGetAttInMetadata=Module._TupleDescGetAttInMetadata=e=>(_TupleDescGetAttInMetadata=Module._TupleDescGetAttInMetadata=wasmExports.TupleDescGetAttInMetadata)(e),_BuildTupleFromCStrings=Module._BuildTupleFromCStrings=(e,t)=>(_BuildTupleFromCStrings=Module._BuildTupleFromCStrings=wasmExports.BuildTupleFromCStrings)(e,t),_tuplestore_puttuple=Module._tuplestore_puttuple=(e,t)=>(_tuplestore_puttuple=Module._tuplestore_puttuple=wasmExports.tuplestore_puttuple)(e,t),_PQresultErrorField=Module._PQresultErrorField=(e,t)=>(_PQresultErrorField=Module._PQresultErrorField=wasmExports.PQresultErrorField)(e,t),_PQsendQuery=Module._PQsendQuery=(e,t)=>(_PQsendQuery=Module._PQsendQuery=wasmExports.PQsendQuery)(e,t),_PQisBusy=Module._PQisBusy=e=>(_PQisBusy=Module._PQisBusy=wasmExports.PQisBusy)(e),_PQgetResult=Module._PQgetResult=e=>(_PQgetResult=Module._PQgetResult=wasmExports.PQgetResult)(e),_ResourceOwnerDelete=Module._ResourceOwnerDelete=e=>(_ResourceOwnerDelete=Module._ResourceOwnerDelete=wasmExports.ResourceOwnerDelete)(e),_CreateDestReceiver=Module._CreateDestReceiver=e=>(_CreateDestReceiver=Module._CreateDestReceiver=wasmExports.CreateDestReceiver)(e),_defGetString=Module._defGetString=e=>(_defGetString=Module._defGetString=wasmExports.defGetString)(e),_pg_md5_encrypt=Module._pg_md5_encrypt=(e,t,r,a,o)=>(_pg_md5_encrypt=Module._pg_md5_encrypt=wasmExports.pg_md5_encrypt)(e,t,r,a,o),_plain_crypt_verify=Module._plain_crypt_verify=(e,t,r,a)=>(_plain_crypt_verify=Module._plain_crypt_verify=wasmExports.plain_crypt_verify)(e,t,r,a),_pg_b64_enc_len=Module._pg_b64_enc_len=e=>(_pg_b64_enc_len=Module._pg_b64_enc_len=wasmExports.pg_b64_enc_len)(e),_pg_b64_encode=Module._pg_b64_encode=(e,t,r,a)=>(_pg_b64_encode=Module._pg_b64_encode=wasmExports.pg_b64_encode)(e,t,r,a),_pg_b64_dec_len=Module._pg_b64_dec_len=e=>(_pg_b64_dec_len=Module._pg_b64_dec_len=wasmExports.pg_b64_dec_len)(e),_pg_b64_decode=Module._pg_b64_decode=(e,t,r,a)=>(_pg_b64_decode=Module._pg_b64_decode=wasmExports.pg_b64_decode)(e,t,r,a),_pg_hmac_create=Module._pg_hmac_create=e=>(_pg_hmac_create=Module._pg_hmac_create=wasmExports.pg_hmac_create)(e),_pg_hmac_init=Module._pg_hmac_init=(e,t,r)=>(_pg_hmac_init=Module._pg_hmac_init=wasmExports.pg_hmac_init)(e,t,r),_pg_hmac_update=Module._pg_hmac_update=(e,t,r)=>(_pg_hmac_update=Module._pg_hmac_update=wasmExports.pg_hmac_update)(e,t,r),_pg_hmac_final=Module._pg_hmac_final=(e,t,r)=>(_pg_hmac_final=Module._pg_hmac_final=wasmExports.pg_hmac_final)(e,t,r),_pg_hmac_error=Module._pg_hmac_error=e=>(_pg_hmac_error=Module._pg_hmac_error=wasmExports.pg_hmac_error)(e),_pg_hmac_free=Module._pg_hmac_free=e=>(_pg_hmac_free=Module._pg_hmac_free=wasmExports.pg_hmac_free)(e),_scram_H=Module._scram_H=(e,t,r,a,o)=>(_scram_H=Module._scram_H=wasmExports.scram_H)(e,t,r,a,o),_pg_saslprep=Module._pg_saslprep=(e,t)=>(_pg_saslprep=Module._pg_saslprep=wasmExports.pg_saslprep)(e,t),_scram_build_secret=Module._scram_build_secret=(e,t,r,a,o,s,l)=>(_scram_build_secret=Module._scram_build_secret=wasmExports.scram_build_secret)(e,t,r,a,o,s,l),_scram_SaltedPassword=Module._scram_SaltedPassword=(e,t,r,a,o,s,l,n)=>(_scram_SaltedPassword=Module._scram_SaltedPassword=wasmExports.scram_SaltedPassword)(e,t,r,a,o,s,l,n),_scram_ServerKey=Module._scram_ServerKey=(e,t,r,a,o)=>(_scram_ServerKey=Module._scram_ServerKey=wasmExports.scram_ServerKey)(e,t,r,a,o),_strtol=Module._strtol=(e,t,r)=>(_strtol=Module._strtol=wasmExports.strtol)(e,t,r),_replace_percent_placeholders=Module._replace_percent_placeholders=(e,t,r,a)=>(_replace_percent_placeholders=Module._replace_percent_placeholders=wasmExports.replace_percent_placeholders)(e,t,r,a),_fgets=Module._fgets=(e,t,r)=>(_fgets=Module._fgets=wasmExports.fgets)(e,t,r),_explicit_bzero=Module._explicit_bzero=(e,t)=>(_explicit_bzero=Module._explicit_bzero=wasmExports.explicit_bzero)(e,t),_wait_result_to_str=Module._wait_result_to_str=e=>(_wait_result_to_str=Module._wait_result_to_str=wasmExports.wait_result_to_str)(e),_pg_strip_crlf=Module._pg_strip_crlf=e=>(_pg_strip_crlf=Module._pg_strip_crlf=wasmExports.pg_strip_crlf)(e),_geteuid=Module._geteuid=()=>(_geteuid=Module._geteuid=wasmExports.geteuid)(),_getpeereid=Module._getpeereid=(e,t,r)=>(_getpeereid=Module._getpeereid=wasmExports.getpeereid)(e,t,r),_pg_getaddrinfo_all=Module._pg_getaddrinfo_all=(e,t,r,a)=>(_pg_getaddrinfo_all=Module._pg_getaddrinfo_all=wasmExports.pg_getaddrinfo_all)(e,t,r,a),_socket=Module._socket=(e,t,r)=>(_socket=Module._socket=wasmExports.socket)(e,t,r),_connect=Module._connect=(e,t,r)=>(_connect=Module._connect=wasmExports.connect)(e,t,r),_recv=Module._recv=(e,t,r,a)=>(_recv=Module._recv=wasmExports.recv)(e,t,r,a),_pg_freeaddrinfo_all=Module._pg_freeaddrinfo_all=(e,t)=>(_pg_freeaddrinfo_all=Module._pg_freeaddrinfo_all=wasmExports.pg_freeaddrinfo_all)(e,t),_pq_sendtext=Module._pq_sendtext=(e,t,r)=>(_pq_sendtext=Module._pq_sendtext=wasmExports.pq_sendtext)(e,t,r),_pq_sendfloat4=Module._pq_sendfloat4=(e,t)=>(_pq_sendfloat4=Module._pq_sendfloat4=wasmExports.pq_sendfloat4)(e,t),_pq_sendfloat8=Module._pq_sendfloat8=(e,t)=>(_pq_sendfloat8=Module._pq_sendfloat8=wasmExports.pq_sendfloat8)(e,t),_pq_begintypsend=Module._pq_begintypsend=e=>(_pq_begintypsend=Module._pq_begintypsend=wasmExports.pq_begintypsend)(e),_pq_endtypsend=Module._pq_endtypsend=e=>(_pq_endtypsend=Module._pq_endtypsend=wasmExports.pq_endtypsend)(e),_pq_getmsgfloat4=Module._pq_getmsgfloat4=e=>(_pq_getmsgfloat4=Module._pq_getmsgfloat4=wasmExports.pq_getmsgfloat4)(e),_pq_getmsgfloat8=Module._pq_getmsgfloat8=e=>(_pq_getmsgfloat8=Module._pq_getmsgfloat8=wasmExports.pq_getmsgfloat8)(e),_pq_getmsgtext=Module._pq_getmsgtext=(e,t,r)=>(_pq_getmsgtext=Module._pq_getmsgtext=wasmExports.pq_getmsgtext)(e,t,r),_feof=Module._feof=e=>(_feof=Module._feof=wasmExports.feof)(e),_pg_mb2wchar_with_len=Module._pg_mb2wchar_with_len=(e,t,r)=>(_pg_mb2wchar_with_len=Module._pg_mb2wchar_with_len=wasmExports.pg_mb2wchar_with_len)(e,t,r),_pg_regcomp=Module._pg_regcomp=(e,t,r,a,o)=>(_pg_regcomp=Module._pg_regcomp=wasmExports.pg_regcomp)(e,t,r,a,o),_pg_regerror=Module._pg_regerror=(e,t,r,a)=>(_pg_regerror=Module._pg_regerror=wasmExports.pg_regerror)(e,t,r,a),_get_role_oid=Module._get_role_oid=(e,t)=>(_get_role_oid=Module._get_role_oid=wasmExports.get_role_oid)(e,t),_strcat=Module._strcat=(e,t)=>(_strcat=Module._strcat=wasmExports.strcat)(e,t),_sigemptyset=Module._sigemptyset=e=>(_sigemptyset=Module._sigemptyset=wasmExports.sigemptyset)(e),_be_lo_unlink=Module._be_lo_unlink=e=>(_be_lo_unlink=Module._be_lo_unlink=wasmExports.be_lo_unlink)(e),_object_ownercheck=Module._object_ownercheck=(e,t,r)=>(_object_ownercheck=Module._object_ownercheck=wasmExports.object_ownercheck)(e,t,r),_text_to_cstring_buffer=Module._text_to_cstring_buffer=(e,t,r)=>(_text_to_cstring_buffer=Module._text_to_cstring_buffer=wasmExports.text_to_cstring_buffer)(e,t,r),_setsockopt=Module._setsockopt=(e,t,r,a,o)=>(_setsockopt=Module._setsockopt=wasmExports.setsockopt)(e,t,r,a,o),_getsockname=Module._getsockname=(e,t,r)=>(_getsockname=Module._getsockname=wasmExports.getsockname)(e,t,r),_pq_recvbuf_fill=Module._pq_recvbuf_fill=(e,t)=>(_pq_recvbuf_fill=Module._pq_recvbuf_fill=wasmExports.pq_recvbuf_fill)(e,t),_getsockopt=Module._getsockopt=(e,t,r,a,o)=>(_getsockopt=Module._getsockopt=wasmExports.getsockopt)(e,t,r,a,o),_getmissingattr=Module._getmissingattr=(e,t,r)=>(_getmissingattr=Module._getmissingattr=wasmExports.getmissingattr)(e,t,r),_get_rel_relkind=Module._get_rel_relkind=e=>(_get_rel_relkind=Module._get_rel_relkind=wasmExports.get_rel_relkind)(e),_MemoryContextSetIdentifier=Module._MemoryContextSetIdentifier=(e,t)=>(_MemoryContextSetIdentifier=Module._MemoryContextSetIdentifier=wasmExports.MemoryContextSetIdentifier)(e,t),_MemoryContextSetParent=Module._MemoryContextSetParent=(e,t)=>(_MemoryContextSetParent=Module._MemoryContextSetParent=wasmExports.MemoryContextSetParent)(e,t),_find_base_rel=Module._find_base_rel=(e,t)=>(_find_base_rel=Module._find_base_rel=wasmExports.find_base_rel)(e,t),_bms_equal=Module._bms_equal=(e,t)=>(_bms_equal=Module._bms_equal=wasmExports.bms_equal)(e,t),_bms_num_members=Module._bms_num_members=e=>(_bms_num_members=Module._bms_num_members=wasmExports.bms_num_members)(e),_fmgr_info_copy=Module._fmgr_info_copy=(e,t,r)=>(_fmgr_info_copy=Module._fmgr_info_copy=wasmExports.fmgr_info_copy)(e,t,r),_fmgr_info_cxt=Module._fmgr_info_cxt=(e,t,r)=>(_fmgr_info_cxt=Module._fmgr_info_cxt=wasmExports.fmgr_info_cxt)(e,t,r),_get_typlenbyvalalign=Module._get_typlenbyvalalign=(e,t,r,a)=>(_get_typlenbyvalalign=Module._get_typlenbyvalalign=wasmExports.get_typlenbyvalalign)(e,t,r,a),_deconstruct_array=Module._deconstruct_array=(e,t,r,a,o,s,l,n)=>(_deconstruct_array=Module._deconstruct_array=wasmExports.deconstruct_array)(e,t,r,a,o,s,l,n),_datumCopy=Module._datumCopy=(e,t,r)=>(_datumCopy=Module._datumCopy=wasmExports.datumCopy)(e,t,r),_qsort_arg=Module._qsort_arg=(e,t,r,a,o)=>(_qsort_arg=Module._qsort_arg=wasmExports.qsort_arg)(e,t,r,a,o),_FunctionCall2Coll=Module._FunctionCall2Coll=(e,t,r,a)=>(_FunctionCall2Coll=Module._FunctionCall2Coll=wasmExports.FunctionCall2Coll)(e,t,r,a),_datumIsEqual=Module._datumIsEqual=(e,t,r,a)=>(_datumIsEqual=Module._datumIsEqual=wasmExports.datumIsEqual)(e,t,r,a),_bms_overlap=Module._bms_overlap=(e,t)=>(_bms_overlap=Module._bms_overlap=wasmExports.bms_overlap)(e,t),_ExecPrepareExpr=Module._ExecPrepareExpr=(e,t)=>(_ExecPrepareExpr=Module._ExecPrepareExpr=wasmExports.ExecPrepareExpr)(e,t),_RegisterSnapshot=Module._RegisterSnapshot=e=>(_RegisterSnapshot=Module._RegisterSnapshot=wasmExports.RegisterSnapshot)(e),_UnregisterSnapshot=Module._UnregisterSnapshot=e=>(_UnregisterSnapshot=Module._UnregisterSnapshot=wasmExports.UnregisterSnapshot)(e),_get_fn_expr_argtype=Module._get_fn_expr_argtype=(e,t)=>(_get_fn_expr_argtype=Module._get_fn_expr_argtype=wasmExports.get_fn_expr_argtype)(e,t),_get_opfamily_member=Module._get_opfamily_member=(e,t,r,a)=>(_get_opfamily_member=Module._get_opfamily_member=wasmExports.get_opfamily_member)(e,t,r,a),_init_MultiFuncCall=Module._init_MultiFuncCall=e=>(_init_MultiFuncCall=Module._init_MultiFuncCall=wasmExports.init_MultiFuncCall)(e),_per_MultiFuncCall=Module._per_MultiFuncCall=e=>(_per_MultiFuncCall=Module._per_MultiFuncCall=wasmExports.per_MultiFuncCall)(e),_end_MultiFuncCall=Module._end_MultiFuncCall=(e,t)=>(_end_MultiFuncCall=Module._end_MultiFuncCall=wasmExports.end_MultiFuncCall)(e,t),_textToQualifiedNameList=Module._textToQualifiedNameList=e=>(_textToQualifiedNameList=Module._textToQualifiedNameList=wasmExports.textToQualifiedNameList)(e),_FunctionCall1Coll=Module._FunctionCall1Coll=(e,t,r)=>(_FunctionCall1Coll=Module._FunctionCall1Coll=wasmExports.FunctionCall1Coll)(e,t,r),_DirectFunctionCall4Coll=Module._DirectFunctionCall4Coll=(e,t,r,a,o,s)=>(_DirectFunctionCall4Coll=Module._DirectFunctionCall4Coll=wasmExports.DirectFunctionCall4Coll)(e,t,r,a,o,s),_pg_mblen=Module._pg_mblen=e=>(_pg_mblen=Module._pg_mblen=wasmExports.pg_mblen)(e),_tsearch_readline_begin=Module._tsearch_readline_begin=(e,t)=>(_tsearch_readline_begin=Module._tsearch_readline_begin=wasmExports.tsearch_readline_begin)(e,t),_tsearch_readline=Module._tsearch_readline=e=>(_tsearch_readline=Module._tsearch_readline=wasmExports.tsearch_readline)(e),_t_isspace=Module._t_isspace=e=>(_t_isspace=Module._t_isspace=wasmExports.t_isspace)(e),_lowerstr=Module._lowerstr=e=>(_lowerstr=Module._lowerstr=wasmExports.lowerstr)(e),_tsearch_readline_end=Module._tsearch_readline_end=e=>(_tsearch_readline_end=Module._tsearch_readline_end=wasmExports.tsearch_readline_end)(e),_t_isdigit=Module._t_isdigit=e=>(_t_isdigit=Module._t_isdigit=wasmExports.t_isdigit)(e),_pnstrdup=Module._pnstrdup=(e,t)=>(_pnstrdup=Module._pnstrdup=wasmExports.pnstrdup)(e,t),_get_tsearch_config_filename=Module._get_tsearch_config_filename=(e,t)=>(_get_tsearch_config_filename=Module._get_tsearch_config_filename=wasmExports.get_tsearch_config_filename)(e,t),_lookup_ts_dictionary_cache=Module._lookup_ts_dictionary_cache=e=>(_lookup_ts_dictionary_cache=Module._lookup_ts_dictionary_cache=wasmExports.lookup_ts_dictionary_cache)(e),_FunctionCall4Coll=Module._FunctionCall4Coll=(e,t,r,a,o,s)=>(_FunctionCall4Coll=Module._FunctionCall4Coll=wasmExports.FunctionCall4Coll)(e,t,r,a,o,s),_t_isalnum=Module._t_isalnum=e=>(_t_isalnum=Module._t_isalnum=wasmExports.t_isalnum)(e),_isalnum=Module._isalnum=e=>(_isalnum=Module._isalnum=wasmExports.isalnum)(e),_pg_any_to_server=Module._pg_any_to_server=(e,t,r)=>(_pg_any_to_server=Module._pg_any_to_server=wasmExports.pg_any_to_server)(e,t,r),_lowerstr_with_len=Module._lowerstr_with_len=(e,t)=>(_lowerstr_with_len=Module._lowerstr_with_len=wasmExports.lowerstr_with_len)(e,t),_tolower=Module._tolower=e=>(_tolower=Module._tolower=wasmExports.tolower)(e),_readstoplist=Module._readstoplist=(e,t,r)=>(_readstoplist=Module._readstoplist=wasmExports.readstoplist)(e,t,r),_searchstoplist=Module._searchstoplist=(e,t)=>(_searchstoplist=Module._searchstoplist=wasmExports.searchstoplist)(e,t),_GetDatabaseEncoding=Module._GetDatabaseEncoding=()=>(_GetDatabaseEncoding=Module._GetDatabaseEncoding=wasmExports.GetDatabaseEncoding)(),_vacuum_delay_point=Module._vacuum_delay_point=()=>(_vacuum_delay_point=Module._vacuum_delay_point=wasmExports.vacuum_delay_point)(),_get_restriction_variable=Module._get_restriction_variable=(e,t,r,a,o,s)=>(_get_restriction_variable=Module._get_restriction_variable=wasmExports.get_restriction_variable)(e,t,r,a,o,s),_get_attstatsslot=Module._get_attstatsslot=(e,t,r,a,o)=>(_get_attstatsslot=Module._get_attstatsslot=wasmExports.get_attstatsslot)(e,t,r,a,o),_free_attstatsslot=Module._free_attstatsslot=e=>(_free_attstatsslot=Module._free_attstatsslot=wasmExports.free_attstatsslot)(e),_Float8GetDatum=Module._Float8GetDatum=e=>(_Float8GetDatum=Module._Float8GetDatum=wasmExports.Float8GetDatum)(e),_ExecReScan=Module._ExecReScan=e=>(_ExecReScan=Module._ExecReScan=wasmExports.ExecReScan)(e),_ExecAsyncResponse=Module._ExecAsyncResponse=e=>(_ExecAsyncResponse=Module._ExecAsyncResponse=wasmExports.ExecAsyncResponse)(e),_ExecAsyncRequestDone=Module._ExecAsyncRequestDone=(e,t)=>(_ExecAsyncRequestDone=Module._ExecAsyncRequestDone=wasmExports.ExecAsyncRequestDone)(e,t),_ExecAsyncRequestPending=Module._ExecAsyncRequestPending=e=>(_ExecAsyncRequestPending=Module._ExecAsyncRequestPending=wasmExports.ExecAsyncRequestPending)(e),_tuplesort_end=Module._tuplesort_end=e=>(_tuplesort_end=Module._tuplesort_end=wasmExports.tuplesort_end)(e),_ExecInitExprList=Module._ExecInitExprList=(e,t)=>(_ExecInitExprList=Module._ExecInitExprList=wasmExports.ExecInitExprList)(e,t),_fmgr_info=Module._fmgr_info=(e,t)=>(_fmgr_info=Module._fmgr_info=wasmExports.fmgr_info)(e,t),_get_typlenbyval=Module._get_typlenbyval=(e,t,r)=>(_get_typlenbyval=Module._get_typlenbyval=wasmExports.get_typlenbyval)(e,t,r),_ExecForceStoreHeapTuple=Module._ExecForceStoreHeapTuple=(e,t,r)=>(_ExecForceStoreHeapTuple=Module._ExecForceStoreHeapTuple=wasmExports.ExecForceStoreHeapTuple)(e,t,r),_tuplesort_performsort=Module._tuplesort_performsort=e=>(_tuplesort_performsort=Module._tuplesort_performsort=wasmExports.tuplesort_performsort)(e),_tuplesort_begin_heap=Module._tuplesort_begin_heap=(e,t,r,a,o,s,l,n,_)=>(_tuplesort_begin_heap=Module._tuplesort_begin_heap=wasmExports.tuplesort_begin_heap)(e,t,r,a,o,s,l,n,_),_MemoryContextMemAllocated=Module._MemoryContextMemAllocated=(e,t)=>(_MemoryContextMemAllocated=Module._MemoryContextMemAllocated=wasmExports.MemoryContextMemAllocated)(e,t),_tuplesort_gettupleslot=Module._tuplesort_gettupleslot=(e,t,r,a,o)=>(_tuplesort_gettupleslot=Module._tuplesort_gettupleslot=wasmExports.tuplesort_gettupleslot)(e,t,r,a,o),_tuplesort_puttupleslot=Module._tuplesort_puttupleslot=(e,t)=>(_tuplesort_puttupleslot=Module._tuplesort_puttupleslot=wasmExports.tuplesort_puttupleslot)(e,t),_ExecStoreAllNullTuple=Module._ExecStoreAllNullTuple=e=>(_ExecStoreAllNullTuple=Module._ExecStoreAllNullTuple=wasmExports.ExecStoreAllNullTuple)(e),_MakeExpandedObjectReadOnlyInternal=Module._MakeExpandedObjectReadOnlyInternal=e=>(_MakeExpandedObjectReadOnlyInternal=Module._MakeExpandedObjectReadOnlyInternal=wasmExports.MakeExpandedObjectReadOnlyInternal)(e),_BlessTupleDesc=Module._BlessTupleDesc=e=>(_BlessTupleDesc=Module._BlessTupleDesc=wasmExports.BlessTupleDesc)(e),_pg_detoast_datum_copy=Module._pg_detoast_datum_copy=e=>(_pg_detoast_datum_copy=Module._pg_detoast_datum_copy=wasmExports.pg_detoast_datum_copy)(e),_construct_md_array=Module._construct_md_array=(e,t,r,a,o,s,l,n,_)=>(_construct_md_array=Module._construct_md_array=wasmExports.construct_md_array)(e,t,r,a,o,s,l,n,_),_ArrayGetNItems=Module._ArrayGetNItems=(e,t)=>(_ArrayGetNItems=Module._ArrayGetNItems=wasmExports.ArrayGetNItems)(e,t),_construct_empty_array=Module._construct_empty_array=e=>(_construct_empty_array=Module._construct_empty_array=wasmExports.construct_empty_array)(e),_DatumGetEOHP=Module._DatumGetEOHP=e=>(_DatumGetEOHP=Module._DatumGetEOHP=wasmExports.DatumGetEOHP)(e),_expanded_record_fetch_tupdesc=Module._expanded_record_fetch_tupdesc=e=>(_expanded_record_fetch_tupdesc=Module._expanded_record_fetch_tupdesc=wasmExports.expanded_record_fetch_tupdesc)(e),_expanded_record_fetch_field=Module._expanded_record_fetch_field=(e,t,r)=>(_expanded_record_fetch_field=Module._expanded_record_fetch_field=wasmExports.expanded_record_fetch_field)(e,t,r),_execute_attr_map_tuple=Module._execute_attr_map_tuple=(e,t)=>(_execute_attr_map_tuple=Module._execute_attr_map_tuple=wasmExports.execute_attr_map_tuple)(e,t),_MemoryContextAllocExtended=Module._MemoryContextAllocExtended=(e,t,r)=>(_MemoryContextAllocExtended=Module._MemoryContextAllocExtended=wasmExports.MemoryContextAllocExtended)(e,t,r),_lookup_rowtype_tupdesc_domain=Module._lookup_rowtype_tupdesc_domain=(e,t,r)=>(_lookup_rowtype_tupdesc_domain=Module._lookup_rowtype_tupdesc_domain=wasmExports.lookup_rowtype_tupdesc_domain)(e,t,r),_MemoryContextGetParent=Module._MemoryContextGetParent=e=>(_MemoryContextGetParent=Module._MemoryContextGetParent=wasmExports.MemoryContextGetParent)(e),_DeleteExpandedObject=Module._DeleteExpandedObject=e=>(_DeleteExpandedObject=Module._DeleteExpandedObject=wasmExports.DeleteExpandedObject)(e),_InstrAlloc=Module._InstrAlloc=(e,t,r)=>(_InstrAlloc=Module._InstrAlloc=wasmExports.InstrAlloc)(e,t,r),_ExprEvalPushStep=Module._ExprEvalPushStep=(e,t)=>(_ExprEvalPushStep=Module._ExprEvalPushStep=wasmExports.ExprEvalPushStep)(e,t),_getTypeOutputInfo=Module._getTypeOutputInfo=(e,t,r)=>(_getTypeOutputInfo=Module._getTypeOutputInfo=wasmExports.getTypeOutputInfo)(e,t,r),_ExecInitExprWithParams=Module._ExecInitExprWithParams=(e,t)=>(_ExecInitExprWithParams=Module._ExecInitExprWithParams=wasmExports.ExecInitExprWithParams)(e,t),_ExecOpenScanRelation=Module._ExecOpenScanRelation=(e,t,r)=>(_ExecOpenScanRelation=Module._ExecOpenScanRelation=wasmExports.ExecOpenScanRelation)(e,t,r),_FreeExprContext=Module._FreeExprContext=(e,t)=>(_FreeExprContext=Module._FreeExprContext=wasmExports.FreeExprContext)(e,t),_CreateExprContext=Module._CreateExprContext=e=>(_CreateExprContext=Module._CreateExprContext=wasmExports.CreateExprContext)(e),_ExecGetReturningSlot=Module._ExecGetReturningSlot=(e,t)=>(_ExecGetReturningSlot=Module._ExecGetReturningSlot=wasmExports.ExecGetReturningSlot)(e,t),_build_attrmap_by_name_if_req=Module._build_attrmap_by_name_if_req=(e,t,r)=>(_build_attrmap_by_name_if_req=Module._build_attrmap_by_name_if_req=wasmExports.build_attrmap_by_name_if_req)(e,t,r),_ExecGetResultRelCheckAsUser=Module._ExecGetResultRelCheckAsUser=(e,t)=>(_ExecGetResultRelCheckAsUser=Module._ExecGetResultRelCheckAsUser=wasmExports.ExecGetResultRelCheckAsUser)(e,t),_InstrEndLoop=Module._InstrEndLoop=e=>(_InstrEndLoop=Module._InstrEndLoop=wasmExports.InstrEndLoop)(e),_ExecStoreHeapTuple=Module._ExecStoreHeapTuple=(e,t,r)=>(_ExecStoreHeapTuple=Module._ExecStoreHeapTuple=wasmExports.ExecStoreHeapTuple)(e,t,r),_get_partition_ancestors=Module._get_partition_ancestors=e=>(_get_partition_ancestors=Module._get_partition_ancestors=wasmExports.get_partition_ancestors)(e),_pull_varattnos=Module._pull_varattnos=(e,t,r)=>(_pull_varattnos=Module._pull_varattnos=wasmExports.pull_varattnos)(e,t,r),_ExecFindJunkAttributeInTlist=Module._ExecFindJunkAttributeInTlist=(e,t)=>(_ExecFindJunkAttributeInTlist=Module._ExecFindJunkAttributeInTlist=wasmExports.ExecFindJunkAttributeInTlist)(e,t),_visibilitymap_get_status=Module._visibilitymap_get_status=(e,t,r)=>(_visibilitymap_get_status=Module._visibilitymap_get_status=wasmExports.visibilitymap_get_status)(e,t,r),_index_deform_tuple=Module._index_deform_tuple=(e,t,r,a)=>(_index_deform_tuple=Module._index_deform_tuple=wasmExports.index_deform_tuple)(e,t,r,a),_LaunchParallelWorkers=Module._LaunchParallelWorkers=e=>(_LaunchParallelWorkers=Module._LaunchParallelWorkers=wasmExports.LaunchParallelWorkers)(e),_standard_ExecutorStart=Module._standard_ExecutorStart=(e,t)=>(_standard_ExecutorStart=Module._standard_ExecutorStart=wasmExports.standard_ExecutorStart)(e,t),_GetCommandTagName=Module._GetCommandTagName=e=>(_GetCommandTagName=Module._GetCommandTagName=wasmExports.GetCommandTagName)(e),_standard_ExecutorRun=Module._standard_ExecutorRun=(e,t,r,a)=>(_standard_ExecutorRun=Module._standard_ExecutorRun=wasmExports.standard_ExecutorRun)(e,t,r,a),_EnterParallelMode=Module._EnterParallelMode=()=>(_EnterParallelMode=Module._EnterParallelMode=wasmExports.EnterParallelMode)(),_ExitParallelMode=Module._ExitParallelMode=()=>(_ExitParallelMode=Module._ExitParallelMode=wasmExports.ExitParallelMode)(),_standard_ExecutorFinish=Module._standard_ExecutorFinish=e=>(_standard_ExecutorFinish=Module._standard_ExecutorFinish=wasmExports.standard_ExecutorFinish)(e),_standard_ExecutorEnd=Module._standard_ExecutorEnd=e=>(_standard_ExecutorEnd=Module._standard_ExecutorEnd=wasmExports.standard_ExecutorEnd)(e),_MakeTupleTableSlot=Module._MakeTupleTableSlot=(e,t)=>(_MakeTupleTableSlot=Module._MakeTupleTableSlot=wasmExports.MakeTupleTableSlot)(e,t),_CreateParallelContext=Module._CreateParallelContext=(e,t,r)=>(_CreateParallelContext=Module._CreateParallelContext=wasmExports.CreateParallelContext)(e,t,r),_InitializeParallelDSM=Module._InitializeParallelDSM=e=>(_InitializeParallelDSM=Module._InitializeParallelDSM=wasmExports.InitializeParallelDSM)(e),_WaitForParallelWorkersToFinish=Module._WaitForParallelWorkersToFinish=e=>(_WaitForParallelWorkersToFinish=Module._WaitForParallelWorkersToFinish=wasmExports.WaitForParallelWorkersToFinish)(e),_DestroyParallelContext=Module._DestroyParallelContext=e=>(_DestroyParallelContext=Module._DestroyParallelContext=wasmExports.DestroyParallelContext)(e),_SPI_connect=Module._SPI_connect=()=>(_SPI_connect=Module._SPI_connect=wasmExports.SPI_connect)(),_SPI_connect_ext=Module._SPI_connect_ext=e=>(_SPI_connect_ext=Module._SPI_connect_ext=wasmExports.SPI_connect_ext)(e),_SPI_finish=Module._SPI_finish=()=>(_SPI_finish=Module._SPI_finish=wasmExports.SPI_finish)(),_SPI_commit=Module._SPI_commit=()=>(_SPI_commit=Module._SPI_commit=wasmExports.SPI_commit)(),_ReThrowError=Module._ReThrowError=e=>(_ReThrowError=Module._ReThrowError=wasmExports.ReThrowError)(e),_SPI_commit_and_chain=Module._SPI_commit_and_chain=()=>(_SPI_commit_and_chain=Module._SPI_commit_and_chain=wasmExports.SPI_commit_and_chain)(),_SPI_rollback=Module._SPI_rollback=()=>(_SPI_rollback=Module._SPI_rollback=wasmExports.SPI_rollback)(),_SPI_rollback_and_chain=Module._SPI_rollback_and_chain=()=>(_SPI_rollback_and_chain=Module._SPI_rollback_and_chain=wasmExports.SPI_rollback_and_chain)(),_SPI_execute=Module._SPI_execute=(e,t,r)=>(_SPI_execute=Module._SPI_execute=wasmExports.SPI_execute)(e,t,r),_EnsurePortalSnapshotExists=Module._EnsurePortalSnapshotExists=()=>(_EnsurePortalSnapshotExists=Module._EnsurePortalSnapshotExists=wasmExports.EnsurePortalSnapshotExists)(),_SPI_freetuptable=Module._SPI_freetuptable=e=>(_SPI_freetuptable=Module._SPI_freetuptable=wasmExports.SPI_freetuptable)(e),_ReleaseCachedPlan=Module._ReleaseCachedPlan=(e,t)=>(_ReleaseCachedPlan=Module._ReleaseCachedPlan=wasmExports.ReleaseCachedPlan)(e,t),_SPI_exec=Module._SPI_exec=(e,t)=>(_SPI_exec=Module._SPI_exec=wasmExports.SPI_exec)(e,t),_SPI_execute_extended=Module._SPI_execute_extended=(e,t)=>(_SPI_execute_extended=Module._SPI_execute_extended=wasmExports.SPI_execute_extended)(e,t),_makeParamList=Module._makeParamList=e=>(_makeParamList=Module._makeParamList=wasmExports.makeParamList)(e),_SPI_execp=Module._SPI_execp=(e,t,r,a)=>(_SPI_execp=Module._SPI_execp=wasmExports.SPI_execp)(e,t,r,a),_SPI_execute_plan_extended=Module._SPI_execute_plan_extended=(e,t)=>(_SPI_execute_plan_extended=Module._SPI_execute_plan_extended=wasmExports.SPI_execute_plan_extended)(e,t),_SPI_execute_plan_with_paramlist=Module._SPI_execute_plan_with_paramlist=(e,t,r,a)=>(_SPI_execute_plan_with_paramlist=Module._SPI_execute_plan_with_paramlist=wasmExports.SPI_execute_plan_with_paramlist)(e,t,r,a),_SPI_prepare=Module._SPI_prepare=(e,t,r)=>(_SPI_prepare=Module._SPI_prepare=wasmExports.SPI_prepare)(e,t,r),_SPI_prepare_extended=Module._SPI_prepare_extended=(e,t)=>(_SPI_prepare_extended=Module._SPI_prepare_extended=wasmExports.SPI_prepare_extended)(e,t),_SPI_keepplan=Module._SPI_keepplan=e=>(_SPI_keepplan=Module._SPI_keepplan=wasmExports.SPI_keepplan)(e),_SPI_freeplan=Module._SPI_freeplan=e=>(_SPI_freeplan=Module._SPI_freeplan=wasmExports.SPI_freeplan)(e),_SPI_copytuple=Module._SPI_copytuple=e=>(_SPI_copytuple=Module._SPI_copytuple=wasmExports.SPI_copytuple)(e),_SPI_returntuple=Module._SPI_returntuple=(e,t)=>(_SPI_returntuple=Module._SPI_returntuple=wasmExports.SPI_returntuple)(e,t),_SPI_fnumber=Module._SPI_fnumber=(e,t)=>(_SPI_fnumber=Module._SPI_fnumber=wasmExports.SPI_fnumber)(e,t),_SPI_fname=Module._SPI_fname=(e,t)=>(_SPI_fname=Module._SPI_fname=wasmExports.SPI_fname)(e,t),_SPI_getvalue=Module._SPI_getvalue=(e,t,r)=>(_SPI_getvalue=Module._SPI_getvalue=wasmExports.SPI_getvalue)(e,t,r),_SPI_getbinval=Module._SPI_getbinval=(e,t,r,a)=>(_SPI_getbinval=Module._SPI_getbinval=wasmExports.SPI_getbinval)(e,t,r,a),_SPI_gettype=Module._SPI_gettype=(e,t)=>(_SPI_gettype=Module._SPI_gettype=wasmExports.SPI_gettype)(e,t),_SPI_gettypeid=Module._SPI_gettypeid=(e,t)=>(_SPI_gettypeid=Module._SPI_gettypeid=wasmExports.SPI_gettypeid)(e,t),_SPI_getrelname=Module._SPI_getrelname=e=>(_SPI_getrelname=Module._SPI_getrelname=wasmExports.SPI_getrelname)(e),_SPI_palloc=Module._SPI_palloc=e=>(_SPI_palloc=Module._SPI_palloc=wasmExports.SPI_palloc)(e),_SPI_datumTransfer=Module._SPI_datumTransfer=(e,t,r)=>(_SPI_datumTransfer=Module._SPI_datumTransfer=wasmExports.SPI_datumTransfer)(e,t,r),_datumTransfer=Module._datumTransfer=(e,t,r)=>(_datumTransfer=Module._datumTransfer=wasmExports.datumTransfer)(e,t,r),_SPI_cursor_open_with_paramlist=Module._SPI_cursor_open_with_paramlist=(e,t,r,a)=>(_SPI_cursor_open_with_paramlist=Module._SPI_cursor_open_with_paramlist=wasmExports.SPI_cursor_open_with_paramlist)(e,t,r,a),_SPI_cursor_parse_open=Module._SPI_cursor_parse_open=(e,t,r)=>(_SPI_cursor_parse_open=Module._SPI_cursor_parse_open=wasmExports.SPI_cursor_parse_open)(e,t,r),_SPI_cursor_find=Module._SPI_cursor_find=e=>(_SPI_cursor_find=Module._SPI_cursor_find=wasmExports.SPI_cursor_find)(e),_SPI_cursor_fetch=Module._SPI_cursor_fetch=(e,t,r)=>(_SPI_cursor_fetch=Module._SPI_cursor_fetch=wasmExports.SPI_cursor_fetch)(e,t,r),_SPI_scroll_cursor_fetch=Module._SPI_scroll_cursor_fetch=(e,t,r)=>(_SPI_scroll_cursor_fetch=Module._SPI_scroll_cursor_fetch=wasmExports.SPI_scroll_cursor_fetch)(e,t,r),_SPI_scroll_cursor_move=Module._SPI_scroll_cursor_move=(e,t,r)=>(_SPI_scroll_cursor_move=Module._SPI_scroll_cursor_move=wasmExports.SPI_scroll_cursor_move)(e,t,r),_SPI_cursor_close=Module._SPI_cursor_close=e=>(_SPI_cursor_close=Module._SPI_cursor_close=wasmExports.SPI_cursor_close)(e),_SPI_result_code_string=Module._SPI_result_code_string=e=>(_SPI_result_code_string=Module._SPI_result_code_string=wasmExports.SPI_result_code_string)(e),_SPI_plan_get_plan_sources=Module._SPI_plan_get_plan_sources=e=>(_SPI_plan_get_plan_sources=Module._SPI_plan_get_plan_sources=wasmExports.SPI_plan_get_plan_sources)(e),_SPI_plan_get_cached_plan=Module._SPI_plan_get_cached_plan=e=>(_SPI_plan_get_cached_plan=Module._SPI_plan_get_cached_plan=wasmExports.SPI_plan_get_cached_plan)(e),_geterrposition=Module._geterrposition=()=>(_geterrposition=Module._geterrposition=wasmExports.geterrposition)(),_internalerrposition=Module._internalerrposition=e=>(_internalerrposition=Module._internalerrposition=wasmExports.internalerrposition)(e),_internalerrquery=Module._internalerrquery=e=>(_internalerrquery=Module._internalerrquery=wasmExports.internalerrquery)(e),_SPI_register_trigger_data=Module._SPI_register_trigger_data=e=>(_SPI_register_trigger_data=Module._SPI_register_trigger_data=wasmExports.SPI_register_trigger_data)(e),_EOH_get_flat_size=Module._EOH_get_flat_size=e=>(_EOH_get_flat_size=Module._EOH_get_flat_size=wasmExports.EOH_get_flat_size)(e),_EOH_flatten_into=Module._EOH_flatten_into=(e,t,r)=>(_EOH_flatten_into=Module._EOH_flatten_into=wasmExports.EOH_flatten_into)(e,t,r),_ExecFetchSlotHeapTuple=Module._ExecFetchSlotHeapTuple=(e,t,r)=>(_ExecFetchSlotHeapTuple=Module._ExecFetchSlotHeapTuple=wasmExports.ExecFetchSlotHeapTuple)(e,t,r),_InputFunctionCall=Module._InputFunctionCall=(e,t,r,a)=>(_InputFunctionCall=Module._InputFunctionCall=wasmExports.InputFunctionCall)(e,t,r,a),_convert_tuples_by_position=Module._convert_tuples_by_position=(e,t,r)=>(_convert_tuples_by_position=Module._convert_tuples_by_position=wasmExports.convert_tuples_by_position)(e,t,r),_SetTuplestoreDestReceiverParams=Module._SetTuplestoreDestReceiverParams=(e,t,r,a,o,s)=>(_SetTuplestoreDestReceiverParams=Module._SetTuplestoreDestReceiverParams=wasmExports.SetTuplestoreDestReceiverParams)(e,t,r,a,o,s),_detoast_external_attr=Module._detoast_external_attr=e=>(_detoast_external_attr=Module._detoast_external_attr=wasmExports.detoast_external_attr)(e),_bms_nonempty_difference=Module._bms_nonempty_difference=(e,t)=>(_bms_nonempty_difference=Module._bms_nonempty_difference=wasmExports.bms_nonempty_difference)(e,t),_table_parallelscan_estimate=Module._table_parallelscan_estimate=(e,t)=>(_table_parallelscan_estimate=Module._table_parallelscan_estimate=wasmExports.table_parallelscan_estimate)(e,t),_table_parallelscan_initialize=Module._table_parallelscan_initialize=(e,t,r)=>(_table_parallelscan_initialize=Module._table_parallelscan_initialize=wasmExports.table_parallelscan_initialize)(e,t,r),_table_beginscan_parallel=Module._table_beginscan_parallel=(e,t)=>(_table_beginscan_parallel=Module._table_beginscan_parallel=wasmExports.table_beginscan_parallel)(e,t),_BufferUsageAccumDiff=Module._BufferUsageAccumDiff=(e,t,r)=>(_BufferUsageAccumDiff=Module._BufferUsageAccumDiff=wasmExports.BufferUsageAccumDiff)(e,t,r),_WalUsageAccumDiff=Module._WalUsageAccumDiff=(e,t,r)=>(_WalUsageAccumDiff=Module._WalUsageAccumDiff=wasmExports.WalUsageAccumDiff)(e,t,r),_InstrUpdateTupleCount=Module._InstrUpdateTupleCount=(e,t)=>(_InstrUpdateTupleCount=Module._InstrUpdateTupleCount=wasmExports.InstrUpdateTupleCount)(e,t),_tuplesort_reset=Module._tuplesort_reset=e=>(_tuplesort_reset=Module._tuplesort_reset=wasmExports.tuplesort_reset)(e),_get_call_expr_argtype=Module._get_call_expr_argtype=(e,t)=>(_get_call_expr_argtype=Module._get_call_expr_argtype=wasmExports.get_call_expr_argtype)(e,t),_get_typtype=Module._get_typtype=e=>(_get_typtype=Module._get_typtype=wasmExports.get_typtype)(e),_pull_var_clause=Module._pull_var_clause=(e,t)=>(_pull_var_clause=Module._pull_var_clause=wasmExports.pull_var_clause)(e,t),_bms_is_subset=Module._bms_is_subset=(e,t)=>(_bms_is_subset=Module._bms_is_subset=wasmExports.bms_is_subset)(e,t),_bms_membership=Module._bms_membership=e=>(_bms_membership=Module._bms_membership=wasmExports.bms_membership)(e),_make_restrictinfo=Module._make_restrictinfo=(e,t,r,a,o,s,l,n,_,m)=>(_make_restrictinfo=Module._make_restrictinfo=wasmExports.make_restrictinfo)(e,t,r,a,o,s,l,n,_,m),_GetSysCacheHashValue=Module._GetSysCacheHashValue=(e,t,r,a,o)=>(_GetSysCacheHashValue=Module._GetSysCacheHashValue=wasmExports.GetSysCacheHashValue)(e,t,r,a,o),_tlist_member=Module._tlist_member=(e,t)=>(_tlist_member=Module._tlist_member=wasmExports.tlist_member)(e,t),_add_path=Module._add_path=(e,t)=>(_add_path=Module._add_path=wasmExports.add_path)(e,t),_contain_mutable_functions=Module._contain_mutable_functions=e=>(_contain_mutable_functions=Module._contain_mutable_functions=wasmExports.contain_mutable_functions)(e),_make_orclause=Module._make_orclause=e=>(_make_orclause=Module._make_orclause=wasmExports.make_orclause)(e),_extract_actual_clauses=Module._extract_actual_clauses=(e,t)=>(_extract_actual_clauses=Module._extract_actual_clauses=wasmExports.extract_actual_clauses)(e,t),_cost_sort=Module._cost_sort=(e,t,r,a,o,s,l,n,_)=>(_cost_sort=Module._cost_sort=wasmExports.cost_sort)(e,t,r,a,o,s,l,n,_),_pathkeys_contained_in=Module._pathkeys_contained_in=(e,t)=>(_pathkeys_contained_in=Module._pathkeys_contained_in=wasmExports.pathkeys_contained_in)(e,t),_change_plan_targetlist=Module._change_plan_targetlist=(e,t,r)=>(_change_plan_targetlist=Module._change_plan_targetlist=wasmExports.change_plan_targetlist)(e,t,r),_make_foreignscan=Module._make_foreignscan=(e,t,r,a,o,s,l,n)=>(_make_foreignscan=Module._make_foreignscan=wasmExports.make_foreignscan)(e,t,r,a,o,s,l,n),_list_member_ptr=Module._list_member_ptr=(e,t)=>(_list_member_ptr=Module._list_member_ptr=wasmExports.list_member_ptr)(e,t),_clamp_row_est=Module._clamp_row_est=e=>(_clamp_row_est=Module._clamp_row_est=wasmExports.clamp_row_est)(e),_standard_planner=Module._standard_planner=(e,t,r,a)=>(_standard_planner=Module._standard_planner=wasmExports.standard_planner)(e,t,r,a),_estimate_expression_value=Module._estimate_expression_value=(e,t)=>(_estimate_expression_value=Module._estimate_expression_value=wasmExports.estimate_expression_value)(e,t),_add_new_columns_to_pathtarget=Module._add_new_columns_to_pathtarget=(e,t)=>(_add_new_columns_to_pathtarget=Module._add_new_columns_to_pathtarget=wasmExports.add_new_columns_to_pathtarget)(e,t),_get_sortgroupref_clause_noerr=Module._get_sortgroupref_clause_noerr=(e,t)=>(_get_sortgroupref_clause_noerr=Module._get_sortgroupref_clause_noerr=wasmExports.get_sortgroupref_clause_noerr)(e,t),_get_agg_clause_costs=Module._get_agg_clause_costs=(e,t,r)=>(_get_agg_clause_costs=Module._get_agg_clause_costs=wasmExports.get_agg_clause_costs)(e,t,r),_grouping_is_sortable=Module._grouping_is_sortable=e=>(_grouping_is_sortable=Module._grouping_is_sortable=wasmExports.grouping_is_sortable)(e),_create_sort_path=Module._create_sort_path=(e,t,r,a,o)=>(_create_sort_path=Module._create_sort_path=wasmExports.create_sort_path)(e,t,r,a,o),_copy_pathtarget=Module._copy_pathtarget=e=>(_copy_pathtarget=Module._copy_pathtarget=wasmExports.copy_pathtarget)(e),_get_sortgrouplist_exprs=Module._get_sortgrouplist_exprs=(e,t)=>(_get_sortgrouplist_exprs=Module._get_sortgrouplist_exprs=wasmExports.get_sortgrouplist_exprs)(e,t),_estimate_num_groups=Module._estimate_num_groups=(e,t,r,a,o)=>(_estimate_num_groups=Module._estimate_num_groups=wasmExports.estimate_num_groups)(e,t,r,a,o),_cost_qual_eval=Module._cost_qual_eval=(e,t,r)=>(_cost_qual_eval=Module._cost_qual_eval=wasmExports.cost_qual_eval)(e,t,r),_plan_create_index_workers=Module._plan_create_index_workers=(e,t)=>(_plan_create_index_workers=Module._plan_create_index_workers=wasmExports.plan_create_index_workers)(e,t),_create_projection_path=Module._create_projection_path=(e,t,r,a)=>(_create_projection_path=Module._create_projection_path=wasmExports.create_projection_path)(e,t,r,a),_get_plan_rowmark=Module._get_plan_rowmark=(e,t)=>(_get_plan_rowmark=Module._get_plan_rowmark=wasmExports.get_plan_rowmark)(e,t),_find_join_rel=Module._find_join_rel=(e,t)=>(_find_join_rel=Module._find_join_rel=wasmExports.find_join_rel)(e,t),_make_canonical_pathkey=Module._make_canonical_pathkey=(e,t,r,a,o)=>(_make_canonical_pathkey=Module._make_canonical_pathkey=wasmExports.make_canonical_pathkey)(e,t,r,a,o),_eclass_useful_for_merging=Module._eclass_useful_for_merging=(e,t,r)=>(_eclass_useful_for_merging=Module._eclass_useful_for_merging=wasmExports.eclass_useful_for_merging)(e,t,r),_update_mergeclause_eclasses=Module._update_mergeclause_eclasses=(e,t)=>(_update_mergeclause_eclasses=Module._update_mergeclause_eclasses=wasmExports.update_mergeclause_eclasses)(e,t),_clauselist_selectivity=Module._clauselist_selectivity=(e,t,r,a,o)=>(_clauselist_selectivity=Module._clauselist_selectivity=wasmExports.clauselist_selectivity)(e,t,r,a,o),_join_clause_is_movable_to=Module._join_clause_is_movable_to=(e,t)=>(_join_clause_is_movable_to=Module._join_clause_is_movable_to=wasmExports.join_clause_is_movable_to)(e,t),_generate_implied_equalities_for_column=Module._generate_implied_equalities_for_column=(e,t,r,a,o)=>(_generate_implied_equalities_for_column=Module._generate_implied_equalities_for_column=wasmExports.generate_implied_equalities_for_column)(e,t,r,a,o),_get_tablespace_page_costs=Module._get_tablespace_page_costs=(e,t,r)=>(_get_tablespace_page_costs=Module._get_tablespace_page_costs=wasmExports.get_tablespace_page_costs)(e,t,r),_set_baserel_size_estimates=Module._set_baserel_size_estimates=(e,t)=>(_set_baserel_size_estimates=Module._set_baserel_size_estimates=wasmExports.set_baserel_size_estimates)(e,t),_add_to_flat_tlist=Module._add_to_flat_tlist=(e,t)=>(_add_to_flat_tlist=Module._add_to_flat_tlist=wasmExports.add_to_flat_tlist)(e,t),_get_baserel_parampathinfo=Module._get_baserel_parampathinfo=(e,t,r)=>(_get_baserel_parampathinfo=Module._get_baserel_parampathinfo=wasmExports.get_baserel_parampathinfo)(e,t,r),_create_foreignscan_path=Module._create_foreignscan_path=(e,t,r,a,o,s,l,n,_,m)=>(_create_foreignscan_path=Module._create_foreignscan_path=wasmExports.create_foreignscan_path)(e,t,r,a,o,s,l,n,_,m),_create_foreign_join_path=Module._create_foreign_join_path=(e,t,r,a,o,s,l,n,_,m)=>(_create_foreign_join_path=Module._create_foreign_join_path=wasmExports.create_foreign_join_path)(e,t,r,a,o,s,l,n,_,m),_create_foreign_upper_path=Module._create_foreign_upper_path=(e,t,r,a,o,s,l,n,_)=>(_create_foreign_upper_path=Module._create_foreign_upper_path=wasmExports.create_foreign_upper_path)(e,t,r,a,o,s,l,n,_),_adjust_limit_rows_costs=Module._adjust_limit_rows_costs=(e,t,r,a,o)=>(_adjust_limit_rows_costs=Module._adjust_limit_rows_costs=wasmExports.adjust_limit_rows_costs)(e,t,r,a,o),_SearchSysCacheAttName=Module._SearchSysCacheAttName=(e,t)=>(_SearchSysCacheAttName=Module._SearchSysCacheAttName=wasmExports.SearchSysCacheAttName)(e,t),_get_translated_update_targetlist=Module._get_translated_update_targetlist=(e,t,r,a)=>(_get_translated_update_targetlist=Module._get_translated_update_targetlist=wasmExports.get_translated_update_targetlist)(e,t,r,a),_add_row_identity_var=Module._add_row_identity_var=(e,t,r,a)=>(_add_row_identity_var=Module._add_row_identity_var=wasmExports.add_row_identity_var)(e,t,r,a),_get_rel_all_updated_cols=Module._get_rel_all_updated_cols=(e,t)=>(_get_rel_all_updated_cols=Module._get_rel_all_updated_cols=wasmExports.get_rel_all_updated_cols)(e,t),_list_append_unique_ptr=Module._list_append_unique_ptr=(e,t)=>(_list_append_unique_ptr=Module._list_append_unique_ptr=wasmExports.list_append_unique_ptr)(e,t),_palloc_extended=Module._palloc_extended=(e,t)=>(_palloc_extended=Module._palloc_extended=wasmExports.palloc_extended)(e,t),_pg_reg_getinitialstate=Module._pg_reg_getinitialstate=e=>(_pg_reg_getinitialstate=Module._pg_reg_getinitialstate=wasmExports.pg_reg_getinitialstate)(e),_pg_reg_getfinalstate=Module._pg_reg_getfinalstate=e=>(_pg_reg_getfinalstate=Module._pg_reg_getfinalstate=wasmExports.pg_reg_getfinalstate)(e),_pg_reg_getnumoutarcs=Module._pg_reg_getnumoutarcs=(e,t)=>(_pg_reg_getnumoutarcs=Module._pg_reg_getnumoutarcs=wasmExports.pg_reg_getnumoutarcs)(e,t),_pg_reg_getoutarcs=Module._pg_reg_getoutarcs=(e,t,r,a)=>(_pg_reg_getoutarcs=Module._pg_reg_getoutarcs=wasmExports.pg_reg_getoutarcs)(e,t,r,a),_pg_reg_getnumcolors=Module._pg_reg_getnumcolors=e=>(_pg_reg_getnumcolors=Module._pg_reg_getnumcolors=wasmExports.pg_reg_getnumcolors)(e),_pg_reg_colorisbegin=Module._pg_reg_colorisbegin=(e,t)=>(_pg_reg_colorisbegin=Module._pg_reg_colorisbegin=wasmExports.pg_reg_colorisbegin)(e,t),_pg_reg_colorisend=Module._pg_reg_colorisend=(e,t)=>(_pg_reg_colorisend=Module._pg_reg_colorisend=wasmExports.pg_reg_colorisend)(e,t),_pg_reg_getnumcharacters=Module._pg_reg_getnumcharacters=(e,t)=>(_pg_reg_getnumcharacters=Module._pg_reg_getnumcharacters=wasmExports.pg_reg_getnumcharacters)(e,t),_pg_reg_getcharacters=Module._pg_reg_getcharacters=(e,t,r,a)=>(_pg_reg_getcharacters=Module._pg_reg_getcharacters=wasmExports.pg_reg_getcharacters)(e,t,r,a),_toupper=Module._toupper=e=>(_toupper=Module._toupper=wasmExports.toupper)(e),_pg_initdb=Module._pg_initdb=()=>(_pg_initdb=Module._pg_initdb=wasmExports.pg_initdb)(),_pg_initdb_main=Module._pg_initdb_main=()=>(_pg_initdb_main=Module._pg_initdb_main=wasmExports.pg_initdb_main)(),___cxa_throw=Module.___cxa_throw=(e,t,r)=>(___cxa_throw=Module.___cxa_throw=wasmExports.__cxa_throw)(e,t,r),_main_repl=Module._main_repl=()=>(_main_repl=Module._main_repl=wasmExports.main_repl)(),_main=Module._main=(e,t)=>(_main=Module._main=wasmExports.__main_argc_argv)(e,t),_setenv=Module._setenv=(e,t,r)=>(_setenv=Module._setenv=wasmExports.setenv)(e,t,r),_pg_repl_raf=Module._pg_repl_raf=()=>(_pg_repl_raf=Module._pg_repl_raf=wasmExports.pg_repl_raf)(),_GetForeignDataWrapper=Module._GetForeignDataWrapper=e=>(_GetForeignDataWrapper=Module._GetForeignDataWrapper=wasmExports.GetForeignDataWrapper)(e),_GetForeignServer=Module._GetForeignServer=e=>(_GetForeignServer=Module._GetForeignServer=wasmExports.GetForeignServer)(e),_GetForeignServerExtended=Module._GetForeignServerExtended=(e,t)=>(_GetForeignServerExtended=Module._GetForeignServerExtended=wasmExports.GetForeignServerExtended)(e,t),_GetForeignServerByName=Module._GetForeignServerByName=(e,t)=>(_GetForeignServerByName=Module._GetForeignServerByName=wasmExports.GetForeignServerByName)(e,t),_GetUserMapping=Module._GetUserMapping=(e,t)=>(_GetUserMapping=Module._GetUserMapping=wasmExports.GetUserMapping)(e,t),_GetForeignTable=Module._GetForeignTable=e=>(_GetForeignTable=Module._GetForeignTable=wasmExports.GetForeignTable)(e),_GetForeignColumnOptions=Module._GetForeignColumnOptions=(e,t)=>(_GetForeignColumnOptions=Module._GetForeignColumnOptions=wasmExports.GetForeignColumnOptions)(e,t),_initClosestMatch=Module._initClosestMatch=(e,t,r)=>(_initClosestMatch=Module._initClosestMatch=wasmExports.initClosestMatch)(e,t,r),_updateClosestMatch=Module._updateClosestMatch=(e,t)=>(_updateClosestMatch=Module._updateClosestMatch=wasmExports.updateClosestMatch)(e,t),_getClosestMatch=Module._getClosestMatch=e=>(_getClosestMatch=Module._getClosestMatch=wasmExports.getClosestMatch)(e),_GetExistingLocalJoinPath=Module._GetExistingLocalJoinPath=e=>(_GetExistingLocalJoinPath=Module._GetExistingLocalJoinPath=wasmExports.GetExistingLocalJoinPath)(e),_BaseBackupAddTarget=Module._BaseBackupAddTarget=(e,t,r)=>(_BaseBackupAddTarget=Module._BaseBackupAddTarget=wasmExports.BaseBackupAddTarget)(e,t,r),_bbsink_forward_begin_backup=Module._bbsink_forward_begin_backup=e=>(_bbsink_forward_begin_backup=Module._bbsink_forward_begin_backup=wasmExports.bbsink_forward_begin_backup)(e),_bbsink_forward_archive_contents=Module._bbsink_forward_archive_contents=(e,t)=>(_bbsink_forward_archive_contents=Module._bbsink_forward_archive_contents=wasmExports.bbsink_forward_archive_contents)(e,t),_bbsink_forward_end_archive=Module._bbsink_forward_end_archive=e=>(_bbsink_forward_end_archive=Module._bbsink_forward_end_archive=wasmExports.bbsink_forward_end_archive)(e),_bbsink_forward_begin_archive=Module._bbsink_forward_begin_archive=(e,t)=>(_bbsink_forward_begin_archive=Module._bbsink_forward_begin_archive=wasmExports.bbsink_forward_begin_archive)(e,t),_bbsink_forward_begin_manifest=Module._bbsink_forward_begin_manifest=e=>(_bbsink_forward_begin_manifest=Module._bbsink_forward_begin_manifest=wasmExports.bbsink_forward_begin_manifest)(e),_bbsink_forward_manifest_contents=Module._bbsink_forward_manifest_contents=(e,t)=>(_bbsink_forward_manifest_contents=Module._bbsink_forward_manifest_contents=wasmExports.bbsink_forward_manifest_contents)(e,t),_bbsink_forward_end_manifest=Module._bbsink_forward_end_manifest=e=>(_bbsink_forward_end_manifest=Module._bbsink_forward_end_manifest=wasmExports.bbsink_forward_end_manifest)(e),_bbsink_forward_end_backup=Module._bbsink_forward_end_backup=(e,t,r)=>(_bbsink_forward_end_backup=Module._bbsink_forward_end_backup=wasmExports.bbsink_forward_end_backup)(e,t,r),_bbsink_forward_cleanup=Module._bbsink_forward_cleanup=e=>(_bbsink_forward_cleanup=Module._bbsink_forward_cleanup=wasmExports.bbsink_forward_cleanup)(e),_ResourceOwnerCreate=Module._ResourceOwnerCreate=(e,t)=>(_ResourceOwnerCreate=Module._ResourceOwnerCreate=wasmExports.ResourceOwnerCreate)(e,t),_escape_json=Module._escape_json=(e,t)=>(_escape_json=Module._escape_json=wasmExports.escape_json)(e,t),_exprIsLengthCoercion=Module._exprIsLengthCoercion=(e,t)=>(_exprIsLengthCoercion=Module._exprIsLengthCoercion=wasmExports.exprIsLengthCoercion)(e,t),_tbm_add_tuples=Module._tbm_add_tuples=(e,t,r,a)=>(_tbm_add_tuples=Module._tbm_add_tuples=wasmExports.tbm_add_tuples)(e,t,r,a),_appendStringInfoStringQuoted=Module._appendStringInfoStringQuoted=(e,t,r)=>(_appendStringInfoStringQuoted=Module._appendStringInfoStringQuoted=wasmExports.appendStringInfoStringQuoted)(e,t,r),_list_make5_impl=Module._list_make5_impl=(e,t,r,a,o,s)=>(_list_make5_impl=Module._list_make5_impl=wasmExports.list_make5_impl)(e,t,r,a,o,s),_list_delete=Module._list_delete=(e,t)=>(_list_delete=Module._list_delete=wasmExports.list_delete)(e,t),_CleanQuerytext=Module._CleanQuerytext=(e,t,r)=>(_CleanQuerytext=Module._CleanQuerytext=wasmExports.CleanQuerytext)(e,t,r),_EnableQueryId=Module._EnableQueryId=()=>(_EnableQueryId=Module._EnableQueryId=wasmExports.EnableQueryId)(),_get_rel_type_id=Module._get_rel_type_id=e=>(_get_rel_type_id=Module._get_rel_type_id=wasmExports.get_rel_type_id)(e),_set_config_option=Module._set_config_option=(e,t,r,a,o,s,l,n)=>(_set_config_option=Module._set_config_option=wasmExports.set_config_option)(e,t,r,a,o,s,l,n),_NewGUCNestLevel=Module._NewGUCNestLevel=()=>(_NewGUCNestLevel=Module._NewGUCNestLevel=wasmExports.NewGUCNestLevel)(),_AtEOXact_GUC=Module._AtEOXact_GUC=(e,t)=>(_AtEOXact_GUC=Module._AtEOXact_GUC=wasmExports.AtEOXact_GUC)(e,t),_parse_int=Module._parse_int=(e,t,r,a)=>(_parse_int=Module._parse_int=wasmExports.parse_int)(e,t,r,a),_strtod=Module._strtod=(e,t)=>(_strtod=Module._strtod=wasmExports.strtod)(e,t),_parse_real=Module._parse_real=(e,t,r,a)=>(_parse_real=Module._parse_real=wasmExports.parse_real)(e,t,r,a),_DefineCustomBoolVariable=Module._DefineCustomBoolVariable=(e,t,r,a,o,s,l,n,_,m)=>(_DefineCustomBoolVariable=Module._DefineCustomBoolVariable=wasmExports.DefineCustomBoolVariable)(e,t,r,a,o,s,l,n,_,m),_DefineCustomIntVariable=Module._DefineCustomIntVariable=(e,t,r,a,o,s,l,n,_,m,p,d)=>(_DefineCustomIntVariable=Module._DefineCustomIntVariable=wasmExports.DefineCustomIntVariable)(e,t,r,a,o,s,l,n,_,m,p,d),_DefineCustomRealVariable=Module._DefineCustomRealVariable=(e,t,r,a,o,s,l,n,_,m,p,d)=>(_DefineCustomRealVariable=Module._DefineCustomRealVariable=wasmExports.DefineCustomRealVariable)(e,t,r,a,o,s,l,n,_,m,p,d),_DefineCustomStringVariable=Module._DefineCustomStringVariable=(e,t,r,a,o,s,l,n,_,m)=>(_DefineCustomStringVariable=Module._DefineCustomStringVariable=wasmExports.DefineCustomStringVariable)(e,t,r,a,o,s,l,n,_,m),_DefineCustomEnumVariable=Module._DefineCustomEnumVariable=(e,t,r,a,o,s,l,n,_,m,p)=>(_DefineCustomEnumVariable=Module._DefineCustomEnumVariable=wasmExports.DefineCustomEnumVariable)(e,t,r,a,o,s,l,n,_,m,p),_MarkGUCPrefixReserved=Module._MarkGUCPrefixReserved=e=>(_MarkGUCPrefixReserved=Module._MarkGUCPrefixReserved=wasmExports.MarkGUCPrefixReserved)(e),_strcspn=Module._strcspn=(e,t)=>(_strcspn=Module._strcspn=wasmExports.strcspn)(e,t),_BlockSampler_Init=Module._BlockSampler_Init=(e,t,r,a)=>(_BlockSampler_Init=Module._BlockSampler_Init=wasmExports.BlockSampler_Init)(e,t,r,a),_sampler_random_init_state=Module._sampler_random_init_state=(e,t)=>(_sampler_random_init_state=Module._sampler_random_init_state=wasmExports.sampler_random_init_state)(e,t),_BlockSampler_HasMore=Module._BlockSampler_HasMore=e=>(_BlockSampler_HasMore=Module._BlockSampler_HasMore=wasmExports.BlockSampler_HasMore)(e),_BlockSampler_Next=Module._BlockSampler_Next=e=>(_BlockSampler_Next=Module._BlockSampler_Next=wasmExports.BlockSampler_Next)(e),_sampler_random_fract=Module._sampler_random_fract=e=>(_sampler_random_fract=Module._sampler_random_fract=wasmExports.sampler_random_fract)(e),_reservoir_init_selection_state=Module._reservoir_init_selection_state=(e,t)=>(_reservoir_init_selection_state=Module._reservoir_init_selection_state=wasmExports.reservoir_init_selection_state)(e,t),_reservoir_get_next_S=Module._reservoir_get_next_S=(e,t,r)=>(_reservoir_get_next_S=Module._reservoir_get_next_S=wasmExports.reservoir_get_next_S)(e,t,r),_canonicalize_path=Module._canonicalize_path=e=>(_canonicalize_path=Module._canonicalize_path=wasmExports.canonicalize_path)(e),__bt_mkscankey=Module.__bt_mkscankey=(e,t)=>(__bt_mkscankey=Module.__bt_mkscankey=wasmExports._bt_mkscankey)(e,t),_nocache_index_getattr=Module._nocache_index_getattr=(e,t,r)=>(_nocache_index_getattr=Module._nocache_index_getattr=wasmExports.nocache_index_getattr)(e,t,r),_tuplesort_estimate_shared=Module._tuplesort_estimate_shared=e=>(_tuplesort_estimate_shared=Module._tuplesort_estimate_shared=wasmExports.tuplesort_estimate_shared)(e),_tuplesort_initialize_shared=Module._tuplesort_initialize_shared=(e,t,r)=>(_tuplesort_initialize_shared=Module._tuplesort_initialize_shared=wasmExports.tuplesort_initialize_shared)(e,t,r),_tuplesort_attach_shared=Module._tuplesort_attach_shared=(e,t)=>(_tuplesort_attach_shared=Module._tuplesort_attach_shared=wasmExports.tuplesort_attach_shared)(e,t),_GetCurrentTransactionNestLevel=Module._GetCurrentTransactionNestLevel=()=>(_GetCurrentTransactionNestLevel=Module._GetCurrentTransactionNestLevel=wasmExports.GetCurrentTransactionNestLevel)(),_in_error_recursion_trouble=Module._in_error_recursion_trouble=()=>(_in_error_recursion_trouble=Module._in_error_recursion_trouble=wasmExports.in_error_recursion_trouble)(),_strrchr=Module._strrchr=(e,t)=>(_strrchr=Module._strrchr=wasmExports.strrchr)(e,t),_errhidestmt=Module._errhidestmt=e=>(_errhidestmt=Module._errhidestmt=wasmExports.errhidestmt)(e),_err_generic_string=Module._err_generic_string=(e,t)=>(_err_generic_string=Module._err_generic_string=wasmExports.err_generic_string)(e,t),_getinternalerrposition=Module._getinternalerrposition=()=>(_getinternalerrposition=Module._getinternalerrposition=wasmExports.getinternalerrposition)(),_GetErrorContextStack=Module._GetErrorContextStack=()=>(_GetErrorContextStack=Module._GetErrorContextStack=wasmExports.GetErrorContextStack)(),_SplitIdentifierString=Module._SplitIdentifierString=(e,t,r)=>(_SplitIdentifierString=Module._SplitIdentifierString=wasmExports.SplitIdentifierString)(e,t,r),_appendStringInfoSpaces=Module._appendStringInfoSpaces=(e,t)=>(_appendStringInfoSpaces=Module._appendStringInfoSpaces=wasmExports.appendStringInfoSpaces)(e,t),_unpack_sql_state=Module._unpack_sql_state=e=>(_unpack_sql_state=Module._unpack_sql_state=wasmExports.unpack_sql_state)(e),_CreateTupleDescCopyConstr=Module._CreateTupleDescCopyConstr=e=>(_CreateTupleDescCopyConstr=Module._CreateTupleDescCopyConstr=wasmExports.CreateTupleDescCopyConstr)(e),_CachedPlanAllowsSimpleValidityCheck=Module._CachedPlanAllowsSimpleValidityCheck=(e,t,r)=>(_CachedPlanAllowsSimpleValidityCheck=Module._CachedPlanAllowsSimpleValidityCheck=wasmExports.CachedPlanAllowsSimpleValidityCheck)(e,t,r),_CachedPlanIsSimplyValid=Module._CachedPlanIsSimplyValid=(e,t,r)=>(_CachedPlanIsSimplyValid=Module._CachedPlanIsSimplyValid=wasmExports.CachedPlanIsSimplyValid)(e,t,r),_GetCachedExpression=Module._GetCachedExpression=e=>(_GetCachedExpression=Module._GetCachedExpression=wasmExports.GetCachedExpression)(e),_FreeCachedExpression=Module._FreeCachedExpression=e=>(_FreeCachedExpression=Module._FreeCachedExpression=wasmExports.FreeCachedExpression)(e),_MemoryContextDeleteChildren=Module._MemoryContextDeleteChildren=e=>(_MemoryContextDeleteChildren=Module._MemoryContextDeleteChildren=wasmExports.MemoryContextDeleteChildren)(e),_is_publishable_relation=Module._is_publishable_relation=e=>(_is_publishable_relation=Module._is_publishable_relation=wasmExports.is_publishable_relation)(e),_GetRelationPublications=Module._GetRelationPublications=e=>(_GetRelationPublications=Module._GetRelationPublications=wasmExports.GetRelationPublications)(e),_GetSchemaPublications=Module._GetSchemaPublications=e=>(_GetSchemaPublications=Module._GetSchemaPublications=wasmExports.GetSchemaPublications)(e),_index_getprocid=Module._index_getprocid=(e,t,r)=>(_index_getprocid=Module._index_getprocid=wasmExports.index_getprocid)(e,t,r),_get_rel_relispartition=Module._get_rel_relispartition=e=>(_get_rel_relispartition=Module._get_rel_relispartition=wasmExports.get_rel_relispartition)(e),_get_func_namespace=Module._get_func_namespace=e=>(_get_func_namespace=Module._get_func_namespace=wasmExports.get_func_namespace)(e),_get_typsubscript=Module._get_typsubscript=(e,t)=>(_get_typsubscript=Module._get_typsubscript=wasmExports.get_typsubscript)(e,t),_get_namespace_name_or_temp=Module._get_namespace_name_or_temp=e=>(_get_namespace_name_or_temp=Module._get_namespace_name_or_temp=wasmExports.get_namespace_name_or_temp)(e),_texteq=Module._texteq=e=>(_texteq=Module._texteq=wasmExports.texteq)(e),_GetUserIdAndSecContext=Module._GetUserIdAndSecContext=(e,t)=>(_GetUserIdAndSecContext=Module._GetUserIdAndSecContext=wasmExports.GetUserIdAndSecContext)(e,t),_SetUserIdAndSecContext=Module._SetUserIdAndSecContext=(e,t)=>(_SetUserIdAndSecContext=Module._SetUserIdAndSecContext=wasmExports.SetUserIdAndSecContext)(e,t),_DirectFunctionCall5Coll=Module._DirectFunctionCall5Coll=(e,t,r,a,o,s,l)=>(_DirectFunctionCall5Coll=Module._DirectFunctionCall5Coll=wasmExports.DirectFunctionCall5Coll)(e,t,r,a,o,s,l),_CallerFInfoFunctionCall2=Module._CallerFInfoFunctionCall2=(e,t,r,a,o)=>(_CallerFInfoFunctionCall2=Module._CallerFInfoFunctionCall2=wasmExports.CallerFInfoFunctionCall2)(e,t,r,a,o),_FunctionCall0Coll=Module._FunctionCall0Coll=(e,t)=>(_FunctionCall0Coll=Module._FunctionCall0Coll=wasmExports.FunctionCall0Coll)(e,t),_OutputFunctionCall=Module._OutputFunctionCall=(e,t)=>(_OutputFunctionCall=Module._OutputFunctionCall=wasmExports.OutputFunctionCall)(e,t),_get_fn_expr_rettype=Module._get_fn_expr_rettype=e=>(_get_fn_expr_rettype=Module._get_fn_expr_rettype=wasmExports.get_fn_expr_rettype)(e),_has_fn_opclass_options=Module._has_fn_opclass_options=e=>(_has_fn_opclass_options=Module._has_fn_opclass_options=wasmExports.has_fn_opclass_options)(e),_get_fn_opclass_options=Module._get_fn_opclass_options=e=>(_get_fn_opclass_options=Module._get_fn_opclass_options=wasmExports.get_fn_opclass_options)(e),_CheckFunctionValidatorAccess=Module._CheckFunctionValidatorAccess=(e,t)=>(_CheckFunctionValidatorAccess=Module._CheckFunctionValidatorAccess=wasmExports.CheckFunctionValidatorAccess)(e,t),_resolve_polymorphic_argtypes=Module._resolve_polymorphic_argtypes=(e,t,r,a)=>(_resolve_polymorphic_argtypes=Module._resolve_polymorphic_argtypes=wasmExports.resolve_polymorphic_argtypes)(e,t,r,a),_get_func_arg_info=Module._get_func_arg_info=(e,t,r,a)=>(_get_func_arg_info=Module._get_func_arg_info=wasmExports.get_func_arg_info)(e,t,r,a),_dlsym=Module._dlsym=(e,t)=>(_dlsym=Module._dlsym=wasmExports.dlsym)(e,t),_dlopen=Module._dlopen=(e,t)=>(_dlopen=Module._dlopen=wasmExports.dlopen)(e,t),_dlerror=Module._dlerror=()=>(_dlerror=Module._dlerror=wasmExports.dlerror)(),_dlclose=Module._dlclose=e=>(_dlclose=Module._dlclose=wasmExports.dlclose)(e),_find_rendezvous_variable=Module._find_rendezvous_variable=e=>(_find_rendezvous_variable=Module._find_rendezvous_variable=wasmExports.find_rendezvous_variable)(e),_fscanf=Module._fscanf=(e,t,r)=>(_fscanf=Module._fscanf=wasmExports.fscanf)(e,t,r),_strlcat=Module._strlcat=(e,t,r)=>(_strlcat=Module._strlcat=wasmExports.strlcat)(e,t,r),_pg_bindtextdomain=Module._pg_bindtextdomain=e=>(_pg_bindtextdomain=Module._pg_bindtextdomain=wasmExports.pg_bindtextdomain)(e),_pg_do_encoding_conversion=Module._pg_do_encoding_conversion=(e,t,r,a)=>(_pg_do_encoding_conversion=Module._pg_do_encoding_conversion=wasmExports.pg_do_encoding_conversion)(e,t,r,a),_report_invalid_encoding=Module._report_invalid_encoding=(e,t,r)=>(_report_invalid_encoding=Module._report_invalid_encoding=wasmExports.report_invalid_encoding)(e,t,r),_pg_encoding_to_char_private=Module._pg_encoding_to_char_private=e=>(_pg_encoding_to_char_private=Module._pg_encoding_to_char_private=wasmExports.pg_encoding_to_char_private)(e),_MemoryContextAllocHuge=Module._MemoryContextAllocHuge=(e,t)=>(_MemoryContextAllocHuge=Module._MemoryContextAllocHuge=wasmExports.MemoryContextAllocHuge)(e,t),_namein=Module._namein=e=>(_namein=Module._namein=wasmExports.namein)(e),_pg_char_to_encoding_private=Module._pg_char_to_encoding_private=e=>(_pg_char_to_encoding_private=Module._pg_char_to_encoding_private=wasmExports.pg_char_to_encoding_private)(e),_pg_encoding_max_length=Module._pg_encoding_max_length=e=>(_pg_encoding_max_length=Module._pg_encoding_max_length=wasmExports.pg_encoding_max_length)(e),_pg_server_to_any=Module._pg_server_to_any=(e,t,r)=>(_pg_server_to_any=Module._pg_server_to_any=wasmExports.pg_server_to_any)(e,t,r),_pg_utf_mblen=Module._pg_utf_mblen=e=>(_pg_utf_mblen=Module._pg_utf_mblen=wasmExports.pg_utf_mblen)(e),_pg_wchar2mb_with_len=Module._pg_wchar2mb_with_len=(e,t,r)=>(_pg_wchar2mb_with_len=Module._pg_wchar2mb_with_len=wasmExports.pg_wchar2mb_with_len)(e,t,r),_pg_encoding_mblen=Module._pg_encoding_mblen=(e,t)=>(_pg_encoding_mblen=Module._pg_encoding_mblen=wasmExports.pg_encoding_mblen)(e,t),_check_encoding_conversion_args=Module._check_encoding_conversion_args=(e,t,r,a,o)=>(_check_encoding_conversion_args=Module._check_encoding_conversion_args=wasmExports.check_encoding_conversion_args)(e,t,r,a,o),_report_untranslatable_char=Module._report_untranslatable_char=(e,t,r,a)=>(_report_untranslatable_char=Module._report_untranslatable_char=wasmExports.report_untranslatable_char)(e,t,r,a),_local2local=Module._local2local=(e,t,r,a,o,s,l)=>(_local2local=Module._local2local=wasmExports.local2local)(e,t,r,a,o,s,l),_latin2mic=Module._latin2mic=(e,t,r,a,o,s)=>(_latin2mic=Module._latin2mic=wasmExports.latin2mic)(e,t,r,a,o,s),_mic2latin=Module._mic2latin=(e,t,r,a,o,s)=>(_mic2latin=Module._mic2latin=wasmExports.mic2latin)(e,t,r,a,o,s),_latin2mic_with_table=Module._latin2mic_with_table=(e,t,r,a,o,s,l)=>(_latin2mic_with_table=Module._latin2mic_with_table=wasmExports.latin2mic_with_table)(e,t,r,a,o,s,l),_mic2latin_with_table=Module._mic2latin_with_table=(e,t,r,a,o,s,l)=>(_mic2latin_with_table=Module._mic2latin_with_table=wasmExports.mic2latin_with_table)(e,t,r,a,o,s,l),_pg_encoding_verifymbchar=Module._pg_encoding_verifymbchar=(e,t,r)=>(_pg_encoding_verifymbchar=Module._pg_encoding_verifymbchar=wasmExports.pg_encoding_verifymbchar)(e,t,r),_float_overflow_error=Module._float_overflow_error=()=>(_float_overflow_error=Module._float_overflow_error=wasmExports.float_overflow_error)(),_float_underflow_error=Module._float_underflow_error=()=>(_float_underflow_error=Module._float_underflow_error=wasmExports.float_underflow_error)(),_float4in_internal=Module._float4in_internal=(e,t,r,a,o)=>(_float4in_internal=Module._float4in_internal=wasmExports.float4in_internal)(e,t,r,a,o),_strtof=Module._strtof=(e,t)=>(_strtof=Module._strtof=wasmExports.strtof)(e,t),_float_to_shortest_decimal_buf=Module._float_to_shortest_decimal_buf=(e,t)=>(_float_to_shortest_decimal_buf=Module._float_to_shortest_decimal_buf=wasmExports.float_to_shortest_decimal_buf)(e,t),_float8in_internal=Module._float8in_internal=(e,t,r,a,o)=>(_float8in_internal=Module._float8in_internal=wasmExports.float8in_internal)(e,t,r,a,o),_float8out_internal=Module._float8out_internal=e=>(_float8out_internal=Module._float8out_internal=wasmExports.float8out_internal)(e),_btfloat4cmp=Module._btfloat4cmp=e=>(_btfloat4cmp=Module._btfloat4cmp=wasmExports.btfloat4cmp)(e),_btfloat8cmp=Module._btfloat8cmp=e=>(_btfloat8cmp=Module._btfloat8cmp=wasmExports.btfloat8cmp)(e),_pow=Module._pow=(e,t)=>(_pow=Module._pow=wasmExports.pow)(e,t),_log10=Module._log10=e=>(_log10=Module._log10=wasmExports.log10)(e),_acos=Module._acos=e=>(_acos=Module._acos=wasmExports.acos)(e),_asin=Module._asin=e=>(_asin=Module._asin=wasmExports.asin)(e),_cos=Module._cos=e=>(_cos=Module._cos=wasmExports.cos)(e),_sin=Module._sin=e=>(_sin=Module._sin=wasmExports.sin)(e),_fmod=Module._fmod=(e,t)=>(_fmod=Module._fmod=wasmExports.fmod)(e,t),_construct_array=Module._construct_array=(e,t,r,a,o,s)=>(_construct_array=Module._construct_array=wasmExports.construct_array)(e,t,r,a,o,s),_try_relation_open=Module._try_relation_open=(e,t)=>(_try_relation_open=Module._try_relation_open=wasmExports.try_relation_open)(e,t),_forkname_to_number=Module._forkname_to_number=e=>(_forkname_to_number=Module._forkname_to_number=wasmExports.forkname_to_number)(e),_numeric_lt=Module._numeric_lt=e=>(_numeric_lt=Module._numeric_lt=wasmExports.numeric_lt)(e),_int64_to_numeric=Module._int64_to_numeric=e=>(_int64_to_numeric=Module._int64_to_numeric=wasmExports.int64_to_numeric)(e),_numeric_sub=Module._numeric_sub=e=>(_numeric_sub=Module._numeric_sub=wasmExports.numeric_sub)(e),_numeric_ge=Module._numeric_ge=e=>(_numeric_ge=Module._numeric_ge=wasmExports.numeric_ge)(e),_inet_in=Module._inet_in=e=>(_inet_in=Module._inet_in=wasmExports.inet_in)(e),_format_operator=Module._format_operator=e=>(_format_operator=Module._format_operator=wasmExports.format_operator)(e),_RelationIsVisible=Module._RelationIsVisible=e=>(_RelationIsVisible=Module._RelationIsVisible=wasmExports.RelationIsVisible)(e),_pg_get_indexdef_columns_extended=Module._pg_get_indexdef_columns_extended=(e,t)=>(_pg_get_indexdef_columns_extended=Module._pg_get_indexdef_columns_extended=wasmExports.pg_get_indexdef_columns_extended)(e,t),_accumArrayResult=Module._accumArrayResult=(e,t,r,a,o)=>(_accumArrayResult=Module._accumArrayResult=wasmExports.accumArrayResult)(e,t,r,a,o),_makeArrayResult=Module._makeArrayResult=(e,t)=>(_makeArrayResult=Module._makeArrayResult=wasmExports.makeArrayResult)(e,t),_init_local_reloptions=Module._init_local_reloptions=(e,t)=>(_init_local_reloptions=Module._init_local_reloptions=wasmExports.init_local_reloptions)(e,t),_add_local_int_reloption=Module._add_local_int_reloption=(e,t,r,a,o,s,l)=>(_add_local_int_reloption=Module._add_local_int_reloption=wasmExports.add_local_int_reloption)(e,t,r,a,o,s,l),_pg_inet_net_ntop=Module._pg_inet_net_ntop=(e,t,r,a,o)=>(_pg_inet_net_ntop=Module._pg_inet_net_ntop=wasmExports.pg_inet_net_ntop)(e,t,r,a,o),_network_cmp=Module._network_cmp=e=>(_network_cmp=Module._network_cmp=wasmExports.network_cmp)(e),_convert_network_to_scalar=Module._convert_network_to_scalar=(e,t,r)=>(_convert_network_to_scalar=Module._convert_network_to_scalar=wasmExports.convert_network_to_scalar)(e,t,r),_JsonbValueToJsonb=Module._JsonbValueToJsonb=e=>(_JsonbValueToJsonb=Module._JsonbValueToJsonb=wasmExports.JsonbValueToJsonb)(e),_pushJsonbValue=Module._pushJsonbValue=(e,t,r)=>(_pushJsonbValue=Module._pushJsonbValue=wasmExports.pushJsonbValue)(e,t,r),_numeric_cmp=Module._numeric_cmp=e=>(_numeric_cmp=Module._numeric_cmp=wasmExports.numeric_cmp)(e),_timetz_cmp=Module._timetz_cmp=e=>(_timetz_cmp=Module._timetz_cmp=wasmExports.timetz_cmp)(e),_date_cmp=Module._date_cmp=e=>(_date_cmp=Module._date_cmp=wasmExports.date_cmp)(e),_time_cmp=Module._time_cmp=e=>(_time_cmp=Module._time_cmp=wasmExports.time_cmp)(e),_timestamp_cmp=Module._timestamp_cmp=e=>(_timestamp_cmp=Module._timestamp_cmp=wasmExports.timestamp_cmp)(e),_domain_check=Module._domain_check=(e,t,r,a,o)=>(_domain_check=Module._domain_check=wasmExports.domain_check)(e,t,r,a,o),_initArrayResult=Module._initArrayResult=(e,t,r)=>(_initArrayResult=Module._initArrayResult=wasmExports.initArrayResult)(e,t,r),_path_is_prefix_of_path=Module._path_is_prefix_of_path=(e,t)=>(_path_is_prefix_of_path=Module._path_is_prefix_of_path=wasmExports.path_is_prefix_of_path)(e,t),_path_is_relative_and_below_cwd=Module._path_is_relative_and_below_cwd=e=>(_path_is_relative_and_below_cwd=Module._path_is_relative_and_below_cwd=wasmExports.path_is_relative_and_below_cwd)(e),_ArrayGetIntegerTypmods=Module._ArrayGetIntegerTypmods=(e,t)=>(_ArrayGetIntegerTypmods=Module._ArrayGetIntegerTypmods=wasmExports.ArrayGetIntegerTypmods)(e,t),_bpchareq=Module._bpchareq=e=>(_bpchareq=Module._bpchareq=wasmExports.bpchareq)(e),_varstr_cmp=Module._varstr_cmp=(e,t,r,a,o)=>(_varstr_cmp=Module._varstr_cmp=wasmExports.varstr_cmp)(e,t,r,a,o),_bpcharlt=Module._bpcharlt=e=>(_bpcharlt=Module._bpcharlt=wasmExports.bpcharlt)(e),_bpcharle=Module._bpcharle=e=>(_bpcharle=Module._bpcharle=wasmExports.bpcharle)(e),_bpchargt=Module._bpchargt=e=>(_bpchargt=Module._bpchargt=wasmExports.bpchargt)(e),_bpcharge=Module._bpcharge=e=>(_bpcharge=Module._bpcharge=wasmExports.bpcharge)(e),_bpcharcmp=Module._bpcharcmp=e=>(_bpcharcmp=Module._bpcharcmp=wasmExports.bpcharcmp)(e),_current_query=Module._current_query=e=>(_current_query=Module._current_query=wasmExports.current_query)(e),_str_tolower=Module._str_tolower=(e,t,r)=>(_str_tolower=Module._str_tolower=wasmExports.str_tolower)(e,t,r),_TransferExpandedObject=Module._TransferExpandedObject=(e,t)=>(_TransferExpandedObject=Module._TransferExpandedObject=wasmExports.TransferExpandedObject)(e,t),_macaddr_cmp=Module._macaddr_cmp=e=>(_macaddr_cmp=Module._macaddr_cmp=wasmExports.macaddr_cmp)(e),_macaddr_lt=Module._macaddr_lt=e=>(_macaddr_lt=Module._macaddr_lt=wasmExports.macaddr_lt)(e),_macaddr_le=Module._macaddr_le=e=>(_macaddr_le=Module._macaddr_le=wasmExports.macaddr_le)(e),_macaddr_eq=Module._macaddr_eq=e=>(_macaddr_eq=Module._macaddr_eq=wasmExports.macaddr_eq)(e),_macaddr_ge=Module._macaddr_ge=e=>(_macaddr_ge=Module._macaddr_ge=wasmExports.macaddr_ge)(e),_macaddr_gt=Module._macaddr_gt=e=>(_macaddr_gt=Module._macaddr_gt=wasmExports.macaddr_gt)(e),_quote_ident=Module._quote_ident=e=>(_quote_ident=Module._quote_ident=wasmExports.quote_ident)(e),_timestamp_in=Module._timestamp_in=e=>(_timestamp_in=Module._timestamp_in=wasmExports.timestamp_in)(e),_ParseDateTime=Module._ParseDateTime=(e,t,r,a,o,s,l)=>(_ParseDateTime=Module._ParseDateTime=wasmExports.ParseDateTime)(e,t,r,a,o,s,l),_DecodeDateTime=Module._DecodeDateTime=(e,t,r,a,o,s,l,n)=>(_DecodeDateTime=Module._DecodeDateTime=wasmExports.DecodeDateTime)(e,t,r,a,o,s,l,n),___multi3=Module.___multi3=(e,t,r,a,o)=>(___multi3=Module.___multi3=wasmExports.__multi3)(e,t,r,a,o),_timestamptz_in=Module._timestamptz_in=e=>(_timestamptz_in=Module._timestamptz_in=wasmExports.timestamptz_in)(e),_timestamp_eq=Module._timestamp_eq=e=>(_timestamp_eq=Module._timestamp_eq=wasmExports.timestamp_eq)(e),_timestamp_lt=Module._timestamp_lt=e=>(_timestamp_lt=Module._timestamp_lt=wasmExports.timestamp_lt)(e),_timestamp_gt=Module._timestamp_gt=e=>(_timestamp_gt=Module._timestamp_gt=wasmExports.timestamp_gt)(e),_timestamp_le=Module._timestamp_le=e=>(_timestamp_le=Module._timestamp_le=wasmExports.timestamp_le)(e),_timestamp_ge=Module._timestamp_ge=e=>(_timestamp_ge=Module._timestamp_ge=wasmExports.timestamp_ge)(e),_interval_eq=Module._interval_eq=e=>(_interval_eq=Module._interval_eq=wasmExports.interval_eq)(e),_interval_lt=Module._interval_lt=e=>(_interval_lt=Module._interval_lt=wasmExports.interval_lt)(e),_interval_gt=Module._interval_gt=e=>(_interval_gt=Module._interval_gt=wasmExports.interval_gt)(e),_interval_le=Module._interval_le=e=>(_interval_le=Module._interval_le=wasmExports.interval_le)(e),_interval_ge=Module._interval_ge=e=>(_interval_ge=Module._interval_ge=wasmExports.interval_ge)(e),_interval_cmp=Module._interval_cmp=e=>(_interval_cmp=Module._interval_cmp=wasmExports.interval_cmp)(e),_timestamp_mi=Module._timestamp_mi=e=>(_timestamp_mi=Module._timestamp_mi=wasmExports.timestamp_mi)(e),_interval_um=Module._interval_um=e=>(_interval_um=Module._interval_um=wasmExports.interval_um)(e),_interval_mi=Module._interval_mi=e=>(_interval_mi=Module._interval_mi=wasmExports.interval_mi)(e),_IsValidJsonNumber=Module._IsValidJsonNumber=(e,t)=>(_IsValidJsonNumber=Module._IsValidJsonNumber=wasmExports.IsValidJsonNumber)(e,t),_btnamecmp=Module._btnamecmp=e=>(_btnamecmp=Module._btnamecmp=wasmExports.btnamecmp)(e),_strncpy=Module._strncpy=(e,t,r)=>(_strncpy=Module._strncpy=wasmExports.strncpy)(e,t,r),_expand_array=Module._expand_array=(e,t,r)=>(_expand_array=Module._expand_array=wasmExports.expand_array)(e,t,r),_pg_get_encoding_from_locale=Module._pg_get_encoding_from_locale=(e,t)=>(_pg_get_encoding_from_locale=Module._pg_get_encoding_from_locale=wasmExports.pg_get_encoding_from_locale)(e,t),_localtime=Module._localtime=e=>(_localtime=Module._localtime=wasmExports.localtime)(e),_strftime=Module._strftime=(e,t,r,a)=>(_strftime=Module._strftime=wasmExports.strftime)(e,t,r,a),_numeric_is_nan=Module._numeric_is_nan=e=>(_numeric_is_nan=Module._numeric_is_nan=wasmExports.numeric_is_nan)(e),_numeric_eq=Module._numeric_eq=e=>(_numeric_eq=Module._numeric_eq=wasmExports.numeric_eq)(e),_numeric_gt=Module._numeric_gt=e=>(_numeric_gt=Module._numeric_gt=wasmExports.numeric_gt)(e),_numeric_le=Module._numeric_le=e=>(_numeric_le=Module._numeric_le=wasmExports.numeric_le)(e),_numeric_div=Module._numeric_div=e=>(_numeric_div=Module._numeric_div=wasmExports.numeric_div)(e),_numeric_float8_no_overflow=Module._numeric_float8_no_overflow=e=>(_numeric_float8_no_overflow=Module._numeric_float8_no_overflow=wasmExports.numeric_float8_no_overflow)(e),_numeric_float4=Module._numeric_float4=e=>(_numeric_float4=Module._numeric_float4=wasmExports.numeric_float4)(e),_date_eq=Module._date_eq=e=>(_date_eq=Module._date_eq=wasmExports.date_eq)(e),_date_lt=Module._date_lt=e=>(_date_lt=Module._date_lt=wasmExports.date_lt)(e),_date_le=Module._date_le=e=>(_date_le=Module._date_le=wasmExports.date_le)(e),_date_gt=Module._date_gt=e=>(_date_gt=Module._date_gt=wasmExports.date_gt)(e),_date_ge=Module._date_ge=e=>(_date_ge=Module._date_ge=wasmExports.date_ge)(e),_date_mi=Module._date_mi=e=>(_date_mi=Module._date_mi=wasmExports.date_mi)(e),_time_eq=Module._time_eq=e=>(_time_eq=Module._time_eq=wasmExports.time_eq)(e),_time_lt=Module._time_lt=e=>(_time_lt=Module._time_lt=wasmExports.time_lt)(e),_time_le=Module._time_le=e=>(_time_le=Module._time_le=wasmExports.time_le)(e),_time_gt=Module._time_gt=e=>(_time_gt=Module._time_gt=wasmExports.time_gt)(e),_time_ge=Module._time_ge=e=>(_time_ge=Module._time_ge=wasmExports.time_ge)(e),_time_mi_time=Module._time_mi_time=e=>(_time_mi_time=Module._time_mi_time=wasmExports.time_mi_time)(e),_get_extension_oid=Module._get_extension_oid=(e,t)=>(_get_extension_oid=Module._get_extension_oid=wasmExports.get_extension_oid)(e,t),_pg_ltoa=Module._pg_ltoa=(e,t)=>(_pg_ltoa=Module._pg_ltoa=wasmExports.pg_ltoa)(e,t),_varbit_in=Module._varbit_in=e=>(_varbit_in=Module._varbit_in=wasmExports.varbit_in)(e),_biteq=Module._biteq=e=>(_biteq=Module._biteq=wasmExports.biteq)(e),_bitlt=Module._bitlt=e=>(_bitlt=Module._bitlt=wasmExports.bitlt)(e),_bitle=Module._bitle=e=>(_bitle=Module._bitle=wasmExports.bitle)(e),_bitgt=Module._bitgt=e=>(_bitgt=Module._bitgt=wasmExports.bitgt)(e),_bitge=Module._bitge=e=>(_bitge=Module._bitge=wasmExports.bitge)(e),_bitcmp=Module._bitcmp=e=>(_bitcmp=Module._bitcmp=wasmExports.bitcmp)(e),_tidin=Module._tidin=e=>(_tidin=Module._tidin=wasmExports.tidin)(e),_tidout=Module._tidout=e=>(_tidout=Module._tidout=wasmExports.tidout)(e),_cash_cmp=Module._cash_cmp=e=>(_cash_cmp=Module._cash_cmp=wasmExports.cash_cmp)(e),_arraycontsel=Module._arraycontsel=e=>(_arraycontsel=Module._arraycontsel=wasmExports.arraycontsel)(e),_arraycontjoinsel=Module._arraycontjoinsel=e=>(_arraycontjoinsel=Module._arraycontjoinsel=wasmExports.arraycontjoinsel)(e),_text_lt=Module._text_lt=e=>(_text_lt=Module._text_lt=wasmExports.text_lt)(e),_text_le=Module._text_le=e=>(_text_le=Module._text_le=wasmExports.text_le)(e),_text_gt=Module._text_gt=e=>(_text_gt=Module._text_gt=wasmExports.text_gt)(e),_text_ge=Module._text_ge=e=>(_text_ge=Module._text_ge=wasmExports.text_ge)(e),_bttextcmp=Module._bttextcmp=e=>(_bttextcmp=Module._bttextcmp=wasmExports.bttextcmp)(e),_byteaeq=Module._byteaeq=e=>(_byteaeq=Module._byteaeq=wasmExports.byteaeq)(e),_bytealt=Module._bytealt=e=>(_bytealt=Module._bytealt=wasmExports.bytealt)(e),_byteale=Module._byteale=e=>(_byteale=Module._byteale=wasmExports.byteale)(e),_byteagt=Module._byteagt=e=>(_byteagt=Module._byteagt=wasmExports.byteagt)(e),_byteage=Module._byteage=e=>(_byteage=Module._byteage=wasmExports.byteage)(e),_byteacmp=Module._byteacmp=e=>(_byteacmp=Module._byteacmp=wasmExports.byteacmp)(e),_to_hex32=Module._to_hex32=e=>(_to_hex32=Module._to_hex32=wasmExports.to_hex32)(e),_varstr_levenshtein=Module._varstr_levenshtein=(e,t,r,a,o,s,l,n)=>(_varstr_levenshtein=Module._varstr_levenshtein=wasmExports.varstr_levenshtein)(e,t,r,a,o,s,l,n),_utf8_to_unicode=Module._utf8_to_unicode=e=>(_utf8_to_unicode=Module._utf8_to_unicode=wasmExports.utf8_to_unicode)(e),_format_type_extended=Module._format_type_extended=(e,t,r)=>(_format_type_extended=Module._format_type_extended=wasmExports.format_type_extended)(e,t,r),_array_create_iterator=Module._array_create_iterator=(e,t,r)=>(_array_create_iterator=Module._array_create_iterator=wasmExports.array_create_iterator)(e,t,r),_array_iterate=Module._array_iterate=(e,t,r)=>(_array_iterate=Module._array_iterate=wasmExports.array_iterate)(e,t,r),_make_expanded_record_from_typeid=Module._make_expanded_record_from_typeid=(e,t,r)=>(_make_expanded_record_from_typeid=Module._make_expanded_record_from_typeid=wasmExports.make_expanded_record_from_typeid)(e,t,r),_make_expanded_record_from_tupdesc=Module._make_expanded_record_from_tupdesc=(e,t)=>(_make_expanded_record_from_tupdesc=Module._make_expanded_record_from_tupdesc=wasmExports.make_expanded_record_from_tupdesc)(e,t),_make_expanded_record_from_exprecord=Module._make_expanded_record_from_exprecord=(e,t)=>(_make_expanded_record_from_exprecord=Module._make_expanded_record_from_exprecord=wasmExports.make_expanded_record_from_exprecord)(e,t),_expanded_record_set_tuple=Module._expanded_record_set_tuple=(e,t,r,a)=>(_expanded_record_set_tuple=Module._expanded_record_set_tuple=wasmExports.expanded_record_set_tuple)(e,t,r,a),_expanded_record_get_tuple=Module._expanded_record_get_tuple=e=>(_expanded_record_get_tuple=Module._expanded_record_get_tuple=wasmExports.expanded_record_get_tuple)(e),_deconstruct_expanded_record=Module._deconstruct_expanded_record=e=>(_deconstruct_expanded_record=Module._deconstruct_expanded_record=wasmExports.deconstruct_expanded_record)(e),_expanded_record_lookup_field=Module._expanded_record_lookup_field=(e,t,r)=>(_expanded_record_lookup_field=Module._expanded_record_lookup_field=wasmExports.expanded_record_lookup_field)(e,t,r),_expanded_record_set_field_internal=Module._expanded_record_set_field_internal=(e,t,r,a,o,s)=>(_expanded_record_set_field_internal=Module._expanded_record_set_field_internal=wasmExports.expanded_record_set_field_internal)(e,t,r,a,o,s),_expanded_record_set_fields=Module._expanded_record_set_fields=(e,t,r,a)=>(_expanded_record_set_fields=Module._expanded_record_set_fields=wasmExports.expanded_record_set_fields)(e,t,r,a),_macaddr8_cmp=Module._macaddr8_cmp=e=>(_macaddr8_cmp=Module._macaddr8_cmp=wasmExports.macaddr8_cmp)(e),_macaddr8_lt=Module._macaddr8_lt=e=>(_macaddr8_lt=Module._macaddr8_lt=wasmExports.macaddr8_lt)(e),_macaddr8_le=Module._macaddr8_le=e=>(_macaddr8_le=Module._macaddr8_le=wasmExports.macaddr8_le)(e),_macaddr8_eq=Module._macaddr8_eq=e=>(_macaddr8_eq=Module._macaddr8_eq=wasmExports.macaddr8_eq)(e),_macaddr8_ge=Module._macaddr8_ge=e=>(_macaddr8_ge=Module._macaddr8_ge=wasmExports.macaddr8_ge)(e),_macaddr8_gt=Module._macaddr8_gt=e=>(_macaddr8_gt=Module._macaddr8_gt=wasmExports.macaddr8_gt)(e),_enum_lt=Module._enum_lt=e=>(_enum_lt=Module._enum_lt=wasmExports.enum_lt)(e),_enum_le=Module._enum_le=e=>(_enum_le=Module._enum_le=wasmExports.enum_le)(e),_enum_ge=Module._enum_ge=e=>(_enum_ge=Module._enum_ge=wasmExports.enum_ge)(e),_enum_gt=Module._enum_gt=e=>(_enum_gt=Module._enum_gt=wasmExports.enum_gt)(e),_enum_cmp=Module._enum_cmp=e=>(_enum_cmp=Module._enum_cmp=wasmExports.enum_cmp)(e),_uuid_in=Module._uuid_in=e=>(_uuid_in=Module._uuid_in=wasmExports.uuid_in)(e),_uuid_out=Module._uuid_out=e=>(_uuid_out=Module._uuid_out=wasmExports.uuid_out)(e),_uuid_cmp=Module._uuid_cmp=e=>(_uuid_cmp=Module._uuid_cmp=wasmExports.uuid_cmp)(e),_gen_random_uuid=Module._gen_random_uuid=e=>(_gen_random_uuid=Module._gen_random_uuid=wasmExports.gen_random_uuid)(e),_generic_restriction_selectivity=Module._generic_restriction_selectivity=(e,t,r,a,o,s)=>(_generic_restriction_selectivity=Module._generic_restriction_selectivity=wasmExports.generic_restriction_selectivity)(e,t,r,a,o,s),_genericcostestimate=Module._genericcostestimate=(e,t,r,a)=>(_genericcostestimate=Module._genericcostestimate=wasmExports.genericcostestimate)(e,t,r,a),_pg_xml_init=Module._pg_xml_init=e=>(_pg_xml_init=Module._pg_xml_init=wasmExports.pg_xml_init)(e),_xmlInitParser=Module._xmlInitParser=()=>(_xmlInitParser=Module._xmlInitParser=wasmExports.xmlInitParser)(),_xml_ereport=Module._xml_ereport=(e,t,r,a)=>(_xml_ereport=Module._xml_ereport=wasmExports.xml_ereport)(e,t,r,a),_pg_xml_done=Module._pg_xml_done=(e,t)=>(_pg_xml_done=Module._pg_xml_done=wasmExports.pg_xml_done)(e,t),_xmlXPathNewContext=Module._xmlXPathNewContext=e=>(_xmlXPathNewContext=Module._xmlXPathNewContext=wasmExports.xmlXPathNewContext)(e),_xmlXPathFreeContext=Module._xmlXPathFreeContext=e=>(_xmlXPathFreeContext=Module._xmlXPathFreeContext=wasmExports.xmlXPathFreeContext)(e),_xmlFreeDoc=Module._xmlFreeDoc=e=>(_xmlFreeDoc=Module._xmlFreeDoc=wasmExports.xmlFreeDoc)(e),_xmlXPathCompile=Module._xmlXPathCompile=e=>(_xmlXPathCompile=Module._xmlXPathCompile=wasmExports.xmlXPathCompile)(e),_xmlXPathCompiledEval=Module._xmlXPathCompiledEval=(e,t)=>(_xmlXPathCompiledEval=Module._xmlXPathCompiledEval=wasmExports.xmlXPathCompiledEval)(e,t),_xmlXPathFreeCompExpr=Module._xmlXPathFreeCompExpr=e=>(_xmlXPathFreeCompExpr=Module._xmlXPathFreeCompExpr=wasmExports.xmlXPathFreeCompExpr)(e),_xmlStrdup=Module._xmlStrdup=e=>(_xmlStrdup=Module._xmlStrdup=wasmExports.xmlStrdup)(e),_strnlen=Module._strnlen=(e,t)=>(_strnlen=Module._strnlen=wasmExports.strnlen)(e,t),_xmlXPathCastNodeToString=Module._xmlXPathCastNodeToString=e=>(_xmlXPathCastNodeToString=Module._xmlXPathCastNodeToString=wasmExports.xmlXPathCastNodeToString)(e),_heap_modify_tuple_by_cols=Module._heap_modify_tuple_by_cols=(e,t,r,a,o,s)=>(_heap_modify_tuple_by_cols=Module._heap_modify_tuple_by_cols=wasmExports.heap_modify_tuple_by_cols)(e,t,r,a,o,s),_ResourceOwnerReleaseAllPlanCacheRefs=Module._ResourceOwnerReleaseAllPlanCacheRefs=e=>(_ResourceOwnerReleaseAllPlanCacheRefs=Module._ResourceOwnerReleaseAllPlanCacheRefs=wasmExports.ResourceOwnerReleaseAllPlanCacheRefs)(e),_RegisterResourceReleaseCallback=Module._RegisterResourceReleaseCallback=(e,t)=>(_RegisterResourceReleaseCallback=Module._RegisterResourceReleaseCallback=wasmExports.RegisterResourceReleaseCallback)(e,t),_PinPortal=Module._PinPortal=e=>(_PinPortal=Module._PinPortal=wasmExports.PinPortal)(e),_UnpinPortal=Module._UnpinPortal=e=>(_UnpinPortal=Module._UnpinPortal=wasmExports.UnpinPortal)(e),_btint2cmp=Module._btint2cmp=e=>(_btint2cmp=Module._btint2cmp=wasmExports.btint2cmp)(e),_btint4cmp=Module._btint4cmp=e=>(_btint4cmp=Module._btint4cmp=wasmExports.btint4cmp)(e),_btoidcmp=Module._btoidcmp=e=>(_btoidcmp=Module._btoidcmp=wasmExports.btoidcmp)(e),_btcharcmp=Module._btcharcmp=e=>(_btcharcmp=Module._btcharcmp=wasmExports.btcharcmp)(e),_btint8cmp=Module._btint8cmp=e=>(_btint8cmp=Module._btint8cmp=wasmExports.btint8cmp)(e),_btboolcmp=Module._btboolcmp=e=>(_btboolcmp=Module._btboolcmp=wasmExports.btboolcmp)(e),_GetPublicationByName=Module._GetPublicationByName=(e,t)=>(_GetPublicationByName=Module._GetPublicationByName=wasmExports.GetPublicationByName)(e,t),_GetTopMostAncestorInPublication=Module._GetTopMostAncestorInPublication=(e,t,r)=>(_GetTopMostAncestorInPublication=Module._GetTopMostAncestorInPublication=wasmExports.GetTopMostAncestorInPublication)(e,t,r),_pub_collist_to_bitmapset=Module._pub_collist_to_bitmapset=(e,t,r)=>(_pub_collist_to_bitmapset=Module._pub_collist_to_bitmapset=wasmExports.pub_collist_to_bitmapset)(e,t,r),_getExtensionOfObject=Module._getExtensionOfObject=(e,t)=>(_getExtensionOfObject=Module._getExtensionOfObject=wasmExports.getExtensionOfObject)(e,t),_visibilitymap_prepare_truncate=Module._visibilitymap_prepare_truncate=(e,t)=>(_visibilitymap_prepare_truncate=Module._visibilitymap_prepare_truncate=wasmExports.visibilitymap_prepare_truncate)(e,t),_log_newpage_range=Module._log_newpage_range=(e,t,r,a,o)=>(_log_newpage_range=Module._log_newpage_range=wasmExports.log_newpage_range)(e,t,r,a,o),_function_parse_error_transpose=Module._function_parse_error_transpose=e=>(_function_parse_error_transpose=Module._function_parse_error_transpose=wasmExports.function_parse_error_transpose)(e),_IndexGetRelation=Module._IndexGetRelation=(e,t)=>(_IndexGetRelation=Module._IndexGetRelation=wasmExports.IndexGetRelation)(e,t),_RelnameGetRelid=Module._RelnameGetRelid=e=>(_RelnameGetRelid=Module._RelnameGetRelid=wasmExports.RelnameGetRelid)(e),_standard_ProcessUtility=Module._standard_ProcessUtility=(e,t,r,a,o,s,l,n)=>(_standard_ProcessUtility=Module._standard_ProcessUtility=wasmExports.standard_ProcessUtility)(e,t,r,a,o,s,l,n),_Async_Notify=Module._Async_Notify=(e,t)=>(_Async_Notify=Module._Async_Notify=wasmExports.Async_Notify)(e,t),_sigaddset=Module._sigaddset=(e,t)=>(_sigaddset=Module._sigaddset=wasmExports.sigaddset)(e,t),_fsync_pgdata=Module._fsync_pgdata=(e,t)=>(_fsync_pgdata=Module._fsync_pgdata=wasmExports.fsync_pgdata)(e,t),_get_restricted_token=Module._get_restricted_token=()=>(_get_restricted_token=Module._get_restricted_token=wasmExports.get_restricted_token)(),_pg_malloc=Module._pg_malloc=e=>(_pg_malloc=Module._pg_malloc=wasmExports.pg_malloc)(e),_pg_realloc=Module._pg_realloc=(e,t)=>(_pg_realloc=Module._pg_realloc=wasmExports.pg_realloc)(e,t),_pg_strdup=Module._pg_strdup=e=>(_pg_strdup=Module._pg_strdup=wasmExports.pg_strdup)(e),_simple_prompt=Module._simple_prompt=(e,t)=>(_simple_prompt=Module._simple_prompt=wasmExports.simple_prompt)(e,t),_interactive_file=Module._interactive_file=()=>(_interactive_file=Module._interactive_file=wasmExports.interactive_file)(),_interactive_one=Module._interactive_one=()=>(_interactive_one=Module._interactive_one=wasmExports.interactive_one)(),_pg_shutdown=Module._pg_shutdown=()=>(_pg_shutdown=Module._pg_shutdown=wasmExports.pg_shutdown)(),_interactive_write=Module._interactive_write=e=>(_interactive_write=Module._interactive_write=wasmExports.interactive_write)(e),_interactive_read=Module._interactive_read=()=>(_interactive_read=Module._interactive_read=wasmExports.interactive_read)(),_visibilitymap_pin=Module._visibilitymap_pin=(e,t,r)=>(_visibilitymap_pin=Module._visibilitymap_pin=wasmExports.visibilitymap_pin)(e,t,r),_HeapTupleSatisfiesVacuum=Module._HeapTupleSatisfiesVacuum=(e,t,r)=>(_HeapTupleSatisfiesVacuum=Module._HeapTupleSatisfiesVacuum=wasmExports.HeapTupleSatisfiesVacuum)(e,t,r),_visibilitymap_clear=Module._visibilitymap_clear=(e,t,r,a)=>(_visibilitymap_clear=Module._visibilitymap_clear=wasmExports.visibilitymap_clear)(e,t,r,a),_vac_estimate_reltuples=Module._vac_estimate_reltuples=(e,t,r,a)=>(_vac_estimate_reltuples=Module._vac_estimate_reltuples=wasmExports.vac_estimate_reltuples)(e,t,r,a),_heap_tuple_needs_eventual_freeze=Module._heap_tuple_needs_eventual_freeze=e=>(_heap_tuple_needs_eventual_freeze=Module._heap_tuple_needs_eventual_freeze=wasmExports.heap_tuple_needs_eventual_freeze)(e),_HeapTupleSatisfiesUpdate=Module._HeapTupleSatisfiesUpdate=(e,t,r)=>(_HeapTupleSatisfiesUpdate=Module._HeapTupleSatisfiesUpdate=wasmExports.HeapTupleSatisfiesUpdate)(e,t,r),_HeapTupleGetUpdateXid=Module._HeapTupleGetUpdateXid=e=>(_HeapTupleGetUpdateXid=Module._HeapTupleGetUpdateXid=wasmExports.HeapTupleGetUpdateXid)(e),_HeapTupleSatisfiesVisibility=Module._HeapTupleSatisfiesVisibility=(e,t,r)=>(_HeapTupleSatisfiesVisibility=Module._HeapTupleSatisfiesVisibility=wasmExports.HeapTupleSatisfiesVisibility)(e,t,r),_GetMultiXactIdMembers=Module._GetMultiXactIdMembers=(e,t,r,a)=>(_GetMultiXactIdMembers=Module._GetMultiXactIdMembers=wasmExports.GetMultiXactIdMembers)(e,t,r,a),_XLogRecGetBlockTagExtended=Module._XLogRecGetBlockTagExtended=(e,t,r,a,o,s)=>(_XLogRecGetBlockTagExtended=Module._XLogRecGetBlockTagExtended=wasmExports.XLogRecGetBlockTagExtended)(e,t,r,a,o,s),_toast_open_indexes=Module._toast_open_indexes=(e,t,r,a)=>(_toast_open_indexes=Module._toast_open_indexes=wasmExports.toast_open_indexes)(e,t,r,a),_init_toast_snapshot=Module._init_toast_snapshot=e=>(_init_toast_snapshot=Module._init_toast_snapshot=wasmExports.init_toast_snapshot)(e),_toast_close_indexes=Module._toast_close_indexes=(e,t,r)=>(_toast_close_indexes=Module._toast_close_indexes=wasmExports.toast_close_indexes)(e,t,r),_index_getprocinfo=Module._index_getprocinfo=(e,t,r)=>(_index_getprocinfo=Module._index_getprocinfo=wasmExports.index_getprocinfo)(e,t,r),_identify_opfamily_groups=Module._identify_opfamily_groups=(e,t)=>(_identify_opfamily_groups=Module._identify_opfamily_groups=wasmExports.identify_opfamily_groups)(e,t),_check_amproc_signature=Module._check_amproc_signature=(e,t,r,a,o,s)=>(_check_amproc_signature=Module._check_amproc_signature=wasmExports.check_amproc_signature)(e,t,r,a,o,s),_check_amoptsproc_signature=Module._check_amoptsproc_signature=e=>(_check_amoptsproc_signature=Module._check_amoptsproc_signature=wasmExports.check_amoptsproc_signature)(e),_check_amop_signature=Module._check_amop_signature=(e,t,r,a)=>(_check_amop_signature=Module._check_amop_signature=wasmExports.check_amop_signature)(e,t,r,a),_RelationGetIndexScan=Module._RelationGetIndexScan=(e,t,r)=>(_RelationGetIndexScan=Module._RelationGetIndexScan=wasmExports.RelationGetIndexScan)(e,t,r),__hash_get_indextuple_hashkey=Module.__hash_get_indextuple_hashkey=e=>(__hash_get_indextuple_hashkey=Module.__hash_get_indextuple_hashkey=wasmExports._hash_get_indextuple_hashkey)(e),__hash_getbuf=Module.__hash_getbuf=(e,t,r,a)=>(__hash_getbuf=Module.__hash_getbuf=wasmExports._hash_getbuf)(e,t,r,a),__hash_relbuf=Module.__hash_relbuf=(e,t)=>(__hash_relbuf=Module.__hash_relbuf=wasmExports._hash_relbuf)(e,t),__hash_getbuf_with_strategy=Module.__hash_getbuf_with_strategy=(e,t,r,a,o)=>(__hash_getbuf_with_strategy=Module.__hash_getbuf_with_strategy=wasmExports._hash_getbuf_with_strategy)(e,t,r,a,o),_build_reloptions=Module._build_reloptions=(e,t,r,a,o,s)=>(_build_reloptions=Module._build_reloptions=wasmExports.build_reloptions)(e,t,r,a,o,s),_index_form_tuple=Module._index_form_tuple=(e,t,r)=>(_index_form_tuple=Module._index_form_tuple=wasmExports.index_form_tuple)(e,t,r),__hash_ovflblkno_to_bitno=Module.__hash_ovflblkno_to_bitno=(e,t)=>(__hash_ovflblkno_to_bitno=Module.__hash_ovflblkno_to_bitno=wasmExports._hash_ovflblkno_to_bitno)(e,t),_brin_build_desc=Module._brin_build_desc=e=>(_brin_build_desc=Module._brin_build_desc=wasmExports.brin_build_desc)(e),_brin_deform_tuple=Module._brin_deform_tuple=(e,t,r)=>(_brin_deform_tuple=Module._brin_deform_tuple=wasmExports.brin_deform_tuple)(e,t,r),_brin_free_desc=Module._brin_free_desc=e=>(_brin_free_desc=Module._brin_free_desc=wasmExports.brin_free_desc)(e),_XLogRecGetBlockRefInfo=Module._XLogRecGetBlockRefInfo=(e,t,r,a,o)=>(_XLogRecGetBlockRefInfo=Module._XLogRecGetBlockRefInfo=wasmExports.XLogRecGetBlockRefInfo)(e,t,r,a,o),_ginPostingListDecode=Module._ginPostingListDecode=(e,t)=>(_ginPostingListDecode=Module._ginPostingListDecode=wasmExports.ginPostingListDecode)(e,t),_add_reloption_kind=Module._add_reloption_kind=()=>(_add_reloption_kind=Module._add_reloption_kind=wasmExports.add_reloption_kind)(),_register_reloptions_validator=Module._register_reloptions_validator=(e,t)=>(_register_reloptions_validator=Module._register_reloptions_validator=wasmExports.register_reloptions_validator)(e,t),_add_int_reloption=Module._add_int_reloption=(e,t,r,a,o,s,l)=>(_add_int_reloption=Module._add_int_reloption=wasmExports.add_int_reloption)(e,t,r,a,o,s,l),_XLogFindNextRecord=Module._XLogFindNextRecord=(e,t)=>(_XLogFindNextRecord=Module._XLogFindNextRecord=wasmExports.XLogFindNextRecord)(e,t),_RestoreBlockImage=Module._RestoreBlockImage=(e,t,r)=>(_RestoreBlockImage=Module._RestoreBlockImage=wasmExports.RestoreBlockImage)(e,t,r),_GenericXLogStart=Module._GenericXLogStart=e=>(_GenericXLogStart=Module._GenericXLogStart=wasmExports.GenericXLogStart)(e),_GenericXLogRegisterBuffer=Module._GenericXLogRegisterBuffer=(e,t,r)=>(_GenericXLogRegisterBuffer=Module._GenericXLogRegisterBuffer=wasmExports.GenericXLogRegisterBuffer)(e,t,r),_GenericXLogFinish=Module._GenericXLogFinish=e=>(_GenericXLogFinish=Module._GenericXLogFinish=wasmExports.GenericXLogFinish)(e),_GenericXLogAbort=Module._GenericXLogAbort=e=>(_GenericXLogAbort=Module._GenericXLogAbort=wasmExports.GenericXLogAbort)(e),_read_local_xlog_page_no_wait=Module._read_local_xlog_page_no_wait=(e,t,r,a,o)=>(_read_local_xlog_page_no_wait=Module._read_local_xlog_page_no_wait=wasmExports.read_local_xlog_page_no_wait)(e,t,r,a,o),_XLogRecStoreStats=Module._XLogRecStoreStats=(e,t)=>(_XLogRecStoreStats=Module._XLogRecStoreStats=wasmExports.XLogRecStoreStats)(e,t),_ReadMultiXactIdRange=Module._ReadMultiXactIdRange=(e,t)=>(_ReadMultiXactIdRange=Module._ReadMultiXactIdRange=wasmExports.ReadMultiXactIdRange)(e,t),_MultiXactIdPrecedesOrEquals=Module._MultiXactIdPrecedesOrEquals=(e,t)=>(_MultiXactIdPrecedesOrEquals=Module._MultiXactIdPrecedesOrEquals=wasmExports.MultiXactIdPrecedesOrEquals)(e,t),_RegisterXactCallback=Module._RegisterXactCallback=(e,t)=>(_RegisterXactCallback=Module._RegisterXactCallback=wasmExports.RegisterXactCallback)(e,t),_RegisterSubXactCallback=Module._RegisterSubXactCallback=(e,t)=>(_RegisterSubXactCallback=Module._RegisterSubXactCallback=wasmExports.RegisterSubXactCallback)(e,t),_ReleaseCurrentSubTransaction=Module._ReleaseCurrentSubTransaction=()=>(_ReleaseCurrentSubTransaction=Module._ReleaseCurrentSubTransaction=wasmExports.ReleaseCurrentSubTransaction)(),_WaitForParallelWorkersToAttach=Module._WaitForParallelWorkersToAttach=e=>(_WaitForParallelWorkersToAttach=Module._WaitForParallelWorkersToAttach=wasmExports.WaitForParallelWorkersToAttach)(e),__bt_allequalimage=Module.__bt_allequalimage=(e,t)=>(__bt_allequalimage=Module.__bt_allequalimage=wasmExports._bt_allequalimage)(e,t),__bt_checkpage=Module.__bt_checkpage=(e,t)=>(__bt_checkpage=Module.__bt_checkpage=wasmExports._bt_checkpage)(e,t),__bt_relbuf=Module.__bt_relbuf=(e,t)=>(__bt_relbuf=Module.__bt_relbuf=wasmExports._bt_relbuf)(e,t),__bt_metaversion=Module.__bt_metaversion=(e,t,r)=>(__bt_metaversion=Module.__bt_metaversion=wasmExports._bt_metaversion)(e,t,r),__bt_search=Module.__bt_search=(e,t,r,a,o,s)=>(__bt_search=Module.__bt_search=wasmExports._bt_search)(e,t,r,a,o,s),__bt_compare=Module.__bt_compare=(e,t,r,a)=>(__bt_compare=Module.__bt_compare=wasmExports._bt_compare)(e,t,r,a),__bt_binsrch_insert=Module.__bt_binsrch_insert=(e,t)=>(__bt_binsrch_insert=Module.__bt_binsrch_insert=wasmExports._bt_binsrch_insert)(e,t),__bt_freestack=Module.__bt_freestack=e=>(__bt_freestack=Module.__bt_freestack=wasmExports._bt_freestack)(e),__bt_form_posting=Module.__bt_form_posting=(e,t,r)=>(__bt_form_posting=Module.__bt_form_posting=wasmExports._bt_form_posting)(e,t,r),__bt_check_natts=Module.__bt_check_natts=(e,t,r,a)=>(__bt_check_natts=Module.__bt_check_natts=wasmExports._bt_check_natts)(e,t,r,a),_gistcheckpage=Module._gistcheckpage=(e,t)=>(_gistcheckpage=Module._gistcheckpage=wasmExports.gistcheckpage)(e,t),_EndCopyFrom=Module._EndCopyFrom=e=>(_EndCopyFrom=Module._EndCopyFrom=wasmExports.EndCopyFrom)(e),_ProcessCopyOptions=Module._ProcessCopyOptions=(e,t,r,a)=>(_ProcessCopyOptions=Module._ProcessCopyOptions=wasmExports.ProcessCopyOptions)(e,t,r,a),_CopyFromErrorCallback=Module._CopyFromErrorCallback=e=>(_CopyFromErrorCallback=Module._CopyFromErrorCallback=wasmExports.CopyFromErrorCallback)(e),_NextCopyFrom=Module._NextCopyFrom=(e,t,r,a)=>(_NextCopyFrom=Module._NextCopyFrom=wasmExports.NextCopyFrom)(e,t,r,a),_nextval=Module._nextval=e=>(_nextval=Module._nextval=wasmExports.nextval)(e),_defGetStreamingMode=Module._defGetStreamingMode=e=>(_defGetStreamingMode=Module._defGetStreamingMode=wasmExports.defGetStreamingMode)(e),_ExplainBeginOutput=Module._ExplainBeginOutput=e=>(_ExplainBeginOutput=Module._ExplainBeginOutput=wasmExports.ExplainBeginOutput)(e),_NewExplainState=Module._NewExplainState=()=>(_NewExplainState=Module._NewExplainState=wasmExports.NewExplainState)(),_ExplainEndOutput=Module._ExplainEndOutput=e=>(_ExplainEndOutput=Module._ExplainEndOutput=wasmExports.ExplainEndOutput)(e),_ExplainPrintPlan=Module._ExplainPrintPlan=(e,t)=>(_ExplainPrintPlan=Module._ExplainPrintPlan=wasmExports.ExplainPrintPlan)(e,t),_ExplainPrintTriggers=Module._ExplainPrintTriggers=(e,t)=>(_ExplainPrintTriggers=Module._ExplainPrintTriggers=wasmExports.ExplainPrintTriggers)(e,t),_ExplainPrintJITSummary=Module._ExplainPrintJITSummary=(e,t)=>(_ExplainPrintJITSummary=Module._ExplainPrintJITSummary=wasmExports.ExplainPrintJITSummary)(e,t),_ExplainPropertyInteger=Module._ExplainPropertyInteger=(e,t,r,a)=>(_ExplainPropertyInteger=Module._ExplainPropertyInteger=wasmExports.ExplainPropertyInteger)(e,t,r,a),_ExplainQueryText=Module._ExplainQueryText=(e,t)=>(_ExplainQueryText=Module._ExplainQueryText=wasmExports.ExplainQueryText)(e,t),_ExplainPropertyText=Module._ExplainPropertyText=(e,t,r)=>(_ExplainPropertyText=Module._ExplainPropertyText=wasmExports.ExplainPropertyText)(e,t,r),_ExplainQueryParameters=Module._ExplainQueryParameters=(e,t,r)=>(_ExplainQueryParameters=Module._ExplainQueryParameters=wasmExports.ExplainQueryParameters)(e,t,r),_pg_is_ascii=Module._pg_is_ascii=e=>(_pg_is_ascii=Module._pg_is_ascii=wasmExports.pg_is_ascii)(e),_fputs=Module._fputs=(e,t)=>(_fputs=Module._fputs=wasmExports.fputs)(e,t),_popen=Module._popen=(e,t)=>(_popen=Module._popen=wasmExports.popen)(e,t),_float_to_shortest_decimal_bufn=Module._float_to_shortest_decimal_bufn=(e,t)=>(_float_to_shortest_decimal_bufn=Module._float_to_shortest_decimal_bufn=wasmExports.float_to_shortest_decimal_bufn)(e,t),_pg_prng_uint64=Module._pg_prng_uint64=e=>(_pg_prng_uint64=Module._pg_prng_uint64=wasmExports.pg_prng_uint64)(e),_scram_ClientKey=Module._scram_ClientKey=(e,t,r,a,o)=>(_scram_ClientKey=Module._scram_ClientKey=wasmExports.scram_ClientKey)(e,t,r,a,o),_pg_encoding_dsplen=Module._pg_encoding_dsplen=(e,t)=>(_pg_encoding_dsplen=Module._pg_encoding_dsplen=wasmExports.pg_encoding_dsplen)(e,t),_getcwd=Module._getcwd=(e,t)=>(_getcwd=Module._getcwd=wasmExports.getcwd)(e,t),_pg_get_user_home_dir=Module._pg_get_user_home_dir=(e,t,r)=>(_pg_get_user_home_dir=Module._pg_get_user_home_dir=wasmExports.pg_get_user_home_dir)(e,t,r),_nanosleep=Module._nanosleep=(e,t)=>(_nanosleep=Module._nanosleep=wasmExports.nanosleep)(e,t),_snprintf=Module._snprintf=(e,t,r,a)=>(_snprintf=Module._snprintf=wasmExports.snprintf)(e,t,r,a),_pg_strerror_r=Module._pg_strerror_r=(e,t,r)=>(_pg_strerror_r=Module._pg_strerror_r=wasmExports.pg_strerror_r)(e,t,r),_pthread_mutex_lock=Module._pthread_mutex_lock=e=>(_pthread_mutex_lock=Module._pthread_mutex_lock=wasmExports.pthread_mutex_lock)(e),_pthread_mutex_unlock=Module._pthread_mutex_unlock=e=>(_pthread_mutex_unlock=Module._pthread_mutex_unlock=wasmExports.pthread_mutex_unlock)(e),_strncat=Module._strncat=(e,t,r)=>(_strncat=Module._strncat=wasmExports.strncat)(e,t,r),_PQexec=Module._PQexec=(e,t)=>(_PQexec=Module._PQexec=wasmExports.PQexec)(e,t),_PQsetSingleRowMode=Module._PQsetSingleRowMode=e=>(_PQsetSingleRowMode=Module._PQsetSingleRowMode=wasmExports.PQsetSingleRowMode)(e),_PQcmdStatus=Module._PQcmdStatus=e=>(_PQcmdStatus=Module._PQcmdStatus=wasmExports.PQcmdStatus)(e),_pthread_sigmask=Module._pthread_sigmask=(e,t,r)=>(_pthread_sigmask=Module._pthread_sigmask=wasmExports.pthread_sigmask)(e,t,r),_sigismember=Module._sigismember=(e,t)=>(_sigismember=Module._sigismember=wasmExports.sigismember)(e,t),_sigpending=Module._sigpending=e=>(_sigpending=Module._sigpending=wasmExports.sigpending)(e),_sigwait=Module._sigwait=(e,t)=>(_sigwait=Module._sigwait=wasmExports.sigwait)(e,t),_isolat1ToUTF8=Module._isolat1ToUTF8=(e,t,r,a)=>(_isolat1ToUTF8=Module._isolat1ToUTF8=wasmExports.isolat1ToUTF8)(e,t,r,a),_UTF8Toisolat1=Module._UTF8Toisolat1=(e,t,r,a)=>(_UTF8Toisolat1=Module._UTF8Toisolat1=wasmExports.UTF8Toisolat1)(e,t,r,a),_vfprintf=Module._vfprintf=(e,t,r)=>(_vfprintf=Module._vfprintf=wasmExports.vfprintf)(e,t,r),_vsnprintf=Module._vsnprintf=(e,t,r,a)=>(_vsnprintf=Module._vsnprintf=wasmExports.vsnprintf)(e,t,r,a),_xmlParserValidityWarning=Module._xmlParserValidityWarning=(e,t,r)=>(_xmlParserValidityWarning=Module._xmlParserValidityWarning=wasmExports.xmlParserValidityWarning)(e,t,r),_xmlParserValidityError=Module._xmlParserValidityError=(e,t,r)=>(_xmlParserValidityError=Module._xmlParserValidityError=wasmExports.xmlParserValidityError)(e,t,r),_xmlParserError=Module._xmlParserError=(e,t,r)=>(_xmlParserError=Module._xmlParserError=wasmExports.xmlParserError)(e,t,r),_xmlParserWarning=Module._xmlParserWarning=(e,t,r)=>(_xmlParserWarning=Module._xmlParserWarning=wasmExports.xmlParserWarning)(e,t,r),_fprintf=Module._fprintf=(e,t,r)=>(_fprintf=Module._fprintf=wasmExports.fprintf)(e,t,r),___xmlParserInputBufferCreateFilename=Module.___xmlParserInputBufferCreateFilename=(e,t)=>(___xmlParserInputBufferCreateFilename=Module.___xmlParserInputBufferCreateFilename=wasmExports.__xmlParserInputBufferCreateFilename)(e,t),___xmlOutputBufferCreateFilename=Module.___xmlOutputBufferCreateFilename=(e,t,r)=>(___xmlOutputBufferCreateFilename=Module.___xmlOutputBufferCreateFilename=wasmExports.__xmlOutputBufferCreateFilename)(e,t,r),_xmlSAX2InternalSubset=Module._xmlSAX2InternalSubset=(e,t,r,a)=>(_xmlSAX2InternalSubset=Module._xmlSAX2InternalSubset=wasmExports.xmlSAX2InternalSubset)(e,t,r,a),_xmlSAX2IsStandalone=Module._xmlSAX2IsStandalone=e=>(_xmlSAX2IsStandalone=Module._xmlSAX2IsStandalone=wasmExports.xmlSAX2IsStandalone)(e),_xmlSAX2HasInternalSubset=Module._xmlSAX2HasInternalSubset=e=>(_xmlSAX2HasInternalSubset=Module._xmlSAX2HasInternalSubset=wasmExports.xmlSAX2HasInternalSubset)(e),_xmlSAX2HasExternalSubset=Module._xmlSAX2HasExternalSubset=e=>(_xmlSAX2HasExternalSubset=Module._xmlSAX2HasExternalSubset=wasmExports.xmlSAX2HasExternalSubset)(e),_xmlSAX2ResolveEntity=Module._xmlSAX2ResolveEntity=(e,t,r)=>(_xmlSAX2ResolveEntity=Module._xmlSAX2ResolveEntity=wasmExports.xmlSAX2ResolveEntity)(e,t,r),_xmlSAX2GetEntity=Module._xmlSAX2GetEntity=(e,t)=>(_xmlSAX2GetEntity=Module._xmlSAX2GetEntity=wasmExports.xmlSAX2GetEntity)(e,t),_xmlSAX2EntityDecl=Module._xmlSAX2EntityDecl=(e,t,r,a,o,s)=>(_xmlSAX2EntityDecl=Module._xmlSAX2EntityDecl=wasmExports.xmlSAX2EntityDecl)(e,t,r,a,o,s),_xmlSAX2NotationDecl=Module._xmlSAX2NotationDecl=(e,t,r,a)=>(_xmlSAX2NotationDecl=Module._xmlSAX2NotationDecl=wasmExports.xmlSAX2NotationDecl)(e,t,r,a),_xmlSAX2AttributeDecl=Module._xmlSAX2AttributeDecl=(e,t,r,a,o,s,l)=>(_xmlSAX2AttributeDecl=Module._xmlSAX2AttributeDecl=wasmExports.xmlSAX2AttributeDecl)(e,t,r,a,o,s,l),_xmlSAX2ElementDecl=Module._xmlSAX2ElementDecl=(e,t,r,a)=>(_xmlSAX2ElementDecl=Module._xmlSAX2ElementDecl=wasmExports.xmlSAX2ElementDecl)(e,t,r,a),_xmlSAX2UnparsedEntityDecl=Module._xmlSAX2UnparsedEntityDecl=(e,t,r,a,o)=>(_xmlSAX2UnparsedEntityDecl=Module._xmlSAX2UnparsedEntityDecl=wasmExports.xmlSAX2UnparsedEntityDecl)(e,t,r,a,o),_xmlSAX2SetDocumentLocator=Module._xmlSAX2SetDocumentLocator=(e,t)=>(_xmlSAX2SetDocumentLocator=Module._xmlSAX2SetDocumentLocator=wasmExports.xmlSAX2SetDocumentLocator)(e,t),_xmlSAX2StartDocument=Module._xmlSAX2StartDocument=e=>(_xmlSAX2StartDocument=Module._xmlSAX2StartDocument=wasmExports.xmlSAX2StartDocument)(e),_xmlSAX2EndDocument=Module._xmlSAX2EndDocument=e=>(_xmlSAX2EndDocument=Module._xmlSAX2EndDocument=wasmExports.xmlSAX2EndDocument)(e),_xmlSAX2StartElement=Module._xmlSAX2StartElement=(e,t,r)=>(_xmlSAX2StartElement=Module._xmlSAX2StartElement=wasmExports.xmlSAX2StartElement)(e,t,r),_xmlSAX2EndElement=Module._xmlSAX2EndElement=(e,t)=>(_xmlSAX2EndElement=Module._xmlSAX2EndElement=wasmExports.xmlSAX2EndElement)(e,t),_xmlSAX2Reference=Module._xmlSAX2Reference=(e,t)=>(_xmlSAX2Reference=Module._xmlSAX2Reference=wasmExports.xmlSAX2Reference)(e,t),_xmlSAX2Characters=Module._xmlSAX2Characters=(e,t,r)=>(_xmlSAX2Characters=Module._xmlSAX2Characters=wasmExports.xmlSAX2Characters)(e,t,r),_xmlSAX2ProcessingInstruction=Module._xmlSAX2ProcessingInstruction=(e,t,r)=>(_xmlSAX2ProcessingInstruction=Module._xmlSAX2ProcessingInstruction=wasmExports.xmlSAX2ProcessingInstruction)(e,t,r),_xmlSAX2Comment=Module._xmlSAX2Comment=(e,t)=>(_xmlSAX2Comment=Module._xmlSAX2Comment=wasmExports.xmlSAX2Comment)(e,t),_xmlSAX2GetParameterEntity=Module._xmlSAX2GetParameterEntity=(e,t)=>(_xmlSAX2GetParameterEntity=Module._xmlSAX2GetParameterEntity=wasmExports.xmlSAX2GetParameterEntity)(e,t),_xmlSAX2CDataBlock=Module._xmlSAX2CDataBlock=(e,t,r)=>(_xmlSAX2CDataBlock=Module._xmlSAX2CDataBlock=wasmExports.xmlSAX2CDataBlock)(e,t,r),_xmlSAX2ExternalSubset=Module._xmlSAX2ExternalSubset=(e,t,r,a)=>(_xmlSAX2ExternalSubset=Module._xmlSAX2ExternalSubset=wasmExports.xmlSAX2ExternalSubset)(e,t,r,a),_xmlSAX2GetPublicId=Module._xmlSAX2GetPublicId=e=>(_xmlSAX2GetPublicId=Module._xmlSAX2GetPublicId=wasmExports.xmlSAX2GetPublicId)(e),_xmlSAX2GetSystemId=Module._xmlSAX2GetSystemId=e=>(_xmlSAX2GetSystemId=Module._xmlSAX2GetSystemId=wasmExports.xmlSAX2GetSystemId)(e),_xmlSAX2GetLineNumber=Module._xmlSAX2GetLineNumber=e=>(_xmlSAX2GetLineNumber=Module._xmlSAX2GetLineNumber=wasmExports.xmlSAX2GetLineNumber)(e),_xmlSAX2GetColumnNumber=Module._xmlSAX2GetColumnNumber=e=>(_xmlSAX2GetColumnNumber=Module._xmlSAX2GetColumnNumber=wasmExports.xmlSAX2GetColumnNumber)(e),_xmlSAX2IgnorableWhitespace=Module._xmlSAX2IgnorableWhitespace=(e,t,r)=>(_xmlSAX2IgnorableWhitespace=Module._xmlSAX2IgnorableWhitespace=wasmExports.xmlSAX2IgnorableWhitespace)(e,t,r),_xmlHashDefaultDeallocator=Module._xmlHashDefaultDeallocator=(e,t)=>(_xmlHashDefaultDeallocator=Module._xmlHashDefaultDeallocator=wasmExports.xmlHashDefaultDeallocator)(e,t),_iconv_open=Module._iconv_open=(e,t)=>(_iconv_open=Module._iconv_open=wasmExports.iconv_open)(e,t),_iconv_close=Module._iconv_close=e=>(_iconv_close=Module._iconv_close=wasmExports.iconv_close)(e),_iconv=Module._iconv=(e,t,r,a,o)=>(_iconv=Module._iconv=wasmExports.iconv)(e,t,r,a,o),_UTF8ToHtml=Module._UTF8ToHtml=(e,t,r,a)=>(_UTF8ToHtml=Module._UTF8ToHtml=wasmExports.UTF8ToHtml)(e,t,r,a),_xmlReadMemory=Module._xmlReadMemory=(e,t,r,a,o)=>(_xmlReadMemory=Module._xmlReadMemory=wasmExports.xmlReadMemory)(e,t,r,a,o),_xmlSAX2StartElementNs=Module._xmlSAX2StartElementNs=(e,t,r,a,o,s,l,n,_)=>(_xmlSAX2StartElementNs=Module._xmlSAX2StartElementNs=wasmExports.xmlSAX2StartElementNs)(e,t,r,a,o,s,l,n,_),_xmlSAX2EndElementNs=Module._xmlSAX2EndElementNs=(e,t,r,a)=>(_xmlSAX2EndElementNs=Module._xmlSAX2EndElementNs=wasmExports.xmlSAX2EndElementNs)(e,t,r,a),___cxa_atexit=Module.___cxa_atexit=(e,t,r)=>(___cxa_atexit=Module.___cxa_atexit=wasmExports.__cxa_atexit)(e,t,r),_xmlDocGetRootElement=Module._xmlDocGetRootElement=e=>(_xmlDocGetRootElement=Module._xmlDocGetRootElement=wasmExports.xmlDocGetRootElement)(e),_xmlFileMatch=Module._xmlFileMatch=e=>(_xmlFileMatch=Module._xmlFileMatch=wasmExports.xmlFileMatch)(e),_xmlFileOpen=Module._xmlFileOpen=e=>(_xmlFileOpen=Module._xmlFileOpen=wasmExports.xmlFileOpen)(e),_xmlFileRead=Module._xmlFileRead=(e,t,r)=>(_xmlFileRead=Module._xmlFileRead=wasmExports.xmlFileRead)(e,t,r),_xmlFileClose=Module._xmlFileClose=e=>(_xmlFileClose=Module._xmlFileClose=wasmExports.xmlFileClose)(e),_gzread=Module._gzread=(e,t,r)=>(_gzread=Module._gzread=wasmExports.gzread)(e,t,r),_gzclose=Module._gzclose=e=>(_gzclose=Module._gzclose=wasmExports.gzclose)(e),_gzdirect=Module._gzdirect=e=>(_gzdirect=Module._gzdirect=wasmExports.gzdirect)(e),_gzdopen=Module._gzdopen=(e,t)=>(_gzdopen=Module._gzdopen=wasmExports.gzdopen)(e,t),_gzopen=Module._gzopen=(e,t)=>(_gzopen=Module._gzopen=wasmExports.gzopen)(e,t),_gzwrite=Module._gzwrite=(e,t,r)=>(_gzwrite=Module._gzwrite=wasmExports.gzwrite)(e,t,r),_xmlUCSIsCatNd=Module._xmlUCSIsCatNd=e=>(_xmlUCSIsCatNd=Module._xmlUCSIsCatNd=wasmExports.xmlUCSIsCatNd)(e),_xmlUCSIsCatP=Module._xmlUCSIsCatP=e=>(_xmlUCSIsCatP=Module._xmlUCSIsCatP=wasmExports.xmlUCSIsCatP)(e),_xmlUCSIsCatZ=Module._xmlUCSIsCatZ=e=>(_xmlUCSIsCatZ=Module._xmlUCSIsCatZ=wasmExports.xmlUCSIsCatZ)(e),_xmlUCSIsCatC=Module._xmlUCSIsCatC=e=>(_xmlUCSIsCatC=Module._xmlUCSIsCatC=wasmExports.xmlUCSIsCatC)(e),_xmlUCSIsCatL=Module._xmlUCSIsCatL=e=>(_xmlUCSIsCatL=Module._xmlUCSIsCatL=wasmExports.xmlUCSIsCatL)(e),_xmlUCSIsCatLu=Module._xmlUCSIsCatLu=e=>(_xmlUCSIsCatLu=Module._xmlUCSIsCatLu=wasmExports.xmlUCSIsCatLu)(e),_xmlUCSIsCatLl=Module._xmlUCSIsCatLl=e=>(_xmlUCSIsCatLl=Module._xmlUCSIsCatLl=wasmExports.xmlUCSIsCatLl)(e),_xmlUCSIsCatLt=Module._xmlUCSIsCatLt=e=>(_xmlUCSIsCatLt=Module._xmlUCSIsCatLt=wasmExports.xmlUCSIsCatLt)(e),_xmlUCSIsCatLm=Module._xmlUCSIsCatLm=e=>(_xmlUCSIsCatLm=Module._xmlUCSIsCatLm=wasmExports.xmlUCSIsCatLm)(e),_xmlUCSIsCatLo=Module._xmlUCSIsCatLo=e=>(_xmlUCSIsCatLo=Module._xmlUCSIsCatLo=wasmExports.xmlUCSIsCatLo)(e),_xmlUCSIsCatM=Module._xmlUCSIsCatM=e=>(_xmlUCSIsCatM=Module._xmlUCSIsCatM=wasmExports.xmlUCSIsCatM)(e),_xmlUCSIsCatMn=Module._xmlUCSIsCatMn=e=>(_xmlUCSIsCatMn=Module._xmlUCSIsCatMn=wasmExports.xmlUCSIsCatMn)(e),_xmlUCSIsCatMc=Module._xmlUCSIsCatMc=e=>(_xmlUCSIsCatMc=Module._xmlUCSIsCatMc=wasmExports.xmlUCSIsCatMc)(e),_xmlUCSIsCatMe=Module._xmlUCSIsCatMe=e=>(_xmlUCSIsCatMe=Module._xmlUCSIsCatMe=wasmExports.xmlUCSIsCatMe)(e),_xmlUCSIsCatN=Module._xmlUCSIsCatN=e=>(_xmlUCSIsCatN=Module._xmlUCSIsCatN=wasmExports.xmlUCSIsCatN)(e),_xmlUCSIsCatNl=Module._xmlUCSIsCatNl=e=>(_xmlUCSIsCatNl=Module._xmlUCSIsCatNl=wasmExports.xmlUCSIsCatNl)(e),_xmlUCSIsCatNo=Module._xmlUCSIsCatNo=e=>(_xmlUCSIsCatNo=Module._xmlUCSIsCatNo=wasmExports.xmlUCSIsCatNo)(e),_xmlUCSIsCatPc=Module._xmlUCSIsCatPc=e=>(_xmlUCSIsCatPc=Module._xmlUCSIsCatPc=wasmExports.xmlUCSIsCatPc)(e),_xmlUCSIsCatPd=Module._xmlUCSIsCatPd=e=>(_xmlUCSIsCatPd=Module._xmlUCSIsCatPd=wasmExports.xmlUCSIsCatPd)(e),_xmlUCSIsCatPs=Module._xmlUCSIsCatPs=e=>(_xmlUCSIsCatPs=Module._xmlUCSIsCatPs=wasmExports.xmlUCSIsCatPs)(e),_xmlUCSIsCatPe=Module._xmlUCSIsCatPe=e=>(_xmlUCSIsCatPe=Module._xmlUCSIsCatPe=wasmExports.xmlUCSIsCatPe)(e),_xmlUCSIsCatPi=Module._xmlUCSIsCatPi=e=>(_xmlUCSIsCatPi=Module._xmlUCSIsCatPi=wasmExports.xmlUCSIsCatPi)(e),_xmlUCSIsCatPf=Module._xmlUCSIsCatPf=e=>(_xmlUCSIsCatPf=Module._xmlUCSIsCatPf=wasmExports.xmlUCSIsCatPf)(e),_xmlUCSIsCatPo=Module._xmlUCSIsCatPo=e=>(_xmlUCSIsCatPo=Module._xmlUCSIsCatPo=wasmExports.xmlUCSIsCatPo)(e),_xmlUCSIsCatZs=Module._xmlUCSIsCatZs=e=>(_xmlUCSIsCatZs=Module._xmlUCSIsCatZs=wasmExports.xmlUCSIsCatZs)(e),_xmlUCSIsCatZl=Module._xmlUCSIsCatZl=e=>(_xmlUCSIsCatZl=Module._xmlUCSIsCatZl=wasmExports.xmlUCSIsCatZl)(e),_xmlUCSIsCatZp=Module._xmlUCSIsCatZp=e=>(_xmlUCSIsCatZp=Module._xmlUCSIsCatZp=wasmExports.xmlUCSIsCatZp)(e),_xmlUCSIsCatS=Module._xmlUCSIsCatS=e=>(_xmlUCSIsCatS=Module._xmlUCSIsCatS=wasmExports.xmlUCSIsCatS)(e),_xmlUCSIsCatSm=Module._xmlUCSIsCatSm=e=>(_xmlUCSIsCatSm=Module._xmlUCSIsCatSm=wasmExports.xmlUCSIsCatSm)(e),_xmlUCSIsCatSc=Module._xmlUCSIsCatSc=e=>(_xmlUCSIsCatSc=Module._xmlUCSIsCatSc=wasmExports.xmlUCSIsCatSc)(e),_xmlUCSIsCatSk=Module._xmlUCSIsCatSk=e=>(_xmlUCSIsCatSk=Module._xmlUCSIsCatSk=wasmExports.xmlUCSIsCatSk)(e),_xmlUCSIsCatSo=Module._xmlUCSIsCatSo=e=>(_xmlUCSIsCatSo=Module._xmlUCSIsCatSo=wasmExports.xmlUCSIsCatSo)(e),_xmlUCSIsCatCc=Module._xmlUCSIsCatCc=e=>(_xmlUCSIsCatCc=Module._xmlUCSIsCatCc=wasmExports.xmlUCSIsCatCc)(e),_xmlUCSIsCatCf=Module._xmlUCSIsCatCf=e=>(_xmlUCSIsCatCf=Module._xmlUCSIsCatCf=wasmExports.xmlUCSIsCatCf)(e),_xmlUCSIsCatCo=Module._xmlUCSIsCatCo=e=>(_xmlUCSIsCatCo=Module._xmlUCSIsCatCo=wasmExports.xmlUCSIsCatCo)(e),_xmlUCSIsAegeanNumbers=Module._xmlUCSIsAegeanNumbers=e=>(_xmlUCSIsAegeanNumbers=Module._xmlUCSIsAegeanNumbers=wasmExports.xmlUCSIsAegeanNumbers)(e),_xmlUCSIsAlphabeticPresentationForms=Module._xmlUCSIsAlphabeticPresentationForms=e=>(_xmlUCSIsAlphabeticPresentationForms=Module._xmlUCSIsAlphabeticPresentationForms=wasmExports.xmlUCSIsAlphabeticPresentationForms)(e),_xmlUCSIsArabic=Module._xmlUCSIsArabic=e=>(_xmlUCSIsArabic=Module._xmlUCSIsArabic=wasmExports.xmlUCSIsArabic)(e),_xmlUCSIsArabicPresentationFormsA=Module._xmlUCSIsArabicPresentationFormsA=e=>(_xmlUCSIsArabicPresentationFormsA=Module._xmlUCSIsArabicPresentationFormsA=wasmExports.xmlUCSIsArabicPresentationFormsA)(e),_xmlUCSIsArabicPresentationFormsB=Module._xmlUCSIsArabicPresentationFormsB=e=>(_xmlUCSIsArabicPresentationFormsB=Module._xmlUCSIsArabicPresentationFormsB=wasmExports.xmlUCSIsArabicPresentationFormsB)(e),_xmlUCSIsArmenian=Module._xmlUCSIsArmenian=e=>(_xmlUCSIsArmenian=Module._xmlUCSIsArmenian=wasmExports.xmlUCSIsArmenian)(e),_xmlUCSIsArrows=Module._xmlUCSIsArrows=e=>(_xmlUCSIsArrows=Module._xmlUCSIsArrows=wasmExports.xmlUCSIsArrows)(e),_xmlUCSIsBasicLatin=Module._xmlUCSIsBasicLatin=e=>(_xmlUCSIsBasicLatin=Module._xmlUCSIsBasicLatin=wasmExports.xmlUCSIsBasicLatin)(e),_xmlUCSIsBengali=Module._xmlUCSIsBengali=e=>(_xmlUCSIsBengali=Module._xmlUCSIsBengali=wasmExports.xmlUCSIsBengali)(e),_xmlUCSIsBlockElements=Module._xmlUCSIsBlockElements=e=>(_xmlUCSIsBlockElements=Module._xmlUCSIsBlockElements=wasmExports.xmlUCSIsBlockElements)(e),_xmlUCSIsBopomofo=Module._xmlUCSIsBopomofo=e=>(_xmlUCSIsBopomofo=Module._xmlUCSIsBopomofo=wasmExports.xmlUCSIsBopomofo)(e),_xmlUCSIsBopomofoExtended=Module._xmlUCSIsBopomofoExtended=e=>(_xmlUCSIsBopomofoExtended=Module._xmlUCSIsBopomofoExtended=wasmExports.xmlUCSIsBopomofoExtended)(e),_xmlUCSIsBoxDrawing=Module._xmlUCSIsBoxDrawing=e=>(_xmlUCSIsBoxDrawing=Module._xmlUCSIsBoxDrawing=wasmExports.xmlUCSIsBoxDrawing)(e),_xmlUCSIsBraillePatterns=Module._xmlUCSIsBraillePatterns=e=>(_xmlUCSIsBraillePatterns=Module._xmlUCSIsBraillePatterns=wasmExports.xmlUCSIsBraillePatterns)(e),_xmlUCSIsBuhid=Module._xmlUCSIsBuhid=e=>(_xmlUCSIsBuhid=Module._xmlUCSIsBuhid=wasmExports.xmlUCSIsBuhid)(e),_xmlUCSIsByzantineMusicalSymbols=Module._xmlUCSIsByzantineMusicalSymbols=e=>(_xmlUCSIsByzantineMusicalSymbols=Module._xmlUCSIsByzantineMusicalSymbols=wasmExports.xmlUCSIsByzantineMusicalSymbols)(e),_xmlUCSIsCJKCompatibility=Module._xmlUCSIsCJKCompatibility=e=>(_xmlUCSIsCJKCompatibility=Module._xmlUCSIsCJKCompatibility=wasmExports.xmlUCSIsCJKCompatibility)(e),_xmlUCSIsCJKCompatibilityForms=Module._xmlUCSIsCJKCompatibilityForms=e=>(_xmlUCSIsCJKCompatibilityForms=Module._xmlUCSIsCJKCompatibilityForms=wasmExports.xmlUCSIsCJKCompatibilityForms)(e),_xmlUCSIsCJKCompatibilityIdeographs=Module._xmlUCSIsCJKCompatibilityIdeographs=e=>(_xmlUCSIsCJKCompatibilityIdeographs=Module._xmlUCSIsCJKCompatibilityIdeographs=wasmExports.xmlUCSIsCJKCompatibilityIdeographs)(e),_xmlUCSIsCJKCompatibilityIdeographsSupplement=Module._xmlUCSIsCJKCompatibilityIdeographsSupplement=e=>(_xmlUCSIsCJKCompatibilityIdeographsSupplement=Module._xmlUCSIsCJKCompatibilityIdeographsSupplement=wasmExports.xmlUCSIsCJKCompatibilityIdeographsSupplement)(e),_xmlUCSIsCJKRadicalsSupplement=Module._xmlUCSIsCJKRadicalsSupplement=e=>(_xmlUCSIsCJKRadicalsSupplement=Module._xmlUCSIsCJKRadicalsSupplement=wasmExports.xmlUCSIsCJKRadicalsSupplement)(e),_xmlUCSIsCJKSymbolsandPunctuation=Module._xmlUCSIsCJKSymbolsandPunctuation=e=>(_xmlUCSIsCJKSymbolsandPunctuation=Module._xmlUCSIsCJKSymbolsandPunctuation=wasmExports.xmlUCSIsCJKSymbolsandPunctuation)(e),_xmlUCSIsCJKUnifiedIdeographs=Module._xmlUCSIsCJKUnifiedIdeographs=e=>(_xmlUCSIsCJKUnifiedIdeographs=Module._xmlUCSIsCJKUnifiedIdeographs=wasmExports.xmlUCSIsCJKUnifiedIdeographs)(e),_xmlUCSIsCJKUnifiedIdeographsExtensionA=Module._xmlUCSIsCJKUnifiedIdeographsExtensionA=e=>(_xmlUCSIsCJKUnifiedIdeographsExtensionA=Module._xmlUCSIsCJKUnifiedIdeographsExtensionA=wasmExports.xmlUCSIsCJKUnifiedIdeographsExtensionA)(e),_xmlUCSIsCJKUnifiedIdeographsExtensionB=Module._xmlUCSIsCJKUnifiedIdeographsExtensionB=e=>(_xmlUCSIsCJKUnifiedIdeographsExtensionB=Module._xmlUCSIsCJKUnifiedIdeographsExtensionB=wasmExports.xmlUCSIsCJKUnifiedIdeographsExtensionB)(e),_xmlUCSIsCherokee=Module._xmlUCSIsCherokee=e=>(_xmlUCSIsCherokee=Module._xmlUCSIsCherokee=wasmExports.xmlUCSIsCherokee)(e),_xmlUCSIsCombiningDiacriticalMarks=Module._xmlUCSIsCombiningDiacriticalMarks=e=>(_xmlUCSIsCombiningDiacriticalMarks=Module._xmlUCSIsCombiningDiacriticalMarks=wasmExports.xmlUCSIsCombiningDiacriticalMarks)(e),_xmlUCSIsCombiningDiacriticalMarksforSymbols=Module._xmlUCSIsCombiningDiacriticalMarksforSymbols=e=>(_xmlUCSIsCombiningDiacriticalMarksforSymbols=Module._xmlUCSIsCombiningDiacriticalMarksforSymbols=wasmExports.xmlUCSIsCombiningDiacriticalMarksforSymbols)(e),_xmlUCSIsCombiningHalfMarks=Module._xmlUCSIsCombiningHalfMarks=e=>(_xmlUCSIsCombiningHalfMarks=Module._xmlUCSIsCombiningHalfMarks=wasmExports.xmlUCSIsCombiningHalfMarks)(e),_xmlUCSIsCombiningMarksforSymbols=Module._xmlUCSIsCombiningMarksforSymbols=e=>(_xmlUCSIsCombiningMarksforSymbols=Module._xmlUCSIsCombiningMarksforSymbols=wasmExports.xmlUCSIsCombiningMarksforSymbols)(e),_xmlUCSIsControlPictures=Module._xmlUCSIsControlPictures=e=>(_xmlUCSIsControlPictures=Module._xmlUCSIsControlPictures=wasmExports.xmlUCSIsControlPictures)(e),_xmlUCSIsCurrencySymbols=Module._xmlUCSIsCurrencySymbols=e=>(_xmlUCSIsCurrencySymbols=Module._xmlUCSIsCurrencySymbols=wasmExports.xmlUCSIsCurrencySymbols)(e),_xmlUCSIsCypriotSyllabary=Module._xmlUCSIsCypriotSyllabary=e=>(_xmlUCSIsCypriotSyllabary=Module._xmlUCSIsCypriotSyllabary=wasmExports.xmlUCSIsCypriotSyllabary)(e),_xmlUCSIsCyrillic=Module._xmlUCSIsCyrillic=e=>(_xmlUCSIsCyrillic=Module._xmlUCSIsCyrillic=wasmExports.xmlUCSIsCyrillic)(e),_xmlUCSIsCyrillicSupplement=Module._xmlUCSIsCyrillicSupplement=e=>(_xmlUCSIsCyrillicSupplement=Module._xmlUCSIsCyrillicSupplement=wasmExports.xmlUCSIsCyrillicSupplement)(e),_xmlUCSIsDeseret=Module._xmlUCSIsDeseret=e=>(_xmlUCSIsDeseret=Module._xmlUCSIsDeseret=wasmExports.xmlUCSIsDeseret)(e),_xmlUCSIsDevanagari=Module._xmlUCSIsDevanagari=e=>(_xmlUCSIsDevanagari=Module._xmlUCSIsDevanagari=wasmExports.xmlUCSIsDevanagari)(e),_xmlUCSIsDingbats=Module._xmlUCSIsDingbats=e=>(_xmlUCSIsDingbats=Module._xmlUCSIsDingbats=wasmExports.xmlUCSIsDingbats)(e),_xmlUCSIsEnclosedAlphanumerics=Module._xmlUCSIsEnclosedAlphanumerics=e=>(_xmlUCSIsEnclosedAlphanumerics=Module._xmlUCSIsEnclosedAlphanumerics=wasmExports.xmlUCSIsEnclosedAlphanumerics)(e),_xmlUCSIsEnclosedCJKLettersandMonths=Module._xmlUCSIsEnclosedCJKLettersandMonths=e=>(_xmlUCSIsEnclosedCJKLettersandMonths=Module._xmlUCSIsEnclosedCJKLettersandMonths=wasmExports.xmlUCSIsEnclosedCJKLettersandMonths)(e),_xmlUCSIsEthiopic=Module._xmlUCSIsEthiopic=e=>(_xmlUCSIsEthiopic=Module._xmlUCSIsEthiopic=wasmExports.xmlUCSIsEthiopic)(e),_xmlUCSIsGeneralPunctuation=Module._xmlUCSIsGeneralPunctuation=e=>(_xmlUCSIsGeneralPunctuation=Module._xmlUCSIsGeneralPunctuation=wasmExports.xmlUCSIsGeneralPunctuation)(e),_xmlUCSIsGeometricShapes=Module._xmlUCSIsGeometricShapes=e=>(_xmlUCSIsGeometricShapes=Module._xmlUCSIsGeometricShapes=wasmExports.xmlUCSIsGeometricShapes)(e),_xmlUCSIsGeorgian=Module._xmlUCSIsGeorgian=e=>(_xmlUCSIsGeorgian=Module._xmlUCSIsGeorgian=wasmExports.xmlUCSIsGeorgian)(e),_xmlUCSIsGothic=Module._xmlUCSIsGothic=e=>(_xmlUCSIsGothic=Module._xmlUCSIsGothic=wasmExports.xmlUCSIsGothic)(e),_xmlUCSIsGreek=Module._xmlUCSIsGreek=e=>(_xmlUCSIsGreek=Module._xmlUCSIsGreek=wasmExports.xmlUCSIsGreek)(e),_xmlUCSIsGreekExtended=Module._xmlUCSIsGreekExtended=e=>(_xmlUCSIsGreekExtended=Module._xmlUCSIsGreekExtended=wasmExports.xmlUCSIsGreekExtended)(e),_xmlUCSIsGreekandCoptic=Module._xmlUCSIsGreekandCoptic=e=>(_xmlUCSIsGreekandCoptic=Module._xmlUCSIsGreekandCoptic=wasmExports.xmlUCSIsGreekandCoptic)(e),_xmlUCSIsGujarati=Module._xmlUCSIsGujarati=e=>(_xmlUCSIsGujarati=Module._xmlUCSIsGujarati=wasmExports.xmlUCSIsGujarati)(e),_xmlUCSIsGurmukhi=Module._xmlUCSIsGurmukhi=e=>(_xmlUCSIsGurmukhi=Module._xmlUCSIsGurmukhi=wasmExports.xmlUCSIsGurmukhi)(e),_xmlUCSIsHalfwidthandFullwidthForms=Module._xmlUCSIsHalfwidthandFullwidthForms=e=>(_xmlUCSIsHalfwidthandFullwidthForms=Module._xmlUCSIsHalfwidthandFullwidthForms=wasmExports.xmlUCSIsHalfwidthandFullwidthForms)(e),_xmlUCSIsHangulCompatibilityJamo=Module._xmlUCSIsHangulCompatibilityJamo=e=>(_xmlUCSIsHangulCompatibilityJamo=Module._xmlUCSIsHangulCompatibilityJamo=wasmExports.xmlUCSIsHangulCompatibilityJamo)(e),_xmlUCSIsHangulJamo=Module._xmlUCSIsHangulJamo=e=>(_xmlUCSIsHangulJamo=Module._xmlUCSIsHangulJamo=wasmExports.xmlUCSIsHangulJamo)(e),_xmlUCSIsHangulSyllables=Module._xmlUCSIsHangulSyllables=e=>(_xmlUCSIsHangulSyllables=Module._xmlUCSIsHangulSyllables=wasmExports.xmlUCSIsHangulSyllables)(e),_xmlUCSIsHanunoo=Module._xmlUCSIsHanunoo=e=>(_xmlUCSIsHanunoo=Module._xmlUCSIsHanunoo=wasmExports.xmlUCSIsHanunoo)(e),_xmlUCSIsHebrew=Module._xmlUCSIsHebrew=e=>(_xmlUCSIsHebrew=Module._xmlUCSIsHebrew=wasmExports.xmlUCSIsHebrew)(e),_xmlUCSIsHighPrivateUseSurrogates=Module._xmlUCSIsHighPrivateUseSurrogates=e=>(_xmlUCSIsHighPrivateUseSurrogates=Module._xmlUCSIsHighPrivateUseSurrogates=wasmExports.xmlUCSIsHighPrivateUseSurrogates)(e),_xmlUCSIsHighSurrogates=Module._xmlUCSIsHighSurrogates=e=>(_xmlUCSIsHighSurrogates=Module._xmlUCSIsHighSurrogates=wasmExports.xmlUCSIsHighSurrogates)(e),_xmlUCSIsHiragana=Module._xmlUCSIsHiragana=e=>(_xmlUCSIsHiragana=Module._xmlUCSIsHiragana=wasmExports.xmlUCSIsHiragana)(e),_xmlUCSIsIPAExtensions=Module._xmlUCSIsIPAExtensions=e=>(_xmlUCSIsIPAExtensions=Module._xmlUCSIsIPAExtensions=wasmExports.xmlUCSIsIPAExtensions)(e),_xmlUCSIsIdeographicDescriptionCharacters=Module._xmlUCSIsIdeographicDescriptionCharacters=e=>(_xmlUCSIsIdeographicDescriptionCharacters=Module._xmlUCSIsIdeographicDescriptionCharacters=wasmExports.xmlUCSIsIdeographicDescriptionCharacters)(e),_xmlUCSIsKanbun=Module._xmlUCSIsKanbun=e=>(_xmlUCSIsKanbun=Module._xmlUCSIsKanbun=wasmExports.xmlUCSIsKanbun)(e),_xmlUCSIsKangxiRadicals=Module._xmlUCSIsKangxiRadicals=e=>(_xmlUCSIsKangxiRadicals=Module._xmlUCSIsKangxiRadicals=wasmExports.xmlUCSIsKangxiRadicals)(e),_xmlUCSIsKannada=Module._xmlUCSIsKannada=e=>(_xmlUCSIsKannada=Module._xmlUCSIsKannada=wasmExports.xmlUCSIsKannada)(e),_xmlUCSIsKatakana=Module._xmlUCSIsKatakana=e=>(_xmlUCSIsKatakana=Module._xmlUCSIsKatakana=wasmExports.xmlUCSIsKatakana)(e),_xmlUCSIsKatakanaPhoneticExtensions=Module._xmlUCSIsKatakanaPhoneticExtensions=e=>(_xmlUCSIsKatakanaPhoneticExtensions=Module._xmlUCSIsKatakanaPhoneticExtensions=wasmExports.xmlUCSIsKatakanaPhoneticExtensions)(e),_xmlUCSIsKhmer=Module._xmlUCSIsKhmer=e=>(_xmlUCSIsKhmer=Module._xmlUCSIsKhmer=wasmExports.xmlUCSIsKhmer)(e),_xmlUCSIsKhmerSymbols=Module._xmlUCSIsKhmerSymbols=e=>(_xmlUCSIsKhmerSymbols=Module._xmlUCSIsKhmerSymbols=wasmExports.xmlUCSIsKhmerSymbols)(e),_xmlUCSIsLao=Module._xmlUCSIsLao=e=>(_xmlUCSIsLao=Module._xmlUCSIsLao=wasmExports.xmlUCSIsLao)(e),_xmlUCSIsLatin1Supplement=Module._xmlUCSIsLatin1Supplement=e=>(_xmlUCSIsLatin1Supplement=Module._xmlUCSIsLatin1Supplement=wasmExports.xmlUCSIsLatin1Supplement)(e),_xmlUCSIsLatinExtendedA=Module._xmlUCSIsLatinExtendedA=e=>(_xmlUCSIsLatinExtendedA=Module._xmlUCSIsLatinExtendedA=wasmExports.xmlUCSIsLatinExtendedA)(e),_xmlUCSIsLatinExtendedB=Module._xmlUCSIsLatinExtendedB=e=>(_xmlUCSIsLatinExtendedB=Module._xmlUCSIsLatinExtendedB=wasmExports.xmlUCSIsLatinExtendedB)(e),_xmlUCSIsLatinExtendedAdditional=Module._xmlUCSIsLatinExtendedAdditional=e=>(_xmlUCSIsLatinExtendedAdditional=Module._xmlUCSIsLatinExtendedAdditional=wasmExports.xmlUCSIsLatinExtendedAdditional)(e),_xmlUCSIsLetterlikeSymbols=Module._xmlUCSIsLetterlikeSymbols=e=>(_xmlUCSIsLetterlikeSymbols=Module._xmlUCSIsLetterlikeSymbols=wasmExports.xmlUCSIsLetterlikeSymbols)(e),_xmlUCSIsLimbu=Module._xmlUCSIsLimbu=e=>(_xmlUCSIsLimbu=Module._xmlUCSIsLimbu=wasmExports.xmlUCSIsLimbu)(e),_xmlUCSIsLinearBIdeograms=Module._xmlUCSIsLinearBIdeograms=e=>(_xmlUCSIsLinearBIdeograms=Module._xmlUCSIsLinearBIdeograms=wasmExports.xmlUCSIsLinearBIdeograms)(e),_xmlUCSIsLinearBSyllabary=Module._xmlUCSIsLinearBSyllabary=e=>(_xmlUCSIsLinearBSyllabary=Module._xmlUCSIsLinearBSyllabary=wasmExports.xmlUCSIsLinearBSyllabary)(e),_xmlUCSIsLowSurrogates=Module._xmlUCSIsLowSurrogates=e=>(_xmlUCSIsLowSurrogates=Module._xmlUCSIsLowSurrogates=wasmExports.xmlUCSIsLowSurrogates)(e),_xmlUCSIsMalayalam=Module._xmlUCSIsMalayalam=e=>(_xmlUCSIsMalayalam=Module._xmlUCSIsMalayalam=wasmExports.xmlUCSIsMalayalam)(e),_xmlUCSIsMathematicalAlphanumericSymbols=Module._xmlUCSIsMathematicalAlphanumericSymbols=e=>(_xmlUCSIsMathematicalAlphanumericSymbols=Module._xmlUCSIsMathematicalAlphanumericSymbols=wasmExports.xmlUCSIsMathematicalAlphanumericSymbols)(e),_xmlUCSIsMathematicalOperators=Module._xmlUCSIsMathematicalOperators=e=>(_xmlUCSIsMathematicalOperators=Module._xmlUCSIsMathematicalOperators=wasmExports.xmlUCSIsMathematicalOperators)(e),_xmlUCSIsMiscellaneousMathematicalSymbolsA=Module._xmlUCSIsMiscellaneousMathematicalSymbolsA=e=>(_xmlUCSIsMiscellaneousMathematicalSymbolsA=Module._xmlUCSIsMiscellaneousMathematicalSymbolsA=wasmExports.xmlUCSIsMiscellaneousMathematicalSymbolsA)(e),_xmlUCSIsMiscellaneousMathematicalSymbolsB=Module._xmlUCSIsMiscellaneousMathematicalSymbolsB=e=>(_xmlUCSIsMiscellaneousMathematicalSymbolsB=Module._xmlUCSIsMiscellaneousMathematicalSymbolsB=wasmExports.xmlUCSIsMiscellaneousMathematicalSymbolsB)(e),_xmlUCSIsMiscellaneousSymbols=Module._xmlUCSIsMiscellaneousSymbols=e=>(_xmlUCSIsMiscellaneousSymbols=Module._xmlUCSIsMiscellaneousSymbols=wasmExports.xmlUCSIsMiscellaneousSymbols)(e),_xmlUCSIsMiscellaneousSymbolsandArrows=Module._xmlUCSIsMiscellaneousSymbolsandArrows=e=>(_xmlUCSIsMiscellaneousSymbolsandArrows=Module._xmlUCSIsMiscellaneousSymbolsandArrows=wasmExports.xmlUCSIsMiscellaneousSymbolsandArrows)(e),_xmlUCSIsMiscellaneousTechnical=Module._xmlUCSIsMiscellaneousTechnical=e=>(_xmlUCSIsMiscellaneousTechnical=Module._xmlUCSIsMiscellaneousTechnical=wasmExports.xmlUCSIsMiscellaneousTechnical)(e),_xmlUCSIsMongolian=Module._xmlUCSIsMongolian=e=>(_xmlUCSIsMongolian=Module._xmlUCSIsMongolian=wasmExports.xmlUCSIsMongolian)(e),_xmlUCSIsMusicalSymbols=Module._xmlUCSIsMusicalSymbols=e=>(_xmlUCSIsMusicalSymbols=Module._xmlUCSIsMusicalSymbols=wasmExports.xmlUCSIsMusicalSymbols)(e),_xmlUCSIsMyanmar=Module._xmlUCSIsMyanmar=e=>(_xmlUCSIsMyanmar=Module._xmlUCSIsMyanmar=wasmExports.xmlUCSIsMyanmar)(e),_xmlUCSIsNumberForms=Module._xmlUCSIsNumberForms=e=>(_xmlUCSIsNumberForms=Module._xmlUCSIsNumberForms=wasmExports.xmlUCSIsNumberForms)(e),_xmlUCSIsOgham=Module._xmlUCSIsOgham=e=>(_xmlUCSIsOgham=Module._xmlUCSIsOgham=wasmExports.xmlUCSIsOgham)(e),_xmlUCSIsOldItalic=Module._xmlUCSIsOldItalic=e=>(_xmlUCSIsOldItalic=Module._xmlUCSIsOldItalic=wasmExports.xmlUCSIsOldItalic)(e),_xmlUCSIsOpticalCharacterRecognition=Module._xmlUCSIsOpticalCharacterRecognition=e=>(_xmlUCSIsOpticalCharacterRecognition=Module._xmlUCSIsOpticalCharacterRecognition=wasmExports.xmlUCSIsOpticalCharacterRecognition)(e),_xmlUCSIsOriya=Module._xmlUCSIsOriya=e=>(_xmlUCSIsOriya=Module._xmlUCSIsOriya=wasmExports.xmlUCSIsOriya)(e),_xmlUCSIsOsmanya=Module._xmlUCSIsOsmanya=e=>(_xmlUCSIsOsmanya=Module._xmlUCSIsOsmanya=wasmExports.xmlUCSIsOsmanya)(e),_xmlUCSIsPhoneticExtensions=Module._xmlUCSIsPhoneticExtensions=e=>(_xmlUCSIsPhoneticExtensions=Module._xmlUCSIsPhoneticExtensions=wasmExports.xmlUCSIsPhoneticExtensions)(e),_xmlUCSIsPrivateUse=Module._xmlUCSIsPrivateUse=e=>(_xmlUCSIsPrivateUse=Module._xmlUCSIsPrivateUse=wasmExports.xmlUCSIsPrivateUse)(e),_xmlUCSIsPrivateUseArea=Module._xmlUCSIsPrivateUseArea=e=>(_xmlUCSIsPrivateUseArea=Module._xmlUCSIsPrivateUseArea=wasmExports.xmlUCSIsPrivateUseArea)(e),_xmlUCSIsRunic=Module._xmlUCSIsRunic=e=>(_xmlUCSIsRunic=Module._xmlUCSIsRunic=wasmExports.xmlUCSIsRunic)(e),_xmlUCSIsShavian=Module._xmlUCSIsShavian=e=>(_xmlUCSIsShavian=Module._xmlUCSIsShavian=wasmExports.xmlUCSIsShavian)(e),_xmlUCSIsSinhala=Module._xmlUCSIsSinhala=e=>(_xmlUCSIsSinhala=Module._xmlUCSIsSinhala=wasmExports.xmlUCSIsSinhala)(e),_xmlUCSIsSmallFormVariants=Module._xmlUCSIsSmallFormVariants=e=>(_xmlUCSIsSmallFormVariants=Module._xmlUCSIsSmallFormVariants=wasmExports.xmlUCSIsSmallFormVariants)(e),_xmlUCSIsSpacingModifierLetters=Module._xmlUCSIsSpacingModifierLetters=e=>(_xmlUCSIsSpacingModifierLetters=Module._xmlUCSIsSpacingModifierLetters=wasmExports.xmlUCSIsSpacingModifierLetters)(e),_xmlUCSIsSpecials=Module._xmlUCSIsSpecials=e=>(_xmlUCSIsSpecials=Module._xmlUCSIsSpecials=wasmExports.xmlUCSIsSpecials)(e),_xmlUCSIsSuperscriptsandSubscripts=Module._xmlUCSIsSuperscriptsandSubscripts=e=>(_xmlUCSIsSuperscriptsandSubscripts=Module._xmlUCSIsSuperscriptsandSubscripts=wasmExports.xmlUCSIsSuperscriptsandSubscripts)(e),_xmlUCSIsSupplementalArrowsA=Module._xmlUCSIsSupplementalArrowsA=e=>(_xmlUCSIsSupplementalArrowsA=Module._xmlUCSIsSupplementalArrowsA=wasmExports.xmlUCSIsSupplementalArrowsA)(e),_xmlUCSIsSupplementalArrowsB=Module._xmlUCSIsSupplementalArrowsB=e=>(_xmlUCSIsSupplementalArrowsB=Module._xmlUCSIsSupplementalArrowsB=wasmExports.xmlUCSIsSupplementalArrowsB)(e),_xmlUCSIsSupplementalMathematicalOperators=Module._xmlUCSIsSupplementalMathematicalOperators=e=>(_xmlUCSIsSupplementalMathematicalOperators=Module._xmlUCSIsSupplementalMathematicalOperators=wasmExports.xmlUCSIsSupplementalMathematicalOperators)(e),_xmlUCSIsSupplementaryPrivateUseAreaA=Module._xmlUCSIsSupplementaryPrivateUseAreaA=e=>(_xmlUCSIsSupplementaryPrivateUseAreaA=Module._xmlUCSIsSupplementaryPrivateUseAreaA=wasmExports.xmlUCSIsSupplementaryPrivateUseAreaA)(e),_xmlUCSIsSupplementaryPrivateUseAreaB=Module._xmlUCSIsSupplementaryPrivateUseAreaB=e=>(_xmlUCSIsSupplementaryPrivateUseAreaB=Module._xmlUCSIsSupplementaryPrivateUseAreaB=wasmExports.xmlUCSIsSupplementaryPrivateUseAreaB)(e),_xmlUCSIsSyriac=Module._xmlUCSIsSyriac=e=>(_xmlUCSIsSyriac=Module._xmlUCSIsSyriac=wasmExports.xmlUCSIsSyriac)(e),_xmlUCSIsTagalog=Module._xmlUCSIsTagalog=e=>(_xmlUCSIsTagalog=Module._xmlUCSIsTagalog=wasmExports.xmlUCSIsTagalog)(e),_xmlUCSIsTagbanwa=Module._xmlUCSIsTagbanwa=e=>(_xmlUCSIsTagbanwa=Module._xmlUCSIsTagbanwa=wasmExports.xmlUCSIsTagbanwa)(e),_xmlUCSIsTags=Module._xmlUCSIsTags=e=>(_xmlUCSIsTags=Module._xmlUCSIsTags=wasmExports.xmlUCSIsTags)(e),_xmlUCSIsTaiLe=Module._xmlUCSIsTaiLe=e=>(_xmlUCSIsTaiLe=Module._xmlUCSIsTaiLe=wasmExports.xmlUCSIsTaiLe)(e),_xmlUCSIsTaiXuanJingSymbols=Module._xmlUCSIsTaiXuanJingSymbols=e=>(_xmlUCSIsTaiXuanJingSymbols=Module._xmlUCSIsTaiXuanJingSymbols=wasmExports.xmlUCSIsTaiXuanJingSymbols)(e),_xmlUCSIsTamil=Module._xmlUCSIsTamil=e=>(_xmlUCSIsTamil=Module._xmlUCSIsTamil=wasmExports.xmlUCSIsTamil)(e),_xmlUCSIsTelugu=Module._xmlUCSIsTelugu=e=>(_xmlUCSIsTelugu=Module._xmlUCSIsTelugu=wasmExports.xmlUCSIsTelugu)(e),_xmlUCSIsThaana=Module._xmlUCSIsThaana=e=>(_xmlUCSIsThaana=Module._xmlUCSIsThaana=wasmExports.xmlUCSIsThaana)(e),_xmlUCSIsThai=Module._xmlUCSIsThai=e=>(_xmlUCSIsThai=Module._xmlUCSIsThai=wasmExports.xmlUCSIsThai)(e),_xmlUCSIsTibetan=Module._xmlUCSIsTibetan=e=>(_xmlUCSIsTibetan=Module._xmlUCSIsTibetan=wasmExports.xmlUCSIsTibetan)(e),_xmlUCSIsUgaritic=Module._xmlUCSIsUgaritic=e=>(_xmlUCSIsUgaritic=Module._xmlUCSIsUgaritic=wasmExports.xmlUCSIsUgaritic)(e),_xmlUCSIsUnifiedCanadianAboriginalSyllabics=Module._xmlUCSIsUnifiedCanadianAboriginalSyllabics=e=>(_xmlUCSIsUnifiedCanadianAboriginalSyllabics=Module._xmlUCSIsUnifiedCanadianAboriginalSyllabics=wasmExports.xmlUCSIsUnifiedCanadianAboriginalSyllabics)(e),_xmlUCSIsVariationSelectors=Module._xmlUCSIsVariationSelectors=e=>(_xmlUCSIsVariationSelectors=Module._xmlUCSIsVariationSelectors=wasmExports.xmlUCSIsVariationSelectors)(e),_xmlUCSIsVariationSelectorsSupplement=Module._xmlUCSIsVariationSelectorsSupplement=e=>(_xmlUCSIsVariationSelectorsSupplement=Module._xmlUCSIsVariationSelectorsSupplement=wasmExports.xmlUCSIsVariationSelectorsSupplement)(e),_xmlUCSIsYiRadicals=Module._xmlUCSIsYiRadicals=e=>(_xmlUCSIsYiRadicals=Module._xmlUCSIsYiRadicals=wasmExports.xmlUCSIsYiRadicals)(e),_xmlUCSIsYiSyllables=Module._xmlUCSIsYiSyllables=e=>(_xmlUCSIsYiSyllables=Module._xmlUCSIsYiSyllables=wasmExports.xmlUCSIsYiSyllables)(e),_xmlUCSIsYijingHexagramSymbols=Module._xmlUCSIsYijingHexagramSymbols=e=>(_xmlUCSIsYijingHexagramSymbols=Module._xmlUCSIsYijingHexagramSymbols=wasmExports.xmlUCSIsYijingHexagramSymbols)(e),_xmlUCSIsCatCs=Module._xmlUCSIsCatCs=e=>(_xmlUCSIsCatCs=Module._xmlUCSIsCatCs=wasmExports.xmlUCSIsCatCs)(e),___small_fprintf=Module.___small_fprintf=(e,t,r)=>(___small_fprintf=Module.___small_fprintf=wasmExports.__small_fprintf)(e,t,r),_xmlXPathBooleanFunction=Module._xmlXPathBooleanFunction=(e,t)=>(_xmlXPathBooleanFunction=Module._xmlXPathBooleanFunction=wasmExports.xmlXPathBooleanFunction)(e,t),_xmlXPathCeilingFunction=Module._xmlXPathCeilingFunction=(e,t)=>(_xmlXPathCeilingFunction=Module._xmlXPathCeilingFunction=wasmExports.xmlXPathCeilingFunction)(e,t),_xmlXPathCountFunction=Module._xmlXPathCountFunction=(e,t)=>(_xmlXPathCountFunction=Module._xmlXPathCountFunction=wasmExports.xmlXPathCountFunction)(e,t),_xmlXPathConcatFunction=Module._xmlXPathConcatFunction=(e,t)=>(_xmlXPathConcatFunction=Module._xmlXPathConcatFunction=wasmExports.xmlXPathConcatFunction)(e,t),_xmlXPathContainsFunction=Module._xmlXPathContainsFunction=(e,t)=>(_xmlXPathContainsFunction=Module._xmlXPathContainsFunction=wasmExports.xmlXPathContainsFunction)(e,t),_xmlXPathIdFunction=Module._xmlXPathIdFunction=(e,t)=>(_xmlXPathIdFunction=Module._xmlXPathIdFunction=wasmExports.xmlXPathIdFunction)(e,t),_xmlXPathFalseFunction=Module._xmlXPathFalseFunction=(e,t)=>(_xmlXPathFalseFunction=Module._xmlXPathFalseFunction=wasmExports.xmlXPathFalseFunction)(e,t),_xmlXPathFloorFunction=Module._xmlXPathFloorFunction=(e,t)=>(_xmlXPathFloorFunction=Module._xmlXPathFloorFunction=wasmExports.xmlXPathFloorFunction)(e,t),_xmlXPathLastFunction=Module._xmlXPathLastFunction=(e,t)=>(_xmlXPathLastFunction=Module._xmlXPathLastFunction=wasmExports.xmlXPathLastFunction)(e,t),_xmlXPathLangFunction=Module._xmlXPathLangFunction=(e,t)=>(_xmlXPathLangFunction=Module._xmlXPathLangFunction=wasmExports.xmlXPathLangFunction)(e,t),_xmlXPathLocalNameFunction=Module._xmlXPathLocalNameFunction=(e,t)=>(_xmlXPathLocalNameFunction=Module._xmlXPathLocalNameFunction=wasmExports.xmlXPathLocalNameFunction)(e,t),_xmlXPathNotFunction=Module._xmlXPathNotFunction=(e,t)=>(_xmlXPathNotFunction=Module._xmlXPathNotFunction=wasmExports.xmlXPathNotFunction)(e,t),_xmlXPathNamespaceURIFunction=Module._xmlXPathNamespaceURIFunction=(e,t)=>(_xmlXPathNamespaceURIFunction=Module._xmlXPathNamespaceURIFunction=wasmExports.xmlXPathNamespaceURIFunction)(e,t),_xmlXPathNormalizeFunction=Module._xmlXPathNormalizeFunction=(e,t)=>(_xmlXPathNormalizeFunction=Module._xmlXPathNormalizeFunction=wasmExports.xmlXPathNormalizeFunction)(e,t),_xmlXPathNumberFunction=Module._xmlXPathNumberFunction=(e,t)=>(_xmlXPathNumberFunction=Module._xmlXPathNumberFunction=wasmExports.xmlXPathNumberFunction)(e,t),_xmlXPathPositionFunction=Module._xmlXPathPositionFunction=(e,t)=>(_xmlXPathPositionFunction=Module._xmlXPathPositionFunction=wasmExports.xmlXPathPositionFunction)(e,t),_xmlXPathRoundFunction=Module._xmlXPathRoundFunction=(e,t)=>(_xmlXPathRoundFunction=Module._xmlXPathRoundFunction=wasmExports.xmlXPathRoundFunction)(e,t),_xmlXPathStringFunction=Module._xmlXPathStringFunction=(e,t)=>(_xmlXPathStringFunction=Module._xmlXPathStringFunction=wasmExports.xmlXPathStringFunction)(e,t),_xmlXPathStringLengthFunction=Module._xmlXPathStringLengthFunction=(e,t)=>(_xmlXPathStringLengthFunction=Module._xmlXPathStringLengthFunction=wasmExports.xmlXPathStringLengthFunction)(e,t),_xmlXPathStartsWithFunction=Module._xmlXPathStartsWithFunction=(e,t)=>(_xmlXPathStartsWithFunction=Module._xmlXPathStartsWithFunction=wasmExports.xmlXPathStartsWithFunction)(e,t),_xmlXPathSubstringFunction=Module._xmlXPathSubstringFunction=(e,t)=>(_xmlXPathSubstringFunction=Module._xmlXPathSubstringFunction=wasmExports.xmlXPathSubstringFunction)(e,t),_xmlXPathSubstringBeforeFunction=Module._xmlXPathSubstringBeforeFunction=(e,t)=>(_xmlXPathSubstringBeforeFunction=Module._xmlXPathSubstringBeforeFunction=wasmExports.xmlXPathSubstringBeforeFunction)(e,t),_xmlXPathSubstringAfterFunction=Module._xmlXPathSubstringAfterFunction=(e,t)=>(_xmlXPathSubstringAfterFunction=Module._xmlXPathSubstringAfterFunction=wasmExports.xmlXPathSubstringAfterFunction)(e,t),_xmlXPathSumFunction=Module._xmlXPathSumFunction=(e,t)=>(_xmlXPathSumFunction=Module._xmlXPathSumFunction=wasmExports.xmlXPathSumFunction)(e,t),_xmlXPathTrueFunction=Module._xmlXPathTrueFunction=(e,t)=>(_xmlXPathTrueFunction=Module._xmlXPathTrueFunction=wasmExports.xmlXPathTrueFunction)(e,t),_xmlXPathTranslateFunction=Module._xmlXPathTranslateFunction=(e,t)=>(_xmlXPathTranslateFunction=Module._xmlXPathTranslateFunction=wasmExports.xmlXPathTranslateFunction)(e,t),_xmlXPathNextSelf=Module._xmlXPathNextSelf=(e,t)=>(_xmlXPathNextSelf=Module._xmlXPathNextSelf=wasmExports.xmlXPathNextSelf)(e,t),_xmlXPathNextChild=Module._xmlXPathNextChild=(e,t)=>(_xmlXPathNextChild=Module._xmlXPathNextChild=wasmExports.xmlXPathNextChild)(e,t),_xmlXPathNextDescendant=Module._xmlXPathNextDescendant=(e,t)=>(_xmlXPathNextDescendant=Module._xmlXPathNextDescendant=wasmExports.xmlXPathNextDescendant)(e,t),_xmlXPathNextDescendantOrSelf=Module._xmlXPathNextDescendantOrSelf=(e,t)=>(_xmlXPathNextDescendantOrSelf=Module._xmlXPathNextDescendantOrSelf=wasmExports.xmlXPathNextDescendantOrSelf)(e,t),_xmlXPathNextParent=Module._xmlXPathNextParent=(e,t)=>(_xmlXPathNextParent=Module._xmlXPathNextParent=wasmExports.xmlXPathNextParent)(e,t),_xmlXPathNextAncestor=Module._xmlXPathNextAncestor=(e,t)=>(_xmlXPathNextAncestor=Module._xmlXPathNextAncestor=wasmExports.xmlXPathNextAncestor)(e,t),_xmlXPathNextAncestorOrSelf=Module._xmlXPathNextAncestorOrSelf=(e,t)=>(_xmlXPathNextAncestorOrSelf=Module._xmlXPathNextAncestorOrSelf=wasmExports.xmlXPathNextAncestorOrSelf)(e,t),_xmlXPathNextFollowingSibling=Module._xmlXPathNextFollowingSibling=(e,t)=>(_xmlXPathNextFollowingSibling=Module._xmlXPathNextFollowingSibling=wasmExports.xmlXPathNextFollowingSibling)(e,t),_xmlXPathNextPrecedingSibling=Module._xmlXPathNextPrecedingSibling=(e,t)=>(_xmlXPathNextPrecedingSibling=Module._xmlXPathNextPrecedingSibling=wasmExports.xmlXPathNextPrecedingSibling)(e,t),_xmlXPathNextFollowing=Module._xmlXPathNextFollowing=(e,t)=>(_xmlXPathNextFollowing=Module._xmlXPathNextFollowing=wasmExports.xmlXPathNextFollowing)(e,t),_xmlXPathNextNamespace=Module._xmlXPathNextNamespace=(e,t)=>(_xmlXPathNextNamespace=Module._xmlXPathNextNamespace=wasmExports.xmlXPathNextNamespace)(e,t),_xmlXPathNextAttribute=Module._xmlXPathNextAttribute=(e,t)=>(_xmlXPathNextAttribute=Module._xmlXPathNextAttribute=wasmExports.xmlXPathNextAttribute)(e,t),_zcalloc=Module._zcalloc=(e,t,r)=>(_zcalloc=Module._zcalloc=wasmExports.zcalloc)(e,t,r),_zcfree=Module._zcfree=(e,t)=>(_zcfree=Module._zcfree=wasmExports.zcfree)(e,t),_strerror=Module._strerror=e=>(_strerror=Module._strerror=wasmExports.strerror)(e),___dl_seterr=(e,t)=>(___dl_seterr=wasmExports.__dl_seterr)(e,t),_putc=Module._putc=(e,t)=>(_putc=Module._putc=wasmExports.putc)(e,t),_gmtime=Module._gmtime=e=>(_gmtime=Module._gmtime=wasmExports.gmtime)(e),_htonl=e=>(_htonl=wasmExports.htonl)(e),_htons=e=>(_htons=wasmExports.htons)(e),_ioctl=Module._ioctl=(e,t,r)=>(_ioctl=Module._ioctl=wasmExports.ioctl)(e,t,r),_emscripten_builtin_memalign=(e,t)=>(_emscripten_builtin_memalign=wasmExports.emscripten_builtin_memalign)(e,t),_ntohs=e=>(_ntohs=wasmExports.ntohs)(e),_srand=Module._srand=e=>(_srand=Module._srand=wasmExports.srand)(e),_rand=Module._rand=()=>(_rand=Module._rand=wasmExports.rand)(),__emscripten_timeout=(e,t)=>(__emscripten_timeout=wasmExports._emscripten_timeout)(e,t),___floatsitf=Module.___floatsitf=(e,t)=>(___floatsitf=Module.___floatsitf=wasmExports.__floatsitf)(e,t),___multf3=Module.___multf3=(e,t,r,a,o)=>(___multf3=Module.___multf3=wasmExports.__multf3)(e,t,r,a,o),___extenddftf2=Module.___extenddftf2=(e,t)=>(___extenddftf2=Module.___extenddftf2=wasmExports.__extenddftf2)(e,t),___getf2=Module.___getf2=(e,t,r,a)=>(___getf2=Module.___getf2=wasmExports.__getf2)(e,t,r,a),___subtf3=Module.___subtf3=(e,t,r,a,o)=>(___subtf3=Module.___subtf3=wasmExports.__subtf3)(e,t,r,a,o),___letf2=Module.___letf2=(e,t,r,a)=>(___letf2=Module.___letf2=wasmExports.__letf2)(e,t,r,a),___lttf2=Module.___lttf2=(e,t,r,a)=>(___lttf2=Module.___lttf2=wasmExports.__lttf2)(e,t,r,a),_setThrew=(e,t)=>(_setThrew=wasmExports.setThrew)(e,t),__emscripten_tempret_set=e=>(__emscripten_tempret_set=wasmExports._emscripten_tempret_set)(e),__emscripten_tempret_get=()=>(__emscripten_tempret_get=wasmExports._emscripten_tempret_get)(),___fixtfsi=Module.___fixtfsi=(e,t)=>(___fixtfsi=Module.___fixtfsi=wasmExports.__fixtfsi)(e,t),__emscripten_stack_restore=e=>(__emscripten_stack_restore=wasmExports._emscripten_stack_restore)(e),__emscripten_stack_alloc=e=>(__emscripten_stack_alloc=wasmExports._emscripten_stack_alloc)(e),_emscripten_stack_get_current=()=>(_emscripten_stack_get_current=wasmExports.emscripten_stack_get_current)(),___wasm_apply_data_relocs=()=>(___wasm_apply_data_relocs=wasmExports.__wasm_apply_data_relocs)(),_ScanKeywords=Module._ScanKeywords=18770052,_stderr=Module._stderr=18792480,_stdout=Module._stdout=18792784,_TopMemoryContext=Module._TopMemoryContext=18830716,_MainLWLockArray=Module._MainLWLockArray=18800668,_MyProc=Module._MyProc=18802328,_MyProcPid=Module._MyProcPid=18824228,_MyLatch=Module._MyLatch=18824260,_CurrentMemoryContext=Module._CurrentMemoryContext=18830712,_InterruptPending=Module._InterruptPending=18824092,_pg_global_prng_state=Module._pg_global_prng_state=18936304,_CurrentResourceOwner=Module._CurrentResourceOwner=18830692,_InterruptHoldoffCount=Module._InterruptHoldoffCount=18824132,_IsUnderPostmaster=Module._IsUnderPostmaster=18824165,_wal_level=Module._wal_level=18758340,_MyDatabaseId=Module._MyDatabaseId=18824148,_error_context_stack=Module._error_context_stack=18816816,_PG_exception_stack=Module._PG_exception_stack=18816820,___THREW__=Module.___THREW__=18950052,___threwValue=Module.___threwValue=18950056,_ShmemVariableCache=Module._ShmemVariableCache=18849760,_shmem_startup_hook=Module._shmem_startup_hook=18794508,_debug_query_string=Module._debug_query_string=18848300,_CritSectionCount=Module._CritSectionCount=18824140,_old_snapshot_threshold=Module._old_snapshot_threshold=18823756,_TopTransactionResourceOwner=Module._TopTransactionResourceOwner=18830700,_LocalBufferBlockPointers=Module._LocalBufferBlockPointers=18800556,_BufferBlocks=Module._BufferBlocks=18795304,_pgBufferUsage=Module._pgBufferUsage=18813728,_GUC_check_errdetail_string=Module._GUC_check_errdetail_string=18814680,_NBuffers=Module._NBuffers=18690456,_BufferDescriptors=Module._BufferDescriptors=18795300,_ParallelWorkerNumber=Module._ParallelWorkerNumber=18767008,_stdin=Module._stdin=18792632,_ScanKeywordTokens=Module._ScanKeywordTokens=17487664,_post_parse_analyze_hook=Module._post_parse_analyze_hook=18802584,_progname=Module._progname=18848060,_DataDir=Module._DataDir=18824144,_MyStartTime=Module._MyStartTime=18824232,_MyProcPort=Module._MyProcPort=18824248,_Log_directory=Module._Log_directory=18803120,_Log_filename=Module._Log_filename=18803124,_ConfigReloadPending=Module._ConfigReloadPending=18803272,_ShutdownRequestPending=Module._ShutdownRequestPending=18803276,_process_shared_preload_libraries_in_progress=Module._process_shared_preload_libraries_in_progress=18824080,_wal_segment_size=Module._wal_segment_size=18758360,_application_name=Module._application_name=18815988,_XactIsoLevel=Module._XactIsoLevel=18758700,_RmgrTable=Module._RmgrTable=18758816,_CacheMemoryContext=Module._CacheMemoryContext=18830728,_TopTransactionContext=Module._TopTransactionContext=18830736,_TTSOpsVirtual=Module._TTSOpsVirtual=18638668,_WalReceiverFunctions=Module._WalReceiverFunctions=18803712,_TTSOpsMinimalTuple=Module._TTSOpsMinimalTuple=18638764,_cluster_name=Module._cluster_name=18640444,_work_mem=Module._work_mem=18690432,_ClientAuthentication_hook=Module._ClientAuthentication_hook=18804032,_cma_rsize=Module._cma_rsize=18848108,_SOCKET_DATA=Module._SOCKET_DATA=18854312,_SOCKET_FILE=Module._SOCKET_FILE=18854308,_TTSOpsHeapTuple=Module._TTSOpsHeapTuple=18638716,_SnapshotAnyData=Module._SnapshotAnyData=18690240,_ExecutorStart_hook=Module._ExecutorStart_hook=18813600,_ExecutorRun_hook=Module._ExecutorRun_hook=18813604,_ExecutorFinish_hook=Module._ExecutorFinish_hook=18813608,_ExecutorEnd_hook=Module._ExecutorEnd_hook=18813612,_SPI_processed=Module._SPI_processed=18813624,_SPI_tuptable=Module._SPI_tuptable=18813632,_SPI_result=Module._SPI_result=18813636,_pgWalUsage=Module._pgWalUsage=18813840,_cpu_operator_cost=Module._cpu_operator_cost=18638912,_planner_hook=Module._planner_hook=18813876,_maintenance_work_mem=Module._maintenance_work_mem=18690448,_max_parallel_maintenance_workers=Module._max_parallel_maintenance_workers=18690452,_cpu_tuple_cost=Module._cpu_tuple_cost=18638896,_seq_page_cost=Module._seq_page_cost=18638880,_check_function_bodies=Module._check_function_bodies=18640389,_quote_all_identifiers=Module._quote_all_identifiers=18848065,_extra_float_digits=Module._extra_float_digits=18692128,_IntervalStyle=Module._IntervalStyle=18824172,_pg_crc32_table=Module._pg_crc32_table=18115504,_oldSnapshotControl=Module._oldSnapshotControl=18823760,_shmem_request_hook=Module._shmem_request_hook=18824084,_DateStyle=Module._DateStyle=18690420,_pg_number_of_ones=Module._pg_number_of_ones=18433360,_xmlStructuredError=Module._xmlStructuredError=18936668,_xmlStructuredErrorContext=Module._xmlStructuredErrorContext=18936676,_xmlGenericErrorContext=Module._xmlGenericErrorContext=18936672,_xmlGenericError=Module._xmlGenericError=18774356,_xmlIsBaseCharGroup=Module._xmlIsBaseCharGroup=18774120,_xmlIsDigitGroup=Module._xmlIsDigitGroup=18774152,_xmlIsCombiningGroup=Module._xmlIsCombiningGroup=18774136,_xmlIsExtenderGroup=Module._xmlIsExtenderGroup=18774168,_xmlFree=Module._xmlFree=18774320,_ProcessUtility_hook=Module._ProcessUtility_hook=18848012,_single_mode_feed=Module._single_mode_feed=18848076,_cma_wsize=Module._cma_wsize=18848116,_check_password_hook=Module._check_password_hook=18850784,_IDB_STAGE=Module._IDB_STAGE=18854320,_IDB_PIPE_FP=Module._IDB_PIPE_FP=18854316,_pg_scram_mech=Module._pg_scram_mech=18774064,_pg_g_threadlock=Module._pg_g_threadlock=18772168,_pgresStatus=Module._pgresStatus=18773856,_xmlIsPubidChar_tab=Module._xmlIsPubidChar_tab=18433648,_xmlGetWarningsDefaultValue=Module._xmlGetWarningsDefaultValue=18774348,_xmlMalloc=Module._xmlMalloc=18774324,_xmlRealloc=Module._xmlRealloc=18774332,_xmlLastError=Module._xmlLastError=18936688,_xmlMallocAtomic=Module._xmlMallocAtomic=18774328,_xmlMemStrdup=Module._xmlMemStrdup=18774336,_xmlBufferAllocScheme=Module._xmlBufferAllocScheme=18774340,_xmlDefaultBufferSize=Module._xmlDefaultBufferSize=18774344,_xmlParserDebugEntities=Module._xmlParserDebugEntities=18936628,_xmlDoValidityCheckingDefaultValue=Module._xmlDoValidityCheckingDefaultValue=18936632,_xmlLoadExtDtdDefaultValue=Module._xmlLoadExtDtdDefaultValue=18936636,_xmlPedanticParserDefaultValue=Module._xmlPedanticParserDefaultValue=18936640,_xmlLineNumbersDefaultValue=Module._xmlLineNumbersDefaultValue=18936644,_xmlKeepBlanksDefaultValue=Module._xmlKeepBlanksDefaultValue=18774352,_xmlSubstituteEntitiesDefaultValue=Module._xmlSubstituteEntitiesDefaultValue=18936648,_xmlRegisterNodeDefaultValue=Module._xmlRegisterNodeDefaultValue=18936652,_xmlDeregisterNodeDefaultValue=Module._xmlDeregisterNodeDefaultValue=18936656,_xmlParserInputBufferCreateFilenameValue=Module._xmlParserInputBufferCreateFilenameValue=18936660,_xmlOutputBufferCreateFilenameValue=Module._xmlOutputBufferCreateFilenameValue=18936664,_xmlIndentTreeOutput=Module._xmlIndentTreeOutput=18774360,_xmlTreeIndentString=Module._xmlTreeIndentString=18774364,_xmlSaveNoEmptyTags=Module._xmlSaveNoEmptyTags=18936680,_xmlDefaultSAXHandler=Module._xmlDefaultSAXHandler=18774368,_xmlDefaultSAXLocator=Module._xmlDefaultSAXLocator=18774480,_xmlParserMaxDepth=Module._xmlParserMaxDepth=18775140,_xmlStringText=Module._xmlStringText=18435456,_xmlStringComment=Module._xmlStringComment=18435471,_xmlStringTextNoenc=Module._xmlStringTextNoenc=18435461,_xmlXPathNAN=Module._xmlXPathNAN=18937352,_xmlXPathNINF=Module._xmlXPathNINF=18937368,_xmlXPathPINF=Module._xmlXPathPINF=18937360,_z_errmsg=Module._z_errmsg=18791696,__length_code=Module.__length_code=18455120,__dist_code=Module.__dist_code=18454608;function invoke_i(e){var t=stackSave();try{return getWasmTableEntry(e)()}catch(r){if(stackRestore(t),r!==r+0)throw r;_setThrew(1,0)}}function invoke_v(e){var t=stackSave();try{getWasmTableEntry(e)()}catch(r){if(stackRestore(t),r!==r+0)throw r;_setThrew(1,0)}}function invoke_vi(e,t){var r=stackSave();try{getWasmTableEntry(e)(t)}catch(a){if(stackRestore(r),a!==a+0)throw a;_setThrew(1,0)}}function invoke_iii(e,t,r){var a=stackSave();try{return getWasmTableEntry(e)(t,r)}catch(o){if(stackRestore(a),o!==o+0)throw o;_setThrew(1,0)}}function invoke_iiiiii(e,t,r,a,o,s){var l=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s)}catch(n){if(stackRestore(l),n!==n+0)throw n;_setThrew(1,0)}}function invoke_viii(e,t,r,a){var o=stackSave();try{getWasmTableEntry(e)(t,r,a)}catch(s){if(stackRestore(o),s!==s+0)throw s;_setThrew(1,0)}}function invoke_viiiiiii(e,t,r,a,o,s,l,n){var _=stackSave();try{getWasmTableEntry(e)(t,r,a,o,s,l,n)}catch(m){if(stackRestore(_),m!==m+0)throw m;_setThrew(1,0)}}function invoke_iiii(e,t,r,a){var o=stackSave();try{return getWasmTableEntry(e)(t,r,a)}catch(s){if(stackRestore(o),s!==s+0)throw s;_setThrew(1,0)}}function invoke_viiii(e,t,r,a,o){var s=stackSave();try{getWasmTableEntry(e)(t,r,a,o)}catch(l){if(stackRestore(s),l!==l+0)throw l;_setThrew(1,0)}}function invoke_iiiii(e,t,r,a,o){var s=stackSave();try{return getWasmTableEntry(e)(t,r,a,o)}catch(l){if(stackRestore(s),l!==l+0)throw l;_setThrew(1,0)}}function invoke_vii(e,t,r){var a=stackSave();try{getWasmTableEntry(e)(t,r)}catch(o){if(stackRestore(a),o!==o+0)throw o;_setThrew(1,0)}}function invoke_ii(e,t){var r=stackSave();try{return getWasmTableEntry(e)(t)}catch(a){if(stackRestore(r),a!==a+0)throw a;_setThrew(1,0)}}function invoke_viiiiiiii(e,t,r,a,o,s,l,n,_){var m=stackSave();try{getWasmTableEntry(e)(t,r,a,o,s,l,n,_)}catch(p){if(stackRestore(m),p!==p+0)throw p;_setThrew(1,0)}}function invoke_viiiii(e,t,r,a,o,s){var l=stackSave();try{getWasmTableEntry(e)(t,r,a,o,s)}catch(n){if(stackRestore(l),n!==n+0)throw n;_setThrew(1,0)}}function invoke_ij(e,t){var r=stackSave();try{return getWasmTableEntry(e)(t)}catch(a){if(stackRestore(r),a!==a+0)throw a;_setThrew(1,0)}}function invoke_ji(e,t){var r=stackSave();try{return getWasmTableEntry(e)(t)}catch(a){if(stackRestore(r),a!==a+0)throw a;return _setThrew(1,0),0n}}function invoke_ijiiiiii(e,t,r,a,o,s,l,n){var _=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,l,n)}catch(m){if(stackRestore(_),m!==m+0)throw m;_setThrew(1,0)}}function invoke_vij(e,t,r){var a=stackSave();try{getWasmTableEntry(e)(t,r)}catch(o){if(stackRestore(a),o!==o+0)throw o;_setThrew(1,0)}}function invoke_vj(e,t){var r=stackSave();try{getWasmTableEntry(e)(t)}catch(a){if(stackRestore(r),a!==a+0)throw a;_setThrew(1,0)}}function invoke_viijii(e,t,r,a,o,s){var l=stackSave();try{getWasmTableEntry(e)(t,r,a,o,s)}catch(n){if(stackRestore(l),n!==n+0)throw n;_setThrew(1,0)}}function invoke_iiiiiji(e,t,r,a,o,s,l){var n=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,l)}catch(_){if(stackRestore(n),_!==_+0)throw _;_setThrew(1,0)}}function invoke_viijiiii(e,t,r,a,o,s,l,n){var _=stackSave();try{getWasmTableEntry(e)(t,r,a,o,s,l,n)}catch(m){if(stackRestore(_),m!==m+0)throw m;_setThrew(1,0)}}function invoke_viij(e,t,r,a){var o=stackSave();try{getWasmTableEntry(e)(t,r,a)}catch(s){if(stackRestore(o),s!==s+0)throw s;_setThrew(1,0)}}function invoke_jiiiiiiii(e,t,r,a,o,s,l,n,_){var m=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,l,n,_)}catch(p){if(stackRestore(m),p!==p+0)throw p;return _setThrew(1,0),0n}}function invoke_jiiiii(e,t,r,a,o,s){var l=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s)}catch(n){if(stackRestore(l),n!==n+0)throw n;return _setThrew(1,0),0n}}function invoke_iiiiiiiii(e,t,r,a,o,s,l,n,_){var m=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,l,n,_)}catch(p){if(stackRestore(m),p!==p+0)throw p;_setThrew(1,0)}}function invoke_vji(e,t,r){var a=stackSave();try{getWasmTableEntry(e)(t,r)}catch(o){if(stackRestore(a),o!==o+0)throw o;_setThrew(1,0)}}function invoke_iiiijii(e,t,r,a,o,s,l){var n=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,l)}catch(_){if(stackRestore(n),_!==_+0)throw _;_setThrew(1,0)}}function invoke_vijiji(e,t,r,a,o,s){var l=stackSave();try{getWasmTableEntry(e)(t,r,a,o,s)}catch(n){if(stackRestore(l),n!==n+0)throw n;_setThrew(1,0)}}function invoke_viji(e,t,r,a){var o=stackSave();try{getWasmTableEntry(e)(t,r,a)}catch(s){if(stackRestore(o),s!==s+0)throw s;_setThrew(1,0)}}function invoke_iiij(e,t,r,a){var o=stackSave();try{return getWasmTableEntry(e)(t,r,a)}catch(s){if(stackRestore(o),s!==s+0)throw s;_setThrew(1,0)}}function invoke_iiiiiiii(e,t,r,a,o,s,l,n){var _=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,l,n)}catch(m){if(stackRestore(_),m!==m+0)throw m;_setThrew(1,0)}}function invoke_iiiiiii(e,t,r,a,o,s,l){var n=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,l)}catch(_){if(stackRestore(n),_!==_+0)throw _;_setThrew(1,0)}}function invoke_di(e,t){var r=stackSave();try{return getWasmTableEntry(e)(t)}catch(a){if(stackRestore(r),a!==a+0)throw a;_setThrew(1,0)}}function invoke_id(e,t){var r=stackSave();try{return getWasmTableEntry(e)(t)}catch(a){if(stackRestore(r),a!==a+0)throw a;_setThrew(1,0)}}function invoke_ijiiiii(e,t,r,a,o,s,l){var n=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,l)}catch(_){if(stackRestore(n),_!==_+0)throw _;_setThrew(1,0)}}function invoke_jiiii(e,t,r,a,o){var s=stackSave();try{return getWasmTableEntry(e)(t,r,a,o)}catch(l){if(stackRestore(s),l!==l+0)throw l;return _setThrew(1,0),0n}}function invoke_viiiiii(e,t,r,a,o,s,l){var n=stackSave();try{getWasmTableEntry(e)(t,r,a,o,s,l)}catch(_){if(stackRestore(n),_!==_+0)throw _;_setThrew(1,0)}}function invoke_viiiiiiiiiiii(e,t,r,a,o,s,l,n,_,m,p,d,g){var c=stackSave();try{getWasmTableEntry(e)(t,r,a,o,s,l,n,_,m,p,d,g)}catch(f){if(stackRestore(c),f!==f+0)throw f;_setThrew(1,0)}}function invoke_jii(e,t,r){var a=stackSave();try{return getWasmTableEntry(e)(t,r)}catch(o){if(stackRestore(a),o!==o+0)throw o;return _setThrew(1,0),0n}}function invoke_iiiij(e,t,r,a,o){var s=stackSave();try{return getWasmTableEntry(e)(t,r,a,o)}catch(l){if(stackRestore(s),l!==l+0)throw l;_setThrew(1,0)}}function invoke_iiiiiiiiii(e,t,r,a,o,s,l,n,_,m){var p=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,l,n,_,m)}catch(d){if(stackRestore(p),d!==d+0)throw d;_setThrew(1,0)}}function invoke_viiji(e,t,r,a,o){var s=stackSave();try{getWasmTableEntry(e)(t,r,a,o)}catch(l){if(stackRestore(s),l!==l+0)throw l;_setThrew(1,0)}}function invoke_iiji(e,t,r,a){var o=stackSave();try{return getWasmTableEntry(e)(t,r,a)}catch(s){if(stackRestore(o),s!==s+0)throw s;_setThrew(1,0)}}function invoke_vid(e,t,r){var a=stackSave();try{getWasmTableEntry(e)(t,r)}catch(o){if(stackRestore(a),o!==o+0)throw o;_setThrew(1,0)}}function invoke_viiiiiiiii(e,t,r,a,o,s,l,n,_,m){var p=stackSave();try{getWasmTableEntry(e)(t,r,a,o,s,l,n,_,m)}catch(d){if(stackRestore(p),d!==d+0)throw d;_setThrew(1,0)}}function invoke_viiij(e,t,r,a,o){var s=stackSave();try{getWasmTableEntry(e)(t,r,a,o)}catch(l){if(stackRestore(s),l!==l+0)throw l;_setThrew(1,0)}}function invoke_iiiiiiiiiiiiiiiii(e,t,r,a,o,s,l,n,_,m,p,d,g,c,f,u,w){var h=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,l,n,_,m,p,d,g,c,f,u,w)}catch(S){if(stackRestore(h),S!==S+0)throw S;_setThrew(1,0)}}Module.addRunDependency=addRunDependency,Module.removeRunDependency=removeRunDependency,Module.callMain=callMain,Module.ccall=ccall,Module.cwrap=cwrap,Module.setValue=setValue,Module.getValue=getValue,Module.UTF8ToString=UTF8ToString,Module.stringToNewUTF8=stringToNewUTF8,Module.stringToUTF8OnStack=stringToUTF8OnStack,Module.FS_createPreloadedFile=FS_createPreloadedFile,Module.FS_unlink=FS_unlink,Module.FS_createPath=FS_createPath,Module.FS_createDevice=FS_createDevice,Module.FS=FS,Module.FS_createDataFile=FS_createDataFile,Module.FS_createLazyFile=FS_createLazyFile;var calledRun;dependenciesFulfilled=function e(){calledRun||run(),calledRun||(dependenciesFulfilled=e)};function callMain(e=[]){var t=resolveGlobalSymbol("main").sym;if(t){e.unshift(thisProgram);var r=e.length,a=stackAlloc((r+1)*4),o=a;e.forEach(l=>{HEAPU32[o>>2]=stringToUTF8OnStack(l),o+=4}),HEAPU32[o>>2]=0;try{var s=t(r,a);return exitJS(s,!0),s}catch(l){return handleException(l)}}}function run(e=arguments_){if(runDependencies>0||(preRun(),runDependencies>0))return;function t(){calledRun||(calledRun=!0,Module.calledRun=!0,!ABORT&&(initRuntime(),preMain(),readyPromiseResolve(Module),Module.onRuntimeInitialized?.(),shouldRunNow&&callMain(e),postRun()))}Module.setStatus?(Module.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>Module.setStatus(""),1),t()},1)):t()}if(Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;return Module.noInitialRun&&(shouldRunNow=!1),run(),moduleRtn=readyPromise,moduleRtn}})(),ke=Qe;var Te=ke;var Y,W,j,J,$,_e,ie,me,Z,ae,oe,se,V,G,k,K,O,qe,re,pe=class pe extends _chunk_A7RFOIQ7_js__WEBPACK_IMPORTED_MODULE_0__.a{constructor(r={},a={}){super();(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.f)(this,O);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.f)(this,Y,!1);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.f)(this,W,!1);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.f)(this,j,!1);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.f)(this,J,!1);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.f)(this,$,!1);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.f)(this,_e,new H);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.f)(this,ie,new H);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.f)(this,me,new H);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.f)(this,Z,!1);this.debug=0;(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.f)(this,ae);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.f)(this,oe,[]);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.f)(this,se,new _chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_1__.o);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.f)(this,V);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.f)(this,G);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.f)(this,k,new Map);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.f)(this,K,new Set);typeof r=="string"?a={dataDir:r,...a}:a=r,this.dataDir=a.dataDir,a.parsers!==void 0&&(this.parsers={...this.parsers,...a.parsers}),a.serializers!==void 0&&(this.serializers={...this.serializers,...a.serializers}),a?.debug!==void 0&&(this.debug=a.debug),a?.relaxedDurability!==void 0&&(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.g)(this,$,a.relaxedDurability),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.g)(this,ae,a.extensions??{}),this.waitReady=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.h)(this,O,qe).call(this,a??{})}static async create(r,a){let o=typeof r=="string"?{dataDir:r,...a??{}}:r??{},s=new pe(o);return await s.waitReady,s}get Module(){return this.mod}get ready(){return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,Y)&&!(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,W)&&!(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,j)}get closed(){return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,j)}async close(){await this._checkReady(),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.g)(this,W,!0);for(let r of (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,oe))await r();try{await this.execProtocol(_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_1__.i.end()),this.mod._pg_shutdown()}catch(r){let a=r;if(!(a.name==="ExitStatus"&&a.status===0))throw r}await this.fs.closeFs(),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.g)(this,j,!0),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.g)(this,W,!1)}async[Symbol.asyncDispose](){await this.close()}async _handleBlob(r){(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.g)(this,V,r?await r.arrayBuffer():void 0)}async _cleanupBlob(){(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.g)(this,V,void 0)}async _getWrittenBlob(){if(!(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,G))return;let r=new Blob((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,G));return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.g)(this,G,void 0),r}async _checkReady(){if((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,W))throw new Error("PGlite is closing");if((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,j))throw new Error("PGlite is closed");(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,Y)||await this.waitReady}execProtocolRawSync(r){let a=r.length,o=this.mod;o._interactive_write(a),o.HEAPU8.set(r,1),o._interactive_one();let s=a+2,l=s+o._interactive_read();return o.HEAPU8.subarray(s,l)}async execProtocolRaw(r,{syncToFs:a=!0}={}){let o=r.length,s=this.mod;s._interactive_write(o),s.HEAPU8.set(r,1),s._interactive_one();let l=o+2,n=l+s._interactive_read(),_=s.HEAPU8.subarray(l,n);return a&&await this.syncToFs(),_}async execProtocol(r,{syncToFs:a=!0,throwOnError:o=!0,onNotice:s}={}){let l=await this.execProtocolRaw(r,{syncToFs:a}),n=[];return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,se).parse(l,_=>{if(_ instanceof _chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_1__.j){if((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.g)(this,se,new _chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_1__.o),o)throw _}else if(_ instanceof _chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_1__.m)this.debug>0&&console.warn(_),s&&s(_);else if(_ instanceof _chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_1__.l)switch(_.text){case"BEGIN":(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.g)(this,J,!0);break;case"COMMIT":case"ROLLBACK":(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.g)(this,J,!1);break}else if(_ instanceof _chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_1__.k){let m=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,k).get(_.channel);m&&m.forEach(p=>{queueMicrotask(()=>p(_.payload))}),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,K).forEach(p=>{queueMicrotask(()=>p(_.channel,_.payload))})}n.push(_)}),{messages:n,data:l}}isInTransaction(){return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,J)}async syncToFs(){if((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,Z))return;(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.g)(this,Z,!0);let r=async()=>{await (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,me).runExclusive(async()=>{(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.g)(this,Z,!1),await this.fs.syncToFs((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,$))})};(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,$)?r():await r()}async listen(r,a){let o=(0,_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_1__.x)(r);(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,k).has(o)||(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,k).set(o,new Set),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,k).get(o).add(a);try{await this.exec(`LISTEN ${r}`)}catch(s){throw (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,k).get(o).delete(a),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,k).get(o)?.size===0&&(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,k).delete(o),s}return async()=>{await this.unlisten(o,a)}}async unlisten(r,a){let o=(0,_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_1__.x)(r);a?((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,k).get(o)?.delete(a),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,k).get(o)?.size===0&&(await this.exec(`UNLISTEN ${r}`),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,k).delete(o))):(await this.exec(`UNLISTEN ${r}`),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,k).delete(o))}onNotification(r){return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,K).add(r),()=>{(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,K).delete(r)}}offNotification(r){(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,K).delete(r)}async dumpDataDir(r){let a=this.dataDir?.split("/").pop()??"pgdata";return this.fs.dumpTar(a,r)}_runExclusiveQuery(r){return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,_e).runExclusive(r)}_runExclusiveTransaction(r){return (0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,ie).runExclusive(r)}async clone(){let r=await this.dumpDataDir("none");return new pe({loadDataDir:r})}};Y=new WeakMap,W=new WeakMap,j=new WeakMap,J=new WeakMap,$=new WeakMap,_e=new WeakMap,ie=new WeakMap,me=new WeakMap,Z=new WeakMap,ae=new WeakMap,oe=new WeakMap,se=new WeakMap,V=new WeakMap,G=new WeakMap,k=new WeakMap,K=new WeakMap,O=new WeakSet,qe=async function(r){if(r.fs)this.fs=r.fs;else{let{dataDir:d,fsType:g}=Fe(r.dataDir);this.fs=await Ae(d,g)}let a={},o=[],s=[`PGDATA=${_chunk_WGR4JCLS_js__WEBPACK_IMPORTED_MODULE_2__.d}`,`PREFIX=${_chunk_WGR4JCLS_js__WEBPACK_IMPORTED_MODULE_2__.c}`,`PGUSER=${r.username??"postgres"}`,`PGDATABASE=${r.database??"template1"}`,"MODE=REACT","REPL=N",...this.debug?["-d",this.debug.toString()]:[]];r.wasmModule||(0,_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_1__.r)();let l=r.fsBundle?r.fsBundle.arrayBuffer():(0,_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_1__.t)(),n;l.then(d=>{n=d});let _={WASM_PREFIX:_chunk_WGR4JCLS_js__WEBPACK_IMPORTED_MODULE_2__.c,arguments:s,INITIAL_MEMORY:r.initialMemory,noExitRuntime:!0,...this.debug>0?{print:console.info,printErr:console.error}:{print:()=>{},printErr:()=>{}},instantiateWasm:(d,g)=>((0,_chunk_EADU5A67_js__WEBPACK_IMPORTED_MODULE_1__.s)(d,r.wasmModule).then(({instance:c,module:f})=>{g(c,f)}),{}),getPreloadedPackage:(d,g)=>{if(d==="postgres.data"){if(n.byteLength!==g)throw new Error(`Invalid FS bundle size: ${n.byteLength} !== ${g}`);return n}throw new Error(`Unknown package: ${d}`)},preRun:[d=>{let g=d.FS.makedev(64,0),c={open:f=>{},close:f=>{},read:(f,u,w,h,S)=>{let M=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,V);if(!M)throw new Error("No /dev/blob File or Blob provided to read from");let y=new Uint8Array(M);if(S>=y.length)return 0;let x=Math.min(y.length-S,h);for(let E=0;E((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,G)??(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.g)(this,G,[]),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,G).push(u.slice(w,w+h)),h),llseek:(f,u,w)=>{let h=(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,V);if(!h)throw new Error("No /dev/blob File or Blob provided to llseek");let S=u;if(w===1?S+=f.position:w===2&&(S=new Uint8Array(h).length),S<0)throw new d.FS.ErrnoError(28);return S}};d.FS.registerDevice(g,c),d.FS.mkdev("/dev/blob",g)}]},{emscriptenOpts:m}=await this.fs.init(this,_);_=m;for(let[d,g]of Object.entries((0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,ae)))if(g instanceof URL)a[d]=ge(g);else{let c=await g.setup(this,_);if(c.emscriptenOpts&&(_=c.emscriptenOpts),c.namespaceObj){let f=this;f[d]=c.namespaceObj}c.bundlePath&&(a[d]=ge(c.bundlePath)),c.init&&o.push(c.init),c.close&&(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.e)(this,oe).push(c.close)}if(_.pg_extensions=a,await l,this.mod=await Te(_),await this.fs.initialSyncFs(),r.loadDataDir){if(this.mod.FS.analyzePath(_chunk_WGR4JCLS_js__WEBPACK_IMPORTED_MODULE_2__.d+"/PG_VERSION").exists)throw new Error("Database already exists, cannot load from tarball");(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.h)(this,O,re).call(this,"pglite: loading data from tarball"),await (0,_chunk_WGR4JCLS_js__WEBPACK_IMPORTED_MODULE_2__.b)(this.mod.FS,r.loadDataDir,_chunk_WGR4JCLS_js__WEBPACK_IMPORTED_MODULE_2__.d)}this.mod.FS.analyzePath(_chunk_WGR4JCLS_js__WEBPACK_IMPORTED_MODULE_2__.d+"/PG_VERSION").exists?(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.h)(this,O,re).call(this,"pglite: found DB, resuming"):(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.h)(this,O,re).call(this,"pglite: no db"),await Pe(this.mod,(...d)=>(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.h)(this,O,re).call(this,...d));let p=this.mod._pg_initdb();if(!p)throw new Error("INITDB failed to return value");if(p&1)throw new Error("INITDB failed");if(p&2){let d=r.username??"postgres",g=r.database??"template1";if(p&4){if(!(p&12))throw new Error("Invalid db/user combination")}else if(g!=="template1"&&d!=="postgres")throw new Error("INITDB created a new datadir, but an alternative db/user was requested")}await this.syncToFs(),(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.g)(this,Y,!0),await this.exec("SET search_path TO public;"),await this._initArrayTypes();for(let d of o)await d()},re=function(...r){this.debug>0&&console.log(...r)};var Ue=pe;(0,_chunk_BTBUZ646_js__WEBPACK_IMPORTED_MODULE_4__.j)(); -//# sourceMappingURL=index.js.map - -/***/ }), - -/***/ "./node_modules/@electric-sql/pglite/dist/postgres.data": -/*!**************************************************************!*\ - !*** ./node_modules/@electric-sql/pglite/dist/postgres.data ***! - \**************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -module.exports = __webpack_require__.p + "6a6af95f67e70830cb39.data"; - -/***/ }), - -/***/ "./node_modules/@electric-sql/pglite/dist/postgres.wasm": -/*!**************************************************************!*\ - !*** ./node_modules/@electric-sql/pglite/dist/postgres.wasm ***! - \**************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -module.exports = __webpack_require__.p + "882a4fc4178bf2b803a6.wasm"; - -/***/ }), - -/***/ "./src/cgi-worker.mjs": -/*!****************************!*\ - !*** ./src/cgi-worker.mjs ***! - \****************************/ -/***/ ((__webpack_module__, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try { -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var php_cgi_wasm_PhpCgiWorker_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! php-cgi-wasm/PhpCgiWorker.mjs */ "../packages/php-cgi-wasm/PhpCgiWorker.mjs"); -/* harmony import */ var _electric_sql_pglite__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @electric-sql/pglite */ "./node_modules/@electric-sql/pglite/dist/index.js"); -/* eslint-disable no-restricted-globals */ - - -const buildType = {"BUILD_TYPE":"dynamic"}.BUILD_TYPE ?? 'dynamic'; -const sharedLibs = []; -const files = [{ - parent: '/preload/test_www/', - name: 'hello-world.php', - url: './scripts/hello-world.php' -}, { - parent: '/preload/test_www/', - name: 'phpinfo.php', - url: './scripts/phpinfo.php' -}, { - parent: '/preload/', - name: 'list-extensions.php', - url: './scripts/list-extensions.php' -}]; -if (buildType === 'dynamic') { - sharedLibs.push(...(await Promise.all([__webpack_require__.e(/*! import() */ "packages_libxml_index_mjs").then(__webpack_require__.bind(__webpack_require__, /*! php-wasm-libxml */ "../packages/libxml/index.mjs")), __webpack_require__.e(/*! import() */ "packages_dom_index_mjs").then(__webpack_require__.bind(__webpack_require__, /*! php-wasm-dom */ "../packages/dom/index.mjs")), __webpack_require__.e(/*! import() */ "packages_zlib_index_mjs").then(__webpack_require__.bind(__webpack_require__, /*! php-wasm-zlib */ "../packages/zlib/index.mjs")), __webpack_require__.e(/*! import() */ "packages_libzip_index_mjs").then(__webpack_require__.bind(__webpack_require__, /*! php-wasm-libzip */ "../packages/libzip/index.mjs")), __webpack_require__.e(/*! import() */ "packages_gd_index_mjs").then(__webpack_require__.bind(__webpack_require__, /*! php-wasm-gd */ "../packages/gd/index.mjs")), __webpack_require__.e(/*! import() */ "packages_iconv_index_mjs").then(__webpack_require__.bind(__webpack_require__, /*! php-wasm-iconv */ "../packages/iconv/index.mjs")), __webpack_require__.e(/*! import() */ "packages_intl_index_mjs").then(__webpack_require__.bind(__webpack_require__, /*! php-wasm-intl */ "../packages/intl/index.mjs")), __webpack_require__.e(/*! import() */ "packages_openssl_index_mjs").then(__webpack_require__.bind(__webpack_require__, /*! php-wasm-openssl */ "../packages/openssl/index.mjs")), __webpack_require__.e(/*! import() */ "packages_mbstring_index_mjs").then(__webpack_require__.bind(__webpack_require__, /*! php-wasm-mbstring */ "../packages/mbstring/index.mjs")), __webpack_require__.e(/*! import() */ "packages_sqlite_index_mjs").then(__webpack_require__.bind(__webpack_require__, /*! php-wasm-sqlite */ "../packages/sqlite/index.mjs")), __webpack_require__.e(/*! import() */ "packages_xml_index_mjs").then(__webpack_require__.bind(__webpack_require__, /*! php-wasm-xml */ "../packages/xml/index.mjs")), __webpack_require__.e(/*! import() */ "packages_simplexml_index_mjs").then(__webpack_require__.bind(__webpack_require__, /*! php-wasm-simplexml */ "../packages/simplexml/index.mjs")), __webpack_require__.e(/*! import() */ "packages_tidy_index_mjs").then(__webpack_require__.bind(__webpack_require__, /*! php-wasm-tidy */ "../packages/tidy/index.mjs")), __webpack_require__.e(/*! import() */ "packages_libyaml_index_mjs").then(__webpack_require__.bind(__webpack_require__, /*! php-wasm-yaml */ "../packages/libyaml/index.mjs"))])).map(m => m.default)); -} else if (buildType === 'shared') { - // files.push( - // { parent: '/preload/', name: 'icudt72l.dat', url: (await import('php-wasm-intl/icudt72l.dat')).default } - // ); - - sharedLibs.push({ - name: 'libxml2.so', - url: (await __webpack_require__.e(/*! import() */ "packages_libxml_libxml2_so").then(__webpack_require__.t.bind(__webpack_require__, /*! php-wasm-libxml/libxml2.so */ "../packages/libxml/libxml2.so", 17))).default - }, { - name: 'libz.so', - url: (await __webpack_require__.e(/*! import() */ "packages_zlib_libz_so").then(__webpack_require__.t.bind(__webpack_require__, /*! php-wasm-zlib/libz.so */ "../packages/zlib/libz.so", 17))).default - }, { - name: 'libzip.so', - url: (await __webpack_require__.e(/*! import() */ "packages_libzip_libzip_so").then(__webpack_require__.t.bind(__webpack_require__, /*! php-wasm-libzip/libzip.so */ "../packages/libzip/libzip.so", 17))).default - }, { - name: 'libfreetype.so', - url: (await __webpack_require__.e(/*! import() */ "packages_gd_libfreetype_so").then(__webpack_require__.t.bind(__webpack_require__, /*! php-wasm-gd/libfreetype.so */ "../packages/gd/libfreetype.so", 17))).default - }, { - name: 'libjpeg.so', - url: (await __webpack_require__.e(/*! import() */ "packages_gd_libjpeg_so").then(__webpack_require__.t.bind(__webpack_require__, /*! php-wasm-gd/libjpeg.so */ "../packages/gd/libjpeg.so", 17))).default - }, { - name: 'libwebp.so', - url: (await __webpack_require__.e(/*! import() */ "packages_gd_libwebp_so").then(__webpack_require__.t.bind(__webpack_require__, /*! php-wasm-gd/libwebp.so */ "../packages/gd/libwebp.so", 17))).default - }, { - name: 'libpng.so', - url: (await __webpack_require__.e(/*! import() */ "packages_gd_libpng_so").then(__webpack_require__.t.bind(__webpack_require__, /*! php-wasm-gd/libpng.so */ "../packages/gd/libpng.so", 17))).default - }, { - name: 'libiconv.so', - url: (await __webpack_require__.e(/*! import() */ "packages_iconv_libiconv_so").then(__webpack_require__.t.bind(__webpack_require__, /*! php-wasm-iconv/libiconv.so */ "../packages/iconv/libiconv.so", 17))).default - }, { - name: 'libicuuc.so', - url: (await __webpack_require__.e(/*! import() */ "packages_intl_libicuuc_so").then(__webpack_require__.t.bind(__webpack_require__, /*! php-wasm-intl/libicuuc.so */ "../packages/intl/libicuuc.so", 17))).default - }, { - name: 'libicutu.so', - url: (await __webpack_require__.e(/*! import() */ "packages_intl_libicutu_so").then(__webpack_require__.t.bind(__webpack_require__, /*! php-wasm-intl/libicutu.so */ "../packages/intl/libicutu.so", 17))).default - }, { - name: 'libicutest.so', - url: (await __webpack_require__.e(/*! import() */ "packages_intl_libicutest_so").then(__webpack_require__.t.bind(__webpack_require__, /*! php-wasm-intl/libicutest.so */ "../packages/intl/libicutest.so", 17))).default - }, { - name: 'libicuio.so', - url: (await __webpack_require__.e(/*! import() */ "packages_intl_libicuio_so").then(__webpack_require__.t.bind(__webpack_require__, /*! php-wasm-intl/libicuio.so */ "../packages/intl/libicuio.so", 17))).default - }, { - name: 'libicui18n.so', - url: (await __webpack_require__.e(/*! import() */ "packages_intl_libicui18n_so").then(__webpack_require__.t.bind(__webpack_require__, /*! php-wasm-intl/libicui18n.so */ "../packages/intl/libicui18n.so", 17))).default - }, { - name: 'libicudata.so', - url: (await __webpack_require__.e(/*! import() */ "packages_intl_libicudata_so").then(__webpack_require__.t.bind(__webpack_require__, /*! php-wasm-intl/libicudata.so */ "../packages/intl/libicudata.so", 17))).default - }, { - name: 'libcrypto.so', - url: (await __webpack_require__.e(/*! import() */ "packages_openssl_libcrypto_so").then(__webpack_require__.t.bind(__webpack_require__, /*! php-wasm-openssl/libcrypto.so */ "../packages/openssl/libcrypto.so", 17))).default - }, { - name: 'libssl.so', - url: (await __webpack_require__.e(/*! import() */ "packages_openssl_libssl_so").then(__webpack_require__.t.bind(__webpack_require__, /*! php-wasm-openssl/libssl.so */ "../packages/openssl/libssl.so", 17))).default - }, { - name: 'libonig.so', - url: (await __webpack_require__.e(/*! import() */ "packages_mbstring_libonig_so").then(__webpack_require__.t.bind(__webpack_require__, /*! php-wasm-mbstring/libonig.so */ "../packages/mbstring/libonig.so", 17))).default - }, { - name: 'libsqlite3.so', - url: (await __webpack_require__.e(/*! import() */ "packages_sqlite_libsqlite3_so").then(__webpack_require__.t.bind(__webpack_require__, /*! php-wasm-sqlite/libsqlite3.so */ "../packages/sqlite/libsqlite3.so", 17))).default - }, { - name: 'libtidy.so', - url: (await __webpack_require__.e(/*! import() */ "packages_tidy_libtidy_so").then(__webpack_require__.t.bind(__webpack_require__, /*! php-wasm-tidy/libtidy.so */ "../packages/tidy/libtidy.so", 17))).default - }, { - name: 'libyaml.so', - url: (await __webpack_require__.e(/*! import() */ "packages_libyaml_libyaml_so").then(__webpack_require__.t.bind(__webpack_require__, /*! php-wasm-yaml/libyaml.so */ "../packages/libyaml/libyaml.so", 17))).default - }); -} else { - sharedLibs.push({ - name: 'libcrypto.so', - url: (await __webpack_require__.e(/*! import() */ "packages_openssl_libcrypto_so").then(__webpack_require__.t.bind(__webpack_require__, /*! php-wasm-openssl/libcrypto.so */ "../packages/openssl/libcrypto.so", 17))).default - }, { - name: 'libssl.so', - url: (await __webpack_require__.e(/*! import() */ "packages_openssl_libssl_so").then(__webpack_require__.t.bind(__webpack_require__, /*! php-wasm-openssl/libssl.so */ "../packages/openssl/libssl.so", 17))).default - }); -} - -// Log requests -const onRequest = (request, response) => { - const url = new URL(request.url); - const logLine = `[${new Date().toISOString()}]` + `#${php.count} 127.0.0.1 - "${request.method}` + ` ${url.pathname}" - HTTP/1.1 ${response.status}`; - console.log(logLine); -}; - -// Formatted 404s -const notFound = request => { - return new Response(`

404

${request.url} not found`, { - status: 404, - headers: { - 'Content-Type': 'text/html' - } - }); -}; -const actions = { - runSql: (php, database, sql) => { - console.log({ - database - }); - const pglite = new _electric_sql_pglite__WEBPACK_IMPORTED_MODULE_1__.PGlite(database); - return pglite.query(sql); - }, - execSql: (php, database, sql) => { - console.log({ - database - }); - const pglite = new _electric_sql_pglite__WEBPACK_IMPORTED_MODULE_1__.PGlite(database); - return pglite.exec(sql); - } -}; - -// Spawn the PHP-CGI binary -const php = new php_cgi_wasm_PhpCgiWorker_mjs__WEBPACK_IMPORTED_MODULE_0__.PhpCgiWorker({ - version: '8.3', - onRequest, - notFound, - sharedLibs, - files, - PGlite: _electric_sql_pglite__WEBPACK_IMPORTED_MODULE_1__.PGlite, - actions, - staticFS: false, - prefix: '/php-wasm/cgi-bin/', - exclude: ['/php-wasm/cgi-bin/~!@', '/php-wasm/cgi-bin/.'], - docroot: '/persist/www', - types: { - jpeg: 'image/jpeg', - jpg: 'image/jpeg', - gif: 'image/gif', - png: 'image/png', - svg: 'image/svg+xml' - }, - vHosts: [{ - "pathPrefix": "/php-wasm/cgi-bin/test", - "directory": "/preload/test_www", - "entrypoint": "hello-world.php" - }] -}); - -// Set up the event handlers -self.addEventListener('install', event => php.handleInstallEvent(event)); -self.addEventListener('activate', event => php.handleActivateEvent(event)); -self.addEventListener('fetch', event => php.handleFetchEvent(event)); -self.addEventListener('message', event => php.handleMessageEvent(event)); - -// Extras -self.addEventListener('install', event => console.log('Install')); -self.addEventListener('activate', event => console.log('Activate')); -__webpack_async_result__(); -} catch(e) { __webpack_async_result__(e); } }, 1); - -/***/ }) - -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = __webpack_modules__; -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/async module */ -/******/ (() => { -/******/ var webpackQueues = typeof Symbol === "function" ? Symbol("webpack queues") : "__webpack_queues__"; -/******/ var webpackExports = typeof Symbol === "function" ? Symbol("webpack exports") : "__webpack_exports__"; -/******/ var webpackError = typeof Symbol === "function" ? Symbol("webpack error") : "__webpack_error__"; -/******/ var resolveQueue = (queue) => { -/******/ if(queue && queue.d < 1) { -/******/ queue.d = 1; -/******/ queue.forEach((fn) => (fn.r--)); -/******/ queue.forEach((fn) => (fn.r-- ? fn.r++ : fn())); -/******/ } -/******/ } -/******/ var wrapDeps = (deps) => (deps.map((dep) => { -/******/ if(dep !== null && typeof dep === "object") { -/******/ if(dep[webpackQueues]) return dep; -/******/ if(dep.then) { -/******/ var queue = []; -/******/ queue.d = 0; -/******/ dep.then((r) => { -/******/ obj[webpackExports] = r; -/******/ resolveQueue(queue); -/******/ }, (e) => { -/******/ obj[webpackError] = e; -/******/ resolveQueue(queue); -/******/ }); -/******/ var obj = {}; -/******/ obj[webpackQueues] = (fn) => (fn(queue)); -/******/ return obj; -/******/ } -/******/ } -/******/ var ret = {}; -/******/ ret[webpackQueues] = x => {}; -/******/ ret[webpackExports] = dep; -/******/ return ret; -/******/ })); -/******/ __webpack_require__.a = (module, body, hasAwait) => { -/******/ var queue; -/******/ hasAwait && ((queue = []).d = -1); -/******/ var depQueues = new Set(); -/******/ var exports = module.exports; -/******/ var currentDeps; -/******/ var outerResolve; -/******/ var reject; -/******/ var promise = new Promise((resolve, rej) => { -/******/ reject = rej; -/******/ outerResolve = resolve; -/******/ }); -/******/ promise[webpackExports] = exports; -/******/ promise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise["catch"](x => {})); -/******/ module.exports = promise; -/******/ body((deps) => { -/******/ currentDeps = wrapDeps(deps); -/******/ var fn; -/******/ var getResult = () => (currentDeps.map((d) => { -/******/ if(d[webpackError]) throw d[webpackError]; -/******/ return d[webpackExports]; -/******/ })) -/******/ var promise = new Promise((resolve) => { -/******/ fn = () => (resolve(getResult)); -/******/ fn.r = 0; -/******/ var fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn)))); -/******/ currentDeps.map((dep) => (dep[webpackQueues](fnQueue))); -/******/ }); -/******/ return fn.r ? promise : getResult(); -/******/ }, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue))); -/******/ queue && queue.d < 0 && (queue.d = 0); -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/create fake namespace object */ -/******/ (() => { -/******/ var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__); -/******/ var leafPrototypes; -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 16: return value when it's Promise-like -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = this(value); -/******/ if(mode & 8) return value; -/******/ if(typeof value === 'object' && value) { -/******/ if((mode & 4) && value.__esModule) return value; -/******/ if((mode & 16) && typeof value.then === 'function') return value; -/******/ } -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ var def = {}; -/******/ leafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)]; -/******/ for(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) { -/******/ Object.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key]))); -/******/ } -/******/ def['default'] = () => (value); -/******/ __webpack_require__.d(ns, def); -/******/ return ns; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/define property getters */ -/******/ (() => { -/******/ // define getter functions for harmony exports -/******/ __webpack_require__.d = (exports, definition) => { -/******/ for(var key in definition) { -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); -/******/ } -/******/ } -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/ensure chunk */ -/******/ (() => { -/******/ __webpack_require__.f = {}; -/******/ // This file contains only the entry chunk. -/******/ // The chunk loading function for additional chunks -/******/ __webpack_require__.e = (chunkId) => { -/******/ return Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => { -/******/ __webpack_require__.f[key](chunkId, promises); -/******/ return promises; -/******/ }, [])); -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/get javascript chunk filename */ -/******/ (() => { -/******/ // This function allow to reference async chunks -/******/ __webpack_require__.u = (chunkId) => { -/******/ // return url for filenames based on template -/******/ return "" + chunkId + ".cgi-worker.js"; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/hasOwnProperty shorthand */ -/******/ (() => { -/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) -/******/ })(); -/******/ -/******/ /* webpack/runtime/make namespace object */ -/******/ (() => { -/******/ // define __esModule on exports -/******/ __webpack_require__.r = (exports) => { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/publicPath */ -/******/ (() => { -/******/ __webpack_require__.p = "/"; -/******/ })(); -/******/ -/******/ /* webpack/runtime/importScripts chunk loading */ -/******/ (() => { -/******/ __webpack_require__.b = self.location + ""; -/******/ -/******/ // object to store loaded chunks -/******/ // "1" means "already loaded" -/******/ var installedChunks = { -/******/ "service-worker": 1 -/******/ }; -/******/ -/******/ // importScripts chunk loading -/******/ var installChunk = (data) => { -/******/ var [chunkIds, moreModules, runtime] = data; -/******/ for(var moduleId in moreModules) { -/******/ if(__webpack_require__.o(moreModules, moduleId)) { -/******/ __webpack_require__.m[moduleId] = moreModules[moduleId]; -/******/ } -/******/ } -/******/ if(runtime) runtime(__webpack_require__); -/******/ while(chunkIds.length) -/******/ installedChunks[chunkIds.pop()] = 1; -/******/ parentChunkLoadingFunction(data); -/******/ }; -/******/ __webpack_require__.f.i = (chunkId, promises) => { -/******/ // "1" is the signal for "already loaded" -/******/ if(!installedChunks[chunkId]) { -/******/ if(true) { // all chunks have JS -/******/ importScripts(__webpack_require__.p + __webpack_require__.u(chunkId)); -/******/ } -/******/ } -/******/ }; -/******/ -/******/ var chunkLoadingGlobal = self["webpackChunkdemo_source"] = self["webpackChunkdemo_source"] || []; -/******/ var parentChunkLoadingFunction = chunkLoadingGlobal.push.bind(chunkLoadingGlobal); -/******/ chunkLoadingGlobal.push = installChunk; -/******/ -/******/ // no HMR -/******/ -/******/ // no HMR manifest -/******/ })(); -/******/ -/************************************************************************/ -/******/ -/******/ // startup -/******/ // Load entry module and return exports -/******/ // This entry module used 'module' so it can't be inlined -/******/ var __webpack_exports__ = __webpack_require__("./src/cgi-worker.mjs"); -/******/ -/******/ })() -; -//# sourceMappingURL=cgi-worker.js.map \ No newline at end of file diff --git a/demo-web/public/index.html b/demo-web/public/index.html deleted file mode 100644 index 45272df5f..000000000 --- a/demo-web/public/index.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - php-wasm - - - - -
- - diff --git a/demo-web/public/scripts/callbacks.php b/demo-web/public/scripts/callbacks.php index d074551af..11f10a252 100644 --- a/demo-web/public/scripts/callbacks.php +++ b/demo-web/public/scripts/callbacks.php @@ -11,7 +11,7 @@ if(!extension_loaded('vrzno')) { - printf("The VRZNO extension is not loaded. VRZNO is required for this demo and requires PHP >=8.2."); + printf("The VRZNO extension is not loaded. VRZNO is required for this demo and requires PHP 8.0+."); exit(1); } diff --git a/demo-web/public/scripts/dom-access.php b/demo-web/public/scripts/dom-access.php index 1dd2662e7..37830c7f0 100644 --- a/demo-web/public/scripts/dom-access.php +++ b/demo-web/public/scripts/dom-access.php @@ -1,7 +1,7 @@ =8.2."); + printf("The VRZNO extension is not loaded. VRZNO is required for this demo and requires PHP 8.0+."); exit(1); } diff --git a/demo-web/public/scripts/fetch.php b/demo-web/public/scripts/fetch.php index ca0bb69a4..561bc8872 100644 --- a/demo-web/public/scripts/fetch.php +++ b/demo-web/public/scripts/fetch.php @@ -1,7 +1,7 @@ =8.2."); + printf("The VRZNO extension is not loaded. VRZNO is required for this demo and requires PHP 8.0+."); exit(1); } diff --git a/demo-web/public/scripts/import.php b/demo-web/public/scripts/import.php index 37596b620..5820d3e5f 100644 --- a/demo-web/public/scripts/import.php +++ b/demo-web/public/scripts/import.php @@ -1,7 +1,7 @@ =8.2."); + printf("The VRZNO extension is not loaded. VRZNO is required for this demo and requires PHP 8.0+."); exit(1); } diff --git a/demo-web/public/scripts/phpinfo.php b/demo-web/public/scripts/phpinfo.php index 4fa6fe317..83f26acb9 100644 --- a/demo-web/public/scripts/phpinfo.php +++ b/demo-web/public/scripts/phpinfo.php @@ -1,2 +1,2 @@ -=8.2."); + printf("The VRZNO extension is not loaded. VRZNO is required for this demo and requires PHP 8.0+."); exit(1); } diff --git a/demo-web/public/scripts/sdl-sine-bugged.php b/demo-web/public/scripts/sdl-sine-bugged.php index d5767598d..8f7a7e8df 100644 --- a/demo-web/public/scripts/sdl-sine-bugged.php +++ b/demo-web/public/scripts/sdl-sine-bugged.php @@ -10,7 +10,7 @@ if(!extension_loaded('vrzno')) { - printf("The VRZNO extension is not loaded. VRZNO is required for this demo and requires PHP >=8.2."); + printf("The VRZNO extension is not loaded. VRZNO is required for this demo and requires PHP 8.0+."); exit(1); } @@ -54,4 +54,3 @@ $render(); - diff --git a/demo-web/public/scripts/sdl-sine.php b/demo-web/public/scripts/sdl-sine.php index 809de181f..f6626571e 100644 --- a/demo-web/public/scripts/sdl-sine.php +++ b/demo-web/public/scripts/sdl-sine.php @@ -8,12 +8,6 @@ exit(1); } -if(!extension_loaded('vrzno')) -{ - printf("The VRZNO extension is not loaded. VRZNO is required for this demo and requires PHP >=8.2."); - exit(1); -} - ############ const WINDOW_WIDTH = 300; @@ -36,13 +30,14 @@ $j = 0; $render = function() use(&$render, $renderer, &$j, $window) { - SDL_SetRenderDrawColor($renderer, 100, 0, 0, 0); + SDL_SetRenderDrawColor($renderer, 255, 255, 255, 0); SDL_RenderClear($renderer); SDL_SetRenderDrawColor($renderer, 0, 0, 0, 255); for ($i = 0; $i < WINDOW_WIDTH; ++$i) { - SDL_RenderDrawPoint($renderer, $i, 75 + (int)( sin($j+$i/100) * 15 )); + $pos = 75 + (int)( sin($j+$i/100) * 15 ); + SDL_RenderDrawPoint($renderer, $i, $pos); $j += 0.00025; } @@ -52,5 +47,3 @@ phpinfo(); $render(); - - diff --git a/demo-web/public/scripts/sqlite-pdo.php b/demo-web/public/scripts/sqlite-pdo.php index 218ed0f0f..8e7be37b5 100644 --- a/demo-web/public/scripts/sqlite-pdo.php +++ b/demo-web/public/scripts/sqlite-pdo.php @@ -1,4 +1,4 @@ -query('CREATE TABLE IF NOT EXISTS people ( diff --git a/demo-web/scripts/build-worker.cjs b/demo-web/scripts/build-worker.cjs new file mode 100644 index 000000000..13445b7f1 --- /dev/null +++ b/demo-web/scripts/build-worker.cjs @@ -0,0 +1,19 @@ +/** + * Convenience wrapper that invokes the dedicated worker Vite build config. + */ +const path = require('node:path'); +const { spawnSync } = require('node:child_process'); + +const rootDir = path.resolve(__dirname, '..'); +const vitePackage = require.resolve('vite/package.json'); +const viteCli = path.resolve(path.dirname(vitePackage), 'bin', 'vite.js'); +const args = [viteCli, 'build', '--config', 'vite.worker.config.mjs', ...process.argv.slice(2)]; +const result = spawnSync(process.execPath, args, { + cwd: rootDir + , stdio: 'inherit' +}); + +if(result.status !== 0) +{ + process.exit(result.status ?? 1); +} diff --git a/demo-web/scripts/generate-html-aliases.cjs b/demo-web/scripts/generate-html-aliases.cjs new file mode 100644 index 000000000..a419f2d67 --- /dev/null +++ b/demo-web/scripts/generate-html-aliases.cjs @@ -0,0 +1,65 @@ +/** + * Post-build helper that fans the generated HTML entrypoint out to legacy aliases. + */ +const fs = require('node:fs/promises'); +const path = require('node:path'); + +const rootDir = path.resolve(__dirname, '..'); +const buildDir = path.join(rootDir, 'build'); +const indexHtml = path.join(buildDir, 'index.html'); +const nestedIndexHtml = path.join(buildDir, 'src', 'index.html'); +const asciiArt = path.join(rootDir, 'aphex.txt'); + +const aliases = [ + 'home.html' + , 'embedded-php.html' + , 'dbg-preview.html' + , 'cli-preview.html' + , 'install-demo.html' + , 'select-framework.html' + , 'code-editor.html' + , 'vscode.html' +]; + +/** + * Copies the generated entry HTML to every legacy route expected by the demo. + */ +async function main() { + let sourceIndexHtml = indexHtml; + + try + { + await fs.access(sourceIndexHtml); + } + catch + { + sourceIndexHtml = nestedIndexHtml; + } + + const [html, art] = await Promise.all([ + fs.readFile(sourceIndexHtml, 'utf8') + , fs.readFile(asciiArt, 'utf8') + ]); + + const htmlWithAscii = html.endsWith('\n') + ? `${html}${art}` + : `${html}\n${art}`; + + await fs.writeFile(indexHtml, htmlWithAscii); + + if(sourceIndexHtml === nestedIndexHtml) + { + await fs.rm(path.join(buildDir, 'src'), {recursive: true, force: true}); + } + + await Promise.all(aliases.map(alias => ( + fs.writeFile(path.join(buildDir, alias), htmlWithAscii) + ))); + + await fs.writeFile(path.join(buildDir, '404.html'), htmlWithAscii); +} + +main().catch(error => { + console.error(error); + process.exit(1); +}); diff --git a/demo-web/service-worker-dev.config.ts b/demo-web/service-worker-dev.config.ts deleted file mode 100644 index 56e555150..000000000 --- a/demo-web/service-worker-dev.config.ts +++ /dev/null @@ -1,41 +0,0 @@ -import path from 'path'; -import webpack from 'webpack'; -// in case you run into any typescript error when configuring `devServer` -import 'webpack-dev-server'; - -const config: webpack.Configuration = { - mode: 'development', - module: { - rules: [ - { - test: /\.mjs$/, - exclude: /node_modules/, - use: { loader: "babel-loader" } - }, - { - test: /\.(so|dat)$/, - type: 'asset/resource', - generator: { - filename: '[name].[contenthash][ext]' - }, - }, - ] - }, - entry: {'service-worker': './src/cgi-worker.mjs'}, - output: { - path: path.resolve(__dirname, 'public'), - filename: 'cgi-worker.js', - publicPath: '/', - }, - target: 'webworker', - devtool: 'source-map', - plugins: [ - new webpack.DefinePlugin({ - 'process.env': JSON.stringify({ - BUILD_TYPE: process.env.BUILD_TYPE ?? 'dynamic' - }) - }) - ], -}; - -export default config; diff --git a/demo-web/service-worker-prod.config.ts b/demo-web/service-worker-prod.config.ts deleted file mode 100644 index 1cdf0701f..000000000 --- a/demo-web/service-worker-prod.config.ts +++ /dev/null @@ -1,39 +0,0 @@ -import path from 'path'; -import webpack from 'webpack'; -// in case you run into any typescript error when configuring `devServer` -import 'webpack-dev-server'; - -const config: webpack.Configuration = { - mode: 'production', - module: { - rules: [ - { - test: /\.mjs$/, - exclude: /node_modules/, - use: { loader: "babel-loader" } - }, - { - test: /\.(so|dat)$/, - type: 'asset/resource', - generator: { - filename: '[name].[contenthash][ext]' - }, - }, - ] - }, - entry: {'service-worker': './src/cgi-worker.mjs'}, - output: { - path: path.resolve(__dirname, 'public'), - filename: 'cgi-worker.js', - }, - target: 'webworker', - plugins: [ - new webpack.DefinePlugin({ - 'process.env': JSON.stringify({ - BUILD_TYPE: process.env.BUILD_TYPE ?? 'dynamic' - }) - }) - ], -}; - -export default config; diff --git a/demo-web/src/App.js b/demo-web/src/App.js new file mode 100644 index 000000000..67d15641c --- /dev/null +++ b/demo-web/src/App.js @@ -0,0 +1,97 @@ +/** + * Top-level router composition for the demo-web application. + */ +import { Navigate, Route, Routes } from 'react-router'; +import { BrowserRouter } from 'react-router-dom'; + +import CliPreview from './pages/CliPreview'; +import DbgPreview from './pages/DbgPreview'; +import Editor from './pages/Editor'; +import Embedded from './pages/Embedded'; +import Home from './pages/Home'; +import InstallDemo from './pages/InstallDemo'; +import MultiIframeTest from './pages/MultiIframeTest'; +import SelectFramework from './pages/SelectFramework'; +import VSCodeEditor from './pages/VSCodeEditor'; +import { basePath, routerBase } from './lib/runtimePaths'; + +/** + * Declares the route table used by the demo application. + */ +export function AppRoutes() +{ + return + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } + /> + } + /> + } + /> + } + /> + } + /> + } + /> + } + /> + } + /> + } + /> + } + /> + } + /> + } + /> + } + /> + } /> + } /> + ; +} + +/** + * Wraps the route table in the browser router configured for the demo base path. + */ +export default function App() +{ + return + + ; +} diff --git a/demo-web/src/App.test.js b/demo-web/src/App.test.js new file mode 100644 index 000000000..e50957b9d --- /dev/null +++ b/demo-web/src/App.test.js @@ -0,0 +1,67 @@ +import React from 'react'; +import { render, screen } from '@testing-library/react'; +import { MemoryRouter } from 'react-router-dom'; + +vi.mock('./pages/CliPreview', () => ({ + default: () => React.createElement('div', null, 'CLI Preview') +})); + +vi.mock('./pages/DbgPreview', () => ({ + default: () => React.createElement('div', null, 'Debug Preview') +})); + +vi.mock('./pages/Editor', () => ({ + default: () => React.createElement('div', null, 'Code Editor') +})); + +vi.mock('./pages/Embedded', () => ({ + default: () => React.createElement('div', null, 'Embedded Demo') +})); + +vi.mock('./pages/Home', () => ({ + default: () => React.createElement('div', null, 'Home Page') +})); + +vi.mock('./pages/InstallDemo', () => ({ + default: () => React.createElement('div', null, 'Install Demo') +})); + +vi.mock('./pages/MultiIframeTest', () => ({ + default: () => React.createElement('div', null, 'Iframe Test') +})); + +vi.mock('./pages/SelectFramework', () => ({ + default: () => React.createElement('div', null, 'Select Framework') +})); + +vi.mock('./pages/VSCodeEditor', () => ({ + default: () => React.createElement('div', null, 'VSCode Editor') +})); + +import { AppRoutes } from './App'; + +describe('AppRoutes', () => { + it('renders the home page direct entry', () => { + render( + React.createElement( + MemoryRouter + , { initialEntries: ['/home.html'] } + , React.createElement(AppRoutes) + ) + ); + + expect(screen.getByText('Home Page')).toBeInTheDocument(); + }); + + it('redirects legacy CGI routes to the install flow', () => { + render( + React.createElement( + MemoryRouter + , { initialEntries: ['/cgi-bin/drupal'] } + , React.createElement(AppRoutes) + ) + ); + + expect(screen.getByText('Install Demo')).toBeInTheDocument(); + }); +}); diff --git a/demo-web/src/Debugger.js b/demo-web/src/Debugger.js deleted file mode 100644 index e01dd32fa..000000000 --- a/demo-web/src/Debugger.js +++ /dev/null @@ -1,568 +0,0 @@ -import React, { useCallback, useEffect, useMemo, useRef, useState, forwardRef, useImperativeHandle } from 'react'; -import { PhpDbgWeb } from 'php-dbg-wasm/PhpDbgWeb'; -import { PGlite } from '@electric-sql/pglite'; - -import './dbg-preview.css'; -import loading from './loading.svg'; - -import Convert from 'ansi-to-html'; - -const parser = new Convert; - -const sharedLibs = [ -]; - -const buildType = process.env.REACT_APP_BUILD_TYPE ?? 'dynamic'; - -if(buildType === 'dynamic') -{ - sharedLibs.push(...(await Promise.all([ - import('php-wasm-libxml'), - import('php-wasm-dom'), - import('php-wasm-zlib'), - import('php-wasm-libzip'), - import('php-wasm-gd'), - import('php-wasm-iconv'), - import('php-wasm-intl'), - import('php-wasm-openssl'), - import('php-wasm-mbstring'), - import('php-wasm-sqlite'), - import('php-wasm-xml'), - import('php-wasm-simplexml'), - import('php-wasm-yaml'), - ])).map(m => m.default)); -} -else if(buildType === 'shared') -{ - sharedLibs.push( - // {name: 'libxml2.so', url: (new URL('php-wasm-libxml/libxml2.so', import.meta.url))}, - {name: 'libz.so', url: new URL('php-wasm-zlib/libz.so', import.meta.url)}, - {name: 'libzip.so', url: new URL('php-wasm-libzip/libzip.so', import.meta.url)}, - {name: 'libfreetype.so', url: new URL('php-wasm-gd/libfreetype.so', import.meta.url)}, - {name: 'libjpeg.so', url: new URL('php-wasm-gd/libjpeg.so', import.meta.url)}, - {name: 'libwebp.so', url: new URL('php-wasm-gd/libwebp.so', import.meta.url)}, - {name: 'libpng.so', url: new URL('php-wasm-gd/libpng.so', import.meta.url)}, - {name: 'libiconv.so', url: new URL('php-wasm-iconv/libiconv.so', import.meta.url)}, - {name: 'libicuuc.so', url: new URL('php-wasm-intl/libicuuc.so', import.meta.url)}, - {name: 'libicutu.so', url: new URL('php-wasm-intl/libicutu.so', import.meta.url)}, - {name: 'libicutest.so', url: new URL('php-wasm-intl/libicutest.so', import.meta.url)}, - {name: 'libicuio.so', url: new URL('php-wasm-intl/libicuio.so', import.meta.url)}, - {name: 'libicui18n.so', url: new URL('php-wasm-intl/libicui18n.so', import.meta.url)}, - {name: 'libicudata.so', url: new URL('php-wasm-intl/libicudata.so', import.meta.url)}, - {name: 'libcrypto.so', url: new URL('php-wasm-openssl/libcrypto.so', import.meta.url)}, - {name: 'libssl.so', url: new URL('php-wasm-openssl/libssl.so', import.meta.url)}, - {name: 'libonig.so', url: new URL('php-wasm-mbstring/libonig.so', import.meta.url)}, - {name: 'libsqlite3.so', url: new URL('php-wasm-sqlite/libsqlite3.so', import.meta.url)}, - {name: 'libtidy.so', url: new URL('php-wasm-tidy/libtidy.so', import.meta.url)}, - {name: 'libyaml.so', url: new URL('php-wasm-yaml/libyaml.so', import.meta.url)}, - ); -} -else -{ - sharedLibs.push( - {name: 'libcrypto.so', url: (new URL('php-wasm-openssl/libcrypto.so', import.meta.url))}, - {name: 'libssl.so', url: (new URL('php-wasm-openssl/libssl.so', import.meta.url))}, - ); - - // files.push( - // { parent: '/preload/', name: 'icudt72l.dat', url: new URL(`php-wasm-intl/icudt72l.dat`, import.meta.url) }, - // ); -} - -const files = [ - { parent: '/preload/test_www/', name: 'hello-world.php', url: './scripts/hello-world.php' }, - { parent: '/preload/test_www/', name: 'phpinfo.php', url: './scripts/phpinfo.php' }, - { parent: '/preload/', name: 'list-extensions.php', url: './scripts/list-extensions.php' }, -]; - -const ini = ` - date.timezone=${Intl.DateTimeFormat().resolvedOptions().timeZone} - expose_php=0 -`; - -const escapeHtml = s => s - .replace(/&/g, "&") - .replace(//g, ">") - .replace(/"/g, """) - .replace(/'/g, "'"); - -let lastCommand = null; - -export default forwardRef(function Debugger({ - className = '', file, localEcho = true, initCommands = [], onStdIn - , setCurrentFile, setCurrentLine, setStatusMessage, setIsExecuting - , openFile, version = '8.3', -}, ref) { - const phpRef = useRef(null); - const cmdStack = useRef(['']); - const cmdStackIndex = useRef(0); - const terminal = useRef(''); - const stdIn = useRef(''); - const init = useRef(true); - - const [prompt, setPrompt] = useState(parser.toHtml(escapeHtml('\x1b[1mprompt> '))); - const [ready, setReady] = useState(false); - const [output, setOutput] = useState([]); - const [exitCode, setExitCode] = useState(''); - - const [variables, setVariables] = useState({}); - const [globals, setGlobals] = useState({}); - const [constants, setConstants] = useState({}); - const [functions, setFunctions] = useState({}); - const [userClasses, setUserClasses] = useState({}); - - const [includedFiles, setIncludedFiles] = useState([]); - const [trace, setTrace] = useState([]); - const [currentFrame, setCurrentFrame] = useState(0); - - const [currentPanel, setCurrentPanel] = useState('none'); - - const query = useMemo(() => new URLSearchParams(window.location.search), []); - const [isIframe, setIsIframe] = useState(!!Number(query.get('iframed'))); - const startPath = file; - - useImperativeHandle(ref, () => ({ - setBreakpoint (file, line) { runCommand(null, `b ${file}:${line}`, true); }, - clearBreakpoint (id) { runCommand(null, `b ~ ${id}`, true); }, - bpCount() { return phpRef.current.bpCount(); }, - run() { runCommand(null, `run`, true); }, - step() { runCommand(null, `step`, true); }, - continue() { runCommand(null, `continue`, true); }, - until() { runCommand(null, `until`, true); }, - next() { runCommand(null, `next`, true); }, - finish() { runCommand(null, `finish`, true); }, - leave() { runCommand(null, `leave`, true); }, - })); - - let timeout = null; - - const scrollToEnd = () => { - if(!stdIn.current) - { - return; - } - - if(timeout) - { - clearTimeout(timeout); - } - - timeout = setTimeout(() => stdIn.current.scrollIntoView({ - behavior: 'smooth' - }), 32); - }; - - const onOutput = async event => { - const newOutput = event.detail.map(text => text - .replace('\n', '\u240A\n') - .replace('\r', '\u240D')); - - const ansi = newOutput.map(line => { - return { type: 'stdout', text: parser.toHtml(escapeHtml(line)) } - // return { type: 'stdout', text: escapeHtml(line) } - }); - - setOutput(output => [...output, ...ansi]); - scrollToEnd(); - }; - - const onError = async event => { - const newOutput = event.detail.map(text => text - .replace('\n', '\u240A\n') - .replace('\r', '\u240D')); - - const ansi = newOutput.map(line => { - return { type: 'stderr', text: parser.toHtml(escapeHtml(line)) } - // return { type: 'stderr', text: escapeHtml(line) } - }); - - setOutput(output => [...output, ...ansi]); - scrollToEnd(); - }; - - const refreshPhp = useCallback(init => { - setStatusMessage && setStatusMessage('loading...'); - phpRef.current = new PhpDbgWeb({ - version, - sharedLibs, - files, - ini, - PGlite, - persist: [{mountPath:'/persist'}, {mountPath:'/config'}] - }); - - const php = phpRef.current; - - php.addEventListener('output', onOutput); - php.addEventListener('error', onError); - - const firstInput = async () => { - - if(init && startPath) - { - setReady(false); - await runCommand(null, `exec ${startPath}`); - } - - await Promise.all( initCommands.map(async cmd => runCommand(null, cmd, true)) ); - - await runCommand(null, 'set pagination off', true); - - setStatusMessage && setStatusMessage('php-dbg-wasm ready!'); - setReady(true); - await new Promise(a => setTimeout(a, 10)); - focusInput(); - } - - const onStdInHandler = async event => { - setCurrentFile && setCurrentFile( await php.currentFile() ); - setCurrentLine && setCurrentLine( await php.currentLine() ); - setPrompt( parser.toHtml(escapeHtml(await php.getPrompt())) ); - onStdIn && onStdIn(event); - }; - - const once = {once: true}; - - php.addEventListener('stdin-request', onStdInHandler); - php.addEventListener('stdin-request', firstInput, once); - - php.run(); - - return () => { - php.removeEventListener('output', onOutput); - php.removeEventListener('error', onError); - php.removeEventListener('stdin-request', onStdInHandler); - php.removeEventListener('stdin-request', firstInput, once); - }; - }, []); - - useEffect(() => { - if(init.current) - { - refreshPhp(init.current); - init.current = false; - } - }, [refreshPhp, init]); - - const checkEnter = async event => { - if(event.key === 'ArrowUp') - { - event.preventDefault(); - - const end = event.target.value.length; - - if(event.target.selectionStart > 0 && event.target.selectionStart !== end) - { - event.target.selectionStart = 0; - event.target.selectionEnd = 0; - return; - } - - cmdStackIndex.current--; - if(cmdStackIndex.current < 0) - { - cmdStackIndex.current = cmdStack.current.length - 1; - } - - stdIn.current.value = cmdStack.current[cmdStackIndex.current]; - stdIn.current.selectionStart = stdIn.current.selectionEnd = stdIn.current.value.length; - } - - if(event.key === 'ArrowDown') - { - event.preventDefault(); - - const end = event.target.value.length; - - if(event.target.selectionStart < end) - { - event.target.selectionStart = end; - event.target.selectionEnd = end; - return; - } - - cmdStackIndex.current++; - if(cmdStackIndex.current >= cmdStack.current.length) - { - cmdStackIndex.current = 0; - } - - stdIn.current.value = cmdStack.current[cmdStackIndex.current]; - stdIn.current.selectionStart = stdIn.current.selectionEnd = stdIn.current.value.length; - } - - if(event.key === 'Enter') - { - cmdStackIndex.current = 0; - await runCommand(); - event.preventDefault(); - return; - } - }; - - const runCommand = async (event, command = null, silent = false) => { - - const inputValue = command || stdIn.current.value || ''; - - if(!phpRef.current) - { - return; - } - - if(command === null) - { - stdIn.current.value = ''; - } - - if(localEcho && !silent) - { - inputValue && cmdStack.current.push(inputValue); - setOutput(output => [...output, {text: `${prompt}${inputValue}`, type: 'stdin'}]); - scrollToEnd(); - } - - const php = phpRef.current; - - await php.provideInput(inputValue); - - const isRunning = await php.isExecuting(); - - setIsExecuting( isRunning ); - - if(!silent) - { - lastCommand = inputValue || lastCommand; - - stdIn.current && stdIn.current.focus(); - } - - if(isRunning) - { - if(currentPanel === 'none') - { - setCurrentPanel('variables'); - setVariables( await (await phpRef.current).dumpVars() || {} ); - } - - switch(currentPanel) - { - case 'variables': - setVariables( await (await phpRef.current).dumpVars() || {} ); - break; - - case 'globals': - setGlobals( await (await phpRef.current).dumpGlobals() || {} ); - break; - - case 'constants': - setConstants( await (await phpRef.current).dumpConstants() || {} ); - break; - - case 'classes': - setUserClasses( await (await phpRef.current).dumpClasses() || {} ); - break; - - case 'functions': - setFunctions( await (await phpRef.current).dumpFunctions() || {} ); - break; - - case 'files': - setIncludedFiles( await (await phpRef.current).dumpFiles() || [] ); - break; - - case 'trace': - const php = (await phpRef.current); - const oldFrame = await php.switchFrame(0); - setCurrentFrame(oldFrame); - setTrace( await (await phpRef.current).dumpBacktrace() || [] ); - php.switchFrame(oldFrame); - break; - } - } - else - { - setVariables( {} ); - setGlobals( {} ); - setConstants( {} ); - setFunctions( {} ); - setIncludedFiles( [] ); - setCurrentPanel('none'); - } - } - - const focusInput = event => { - if(window.getSelection().toString() !== '') - { - return; - } - - if(!phpRef.current.interactive) - { - scrollToEnd(); - return; - } - if(window.getSelection().toString() === '') - { - stdIn.current && stdIn.current.focus(); - } - }; - - const handleTerminalClicked = () => { - - if(!phpRef.current.interactive) - { - return; - } - - focusInput(); - }; - - const handleScrollToBottom = () => { - scrollToEnd(); - }; - - const zvalViews = obj => { - - try - { - const entries = Object.entries(obj); - return
- {entries.map(zvalView)} -
; - } - catch(error) - { - console.error(error); - console.warn(obj, 'returned duplicate keys'); - } - }; - - const zvalView = ([name, zv]) => { - return ; - }; - - const switchRightPanel = async panel => { - switch(panel) - { - case undefined: - case 'variables': - setVariables( await (await phpRef.current).dumpVars() || {} ); - setCurrentPanel('variables'); - break; - - case 'globals': - setGlobals( await (await phpRef.current).dumpGlobals() || {} ); - setCurrentPanel('globals'); - break; - - case 'constants': - setConstants( await (await phpRef.current).dumpConstants() || {} ); - setCurrentPanel('constants'); - break; - - case 'classes': - console.log( await (await phpRef.current).dumpClasses() || {} ); - setUserClasses( await (await phpRef.current).dumpClasses() || {} ); - setCurrentPanel('classes'); - break; - - case 'functions': - setFunctions( await (await phpRef.current).dumpFunctions() || {} ); - setCurrentPanel('functions'); - break; - - case 'files': - setIncludedFiles( await (await phpRef.current).dumpFiles() || [] ); - setCurrentPanel('files'); - break; - - case 'trace': - const php = (await phpRef.current); - const oldFrame = await php.switchFrame(0); - console.log(oldFrame); - setCurrentFrame(oldFrame); - setTrace( await (await phpRef.current).dumpBacktrace() || [] ); - setCurrentPanel('trace'); - php.switchFrame(oldFrame); - break; - } - }; - - return (
-
-
-
-
🡇
- ⚠️ This is in VERY early alpha! ⚠️ - {output.map((line, index) => (
))} -
- {!ready && ()} - - - -
-
-
-
-
-
- - - - - - - -
-
-
-
- {zvalViews(variables)} -
-
- {zvalViews(globals)} -
-
- {zvalViews(constants)} -
-
- {Object.entries(userClasses).sort((a, b) => String(a[0]).localeCompare(b[0])).map(([name,func]) => { - return
openFile(func.filename, func.lineNo)}> - {name} {String(func.filename).split('/').pop()}:{func.lineNo} -
- })} -
-
- {Object.entries(functions).sort((a, b) => String(a[0]).localeCompare(b[0])).map(([name,func]) => { - return
openFile(func.filename, func.lineNo)}> - {name} {String(func.filename).split('/').pop()}:{func.lineNo} -
- })} -
-
- {includedFiles.sort((a, b) => String(a).localeCompare(b)).map(name => { - return
openFile(name)}> - {name} -
- })} -
-
- {trace.map((frame) => { - return
{ - openFile(frame.filename, frame.lineNo); - (await phpRef.current).switchFrame(frame.frame); - setCurrentFrame(frame.frame); - }}> - {frame.filename}: {frame.lineNo} -
- })} -
-
-
-
-
); -}); diff --git a/demo-web/src/Editor.js b/demo-web/src/Editor.js deleted file mode 100644 index 158272509..000000000 --- a/demo-web/src/Editor.js +++ /dev/null @@ -1,516 +0,0 @@ -import './Common.css'; -import './Editor.css'; - -import { useEffect, useMemo, useRef, useState } from 'react'; - -import { sendMessageFor } from 'php-cgi-wasm/msg-bus'; -import EditorFolder from './EditorFolder'; -import Header from './Header'; - -import ace from 'ace-builds'; -import AceEditor from "react-ace-builds"; -import { Range } from "ace-builds"; -import "react-ace-builds/webpack-resolver-min"; -import { createRoot } from 'react-dom/client'; - -import reactIcon from './react-icon.svg'; -import redCircle from './circle-red.svg'; -import toggleIcon from './nuvola/view_choose.png'; -import saveIcon from './nuvola/3floppy_unmount.png'; -import vsCodeIcon from './icons/vscode-16.png'; - -import Debugger from './Debugger'; - -// const sendMessage = sendMessageFor((`${window.location.origin}${process.env.PUBLIC_URL}/cgi-worker.mjs`)); -const sendMessage = sendMessageFor(navigator.serviceWorker.controller); - -const openFilesMap = new Map(); -const sessionsMap = new WeakMap; - -const modes = { - 'php': 'ace/mode/php' - , 'phtml': 'ace/mode/php' - , 'module': 'ace/mode/php' - , 'inc': 'ace/mode/php' - , 'js': 'ace/mode/javascript' - , 'json': 'ace/mode/json' - , 'html': 'ace/mode/html' - , 'css': 'ace/mode/css' - , 'md': 'ace/mode/markdown' - , 'mjs': 'ace/mode/javascript' - , 'txt': 'ace/mode/text' - , 'xml': 'ace/mode/xml' - , 'yml': 'ace/mode/yaml' - , 'yaml': 'ace/mode/yaml' -}; - -const breakpoints = new Map; - -export default function Editor() { - const [contents, setContents] = useState('...'); - const [openFiles, setOpenFiles] = useState([]); - const [showLeft, setShowLeft] = useState([]); - const [phpdbg, setPhpDbg] = useState(false); - const [isExecuting, setIsExecuting] = useState(false); - - const activeLines = useRef(new Set); - const currentBreak = useRef({}); - const currentPath = useRef(null); - const editBox = useRef(null); - const aceRef = useRef(null); - const tabBox = useRef(null); - const openDbg = useRef(null); - - const lastFile = useRef(null); - const lastLine = useRef(null); - - const versionSelector = useRef(true); - const version = useRef('8.3'); - - const query = useMemo(() => new URLSearchParams(window.location.search), []); - - const handleSave = async () => { - if(currentPath.current) - { - const entry = openFilesMap.get(currentPath.current); - entry.dirty = false; - - sendMessage('writeFile', [ - currentPath.current - , new TextEncoder().encode(aceRef.current.editor.getValue()) - ]); - - const openFilesList = [...openFilesMap.entries()].map(e => e[1]); - setOpenFiles(openFilesList); - } - }; - - const handleOpenVsCode = async () => { - if(currentPath.current) - { - window.location.href = process.env.PUBLIC_URL + '/vscode.html?path=' + currentPath.current; - } - else - { - window.location.href = process.env.PUBLIC_URL + '/vscode.html'; - } - }; - - const onKeyDown = event => { - if(event.key === 's' && event.ctrlKey) - { - event.preventDefault(); - handleSave(); - return; - } - }; - - const toggleLeftBar = () => { - setShowLeft(!showLeft); - }; - - useEffect(() => { - if(!editBox.current) - { - editBox.current = document.getElementById('edit-root'); - const editRoot = createRoot(editBox.current); - - editRoot.render( - - ); - } - - window.addEventListener('keydown', onKeyDown); - window.addEventListener('editor-open-file', handleOpenFile); - return () => { - window.removeEventListener('editor-open-file', handleOpenFile); - window.removeEventListener('keydown', onKeyDown); - } - }, []); - - const closeFile = async path => { - const entry = openFilesMap.get(path); - - openFilesMap.delete(path); - - if(entry.active) - { - if(openFilesMap.size) - { - const first = [...openFilesMap.entries()][0][1]; - first.active = true; - currentPath.current = first.path; - aceRef.current.editor.setSession(first.session); - } - else - { - currentPath.current = null; - aceRef.current.editor.setSession(ace.createEditSession('', 'ace/mode/text')); - aceRef.current.editor.setReadOnly(true); - } - } - - const openFilesList = [...openFilesMap.entries()].map(e => e[1]); - setOpenFiles(openFilesList); - }; - - const openFile = async path => { - const editor = aceRef.current.editor; - - const name = path.split('/').pop(); - const newFile = openFilesMap.has(path) - ? openFilesMap.get(path) - : {name, path}; - - query.set('path', path); - - if(!openDbg.current) - { - window.history.replaceState({}, null, window.location.pathname + '?' + query); - } - - if(currentPath.current !== path) - { - activeLines.current.forEach(m => { - editor.session.removeMarker(m); - activeLines.current.delete(m); - }); - } - - currentPath.current = path; - - editor.setReadOnly(!!openDbg.current); - - if(!newFile.session) - { - openFilesMap.set(path, newFile); - } - - const openFilesList = [...openFilesMap.entries()].map(e => e[1]); - openFilesList.map(f => f.active = false); - newFile.active = true; - setOpenFiles(openFilesList); - - if(newFile.loading) - { - editor.setSession(await newFile.loading); - return; - } - - let _accept; - newFile.loading = new Promise(accept => _accept = accept); - - const extension = path.split('.').pop(); - const mode = modes[extension] ?? 'ace/mode/text'; - - const code = new TextDecoder().decode( - await sendMessage('readFile', [path]) - ); - - newFile.session = ace.createEditSession(code, mode); - sessionsMap.set(newFile.session, newFile); - editor.setSession(newFile.session); - setContents(code); - - _accept(newFile.session); - - newFile.dirty = false; - - newFile.session.on('change', () => { - newFile.dirty = true; - const openFilesList = [...openFilesMap.entries()].map(e => e[1]); - setOpenFiles(openFilesList); - }); - - // editor.setOption("firstLineNumber", 0); - - tabBox.current.scrollTo({left:-tabBox.current.scrollWidth, behavior: 'smooth'}); - }; - - useEffect(() => { - if(aceRef.current) - { - const onGutter = async event => { - - const editor = aceRef.current.editor; - console.log(event); - - const session = editor.getSession(); - - if(!sessionsMap.has(session)) - { - console.trace('Unmapped session!'); - return; - } - - const {path} = sessionsMap.get(session); - - const target = event.domEvent.target; - - if(target.className.indexOf("ace_gutter-cell") == -1) - { - return; - } - - if(event.clientX > 28 + target.getBoundingClientRect().left) - { - return; - } - - const line = event.getDocumentPosition().row; - // const existing = event.editor.session.getBreakpoints(line, 0); - - if(!breakpoints.has(`${path}:${1 + line}`)) - { - event.editor.session.setBreakpoint(line); - - let id = breakpoints.size; - - if(openDbg.current) - { - openDbg.current.setBreakpoint(path, 1 + line); - id = await openDbg.current.bpCount(); - } - - breakpoints.set(`${path}:${1 + line}`, id); - } - else - { - const id = breakpoints.get(`${path}:${1 + line}`); - - event.editor.session.clearBreakpoint(line); - - if(openDbg.current) - { - openDbg.current.clearBreakpoint(id); - } - - breakpoints.delete(`${path}:${1 + line}`); - } - - console.log(breakpoints); - - event.stop(); - }; - - aceRef.current.editor.on('guttermousedown', onGutter); - - return () => { - aceRef.current.editor.session.off('off', onGutter); - }; - } - }, [aceRef.current]); - - const handleOpenFile = event => openFile(event.detail); - - const gotoFile = async (file, line) => { - const { exists } = await sendMessage('analyzePath', [file]); - - const editor = aceRef.current.editor; - - if(exists) - { - await openFile(file); - - editor.scrollToLine(-1 + line, true, true, () => {}); - } - - if(line !== undefined) - { - activeLines.current.forEach(m => { - editor.session.removeMarker(m); - activeLines.current.delete(m); - }); - - const marker = editor.session.addMarker( - new Range(-1 + line, 0, -1 + line, Infinity) - , 'active_breakpoint' - , 'fullLine' - , true - ); - - activeLines.current.add(marker); - } - } - - const startDebugger = () => { - - const editor = aceRef.current.editor; - - if(openDbg.current) - { - activeLines.current.forEach(m => { - editor.session.removeMarker(m); - activeLines.current.delete(m); - }); - - openDbg.current = null; - editor.setReadOnly(false); - setPhpDbg(openDbg.current); - setIsExecuting(false); - return; - } - - editor.setReadOnly(true); - - openDbg.current = `b ${bp}`), 'run']} - setCurrentFile = {file => currentBreak.current.file = file} - setCurrentLine = {line => currentBreak.current.line = line} - setIsExecuting = {setIsExecuting} - openFile = {gotoFile} - onStdIn = {async (...args) => { - const file = currentBreak.current.file; - const line = currentBreak.current.line; - - if(!(file && line)) return; - - if(file === lastFile.current && line === lastLine.current) return; - - const { exists } = await sendMessage('analyzePath', [file]); - - if(exists) - { - await openFile(file); - - activeLines.current.forEach(m => { - editor.session.removeMarker(m); - activeLines.current.delete(m); - }); - - const marker = editor.session.addMarker( - new Range(-1 + line, 0, -1 + line, Infinity) - , 'active_breakpoint' - , 'fullLine' - , true - ); - - activeLines.current.add(marker); - - editor.scrollToLine(-1 + line, true, true, () => {}); - - lastFile.current = file; - lastLine.current = line; - } - else - { - activeLines.current.forEach(m => { - editor.session.removeMarker(m); - activeLines.current.delete(m); - }); - } - }} - />; - - setPhpDbg(openDbg.current); - }; - - const handleStartDebugger = event => startDebugger(); - const handleRun = event => openDbg.current.run(); - const handleStep = event => openDbg.current.step(); - const handleContinue = event => openDbg.current.continue(); - const handleUntil = event => openDbg.current.until(); - const handleNext = event => openDbg.current.next(); - const handleFinish = event => openDbg.current.finish(); - const handleLeave = event => openDbg.current.leave(); - - return ( -
-
-
-
- - - - {!isExecuting ? ( - <> - {phpdbg ? '' : } - - - ) : ( - - - - - - - - - - )} -
-
-
-
- -
-
-
-
-
-
- {openFiles.map(file => -
-
openFile(file.path)}> - {file.name} {file.dirty ? '!' : ''} -
-
closeFile(file.path)}>×
-
- )} -
-
-
-
-
{contents}
-
-
-
- {phpdbg &&
{phpdbg}
} -
-
-
- Demo powered by React -
-
-
- ); -} diff --git a/demo-web/src/Embedded.js b/demo-web/src/Embedded.js deleted file mode 100644 index 6147a73a2..000000000 --- a/demo-web/src/Embedded.js +++ /dev/null @@ -1,713 +0,0 @@ -import './Embedded.css'; -import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; -import AceEditor from "react-ace-builds"; -import "react-ace-builds/webpack-resolver-min"; - -import { PGlite } from '@electric-sql/pglite'; - -import { PhpWeb } from 'php-wasm/PhpWeb'; -import { createRoot } from 'react-dom/client'; -import Confirm from './Confirm'; - -// import yaml from 'php-wasm-yaml'; -import sdl from 'php-wasm-sdl'; - -const sharedLibs = []; - -const buildType = process.env.REACT_APP_BUILD_TYPE ?? 'dynamic'; - -const files = [ - { parent: '/preload/test_www/', name: 'hello-world.php', url: './scripts/hello-world.php' }, - { parent: '/preload/test_www/', name: 'phpinfo.php', url: './scripts/phpinfo.php' }, - { parent: '/preload/', name: 'list-extensions.php', url: './scripts/list-extensions.php' }, -]; - -let canToggleExtensions = false; -const toggleable = {}; - -if(buildType === 'dynamic') -{ - canToggleExtensions = true; - - toggleable['dom'] = {active: false, module: import('php-wasm-dom')}; - toggleable['gd'] = {active: false, module: import('php-wasm-gd')}; - toggleable['iconv'] = {active: false, module: import('php-wasm-iconv')}; - toggleable['intl'] = {active: false, module: import('php-wasm-intl')}; - toggleable['libxml'] = {active: false, module: import('php-wasm-libxml')}; - toggleable['yaml'] = {active: false, module: import('php-wasm-yaml')}; - toggleable['libzip'] = {active: false, module: import('php-wasm-libzip')}; - toggleable['mbstring'] = {active: false, module: import('php-wasm-mbstring')}; - toggleable['openssl'] = {active: false, module: import('php-wasm-openssl')}; - toggleable['simplexml'] = {active: false, module: import('php-wasm-simplexml')}; - toggleable['sqlite'] = {active: false, module: import('php-wasm-sqlite')}; - toggleable['xml'] = {active: false, module: import('php-wasm-xml')}; - toggleable['zlib'] = {active: false, module: import('php-wasm-zlib')}; - - sharedLibs.push(...(await Promise.all( - Object.values(toggleable).filter(t => t.active).map(t => t.module) - )).map(m => m.default)); -} -else if(buildType === 'shared') -{ - sharedLibs.push( - {name: 'libxml2.so', url: new URL('php-wasm-libxml/libxml2.so', import.meta.url)}, - {name: 'libz.so', url: new URL('php-wasm-zlib/libz.so', import.meta.url)}, - {name: 'libzip.so', url: new URL('php-wasm-libzip/libzip.so', import.meta.url)}, - {name: 'libfreetype.so', url: new URL('php-wasm-gd/libfreetype.so', import.meta.url)}, - {name: 'libjpeg.so', url: new URL('php-wasm-gd/libjpeg.so', import.meta.url)}, - {name: 'libwebp.so', url: new URL('php-wasm-gd/libwebp.so', import.meta.url)}, - {name: 'libpng.so', url: new URL('php-wasm-gd/libpng.so', import.meta.url)}, - {name: 'libiconv.so', url: new URL('php-wasm-iconv/libiconv.so', import.meta.url)}, - {name: 'libicuuc.so', url: new URL('php-wasm-intl/libicuuc.so', import.meta.url)}, - {name: 'libicutu.so', url: new URL('php-wasm-intl/libicutu.so', import.meta.url)}, - {name: 'libicutest.so', url: new URL('php-wasm-intl/libicutest.so', import.meta.url)}, - {name: 'libicuio.so', url: new URL('php-wasm-intl/libicuio.so', import.meta.url)}, - {name: 'libicui18n.so', url: new URL('php-wasm-intl/libicui18n.so', import.meta.url)}, - {name: 'libicudata.so', url: new URL('php-wasm-intl/libicudata.so', import.meta.url)}, - {name: 'libcrypto.so', url: new URL('php-wasm-openssl/libcrypto.so', import.meta.url)}, - {name: 'libssl.so', url: new URL('php-wasm-openssl/libssl.so', import.meta.url)}, - {name: 'libonig.so', url: new URL('php-wasm-mbstring/libonig.so', import.meta.url)}, - {name: 'libsqlite3.so', url: new URL('php-wasm-sqlite/libsqlite3.so', import.meta.url)}, - {name: 'libtidy.so', url: new URL('php-wasm-tidy/libtidy.so', import.meta.url)}, - {name: 'libyaml.so', url: new URL('php-wasm-yaml/libyaml.so', import.meta.url)}, - ); - - // files.push( - // { parent: '/preload/', name: 'icudt72l.dat', url: new URL('php-wasm-intl/icudt72l.dat', import.meta.url) } - // ); -} -else -{ - sharedLibs.push( - {name: 'libcrypto.so', url: (new URL('php-wasm-openssl/libcrypto.so', import.meta.url))}, - {name: 'libssl.so', url: (new URL('php-wasm-openssl/libssl.so', import.meta.url))}, - ); -} - -const dynamicLibs = [ - await import('php-wasm-yaml') -]; - -const ini = ` -date.timezone=${Intl.DateTimeFormat().resolvedOptions().timeZone} -expose_php=0 -display_errors = Off -display_startup_errors = Off - -log_errors = On -error_log = /dev/stderr -`; - -function Embedded() { - const init = useRef(false); - const phpRef = useRef(null); - const inputBox = useRef(null); - const selectDemoBox = useRef(null); - const selectVersionBox = useRef(null); - const selectVariantBox = useRef(null); - const htmlRadio = useRef(null); - const textRadio = useRef(null); - const editor = useRef(null); - const input = useRef(''); - const persist = useRef(''); - const single = useRef(''); - const canvasCheckbox = useRef(''); - const canvas = useRef(null); - // const stdin = useRef(''); - - const query = useMemo(() => new URLSearchParams(window.location.search), []); - - const [exitCode, setExitCode] = useState(''); - const [stdOut, setStdOut] = useState(''); - const [stdErr, setStdErr] = useState(''); - const [stdRet, setStdRet] = useState(''); - const [overlay, setOverlay] = useState(null); - const [isIframe, /*setIsIframe*/] = useState(!!Number(query.get('iframed'))); - const [showCanvas, setShowCanvas] = useState(true); - - const [running, setRunning] = useState(false); - const [displayMode, setDisplayMode] = useState(''); - const [outputMode, setOutputMode] = useState(''); - const [statusMessage, setStatusMessage] = useState('php-wasm'); - - const onOutput = event => setStdOut(stdOut => String(stdOut || '') + event.detail.join('')); - const onError = event => setStdErr(stdErr => String(stdErr || '') + event.detail.join('')); - - const refreshPhp = useCallback(() => { - const version = (selectVersionBox.current ? selectVersionBox.current.value : null) - ?? '8.4'; - - const variant = (selectVariantBox.current ? selectVariantBox.current.value : null) - ?? ''; - - const _sharedLibs = [...sharedLibs]; - - if(variant === '_sdl' && buildType === 'dynamic') - { - _sharedLibs.push(sdl); - } - - phpRef.current = new PhpWeb({ - version, - variant, - sharedLibs: _sharedLibs, - dynamicLibs, - files, - ini, - PGlite, - persist: [{mountPath:'/persist'}, {mountPath:'/config'}], - canvas: canvas.current, - }); - - const php = phpRef.current; - - php.addEventListener('output', onOutput); - php.addEventListener('error', onError); - - return () => { - php.removeEventListener('output', onOutput); - php.removeEventListener('error', onError); - }; - }, []); - - const loadExtensions = useCallback(async () => { - if(!canToggleExtensions) return; - const defaultExtensions = query.has('extensionFlags') - ? Number(query.get('extensionFlags')) - : 0x1FDF; - - let i = 0; - const toggleableList = Object.values(toggleable); - while(i < toggleableList.length) - { - toggleableList[i].active = !!(defaultExtensions & 2**i); - i++; - } - - sharedLibs.length = 0; - - sharedLibs.push(...(await Promise.all( - Object.values(toggleable).filter(t => t.active).map(t => t.module) - )).map(m => m.default)); - }, [query]); - - useEffect(() => { - persist.current.checked = !!Number(query.get('persist')) ?? ''; - single.current.checked = !!Number(query.get('single-expression')) ?? ''; - selectVersionBox.current.value = query.get('version') ?? '8.4'; - selectVariantBox.current.value = query.get('variant') ?? ''; - - if(!init.current && !query.has('demo')) - { - (async () => { - await loadExtensions(); - refreshPhp(); - })(); - } - - init.current = true; - - }, [refreshPhp, query, loadExtensions]); - - const singleChanged = () => setOutputMode(single.current.checked ? 'single' : 'normal'); - const canvasChanged = () => setShowCanvas(canvasCheckbox.current.checked); - const formatSelected = event => setDisplayMode(event.target.value); - const codeChanged = newValue => input.current = newValue; - - const refreshMem = useCallback(async () => { - await phpRef.current.refresh(); - }, []); - - const runCode = useCallback(async () => { - setRunning(true); - - setStatusMessage('Executing...'); - - if(!persist.current.checked) - { - setStdOut(''); - setStdErr(''); - } - - setStdRet(''); - - let code = editor.current.editor.getValue(); - - const version = selectVersionBox.current?.value; - const variant = selectVariantBox.current?.value; - - code = code.replace(/^<\?php \/\/.+\n/, `\s*/, ''); - - try - { - const ret = await phpRef.current.exec(code); - setStdRet(ret); - if(!persist.current.checked) - { - await phpRef.current.refresh(); - } - } - catch(error) - { - console.error(error); - } - finally - { - setStatusMessage('php-wasm ready!') - setRunning(false); - } - } - else - { - try - { - const exitCode = await phpRef.current.run(code); - setExitCode(exitCode); - if(!persist.current.checked) - { - await phpRef.current.refresh(); - } - } - catch(error) - { - console.error(error) - } - finally - { - setStatusMessage('php-wasm ready!') - setRunning(false); - } - } - }, [query]); - - const loadDemo = useCallback(demoName => { - if(!demoName) - { - refreshPhp(); - runCode(); - return; - } - - if(demoName === 'drupal.php') - { - setOverlay( window.location = process.env.PUBLIC_URL + '/select-framework.html' } - onCancel = { () => setOverlay(null) } - message = {( - The Drupal demo has been moved into the php-cgi-wasm demo. Would you like to go there now? - )} - />); - return; - } - - setRunning(true); - - setStdOut(''); - setStdErr(''); - setStdRet(''); - - fetch(process.env.PUBLIC_URL + '/scripts/' + demoName) - .then(response => response.text()) - .then(async phpCode => { - editor.current.editor.setValue(phpCode, -1); - - document.querySelector('#example').innerHTML = ''; - const firstLine = String(phpCode.split(/\n/).shift()); - const settings = JSON.parse(firstLine.split('//').pop()) || {}; - - persist.current.checked = settings.persist ?? persist.current.checked; - single.current.checked = settings['single-expression'] ?? single.current.checked; - canvasCheckbox.current.checked = settings['canvas'] ?? false; - selectVersionBox.current.value = settings['version'] ?? selectVersionBox.current.value ?? '8.4'; - selectVariantBox.current.value = settings['variant'] ?? selectVariantBox.current.value ?? ''; - - if(settings['render-as']) - { - setDisplayMode(settings['render-as']); - htmlRadio.current.checked = settings['render-as'] === 'html'; - textRadio.current.checked = settings['render-as'] !== 'html'; - } - - query.set('persist', persist.current.checked ? 1 : 0); - query.set('single-expression', single.current.checked ? 1 : 0); - - if('extensionFlags' in settings) - { - query.set('extensionFlags', settings.extensionFlags); - } - - if(phpCode.length < 1024) - { - query.set('code', encodeURIComponent(phpCode)); - } - - window.history.replaceState({}, document.title, "?" + query.toString()); - - phpRef.current && await phpRef.current.refresh(); - await loadExtensions(); - refreshPhp(); - - if(settings.autorun) - { - setStatusMessage('Executing...'); - runCode(); - } - - setShowCanvas(canvasCheckbox.current.checked); - setOutputMode(single.current.checked ? 'single' : 'normal'); - }); - }, [query, refreshPhp, runCode, loadExtensions]); - - useEffect(() => { - if(inputBox.current) - { - return; - } - - inputBox.current = document.getElementById('input-box'); - - const inputRoot = createRoot(inputBox.current); - const queryCode = query.get('code') || ''; - - const decodedCode = decodeURIComponent(queryCode); - - input.current = decodedCode; - inputRoot.render( - - ); - const firstLine = String(decodedCode.split(/\n/).shift()); - const settings = {}; - - try - { - Object.assign(settings, JSON.parse(firstLine.split('//').pop())); - } - catch - {} - - persist.current.checked = settings.persist ?? persist.current.checked; - single.current.checked = settings['single-expression'] ?? single.current.checked; - canvasCheckbox.current.checked = settings['canvas'] ?? canvasCheckbox.current.checked; - - setOutputMode(single.current.checked ? 'single' : 'normal'); - setShowCanvas(canvasCheckbox.current.checked); - - if(settings['render-as']) - { - setDisplayMode(settings['render-as']); - - htmlRadio.current.checked = settings['render-as'] === 'html'; - textRadio.current.checked = settings['render-as'] !== 'html'; - } - - if(editor.current && query.has('code')) - { - editor.current.editor.setValue(query.has('code'), -1); - } - else if(query.has('demo')) - { - const demoName = query.get('demo'); - selectDemoBox.current.value = demoName; - loadDemo(demoName); - query.delete('demo'); - } - - if(settings.autorun) - { - setTimeout(runCode, 1); - } - - }, [query, loadDemo, runCode]); - - const demoSelected = () => loadDemo(selectDemoBox.current.value); - - useEffect(() => { - const onKeyDown = event => { - if(event.key === 'Enter' && event.ctrlKey) - { - runCode(); - return; - } - }; - window.addEventListener('keydown', onKeyDown); - return () => { - window.removeEventListener('keydown', onKeyDown); - } - - }, [runCode]); - - const openFile = async event => { - const file = event.target.files[0]; - editor.current.editor.setValue(await file.text(), -1);; - }; - - const toggleExtension = async (event, name) => { - if(!canToggleExtensions) return; - if(!toggleable[name]) - { - console.warn(`${name} is not a valid extension name`); - return; - } - - toggleable[name].active = event.target.checked; - - sharedLibs.length = 0; - - sharedLibs.push(...(await Promise.all( - Object.values(toggleable).filter(t => t.active).map(t => t.module) - )).map(m => m.default)); - }; - - const showExtensionDialog = () => { - if(!canToggleExtensions) return; - setOverlay( -
-
- {Object.entries(toggleable).map(([name, t]) => { - return - })} -
- -
-
-
- ); - }; - - const closeExtensionsDialog = async () => { - if(!canToggleExtensions) return; - const extensionFlags = Object.values(toggleable) - .map((t, k) => !!t.active << k) - .reduce((x, p) => x + p, 0); - - query.set('extensionFlags', extensionFlags); - - setOverlay(null); - setStdOut(''); - setStdErr(''); - await loadExtensions(); - refreshPhp(); - runCode(); - }; - - const topBar = (
-
-
- {isIframe || - - sean - -

php-wasm

-
-
} - -
- - -
-
- - {canToggleExtensions && ()} -
-
-
-
-
-
-
- - -
-   -
- - - -
-
- - -
-
-
); - - const statusBar = (
-
-
- {statusMessage} -
-
-
-
); - - return (
-
- {topBar} -
-
-
-
- - -
-
-
-
- -
-
-
-
-
-
- -
-
-
- -
-
-
-
-
- -
-
-
- -
{stdRet}
-
-
-
-
-
- - -
-
-
- -
{stdOut}
-
-
-
-
-
- -
-
-
- -
{stdErr}
-
-
-
-
-
- {statusBar} -
-
{overlay}
-
- ); -} - -export default Embedded; diff --git a/demo-web/src/Header.js b/demo-web/src/Header.js deleted file mode 100644 index 271625fc2..000000000 --- a/demo-web/src/Header.js +++ /dev/null @@ -1,15 +0,0 @@ -export default function Header() { - return (
-
-
- - sean - -

php-wasm

-
-
-
-
-
-
); -}; diff --git a/demo-web/src/InstallDemo.js b/demo-web/src/InstallDemo.js deleted file mode 100644 index 8f5326dff..000000000 --- a/demo-web/src/InstallDemo.js +++ /dev/null @@ -1,205 +0,0 @@ -import { useEffect, useMemo, useState } from 'react'; -import { sendMessageFor } from 'php-cgi-wasm/msg-bus'; -import Terminal from './Terminal'; -import loader from './tail-spin.svg'; - -// import zlib from 'php-wasm-zlib'; -// import libzip from 'php-wasm-libzip'; - -import './Common.css'; -import './InstallDemo.css'; - -const packages = { - 'drupal-7': { - name: 'Drupal 7', - //*/ - file: '/backups/drupal-7.95.zip', - /*/ - file: '/backups/drupal-7.95-pgsql.zip', - sql: '/backups/drupal-7.95.sql', - //*/ - path: 'drupal-7.95', - vHost: 'drupal', - dir: 'drupal-7.95', - entry: 'index.php', - }, - 'cakephp-5': { - name: 'CakePHP 5', - file: '/backups/cakephp-5.zip', - path: 'cakephp-5', - vHost: 'cakephp-5', - dir: 'cakephp-5/webroot', - entry: 'index.php', - }, - 'codeigniter-4': { - name: 'CodeIgniter 4', - file: '/backups/codeigniter-4.zip', - path: 'codeigniter-4', - vHost: 'codeigniter-4', - dir: 'codeigniter-4/public', - entry: 'index.php', - }, - 'laminas-3': { - name: 'Laminas 3', - file: '/backups/laminas-3.zip', - path: 'laminas-3', - vHost: 'laminas-3', - dir: 'laminas-3/public', - entry: 'index.php', - }, - 'laravel-11': { - name: 'Laravel 11', - file: '/backups/laravel-11.zip', - path: 'laravel-11', - vHost: 'laravel-11', - dir: 'laravel-11/public', - entry: 'index.php', - } -}; - -const informOpener = (selectedFrameworkName) => { - window.opener && window.opener.dispatchEvent( - new CustomEvent('install-complete', {detail: selectedFrameworkName}) - ); -}; - -export default function InstallDemo() { - const query = useMemo(() => new URLSearchParams(window.location.search), []); - const [message, setMessage] = useState('Initializing...'); - const [terminal, setTerminal] = useState(''); - - useEffect(() => void (async()=>{ - await navigator.serviceWorker.register(process.env.PUBLIC_URL + `/cgi-worker.js`); - await navigator.serviceWorker.getRegistration(`${window.location.origin}${process.env.PUBLIC_URL}/`); - await navigator.serviceWorker.ready; - - await new Promise((resolve) => { - if (navigator.serviceWorker.controller) return resolve(); - navigator.serviceWorker.addEventListener('controllerchange', () => resolve(), { once: true }); - }); - - if(!(navigator.serviceWorker && navigator.serviceWorker.controller)) - { - setMessage('No Service Worker Detected, Reloading...'); - await new Promise(a => setTimeout(a, 500)); - window.location.reload(); - return; - } - - const selectedFrameworkName = query.get('framework'); - const overwrite = query.get('overwrite') ?? false; - - if(!selectedFrameworkName) - { - setMessage('No framework selected.'); - return; - } - - if(!(selectedFrameworkName in packages)) - { - setMessage('Invalid framework selected.'); - return; - } - - const selectedFramework = packages[selectedFrameworkName]; - - setMessage('Downloading init script...'); - const initPhpCode = await (await fetch(process.env.PUBLIC_URL + '/scripts/init.php')).text(); - - setMessage('Acquiring Lock...'); - await navigator.locks.request('php-wasm-demo-install', async () => { - - setMessage('Checking for Existing Install...'); - const sendMessage = sendMessageFor(navigator.serviceWorker.controller); - const checkPath = await sendMessage('analyzePath', ['/persist/' + selectedFramework.dir]); - - if(!overwrite && checkPath.exists) - { - setMessage('Already installed...'); - informOpener(selectedFrameworkName); - window.location = '/php-wasm/cgi-bin/' + selectedFramework.vHost; - return; - } - - setMessage(`Downloading ${selectedFramework.file}...`); - const zipContents = await (await fetch(process.env.PUBLIC_URL + selectedFramework.file)).arrayBuffer(); - await sendMessage('writeFile', ['/persist/restore.zip', new Uint8Array(zipContents)]); - await sendMessage('writeFile', ['/config/restore-path.tmp', '/persist/' + selectedFramework.path]); - - setMessage(`Setting up ${selectedFrameworkName}...`); - const settings = await sendMessage('getSettings'); - const vHostPrefix = '/php-wasm/cgi-bin/' + selectedFramework.vHost; - const existingvHost = settings.vHosts.find(vHost => vHost.pathPrefix === vHostPrefix); - - if(!existingvHost) - { - settings.vHosts.push({ - pathPrefix: vHostPrefix, - directory: '/persist/' + selectedFramework.dir, - entrypoint: selectedFramework.entry - }); - } - else - { - existingvHost.directory = '/persist/' + selectedFramework.dir; - existingvHost.entrypoint = selectedFramework.entry; - } - - await sendMessage('setSettings', [settings]); - await sendMessage('storeInit'); - - setMessage(`Unpacking ${selectedFramework.file}...`); - - const onComplete = async (exitCode) => { - if(exitCode !== 0) return; - if(selectedFramework.sql) - { - setMessage('Setting up PostgreSQL...'); - const sqlFile = await (await fetch(selectedFramework.sql)).text(); - await sendMessage('execSql', [`idb://host= dbname=drupal port=5432`, sqlFile]); - await sendMessage('runSql', [`idb://host= dbname=drupal port=5432`, 'select * from information_schema.tables']); - } - - setMessage('Refreshing PHP-CGI...'); - await sendMessage('refresh', []); - - setMessage(`Opening ${selectedFrameworkName}...`); - informOpener(selectedFrameworkName); - window.location = vHostPrefix; - }; - - setTerminal( -
- ' + initPhpCode} - /> -
- ); - }); - })(), [query]); - - return ( -
-
-
-

{message}

- {terminal} - loading spinner -
-
-
- ); -} diff --git a/demo-web/src/MultiIframeTest.js b/demo-web/src/MultiIframeTest.js deleted file mode 100644 index 444d945e1..000000000 --- a/demo-web/src/MultiIframeTest.js +++ /dev/null @@ -1,28 +0,0 @@ -import React from 'react'; - -const FRAME_COUNT = 120; - -export default function MultiIframeTest() { - const frames = Array.from({ length: FRAME_COUNT }, (_, i) => i + 1); - return ( -
-

Multi‑Iframe PHP CGI Test

-

- This test mounts {FRAME_COUNT} simultaneous iframes pointing at a simple PHP page - served by the CGI service worker. -

-
- {frames.map(i => ( - +
{stdRet}
+
+
+ +
+
+ + +
+
+
+ +
{stdOut}
+
+
+
+
+
+ +
+
+
+ +
{stdErr}
+
+
+
+ + + {statusBar} + +
{overlay}
+ + ); +} + +export default Embedded; diff --git a/demo-web/src/pages/Embedded.test.js b/demo-web/src/pages/Embedded.test.js new file mode 100644 index 000000000..43157a13f --- /dev/null +++ b/demo-web/src/pages/Embedded.test.js @@ -0,0 +1,148 @@ +import React from 'react'; +import { fireEvent, render, waitFor } from '@testing-library/react'; + +const { + editor + , phpExec + , phpRefresh + , phpRun + , PhpWeb +} = vi.hoisted(() => { + const editor = { + getValue: vi.fn(() => '') + }; + + const phpRun = vi.fn(async () => 0); + const phpExec = vi.fn(async () => ''); + const phpRefresh = vi.fn(async () => undefined); + + const phpInstance = { + addEventListener: vi.fn() + , removeEventListener: vi.fn() + , exec: phpExec + , refresh: phpRefresh + , run: phpRun + }; + + const PhpWeb = vi.fn(function PhpWebMock() { + return phpInstance; + }); + + return { + editor + , phpExec + , phpRefresh + , phpRun + , PhpWeb + }; +}); + +vi.mock('php-wasm/PhpWeb', () => ({PhpWeb})); + +vi.mock('@electric-sql/pglite', () => ({ + PGlite: class PGliteMock {} +})); + +vi.mock('ace-builds/src-noconflict/mode-php', () => ({})); +vi.mock('ace-builds/src-noconflict/theme-monokai', () => ({})); + +vi.mock('react-ace', () => ({ + default: React.forwardRef(function AceEditorMock({value}, ref) { + React.useImperativeHandle(ref, () => ({editor}), []); + + return React.createElement('div', {'data-testid': 'ace-editor'}, value); + }) +})); + +vi.mock('../components/Confirm', () => ({ + default: function ConfirmMock() { + return null; + } +})); + +vi.mock('../lib/runtimePaths', () => ({ + basePath: (path = '') => `/php-wasm/${path}` + , libType: 'static' + , buildType: 'static' + , defaultPhpVersion: '8.4' +})); + +import Embedded from './Embedded'; + +describe('Embedded', () => { + const phpCode = ` { + PhpWeb.mockClear(); + editor.getValue.mockClear(); + phpExec.mockClear(); + phpRefresh.mockClear(); + phpRun.mockClear(); + + globalThis.fetch = vi.fn(async () => ({ + ok: true + , text: async () => phpCode + })); + + window.history.pushState( + {} + , '' + , '/embedded-php.html?demo=hello-world.php&version=8.0&extensionFlags=0' + ); + }); + + it('autoruns the fetched demo code even if Ace is still empty', async () => { + render(); + + await waitFor(() => { + expect(globalThis.fetch).toHaveBeenCalledWith('/php-wasm/scripts/hello-world.php'); + }); + + let executedCode; + + await waitFor(() => { + expect(phpRun).toHaveBeenCalledTimes(1); + [executedCode] = phpRun.mock.calls[0]; + expect(executedCode).toContain('echo "Hello, World!";'); + }); + + expect(executedCode).not.toBe(''); + expect(new URLSearchParams(window.location.search).get('code')).not.toBe(''); + }); + + it('boots the embedded demo only once under StrictMode', async () => { + render( + + + + ); + + await waitFor(() => { + expect(globalThis.fetch).toHaveBeenCalledTimes(1); + expect(PhpWeb).toHaveBeenCalledTimes(1); + expect(phpRun).toHaveBeenCalledTimes(1); + }); + }); + + it('uses Ace content for a manual run after the demo loads', async () => { + const {container} = render(); + + await waitFor(() => { + expect(phpRun).toHaveBeenCalledTimes(1); + }); + + phpRun.mockClear(); + editor.getValue.mockReturnValue(' { + expect(phpRun).toHaveBeenCalledWith('done; +} diff --git a/demo-web/src/Home.js b/demo-web/src/pages/Home.js similarity index 62% rename from demo-web/src/Home.js rename to demo-web/src/pages/Home.js index c8b8acc30..ace64e7f8 100644 --- a/demo-web/src/Home.js +++ b/demo-web/src/pages/Home.js @@ -1,32 +1,39 @@ -import './Common.css'; -import './Home.css'; -import phpPageIcon from './deepin-php-icon.svg'; -import cakePhpIcon from './cakephp-icon.svg'; -import drupalIcon from './drupal-icon.svg'; -import codeIgniterIcon from './codeigniter-icon.svg'; -import laravelIcon from './laravel-icon.svg'; -import laminasIcon from './laminas-icon.svg'; -import reactIcon from './react-icon.svg'; - -// import rolodexIcon from './icons/rolodex-icon-32.png'; -import editorIcon from './icons/editor-icon-32.png'; -import vscodeIcon from './icons/vscode-32.png'; -import donateIcon from './icons/donate-icon-32.png'; -import githubIcon from './icons/github-icon-32.png'; -import seanIcon from './icons/sean-icon-32.png'; - -import sunburstIcon from './icons/sunburst.png'; -import netscapeIcon from './icons/netscape.png'; -import mouseIcon from './icons/mouse.png'; -import cmdIcon from './icons/cmd-icon-32.png'; -import dbIcon from './icons/database.png'; -import downIcon from './icons/down.png'; -import upIcon from './icons/up.png'; +/** + * Landing page for the demo chooser and ancillary preview links. + */ +import '../styles/Common.css'; +import '../styles/Home.css'; +import phpPageIcon from '../assets/frameworks/deepin-php-icon.svg'; +import cakePhpIcon from '../assets/frameworks/cakephp-icon.svg'; +import drupalIcon from '../assets/frameworks/drupal-icon.svg'; +import codeIgniterIcon from '../assets/frameworks/codeigniter-icon.svg'; +import laravelIcon from '../assets/frameworks/laravel-icon.svg'; +import laminasIcon from '../assets/frameworks/laminas-icon.svg'; +import reactIcon from '../assets/frameworks/react-icon.svg'; + +// import rolodexIcon from '../assets/icons/rolodex-icon-32.png'; +import editorIcon from '../assets/icons/editor-icon-32.png'; +import vscodeIcon from '../assets/icons/vscode-32.png'; +import donateIcon from '../assets/icons/donate-icon-32.png'; +import githubIcon from '../assets/icons/github-icon-32.png'; +import seanIcon from '../assets/icons/sean-icon-32.png'; + +import sunburstIcon from '../assets/icons/sunburst.png'; +import netscapeIcon from '../assets/icons/netscape.png'; +import mouseIcon from '../assets/icons/mouse.png'; +import cmdIcon from '../assets/icons/cmd-icon-32.png'; +import downIcon from '../assets/icons/down.png'; +import upIcon from '../assets/icons/up.png'; import { useEffect, useMemo, useState } from 'react'; -import Header from './Header'; - -function Home() { +import Header from '../components/Header'; +import { basePath } from '../lib/runtimePaths'; + +/** + * Renders the main demo launcher and cycles the framework marquee artwork. + */ +function Home() +{ const [offset, setOffset] = useState(Math.trunc(Math.random() * 5)); const [scrollState, setScrollState] = useState(1); const [showMore, setShowMore] = useState(false); @@ -36,7 +43,7 @@ function Home() { useEffect(() => { if(query.has('code') || query.has('demo')) { - window.location = process.env.PUBLIC_URL + '/embedded-php.html' + window.location.search; + window.location = basePath(`embedded-php.html${window.location.search}`); } }, [query]); @@ -59,7 +66,6 @@ function Home() { setScrollState(1); setOffset((offset + 1) % 6); } - }, speed); }, [offset, scrollState]); @@ -70,14 +76,14 @@ function Home() {

Select a demo:

- +
page showing php logo
PHP Embedded Demo

View, edit & run PHP code right in the browser.

- +
CakePHP logo @@ -95,11 +101,11 @@ function Home() {
- - @@ -124,24 +130,24 @@ function Home() {
-

{setShowMore(!showMore)}}>More...

+

{setShowMore(!showMore);}}>More...

{ showMore && (
- + PHP-CLI Preview PHP-CLI Preview - + Inline FrontEnd PHP Inline FrontEnd PHP - + GTK PHP+Node Browser GTK PHP+Node Browser - + PHP Event Handlers PHP Event Handlers diff --git a/demo-web/src/pages/InstallDemo.js b/demo-web/src/pages/InstallDemo.js new file mode 100644 index 000000000..28f249d1e --- /dev/null +++ b/demo-web/src/pages/InstallDemo.js @@ -0,0 +1,340 @@ +/** + * Popup installer flow for restoring packaged framework demos into the CGI worker. + */ +import { useEffect, useMemo, useRef, useState } from 'react'; +import Terminal from '../components/Terminal'; +import loader from '../assets/ui/bar-spin.svg'; +import { getPhpBus, waitForPhpBusRequest } from '../lib/phpBus'; +import { basePath } from '../lib/runtimePaths'; +import { ensureServiceWorker, serviceWorkerControlTimeoutMs } from '../lib/serviceWorker'; + +// import zlib from 'php-wasm-zlib'; +// import libzip from 'php-wasm-libzip'; + +import '../styles/Common.css'; +import '../styles/InstallDemo.css'; + +const packages = { + 'drupal-7': { + // Switch these paths to the PostgreSQL backup if needed. + name: 'Drupal 7' + , file: '/backups/drupal-7.95.zip' + , path: 'drupal-7.95' + , vHost: 'drupal' + , dir: 'drupal-7.95' + , entry: 'index.php' + } + , 'cakephp-5': { + name: 'CakePHP 5' + , file: '/backups/cakephp-5.zip' + , path: 'cakephp-5' + , vHost: 'cakephp-5' + , dir: 'cakephp-5/webroot' + , entry: 'index.php' + } + , 'codeigniter-4': { + name: 'CodeIgniter 4' + , file: '/backups/codeigniter-4.zip' + , path: 'codeigniter-4' + , vHost: 'codeigniter-4' + , dir: 'codeigniter-4/public' + , entry: 'index.php' + } + , 'laminas-3': { + name: 'Laminas 3' + , file: '/backups/laminas-3.zip' + , path: 'laminas-3' + , vHost: 'laminas-3' + , dir: 'laminas-3/public' + , entry: 'index.php' + } + , 'laravel-11': { + name: 'Laravel 11' + , file: '/backups/laravel-11.zip' + , path: 'laravel-11' + , vHost: 'laravel-11' + , dir: 'laravel-11/public' + , entry: 'index.php' + } +}; + +/** + * Notifies the opener window that a framework install has completed. + */ +const informOpener = (selectedFrameworkName) => { + window.opener && window.opener.dispatchEvent( + new CustomEvent('install-complete', {detail: selectedFrameworkName}) + ); +}; + +const serviceWorkerRetryKey = 'php-wasm-install-demo-service-worker-retry'; +const serviceWorkerReloadDelayMs = 500; +const installerRpcTimeouts = { + analyzePath: 5000 + , writeFile: 30000 + , getSettings: 10000 + , setSettings: 10000 + , storeInit: 10000 + , refresh: 30000 +}; +/** + * Converts install-time RPC failures into readable status strings. + */ +const formatInstallError = error => { + const detail = error?.error ?? error?.message ?? String(error); + + if(error?.action) + { + return `Installer request "${error.action}" failed: ${detail}`; + } + + return `Installer failed: ${detail}`; +}; + +/** + * Strips service-worker settings down to the serializable fields the installer mutates. + */ +const createSerializableSettings = settings => ({ + docroot: settings?.docroot + , maxRequestAge: settings?.maxRequestAge + , staticCacheTime: settings?.staticCacheTime + , dynamicCacheTime: settings?.dynamicCacheTime + , vHosts: Array.isArray(settings?.vHosts) + ? settings.vHosts.map(vHost => ({ + pathPrefix: vHost?.pathPrefix + , directory: vHost?.directory + , entrypoint: vHost?.entrypoint + })) + : [] +}); + +/** + * Sends an installer RPC over quickbus with per-action timeout defaults. + */ +const sendInstallMessage = (bus, action, params = []) => { + const request = bus[action](...params); + + return waitForPhpBusRequest(request, { + action + , params + , timeoutMs: action in installerRpcTimeouts + ? installerRpcTimeouts[action] + : undefined + }); +}; + +/** + * Downloads, restores, and activates a selected framework package. + */ +export default function InstallDemo() +{ + const query = useMemo(() => new URLSearchParams(window.location.search), []); + const [message, setMessage] = useState('Initializing...'); + const [terminal, setTerminal] = useState(''); + const bootstrapPromise = useRef(null); + const disposed = useRef(false); + + useEffect(() => { + disposed.current = false; + + const updateMessage = nextMessage => { + if(!disposed.current) + { + setMessage(nextMessage); + } + }; + + const updateTerminal = nextTerminal => { + if(!disposed.current) + { + setTerminal(nextTerminal); + } + }; + + const failMissingController = async () => { + if(!sessionStorage.getItem(serviceWorkerRetryKey)) + { + sessionStorage.setItem(serviceWorkerRetryKey, '1'); + updateMessage('No Service Worker Detected, Reloading...'); + await new Promise(resolve => setTimeout(resolve, serviceWorkerReloadDelayMs)); + window.location.reload(); + return; + } + + sessionStorage.removeItem(serviceWorkerRetryKey); + updateMessage('Service worker did not take control of the installer popup. Close this window and try again.'); + }; + + if(!bootstrapPromise.current) + { + bootstrapPromise.current = (async () => { + try + { + const serviceWorker = await ensureServiceWorker({ + timeoutMs: serviceWorkerControlTimeoutMs + }); + + if(!serviceWorker.controlled) + { + if(serviceWorker.controlSource === 'error') + { + updateMessage('Failed to register the CGI service worker for the installer popup.'); + return; + } + + if(serviceWorker.controlSource === 'unsupported') + { + updateMessage('This browser does not support service workers for the installer popup.'); + return; + } + + await failMissingController(); + return; + } + + sessionStorage.removeItem(serviceWorkerRetryKey); + const bus = await getPhpBus({ + timeoutMs: serviceWorkerControlTimeoutMs + }); + + const selectedFrameworkName = query.get('framework'); + const overwrite = query.get('overwrite') ?? false; + + if(!selectedFrameworkName) + { + updateMessage('No framework selected.'); + return; + } + + if(!(selectedFrameworkName in packages)) + { + updateMessage('Invalid framework selected.'); + return; + } + + const selectedFramework = packages[selectedFrameworkName]; + + updateMessage('Downloading init script...'); + const initPhpCode = await (await fetch(basePath('scripts/init.php'))).text(); + + updateMessage('Acquiring Lock...'); + await navigator.locks.request('php-wasm-demo-install', async () => { + updateMessage('Checking for Existing Install...'); + const checkPath = await sendInstallMessage(bus, 'analyzePath', ['/persist/' + selectedFramework.dir]); + + if(!overwrite && checkPath.exists) + { + updateMessage('Already installed...'); + informOpener(selectedFrameworkName); + window.location = basePath(`cgi-bin/${selectedFramework.vHost}`); + return; + } + + updateMessage(`Downloading ${selectedFramework.file}...`); + const zipContents = await (await fetch(basePath(selectedFramework.file))).arrayBuffer(); + await sendInstallMessage(bus, 'writeFile', ['/persist/restore.zip', new Uint8Array(zipContents)]); + await sendInstallMessage(bus, 'writeFile', ['/config/restore-path.tmp', '/persist/' + selectedFramework.path]); + + updateMessage(`Setting up ${selectedFrameworkName}...`); + const settings = createSerializableSettings( + await sendInstallMessage(bus, 'getSettings') + ); + const vHostPrefix = basePath(`cgi-bin/${selectedFramework.vHost}`); + const existingvHost = settings.vHosts.find(vHost => vHost.pathPrefix === vHostPrefix); + + if(!existingvHost) + { + settings.vHosts.push({ + pathPrefix: vHostPrefix + , directory: '/persist/' + selectedFramework.dir + , entrypoint: selectedFramework.entry + }); + } + else + { + existingvHost.directory = '/persist/' + selectedFramework.dir; + existingvHost.entrypoint = selectedFramework.entry; + } + + await sendInstallMessage(bus, 'setSettings', [settings]); + await sendInstallMessage(bus, 'storeInit'); + + updateMessage(`Unpacking ${selectedFramework.file}...`); + + const onComplete = async (exitCode) => { + if(exitCode !== 0) return; + if(selectedFramework.sql) + { + updateMessage('Setting up PostgreSQL...'); + const sqlFile = await (await fetch(selectedFramework.sql)).text(); + await waitForPhpBusRequest( + bus.execSql(`idb://host= dbname=drupal port=5432`, sqlFile) + , { + action: 'execSql' + , params: [`idb://host= dbname=drupal port=5432`, sqlFile] + } + ); + await waitForPhpBusRequest( + bus.runSql(`idb://host= dbname=drupal port=5432`, 'select * from information_schema.tables') + , { + action: 'runSql' + , params: [`idb://host= dbname=drupal port=5432`, 'select * from information_schema.tables'] + } + ); + } + + updateMessage('Refreshing PHP-CGI...'); + await sendInstallMessage(bus, 'refresh', []); + + updateMessage(`Opening ${selectedFrameworkName}...`); + informOpener(selectedFrameworkName); + window.location = vHostPrefix; + }; + + updateTerminal( +
+ ' + initPhpCode} + /> +
+ ); + }); + } + catch(error) + { + console.error(error); + updateMessage(formatInstallError(error)); + } + })(); + } + + return () => { + disposed.current = true; + }; + }, [query]); + + return ( +
+
+
+

{message}

+ {terminal} + loading spinner +
+
+
+ ); +} diff --git a/demo-web/src/pages/InstallDemo.test.js b/demo-web/src/pages/InstallDemo.test.js new file mode 100644 index 000000000..a7a0ef2be --- /dev/null +++ b/demo-web/src/pages/InstallDemo.test.js @@ -0,0 +1,197 @@ +import React from 'react'; +import { render, screen, waitFor } from '@testing-library/react'; + +const { ensureServiceWorker, getPhpBus } = vi.hoisted(() => ({ + ensureServiceWorker: vi.fn() + , getPhpBus: vi.fn() +})); + +vi.mock('../lib/serviceWorker', () => ({ + ensureServiceWorker + , serviceWorkerControlTimeoutMs: 1500 +})); + +vi.mock('../lib/phpBus', async importOriginal => ({ + ...(await importOriginal()) + , getPhpBus +})); + +vi.mock('../components/Terminal', () => ({ + default: function TerminalMock() { + return null; + } +})); + +import InstallDemo from './InstallDemo'; + +describe('InstallDemo', () => { + let fetchMock; + let bus; + let originalServiceWorker; + let originalLocks; + + beforeEach(() => { + ensureServiceWorker.mockReset(); + getPhpBus.mockReset(); + + bus = { + analyzePath: vi.fn(async () => ({exists: false})) + , getSettings: vi.fn(async () => ({vHosts: []})) + , writeFile: vi.fn(async () => undefined) + , setSettings: vi.fn(async () => undefined) + , storeInit: vi.fn(async () => undefined) + , refresh: vi.fn(async () => undefined) + , execSql: vi.fn(async () => undefined) + , runSql: vi.fn(async () => undefined) + }; + + getPhpBus.mockResolvedValue(bus); + + ensureServiceWorker.mockResolvedValue({ + supported: true + , registered: true + , controlled: true + , controller: {scriptURL: '/php-wasm/cgi-worker.js'} + , controlSource: 'existing' + }); + + fetchMock = vi.fn(async (url) => { + if(String(url).includes('scripts/init.php')) + { + return { + text: async () => ' new ArrayBuffer(8) + }; + } + + throw new Error(`Unexpected fetch: ${url}`); + }); + + vi.stubGlobal('fetch', fetchMock); + + originalServiceWorker = navigator.serviceWorker; + originalLocks = navigator.locks; + + Object.defineProperty(navigator, 'serviceWorker', { + configurable: true + , value: { + controller: {scriptURL: '/php-wasm/cgi-worker.js'} + } + }); + + Object.defineProperty(navigator, 'locks', { + configurable: true + , value: { + request: vi.fn(async (_, callback) => callback()) + } + }); + + sessionStorage.clear(); + window.history.pushState({}, '', '/install-demo.html?framework=drupal-7'); + }); + + afterEach(() => { + vi.unstubAllGlobals(); + sessionStorage.clear(); + + if(originalServiceWorker === undefined) + { + delete navigator.serviceWorker; + } + else + { + Object.defineProperty(navigator, 'serviceWorker', { + configurable: true + , value: originalServiceWorker + }); + } + + if(originalLocks === undefined) + { + delete navigator.locks; + } + else + { + Object.defineProperty(navigator, 'locks', { + configurable: true + , value: originalLocks + }); + } + }); + + it('boots the installer only once under StrictMode', async () => { + render( + React.createElement( + React.StrictMode + , null + , React.createElement(InstallDemo) + ) + ); + + await waitFor(() => expect(bus.storeInit).toHaveBeenCalledTimes(1)); + + expect(fetchMock.mock.calls.filter(([url]) => String(url).includes('scripts/init.php'))).toHaveLength(1); + expect(fetchMock.mock.calls.filter(([url]) => String(url).includes('/backups/drupal-7.95.zip'))).toHaveLength(1); + expect(navigator.locks.request).toHaveBeenCalledTimes(1); + }); + + it('sanitizes runtime settings before sending them back to the worker', async () => { + bus.getSettings.mockResolvedValue({ + docroot: '/persist/www' + , maxRequestAge: 1234 + , staticCacheTime: 10 + , dynamicCacheTime: 20 + , vHosts: [ + { + pathPrefix: '/php-wasm/cgi-bin/test' + , directory: '/preload/test_www' + , entrypoint: 'hello-world.php' + , locateFile: () => '/tmp/not-cloneable' + } + ] + }); + + render(); + + await waitFor(() => expect(bus.setSettings).toHaveBeenCalledTimes(1)); + + expect(bus.setSettings).toHaveBeenCalledWith({ + docroot: '/persist/www' + , maxRequestAge: 1234 + , staticCacheTime: 10 + , dynamicCacheTime: 20 + , vHosts: [ + { + pathPrefix: '/php-wasm/cgi-bin/test' + , directory: '/preload/test_www' + , entrypoint: 'hello-world.php' + } + , { + pathPrefix: '/cgi-bin/drupal' + , directory: '/persist/drupal-7.95' + , entrypoint: 'index.php' + } + ] + }); + }); + + it('surfaces analyzePath failures instead of hanging on the status text', async () => { + bus.analyzePath.mockRejectedValue({ + error: 'Timed out waiting for a service worker reply after 5000ms.' + , action: 'analyzePath' + , params: ['/persist/drupal-7.95'] + }); + + render(); + + await screen.findByText( + 'Installer request "analyzePath" failed: Timed out waiting for a service worker reply after 5000ms.' + ); + }); +}); diff --git a/demo-web/src/pages/MultiIframeTest.js b/demo-web/src/pages/MultiIframeTest.js new file mode 100644 index 000000000..82f8b0118 --- /dev/null +++ b/demo-web/src/pages/MultiIframeTest.js @@ -0,0 +1,33 @@ +/** + * Stress-test page that opens many CGI-backed iframes at once. + */ +const FRAME_COUNT = 120; + +/** + * Renders a large batch of demo iframes to exercise the CGI service worker. + */ +export default function MultiIframeTest() +{ + const frames = Array.from({ length: FRAME_COUNT }, (_, i) => i + 1); + return ( +
+

Multi‑Iframe PHP CGI Test

+

+ This test mounts {FRAME_COUNT} simultaneous iframes pointing at a simple PHP page + served by the CGI service worker. +

+
+ {frames.map(i => ( + diff --git a/test/docs/fixtures/php-wasm-site/pages/extensions/pdo-cfd1.md b/test/docs/fixtures/php-wasm-site/pages/extensions/pdo-cfd1.md new file mode 100644 index 000000000..833b01cf6 --- /dev/null +++ b/test/docs/fixtures/php-wasm-site/pages/extensions/pdo-cfd1.md @@ -0,0 +1,62 @@ +--- +title: pdo-cfd1 +--- + +# pdo-cfd1 + +*pdo driver for Cloudflare D1 & php-wasm* + +@todo: Walkthrough on compiling php-wasm for Cloudflare. + +pdo_cfd1 requires PHP 8.1+. + +## Connect & Configure + +Pass the D1 object into the runtime constructor as a key to the `cfd1` object to enable pdo_cfd1 support. + +`cfd1:` will become available as a PDO driver: + +```javascript +const phpOptions = { + cfd1: { mainDb: event.env.mainDb } +}; + +await php.run(`prepare( + 'SELECT PageTitle, PageContent FROM WikiPages WHERE PageTitle = ?' + ); + $select->execute([$pageTitle]); + $page = $select->fetchObject();` +); +``` + +## Todo + +* *Named replacement tokens* - Currently only positional tokens are supported. +* *Error handling* - Error handling is currently very rudimentary and does not propagate messages. + +## Cloudflare D1 + +`pdo_cfd1` is powered by [Cloudflare D1](https://developers.cloudflare.com/d1/). + + diff --git a/test/docs/fixtures/php-wasm-site/pages/extensions/pdo-pglite.md b/test/docs/fixtures/php-wasm-site/pages/extensions/pdo-pglite.md new file mode 100644 index 000000000..fc227c81d --- /dev/null +++ b/test/docs/fixtures/php-wasm-site/pages/extensions/pdo-pglite.md @@ -0,0 +1,128 @@ +--- +title: pdo-pglite +--- + +# pdo-pglite + +*pdo driver for pglite & php-wasm* + +pdo_pglite requires PHP 8.1+. + +Pass the PGlite object into the php-wasm constructor to enable pdo_pglite support: + +```javascript +import { PGlite } from '@electric-sql/pglite'; +const php = new PhpWeb({PGlite}); +``` + +You can also load PGlite from a CDN: + +```javascript +import { PGlite } from 'https://cdn.jsdelivr.net/npm/@electric-sql/pglite/dist/index.js'; +const php = new PhpWeb({PGlite}); +``` + +## Connect & Configure + +Once PGlite is passed in, `pgsql:` will be available as a PDO driver. + +```javascript +import { PGlite } from 'https://cdn.jsdelivr.net/npm/@electric-sql/pglite/dist/index.js'; +const php = new PhpWeb({PGlite}); + +php.run(`prepare( + 'SELECT * FROM pg_catalog.pg_tables WHERE schemaname = :schema' + ); + $out = fopen('php://stdout', 'w'); + + $stm->execute([ + 'schema' => 'pg_catalog' + ]); + + $headers = false; + while ($row = $stm->fetch(PDO::FETCH_ASSOC)) { + if (!$headers) { + fputcsv($out, array_keys($row)); + $headers = true; + } + fputcsv($out, $row); + } +`); +``` + +### PHP/PostgreSQL in Static HTML + +PGlite can also be used right from static HTML. Just pass it in the `data-imports` attribute on the php script tag, with the URL of the module as the key, where the value lists the imports from that module as an array. + +```html + + +

+    

+
+
+```
+
+## @electric-sql/pglite
+
+`pdo_pglite` is powered by [@electric-sql/pglite](https://electric-sql.com/).
+
+
+
+
+
+
+
diff --git a/test/docs/fixtures/php-wasm-site/pages/extensions/using-php-extensions.md b/test/docs/fixtures/php-wasm-site/pages/extensions/using-php-extensions.md
new file mode 100644
index 000000000..61670f905
--- /dev/null
+++ b/test/docs/fixtures/php-wasm-site/pages/extensions/using-php-extensions.md
@@ -0,0 +1,248 @@
+---
+title: Using PHP Extensions
+weight: -1000
+---
+
+# Using PHP Extensions
+
+Extension helper JS packages are provided as ESM modules.
+
+Those helper modules rely on `import.meta.url` to resolve their static assets, so there is no universal CommonJS equivalent for them.
+
+If you need to bypass the helper packages, you can still provide the underlying `.so`, `.data`, `.wasm`, and support-library assets manually through the runtime constructors.
+
+You can pass an array as the `sharedLibs` argument to the constructor from Javascript to automatically generate an ini file that loads your extensions.
+
+```javascript
+import libxml from 'php-wasm-libxml';
+import dom from 'php-wasm-dom';
+
+const php = new PhpWeb({sharedLibs: [
+	libxml,
+	dom,
+]});
+```
+
+You can also use the `dynamicLibs` argument to get similar behavior **without** automatically loading the extension. A PHP script can call the `dl()` function to dynamically load the extension at runtime:
+
+```javascript
+import libxml from 'php-wasm-libxml';
+import dom from 'php-wasm-dom';
+
+const php = new PhpWeb({dynamicLibs: [
+	libxml,
+	dom,
+]});
+```
+
+```php
+ pathToFileURL(
+  path.resolve(__dirname, 'vendor', file)
+).href;
+
+const php = new PhpNode({
+  sharedLibs: [
+    {
+      name: 'php8.5-sqlite.so',
+      url: asset('php8.5-sqlite.so'),
+      ini: true,
+    },
+    {
+      name: 'libsqlite3.so',
+      url: asset('libsqlite3.so'),
+      ini: false,
+    },
+  ],
+});
+```
+
+If an extension also needs preload files such as `icudt72l.dat`, provide those through `files`. If you need to override where the base runtime discovers `.wasm`, `.data`, or supporting assets, use `locateFile`.
+
+
+The first codeblock is shorthand for the second. Passing `ini: true` will automatically load the extension via `/php.ini`, passing `ini: false` will wait for a call to `dl()` to do the lookup.
+
+```javascript
+const php = new PhpWeb({sharedLibs: [ await import('https://unpkg.com/php-wasm-sqlite') ]});
+```
+
+Supporting libraries should **not** be loaded via `ini`.
+
+```javascript
+const php = new PhpWeb({sharedLibs: [
+	{
+		name: `php8.4-sqlite.so`,
+		url:  `https://unpkg.com/php-wasm-sqlite/php8.4-sqlite.so`,
+		ini:  true,
+	},
+	{	
+		name: 'sqlite.so',
+		url: 'https://unpkg.com/php-wasm-sqlite/sqlite.so',
+		ini: false 
+	}
+]});
+```
+
+Strings starting with `/`, `./`, `http://` or `https://` will be treated as URLs:
+
+```javascript
+const php = new PhpWeb({sharedLibs: [
+	`./php8.4-phar.so`
+]});
+```
+
+Some extensions require supporting libraries. You can provide URLs for those as `sharedLibs` as well, just pass `ini: false`:
+
+*(`name` is implied to be the last section of the URL here.)*
+
+```javascript
+const php = new PhpWeb({sharedLibs: [
+	{ url: 'https://unpkg.com/php-wasm-sqlite/php8.4-sqlite.so', ini: true  },
+	{ url: 'https://unpkg.com/php-wasm-sqlite/sqlite.so',        ini: false },
+]});
+```
+
+## Extension List
+
+The following extensions may be loaded at runtime. This allows the shared extensions and their dependencies to be cached, reused, and selected à la carte for each application
+
+### gd
+
+[https://www.npmjs.com/package/php-wasm-gd](https://www.npmjs.com/package/php-wasm-gd)
+
+### iconv
+
+[https://www.npmjs.com/package/php-wasm-iconv](https://www.npmjs.com/package/php-wasm-iconv)
+
+### intl
+
+[https://www.npmjs.com/package/php-wasm-intl](https://www.npmjs.com/package/php-wasm-intl)
+
+### libxml
+
+[https://www.npmjs.com/package/php-wasm-libxml](https://www.npmjs.com/package/php-wasm-libxml)
+
+### xml
+
+[https://www.npmjs.com/package/php-wasm-xml](https://www.npmjs.com/package/php-wasm-xml)
+
+### dom
+
+[https://www.npmjs.com/package/php-wasm-dom](https://www.npmjs.com/package/php-wasm-dom)
+
+### simplexml
+
+[https://www.npmjs.com/package/php-wasm-simplexml](https://www.npmjs.com/package/php-wasm-simplexml)
+
+### xmlwriter
+
+[https://www.npmjs.com/package/php-wasm-xmlwriter](https://www.npmjs.com/package/php-wasm-xmlwriter)
+
+### yaml
+
+[https://www.npmjs.com/package/php-wasm-yaml](https://www.npmjs.com/package/php-wasm-yaml)
+
+### zip
+
+[https://www.npmjs.com/package/php-wasm-libzip](https://www.npmjs.com/package/php-wasm-libzip)
+
+### mbstring
+
+[https://www.npmjs.com/package/php-wasm-mbstring](https://www.npmjs.com/package/php-wasm-mbstring)
+
+### openssl
+
+[https://www.npmjs.com/package/php-wasm-openssl](https://www.npmjs.com/package/php-wasm-openssl)
+
+### phar
+
+[https://www.npmjs.com/package/php-wasm-phar](https://www.npmjs.com/package/php-wasm-phar)
+
+### sqlite
+
+[https://www.npmjs.com/package/php-wasm-sqlite](https://www.npmjs.com/package/php-wasm-sqlite)
+
+### pdo-sqlite
+
+[https://www.npmjs.com/package/php-wasm-sqlite](https://www.npmjs.com/package/php-wasm-sqlite)
+
+### tidy
+
+[https://www.npmjs.com/package/php-wasm-tidy](https://www.npmjs.com/package/php-wasm-tidy)
+
+### sdl
+
+Built into the `_sdl` runtime variant. No separate extension package is required.
+
+### zlib
+
+[https://www.npmjs.com/package/php-wasm-zlib](https://www.npmjs.com/package/php-wasm-zlib)
diff --git a/test/docs/fixtures/php-wasm-site/pages/extensions/vrzno.md b/test/docs/fixtures/php-wasm-site/pages/extensions/vrzno.md
new file mode 100644
index 000000000..f92773d83
--- /dev/null
+++ b/test/docs/fixtures/php-wasm-site/pages/extensions/vrzno.md
@@ -0,0 +1,184 @@
+---
+title: Vrzno
+---
+
+# Vrzno
+
+*Vrzno requires PHP 8.0+*
+
+VRZNO is the first PHP extension built for php-wasm. Once it's compiled with PHP, it can be served to any browser and executed client side. It can also run in Node.js and Cloudflare Workers.
+
+## How is this possible?
+
+VRZNO is a bridge between Javascript and PHP in an extremely nontraditional sense. It lets you pass objects, arrays, callbacks, and classes between PHP & Javascript, as well as scalar values.
+## PHP Functions
+
+### vrzno_await($promise)
+Wait on a Promise-like object to resolve within PHP before proceeding with the script. This will pause execution of PHP in the same way the `await` keyword does when used in Javascript.
+
+```php
+fetch('https://api.weather.gov/gridpoints/TOP/40,74/forecast'));
+$json = vrzno_await($response->json());
+
+var_dump($json);
+```
+
+### vrzno_import($module_url)
+Import a javascript library asynchronously. This is the PHP equivalent of Javascript's dynamic `import()`.
+
+See a demo: https://codepen.io/SeanMorris227/pen/LYqNNrE
+
+```php
+Date;
+
+var_dump($Date->now());
+```
+
+Since the `Date` object is also technically a class in Javascript, we can create a new instance in PHP using the `new` operator, and call the instance method, `toISOString`:
+
+```php
+Date;
+
+$d = new $Date;
+
+var_dump($d, $d->toISOString());
+```
+
+### new Vrzno
+Creates a new `Vrzno` object that holds a reference to Javascript's `globalThis` object. In the browser this corresponds to `window`.
+
+```php
+setTimeout( fn() => $window->alert('Done!'), 1000);
+```
+
+Since we can create new objects from classes, we can even use this to create Promises:
+
+```php
+Promise;
+
+$p = new $Promise(function($accept, $reject) use ($window) {
+    $window->setTimeout( fn() => $accept('Pass.'), 1000);
+});
+
+$dump = fn($value) => var_dump($value);
+$p->then($dump)->catch($dump);
+```
+
+## Arrays
+
+Both string and integer properties are fully marshalled for both PHP and JS arrays.
+
+## toString & __toString
+
+The Javascript `.toString` method and the PHP `->__toString` method are proxied to each other to ensure proper stringification in both languages.
+
+## URL fopen
+
+Vrzno implements a fetch-backend for the `http` and `https` stream wrappers, which respects the `allow_url_fopen` INI directive.
+
+```php
+ [
+    'method' => 'POST',
+    'content' => json_encode(['value' => 'foobar'])
+]];
+
+$context = stream_context_create($opts);
+
+var_dump(
+    file_get_contents('https://jsonplaceholder.typicode.com/users', false, $context)
+);
+```
+
+Currently, the following context options are implemented:
+
+* method
+* content
+* header
+* ignore_errors
+
+More information on HTTP context options can be found here:
+
+
+
+## Limitations
+
+* The Javascript object model places properties and methods in the same namespace. PHP however uses separate namespaces for properties and methods. This means an object in PHP can have a property `$x->y` as well as a method `$x->y()`. However, if a Javascript object has a method `x.y()`, then the property `x.y` must resolve to the same callback as the method.
+
+  Currently, when a PHP object is passed into a Javascript execution environment, method names take precedence over property names. This means if a PHP object has both a method `$x->y()`, and a property `$x->y`, then the property will be inaccessible from Javascript.
+
+* PHP Classes are not **yet** accessible from Javascript. i.e. there is no way to pass a class out of PHP and call `new` on it from Javascript.
+
+* Static methods are not yet proxied from PHP.
diff --git a/test/docs/fixtures/php-wasm-site/pages/filesystem/fs-operations.md b/test/docs/fixtures/php-wasm-site/pages/filesystem/fs-operations.md
new file mode 100644
index 000000000..da31f843b
--- /dev/null
+++ b/test/docs/fixtures/php-wasm-site/pages/filesystem/fs-operations.md
@@ -0,0 +1,115 @@
+---
+title: FS Operations
+---
+
+# Filesystem Operations
+
+## Filesystem Methods
+
+The following EmscriptenFS methods are exposed via the php object:
+
+### php.analyzePath
+
+Get information about a file or directory.
+
+```javascript
+await php.analyzePath(path);
+```
+
+### php.readdir
+
+Get a list of files and folders in a directory.
+
+```javascript
+await php.readdir(path);
+```
+
+### php.readFile
+
+Get the contents of a file as a `Uint8Array` by default, or optionally as utf-8.
+
+```javascript
+await php.readFile(path);
+```
+
+```javascript
+await php.readFile(path, {encoding: 'utf8'});
+```
+
+### php.stat
+
+Get information about a file or directory.
+
+```javascript
+await php.stat(path);
+```
+
+### php.mkdir
+
+Create a directory.
+
+```javascript
+await php.mkdir(path);
+```
+
+### php.rmdir
+
+Delete a directory (must be empty).
+
+```javascript
+await php.rmdir(path);
+```
+
+### php.unlink
+
+Delete a file.
+
+```javascript
+await php.unlink(path);
+```
+
+### php.rename
+
+Rename a file or directory.
+
+```javascript
+await php.rename(path, newPath);
+```
+
+### php.writeFile
+
+Create a new file. Content should be supplied as a `Uint8Array`, or optionally as a string of text.
+
+```javascript
+await php.writeFile(path, data);
+```
+
+```javascript
+await php.writeFile(path, data, {encoding: 'utf8'});
+```
+
+## Accessing the FileSystem of a Service Worker
+
+***Note:*** If you're using php-web in conjunction with php-cgi-worker to work on the filesystem, you'll need to `refresh` the filesystem in the worker. You can do that with the following call using `msg-bus` (as shown below).
+
+```javascript
+// Write a file
+await sendMessage('writeFile', ['/path/to/your/file', 'contents', {encoding: 'utf8'}]);
+
+// Check the path
+const result = await sendMessage('analyzePath', ['/path/to/your/file']);
+```
+
+If you modify the filesystem outside of the service worker, you can refresh its filesystem with a call to `refresh`.
+
+```javascript
+// Tell the worker that the FS has been updated
+await sendMessage('refresh');
+```
diff --git a/test/docs/fixtures/php-wasm-site/pages/filesystem/loading-files.md b/test/docs/fixtures/php-wasm-site/pages/filesystem/loading-files.md
new file mode 100644
index 000000000..347b58b1f
--- /dev/null
+++ b/test/docs/fixtures/php-wasm-site/pages/filesystem/loading-files.md
@@ -0,0 +1,80 @@
+---
+title: Loading Files
+---
+
+# Loading Files
+
+### Loading Single Files
+
+The constructor method of the php-wasm objects accepts a `files` parameter to load files into the filesystem by URL. For example, dynamic and shared `php-intl` builds require `icudt72l.dat` to be loaded into the `/preload` directory. Static `intl` builds can bundle that file into the runtime `.data` payload instead.
+
+```javascript
+const sharedLibs = [
+  { name: 'libicuuc.so',   url: 'https://unpkg.com/php-wasm-intl/libicuuc.so' },
+  { name: 'libicutu.so',   url: 'https://unpkg.com/php-wasm-intl/libicutu.so' },
+  { name: 'libicutest.so', url: 'https://unpkg.com/php-wasm-intl/libicutest.so' },
+  { name: 'libicuio.so',   url: 'https://unpkg.com/php-wasm-intl/libicuio.so' },
+  { name: 'libicui18n.so', url: 'https://unpkg.com/php-wasm-intl/libicui18n.so' },
+  { name: 'libicudata.so', url: 'https://unpkg.com/php-wasm-intl/libicudata.so' },
+];
+
+const files = [
+	{
+		name: 'icudt72l.dat',
+		parent: '/preload/',
+		url: 'https://unpkg.com/php-wasm-intl/icudt72l.dat'
+	}
+];
+
+const php = new PhpWeb({sharedLibs, files});
+```
+
+If you use the `php-wasm-intl` module directly, it will provide both the ICU support libraries and the `icudt72l.dat` preload file for dynamic builds. Shared runtimes should use the same preload file, but only inject the `libicu*.so` support libraries, not `php8.x-intl.so`.
+
+### Preloaded FS
+
+Use the `PRELOAD_ASSETS` key in your `.php-wasm-rc` file to define a list of files and directories to include by default.
+
+See [compiling/php-wasm-rc.html#preload_assets](/compiling/php-wasm-rc.html#preload_assets) for more information.
+
+### locateFile
+
+You can provide the `locateFile` option to php-wasm as a callback to map the names of files to URLs where they're loaded from. Returning `undefined` will fallback to the default behavior.
+
+This option is useful if your static assets are served from a different directory than your JavaScript files. It applies to .wasm files, shared libraries, single files, and preloaded FS packages in .data files.
+
+```javascript
+const php = new PhpWeb({locateFile: filename => `/my/static/path/${filename}`});
+```
+
+## Persistent Storage
+
+### IDBFS (Web & Worker)
+
+To use IDBFS in PhpWeb, pass a `persist` object with a `mountPath` key. The value of `mountPath` will be used as the path to the persistent directory within the PHP environment.
+
+```javascript
+const { PhpWeb } = await import('https://cdn.jsdelivr.net/npm/php-wasm/PhpWeb.mjs');
+
+const php = new PhpWeb({persist: {mountPath: '/persist'}});
+```
+
+### NodeFS (Node.js Only)
+
+To use NodeFS in PhpWeb, pass a `persist` object with `mountPath` & `localPath` keys.
+
+`localPath` will be used as the path to the HOST directory to expose to PHP.
+`mountPath` will be used as the path to the persistent directory within the PHP environment.
+
+```javascript
+const { PhpNode } = await import('https://cdn.jsdelivr.net/npm/php-wasm/PhpNode.mjs');
+
+const php = new PhpNode({persist: {mountPath: '/persist', localPath: '~/your-files'}});
+```
diff --git a/test/docs/fixtures/php-wasm-site/pages/filesystem/transactions.md b/test/docs/fixtures/php-wasm-site/pages/filesystem/transactions.md
new file mode 100644
index 000000000..479437b4b
--- /dev/null
+++ b/test/docs/fixtures/php-wasm-site/pages/filesystem/transactions.md
@@ -0,0 +1,33 @@
+
+# Transactions
+
+**Note: This feature is available for Web and Worker environments only!**
+
+The web and worker builds utilize `navigator.locks.request` to request a lock named `php-wasm-fs-lock` before performing filesystem operations. This ensures that multiple tabs and the service worker can interact with the filesystem without overwriting each other's work.
+
+Before any filesystem operation occurs, the entire filesystem is loaded from IDBFS, and before releasing the lock, the entire filesystem is loaded back into IDBFS.
+
+The operations are enqueued asynchronously, meaning that **if multiple requests are generated before one transaction closes, they will be automatically batched.** This also applies to multiple requests generated before the lock is acquired. Generally, there is no need to take explicit control of filesystem mirroring.
+
+## Manual Control of FS Mirroring
+
+If you prefer to suppress this automatic behavior and take explicit control over filesystem mirroring, you can pass the `{autoTransaction: false}` option to the constructor. In this case, you will need to call `php.startTransaction()` before any filesystem operations, and then `php.commitTransaction()` when you are done. **Using this incorrectly may leave your filesystem in a corrupted state.**
+
+### php.startTransaction
+
+```javascript
+await php.startTransaction();
+```
+
+### php.commitTransaction
+
+```javascript
+await php.commitTransaction();
+```
diff --git a/test/docs/fixtures/php-wasm-site/pages/getting-started/cgi-in-nodeJs.md b/test/docs/fixtures/php-wasm-site/pages/getting-started/cgi-in-nodeJs.md
new file mode 100644
index 000000000..fb688e17b
--- /dev/null
+++ b/test/docs/fixtures/php-wasm-site/pages/getting-started/cgi-in-nodeJs.md
@@ -0,0 +1,218 @@
+---
+title: PHP-CGI for Node.js
+weight: -500
+---
+
+# Php-Cgi-Wasm for Node.js
+
+`PhpCgiNode` runs the CGI build of PHP inside Node.js and lets you serve requests through a normal Node HTTP server.
+
+Use it when you want PHP to behave like a web application instead of an embedded expression runner. In practice that means:
+
+- requests go through `php.request(...)`
+- PHP reads from a document root
+- cookies and CGI environment variables are managed for you
+- files can persist to host directories with NodeFS mounts
+
+## Install
+
+```bash
+npm i php-cgi-wasm
+```
+
+If you want runtime-loadable extensions, install the packages you plan to use as well:
+
+```bash
+npm i php-wasm-intl php-wasm-libxml php-wasm-phar php-wasm-mbstring php-wasm-openssl php-wasm-dom php-wasm-xml php-wasm-simplexml php-wasm-sqlite php-wasm-zlib php-wasm-gd
+```
+
+## Minimal HTTP server
+
+This is the basic pattern:
+
+```javascript
+#!/usr/bin/env node
+import http from 'node:http';
+import { PhpCgiNode } from 'php-cgi-wasm/PhpCgiNode';
+
+const php = new PhpCgiNode({
+  prefix: '/php-wasm/cgi-bin/',
+  docroot: '/persist/www',
+  persist: [
+    { mountPath: '/persist', localPath: './persist' },
+    { mountPath: '/config',  localPath: './config'  },
+  ],
+});
+
+const server = http.createServer(async (request, response) => {
+  const result = await php.request(request);
+  const reader = result.body.getReader();
+
+  response.writeHead(result.status, [...result.headers.entries()].flat());
+
+  let done = false;
+
+  while(!done)
+  {
+    const chunk = await reader.read();
+    done = chunk.done;
+
+    if(chunk.value)
+    {
+      response.write(chunk.value);
+    }
+  }
+
+  response.end();
+});
+
+server.listen(3003);
+```
+
+Open `http://localhost:3003/php-wasm/cgi-bin/` after creating a PHP app under `./persist/www`.
+
+If you're running CommonJS instead of ESM, use `const { PhpCgiNode } = require('php-cgi-wasm/PhpCgiNode');` and keep the rest of the constructor options the same.
+
+## Loading extensions
+
+When your active library mode is `dynamic`, pass extension packages as `sharedLibs`:
+
+```javascript
+const php = new PhpCgiNode({
+  prefix: '/php-wasm/cgi-bin/',
+  docroot: '/persist/www',
+  persist: [
+    { mountPath: '/persist', localPath: './persist' },
+    { mountPath: '/config',  localPath: './config'  },
+  ],
+  sharedLibs: [
+    await import('php-wasm-intl'),
+    await import('php-wasm-libxml'),
+    await import('php-wasm-phar'),
+    await import('php-wasm-mbstring'),
+    await import('php-wasm-openssl'),
+    await import('php-wasm-dom'),
+    await import('php-wasm-xml'),
+    await import('php-wasm-simplexml'),
+    await import('php-wasm-sqlite'),
+    await import('php-wasm-zlib'),
+    await import('php-wasm-gd'),
+  ],
+});
+```
+
+`sharedLibs` works the same way here as it does in the other runtimes: extension packages resolve their `.so` files and supporting libraries automatically.
+
+The extension helper JS packages remain ESM-only. In CommonJS, do not `require()` those helper packages. Manage extension `.so`, `.data`, `.wasm`, and support-library assets manually through `sharedLibs`, `dynamicLibs`, `files`, and `locateFile`, as described in the extensions guide.
+
+## Important options
+
+### `docroot`
+
+The PHP document root inside the emscripten filesystem.
+
+```javascript
+docroot: '/persist/www'
+```
+
+With the `persist` mounts above, that maps to `./persist/www` on the host.
+
+### `prefix`
+
+The URL prefix that identifies requests meant for this PHP application.
+
+```javascript
+prefix: '/php-wasm/cgi-bin/'
+```
+
+### `persist`
+
+NodeFS mounts. These expose host directories to PHP.
+
+```javascript
+persist: [
+  { mountPath: '/persist', localPath: './persist' },
+  { mountPath: '/config',  localPath: './config'  },
+]
+```
+
+This is how you keep application files, sessions, caches, and config across requests.
+
+### `types`
+
+Optional MIME type map for static files served through the CGI wrapper.
+
+```javascript
+types: {
+  jpg:  'image/jpeg',
+  jpeg: 'image/jpeg',
+  gif:  'image/gif',
+  png:  'image/png',
+  svg:  'image/svg+xml',
+}
+```
+
+### `version`
+
+Selects the PHP-CGI runtime version to load. `PhpCgiNode` currently defaults to `8.4`.
+
+```javascript
+version: '8.5'
+```
+
+### `rewrite`, `entrypoint`, `exclude`, `env`, `notFound`, `onRequest`
+
+These work the same way as the CGI worker/web runtimes documented in [php-cgi-wasm methods](/methods/php-cgi-wasm.html):
+
+- `rewrite` rewrites incoming paths before routing
+- `entrypoint` forces a single PHP entry script such as `index.php`
+- `exclude` bypasses PHP for matching URL prefixes
+- `env` sets CGI environment variables
+- `notFound` returns a custom 404 response
+- `onRequest` lets you inspect each request/response pair
+
+## What `php.request()` expects
+
+`PhpCgiNode` accepts a Node HTTP request object directly:
+
+```javascript
+const result = await php.request(request);
+```
+
+Internally it normalizes the Node request into a URL plus headers map, then returns a standard `Response` object. That is why the server bridge above reads:
+
+- `result.status`
+- `result.headers`
+- `result.body.getReader()`
+
+## Cookies and config
+
+The CGI runtime keeps its cookie jar under `/config/.cookies`. If `/config` is persisted to disk, cookies survive process restarts along with the rest of your mounted config.
+
+The runtime also sets `PHP_INI_SCAN_DIR` to include `/config`, `/preload`, and the active document root, so project-local configuration files can be loaded from those paths.
+
+## Multi-app routing
+
+If you need to host more than one PHP app behind one Node server, `PhpCgiBase` also supports `vHosts` entries with:
+
+- `pathPrefix`
+- `directory`
+- `entrypoint`
+
+That lets one runtime serve multiple PHP applications by URL prefix from different directories.
+
+## Related source
+
+The current Node demo in the upstream repo lives at:
+
+- [`demo-node/index.mjs`](https://github.com/seanmorris/php-wasm/blob/develop/demo-node/index.mjs)
+
+The `PhpCgiNode` class itself is implemented at:
+
+- [`source/PhpCgiNode.mjs`](https://github.com/seanmorris/php-wasm/blob/develop/source/PhpCgiNode.mjs)
diff --git a/test/docs/fixtures/php-wasm-site/pages/getting-started/cgi-service-worker.md b/test/docs/fixtures/php-wasm-site/pages/getting-started/cgi-service-worker.md
new file mode 100644
index 000000000..872dd5b74
--- /dev/null
+++ b/test/docs/fixtures/php-wasm-site/pages/getting-started/cgi-service-worker.md
@@ -0,0 +1,84 @@
+---
+title: PHP-CGI in Service Workers
+weight: -600
+---
+
+# Php-Cgi-Wasm for Service Workers
+
+Version 0.0.9 adds `php-cgi-wasm` to the mix. This allows you to run php in web-server mode, similar to how it runs under apache or nginx. Running within a Service Worker, it can intercept and respond to HTTP requests just like a normal webserver. This means the browser can simply navigate to a URL, and PHP will generate the page, and everything will work as-normal, AJAX and all. From the perspective of the webpage, its just making HTTP requests. Its not worried about whether the PHP runs on the server or in a Service Worker.
+
+### Install the php-cgi-wasm package
+
+```bash
+$ npm install php-cgi-wasm
+```
+
+### Example Service Worker
+
+```  { .javascript numbers="true" }
+import { PhpCgiWorker } from "php-cgi-wasm/PhpCgiWorker";
+
+// Spawn the PHP-CGI binary
+const php = new PhpCgiWorker({
+	prefix:  '/php-wasm',
+	docroot: '/persist/www',
+	types: {
+		jpg:  'image/jpeg',
+		jpeg: 'image/jpeg',
+		gif:  'image/gif',
+		png:  'image/png',
+		svg:  'image/svg+xml',
+	}
+});
+
+// Set up the event handlers
+self.addEventListener('install',  event => php.handleInstallEvent(event));
+self.addEventListener('activate', event => php.handleActivateEvent(event));
+self.addEventListener('fetch',    event => php.handleFetchEvent(event));
+self.addEventListener('message',  event => php.handleMessageEvent(event));
+```
+
+***Note:*** `php-cgi-wasm` & `php-wasm` are separate packages. One "embeds" php right into your javascript, the other runs in "cgi-mode," just like php would under apache or nginx.
+
+### msg-bus
+
+There is a `msg-bus` module supplied by `php-cgi-wasm` as a helper to communicate with php running inside a worker. The module exposes two functions: `sendMessageFor` and `onMessage`.
+
+This allows you to simply `await` the result of calls to file system methods (see above) on the service worker:
+
+```javascript
+const result = await sendMessage(methodName, [param, param, param]);
+```
+
+#### onMessage & sendMessageFor
+
+* Use `onMessage` as an event handler for `message` events coming from the Service Worker.
+* Use `sendMessageFor` to **GENERATE A FUNCTION** that you can use to send messages to your service worker.
+
+```{ .javascript highlight="9,11" }
+import { onMessage, sendMessageFor } from 'php-cgi-wasm/msg-bus';
+
+const SERVICE_WORKER_SCRIPT_URL = '/cgi-worker.mjs';
+
+navigator.serviceWorker.register(SERVICE_WORKER_SCRIPT_URL);
+
+navigator.serviceWorker.addEventListener('message', onMessage);
+
+const sendMessage = sendMessageFor(SERVICE_WORKER_SCRIPT_URL);
+
+const result = await sendMessage(methodName, [param, param, param]);
+```
+
+#### php.handleMessageEvent
+
+Once you've got the above set up, use `php.handleMessageEvent` to handle the `message` events on the service worker:
+
+```javascript
+self.addEventListener('message',  event => php.handleMessageEvent(event));
+```
diff --git a/test/docs/fixtures/php-wasm-site/pages/getting-started/home.md b/test/docs/fixtures/php-wasm-site/pages/getting-started/home.md
new file mode 100644
index 000000000..b5138335d
--- /dev/null
+++ b/test/docs/fixtures/php-wasm-site/pages/getting-started/home.md
@@ -0,0 +1,57 @@
+---
+title: Home
+pagetitle: Documentation Home
+weight: -1000
+---
+
+# Home
+
+[![Static Badge](https://img.shields.io/badge/reddit-always%20online-336699?style=for-the-badge&logo=reddit)](https://www.reddit.com/r/phpwasm/) [![Discord](https://img.shields.io/discord/1199824765666463835?style=for-the-badge&logo=discord&link=https%3A%2F%2Fdiscord.gg%2Fj8VZzju7gJ)](https://discord.gg/j8VZzju7gJ)
+
+Join the community: [reddit](https://www.reddit.com/r/phpwasm/) | [discord](https://discord.gg/j8VZzju7gJ)
+
+Nightly builds are announced in the `#nightly-builds` channel on the `php-wasm` Discord server.
+
+## Getting Started
+
+To install php-wasm with npm, see [INSTALLING](/getting-started/install-and-include.html).
+
+For instructions on using PHP inside of JS scripts, see [PHP In Javascript](/getting-started/php-in-js.html).
+
+If you want to write pure frontend PHP and skip the JS entirely, see [PHP In Static HTML](/getting-started/php-in-static-html.html).
+
+If you'd like to spin up a webserver right in your browser, see [PHP-CGI In Service Workers](/getting-started/cgi-service-worker.html).
+
+If you'd like to serve websites with Node.js, see [PHP-CGI In Node.js](/getting-started/cgi-in-nodeJs.html).
+
+## Demo
+
+
+
+## Nightly Builds
+
+The latest successful nightly artifact build published from GitHub Actions is the `Build Artifacts` workflow run on `develop` from **February 24, 2026**:
+
+- Run `#92`
+- GitHub Actions run ID `22360005357`
+- PHP `8.0`, `8.1`, `8.2`, `8.3`, `8.4`, and `8.5`
+- `static`, `shared`, and `dynamic` library builds
+- Discord: nightly builds are announced in `#nightly-builds`
+
+
+
+For historical release notes, see the [CHANGELOG](/CHANGELOG.html).
+
+## 🍻 Licensed under the Apache License, Version 2.0
+
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
+
+Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+
+http://www.apache.org/licenses/LICENSE-2.0
diff --git a/test/docs/fixtures/php-wasm-site/pages/getting-started/install-and-include.md b/test/docs/fixtures/php-wasm-site/pages/getting-started/install-and-include.md
new file mode 100644
index 000000000..a26e470c7
--- /dev/null
+++ b/test/docs/fixtures/php-wasm-site/pages/getting-started/install-and-include.md
@@ -0,0 +1,109 @@
+---
+title: Install & Import
+weight: -900
+---
+
+# Install & Import php-wasm
+
+Include the module in your preferred format:
+
+## From a CDN
+
+Using ESM modules, you can import php-wasm directly from a CDN:
+
+### jsDelivr
+
+```javascript
+const { PhpWeb } = await import('https://cdn.jsdelivr.net/npm/php-wasm/PhpWeb.mjs');
+const php = new PhpWeb;
+```
+
+### unpkg
+
+```javascript
+const { PhpWeb } = await import('https://unpkg.com/php-wasm/PhpWeb.mjs');
+const php = new PhpWeb;
+```
+
+## Installing with npm
+
+You can also install php-wasm with npm.
+
+[Find php-wasm on npm](https://www.npmjs.com/package/php-wasm)
+
+### Current packages
+
+```sh
+$ npm i php-wasm
+$ npm i php-cgi-wasm
+$ npm i php-cli-wasm
+$ npm i php-dbg-wasm
+$ npm i php-wasm-builder
+```
+
+### Latest nightly build
+
+If you want the newest unpublished artifacts instead of the npm packages, use the latest successful `Build Artifacts` workflow run from GitHub Actions.
+
+If you specifically need the long-lived `develop` artifacts, the latest successful `develop`-branch build is still the February 24, 2026 run:
+
+- `Build Artifacts` run `#92`
+- GitHub Actions run ID `22360005357`
+- Branch: `develop`
+- Versions built: PHP `8.0` through `8.5`
+- Library modes built: `static`, `shared`, and `dynamic`
+- Discord: nightly builds are announced in `#nightly-builds`
+
+Link:
+
+
+
+#### Pre-Packaged Static Assets:
+
+If you're using a bundler, use the vendor's documentation to learn how to move the files matching the following pattern to your public directory:
+
+```bash
+node_modules/php-wasm/php8.4-web.mjs.wasm
+node_modules/php-cgi-wasm/php8.4-cgi-worker.mjs.wasm
+```
+
+## Importing the module
+
+### ESM
+
+```javascript
+import { PhpWeb } from 'php-wasm/PhpWeb.mjs';
+const php = new PhpWeb;
+```
+
+### CommonJS Node runtimes
+
+```javascript
+const { PhpNode } = require('php-wasm/PhpNode');
+
+const php = new PhpNode({version: '8.5'});
+```
+
+### Module Format
+
+Core Node runtimes support both ESM and CommonJS.
+
+For `0.1.0`, use the published entrypoints across the runtime packages.
+
+- `php-wasm/PhpNode`
+- `php-cgi-wasm/PhpCgiNode`
+- `php-cli-wasm/PhpCliNode`
+- `php-dbg-wasm/PhpDbgNode`
+
+Browser and worker entrypoints remain ESM-only.
+
+Extension helper JS packages also remain ESM-only. Their helper modules use `import.meta.url` to resolve static assets, and there is no universal CommonJS equivalent for that pattern.
+
+When you need to manage runtime-loadable extensions from CommonJS, load the core runtime with `require()` and provide the extension `.so`, `.data`, `.wasm`, and support-library assets yourself via `sharedLibs`, `dynamicLibs`, `files`, and `locateFile`.
diff --git a/test/docs/fixtures/php-wasm-site/pages/getting-started/php-in-js.md b/test/docs/fixtures/php-wasm-site/pages/getting-started/php-in-js.md
new file mode 100644
index 000000000..8ff23075a
--- /dev/null
+++ b/test/docs/fixtures/php-wasm-site/pages/getting-started/php-in-js.md
@@ -0,0 +1,110 @@
+---
+title: PHP in Javascript
+weight: -800
+---
+
+# Php-Wasm in Javascript
+
+## Running PHP & Taking Output
+
+First, import the module and create an instance of  PHP:
+
+```javascript
+const { PhpWeb } = await import('https://cdn.jsdelivr.net/npm/php-wasm/PhpWeb.mjs');
+const php = new PhpWeb;
+```
+
+Add some event listeners to get ahold of the output:
+
+```javascript
+// Listen to STDOUT & STDERR
+php.addEventListener('output', (event) => console.log(event.detail));
+php.addEventListener('error',  (event) => console.log(event.detail));
+```
+
+Pass some data on STDIN if required:
+
+```javascript
+php.inputString('This is a string of data provided on STDIN.');
+```
+
+... then run some PHP!
+
+```javascript
+const exitCode = await php.run(' phpDate(format, phpStrtotime(time));
+```
+
+You can see this working live on CodePen:
+
+
+
+```javascript
+(async () => {
+  const { PhpWeb } = await import('https://cdn.jsdelivr.net/npm/php-wasm/PhpWeb.mjs');
+  const php = new PhpWeb;
+  const input  = document.querySelector('#date-input');
+  const format = document.querySelector('#date-format');
+  const output = document.querySelector('#date-output');
+
+  // Return an actual PHP function to Javascript:
+  const phpStrtotime = await php.x`function($time) { return strtotime($time); }`;
+  const phpDate = await php.x`function($format, $time) { return date($format, $time); }`;
+
+  const formatTime = (format, time) => phpDate(format, phpStrtotime(time));
+
+  input.addEventListener('input', () => output.innerText = formatTime(format.value, input.value));
+  format.addEventListener('input', () => output.innerText = formatTime(format.value, input.value));
+
+  format.value = 'Y-m-d H:i:s';
+  input.value = '8:00pm 2 days ago';
+
+  output.innerText = formatTime(format.value, input.value);
+})();
+```
+
+## Importing Javascript Values into PHP
+
+The `php.x՝...՝` & `php.r՝...՝` functions allow for Javascript to be interpolated into PHP code with the  `${𝒆𝒙𝒑𝒓𝒆𝒔𝒔𝒊𝒐𝒏}` notation that Javascript `՝backtick՝` interpolation normally allows for. Any Javascript values can be interpolated, and PHP will treat them as normal, native objects.
+
+You can see this working live on CodePen:
+
+
+
+```{ .javascript highlight="10-12" }
+(async () => {
+  const { PhpWeb } = await import('https://cdn.jsdelivr.net/npm/php-wasm/PhpWeb.mjs');
+
+  const php = new PhpWeb;
+
+  const phpCallback = await php.x` function(){
+
+    $phpString = "PHP String";
+
+    $jsCallback = ${function() {
+        return "JS String: " + window.prompt("Provide some input, please.");
+    }};
+
+    return sprintf("%s and %s", $phpString, $jsCallback());
+  }`;
+
+  document.write(phpCallback());
+
+})();
+```
diff --git a/test/docs/fixtures/php-wasm-site/pages/getting-started/php-in-static-html.md b/test/docs/fixtures/php-wasm-site/pages/getting-started/php-in-static-html.md
new file mode 100644
index 000000000..b611826e9
--- /dev/null
+++ b/test/docs/fixtures/php-wasm-site/pages/getting-started/php-in-static-html.md
@@ -0,0 +1,144 @@
+---
+title: PHP in Static HTML
+weight: -700
+---
+
+# Php-Wasm in Static HTML
+
+PHP can be included in static HTML pages that are served with no dynamic processing on the backend whatsoever. Just use one of the `php-tags` module entrypoints from a CDN in your page:
+
+**JSDelivr**
+
+```html
+
+```
+
+**Unpkg**
+
+```html
+
+```
+
+Once you've included that, you can start writing php within `
+
+
+``` + +Inline php can use standard input, output and error with `data-` attributes. Just set the value of the attribute to a selector that will match that tag. + +``` { .html highlight="5" } + + + + + + +
+
+``` + +The `src` attribute can be used on ` + + + + +
+
+ + +``` + +## Dynamic Extensions in Static Pages + +Dynamic extensions can be loaded in static webpages like so: + +```{ .html numbers="true" highlight="4-6" } + +``` + +You can find the full list of extensions here: [extensions/using-php-extensions.html#extension-list](/extensions/using-php-extensions.html#extension-list) + +Here is a less-than-trivial example that loads zlib, gd, libwebp & others: + + + +```html +https://github.com/seanmorris/php-wasm
+ + +
+

+
+```
+
+The examples above assume the default `php-tags` runtime version (`8.4` at the moment). If you set a different `data-version`, update the `php8.x-*.so` filenames to match.
diff --git a/test/docs/fixtures/php-wasm-site/pages/getting-started/php.ini.md b/test/docs/fixtures/php-wasm-site/pages/getting-started/php.ini.md
new file mode 100644
index 000000000..bad2a3fe5
--- /dev/null
+++ b/test/docs/fixtures/php-wasm-site/pages/getting-started/php.ini.md
@@ -0,0 +1,60 @@
+---
+title: php.ini
+weight: -850
+---
+
+# php.ini
+
+The php.ini files in php-wasm work exactly the same as in normal php. See the [PHP docs](https://www.php.net/manual/en/ini.list.php) for the full list of ini settings.
+
+```ini
+[php]
+date.timezone=UTC
+tidy.clean_output=1
+expose_php=0
+```
+
+## Setting up php.ini at Runtime
+
+You can pass in the `ini` property to the constructor to add lines to `/php.ini`:
+
+```javascript
+const php = new PhpWeb({ini: `
+	date.timezone=${Intl.DateTimeFormat().resolvedOptions().timeZone}
+	tidy.clean_output=1
+	expose_php=0
+`});
+```
+
+## FS Locations
+
+If present, The `/config/php.ini` and `/preload/php.ini` files will also be loaded. You can learn how to populate the filesystem in [Loading Files](/filesystem/loading-files.html).
+
+## Loading Extensions by PHP Version
+
+PHP allows for `${ENVIRONMENT_VARIABLES}` to be used inside ini files. The `PHP_VERSION` environment variable is provided to allow loading of the extension compatible with the currently running version of PHP.
+
+```ini
+[php]
+extension=php${PHP_VERSION}-phar.so
+```
+
+Remember to correctly escape the `$` if you're supplying the INI from Javascript with `՝backtics՝`.
+
+```{ .javascript highlight="2" }
+const php = new PhpWeb({ini: `
+	extension=php\${PHP_VERSION}-phar.so
+	date.timezone=${Intl.DateTimeFormat().resolvedOptions().timeZone}
+`});
+```
+
+## CGI Configuration
+
+When running in CGI mode, php will look for a `php.ini` file in the document root directory, and load it along with the files listed above.
+
diff --git a/test/docs/fixtures/php-wasm-site/pages/index.md b/test/docs/fixtures/php-wasm-site/pages/index.md
new file mode 100644
index 000000000..fe96a93cf
--- /dev/null
+++ b/test/docs/fixtures/php-wasm-site/pages/index.md
@@ -0,0 +1,91 @@
+---
+title: Php-Wasm by Sean Morris
+description-meta: PHP in Browser, powered by WebAssembly. Deploy PHP 8 apps client-side in one click, run PHP in cloudflare with full access to D1 SQL, or write PHP desktop apps with GTK.
+noprefix: true
+template: templates/with-hero.php
+hero: intro.html
+leftBarLink: false
+leftBarShow: false
+canonical: https://php-wasm.seanmorr.is/
+itemtype: schema.org/SoftwareSourceCode
+microdata:
+    name: php-wasm
+    description: Php-Wasm is an implementation of PHP running in Web Assembly.
+    alternateName: php-cgi-wasm
+    programmingLanguage: php, javascript, webassembly
+    runtimePlatform: webassembly
+    codeRepository: https://github.com/seanmorris/php-wasm
+    copyrightHolder: Sean Morris
+    copyrightYear: 2020-2026
+    countryOfOrigin: USA
+    headline: PHP powered by WebAssembly.
+    isAccessibleForFree: true
+    isBasedOn: php
+    isFamilyFriendly: true
+    keywords: php, javascript, webassembly
+    license: https://www.apache.org/licenses/LICENSE-2.0.txt
+    maintainer: Sean Morris
+    additionalType: https://schema.org/ComputerLanguage
+---
+
+

Php Wasm puts PHP right in the browser.

+PHP can now run in the browser as a counterpart to Javascript, and can either be invoked from Javascript code or static HTML, where it's got full access to JS APIs as well as the DOM. Or, it can run a service worker, where it mimics a CGI webserver like Apache or nginx. And yea, it can serve whole websites. + + + +

Standard PDO Database Connectors.

+Php Wasm supports SQLite, PostgreSQL, and Cloudflare D1, all via PDO, so you can query your database just like you've always done it. + +

A Full Bridge To Javascript Code

+The Vrzno extension allows PHP to gain access to any APIs available to Javascript. Objects, functions, and even classes can be imported from Javascript and used in PHP as if they were native code. That opens up things like DOM APIs, or anything else the browser exposes to Javascript. On the desktop, Node.js packages like NodeGTK can be used to build desktop applications in PHP. + +You can see a simple demo of the Curvature framework being used to generate some dynamic html [here](https://seanmorris.github.io/php-wasm/?demo=curvature.php), or a node-based version that allows PHP to access GTK [here](https://github.com/seanmorris/php-gtk). + + + +

Field Tested.

+ +Php Wasm is already powering cutting-edge frontend PHP applications like WordPress-Playground, Drupal-Playground, and PlayWithLaravel. You can also find it featured on [3v4l.org](https://3v4l.org). + +

Fully Loaded with Batteries Included.

+ +Php Wasm comes with support for many of the most commonly used PHP extensions, including LibXML, OpenSSL, Intl, ICU, GD, mbstring + oniguruma, and zlib. Most of them can be loaded dynamically as shared objects, or compiled statically if your use case requires it. [View the whole list](/extensions/using-php-extensions.html#extension-list). + +Extensions can even be loaded from a CDN like jsDelivr or unpkg, since they're wrapped in JS modules. You can learn how to do all that and more in the [docs](/extensions/using-php-extensions.html#dynamic-imports-for-extensions). + +

Isomorphic PHP.

+ +Write code that runs on the backend, the frontend, the edge and the service worker. You can even include classes directly from Packagist with a cloud-based autoloader. + +

And, of course, its Open Source.

+ +Php Wasm is published 100% for free under the Apache License, Version 2.0. This means Php Wasm is and always will be 100% free. Php Wasm is committed to maintaining the free and open nature of the web, and all the tools the project is based on. + +

Want to Reach Out?

+ +If you'd like to get involved and contribute code or sponsorship, head over to the [GitHub repo](https://github.com/seanmorris/php-wasm), and don't hesitate to say hi on [Discord](https://discord.com/invite/j8VZzju7gJ)! diff --git a/test/docs/fixtures/php-wasm-site/pages/methods/php-cgi-wasm.md b/test/docs/fixtures/php-wasm-site/pages/methods/php-cgi-wasm.md new file mode 100644 index 000000000..b11c2e83a --- /dev/null +++ b/test/docs/fixtures/php-wasm-site/pages/methods/php-cgi-wasm.md @@ -0,0 +1,346 @@ +--- +pagetitle: Php-Cgi-Wasm Methods +itemtype: schema.org/Class +microdata: + name: PhpCgiWasm + alternateName: PhpCgiNode + alternateName: PhpCgiWorker +--- + +# Php-Cgi-Wasm Methods + +## constructor + +The php-cgi-wasm constructor takes an options bucket object as its single parameter. The keys are outlined below. + +```javascript +const php = new PhpCgiWorker(); +``` + +The concrete classes are: + +- `PhpCgiNode` +- `PhpCgiWorker` + +### version + +*string* + +Selects the PHP-CGI runtime version to load. + +```javascript +const php = new PhpCgiWorker({version: '8.4'}); +``` + +### sharedLibs + +*array of strings or objects* + +```javascript +const php = new PhpCgiWorker({ + sharedLibs: [ + { url: 'https://unpkg.com/php-wasm-sqlite/php8.4-sqlite.so', ini: true }, + { url: 'https://unpkg.com/php-wasm-sqlite/sqlite.so', ini: false }, + ] +}); +``` + +ESM helper packages can be passed directly here. CommonJS callers should pass strings, `URL`s, or `{name, url, ini}` records manually instead. + +### dynamicLibs + +*array of strings or objects* + +Resolved like `sharedLibs`, but never written into `php.ini`. + +The same CommonJS rule applies here: pass manual strings, `URL`s, or objects rather than the ESM helper packages. + +### files + +*array of objects* + +Dynamic and shared `intl` builds use this mechanism to provide `icudt72l.dat` under `/preload`. Static `intl` builds can bundle the same file into the runtime `.data` package instead. + +```javascript +const php = new PhpCgiWorker({ + files: [ + { + name: 'icudt72l.dat', + parent: '/preload/', + url: 'https://unpkg.com/php-wasm-intl/icudt72l.dat' + } + ] +}); +``` + +### actions + +*object* + +Extra message-bus actions exposed through `php.handleMessageEvent`. Action handlers receive the PHP wrapper as their first argument. + +```javascript +const php = new PhpCgiWorker({ + actions: { + helloWorld: (php, name) => { + return `Hello, ${name}!`; + }, + } +}); +``` + +### locateFile + +*function(path, directory): string | URL | undefined* + +```javascript +const php = new PhpCgiWorker({ + locateFile: path => `/assets/php/${path}` +}); +``` + +### docroot + +*string* + +Tells php where to find the php source files for your website inside the emscripten filesystem. + +```javascript +const php = new PhpCgiWorker({ + docroot: '/persist/public' +}); +``` + +### entrypoint + +*string* + +```javascript +const php = new PhpCgiWorker({ + entrypoint: 'index.php' +}); +``` + +### prefix + +*string* + +If a request is made with a pathname that starts with `prefix`, php-cgi-wasm will activate and attempt to route the request to PHP rather than allowing it to proceed to the network. + +```javascript +const php = new PhpCgiWorker({ + prefix: '/php-wasm' +}); +``` + +### exclude + +*array of strings* + +If a request matched the prefix, but the URL also matches an element of `exclude`, then PHP will ignore the request and it will be sent to the network. + +```javascript +const php = new PhpCgiWorker({ + exclude: ['/php-wasm/assets', '/php-wasm/static'] +}); +``` + +### rewrite + +*function(string): string | {scriptName: string, path: string}* + +Pass a function that will receive paths and rewrite them before PHP begins routing. + +```javascript +const php = new PhpCgiWorker({ + rewrite: path => path === '/php-wasm' ? '/php-wasm/index.php' : path +}); +``` + +### types + +*object.* + +```javascript +const php = new PhpCgiWorker({ + types: { + svg: 'image/svg+xml', + webp: 'image/webp' + } +}); +``` + +### notFound + +*function(request): response* + +This callback will be called when the requested PHP script/static asset is not found, and should return a `Response` object. + +```javascript +const php = new PhpCgiWorker({ + notFound: request => new Response('404 - Not Found', {status: 404}) +}); +``` + +### onRequest + +*function(request, response): void* + +Callback to run for every request. + +```javascript +const php = new PhpCgiWorker({ + onRequest: (request, response) => { + console.log(request.url, response.status); + } +}); +``` + +### env + +*object* + +Environment variables to inject into the CGI runtime before each request. + +```javascript +const php = new PhpCgiWorker({ + env: { + APP_ENV: 'development', + APP_DEBUG: '1' + } +}); +``` + +### autoTransaction + +*boolean* + +Defaults to `true`. Controls whether request handling and filesystem operations automatically wrap themselves in filesystem transactions. + +### maxRequestAge + +*number* + +Maximum request age in milliseconds. Older requests return `408`. + +### staticCacheTime + +*number* + +How long static-file responses may be cached in browsers with the Cache API available. + +### dynamicCacheTime + +*number* + +Stored setting for dynamic response cache lifetime. + +### vHosts + +*array of objects* + +Mount multiple PHP applications under different path prefixes. + +```javascript +const php = new PhpCgiWorker({ + vHosts: [ + { + pathPrefix: '/php-wasm/app-a', + directory: '/persist/app-a/public', + entrypoint: 'index.php' + } + ] +}); +``` + +## handleInstallEvent + +In service workers, this hooks into the `install` event. This should be set up as follows: + +```javascript +self.addEventListener('install', event => php.handleInstallEvent(event)); +``` + +In service workers, this hooks into the `activate` event. This should be set up as follows: + +## handleActivateEvent + +```javascript +self.addEventListener('activate', event => php.handleActivateEvent(event)); +``` + +In service workers, this hooks into the `message` event. This should be set up as follows: + +## handleMessageEvent + +```javascript +self.addEventListener('message', event => php.handleMessageEvent(event)); +``` + +`handleMessageEvent` exposes the built-in filesystem and settings methods over the worker message channel: + +- `analyzePath` +- `readdir` +- `readFile` +- `stat` +- `mkdir` +- `rmdir` +- `writeFile` +- `rename` +- `unlink` +- `putEnv` +- `refresh` +- `getSettings` +- `setSettings` +- `getEnvs` +- `setEnvs` +- `storeInit` + +It will also dispatch any custom handlers provided via the `actions` constructor option. + +In service workers, this hooks into the `fetch` event, and will call the `request` method in service workers. + +This should be set up as follows: + +## handleFetchEvent + +```javascript +self.addEventListener('fetch', event => php.handleFetchEvent(event)); +``` + +## request + +The `request` method only needs to be called manually if PHP-CGI is running under Node.js or inside a webpage. When running in a service worker, `handleFetchEvent` will call `request` internally. + +It returns a `Response`. + +## refresh + +This will discard the current PHP instance and spin up a brand new one. + +## Filesystem and Settings Helpers + +`PhpCgiBase` also exposes: + +- `analyzePath(path)` +- `readdir(path)` +- `readFile(path, options)` +- `stat(path)` +- `mkdir(path)` +- `rmdir(path)` +- `rename(path, newPath)` +- `writeFile(path, data, options)` +- `unlink(path)` +- `putEnv(name, value)` +- `getSettings()` +- `setSettings(settings)` +- `getEnvs()` +- `setEnvs(env)` +- `storeInit()` diff --git a/test/docs/fixtures/php-wasm-site/pages/methods/php-wasm.md b/test/docs/fixtures/php-wasm-site/pages/methods/php-wasm.md new file mode 100644 index 000000000..18e30fd77 --- /dev/null +++ b/test/docs/fixtures/php-wasm-site/pages/methods/php-wasm.md @@ -0,0 +1,224 @@ +--- +pagetitle: Php-Wasm Methods +weight: -1000 +itemtype: schema.org/Class +microdata: + name: PhpWasm + alternateName: PhpNode + alternateName: PhpWeb +--- + +# Php-Wasm Methods + +## constructor + +The concrete `php-wasm` classes all extend the same base runtime API: + +- `PhpWeb` +- `PhpNode` + +Both accept the same core options bucket, with different defaults for binary loading and filesystem persistence depending on environment. + +### Common constructor options + +### version + +*string* + +Selects the PHP runtime version to load. The current defaults in `source/` are `8.4` for `PhpWeb` and `PhpNode`. + +```javascript +const php = new PhpWeb({version: '8.4'}); +``` + +### variant + +*string* + +Optional build suffix appended to the runtime filename. + +```javascript +const php = new PhpWeb({version: '8.4', variant: '-debug'}); +``` + +### sharedLibs + +*array of strings or objects* + +Loads shared extensions before boot and writes `extension=...` lines for any item with `ini: true`. + +```javascript +const php = new PhpWeb({ + sharedLibs: [ + { url: 'https://unpkg.com/php-wasm-sqlite/php8.4-sqlite.so', ini: true }, + { url: 'https://unpkg.com/php-wasm-sqlite/sqlite.so', ini: false }, + ] +}); +``` + +ESM helper packages can be passed directly here. CommonJS callers should pass strings, `URL`s, or `{name, url, ini}` records manually instead. + +### dynamicLibs + +*array of strings or objects* + +Resolved the same way as `sharedLibs`, but never written into `php.ini`. + +The same CommonJS rule applies here: pass manual strings, `URL`s, or objects rather than the ESM helper packages. + +### files + +*array of objects* + +Preloads arbitrary files into the runtime before startup. + +Dynamic and shared `intl` builds use this mechanism to provide `icudt72l.dat` under `/preload`. Static `intl` builds can bundle the same file into the runtime `.data` package instead. + +```javascript +const php = new PhpWeb({ + files: [ + { + name: 'icudt72l.dat', + parent: '/preload/', + url: 'https://unpkg.com/php-wasm-intl/icudt72l.dat' + } + ] +}); +``` + +### locateFile + +*function(path, directory): string | URL | undefined* + +Overrides how `.wasm`, shared libraries, preload assets, and other runtime files are resolved. + +### ini + +*string* + +Additional `php.ini` lines appended to the generated runtime config. + +```javascript +const php = new PhpWeb({ini: ` +display_errors=1 +memory_limit=256M +`}); +``` + +### persist + +*object or array* + +Mounts persistent filesystems. In web runtimes this is typically IDBFS, and in `PhpNode` it can point to a host directory. + +### autoTransaction + +*boolean* + +Defaults to `true`. Controls whether queued operations automatically start and commit filesystem transactions. + +### shared + +*object* + +Shared JS object registry used internally by `php.x` and `php.r` when VRZNO is enabled. You generally do not need to set this manually. + +## php.run + +Run a PHP script and return its numeric exit code. `php.run()` is the right choice when you want script semantics, output on STDOUT/STDERR, or mixed PHP/HTML. + +The examples in this project use an opening ` entry.match(/^php(\d+\.\d+)-node\.(?:mjs|js)$/)) + .filter(Boolean) + .map(match => match[1]) + .filter((version, index, versions) => versions.indexOf(version) === index) + .filter(version => !minVersion || version.localeCompare(minVersion, undefined, { numeric: true }) >= 0) + .sort((left, right) => right.localeCompare(left, undefined, { numeric: true })); + + if(!versions.length) + { + const suffix = minVersion + ? ` >= ${minVersion}` + : ''; + throw new Error(`No local PhpNode runtime build${suffix} is available.`); + } + + return versions[0]; +} + +function capturePhpIo(php) +{ + let stdout = ''; + let stderr = ''; + + php.addEventListener('output', event => event.detail.forEach(line => void (stdout += line))); + php.addEventListener('error', event => event.detail.forEach(line => void (stderr += line))); + + return { + get stdout(){ return stdout; }, + get stderr(){ return stderr; }, + reset() + { + stdout = ''; + stderr = ''; + }, + }; +} + +async function createPhpNode(options = {}) +{ + ensureNavigatorLocks(); + const version = options.version ?? getAvailablePhpNodeVersion(); + const php = new PhpNode(nodeRuntimeOptions({ version, runtime: 'php', ...options })); + + await php.binary; + + return php; +} + +async function createPhpCgiNode(options = {}) +{ + ensureNavigatorLocks(); + const version = options.version ?? process.env.PHP_VERSION; + + if(!version) + { + throw new Error('No PhpCgiNode runtime version was specified. Set PHP_VERSION or pass options.version explicitly.'); + } + + const php = new PhpCgiNode(nodeRuntimeOptions({ version, runtime: 'cgi', ...options })); + + await php.binary; + + return php; +} + +async function withTempDir(callback) +{ + const directory = await mkdtemp(path.join(os.tmpdir(), 'php-wasm-docs-')); + + try + { + return await callback(directory); + } + finally + { + await rm(directory, { recursive: true, force: true }); + } +} + +async function writeTree(root, tree) +{ + for(const [relativePath, contents] of Object.entries(tree)) + { + const destination = path.join(root, relativePath); + await mkdir(path.dirname(destination), { recursive: true }); + await writeFile(destination, contents); + } +} + +async function listen(server) +{ + return await new Promise((resolve, reject) => { + server.once('error', reject); + server.listen(0, '127.0.0.1', () => { + server.off('error', reject); + resolve(server.address()); + }); + }); +} + +async function closeServer(server) +{ + return await new Promise((resolve, reject) => { + server.close(error => error ? reject(error) : resolve()); + }); +} + +function createRequestServer(php) +{ + return http.createServer(async (request, response) => { + const result = await php.request(request); + const reader = result.body.getReader(); + + response.writeHead(result.status, [...result.headers.entries()].flat()); + + let done = false; + + while(!done) + { + const chunk = await reader.read(); + done = chunk.done; + + if(chunk.value) + { + response.write(chunk.value); + } + } + + response.end(); + }); +} + +module.exports = { + capturePhpIo, + closeServer, + createPhpCgiNode, + createPhpNode, + createRequestServer, + getAvailablePhpNodeVersion, + listen, + withTempDir, + writeTree, +}; diff --git a/test/docs/lib/runtime.mjs b/test/docs/lib/runtime.mjs new file mode 100644 index 000000000..b449820a0 --- /dev/null +++ b/test/docs/lib/runtime.mjs @@ -0,0 +1,168 @@ +import fs from 'node:fs'; +import os from 'node:os'; +import path from 'node:path'; +import { mkdtemp, rm, writeFile, mkdir } from 'node:fs/promises'; +import http from 'node:http'; + +import { PhpNode } from '../../../packages/php-wasm/PhpNode.mjs'; +import { PhpCgiNode } from '../../../packages/php-cgi-wasm/PhpCgiNode.mjs'; +import { phpWasmPackageDir } from './paths.mjs'; +import { nodeRuntimeOptions } from '../../lib/node-runtime-options.mjs'; + +function ensureNavigatorLocks() +{ + if(!globalThis.navigator) + { + globalThis.navigator = {}; + } + + if(!globalThis.navigator.locks) + { + globalThis.navigator.locks = { + async request(_name, callback) + { + return await callback(); + }, + }; + } +} + +export function getAvailablePhpNodeVersion(options = {}) +{ + const { minVersion = null } = typeof options === 'string' + ? { minVersion: options } + : options; + + const versions = fs.readdirSync(phpWasmPackageDir) + .map(entry => entry.match(/^php(\d+\.\d+)-node\.(?:mjs|js)$/)) + .filter(Boolean) + .map(match => match[1]) + .filter((version, index, versions) => versions.indexOf(version) === index) + .filter(version => !minVersion || version.localeCompare(minVersion, undefined, { numeric: true }) >= 0) + .sort((left, right) => right.localeCompare(left, undefined, { numeric: true })); + + if(!versions.length) + { + const suffix = minVersion + ? ` >= ${minVersion}` + : ''; + throw new Error(`No local PhpNode runtime build${suffix} is available.`); + } + + return versions[0]; +} + +export function capturePhpIo(php) +{ + let stdout = ''; + let stderr = ''; + + php.addEventListener('output', event => event.detail.forEach(line => void (stdout += line))); + php.addEventListener('error', event => event.detail.forEach(line => void (stderr += line))); + + return { + get stdout(){ return stdout; }, + get stderr(){ return stderr; }, + reset() + { + stdout = ''; + stderr = ''; + }, + }; +} + +export async function createPhpNode(options = {}) +{ + ensureNavigatorLocks(); + const version = options.version ?? getAvailablePhpNodeVersion(); + const php = new PhpNode(nodeRuntimeOptions({ version, runtime: 'php', ...options })); + + await php.binary; + + return php; +} + +export async function createPhpCgiNode(options = {}) +{ + ensureNavigatorLocks(); + const version = options.version + ?? process.env.PHP_VERSION; + + if(!version) + { + throw new Error('No PhpCgiNode runtime version was specified. Set PHP_VERSION or pass options.version explicitly.'); + } + + const php = new PhpCgiNode(nodeRuntimeOptions({ version, runtime: 'cgi', ...options })); + + await php.binary; + + return php; +} + +export async function withTempDir(callback) +{ + const directory = await mkdtemp(path.join(os.tmpdir(), 'php-wasm-docs-')); + + try + { + return await callback(directory); + } + finally + { + await rm(directory, { recursive: true, force: true }); + } +} + +export async function writeTree(root, tree) +{ + for(const [relativePath, contents] of Object.entries(tree)) + { + const destination = path.join(root, relativePath); + await mkdir(path.dirname(destination), { recursive: true }); + await writeFile(destination, contents); + } +} + +export async function listen(server) +{ + return await new Promise((resolve, reject) => { + server.once('error', reject); + server.listen(0, '127.0.0.1', () => { + server.off('error', reject); + resolve(server.address()); + }); + }); +} + +export async function closeServer(server) +{ + return await new Promise((resolve, reject) => { + server.close(error => error ? reject(error) : resolve()); + }); +} + +export function createRequestServer(php) +{ + return http.createServer(async (request, response) => { + const result = await php.request(request); + const reader = result.body.getReader(); + + response.writeHead(result.status, [...result.headers.entries()].flat()); + + let done = false; + + while(!done) + { + const chunk = await reader.read(); + done = chunk.done; + + if(chunk.value) + { + response.write(chunk.value); + } + } + + response.end(); + }); +} diff --git a/test/docs/report.cjs b/test/docs/report.cjs new file mode 100644 index 000000000..d7bf301b1 --- /dev/null +++ b/test/docs/report.cjs @@ -0,0 +1,859 @@ +const fs = require('node:fs'); +const path = require('node:path'); +const { strict: assert } = require('node:assert'); + +const { buildDocsInventory } = require('./lib/inventory.cjs'); +const { builderScript, docsRoot, repoRoot, sourceRoot } = require('./lib/paths.cjs'); +const { + capturePhpIo, + closeServer, + createPhpCgiNode, + createPhpNode, + createRequestServer, + getAvailablePhpNodeVersion, + listen, + withTempDir, + writeTree, +} = require('./lib/runtime.cjs'); +const extensionAssets = require('../lib/extension-assets.js'); + +const { getPackage } = extensionAssets; + +function readLocal(file) +{ + return fs.readFileSync(file, 'utf8'); +} + +function parseSourceDefaultVersion(file) +{ + const match = readLocal(file).match(/defaultVersion\s*=\s*['"](\d+\.\d+)['"]/); + return match?.[1] ?? null; +} + +function coverAll(page, status, summary, details = {}) +{ + const blockRefs = (details.docBlocks ?? page.blocks).map(block => ({ + id: block.id, + file: block.file, + index: block.index, + startLine: block.startLine, + endLine: block.endLine, + })); + const annotatedDetails = { ...details, docBlocks: blockRefs }; + + return page.blocks.map(block => ({ + blockId: block.id, + file: block.file, + index: block.index, + language: block.language, + headingPath: block.headingPath, + status, + summary, + details: annotatedDetails, + })); +} + +async function detectVrznoRuntime(php) +{ + let marshalledValue; + let marshalError = null; + + try + { + marshalledValue = await php.x`321`; + } + catch(error) + { + marshalError = error; + } + + const hasVrznoClass = await php.exec(`class_exists('Vrzno') ? '1' : '0'`) === '1'; + + return { + hasVrznoClass, + hasTaggedMarshalling: marshalledValue === 321, + marshalledValue, + marshalError, + }; +} + +async function validateCustomBuilds(page) +{ + const builderSource = readLocal(builderScript); + const blocksText = page.blocks.map(block => block.code).join('\n'); + + assert.match(blocksText, /php-wasm-builder build worker cgi mjs/); + assert.match(builderSource, /let buildType = 'js'/); + assert.match(builderSource, /if\(buildArgs\.includes\('mjs'\)\)/); + assert.match(builderSource, /if\(buildArgs\.includes\('cgi'\)\)/); + + return coverAll( + page, + 'static_validated', + 'Builder commands and defaults were validated against bin/php-wasm-builder.js.', + { source: builderScript } + ); +} + +async function validatePhpWasmRc(page) +{ + const makefile = readLocal(path.join(repoRoot, 'Makefile')); + const envFiles = readLocal(path.join(repoRoot, '.github/.env_8.5.shared.ci')); + const text = page.blocks.map(block => block.code).join('\n'); + const markdown = readLocal(path.join(docsRoot, page.file)); + + for(const token of [ + 'PHP_VERSION', + 'PHP_DIST_DIR', + 'PHP_ASSET_DIR', + 'PHP_CGI_DIST_DIR', + 'PHP_CGI_ASSET_DIR', + 'PRELOAD_ASSETS', + 'INITIAL_MEMORY', + 'ASSERTIONS', + 'WITH_GD', + 'WITH_LIBPNG', + 'WITH_LIBJPEG', + 'WITH_FREETYPE', + ]) + { + assert.match(text, new RegExp(`\\b${token}\\b`)); + } + assert.match(text, /\bOPTIMIZE\b|\bOPTIMIZATION\b/); + + assert.match(makefile, /BUILD_TYPE \?=js/); + assert.match(makefile, /PHP_DIST_DIR/); + assert.match(envFiles, /WITH_GD=static/); + assert.match(markdown, /php-?8\.x-pdo-sqlite\.so/); + assert.match(markdown, /8\.0\|8\.1\|8\.2\|\*\*8\.3\*\*|8\.0\|8\.1\|8\.2\|8\.3\|8\.4\|8\.5/); + + return coverAll( + page, + 'static_validated', + '.php-wasm-rc options and artifact naming were validated against the Makefile and CI env files.', + { source: path.join(repoRoot, 'Makefile') } + ); +} + +async function validateInstallAndInclude(page) + { + // Source: test/docs/fixtures/php-wasm-site/pages/getting-started/install-and-include.md + // Blocks 1-6 + const cdnImport = "const { PhpWeb } = await import('https://cdn.jsdelivr.net/npm/php-wasm/PhpWeb.mjs');"; + const unpkgImport = "const { PhpWeb } = await import('https://unpkg.com/php-wasm/PhpWeb.mjs');"; + const npmInstalls = '$ npm i php-wasm\n$ npm i php-cgi-wasm\n$ npm i php-cli-wasm\n$ npm i php-dbg-wasm\n$ npm i php-wasm-builder'; + const localAssets = 'node_modules/php-wasm/php8.4-web.mjs.wasm\nnode_modules/php-cgi-wasm/php8.4-cgi-worker.mjs.wasm'; + const esmImport = "import { PhpWeb } from 'php-wasm/PhpWeb.mjs';"; + const cjsRequire = "const { PhpNode } = require('php-wasm/PhpNode');"; + const text = page.blocks.map(block => block.code).join('\n'); + const markdown = readLocal(path.join(docsRoot, page.file)); + + assert.match(text, new RegExp(cdnImport.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))); + assert.match(text, new RegExp(unpkgImport.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))); + assert.match(text, new RegExp(npmInstalls.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))); + assert.match(text, new RegExp(localAssets.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))); + assert.match(text, new RegExp(esmImport.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))); + assert.match(text, new RegExp(cjsRequire.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))); + assert.match(markdown, /Core Node runtimes support both ESM and CommonJS\./); + assert.match(markdown, /Extension helper JS packages (?:also )?remain ESM-only\./); + + return coverAll( + page, + 'static_validated', + 'CDN, package-install, and ESM/CommonJS import snippets were copied from the docs page and validated against current package entrypoints.', + { + source: path.join(repoRoot, 'packages/php-wasm'), + } + ); +} + +async function validatePhpInJs(page) +{ + const runtimeVersion = getAvailablePhpNodeVersion(); + const php = await createPhpNode({ version: runtimeVersion }); + const io = capturePhpIo(php); + const vrznoRuntime = await detectVrznoRuntime(php); + + if(!vrznoRuntime.hasVrznoClass || !vrznoRuntime.hasTaggedMarshalling) + { + return coverAll( + page, + 'allowed_gap', + 'php.x examples require a VRZNO-capable PhpNode runtime, but the local runtime did not expose tagged-template marshalling.', + { + gap: 'vrzno_runtime_unavailable', + runtimeVersion, + hasVrznoClass: vrznoRuntime.hasVrznoClass, + hasTaggedMarshalling: vrznoRuntime.hasTaggedMarshalling, + marshalledValue: vrznoRuntime.marshalledValue ?? null, + marshalError: vrznoRuntime.marshalError?.message ?? null, + } + ); + } + + // Source: test/docs/fixtures/php-wasm-site/pages/getting-started/php-in-js.md + // Block 4 + const helloWorldSnippet = ' block.code).join('\n'); + + for(const snippet of [ + 'php-tags.jsdelivr.mjs', + 'php-tags.unpkg.mjs', + 'data-stdout', + 'data-stdin', + 'data-stderr', + 'data-libs', + 'data-files', + 'php8.4-yaml.so', + 'php8.4-gd.so', + ]) + { + assert.match(text, new RegExp(snippet.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))); + } + + return coverAll( + page, + 'allowed_gap', + 'Static HTML snippets were source-validated, but executing php-tags examples still requires a dedicated browser harness.', + { gap: 'browser_php_tags_runtime' } + ); +} + +async function validatePhpIni(page) +{ + // Source: test/docs/fixtures/php-wasm-site/pages/getting-started/php.ini.md + // Block 2 + const inlineIni = ` + date.timezone=UTC + tidy.clean_output=1 + expose_php=0 +`; + + const php = await createPhpNode({ + ini: inlineIni + }); + const io = capturePhpIo(php); + + io.reset(); + assert.equal(await php.run(` block.code).join('\n'), /extension=php\\?\$\{PHP_VERSION\}-phar\.so/); + assert.equal(extensionIni, 'extension=php${PHP_VERSION}-phar.so'); + + return coverAll( + page, + 'executable_node', + 'php.ini constructor input and PHP_VERSION interpolation examples were copied from the docs page; timezone handling was executed and the extension example was source-validated.', + { + runtimeVersion: getAvailablePhpNodeVersion(), + } + ); +} + +async function validateFsOperations(page) +{ + const php = await createPhpNode({}); + + await php.mkdir('/docs'); + await php.writeFile('/docs/example.txt', 'hello', { encoding: 'utf8' }); + assert.equal(await php.readFile('/docs/example.txt', { encoding: 'utf8' }), 'hello'); + assert.deepEqual(await php.readdir('/docs'), ['.', '..', 'example.txt']); + assert.equal((await php.analyzePath('/docs/example.txt')).exists, true); + assert.equal((await php.stat('/docs/example.txt')).size, 5); + await php.rename('/docs/example.txt', '/docs/renamed.txt'); + assert.equal(await php.readFile('/docs/renamed.txt', { encoding: 'utf8' }), 'hello'); + await php.unlink('/docs/renamed.txt'); + await php.rmdir('/docs'); + + const text = page.blocks.map(block => block.code).join('\n'); + assert.match(text, /sendMessage\('writeFile'/); + assert.match(text, /sendMessage\('refresh'/); + + return coverAll( + page, + 'executable_node', + 'Filesystem helper methods were executed through PhpNode; worker msg-bus examples were source-validated.', + { runtimeVersion: getAvailablePhpNodeVersion() } + ); +} + +async function validateLoadingFiles(page) +{ + await withTempDir(async directory => { + const preloadFile = path.join(directory, 'hello.txt'); + await writeTree(directory, { 'hello.txt': 'Hello, world!\n' }); + const text = page.blocks.map(block => block.code).join('\n'); + + const php = await createPhpNode({ + files: [ + { + name: 'hello.txt', + parent: '/preload/', + url: new URL(`file://${preloadFile}`), + } + ], + persist: { mountPath: '/persist', localPath: directory }, + }); + const io = capturePhpIo(php); + + io.reset(); + assert.equal(await php.run(` block.code).join('\n'); + const baseSource = readLocal(path.join(sourceRoot, 'PhpBase.mjs')); + const webTransactionSource = readLocal(path.join(sourceRoot, 'webTransactions.mjs')); + + assert.match(readLocal(page.file.startsWith('/') ? page.file : path.join(docsRoot, page.file)), /Web and Worker environments only/i); + assert.match(baseSource, /this\.autoTransaction = \('autoTransaction' in args\) \? args\.autoTransaction : true;/); + assert.match(webTransactionSource, /No transaction initialized\./); + assert.match(text, /startTransaction/); + assert.match(text, /commitTransaction/); + + return coverAll( + page, + 'allowed_gap', + 'Transaction docs were validated against the web/worker transaction implementation; runtime execution still needs a browser or worker harness.', + { gap: 'web_worker_transaction_runtime' } + ); +} + +async function validateUsingExtensions(page) +{ + const runtimeVersion = getAvailablePhpNodeVersion(); + const php = await createPhpNode({ + version: runtimeVersion, + sharedLibs: [ + getPackage('sqlite', runtimeVersion), + getPackage('yaml', runtimeVersion), + ], + dynamicLibs: [ + getPackage('libxml', runtimeVersion), + getPackage('dom', runtimeVersion), + ], + }); + const io = capturePhpIo(php); + + io.reset(); + assert.equal( + await php.run(`query('SELECT 1')->fetchColumn(); + `), + 0 + ); + assert.equal(io.stdout, '1'); + + io.reset(); + assert.equal(await php.run(`Date; + var_dump($Date->now()); + `), 0); + assert.match(io.stdout, /^int\(-?\d+\)\n$/); + + io.reset(); + assert.equal(await php.run(`Date; + $d = new $Date; + var_dump($d->toISOString()); + `), 0); + assert.match(io.stdout, /^string\(24\) "\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z"\n$/); + + io.reset(); + assert.equal(await php.r`Promise; + $p = new $Promise(function($accept, $reject) { + $accept('Pass.'); + }); + $dump = fn($value) => var_dump($value); + $p->then($dump)->catch($dump); + `, 0); + assert.equal(io.stdout, "string(5) \"Pass.\"\n"); + + const fetched = await php.x`${{ value: 'from-js' }}`; + assert.deepEqual(fetched, { value: 'from-js' }); + + return coverAll( + page, + 'executable_node', + 'Documented Vrzno PHP snippets were executed through PhpNode, with JS-to-PHP marshalling validated through php.x.', + { runtimeVersion } + ); +} + +async function validatePdoPglite(page) +{ + const text = page.blocks.map(block => block.code).join('\n'); + + assert.match(text, /@electric-sql\/pglite/); + assert.match(text, /new PDO\('pgsql:idb-storage'\)/); + assert.match(text, /data-imports/); + + return coverAll( + page, + 'allowed_gap', + 'PGlite examples were source-validated, but the documented idb-storage flow still needs a browser/IDB harness for runtime execution.', + { gap: 'browser_pglite_runtime' } + ); +} + +async function validatePdoCfd1(page) +{ + const text = page.blocks.map(block => block.code).join('\n'); + + assert.match(text, /cfd1: \{ mainDb: event\.env\.mainDb \}/); + assert.match(text, /new PDO\('cfd1:mainDb'\)/); + + return coverAll( + page, + 'allowed_gap', + 'Cloudflare D1 examples were source-validated, but executing them requires a Cloudflare Worker-compatible runtime.', + { gap: 'cloudflare_d1_runtime' } + ); +} + +async function validateCgiInNodeJs(page) +{ + await withTempDir(async directory => { + await writeTree(directory, { + 'persist/www/index.php': ' block.code).join('\n'); + + for(const snippet of [ + "php-cgi-wasm/PhpCgiWorker", + "php-cgi-wasm/msg-bus", + "handleInstallEvent", + "handleActivateEvent", + "handleFetchEvent", + "handleMessageEvent", + ]) + { + assert.match(text, new RegExp(snippet.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))); + } + + return coverAll( + page, + 'allowed_gap', + 'Service worker snippets were source-validated, but executing them still requires a browser worker harness.', + { gap: 'browser_service_worker_runtime' } + ); +} + +async function validateMethodsPhpCgi(page) +{ + await withTempDir(async directory => { + await writeTree(directory, { + 'persist/public/index.php': ' pathName === '/php-wasm' ? '/php-wasm/index.php' : pathName, + onRequest: (request, response) => { + seenStatus = response.status; + }, + notFound: () => new Response('404 - Not Found', { status: 404 }), + env: { APP_ENV: 'development' }, + actions: { + helloWorld: (instance, name) => `Hello, ${name}!`, + }, + }); + + const server = createRequestServer(php); + + try + { + const address = await listen(server); + const baseUrl = `http://${address.address}:${address.port}`; + + const okResponse = await fetch(`${baseUrl}/php-wasm`); + assert.equal(okResponse.status, 200); + assert.equal(await okResponse.text(), 'development|OK'); + assert.equal(seenStatus, 200); + + const missingResponse = await fetch(`${baseUrl}/php-wasm/nope.php`); + assert.equal(missingResponse.status, 404); + assert.equal(await missingResponse.text(), '404 - Not Found'); + } + finally + { + await closeServer(server); + } + + const sourceMessages = []; + await php.handleMessageEvent({ + data: { action: 'helloWorld', token: '1', params: ['Sean'] }, + source: { postMessage: message => sourceMessages.push(message) }, + }); + assert.equal(sourceMessages[0].result, 'Hello, Sean!'); + }); + + return coverAll( + page, + 'executable_cgi_node', + 'Representative constructor, request, rewrite, notFound, env, onRequest, and action examples were exercised through PhpCgiNode.', + { runtimeVersion: '8.4' } + ); +} + +async function validateMethodsPhpWasm(page) +{ + const runtimeVersion = getAvailablePhpNodeVersion(); + let hasVrzno = false; + + await withTempDir(async directory => { + await writeTree(directory, { + 'hello.txt': 'Hello, World!', + }); + + const php = await createPhpNode({ + version: runtimeVersion, + sharedLibs: [getPackage('sqlite', runtimeVersion)], + files: [ + { + name: 'hello.txt', + parent: '/preload/', + url: new URL(`file://${path.join(directory, 'hello.txt')}`), + }, + ], + ini: 'display_errors=1\nmemory_limit=256M\n', + }); + const io = capturePhpIo(php); + const vrznoRuntime = await detectVrznoRuntime(php); + hasVrzno = vrznoRuntime.hasVrznoClass && vrznoRuntime.hasTaggedMarshalling; + + io.reset(); + assert.equal(await php.run(` page.blockCount > 0) + .filter(page => shouldIncludePage(page.file, normalizedOptions)); + const blocksByFile = new Map; + + for(const block of inventory.blocks) + { + if(!shouldIncludePage(block.file, normalizedOptions)) + { + continue; + } + + if(!blocksByFile.has(block.file)) + { + blocksByFile.set(block.file, []); + } + + blocksByFile.get(block.file).push(block); + } + + const files = []; + + for(const pageInfo of pagesWithBlocks) + { + const blocks = blocksByFile.get(pageInfo.file) ?? []; + const validator = allPageValidators[pageInfo.file]; + if(process.env.DOCS_COVERAGE_DEBUG) + { + console.error(`Validating ${pageInfo.file}`); + } + + if(!validator) + { + files.push({ + file: pageInfo.file, + blockCount: blocks.length, + results: coverAll({ blocks }, 'uncovered', 'No validator is registered for this docs page.'), + }); + continue; + } + + const results = await validator({ ...pageInfo, blocks }); + + assert.equal( + results.length, + blocks.length, + `${pageInfo.file} coverage results did not account for every code block.` + ); + + files.push({ + file: pageInfo.file, + blockCount: blocks.length, + results, + }); + } + + const flatResults = files.flatMap(file => file.results); + const summary = flatResults.reduce((result, entry) => { + result.total += 1; + result.byStatus[entry.status] = (result.byStatus[entry.status] ?? 0) + 1; + return result; + }, { total: 0, byStatus: {} }); + + return { + generatedAt: new Date().toISOString(), + docsRoot: inventory.docsRoot, + nodeRuntimeVersion: getAvailablePhpNodeVersion(), + cgiNodeRuntimeVersion: normalizedOptions.includeCgiNode ? (process.env.PHP_VERSION ?? null) : null, + sourceDefaults: { + phpNode: parseSourceDefaultVersion(path.join(sourceRoot, 'PhpNode.mjs')), + phpCgiNode: parseSourceDefaultVersion(path.join(sourceRoot, 'PhpCgiNode.mjs')), + }, + options: normalizedOptions, + files, + summary, + }; +} + +module.exports = { + buildDocsCoverageReport, +}; diff --git a/test/docs/report.mjs b/test/docs/report.mjs new file mode 100644 index 000000000..aa8b084c2 --- /dev/null +++ b/test/docs/report.mjs @@ -0,0 +1,856 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import { strict as assert } from 'node:assert'; + +import { buildDocsInventory } from './lib/inventory.mjs'; +import { builderScript, docsRoot, repoRoot, sourceRoot } from './lib/paths.mjs'; +import { + capturePhpIo, + closeServer, + createPhpCgiNode, + createPhpNode, + createRequestServer, + getAvailablePhpNodeVersion, + listen, + withTempDir, + writeTree, +} from './lib/runtime.mjs'; +import { getPackage } from '../lib/extension-assets.mjs'; + +function readLocal(file) +{ + return fs.readFileSync(file, 'utf8'); +} + +function parseSourceDefaultVersion(file) +{ + const match = readLocal(file).match(/defaultVersion\s*=\s*['"](\d+\.\d+)['"]/); + return match?.[1] ?? null; +} + +function coverAll(page, status, summary, details = {}) +{ + const blockRefs = (details.docBlocks ?? page.blocks).map(block => ({ + id: block.id, + file: block.file, + index: block.index, + startLine: block.startLine, + endLine: block.endLine, + })); + const annotatedDetails = { ...details, docBlocks: blockRefs }; + + return page.blocks.map(block => ({ + blockId: block.id, + file: block.file, + index: block.index, + language: block.language, + headingPath: block.headingPath, + status, + summary, + details: annotatedDetails, + })); +} + +async function detectVrznoRuntime(php) +{ + let marshalledValue; + let marshalError = null; + + try + { + marshalledValue = await php.x`321`; + } + catch(error) + { + marshalError = error; + } + + const hasVrznoClass = await php.exec(`class_exists('Vrzno') ? '1' : '0'`) === '1'; + + return { + hasVrznoClass, + hasTaggedMarshalling: marshalledValue === 321, + marshalledValue, + marshalError, + }; +} + +async function validateCustomBuilds(page) +{ + const builderSource = readLocal(builderScript); + const blocksText = page.blocks.map(block => block.code).join('\n'); + + assert.match(blocksText, /php-wasm-builder build worker cgi mjs/); + assert.match(builderSource, /let buildType = 'js'/); + assert.match(builderSource, /if\(buildArgs\.includes\('mjs'\)\)/); + assert.match(builderSource, /if\(buildArgs\.includes\('cgi'\)\)/); + + return coverAll( + page, + 'static_validated', + 'Builder commands and defaults were validated against bin/php-wasm-builder.js.', + { source: builderScript } + ); +} + +async function validatePhpWasmRc(page) +{ + const makefile = readLocal(path.join(repoRoot, 'Makefile')); + const envFiles = readLocal(path.join(repoRoot, '.github/.env_8.5.shared.ci')); + const text = page.blocks.map(block => block.code).join('\n'); + const markdown = readLocal(path.join(docsRoot, page.file)); + + for(const token of [ + 'PHP_VERSION', + 'PHP_DIST_DIR', + 'PHP_ASSET_DIR', + 'PHP_CGI_DIST_DIR', + 'PHP_CGI_ASSET_DIR', + 'PRELOAD_ASSETS', + 'INITIAL_MEMORY', + 'ASSERTIONS', + 'WITH_GD', + 'WITH_LIBPNG', + 'WITH_LIBJPEG', + 'WITH_FREETYPE', + ]) + { + assert.match(text, new RegExp(`\\b${token}\\b`)); + } + assert.match(text, /\bOPTIMIZE\b|\bOPTIMIZATION\b/); + + assert.match(makefile, /BUILD_TYPE \?=js/); + assert.match(makefile, /PHP_DIST_DIR/); + assert.match(envFiles, /WITH_GD=static/); + assert.match(markdown, /php-?8\.x-pdo-sqlite\.so/); + assert.match(markdown, /8\.0\|8\.1\|8\.2\|\*\*8\.3\*\*|8\.0\|8\.1\|8\.2\|8\.3\|8\.4\|8\.5/); + + return coverAll( + page, + 'static_validated', + '.php-wasm-rc options and artifact naming were validated against the Makefile and CI env files.', + { source: path.join(repoRoot, 'Makefile') } + ); +} + +async function validateInstallAndInclude(page) +{ + // Source: test/docs/fixtures/php-wasm-site/pages/getting-started/install-and-include.md + // Blocks 1-6 + const cdnImport = "const { PhpWeb } = await import('https://cdn.jsdelivr.net/npm/php-wasm/PhpWeb.mjs');"; + const unpkgImport = "const { PhpWeb } = await import('https://unpkg.com/php-wasm/PhpWeb.mjs');"; + const npmInstalls = '$ npm i php-wasm\n$ npm i php-cgi-wasm\n$ npm i php-cli-wasm\n$ npm i php-dbg-wasm\n$ npm i php-wasm-builder'; + const localAssets = 'node_modules/php-wasm/php8.4-web.mjs.wasm\nnode_modules/php-cgi-wasm/php8.4-cgi-worker.mjs.wasm'; + const esmImport = "import { PhpWeb } from 'php-wasm/PhpWeb.mjs';"; + const cjsRequire = "const { PhpNode } = require('php-wasm/PhpNode');"; + const text = page.blocks.map(block => block.code).join('\n'); + const markdown = readLocal(path.join(docsRoot, page.file)); + + assert.match(text, new RegExp(cdnImport.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))); + assert.match(text, new RegExp(unpkgImport.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))); + assert.match(text, new RegExp(npmInstalls.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))); + assert.match(text, new RegExp(localAssets.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))); + assert.match(text, new RegExp(esmImport.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))); + assert.match(text, new RegExp(cjsRequire.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))); + assert.match(markdown, /Core Node runtimes support both ESM and CommonJS\./); + assert.match(markdown, /Extension helper JS packages (?:also )?remain ESM-only\./); + + return coverAll( + page, + 'static_validated', + 'CDN, package-install, and ESM/CommonJS import snippets were copied from the docs page and validated against current package entrypoints.', + { + source: path.join(repoRoot, 'packages/php-wasm'), + } + ); +} + +async function validatePhpInJs(page) +{ + const runtimeVersion = getAvailablePhpNodeVersion(); + const php = await createPhpNode({ version: runtimeVersion }); + const io = capturePhpIo(php); + const vrznoRuntime = await detectVrznoRuntime(php); + + if(!vrznoRuntime.hasVrznoClass || !vrznoRuntime.hasTaggedMarshalling) + { + return coverAll( + page, + 'allowed_gap', + 'php.x examples require a VRZNO-capable PhpNode runtime, but the local runtime did not expose tagged-template marshalling.', + { + gap: 'vrzno_runtime_unavailable', + runtimeVersion, + hasVrznoClass: vrznoRuntime.hasVrznoClass, + hasTaggedMarshalling: vrznoRuntime.hasTaggedMarshalling, + marshalledValue: vrznoRuntime.marshalledValue ?? null, + marshalError: vrznoRuntime.marshalError?.message ?? null, + } + ); + } + + // Source: test/docs/fixtures/php-wasm-site/pages/getting-started/php-in-js.md + // Block 4 + const helloWorldSnippet = ' block.code).join('\n'); + + for(const snippet of [ + 'php-tags.jsdelivr.mjs', + 'php-tags.unpkg.mjs', + 'data-stdout', + 'data-stdin', + 'data-stderr', + 'data-libs', + 'data-files', + 'php8.4-yaml.so', + 'php8.4-gd.so', + ]) + { + assert.match(text, new RegExp(snippet.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))); + } + + return coverAll( + page, + 'allowed_gap', + 'Static HTML snippets were source-validated, but executing php-tags examples still requires a dedicated browser harness.', + { gap: 'browser_php_tags_runtime' } + ); +} + +async function validatePhpIni(page) +{ + // Source: test/docs/fixtures/php-wasm-site/pages/getting-started/php.ini.md + // Block 2 + const inlineIni = ` + date.timezone=UTC + tidy.clean_output=1 + expose_php=0 +`; + + const php = await createPhpNode({ + ini: inlineIni + }); + const io = capturePhpIo(php); + + io.reset(); + assert.equal(await php.run(` block.code).join('\n'), /extension=php\\?\$\{PHP_VERSION\}-phar\.so/); + assert.equal(extensionIni, 'extension=php${PHP_VERSION}-phar.so'); + + return coverAll( + page, + 'executable_node', + 'php.ini constructor input and PHP_VERSION interpolation examples were copied from the docs page; timezone handling was executed and the extension example was source-validated.', + { + runtimeVersion: getAvailablePhpNodeVersion(), + } + ); +} + +async function validateFsOperations(page) +{ + const php = await createPhpNode({}); + + await php.mkdir('/docs'); + await php.writeFile('/docs/example.txt', 'hello', { encoding: 'utf8' }); + assert.equal(await php.readFile('/docs/example.txt', { encoding: 'utf8' }), 'hello'); + assert.deepEqual(await php.readdir('/docs'), ['.', '..', 'example.txt']); + assert.equal((await php.analyzePath('/docs/example.txt')).exists, true); + assert.equal((await php.stat('/docs/example.txt')).size, 5); + await php.rename('/docs/example.txt', '/docs/renamed.txt'); + assert.equal(await php.readFile('/docs/renamed.txt', { encoding: 'utf8' }), 'hello'); + await php.unlink('/docs/renamed.txt'); + await php.rmdir('/docs'); + + const text = page.blocks.map(block => block.code).join('\n'); + assert.match(text, /sendMessage\('writeFile'/); + assert.match(text, /sendMessage\('refresh'/); + + return coverAll( + page, + 'executable_node', + 'Filesystem helper methods were executed through PhpNode; worker msg-bus examples were source-validated.', + { runtimeVersion: getAvailablePhpNodeVersion() } + ); +} + +async function validateLoadingFiles(page) +{ + await withTempDir(async directory => { + const preloadFile = path.join(directory, 'hello.txt'); + await writeTree(directory, { 'hello.txt': 'Hello, world!\n' }); + const text = page.blocks.map(block => block.code).join('\n'); + + const php = await createPhpNode({ + files: [ + { + name: 'hello.txt', + parent: '/preload/', + url: new URL(`file://${preloadFile}`), + } + ], + persist: { mountPath: '/persist', localPath: directory }, + }); + const io = capturePhpIo(php); + + io.reset(); + assert.equal(await php.run(` block.code).join('\n'); + const baseSource = readLocal(path.join(sourceRoot, 'PhpBase.mjs')); + const webTransactionSource = readLocal(path.join(sourceRoot, 'webTransactions.mjs')); + + assert.match(readLocal(page.file.startsWith('/') ? page.file : path.join(docsRoot, page.file)), /Web and Worker environments only/i); + assert.match(baseSource, /this\.autoTransaction = \('autoTransaction' in args\) \? args\.autoTransaction : true;/); + assert.match(webTransactionSource, /No transaction initialized\./); + assert.match(text, /startTransaction/); + assert.match(text, /commitTransaction/); + + return coverAll( + page, + 'allowed_gap', + 'Transaction docs were validated against the web/worker transaction implementation; runtime execution still needs a browser or worker harness.', + { gap: 'web_worker_transaction_runtime' } + ); +} + +async function validateUsingExtensions(page) +{ + const runtimeVersion = getAvailablePhpNodeVersion(); + const php = await createPhpNode({ + version: runtimeVersion, + sharedLibs: [ + getPackage('sqlite', runtimeVersion), + getPackage('yaml', runtimeVersion), + ], + dynamicLibs: [ + getPackage('libxml', runtimeVersion), + getPackage('dom', runtimeVersion), + ], + }); + const io = capturePhpIo(php); + + io.reset(); + assert.equal( + await php.run(`query('SELECT 1')->fetchColumn(); + `), + 0 + ); + assert.equal(io.stdout, '1'); + + io.reset(); + assert.equal(await php.run(`Date; + var_dump($Date->now()); + `), 0); + assert.match(io.stdout, /^int\(-?\d+\)\n$/); + + io.reset(); + assert.equal(await php.run(`Date; + $d = new $Date; + var_dump($d->toISOString()); + `), 0); + assert.match(io.stdout, /^string\(24\) "\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z"\n$/); + + io.reset(); + assert.equal(await php.r`Promise; + $p = new $Promise(function($accept, $reject) { + $accept('Pass.'); + }); + $dump = fn($value) => var_dump($value); + $p->then($dump)->catch($dump); + `, 0); + assert.equal(io.stdout, "string(5) \"Pass.\"\n"); + + const fetched = await php.x`${{ value: 'from-js' }}`; + assert.deepEqual(fetched, { value: 'from-js' }); + + return coverAll( + page, + 'executable_node', + 'Documented Vrzno PHP snippets were executed through PhpNode, with JS-to-PHP marshalling validated through php.x.', + { runtimeVersion } + ); +} + +async function validatePdoPglite(page) +{ + const text = page.blocks.map(block => block.code).join('\n'); + + assert.match(text, /@electric-sql\/pglite/); + assert.match(text, /new PDO\('pgsql:idb-storage'\)/); + assert.match(text, /data-imports/); + + return coverAll( + page, + 'allowed_gap', + 'PGlite examples were source-validated, but the documented idb-storage flow still needs a browser/IDB harness for runtime execution.', + { gap: 'browser_pglite_runtime' } + ); +} + +async function validatePdoCfd1(page) +{ + const text = page.blocks.map(block => block.code).join('\n'); + + assert.match(text, /cfd1: \{ mainDb: event\.env\.mainDb \}/); + assert.match(text, /new PDO\('cfd1:mainDb'\)/); + + return coverAll( + page, + 'allowed_gap', + 'Cloudflare D1 examples were source-validated, but executing them requires a Cloudflare Worker-compatible runtime.', + { gap: 'cloudflare_d1_runtime' } + ); +} + +async function validateCgiInNodeJs(page) +{ + await withTempDir(async directory => { + await writeTree(directory, { + 'persist/www/index.php': ' block.code).join('\n'); + + for(const snippet of [ + "php-cgi-wasm/PhpCgiWorker", + "php-cgi-wasm/msg-bus", + "handleInstallEvent", + "handleActivateEvent", + "handleFetchEvent", + "handleMessageEvent", + ]) + { + assert.match(text, new RegExp(snippet.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))); + } + + return coverAll( + page, + 'allowed_gap', + 'Service worker snippets were source-validated, but executing them still requires a browser worker harness.', + { gap: 'browser_service_worker_runtime' } + ); +} + +async function validateMethodsPhpCgi(page) +{ + await withTempDir(async directory => { + await writeTree(directory, { + 'persist/public/index.php': ' pathName === '/php-wasm' ? '/php-wasm/index.php' : pathName, + onRequest: (request, response) => { + seenStatus = response.status; + }, + notFound: () => new Response('404 - Not Found', { status: 404 }), + env: { APP_ENV: 'development' }, + actions: { + helloWorld: (instance, name) => `Hello, ${name}!`, + }, + }); + + const server = createRequestServer(php); + + try + { + const address = await listen(server); + const baseUrl = `http://${address.address}:${address.port}`; + + const okResponse = await fetch(`${baseUrl}/php-wasm`); + assert.equal(okResponse.status, 200); + assert.equal(await okResponse.text(), 'development|OK'); + assert.equal(seenStatus, 200); + + const missingResponse = await fetch(`${baseUrl}/php-wasm/nope.php`); + assert.equal(missingResponse.status, 404); + assert.equal(await missingResponse.text(), '404 - Not Found'); + } + finally + { + await closeServer(server); + } + + const sourceMessages = []; + await php.handleMessageEvent({ + data: { action: 'helloWorld', token: '1', params: ['Sean'] }, + source: { postMessage: message => sourceMessages.push(message) }, + }); + assert.equal(sourceMessages[0].result, 'Hello, Sean!'); + }); + + return coverAll( + page, + 'executable_cgi_node', + 'Representative constructor, request, rewrite, notFound, env, onRequest, and action examples were exercised through PhpCgiNode.', + { runtimeVersion: '8.4' } + ); +} + +async function validateMethodsPhpWasm(page) +{ + const runtimeVersion = getAvailablePhpNodeVersion(); + let hasVrzno = false; + + await withTempDir(async directory => { + await writeTree(directory, { + 'hello.txt': 'Hello, World!', + }); + + const php = await createPhpNode({ + version: runtimeVersion, + sharedLibs: [getPackage('sqlite', runtimeVersion)], + files: [ + { + name: 'hello.txt', + parent: '/preload/', + url: new URL(`file://${path.join(directory, 'hello.txt')}`), + }, + ], + ini: 'display_errors=1\nmemory_limit=256M\n', + }); + const io = capturePhpIo(php); + const vrznoRuntime = await detectVrznoRuntime(php); + hasVrzno = vrznoRuntime.hasVrznoClass && vrznoRuntime.hasTaggedMarshalling; + + io.reset(); + assert.equal(await php.run(` page.blockCount > 0) + .filter(page => shouldIncludePage(page.file, normalizedOptions)); + const blocksByFile = new Map; + + for(const block of inventory.blocks) + { + if(!shouldIncludePage(block.file, normalizedOptions)) + { + continue; + } + + if(!blocksByFile.has(block.file)) + { + blocksByFile.set(block.file, []); + } + + blocksByFile.get(block.file).push(block); + } + + const files = []; + + for(const pageInfo of pagesWithBlocks) + { + const blocks = blocksByFile.get(pageInfo.file) ?? []; + const validator = allPageValidators[pageInfo.file]; + if(process.env.DOCS_COVERAGE_DEBUG) + { + console.error(`Validating ${pageInfo.file}`); + } + + if(!validator) + { + files.push({ + file: pageInfo.file, + blockCount: blocks.length, + results: coverAll({ blocks }, 'uncovered', 'No validator is registered for this docs page.'), + }); + continue; + } + + const results = await validator({ ...pageInfo, blocks }); + + assert.equal( + results.length, + blocks.length, + `${pageInfo.file} coverage results did not account for every code block.` + ); + + files.push({ + file: pageInfo.file, + blockCount: blocks.length, + results, + }); + } + + const flatResults = files.flatMap(file => file.results); + const summary = flatResults.reduce((result, entry) => { + result.total += 1; + result.byStatus[entry.status] = (result.byStatus[entry.status] ?? 0) + 1; + return result; + }, { total: 0, byStatus: {} }); + + return { + generatedAt: new Date().toISOString(), + docsRoot: inventory.docsRoot, + nodeRuntimeVersion: getAvailablePhpNodeVersion(), + cgiNodeRuntimeVersion: normalizedOptions.includeCgiNode ? (process.env.PHP_VERSION ?? null) : null, + sourceDefaults: { + phpNode: parseSourceDefaultVersion(path.join(sourceRoot, 'PhpNode.mjs')), + phpCgiNode: parseSourceDefaultVersion(path.join(sourceRoot, 'PhpCgiNode.mjs')), + }, + options: normalizedOptions, + files, + summary, + }; +} diff --git a/test/files.cjs b/test/files.cjs new file mode 100644 index 000000000..58fd64e14 --- /dev/null +++ b/test/files.cjs @@ -0,0 +1,47 @@ +const { test } = require('node:test'); +const { strict: assert } = require('node:assert'); + +const { PhpNode } = require('./lib/PhpNode.cjs'); + +test('Can read files from JS through the FS interface', async () => { + const php = new PhpNode({ persist: { mountPath: '/persist', localPath: process.cwd() + '/test/' } }); + const contents = new TextDecoder().decode(await php.readFile('/persist/test-content.txt')); + + assert.equal(contents, `Hello, world!\n`); +}); + +test('Can write files from JS through the FS interface', async () => { + const php = new PhpNode({ persist: { mountPath: '/persist', localPath: process.cwd() + '/test/' } }); + + await php.writeFile('/persist/test-content-2.txt', `WRITE TEST\n`); + + const aboutPath = await php.analyzePath('/persist/test-content-2.txt'); + assert.equal(aboutPath.exists, true); + + const contents = new TextDecoder().decode(await php.readFile('/persist/test-content-2.txt')); + assert.equal(contents, `WRITE TEST\n`); +}); + +test('Can delete files from JS through the FS interface', async () => { + const php = new PhpNode({ persist: { mountPath: '/persist', localPath: process.cwd() + '/test/' } }); + + await php.writeFile('/persist/test-content-2.txt', `WRITE TEST\n`); + await php.unlink('/persist/test-content-2.txt'); + + const aboutPath = await php.analyzePath('/persist/test-content-2.txt'); + assert.equal(aboutPath.exists, false); +}); + +test('Can create & delete directories through the FS interface', async () => { + const php = new PhpNode({ persist: { mountPath: '/persist', localPath: process.cwd() + '/test/' } }); + + await php.mkdir('/persist/test-dir'); + + const aboutPathBefore = await php.analyzePath('/persist/test-dir'); + assert.equal(aboutPathBefore.exists, true); + + await php.rmdir('/persist/test-dir'); + + const aboutPathAfter = await php.analyzePath('/persist/test-dir'); + assert.equal(aboutPathAfter.exists, false); +}); diff --git a/test/files.mjs b/test/files.mjs index 474790ffa..f8fdd65ab 100644 --- a/test/files.mjs +++ b/test/files.mjs @@ -1,6 +1,15 @@ import { test } from 'node:test'; import { strict as assert } from 'node:assert'; -import { PhpNode } from '../packages/php-wasm/PhpNode.mjs'; +import { PhpNode as BasePhpNode } from '../packages/php-wasm/PhpNode.mjs'; +import { nodeRuntimeOptions } from './lib/node-runtime-options.mjs'; + +class PhpNode extends BasePhpNode +{ + constructor(args = {}) + { + super(nodeRuntimeOptions(args)); + } +} test('Can read files from JS through the FS interface', async () => { const php = new PhpNode( { persist: { mountPath: '/persist', localPath: process.cwd() + '/test/' } } ); diff --git a/test/lib/PhpNode.cjs b/test/lib/PhpNode.cjs new file mode 100644 index 000000000..84b459381 --- /dev/null +++ b/test/lib/PhpNode.cjs @@ -0,0 +1,14 @@ +const { PhpNode: BasePhpNode } = require('php-wasm/PhpNode'); +const { nodeRuntimeOptions } = require('./node-runtime-options.cjs'); + +class PhpNode extends BasePhpNode +{ + constructor(args = {}) + { + super(nodeRuntimeOptions({ runtime: 'php', ...args })); + } +} + +module.exports = { + PhpNode, +}; diff --git a/test/lib/PhpNode.mjs b/test/lib/PhpNode.mjs new file mode 100644 index 000000000..dd03e7c15 --- /dev/null +++ b/test/lib/PhpNode.mjs @@ -0,0 +1,10 @@ +import { PhpNode as BasePhpNode } from '../../packages/php-wasm/PhpNode.mjs'; +import { nodeRuntimeOptions } from './node-runtime-options.mjs'; + +export class PhpNode extends BasePhpNode +{ + constructor(args = {}) + { + super(nodeRuntimeOptions({ runtime: 'php', ...args })); + } +} diff --git a/test/lib/extension-assets.js b/test/lib/extension-assets.js new file mode 100644 index 000000000..3875323bc --- /dev/null +++ b/test/lib/extension-assets.js @@ -0,0 +1,173 @@ +const path = require('node:path'); +const { pathToFileURL } = require('node:url'); + +const repoRoot = path.resolve(__dirname, '../..'); +const extensionNamePattern = /^php\d+\.\d+-/; + +const packageRoots = { + dom: path.join(repoRoot, 'packages/dom'), + gd: path.join(repoRoot, 'packages/gd'), + iconv: path.join(repoRoot, 'packages/iconv'), + intl: path.join(repoRoot, 'packages/intl'), + libxml: path.join(repoRoot, 'packages/libxml'), + libzip: path.join(repoRoot, 'packages/libzip'), + mbstring: path.join(repoRoot, 'packages/mbstring'), + openssl: path.join(repoRoot, 'packages/openssl'), + phar: path.join(repoRoot, 'packages/phar'), + simplexml: path.join(repoRoot, 'packages/simplexml'), + sqlite: path.join(repoRoot, 'packages/sqlite'), + tidy: path.join(repoRoot, 'packages/tidy'), + xml: path.join(repoRoot, 'packages/xml'), + xmlreader: path.join(repoRoot, 'packages/xmlreader'), + xmlwriter: path.join(repoRoot, 'packages/xmlwriter'), + yaml: path.join(repoRoot, 'packages/libyaml'), + zlib: path.join(repoRoot, 'packages/zlib'), +}; + +const cloneRecord = record => ({ ...record }); +const clonePackage = pkg => ({ + getLibs: () => (pkg.getLibs?.() ?? []).map(cloneRecord), + getFiles: () => (pkg.getFiles?.() ?? []).map(cloneRecord), +}); + +const fileUrl = hostPath => pathToFileURL(hostPath).href; +const versionedExtension = (phpVersion, name) => `php${phpVersion}-${name}.so`; +const libDef = (packageKey, name, ini) => ({ + name, + url: fileUrl(path.join(packageRoots[packageKey], name)), + ...(ini === undefined ? {} : { ini }), +}); +const preloadFileDef = (packageKey, name, virtualPath) => ({ + name, + path: virtualPath, + url: fileUrl(path.join(packageRoots[packageKey], name)), +}); + +const packageFactories = { + dom: phpVersion => ({ + getLibs: () => [libDef('dom', versionedExtension(phpVersion, 'dom'), true)], + }), + gd: phpVersion => ({ + getLibs: () => [ + libDef('gd', versionedExtension(phpVersion, 'gd'), true), + libDef('gd', 'libfreetype.so'), + libDef('gd', 'libwebp.so'), + libDef('gd', 'libjpeg.so'), + libDef('gd', 'libpng.so'), + ], + }), + iconv: phpVersion => ({ + getLibs: () => [ + libDef('iconv', versionedExtension(phpVersion, 'iconv'), true), + libDef('iconv', 'libiconv.so'), + ], + }), + intl: phpVersion => ({ + getLibs: () => [ + libDef('intl', versionedExtension(phpVersion, 'intl'), true), + libDef('intl', 'libicuuc.so'), + libDef('intl', 'libicutu.so'), + libDef('intl', 'libicutest.so'), + libDef('intl', 'libicuio.so'), + libDef('intl', 'libicui18n.so'), + libDef('intl', 'libicudata.so'), + ], + getFiles: () => [preloadFileDef('intl', 'icudt72l.dat', '/preload/icudt72l.dat')], + }), + libxml: () => ({ + getLibs: () => [libDef('libxml', 'libxml2.so')], + }), + libzip: phpVersion => ({ + getLibs: () => [ + libDef('libzip', versionedExtension(phpVersion, 'zip'), true), + libDef('libzip', 'libzip.so'), + ], + }), + mbstring: phpVersion => ({ + getLibs: () => [ + libDef('mbstring', versionedExtension(phpVersion, 'mbstring'), true), + libDef('mbstring', 'libonig.so'), + ], + }), + openssl: phpVersion => ({ + getLibs: () => [ + libDef('openssl', versionedExtension(phpVersion, 'openssl'), true), + libDef('openssl', 'libssl.so'), + libDef('openssl', 'libcrypto.so'), + ], + }), + phar: phpVersion => ({ + getLibs: () => [libDef('phar', versionedExtension(phpVersion, 'phar'), true)], + }), + simplexml: phpVersion => ({ + getLibs: () => [libDef('simplexml', versionedExtension(phpVersion, 'simplexml'), true)], + }), + sqlite: phpVersion => ({ + getLibs: () => [ + libDef('sqlite', versionedExtension(phpVersion, 'sqlite'), true), + libDef('sqlite', versionedExtension(phpVersion, 'pdo-sqlite'), true), + libDef('sqlite', 'libsqlite3.so'), + ], + }), + tidy: phpVersion => ({ + getLibs: () => [ + libDef('tidy', versionedExtension(phpVersion, 'tidy'), true), + libDef('tidy', 'libtidy.so'), + ], + }), + xml: phpVersion => ({ + getLibs: () => [libDef('xml', versionedExtension(phpVersion, 'xml'), true)], + }), + xmlreader: phpVersion => ({ + getLibs: () => [libDef('xmlreader', versionedExtension(phpVersion, 'xmlreader'), true)], + }), + xmlwriter: phpVersion => ({ + getLibs: () => [libDef('xmlwriter', versionedExtension(phpVersion, 'xmlwriter'), true)], + }), + yaml: phpVersion => ({ + getLibs: () => [ + libDef('yaml', versionedExtension(phpVersion, 'yaml'), true), + libDef('yaml', 'libyaml.so'), + ], + }), + zlib: phpVersion => ({ + getLibs: () => [ + libDef('zlib', versionedExtension(phpVersion, 'zlib'), true), + libDef('zlib', 'libz.so'), + ], + }), +}; + +const getPackage = (packageKey, phpVersion = '8.4') => { + const factory = packageFactories[packageKey]; + + if(!factory) + { + throw new Error(`Unknown extension asset package: ${packageKey}`); + } + + return clonePackage(factory(phpVersion)); +}; + +const getSupportPackage = (packageKey, phpVersion = '8.4') => { + const extensionPackage = getPackage(packageKey, phpVersion); + const libs = extensionPackage + .getLibs() + .filter(lib => !extensionNamePattern.test(lib.name ?? '')); + const files = extensionPackage.getFiles(); + + return clonePackage({ + getLibs: () => libs, + getFiles: () => files, + }); +}; + +module.exports = { + repoRoot, + packageRoots, + getPackage, + getSupportPackage, + fileUrl, + preloadFileDef, + versionedExtension, +}; diff --git a/test/lib/extension-assets.mjs b/test/lib/extension-assets.mjs new file mode 100644 index 000000000..243237942 --- /dev/null +++ b/test/lib/extension-assets.mjs @@ -0,0 +1,183 @@ +import path from 'node:path'; +import { fileURLToPath, pathToFileURL } from 'node:url'; + +const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../..'); +const extensionNamePattern = /^php\d+\.\d+-/; + +const packageRoots = { + dom: path.join(repoRoot, 'packages/dom') + , gd: path.join(repoRoot, 'packages/gd') + , iconv: path.join(repoRoot, 'packages/iconv') + , intl: path.join(repoRoot, 'packages/intl') + , libxml: path.join(repoRoot, 'packages/libxml') + , libzip: path.join(repoRoot, 'packages/libzip') + , mbstring: path.join(repoRoot, 'packages/mbstring') + , openssl: path.join(repoRoot, 'packages/openssl') + , phar: path.join(repoRoot, 'packages/phar') + , simplexml: path.join(repoRoot, 'packages/simplexml') + , sqlite: path.join(repoRoot, 'packages/sqlite') + , tidy: path.join(repoRoot, 'packages/tidy') + , xml: path.join(repoRoot, 'packages/xml') + , xmlreader: path.join(repoRoot, 'packages/xmlreader') + , xmlwriter: path.join(repoRoot, 'packages/xmlwriter') + , yaml: path.join(repoRoot, 'packages/libyaml') + , zlib: path.join(repoRoot, 'packages/zlib') +}; + +const cloneRecord = record => ({...record}); +const clonePackage = pkg => ({ + getLibs: () => (pkg.getLibs?.() ?? []).map(cloneRecord) + , getFiles: () => (pkg.getFiles?.() ?? []).map(cloneRecord) +}); + +const fileUrl = hostPath => pathToFileURL(hostPath).href; +const versionedExtension = (phpVersion, name) => `php${phpVersion}-${name}.so`; +const libDef = (packageKey, name, ini) => ({ + name + , url: fileUrl(path.join(packageRoots[packageKey], name)) + , ...(ini === undefined ? {} : {ini}) +}); +const preloadFileDef = (packageKey, name, virtualPath) => ({ + name + , path: virtualPath + , url: fileUrl(path.join(packageRoots[packageKey], name)) +}); + +const packageFactories = { + dom: phpVersion => ({ + getLibs: () => [libDef('dom', versionedExtension(phpVersion, 'dom'), true)] + }) + , gd: phpVersion => ({ + getLibs: () => [ + libDef('gd', versionedExtension(phpVersion, 'gd'), true) + , libDef('gd', 'libfreetype.so') + , libDef('gd', 'libwebp.so') + , libDef('gd', 'libjpeg.so') + , libDef('gd', 'libpng.so') + ] + }) + , iconv: phpVersion => ({ + getLibs: () => [ + libDef('iconv', versionedExtension(phpVersion, 'iconv'), true) + , libDef('iconv', 'libiconv.so') + ] + }) + , intl: phpVersion => ({ + getLibs: () => [ + libDef('intl', versionedExtension(phpVersion, 'intl'), true) + , libDef('intl', 'libicuuc.so') + , libDef('intl', 'libicutu.so') + , libDef('intl', 'libicutest.so') + , libDef('intl', 'libicuio.so') + , libDef('intl', 'libicui18n.so') + , libDef('intl', 'libicudata.so') + ] + , getFiles: () => [preloadFileDef('intl', 'icudt72l.dat', '/preload/icudt72l.dat')] + }) + , libxml: () => ({ + getLibs: () => [libDef('libxml', 'libxml2.so')] + }) + , libzip: phpVersion => ({ + getLibs: () => [ + libDef('libzip', versionedExtension(phpVersion, 'zip'), true) + , libDef('libzip', 'libzip.so') + ] + }) + , mbstring: phpVersion => ({ + getLibs: () => [ + libDef('mbstring', versionedExtension(phpVersion, 'mbstring'), true) + , libDef('mbstring', 'libonig.so') + ] + }) + , openssl: phpVersion => ({ + getLibs: () => [ + libDef('openssl', versionedExtension(phpVersion, 'openssl'), true) + , libDef('openssl', 'libssl.so') + , libDef('openssl', 'libcrypto.so') + ] + }) + , phar: phpVersion => ({ + getLibs: () => [libDef('phar', versionedExtension(phpVersion, 'phar'), true)] + }) + , simplexml: phpVersion => ({ + getLibs: () => [libDef('simplexml', versionedExtension(phpVersion, 'simplexml'), true)] + }) + , sqlite: phpVersion => ({ + getLibs: () => [ + libDef('sqlite', versionedExtension(phpVersion, 'sqlite'), true) + , libDef('sqlite', versionedExtension(phpVersion, 'pdo-sqlite'), true) + , libDef('sqlite', 'libsqlite3.so') + ] + }) + , tidy: phpVersion => ({ + getLibs: () => [ + libDef('tidy', versionedExtension(phpVersion, 'tidy'), true) + , libDef('tidy', 'libtidy.so') + ] + }) + , xml: phpVersion => ({ + getLibs: () => [libDef('xml', versionedExtension(phpVersion, 'xml'), true)] + }) + , xmlreader: phpVersion => ({ + getLibs: () => [libDef('xmlreader', versionedExtension(phpVersion, 'xmlreader'), true)] + }) + , xmlwriter: phpVersion => ({ + getLibs: () => [libDef('xmlwriter', versionedExtension(phpVersion, 'xmlwriter'), true)] + }) + , yaml: phpVersion => ({ + getLibs: () => [ + libDef('yaml', versionedExtension(phpVersion, 'yaml'), true) + , libDef('yaml', 'libyaml.so') + ] + }) + , zlib: phpVersion => ({ + getLibs: () => [ + libDef('zlib', versionedExtension(phpVersion, 'zlib'), true) + , libDef('zlib', 'libz.so') + ] + }) +}; + +const getPackage = (packageKey, phpVersion = '8.4') => { + const factory = packageFactories[packageKey]; + + if(!factory) + { + throw new Error(`Unknown extension asset package: ${packageKey}`); + } + + return clonePackage(factory(phpVersion)); +}; + +const getSupportPackage = (packageKey, phpVersion = '8.4') => { + const extensionPackage = getPackage(packageKey, phpVersion); + const libs = extensionPackage + .getLibs() + .filter(lib => !extensionNamePattern.test(lib.name ?? '')); + const files = extensionPackage.getFiles(); + + return clonePackage({ + getLibs: () => libs + , getFiles: () => files + }); +}; + +export { + repoRoot, + packageRoots, + getPackage, + getSupportPackage, + fileUrl, + preloadFileDef, + versionedExtension, +}; + +export default { + repoRoot, + packageRoots, + getPackage, + getSupportPackage, + fileUrl, + preloadFileDef, + versionedExtension, +}; diff --git a/test/lib/node-runtime-options.cjs b/test/lib/node-runtime-options.cjs new file mode 100644 index 000000000..f775dbad9 --- /dev/null +++ b/test/lib/node-runtime-options.cjs @@ -0,0 +1,260 @@ +const fs = require('node:fs'); +const path = require('node:path'); + +const { + getPackage, + getSupportPackage, +} = require('./extension-assets.js'); + +const currentEnv = () => globalThis.process?.env ?? {}; +const envFlagIsShared = value => value === 'shared'; +const envFlagNeedsOpenSslLibs = value => ['1', 'shared', 'dynamic'].includes(value ?? ''); +const normalizeBuildMode = value => value === '1' ? 'dynamic' : value; +const sharedWrapperMarkers = ['php.data', 'getDylinkMetadata', 'LDSO']; +const sharedBuildFlags = new Set([ + 'WITH_LIBXML' + , 'WITH_ZLIB' + , 'WITH_LIBZIP' + , 'WITH_GD' + , 'WITH_LIBPNG' + , 'WITH_FREETYPE' + , 'WITH_LIBJPEG' + , 'WITH_LIBWEBP' + , 'WITH_ICONV' + , 'WITH_INTL' + , 'WITH_MBSTRING' + , 'WITH_ONIGURUMA' + , 'WITH_OPENSSL' + , 'WITH_SQLITE' + , 'WITH_XMLREADER' + , 'WITH_TIDY' + , 'WITH_YAML' +]); +const runtimeWrapperByKind = { + php: version => path.resolve(`/app/packages/php-wasm/php${version}-node.mjs`) + , cgi: version => path.resolve(`/app/packages/php-cgi-wasm/php${version}-cgi-node.mjs`) + , cli: version => path.resolve(`/app/packages/php-cli-wasm/php${version}-cli-node.mjs`) + , dbg: version => path.resolve(`/app/packages/php-dbg-wasm/php${version}-dbg-node.mjs`) +}; +const packageBuildFlagMap = { + dom: 'WITH_DOM' + , gd: 'WITH_GD' + , iconv: 'WITH_ICONV' + , intl: 'WITH_INTL' + , libxml: 'WITH_LIBXML' + , libzip: 'WITH_LIBZIP' + , mbstring: 'WITH_MBSTRING' + , openssl: 'WITH_OPENSSL' + , phar: 'WITH_PHAR' + , simplexml: 'WITH_SIMPLEXML' + , sqlite: 'WITH_SQLITE' + , tidy: 'WITH_TIDY' + , xml: 'WITH_XML' + , xmlreader: 'WITH_XMLREADER' + , xmlwriter: 'WITH_XMLWRITER' + , yaml: 'WITH_YAML' + , zlib: 'WITH_ZLIB' +}; +const runtimeLibraryPackages = { + cgi: ['libxml', 'dom', 'zlib', 'libzip', 'gd', 'iconv', 'intl', 'openssl', 'mbstring', 'phar', 'sqlite', 'xml', 'simplexml', 'tidy', 'yaml'] +}; + +const tagPackage = (packageKey, pkg) => ({ __packageKey: packageKey, ...pkg }); + +const dedupeSharedLibEntries = sharedLibs => { + const deduped = []; + const seenPackages = new Set; + + for(const entry of sharedLibs) + { + const packageKey = entry?.__packageKey; + + if(packageKey && seenPackages.has(packageKey)) + { + continue; + } + + packageKey && seenPackages.add(packageKey); + deduped.push(entry); + } + + return deduped; +}; + +const sharedLibraryPackages = [ + [env => envFlagIsShared(env.WITH_LIBXML), 'libxml'] + , [env => envFlagIsShared(env.WITH_ZLIB), 'zlib'] + , [env => envFlagIsShared(env.WITH_LIBZIP), 'libzip'] + , [env => ( + envFlagIsShared(env.WITH_GD) + || envFlagIsShared(env.WITH_LIBPNG) + || envFlagIsShared(env.WITH_FREETYPE) + || envFlagIsShared(env.WITH_LIBJPEG) + || envFlagIsShared(env.WITH_LIBWEBP) + ), 'gd'] + , [env => envFlagIsShared(env.WITH_ICONV), 'iconv'] + , [env => envFlagIsShared(env.WITH_INTL), 'intl'] + , [env => envFlagIsShared(env.WITH_MBSTRING) || envFlagIsShared(env.WITH_ONIGURUMA), 'mbstring'] + , [env => envFlagNeedsOpenSslLibs(env.WITH_OPENSSL), 'openssl'] + , [env => envFlagIsShared(env.WITH_SQLITE), 'sqlite'] + , [env => envFlagIsShared(env.WITH_TIDY), 'tidy'] + , [env => envFlagIsShared(env.WITH_YAML), 'yaml'] +]; + +const currentPhpVersion = env => env.PHP_VERSION ?? '8.4'; +const hasExplicitBuildFlags = env => Object.keys(env).some(key => sharedBuildFlags.has(key)); +const currentBuildType = env => String(env.LIB_TYPE ?? '').toLowerCase(); + +const parseEnvFile = envFile => { + if(!fs.existsSync(envFile)) + { + return {}; + } + + return fs.readFileSync(envFile, 'utf8') + .split(/\r?\n/) + .reduce((parsed, line) => { + const trimmed = line.trim(); + + if(!trimmed || trimmed.startsWith('#') || trimmed.startsWith('!') || !trimmed.includes('=')) + { + return parsed; + } + + const [key, ...rest] = trimmed.split('='); + parsed[key] = rest.join('='); + return parsed; + }, {}); +}; + +const runtimeLooksShared = wrapperFile => { + if(!wrapperFile || !fs.existsSync(wrapperFile)) + { + return false; + } + + const wrapperSource = fs.readFileSync(wrapperFile, 'utf8'); + + return sharedWrapperMarkers.every(marker => wrapperSource.includes(marker)); +}; + +const resolveNodeTestEnv = (options = {}, env = currentEnv()) => { + if(hasExplicitBuildFlags(env)) + { + return env; + } + + const phpVersion = options.version ?? currentPhpVersion(env); + const buildType = currentBuildType(env); + const runtimeKind = options.runtime; + const wrapperFile = runtimeKind && runtimeWrapperByKind[runtimeKind]?.(phpVersion); + const buildTypeEnvFile = buildType && ['dynamic', 'shared', 'static'].includes(buildType) + ? path.resolve(`/app/.github/.env_${phpVersion}.${buildType}.ci`) + : null; + + if(buildTypeEnvFile) + { + return { + ...parseEnvFile(buildTypeEnvFile) + , ...env + , PHP_VERSION: phpVersion + }; + } + + if(!runtimeLooksShared(wrapperFile)) + { + return env; + } + + const sharedEnvFile = path.resolve(`/app/.github/.env_${phpVersion}.shared.ci`); + + return { + ...parseEnvFile(sharedEnvFile) + , ...env + , PHP_VERSION: phpVersion + }; +}; + +const getNodeEnvSharedLibs = (env = currentEnv()) => { + const phpVersion = currentPhpVersion(env); + const supportPackages = []; + + for(const [shouldInclude, packageKey] of sharedLibraryPackages) + { + if(!shouldInclude(env)) + { + continue; + } + + const supportPackage = getSupportPackage(packageKey, phpVersion); + + if(supportPackage.getLibs().length || supportPackage.getFiles().length) + { + supportPackages.push(tagPackage(packageKey, supportPackage)); + } + } + + return supportPackages; +}; + +const effectivePackageBuildMode = (packageKey, env = currentEnv()) => normalizeBuildMode( + env[packageBuildFlagMap[packageKey]] ?? 'dynamic' +); + +const getNodeEnvRuntimeLibs = (options = {}, env = currentEnv()) => { + const runtimePackages = runtimeLibraryPackages[options.runtime] ?? []; + + if(!runtimePackages.length) + { + return []; + } + + const phpVersion = options.version ?? currentPhpVersion(env); + const resolvedPackages = []; + const seenPackages = new Set(); + + for(const packageKey of runtimePackages) + { + if(seenPackages.has(packageKey)) + { + continue; + } + + seenPackages.add(packageKey); + + switch(effectivePackageBuildMode(packageKey, env)) + { + case 'dynamic': + resolvedPackages.push(tagPackage(packageKey, getPackage(packageKey, phpVersion))); + break; + + case 'shared': + resolvedPackages.push(tagPackage(packageKey, getSupportPackage(packageKey, phpVersion))); + break; + } + } + + return resolvedPackages.filter(pkg => pkg.getLibs().length || pkg.getFiles().length); +}; + +const nodeRuntimeOptions = (options = {}, env = currentEnv()) => { + const resolvedEnv = resolveNodeTestEnv(options, env); + const sharedLibs = dedupeSharedLibEntries([ + ...getNodeEnvSharedLibs(resolvedEnv), + ...getNodeEnvRuntimeLibs(options, resolvedEnv), + ...(options.sharedLibs ?? []) + ]); + + if(!sharedLibs.length) + { + return options; + } + + return { ...options, sharedLibs }; +}; + +module.exports = { + getNodeEnvSharedLibs, + nodeRuntimeOptions, + resolveNodeTestEnv, +}; diff --git a/test/lib/node-runtime-options.mjs b/test/lib/node-runtime-options.mjs new file mode 100644 index 000000000..79d7e5415 --- /dev/null +++ b/test/lib/node-runtime-options.mjs @@ -0,0 +1,251 @@ +import fs from 'node:fs'; +import path from 'node:path'; + +import { getPackage, getSupportPackage } from './extension-assets.mjs'; + +const currentEnv = () => globalThis.process?.env ?? {}; +const envFlagIsShared = value => value === 'shared'; +const envFlagNeedsOpenSslLibs = value => ['1', 'shared', 'dynamic'].includes(value ?? ''); +const normalizeBuildMode = value => value === '1' ? 'dynamic' : value; +const sharedWrapperMarkers = ['php.data', 'getDylinkMetadata', 'LDSO']; +const sharedBuildFlags = new Set([ + 'WITH_LIBXML' + , 'WITH_ZLIB' + , 'WITH_LIBZIP' + , 'WITH_GD' + , 'WITH_LIBPNG' + , 'WITH_FREETYPE' + , 'WITH_LIBJPEG' + , 'WITH_LIBWEBP' + , 'WITH_ICONV' + , 'WITH_INTL' + , 'WITH_MBSTRING' + , 'WITH_ONIGURUMA' + , 'WITH_OPENSSL' + , 'WITH_SQLITE' + , 'WITH_XMLREADER' + , 'WITH_TIDY' + , 'WITH_YAML' +]); +const runtimeWrapperByKind = { + php: version => path.resolve(`/app/packages/php-wasm/php${version}-node.mjs`) + , cgi: version => path.resolve(`/app/packages/php-cgi-wasm/php${version}-cgi-node.mjs`) + , cli: version => path.resolve(`/app/packages/php-cli-wasm/php${version}-cli-node.mjs`) + , dbg: version => path.resolve(`/app/packages/php-dbg-wasm/php${version}-dbg-node.mjs`) +}; +const packageBuildFlagMap = { + dom: 'WITH_DOM' + , gd: 'WITH_GD' + , iconv: 'WITH_ICONV' + , intl: 'WITH_INTL' + , libxml: 'WITH_LIBXML' + , libzip: 'WITH_LIBZIP' + , mbstring: 'WITH_MBSTRING' + , openssl: 'WITH_OPENSSL' + , phar: 'WITH_PHAR' + , simplexml: 'WITH_SIMPLEXML' + , sqlite: 'WITH_SQLITE' + , tidy: 'WITH_TIDY' + , xml: 'WITH_XML' + , xmlreader: 'WITH_XMLREADER' + , xmlwriter: 'WITH_XMLWRITER' + , yaml: 'WITH_YAML' + , zlib: 'WITH_ZLIB' +}; +const runtimeLibraryPackages = { + cgi: ['libxml', 'dom', 'zlib', 'libzip', 'gd', 'iconv', 'intl', 'openssl', 'mbstring', 'phar', 'sqlite', 'xml', 'simplexml', 'tidy', 'yaml'] +}; + +const tagPackage = (packageKey, pkg) => ({ __packageKey: packageKey, ...pkg }); + +const dedupeSharedLibEntries = sharedLibs => { + const deduped = []; + const seenPackages = new Set; + + for(const entry of sharedLibs) + { + const packageKey = entry?.__packageKey; + + if(packageKey && seenPackages.has(packageKey)) + { + continue; + } + + packageKey && seenPackages.add(packageKey); + deduped.push(entry); + } + + return deduped; +}; + +const sharedLibraryPackages = [ + [env => envFlagIsShared(env.WITH_LIBXML), 'libxml'] + , [env => envFlagIsShared(env.WITH_ZLIB), 'zlib'] + , [env => envFlagIsShared(env.WITH_LIBZIP), 'libzip'] + , [env => ( + envFlagIsShared(env.WITH_GD) + || envFlagIsShared(env.WITH_LIBPNG) + || envFlagIsShared(env.WITH_FREETYPE) + || envFlagIsShared(env.WITH_LIBJPEG) + || envFlagIsShared(env.WITH_LIBWEBP) + ), 'gd'] + , [env => envFlagIsShared(env.WITH_ICONV), 'iconv'] + , [env => envFlagIsShared(env.WITH_INTL), 'intl'] + , [env => envFlagIsShared(env.WITH_MBSTRING) || envFlagIsShared(env.WITH_ONIGURUMA), 'mbstring'] + , [env => envFlagNeedsOpenSslLibs(env.WITH_OPENSSL), 'openssl'] + , [env => envFlagIsShared(env.WITH_SQLITE), 'sqlite'] + , [env => envFlagIsShared(env.WITH_TIDY), 'tidy'] + , [env => envFlagIsShared(env.WITH_YAML), 'yaml'] +]; + +const currentPhpVersion = env => env.PHP_VERSION ?? '8.4'; +const hasExplicitBuildFlags = env => Object.keys(env).some(key => sharedBuildFlags.has(key)); +const currentBuildType = env => String(env.LIB_TYPE ?? '').toLowerCase(); + +const parseEnvFile = envFile => { + if(!fs.existsSync(envFile)) + { + return {}; + } + + return fs.readFileSync(envFile, 'utf8') + .split(/\r?\n/) + .reduce((parsed, line) => { + const trimmed = line.trim(); + + if(!trimmed || trimmed.startsWith('#') || trimmed.startsWith('!') || !trimmed.includes('=')) + { + return parsed; + } + + const [key, ...rest] = trimmed.split('='); + parsed[key] = rest.join('='); + return parsed; + }, {}); +}; + +const runtimeLooksShared = wrapperFile => { + if(!wrapperFile || !fs.existsSync(wrapperFile)) + { + return false; + } + + const wrapperSource = fs.readFileSync(wrapperFile, 'utf8'); + + return sharedWrapperMarkers.every(marker => wrapperSource.includes(marker)); +}; + +export const resolveNodeTestEnv = (options = {}, env = currentEnv()) => { + if(hasExplicitBuildFlags(env)) + { + return env; + } + + const phpVersion = options.version ?? currentPhpVersion(env); + const buildType = currentBuildType(env); + const runtimeKind = options.runtime; + const wrapperFile = runtimeKind && runtimeWrapperByKind[runtimeKind]?.(phpVersion); + const buildTypeEnvFile = buildType && ['dynamic', 'shared', 'static'].includes(buildType) + ? path.resolve(`/app/.github/.env_${phpVersion}.${buildType}.ci`) + : null; + + if(buildTypeEnvFile) + { + return { + ...parseEnvFile(buildTypeEnvFile) + , ...env + , PHP_VERSION: phpVersion + }; + } + + if(!runtimeLooksShared(wrapperFile)) + { + return env; + } + + const sharedEnvFile = path.resolve(`/app/.github/.env_${phpVersion}.shared.ci`); + + return { + ...parseEnvFile(sharedEnvFile) + , ...env + , PHP_VERSION: phpVersion + }; +}; + +export const getNodeEnvSharedLibs = (env = currentEnv()) => { + const phpVersion = currentPhpVersion(env); + const supportPackages = []; + + for(const [shouldInclude, packageKey] of sharedLibraryPackages) + { + if(!shouldInclude(env)) + { + continue; + } + + const supportPackage = getSupportPackage(packageKey, phpVersion); + + if(supportPackage.getLibs().length || supportPackage.getFiles().length) + { + supportPackages.push(tagPackage(packageKey, supportPackage)); + } + } + + return supportPackages; +}; + +const effectivePackageBuildMode = (packageKey, env = currentEnv()) => normalizeBuildMode( + env[packageBuildFlagMap[packageKey]] ?? 'dynamic' +); + +const getNodeEnvRuntimeLibs = (options = {}, env = currentEnv()) => { + const runtimePackages = runtimeLibraryPackages[options.runtime] ?? []; + + if(!runtimePackages.length) + { + return []; + } + + const phpVersion = options.version ?? currentPhpVersion(env); + const resolvedPackages = []; + const seenPackages = new Set(); + + for(const packageKey of runtimePackages) + { + if(seenPackages.has(packageKey)) + { + continue; + } + + seenPackages.add(packageKey); + + switch(effectivePackageBuildMode(packageKey, env)) + { + case 'dynamic': + resolvedPackages.push(tagPackage(packageKey, getPackage(packageKey, phpVersion))); + break; + + case 'shared': + resolvedPackages.push(tagPackage(packageKey, getSupportPackage(packageKey, phpVersion))); + break; + } + } + + return resolvedPackages.filter(pkg => pkg.getLibs().length || pkg.getFiles().length); +}; + +export const nodeRuntimeOptions = (options = {}, env = currentEnv()) => { + const resolvedEnv = resolveNodeTestEnv(options, env); + const sharedLibs = dedupeSharedLibEntries([ + ...getNodeEnvSharedLibs(resolvedEnv), + ...getNodeEnvRuntimeLibs(options, resolvedEnv), + ...(options.sharedLibs ?? []) + ]); + + if(!sharedLibs.length) + { + return options; + } + + return { ...options, sharedLibs }; +}; diff --git a/test/lib/phpt.cjs b/test/lib/phpt.cjs new file mode 100644 index 000000000..4985a7092 --- /dev/null +++ b/test/lib/phpt.cjs @@ -0,0 +1,577 @@ +const fs = require('node:fs/promises'); +const os = require('node:os'); +const path = require('node:path'); +const { strict: assert } = require('node:assert'); + +const { PhpCliNode } = require('php-cli-wasm/PhpCliNode'); +const extensionAssets = require('./extension-assets.js'); +const { nodeRuntimeOptions, resolveNodeTestEnv } = require('./node-runtime-options.cjs'); + +const { getPackage, getSupportPackage } = extensionAssets; +const normalize = text => String(text ?? '').replace(/\r\n/g, '\n'); +const normalizeExpectation = text => normalize(text).trim(); +const normalizeActualCandidates = text => { + const normalized = normalizeExpectation(text); + const withoutTrailingStackTrace = normalized.replace(/\nStack trace:\n(?:#\d+[^\n]*(?:\n|$))+$/u, ''); + + return withoutTrailingStackTrace !== normalized + ? [normalized, withoutTrailingStackTrace] + : [normalized]; +}; +const extensionPackageMap = new Map([ + ['dom', ['libxml', 'dom']] + , ['gd', ['zlib']] + , ['iconv', ['iconv']] + , ['intl', ['intl']] + , ['mbstring', ['mbstring']] + , ['openssl', ['openssl']] + , ['pdo_sqlite', ['sqlite']] + , ['phar', ['phar']] + , ['simplexml', ['libxml', 'simplexml']] + , ['sqlite3', ['sqlite']] + , ['tidy', ['tidy']] + , ['xml', ['libxml', 'xml']] + , ['xmlreader', ['libxml', 'dom', 'xmlreader']] + , ['xmlwriter', ['libxml', 'xmlwriter']] + , ['yaml', ['yaml']] + , ['zip', ['zlib', 'libzip']] + , ['zlib', ['zlib']] +]); +const packageBuildFlagMap = { + dom: 'WITH_DOM' + , gd: 'WITH_GD' + , iconv: 'WITH_ICONV' + , intl: 'WITH_INTL' + , libxml: 'WITH_LIBXML' + , libzip: 'WITH_LIBZIP' + , mbstring: 'WITH_MBSTRING' + , openssl: 'WITH_OPENSSL' + , phar: 'WITH_PHAR' + , simplexml: 'WITH_SIMPLEXML' + , sqlite: 'WITH_SQLITE' + , tidy: 'WITH_TIDY' + , xml: 'WITH_XML' + , xmlreader: 'WITH_XMLREADER' + , xmlwriter: 'WITH_XMLWRITER' + , yaml: 'WITH_YAML' + , zlib: 'WITH_ZLIB' +}; +const parsePhpt = source => { + const sections = {}; + let currentSection = null; + + for(const line of normalize(source).split('\n')) + { + const section = line.match(/^--([A-Z_]+)(?:--)?$/); + + if(section) + { + currentSection = section[1]; + sections[currentSection] = ''; + continue; + } + + if(currentSection) + { + sections[currentSection] += line + '\n'; + } + } + + return sections; +}; + +const expectfTextToPattern = text => text + .replace(/[|\\{}()[\]^$+?.*]/g, '\\$&') + .replaceAll('%e', '[\\\\/]') + .replaceAll('%s', '[^\\r\\n]+') + .replaceAll('%S', '[^\\r\\n]*') + .replaceAll('%a', '[\\s\\S]+') + .replaceAll('%A', '[\\s\\S]*') + .replaceAll('%w', '\\s*') + .replaceAll('%i', '[+-]?\\d+') + .replaceAll('%d', '\\d+') + .replaceAll('%x', '[0-9a-fA-F]+') + .replaceAll('%f', '[+-]?(?:\\d+\\.?\\d*|\\.\\d+)(?:[Ee][+-]?\\d+)?') + .replaceAll('%c', '.'); + +const expectfToRegExp = expectf => { + const source = normalize(expectf); + let pattern = ''; + let cursor = 0; + + while(cursor < source.length) + { + const regexStart = source.indexOf('%r', cursor); + + if(regexStart === -1) + { + pattern += expectfTextToPattern(source.slice(cursor)); + break; + } + + pattern += expectfTextToPattern(source.slice(cursor, regexStart)); + + const regexEnd = source.indexOf('%r', regexStart + 2); + + if(regexEnd === -1) + { + pattern += expectfTextToPattern(source.slice(regexStart)); + break; + } + + pattern += `(?:${source.slice(regexStart + 2, regexEnd)})`; + cursor = regexEnd + 2; + } + + return new RegExp(`^${pattern}$`); +}; + +const stripHtmlErrorFormatting = text => normalize(text) + .replace(/\s*\[[^<]*<\/a>\]/g, '') + .replace(/
/g, '') + .replace(/<\/?b>/g, '') + .replace(/<\/?a[^>]*>/g, '') + .replace(/:\s{2,}/g, ': '); + +const expectationVariants = expected => { + const variants = [expected]; + + if(!/[<][^>]+[>]/.test(expected.value)) + { + return variants; + } + + const stripped = normalizeExpectation(stripHtmlErrorFormatting(expected.value)); + + if(stripped && stripped !== expected.value) + { + variants.push({ ...expected, value: stripped }); + } + + return variants; +}; + +const getExpectation = sections => { + if('EXPECT' in sections) + { + return { type: 'EXPECT', value: normalizeExpectation(sections.EXPECT) }; + } + + if('EXPECTF' in sections) + { + return { type: 'EXPECTF', value: normalizeExpectation(sections.EXPECTF) }; + } + + if('EXPECTREGEX' in sections) + { + return { type: 'EXPECTREGEX', value: normalizeExpectation(sections.EXPECTREGEX) }; + } + + throw new Error('PHPT is missing EXPECT, EXPECTF, or EXPECTREGEX'); +}; + +const expectationMatches = (expected, actual) => { + return expectationVariants(expected).some(variant => { + if(variant.type === 'EXPECT') + { + return actual === variant.value; + } + + if(variant.type === 'EXPECTF') + { + return expectfToRegExp(variant.value).test(actual); + } + + return new RegExp(variant.value).test(actual); + }); +}; + +const assertExpectationMatches = (expected, actual) => { + for(const candidate of normalizeActualCandidates(actual)) + { + if(expectationMatches(expected, candidate)) + { + return candidate; + } + } + + if(expected.type === 'EXPECT') + { + assert.equal(actual, expected.value); + } + else if(expected.type === 'EXPECTF') + { + assert.match(actual, expectfToRegExp(expectationVariants(expected).at(-1).value)); + } + else + { + assert.match(actual, new RegExp(expectationVariants(expected).at(-1).value)); + } +}; + +const collectFixtureFiles = async (rootDir, currentDir = rootDir, relativeDir = '') => { + const entries = await fs.readdir(currentDir, { withFileTypes: true }); + const files = []; + + for(const entry of entries) + { + const hostPath = path.join(currentDir, entry.name); + const relativePath = path.posix.join(relativeDir, entry.name); + + if(entry.isDirectory()) + { + files.push(...await collectFixtureFiles(rootDir, hostPath, relativePath)); + continue; + } + + if(!entry.isFile() || entry.name.endsWith('.phpt')) + { + continue; + } + + files.push({ + parent: path.posix.join('/preload/phpt', path.posix.dirname(relativePath)).replace(/\/\.$/, ''), + name: path.posix.basename(relativePath), + url: `file://${hostPath}` + }); + } + + return files; +}; + +const substitutePhptPathTokens = (text, phptDir) => String(text ?? '') + .replaceAll('{PWD}', phptDir); + +const parsePhpStringLiteral = value => { + const trimmed = String(value ?? '').trim(); + + if((trimmed.startsWith('"') && trimmed.endsWith('"')) || (trimmed.startsWith('\'') && trimmed.endsWith('\''))) + { + return trimmed.slice(1, -1); + } + + return trimmed; +}; + +const quotePhpSingle = value => `'${String(value).replace(/\\/g, '\\\\').replace(/'/g, '\\\'')}'`; + +const parseIniSettings = (iniSection, phptDir) => { + const lines = []; + let autoPrependFile = null; + + for(const line of normalize(iniSection).split('\n').map(line => line.trim()).filter(Boolean)) + { + const substituted = substitutePhptPathTokens(line, phptDir); + const autoPrependMatch = substituted.match(/^auto_prepend_file\s*=(.*)$/); + + if(autoPrependMatch) + { + autoPrependFile = parsePhpStringLiteral(autoPrependMatch[1]); + continue; + } + + lines.push(substituted); + } + + return { lines, autoPrependFile }; +}; + +const parseExtensions = extensionSection => [...new Set( + normalize(extensionSection) + .split(/\s+/) + .map(name => name.trim().toLowerCase()) + .filter(Boolean) +)]; + +const inferExtensionsFromSkipif = skipifSection => [...new Set( + [...normalize(skipifSection ?? '').matchAll(/extension_loaded\s*\(\s*["']([^"']+)["']\s*\)/g)] + .map(([, extensionName]) => extensionName.trim().toLowerCase()) + .filter(Boolean) +)]; + +const inferExtensionSection = phptFile => { + const normalized = phptFile.replace(/\\/g, '/'); + const match = normalized.match(/\/ext\/([^/]+)\/tests\//); + + if(!match) + { + return null; + } + + return match[1].toLowerCase(); +}; + +const collectReferencedRelativeFiles = async ({ fileBody, phptDir, runtimeDir }) => { + const files = []; + const seen = new Set(); + const stringLiteralPattern = /(['"])([^'"\\]*(?:\\.[^'"\\]*)*)\1/g; + + for(const match of normalize(fileBody).matchAll(stringLiteralPattern)) + { + const literal = match[2]; + const relativeLiteral = literal.startsWith('/../') || literal.startsWith('/./') + ? `.${literal}` + : literal; + + if(!relativeLiteral || relativeLiteral.startsWith('php://') || relativeLiteral.startsWith('http://') || relativeLiteral.startsWith('https://')) + { + continue; + } + + if(!relativeLiteral.startsWith('./') && !relativeLiteral.startsWith('../')) + { + continue; + } + + const hostPath = path.resolve(phptDir, relativeLiteral); + let stat; + + try + { + stat = await fs.stat(hostPath); + } + catch + { + continue; + } + + if(!stat.isFile()) + { + continue; + } + + const virtualPath = path.posix.normalize(path.posix.join(runtimeDir, relativeLiteral)); + + if(seen.has(virtualPath)) + { + continue; + } + + seen.add(virtualPath); + + files.push({ + parent: path.posix.dirname(virtualPath) + , name: path.posix.basename(virtualPath) + , url: `file://${hostPath}` + }); + } + + return files; +}; + +const attachOutput = php => { + let stdOut = ''; + let stdErr = ''; + + php.addEventListener('output', event => event.detail.forEach(line => void (stdOut += line))); + php.addEventListener('error', event => event.detail.forEach(line => void (stdErr += line))); + + return { + stdOut: () => stdOut + , stdErr: () => stdErr + }; +}; + +const probeLoadedExtensions = async ({ version, phpOptions = {} }) => { + const php = new PhpCliNode(nodeRuntimeOptions({ + ...phpOptions + , runtime: 'cli' + , version + , code: 'echo json_encode(array_map("strtolower", get_loaded_extensions()));' + })); + const { stdOut, stdErr } = attachOutput(php); + + await php.binary; + + const exitCode = await php.run(); + + assert.equal(exitCode, 0, `Extension probe failed for PHP ${version}: ${stdErr()}`); + assert.equal(stdErr(), '', `Extension probe emitted stderr for PHP ${version}`); + + return new Set(JSON.parse(stdOut())); +}; + +const resolveExtensionPackages = async ({ sections, version, phpOptions = {} }) => { + if(!sections.EXTENSIONS) + { + return []; + } + + const requestedExtensions = parseExtensions(sections.EXTENSIONS); + + if(!requestedExtensions.length) + { + return []; + } + + const loadedExtensions = await probeLoadedExtensions({ version, phpOptions }); + const extraPackages = []; + const seenPackages = new Set(); + const resolvedEnv = resolveNodeTestEnv({ runtime: 'cli', version, ...phpOptions }); + + for(const extensionName of requestedExtensions) + { + if(loadedExtensions.has(extensionName)) + { + continue; + } + + let packages = extensionPackageMap.get(extensionName); + + if(!packages?.length) + { + throw new Error(`Unsupported unloaded PHPT extension requirement: ${extensionName}`); + } + + const buildFlag = ({ + dom: 'WITH_DOM' + , gd: 'WITH_GD' + , iconv: 'WITH_ICONV' + , intl: 'WITH_INTL' + , mbstring: 'WITH_MBSTRING' + , openssl: 'WITH_OPENSSL' + , pdo_sqlite: 'WITH_SQLITE' + , phar: 'WITH_PHAR' + , simplexml: 'WITH_SIMPLEXML' + , sqlite3: 'WITH_SQLITE' + , tidy: 'WITH_TIDY' + , xml: 'WITH_XML' + , xmlreader: 'WITH_XMLREADER' + , xmlwriter: 'WITH_XMLWRITER' + , yaml: 'WITH_YAML' + , zip: 'WITH_LIBZIP' + , zlib: 'WITH_ZLIB' + })[extensionName]; + + if(buildFlag && resolvedEnv[buildFlag] === '0') + { + throw new Error(`Required extension ${extensionName} is disabled by ${buildFlag}=0`); + } + + if(extensionName === 'intl' && resolvedEnv.WITH_INTL === 'shared') + { + if(!seenPackages.has('intl-support')) + { + seenPackages.add('intl-support'); + extraPackages.push(getSupportPackage('intl', version)); + } + + continue; + } + + for(const packageKey of packages) + { + const packageBuildFlag = packageBuildFlagMap[packageKey]; + const packageBuildMode = packageBuildFlag ? resolvedEnv[packageBuildFlag] : undefined; + + if(packageBuildMode === 'shared' || packageBuildMode === 'static') + { + continue; + } + + if(seenPackages.has(packageKey)) + { + continue; + } + + seenPackages.add(packageKey); + extraPackages.push(getPackage(packageKey, version)); + } + } + + return extraPackages; +}; + +const runCliPhpt = async ({ phptFile, version, phpOptions = {} }) => { + const source = await fs.readFile(phptFile, 'utf8'); + const sections = parsePhpt(source); + const phptDir = path.dirname(phptFile); + const phptBase = path.basename(phptFile, '.phpt'); + const runtimeDir = '/preload/phpt'; + const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), `phpt-${phptBase}-`)); + const subjectHost = path.join(tempDir, `${phptBase}.php`); + const prependHost = path.join(tempDir, `prepend-${phptBase}.php`); + const iniSettings = sections.INI ? parseIniSettings(sections.INI, phptDir) : { lines: [], autoPrependFile: null }; + + const fileSection = sections.FILE ?? sections.FILEEOF; + + if(!fileSection) + { + throw new Error(`PHPT is missing FILE/FILEEOF section: ${phptFile}`); + } + + if(!sections.EXTENSIONS) + { + const inferredExtensions = new Set(inferExtensionsFromSkipif(sections.SKIPIF)); + const inferredExtension = inferExtensionSection(phptFile); + + if(inferredExtension) + { + inferredExtensions.add(inferredExtension); + } + + if(inferredExtensions.size) + { + sections.EXTENSIONS = `${[...inferredExtensions].join('\n')}\n`; + } + } + + await fs.writeFile(subjectHost, normalize(fileSection)); + + let prependBody = ` event.detail.forEach(line => void (stdOut += line, combined += line))); + php.addEventListener('error', event => event.detail.forEach(line => void (stdErr += line, combined += line))); + + await php.binary; + + const exitCode = await php.run([ + '-d', `auto_prepend_file=${runtimeDir}/${path.basename(prependHost)}`, + ]); + const actual = normalizeExpectation(combined); + const expected = getExpectation(sections); + const matchedActual = assertExpectationMatches(expected, actual) ?? actual; + + await fs.rm(tempDir, { recursive: true, force: true }); + + return { actual: matchedActual, expected, exitCode, sections, stdErr, stdOut }; +}; + +module.exports = { + runCliPhpt, +}; diff --git a/test/lib/phpt.mjs b/test/lib/phpt.mjs new file mode 100644 index 000000000..0433f7bbd --- /dev/null +++ b/test/lib/phpt.mjs @@ -0,0 +1,571 @@ +import fs from 'node:fs/promises'; +import os from 'node:os'; +import path from 'node:path'; +import { strict as assert } from 'node:assert'; + +import { PhpCliNode } from '../../packages/php-cli-wasm/PhpCliNode.mjs'; +import { getPackage, getSupportPackage } from './extension-assets.mjs'; +import { nodeRuntimeOptions, resolveNodeTestEnv } from './node-runtime-options.mjs'; +const normalize = text => String(text ?? '').replace(/\r\n/g, '\n'); +const normalizeExpectation = text => normalize(text).trim(); +const normalizeActualCandidates = text => { + const normalized = normalizeExpectation(text); + const withoutTrailingStackTrace = normalized.replace(/\nStack trace:\n(?:#\d+[^\n]*(?:\n|$))+$/u, ''); + + return withoutTrailingStackTrace !== normalized + ? [normalized, withoutTrailingStackTrace] + : [normalized]; +}; +const extensionPackageMap = new Map([ + ['dom', ['libxml', 'dom']] + , ['gd', ['zlib']] + , ['iconv', ['iconv']] + , ['intl', ['intl']] + , ['mbstring', ['mbstring']] + , ['openssl', ['openssl']] + , ['pdo_sqlite', ['sqlite']] + , ['phar', ['phar']] + , ['simplexml', ['libxml', 'simplexml']] + , ['sqlite3', ['sqlite']] + , ['tidy', ['tidy']] + , ['xml', ['libxml', 'xml']] + , ['xmlreader', ['libxml', 'dom', 'xmlreader']] + , ['xmlwriter', ['libxml', 'xmlwriter']] + , ['yaml', ['yaml']] + , ['zip', ['zlib', 'libzip']] + , ['zlib', ['zlib']] +]); +const packageBuildFlagMap = { + dom: 'WITH_DOM' + , gd: 'WITH_GD' + , iconv: 'WITH_ICONV' + , intl: 'WITH_INTL' + , libxml: 'WITH_LIBXML' + , libzip: 'WITH_LIBZIP' + , mbstring: 'WITH_MBSTRING' + , openssl: 'WITH_OPENSSL' + , phar: 'WITH_PHAR' + , simplexml: 'WITH_SIMPLEXML' + , sqlite: 'WITH_SQLITE' + , tidy: 'WITH_TIDY' + , xml: 'WITH_XML' + , xmlreader: 'WITH_XMLREADER' + , xmlwriter: 'WITH_XMLWRITER' + , yaml: 'WITH_YAML' + , zlib: 'WITH_ZLIB' +}; +const parsePhpt = source => { + const sections = {}; + let currentSection = null; + + for(const line of normalize(source).split('\n')) + { + const section = line.match(/^--([A-Z_]+)(?:--)?$/); + + if(section) + { + currentSection = section[1]; + sections[currentSection] = ''; + continue; + } + + if(currentSection) + { + sections[currentSection] += line + '\n'; + } + } + + return sections; +}; + +const expectfTextToPattern = text => text + .replace(/[|\\{}()[\]^$+?.*]/g, '\\$&') + .replaceAll('%e', '[\\\\/]') + .replaceAll('%s', '[^\\r\\n]+') + .replaceAll('%S', '[^\\r\\n]*') + .replaceAll('%a', '[\\s\\S]+') + .replaceAll('%A', '[\\s\\S]*') + .replaceAll('%w', '\\s*') + .replaceAll('%i', '[+-]?\\d+') + .replaceAll('%d', '\\d+') + .replaceAll('%x', '[0-9a-fA-F]+') + .replaceAll('%f', '[+-]?(?:\\d+\\.?\\d*|\\.\\d+)(?:[Ee][+-]?\\d+)?') + .replaceAll('%c', '.'); + +const expectfToRegExp = expectf => { + const source = normalize(expectf); + let pattern = ''; + let cursor = 0; + + while(cursor < source.length) + { + const regexStart = source.indexOf('%r', cursor); + + if(regexStart === -1) + { + pattern += expectfTextToPattern(source.slice(cursor)); + break; + } + + pattern += expectfTextToPattern(source.slice(cursor, regexStart)); + + const regexEnd = source.indexOf('%r', regexStart + 2); + + if(regexEnd === -1) + { + pattern += expectfTextToPattern(source.slice(regexStart)); + break; + } + + pattern += `(?:${source.slice(regexStart + 2, regexEnd)})`; + cursor = regexEnd + 2; + } + + return new RegExp(`^${pattern}$`); +}; + +const stripHtmlErrorFormatting = text => normalize(text) + .replace(/\s*\[
[^<]*<\/a>\]/g, '') + .replace(/
/g, '') + .replace(/<\/?b>/g, '') + .replace(/<\/?a[^>]*>/g, '') + .replace(/:\s{2,}/g, ': '); + +const expectationVariants = expected => { + const variants = [expected]; + + if(!/[<][^>]+[>]/.test(expected.value)) + { + return variants; + } + + const stripped = normalizeExpectation(stripHtmlErrorFormatting(expected.value)); + + if(stripped && stripped !== expected.value) + { + variants.push({ ...expected, value: stripped }); + } + + return variants; +}; + +const getExpectation = sections => { + if('EXPECT' in sections) + { + return { type: 'EXPECT', value: normalizeExpectation(sections.EXPECT) }; + } + + if('EXPECTF' in sections) + { + return { type: 'EXPECTF', value: normalizeExpectation(sections.EXPECTF) }; + } + + if('EXPECTREGEX' in sections) + { + return { type: 'EXPECTREGEX', value: normalizeExpectation(sections.EXPECTREGEX) }; + } + + throw new Error('PHPT is missing EXPECT, EXPECTF, or EXPECTREGEX'); +}; + +const expectationMatches = (expected, actual) => { + return expectationVariants(expected).some(variant => { + if(variant.type === 'EXPECT') + { + return actual === variant.value; + } + + if(variant.type === 'EXPECTF') + { + return expectfToRegExp(variant.value).test(actual); + } + + return new RegExp(variant.value).test(actual); + }); +}; + +const assertExpectationMatches = (expected, actual) => { + for(const candidate of normalizeActualCandidates(actual)) + { + if(expectationMatches(expected, candidate)) + { + return candidate; + } + } + + if(expected.type === 'EXPECT') + { + assert.equal(actual, expected.value); + } + else if(expected.type === 'EXPECTF') + { + assert.match(actual, expectfToRegExp(expectationVariants(expected).at(-1).value)); + } + else + { + assert.match(actual, new RegExp(expectationVariants(expected).at(-1).value)); + } +}; + +const collectFixtureFiles = async (rootDir, currentDir = rootDir, relativeDir = '') => { + const entries = await fs.readdir(currentDir, { withFileTypes: true }); + const files = []; + + for(const entry of entries) + { + const hostPath = path.join(currentDir, entry.name); + const relativePath = path.posix.join(relativeDir, entry.name); + + if(entry.isDirectory()) + { + files.push(...await collectFixtureFiles(rootDir, hostPath, relativePath)); + continue; + } + + if(!entry.isFile() || entry.name.endsWith('.phpt')) + { + continue; + } + + files.push({ + parent: path.posix.join('/preload/phpt', path.posix.dirname(relativePath)).replace(/\/\.$/, ''), + name: path.posix.basename(relativePath), + url: `file://${hostPath}` + }); + } + + return files; +}; + +const substitutePhptPathTokens = (text, phptDir) => String(text ?? '') + .replaceAll('{PWD}', phptDir); + +const parsePhpStringLiteral = value => { + const trimmed = String(value ?? '').trim(); + + if((trimmed.startsWith('"') && trimmed.endsWith('"')) || (trimmed.startsWith('\'') && trimmed.endsWith('\''))) + { + return trimmed.slice(1, -1); + } + + return trimmed; +}; + +const quotePhpSingle = value => `'${String(value).replace(/\\/g, '\\\\').replace(/'/g, '\\\'')}'`; + +const parseIniSettings = (iniSection, phptDir) => { + const lines = []; + let autoPrependFile = null; + + for(const line of normalize(iniSection).split('\n').map(line => line.trim()).filter(Boolean)) + { + const substituted = substitutePhptPathTokens(line, phptDir); + const autoPrependMatch = substituted.match(/^auto_prepend_file\s*=(.*)$/); + + if(autoPrependMatch) + { + autoPrependFile = parsePhpStringLiteral(autoPrependMatch[1]); + continue; + } + + lines.push(substituted); + } + + return { lines, autoPrependFile }; +}; + +const parseExtensions = extensionSection => [...new Set( + normalize(extensionSection) + .split(/\s+/) + .map(name => name.trim().toLowerCase()) + .filter(Boolean) +)]; + +const inferExtensionsFromSkipif = skipifSection => [...new Set( + [...normalize(skipifSection ?? '').matchAll(/extension_loaded\s*\(\s*["']([^"']+)["']\s*\)/g)] + .map(([, extensionName]) => extensionName.trim().toLowerCase()) + .filter(Boolean) +)]; + +const inferExtensionSection = phptFile => { + const normalized = phptFile.replace(/\\/g, '/'); + const match = normalized.match(/\/ext\/([^/]+)\/tests\//); + + if(!match) + { + return null; + } + + return match[1].toLowerCase(); +}; + +const collectReferencedRelativeFiles = async ({ fileBody, phptDir, runtimeDir }) => { + const files = []; + const seen = new Set(); + const stringLiteralPattern = /(['"])([^'"\\]*(?:\\.[^'"\\]*)*)\1/g; + + for(const match of normalize(fileBody).matchAll(stringLiteralPattern)) + { + const literal = match[2]; + const relativeLiteral = literal.startsWith('/../') || literal.startsWith('/./') + ? `.${literal}` + : literal; + + if(!relativeLiteral || relativeLiteral.startsWith('php://') || relativeLiteral.startsWith('http://') || relativeLiteral.startsWith('https://')) + { + continue; + } + + if(!relativeLiteral.startsWith('./') && !relativeLiteral.startsWith('../')) + { + continue; + } + + const hostPath = path.resolve(phptDir, relativeLiteral); + let stat; + + try + { + stat = await fs.stat(hostPath); + } + catch + { + continue; + } + + if(!stat.isFile()) + { + continue; + } + + const virtualPath = path.posix.normalize(path.posix.join(runtimeDir, relativeLiteral)); + + if(seen.has(virtualPath)) + { + continue; + } + + seen.add(virtualPath); + + files.push({ + parent: path.posix.dirname(virtualPath) + , name: path.posix.basename(virtualPath) + , url: `file://${hostPath}` + }); + } + + return files; +}; + +const attachOutput = php => { + let stdOut = ''; + let stdErr = ''; + + php.addEventListener('output', event => event.detail.forEach(line => void (stdOut += line))); + php.addEventListener('error', event => event.detail.forEach(line => void (stdErr += line))); + + return { + stdOut: () => stdOut + , stdErr: () => stdErr + }; +}; + +const probeLoadedExtensions = async ({ version, phpOptions = {} }) => { + const php = new PhpCliNode(nodeRuntimeOptions({ + ...phpOptions + , runtime: 'cli' + , version + , code: 'echo json_encode(array_map("strtolower", get_loaded_extensions()));' + })); + const { stdOut, stdErr } = attachOutput(php); + + await php.binary; + + const exitCode = await php.run(); + + assert.equal(exitCode, 0, `Extension probe failed for PHP ${version}: ${stdErr()}`); + assert.equal(stdErr(), '', `Extension probe emitted stderr for PHP ${version}`); + + return new Set(JSON.parse(stdOut())); +}; + +const resolveExtensionPackages = async ({ sections, version, phpOptions = {} }) => { + if(!sections.EXTENSIONS) + { + return []; + } + + const requestedExtensions = parseExtensions(sections.EXTENSIONS); + + if(!requestedExtensions.length) + { + return []; + } + + const loadedExtensions = await probeLoadedExtensions({ version, phpOptions }); + const extraPackages = []; + const seenPackages = new Set(); + const resolvedEnv = resolveNodeTestEnv({ runtime: 'cli', version, ...phpOptions }); + + for(const extensionName of requestedExtensions) + { + if(loadedExtensions.has(extensionName)) + { + continue; + } + + let packages = extensionPackageMap.get(extensionName); + + if(!packages?.length) + { + throw new Error(`Unsupported unloaded PHPT extension requirement: ${extensionName}`); + } + + const buildFlag = ({ + dom: 'WITH_DOM' + , gd: 'WITH_GD' + , iconv: 'WITH_ICONV' + , intl: 'WITH_INTL' + , mbstring: 'WITH_MBSTRING' + , openssl: 'WITH_OPENSSL' + , pdo_sqlite: 'WITH_SQLITE' + , phar: 'WITH_PHAR' + , simplexml: 'WITH_SIMPLEXML' + , sqlite3: 'WITH_SQLITE' + , tidy: 'WITH_TIDY' + , xml: 'WITH_XML' + , xmlreader: 'WITH_XMLREADER' + , xmlwriter: 'WITH_XMLWRITER' + , yaml: 'WITH_YAML' + , zip: 'WITH_LIBZIP' + , zlib: 'WITH_ZLIB' + })[extensionName]; + + if(buildFlag && resolvedEnv[buildFlag] === '0') + { + throw new Error(`Required extension ${extensionName} is disabled by ${buildFlag}=0`); + } + + if(extensionName === 'intl' && resolvedEnv.WITH_INTL === 'shared') + { + if(!seenPackages.has('intl-support')) + { + seenPackages.add('intl-support'); + extraPackages.push(getSupportPackage('intl', version)); + } + + continue; + } + + for(const packageKey of packages) + { + const packageBuildFlag = packageBuildFlagMap[packageKey]; + const packageBuildMode = packageBuildFlag ? resolvedEnv[packageBuildFlag] : undefined; + + if(packageBuildMode === 'shared' || packageBuildMode === 'static') + { + continue; + } + + if(seenPackages.has(packageKey)) + { + continue; + } + + seenPackages.add(packageKey); + extraPackages.push(getPackage(packageKey, version)); + } + } + + return extraPackages; +}; + +export const runCliPhpt = async ({ phptFile, version, phpOptions = {} }) => { + const source = await fs.readFile(phptFile, 'utf8'); + const sections = parsePhpt(source); + const phptDir = path.dirname(phptFile); + const phptBase = path.basename(phptFile, '.phpt'); + const runtimeDir = '/preload/phpt'; + const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), `phpt-${phptBase}-`)); + const subjectHost = path.join(tempDir, `${phptBase}.php`); + const prependHost = path.join(tempDir, `prepend-${phptBase}.php`); + const iniSettings = sections.INI ? parseIniSettings(sections.INI, phptDir) : { lines: [], autoPrependFile: null }; + + const fileSection = sections.FILE ?? sections.FILEEOF; + + if(!fileSection) + { + throw new Error(`PHPT is missing FILE/FILEEOF section: ${phptFile}`); + } + + if(!sections.EXTENSIONS) + { + const inferredExtensions = new Set(inferExtensionsFromSkipif(sections.SKIPIF)); + const inferredExtension = inferExtensionSection(phptFile); + + if(inferredExtension) + { + inferredExtensions.add(inferredExtension); + } + + if(inferredExtensions.size) + { + sections.EXTENSIONS = `${[...inferredExtensions].join('\n')}\n`; + } + } + + await fs.writeFile(subjectHost, normalize(fileSection)); + + let prependBody = ` event.detail.forEach(line => void (stdOut += line, combined += line))); + php.addEventListener('error', event => event.detail.forEach(line => void (stdErr += line, combined += line))); + + await php.binary; + + const exitCode = await php.run([ + '-d', `auto_prepend_file=${runtimeDir}/${path.basename(prependHost)}`, + ]); + const actual = normalizeExpectation(combined); + const expected = getExpectation(sections); + const matchedActual = assertExpectationMatches(expected, actual) ?? actual; + + await fs.rm(tempDir, { recursive: true, force: true }); + + return { actual: matchedActual, expected, exitCode, sections, stdErr, stdOut }; +}; diff --git a/test/lib/playwright-browser.mjs b/test/lib/playwright-browser.mjs new file mode 100644 index 000000000..a285f2b2a --- /dev/null +++ b/test/lib/playwright-browser.mjs @@ -0,0 +1,44 @@ +import fs from 'node:fs'; + +const linuxCandidates = [ + '/usr/bin/chromium', + '/usr/bin/chromium-browser', + '/usr/bin/google-chrome', + '/usr/bin/google-chrome-stable', +]; + +const macCandidates = [ + '/Applications/Chromium.app/Contents/MacOS/Chromium', + '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', +]; + +export const resolvePlaywrightExecutablePath = () => { + const envCandidates = [ + process.env.PLAYWRIGHT_CHROMIUM_PATH, + process.env.CHROMIUM_BIN, + process.env.CHROME_BIN, + ]; + + const platformCandidates = process.platform === 'darwin' + ? macCandidates + : linuxCandidates; + + return [...envCandidates, ...platformCandidates] + .find(candidate => candidate && fs.existsSync(candidate)); +}; + +export const getPlaywrightLaunchOptions = () => { + const executablePath = resolvePlaywrightExecutablePath(); + const headless = !Boolean(Number(process.env.TEST_VISIBLE ?? 0)); + + return { + headless, + launchOptions: { + ...(executablePath ? { executablePath } : {}) + , args: [ + '--no-sandbox', + ...(headless ? ['--disable-gpu'] : []) + ] + } + }; +}; diff --git a/test/node-cgi-test.sh b/test/node-cgi-test.sh index 292873109..b0f5922d0 100755 --- a/test/node-cgi-test.sh +++ b/test/node-cgi-test.sh @@ -1,25 +1,54 @@ #!/usr/bin/env bash -set -eux; +set -euo pipefail PORT=9001 -export CI= +export CI="${CI:-}" +STARTUP_TIMEOUT_SECONDS="${CGI_NODE_TEST_STARTUP_TIMEOUT_SECONDS:-45}" +NODE_IMAGE="${CGI_NODE_TEST_IMAGE:-node:24}" +TEST_FORMAT="${TEST_FORMAT:-mjs}" +SERVER_FILE="test/cgi-node/server.${TEST_FORMAT}" +TEST_FILE="test/cgi-node/cgi-node.test.${TEST_FORMAT}" -set +e; -docker kill php-cgi-wasm-test-node; -set -e; +docker kill php-cgi-wasm-test-node >/dev/null 2>&1 || true HOST_DIR="${PWD}" MOUNTED_DIR="/app" +docker_env=( + -e "PHP_VERSION=${PHP_VERSION}" + -e "LIB_TYPE=${LIB_TYPE:-}" + -e "CGI_NODE_TEST_PORT=3003" +) -docker run --rm --name php-cgi-wasm-test-node -e PHP_VERSION=${PHP_VERSION} -e BUILD_TYPE=${BUILD_TYPE} -p ${PORT}:3003 -v ${HOST_DIR}:${MOUNTED_DIR} -w /app node:24 npm start --prefix demo-node/ & +while IFS='=' read -r env_name _; do + docker_env+=(-e "${env_name}=${!env_name}") +done < <(env | grep '^WITH_' | sort) + +docker pull "${NODE_IMAGE}" >/dev/null + +docker run --rm --name php-cgi-wasm-test-node "${docker_env[@]}" -p ${PORT}:3003 -v ${HOST_DIR}:${MOUNTED_DIR} -w /app "${NODE_IMAGE}" node "${SERVER_FILE}" & +docker_run_pid=$! trap "docker kill php-cgi-wasm-test-node" 0; -set +x; -while ! nc -z localhost ${PORT}; do +deadline=$((SECONDS + STARTUP_TIMEOUT_SECONDS)) +until docker exec php-cgi-wasm-test-node sh -lc 'wget -qO- http://127.0.0.1:3003/php-wasm/cgi-bin/test/version.php >/dev/null' >/dev/null 2>&1; do + if ! kill -0 "${docker_run_pid}" >/dev/null 2>&1; then + echo "php-cgi-wasm-test-node exited before becoming ready." >&2 + docker logs php-cgi-wasm-test-node >&2 || true + exit 1 + fi + + if (( SECONDS >= deadline )); then + echo "Timed out after ${STARTUP_TIMEOUT_SECONDS}s waiting for CGI Node server readiness." >&2 + docker logs php-cgi-wasm-test-node >&2 || true + exit 1 + fi + sleep 0.1 done -set -x; - -sleep 5; -PHP_VERSION=${PHP_VERSION} npx cvtest test/NodeCgiTest.mjs; +docker exec \ + -e PHP_VERSION="${PHP_VERSION}" \ + -e LIB_TYPE="${LIB_TYPE:-}" \ + -e CGI_NODE_TEST_PORT=3003 \ + php-cgi-wasm-test-node \ + node --test "${TEST_FILE}" diff --git a/test/packaging.test.mjs b/test/packaging.test.mjs new file mode 100644 index 000000000..22e272983 --- /dev/null +++ b/test/packaging.test.mjs @@ -0,0 +1,94 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import { execFileSync } from 'node:child_process'; +import { fileURLToPath } from 'node:url'; +import { test } from 'node:test'; +import { strict as assert } from 'node:assert'; + +const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); +const packageDirs = [ + 'packages/php-wasm', + 'packages/php-cgi-wasm', + 'packages/php-cli-wasm', + 'packages/php-dbg-wasm', +]; + +function packFiles(packageDir) +{ + const output = execFileSync( + 'npm', + ['pack', '--dry-run', `./${packageDir}`, '--json'], + { + cwd: repoRoot, + encoding: 'utf8', + maxBuffer: 16 * 1024 * 1024, + } + ); + const [result] = JSON.parse(output); + + return new Set(result.files.map(file => file.path)); +} + +function addTarget(targets, value) +{ + if(typeof value !== 'string' || value.includes('*')) + { + return; + } + + targets.add(value.replace(/^\.\//, '')); +} + +function collectExportTargets(targets, value) +{ + if(typeof value === 'string') + { + addTarget(targets, value); + return; + } + + if(!value || typeof value !== 'object') + { + return; + } + + for(const nestedValue of Object.values(value)) + { + collectExportTargets(targets, nestedValue); + } +} + +function collectPackageTargets(packageJson) +{ + const targets = new Set; + + addTarget(targets, packageJson.main); + addTarget(targets, packageJson.module); + addTarget(targets, packageJson.types); + + for(const exportValue of Object.values(packageJson.exports ?? {})) + { + collectExportTargets(targets, exportValue); + } + + return targets; +} + +test('package metadata only references files that ship in the npm tarballs', () => { + for(const packageDir of packageDirs) + { + const packageJson = JSON.parse( + fs.readFileSync(path.join(repoRoot, packageDir, 'package.json'), 'utf8') + ); + const tarballFiles = packFiles(packageDir); + const metadataTargets = collectPackageTargets(packageJson); + + for(const target of metadataTargets) + { + assert.ok( + tarballFiles.has(target), + `${packageJson.name} metadata target is missing from npm pack output: ${target}` + ); + } + } +}); diff --git a/test/stdlib.mjs b/test/stdlib.mjs index c5597601d..3e591653a 100644 --- a/test/stdlib.mjs +++ b/test/stdlib.mjs @@ -2,8 +2,9 @@ import { test } from 'node:test'; import { strict as assert } from 'node:assert'; const phpVersion = process.env.PHP_VERSION ?? '8.4'; +const stdlibEnabled = process.env.WITH_LIBXML === 'dynamic'; -if(['8.4', '8.3', '8.2',].includes(phpVersion)) { +if(stdlibEnabled && ['8.4', '8.3', '8.2',].includes(phpVersion)) { const { microtime, date, sprintf, json_decode } = await import(`../packages/php-wasm/stdlib/${phpVersion}-node.mjs`); test('Can use PHP functions that return NUMBERS in JS', () => { @@ -34,3 +35,7 @@ if(['8.4', '8.3', '8.2',].includes(phpVersion)) { assert.equal( x["a"], 1 ); }); } +else +{ + test('stdlib is only generated for dynamic 8.2-8.4 builds', { skip: true }, () => {}); +}