From 3f07859ca60582a29d3a4e66c2114b18790c0c92 Mon Sep 17 00:00:00 2001 From: goldenapples Date: Fri, 4 Sep 2026 14:57:00 -0400 Subject: [PATCH 01/15] Add CI workflows and lint/test suites --- .github/workflows/ci.yml | 123 +++++++++ .github/workflows/deploy-docs.yml | 59 ++++ .github/workflows/publish.yml | 65 +++++ .github/workflows/tag-and-release.yml | 93 +++++++ .wp-env.json | 12 + eslint.config.mjs | 62 +++++ phpcs.xml | 17 ++ phpstan.neon.dist | 22 ++ phpunit.xml.dist | 15 + tests/js/config.test.mjs | 292 ++++++++++++++++++++ tests/js/manifest.test.mjs | 317 +++++++++++++++++++++ tests/js/markdown.test.mjs | 381 ++++++++++++++++++++++++++ tests/php/access-test.php | 143 ++++++++++ tests/php/bootstrap.php | 39 +++ tests/php/manifest-test.php | 169 ++++++++++++ tests/php/render-test.php | 362 ++++++++++++++++++++++++ 16 files changed, 2171 insertions(+) create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/deploy-docs.yml create mode 100644 .github/workflows/publish.yml create mode 100644 .github/workflows/tag-and-release.yml create mode 100644 .wp-env.json create mode 100644 eslint.config.mjs create mode 100644 phpcs.xml create mode 100644 phpstan.neon.dist create mode 100644 phpunit.xml.dist create mode 100644 tests/js/config.test.mjs create mode 100644 tests/js/manifest.test.mjs create mode 100644 tests/js/markdown.test.mjs create mode 100644 tests/php/access-test.php create mode 100644 tests/php/bootstrap.php create mode 100644 tests/php/manifest-test.php create mode 100644 tests/php/render-test.php diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..901b20a --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,123 @@ +name: CI + +on: + push: + branches: [ main ] + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + php: + name: PHP ${{ matrix.php }} — lint, analyse + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + # The floor is what composer.json requires; the ceiling is what a current + # Altis or VIP environment actually runs. + php: [ '8.1', '8.4' ] + + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + + - name: Set up PHP + uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # 2.37.2 + with: + php-version: ${{ matrix.php }} + coverage: none + tools: composer:v2 + + - name: Install dependencies + uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # 4.0.0 + + - name: PHPCS + run: composer lint + + - name: PHPStan + run: composer analyze + + php-tests: + name: PHPUnit + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + node-version: 24 + cache: npm + + - name: Set up PHP + uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # 2.37.2 + with: + php-version: '8.1' + coverage: none + tools: composer:v2 + + - name: Install dependencies + uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # 4.0.0 + + - run: npm ci + + # The plugin is glue over the pattern registry, the block renderer and the + # roles API, so the suite runs against a real WordPress rather than mocks. + # wp-env brings that up in Docker, which the runner already provides. + - name: Start WordPress + run: npm run env:start + + - name: PHPUnit + run: npm run test:php + + - name: WordPress debug log + if: failure() + run: npx wp-env run tests-cli -- cat /var/www/html/wp-content/debug.log || true + + javascript: + name: JavaScript — lint, test + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + node-version: 24 + cache: npm + + - run: npm ci + + - name: ESLint + run: npm run lint:js + + - name: Node test runner + run: npm run test:js + + versions: + name: Versions agree + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + + # One tag drives the Composer package, the npm package and the action, so a + # manifest served by one version and read by another is the failure mode + # this check exists to prevent. See CONTRIBUTING.md. + - name: package.json and plugin.php declare the same version + run: | + npm_version="$(node -p "require('./package.json').version")" + plugin_version="$(sed -n 's/^ \* Version: *//p' plugin.php | head -1 | tr -d '[:space:]')" + + echo "package.json: ${npm_version}" + echo "plugin.php: ${plugin_version}" + + if [ "${npm_version}" != "${plugin_version}" ]; then + echo "::error file=plugin.php::Version mismatch: package.json says ${npm_version}, plugin.php says ${plugin_version}." + exit 1 + fi diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml new file mode 100644 index 0000000..8e23f9e --- /dev/null +++ b/.github/workflows/deploy-docs.yml @@ -0,0 +1,59 @@ +name: Deploy documentation to GitHub Pages + +on: + push: + branches: [ main ] + paths: + - 'docs/**' + - '.github/workflows/deploy-docs.yml' + workflow_dispatch: + +# Enough for the deployment to GitHub Pages, and no more. +permissions: + contents: read + pages: write + id-token: write + +# One deployment at a time; a newer push supersedes an in-flight one. +concurrency: + group: pages + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + + - name: Set up Ruby + uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 + with: + working-directory: ./docs + ruby-version: '3.3' + bundler-cache: true + + - name: Set up Pages + id: pages + uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0 + + - name: Build with Jekyll + working-directory: ./docs + env: + JEKYLL_ENV: production + run: bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}" + + - name: Upload artifact + uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0 + with: + path: ./docs/_site + + deploy: + needs: build + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@368f82528645a54fb793d4d04e342629a3f51346 # v5.0.1 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..1f4b42c --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,65 @@ +# Publish the npm package when a release is published. +# +# Packagist needs nothing here: it picks `humanmade/wp-pattern-library` up from +# the same tag through its GitHub hook. This workflow covers the other half of +# the pair, so one tag really does mean the same code in both registries. +# +# Requires an NPM_TOKEN repository secret — an automation token for an account +# that can publish to the @humanmade scope. + +name: Publish to npm + +on: + release: + types: [ published ] + workflow_dispatch: + +permissions: + contents: read + # Required by `npm publish --provenance`, which signs the published tarball + # with an attestation tying it back to this workflow run and commit. + id-token: write + +jobs: + npm: + name: npm publish + runs-on: ubuntu-latest + environment: npm + + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + ref: ${{ github.event.release.tag_name || github.ref }} + + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + node-version: 24 + registry-url: https://registry.npmjs.org + cache: npm + + - run: npm ci + + # Publishing is irreversible, so the gate that CI applies to every pull + # request is applied once more against the actual tag being released. + - name: The tag, package.json and plugin.php agree + run: | + set -euo pipefail + + tag="${{ github.event.release.tag_name }}" + npm_version="$(node -p "require('./package.json').version")" + plugin_version="$(sed -n 's/^ \* Version: *//p' plugin.php | head -1 | tr -d '[:space:]')" + + if [ -n "${tag}" ] && [ "${tag#v}" != "${npm_version}" ]; then + echo "::error::Tag ${tag} does not match package.json ${npm_version}." + exit 1 + fi + + if [ "${plugin_version}" != "${npm_version}" ]; then + echo "::error::plugin.php ${plugin_version} does not match package.json ${npm_version}." + exit 1 + fi + + - name: Publish + run: npm publish --access public --provenance + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/tag-and-release.yml b/.github/workflows/tag-and-release.yml new file mode 100644 index 0000000..fd9bab6 --- /dev/null +++ b/.github/workflows/tag-and-release.yml @@ -0,0 +1,93 @@ +# Cut a release: tag the target branch, then publish a GitHub release from it. +# +# Publishing to npm and Packagist is handled by publish.yml, which runs when the +# release this workflow creates is published. +# +# NOTE: this duplicates the "Tag and Release" workflow copied into ~23 Human Made +# plugin repositories. It is being centralized as a reusable workflow in +# humanmade/hm-github-actions (PR #21). Once that has merged and been tagged, the +# body of this file should collapse to a call: +# +# jobs: +# tag_and_release: +# permissions: +# contents: write +# uses: humanmade/hm-github-actions/.github/workflows/tag-and-release.yml@ # vX.Y.Z +# with: +# version: ${{ inputs.version }} +# target_branch: ${{ inputs.target_branch }} +# +# It is kept self-contained until then so the release path works today. + +name: Tag and Release + +on: + workflow_dispatch: + inputs: + version: + description: 'Version tag, e.g. v0.4.0. Must match package.json and plugin.php.' + required: true + target_branch: + description: 'Branch to tag.' + default: main + required: true + +permissions: + contents: write + +jobs: + tag_and_release: + name: Tag and Release + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + ref: ${{ inputs.target_branch }} + fetch-depth: 0 + + # One tag drives the Composer package, the npm package and the action, so + # they have to agree before the tag exists — afterwards it is too late. + - name: Check the tag is new and the versions agree + run: | + set -euo pipefail + + version="${{ inputs.version }}" + + if [ -z "${version##v*}" ]; then + bare="${version#v}" + else + echo "::error::Version must be tag-shaped, e.g. v0.4.0; got ${version}." + exit 1 + fi + + if git ls-remote --tags --exit-code origin "refs/tags/${version}" >/dev/null 2>&1; then + echo "::error::Tag ${version} already exists." + exit 1 + fi + + npm_version="$(node -p "require('./package.json').version")" + plugin_version="$(sed -n 's/^ \* Version: *//p' plugin.php | head -1 | tr -d '[:space:]')" + + if [ "${npm_version}" != "${bare}" ] || [ "${plugin_version}" != "${bare}" ]; then + echo "::error::Version mismatch. Tag ${version}, package.json ${npm_version}, plugin.php ${plugin_version}." + exit 1 + fi + + - name: Create and push the tag + run: | + set -euo pipefail + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + git tag "${{ inputs.version }}" + git push origin "${{ inputs.version }}" + + - name: Create the GitHub release + uses: ncipollo/release-action@339a81892b84b4eeb0f6e744e4574d79d0d9b8dd # v1.21.0 + with: + tag: ${{ inputs.version }} + name: ${{ inputs.version }} + generateReleaseNotes: true + draft: false + prerelease: false + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.wp-env.json b/.wp-env.json new file mode 100644 index 0000000..6d6a97f --- /dev/null +++ b/.wp-env.json @@ -0,0 +1,12 @@ +{ + "phpVersion": "8.2", + "plugins": [ + "." + ], + "config": { + "WP_DEBUG": true, + "WP_DEBUG_LOG": true, + "SCRIPT_DEBUG": true, + "WP_ENVIRONMENT_TYPE": "local" + } +} diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..713b094 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,62 @@ +/** + * Lint configuration for the Node half of the package — the CLI in `bin/` and + * the modules in `src/` that npm publishes. + * + * The WordPress plugin's PHP is covered by phpcs.xml and phpstan.neon.dist; this + * file has nothing to say about it. + */ + +import globals from 'globals'; +import wordpress from '@wordpress/eslint-plugin'; + +export default [ + { + ignores: [ 'node_modules/**', 'vendor/**', 'docs/**' ], + }, + + ...wordpress.configs[ 'recommended-with-formatting' ].map( ( config ) => ( { + ...config, + files: [ 'bin/**/*.mjs', 'src/**/*.mjs', 'tests/**/*.mjs', 'eslint.config.mjs' ], + } ) ), + + { + files: [ 'bin/**/*.mjs', 'src/**/*.mjs', 'tests/**/*.mjs', 'eslint.config.mjs' ], + languageOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + globals: { + ...globals.node, + }, + }, + rules: { + // This package ships no WordPress-facing JavaScript, so there is + // nothing to translate and no i18n runtime to call into. + '@wordpress/i18n-text-domain': 'off', + '@wordpress/i18n-translator-comments': 'off', + '@wordpress/no-unused-vars-before-return': 'off', + + // The CLI is a Node program, not a browser bundle: it reads + // process.env and writes to stdout by design. + 'no-console': 'off', + + // Resolved against the published `dependencies`, not a bundler. + 'import/no-unresolved': 'off', + 'import/no-extraneous-dependencies': 'off', + + // Every exported function here carries a docblock; enforce it. + 'jsdoc/require-param': 'error', + 'jsdoc/require-returns': 'off', + }, + }, + + { + // Playwright evaluates these in the page, where `document` is the point. + files: [ 'src/animations.mjs', 'src/capture.mjs' ], + languageOptions: { + globals: { + ...globals.node, + ...globals.browser, + }, + }, + }, +]; diff --git a/phpcs.xml b/phpcs.xml new file mode 100644 index 0000000..871320d --- /dev/null +++ b/phpcs.xml @@ -0,0 +1,17 @@ + + + Coding standards for the WordPress half of the pattern library generator. + + + + . + + /vendor/* + /node_modules/* + + + + + + + diff --git a/phpstan.neon.dist b/phpstan.neon.dist new file mode 100644 index 0000000..b6fd14f --- /dev/null +++ b/phpstan.neon.dist @@ -0,0 +1,22 @@ +includes: + - vendor/szepeviktor/phpstan-wordpress/extension.neon + +parameters: + level: 5 + paths: + - plugin.php + - inc + bootstrapFiles: + - vendor/php-stubs/wordpress-stubs/wordpress-stubs.php + - vendor/php-stubs/wp-cli-stubs/wp-cli-stubs.php + scanDirectories: + - vendor/php-stubs + ignoreErrors: + # wp_style_engine_get_styles() builds its return array key by key and ends + # on array_filter(), so `css` is absent whenever nothing it understood was + # asked for. wordpress-stubs types the key as always present; core (see + # wp-includes/style-engine.php) does not agree, and dropping the guard + # would turn an unstyled wrapper into a fatal. Scoped to the one call. + - + identifier: nullCoalesce.offset + path: inc/render.php diff --git a/phpunit.xml.dist b/phpunit.xml.dist new file mode 100644 index 0000000..2de7259 --- /dev/null +++ b/phpunit.xml.dist @@ -0,0 +1,15 @@ + + + + + ./tests/php/ + + + diff --git a/tests/js/config.test.mjs b/tests/js/config.test.mjs new file mode 100644 index 0000000..1a80c62 --- /dev/null +++ b/tests/js/config.test.mjs @@ -0,0 +1,292 @@ +/** + * Configuration loading: defaults, layering, and the validation that turns a + * config-file typo into an error rather than a surprising capture run. + */ + +import { test, describe, beforeEach, afterEach } from 'node:test'; +import assert from 'node:assert/strict'; +import { mkdtemp, writeFile, rm } from 'node:fs/promises'; +import { tmpdir } from 'node:os'; +import { join, isAbsolute } from 'node:path'; + +import { loadConfig, requireConfig, flatClassify } from '../../src/config.mjs'; + +const ENV_KEYS = [ + 'PATTERN_LIBRARY_SITE', + 'PATTERN_LIBRARY_WP_USER', + 'PATTERN_LIBRARY_WP_APP_PASSWORD', + 'PATTERN_LIBRARY_EXTRA_HEADERS', +]; + +let cwd; +let savedEnv; + +beforeEach( async () => { + cwd = await mkdtemp( join( tmpdir(), 'pattern-library-config-' ) ); + savedEnv = Object.fromEntries( ENV_KEYS.map( ( key ) => [ key, process.env[ key ] ] ) ); + ENV_KEYS.forEach( ( key ) => delete process.env[ key ] ); +} ); + +afterEach( async () => { + await rm( cwd, { recursive: true, force: true } ); + for ( const [ key, value ] of Object.entries( savedEnv ) ) { + if ( value === undefined ) { + delete process.env[ key ]; + } else { + process.env[ key ] = value; + } + } +} ); + +/** + * Write a config file into the temporary project directory. + * + * Each file gets a unique name so Node's module cache cannot serve a previous + * test's config back to a later one. + * + * @param {string} source Module source for the config file. + * @return {Promise} The directory the config was written into. + */ +async function writeConfig( source ) { + const dir = await mkdtemp( join( cwd, 'project-' ) ); + await writeFile( join( dir, 'pattern-library.config.js' ), source ); + return dir; +} + +describe( 'loadConfig', () => { + test( 'applies defaults when there is no config file', async () => { + const config = await loadConfig( cwd ); + + assert.equal( config.title, 'Pattern Library' ); + assert.equal( config.imageFormat, 'webp' ); + assert.equal( config.defaultViewport, 1440 ); + assert.deepEqual( config.namespaces, [] ); + assert.equal( config.configPath, null ); + assert.equal( config.exclude.inserterHidden, true ); + assert.deepEqual( config.exclude.postTypes, [ 'wp_template', 'wp_template_part' ] ); + } ); + + test( 'resolves output paths to absolute paths under the working directory', async () => { + const config = await loadConfig( cwd ); + + assert.ok( isAbsolute( config.outputDir ) ); + assert.equal( config.outputDir, join( cwd, 'docs/pattern-library' ) ); + assert.equal( config.screenshotsDir, join( cwd, 'docs/pattern-library/screenshots' ) ); + assert.equal( config.indexFile, join( cwd, 'docs/pattern-library/README.md' ) ); + } ); + + test( 'reads a config file and records its path', async () => { + const dir = await writeConfig( + 'export default { title: "My Library", namespaces: [ "my-theme/" ] };', + ); + const config = await loadConfig( dir ); + + assert.equal( config.title, 'My Library' ); + assert.deepEqual( config.namespaces, [ 'my-theme/' ] ); + assert.equal( config.configPath, join( dir, 'pattern-library.config.js' ) ); + } ); + + test( 'merges `exclude` with the defaults rather than replacing it', async () => { + const dir = await writeConfig( + 'export default { exclude: { patterns: [ "my-theme/wip" ] } };', + ); + const config = await loadConfig( dir ); + + assert.deepEqual( config.exclude.patterns, [ 'my-theme/wip' ] ); + // Not clobbered by the partial override. + assert.equal( config.exclude.inserterHidden, true ); + assert.deepEqual( config.exclude.postTypes, [ 'wp_template', 'wp_template_part' ] ); + } ); + + test( 'takes credentials from the environment, and trims a trailing slash', async () => { + process.env.PATTERN_LIBRARY_SITE = 'https://example.com/'; + process.env.PATTERN_LIBRARY_WP_USER = 'bot'; + process.env.PATTERN_LIBRARY_WP_APP_PASSWORD = 'abcd efgh'; + + const config = await loadConfig( cwd ); + + assert.equal( config.siteUrl, 'https://example.com' ); + assert.equal( config.username, 'bot' ); + assert.equal( config.appPassword, 'abcd efgh' ); + } ); + + test( 'lets the environment win over the config file, and CLI flags over both', async () => { + process.env.PATTERN_LIBRARY_SITE = 'https://from-env.example'; + const dir = await writeConfig( 'export default { siteUrl: "https://from-file.example" };' ); + + assert.equal( ( await loadConfig( dir ) ).siteUrl, 'https://from-env.example' ); + assert.equal( + ( await loadConfig( dir, { siteUrl: 'https://from-flag.example' } ) ).siteUrl, + 'https://from-flag.example', + ); + } ); + + test( 'ignores empty overrides so they cannot mask a lower layer', async () => { + const dir = await writeConfig( 'export default { title: "Kept" };' ); + const config = await loadConfig( dir, { title: '', outputDir: undefined } ); + + assert.equal( config.title, 'Kept' ); + } ); + + test( 'defaults `classify` to one page per category in the output root', async () => { + const config = await loadConfig( cwd ); + + assert.equal( config.classify, flatClassify ); + assert.deepEqual( config.classify( { slug: 'hero', label: 'Hero' } ), { + kind: 'category', + dir: '.', + label: 'Hero', + } ); + } ); +} ); + +describe( 'extraHeaders', () => { + test( 'parses newline-delimited "Name: value" lines from the environment', async () => { + process.env.PATTERN_LIBRARY_EXTRA_HEADERS = + 'CF-Access-Client-Id: abc.access\nCF-Access-Client-Secret: shhh'; + + const config = await loadConfig( cwd ); + + assert.deepEqual( config.extraHeaders, { + 'CF-Access-Client-Id': 'abc.access', + 'CF-Access-Client-Secret': 'shhh', + } ); + } ); + + test( 'keeps colons in the value, splitting only on the first one', async () => { + process.env.PATTERN_LIBRARY_EXTRA_HEADERS = 'X-Origin: https://example.com:8443'; + + const config = await loadConfig( cwd ); + + assert.equal( config.extraHeaders[ 'X-Origin' ], 'https://example.com:8443' ); + } ); + + test( 'drops a bare "Name:" left behind by an unset CI secret', async () => { + process.env.PATTERN_LIBRARY_EXTRA_HEADERS = 'X-Set: yes\nX-Unset:\n\n'; + + const config = await loadConfig( cwd ); + + assert.deepEqual( config.extraHeaders, { 'X-Set': 'yes' } ); + } ); + + test( 'merges environment headers over non-secret ones from the config file', async () => { + process.env.PATTERN_LIBRARY_EXTRA_HEADERS = 'X-Token: secret'; + const dir = await writeConfig( + 'export default { extraHeaders: { "X-Environment": "production", "X-Token": "placeholder" } };', + ); + + const config = await loadConfig( dir ); + + assert.deepEqual( config.extraHeaders, { + 'X-Environment': 'production', + 'X-Token': 'secret', + } ); + } ); + + test( 'rejects a line that is not a header', async () => { + process.env.PATTERN_LIBRARY_EXTRA_HEADERS = 'not a header line'; + + await assert.rejects( loadConfig( cwd ), /must read "Name: value"/ ); + } ); +} ); + +describe( 'variants', () => { + test( 'defaults the label to a title-cased slug and applies to every pattern', async () => { + const dir = await writeConfig( + 'export default { variants: [ { slug: "dark-section", wrapper: { className: "is-style-dark" } } ] };', + ); + + const [ variant ] = ( await loadConfig( dir ) ).variants; + + assert.equal( variant.slug, 'dark-section' ); + assert.equal( variant.label, 'Dark Section' ); + assert.equal( variant.appliesTo( { name: 'my-theme/anything' } ), true ); + } ); + + test( 'keeps an explicit label and predicate', async () => { + const dir = await writeConfig( + `export default { variants: [ { + slug: 'dark', + label: 'Dark section', + wrapper: { backgroundColor: 'shark' }, + appliesTo: ( pattern ) => pattern.name !== 'my-theme/skip', + } ] };`, + ); + + const [ variant ] = ( await loadConfig( dir ) ).variants; + + assert.equal( variant.label, 'Dark section' ); + assert.equal( variant.appliesTo( { name: 'my-theme/skip' } ), false ); + assert.equal( variant.appliesTo( { name: 'my-theme/hero' } ), true ); + } ); + + test( 'rejects a slug that would not survive a filename round trip', async () => { + for ( const slug of [ 'Dark', 'dark section', 'dark/section', '-dark', '' ] ) { + const dir = await writeConfig( + `export default { variants: [ { slug: ${ JSON.stringify( + slug, + ) }, wrapper: { className: 'x' } } ] };`, + ); + + await assert.rejects( loadConfig( dir ), /must be a lowercase kebab-case string/ ); + } + } ); + + test( 'rejects duplicate slugs, which would collide on disk', async () => { + const dir = await writeConfig( + `export default { variants: [ + { slug: 'dark', wrapper: { className: 'a' } }, + { slug: 'dark', wrapper: { className: 'b' } }, + ] };`, + ); + + await assert.rejects( loadConfig( dir ), /duplicate variant slug "dark"/ ); + } ); + + test( 'rejects a missing or empty wrapper', async () => { + for ( const wrapper of [ 'undefined', '{}', '[]', '"is-style-dark"' ] ) { + const dir = await writeConfig( + `export default { variants: [ { slug: 'dark', wrapper: ${ wrapper } } ] };`, + ); + + await assert.rejects( loadConfig( dir ), /must be a non-empty object/ ); + } + } ); + + test( 'rejects a non-function appliesTo', async () => { + const dir = await writeConfig( + `export default { variants: [ { slug: 'dark', wrapper: { className: 'x' }, appliesTo: true } ] };`, + ); + + await assert.rejects( loadConfig( dir ), /appliesTo must be a function/ ); + } ); + + test( 'rejects a non-array `variants`', async () => { + const dir = await writeConfig( 'export default { variants: { slug: "dark" } };' ); + + await assert.rejects( loadConfig( dir ), /`variants` must be an array/ ); + } ); +} ); + +describe( 'requireConfig', () => { + test( 'passes when every required key carries a value', () => { + assert.doesNotThrow( () => + requireConfig( { siteUrl: 'https://example.com', username: 'bot' }, [ + 'siteUrl', + 'username', + ] ), + ); + } ); + + test( 'names each missing key and how to set it', () => { + assert.throws( + () => requireConfig( { siteUrl: '' }, [ 'siteUrl', 'username', 'appPassword' ] ), + ( error ) => { + assert.match( error.message, /--site or PATTERN_LIBRARY_SITE/ ); + assert.match( error.message, /PATTERN_LIBRARY_WP_USER/ ); + assert.match( error.message, /PATTERN_LIBRARY_WP_APP_PASSWORD/ ); + return true; + }, + ); + } ); +} ); diff --git a/tests/js/manifest.test.mjs b/tests/js/manifest.test.mjs new file mode 100644 index 0000000..76e8226 --- /dev/null +++ b/tests/js/manifest.test.mjs @@ -0,0 +1,317 @@ +/** + * URL construction, authentication, and the filtering that decides which of the + * site's patterns belong in the library. + * + * fetchManifest() gets particular attention: every failure it reports is one + * that would otherwise produce a run's worth of plausible but wrong output. + */ + +import { test, describe, afterEach } from 'node:test'; +import assert from 'node:assert/strict'; + +import { + previewUrl, + authHeader, + fetchManifest, + filterPatterns, + shotsFor, +} from '../../src/manifest.mjs'; + +/** + * A resolved-configuration stub, with only the keys these functions read. + * + * @param {Object} overrides Values to layer over the base stub. + * @return {Object} Config stub. + */ +const config = ( overrides = {} ) => ( { + siteUrl: 'https://example.com', + username: 'bot', + appPassword: 'abcd efgh', + namespaces: [], + exclude: { inserterHidden: true, postTypes: [], patterns: [] }, + variants: [], + extraHeaders: {}, + placeholderImages: true, + ...overrides, +} ); + +/** + * A manifest pattern entry. + * + * @param {Object} overrides Values to layer over the base entry. + * @return {Object} Pattern stub. + */ +const pattern = ( overrides = {} ) => ( { + name: 'my-theme/hero', + basename: 'hero', + title: 'Hero', + categories: [ 'banner' ], + keywords: [], + blockTypes: [], + postTypes: [], + viewportWidth: 0, + inserter: true, + ...overrides, +} ); + +/** + * Replace global fetch with one that answers every request identically. + * + * @param {Object} response What every request is answered with. + * @param {number} response.status HTTP status code. + * @param {string} response.body Response body. + * @param {string} response.contentType Content-Type header value. + * @return {Function} The installed fetch stub, carrying the calls it received. + */ +function stubFetch( { status = 200, body = '', contentType = 'application/json' } ) { + const calls = []; + const stub = ( url, options ) => { + calls.push( { url, options } ); + return Promise.resolve( { + status, + ok: status >= 200 && status < 300, + text: () => Promise.resolve( body ), + headers: { get: () => contentType }, + } ); + }; + stub.calls = calls; + globalThis.fetch = stub; + return stub; +} + +const realFetch = globalThis.fetch; +afterEach( () => { + globalThis.fetch = realFetch; +} ); + +describe( 'previewUrl', () => { + test( 'targets index.php, so a rewrite on / cannot intercept the route', () => { + const url = new URL( previewUrl( config(), 'hero' ) ); + + assert.equal( url.origin + url.pathname, 'https://example.com/index.php' ); + assert.equal( url.searchParams.get( 'pattern-library-preview' ), 'hero' ); + } ); + + test( 'asks for a placeholder featured image on a pattern, but not on the manifest', () => { + const withPattern = new URL( previewUrl( config(), 'hero' ) ); + const withManifest = new URL( previewUrl( config(), '__manifest' ) ); + + assert.equal( withPattern.searchParams.get( 'pattern-library-placeholder' ), '1' ); + assert.equal( withManifest.searchParams.get( 'pattern-library-placeholder' ), null ); + } ); + + test( 'omits the placeholder when the project turned it off', () => { + const url = new URL( previewUrl( config( { placeholderImages: false } ), 'hero' ) ); + + assert.equal( url.searchParams.get( 'pattern-library-placeholder' ), null ); + } ); + + test( 'carries post type and wrapper only when asked for', () => { + const bare = new URL( previewUrl( config(), 'hero' ) ); + + assert.equal( bare.searchParams.get( 'pattern-library-post-type' ), null ); + assert.equal( bare.searchParams.get( 'pattern-library-wrapper' ), null ); + + const full = new URL( + previewUrl( config(), 'person-card', 'person', { className: 'is-style-dark' } ), + ); + + assert.equal( full.searchParams.get( 'pattern-library-post-type' ), 'person' ); + // Data, not markup: the site rebuilds the group block from this JSON. + assert.deepEqual( JSON.parse( full.searchParams.get( 'pattern-library-wrapper' ) ), { + className: 'is-style-dark', + } ); + } ); +} ); + +describe( 'authHeader', () => { + test( 'encodes the application password as HTTP Basic credentials', () => { + const value = authHeader( config() ); + + assert.match( value, /^Basic / ); + assert.equal( + Buffer.from( value.slice( 6 ), 'base64' ).toString(), + 'bot:abcd efgh', + ); + } ); +} ); + +describe( 'fetchManifest', () => { + const manifest = { + manifestVersion: 1, + features: [ 'variants' ], + site: { name: 'Example', url: 'https://example.com/' }, + categories: [], + patterns: [], + }; + + test( 'returns the parsed manifest, sending credentials and any extra headers', async () => { + const fetchStub = stubFetch( { body: JSON.stringify( manifest ) } ); + + const result = await fetchManifest( + config( { extraHeaders: { 'CF-Access-Client-Id': 'abc.access' } } ), + ); + + assert.equal( result.manifestVersion, 1 ); + assert.equal( fetchStub.calls.length, 1 ); + assert.match( fetchStub.calls[ 0 ].options.headers.Authorization, /^Basic / ); + assert.equal( + fetchStub.calls[ 0 ].options.headers[ 'CF-Access-Client-Id' ], + 'abc.access', + ); + } ); + + test( 'explains a 401 in terms of the capability and per-site roles', async () => { + stubFetch( { status: 401, body: 'Authentication required.' } ); + + await assert.rejects( fetchManifest( config() ), ( error ) => { + assert.match( error.message, /Authentication failed \(HTTP 401\)/ ); + assert.match( error.message, /view_pattern_library/ ); + assert.match( error.message, /multisite/ ); + return true; + } ); + } ); + + test( 'points at an access proxy when HTML arrives instead of JSON', async () => { + stubFetch( { body: 'Sign in', contentType: 'text/html' } ); + + await assert.rejects( fetchManifest( config() ), ( error ) => { + assert.match( error.message, /Expected JSON/ ); + assert.match( error.message, /extraHeaders/ ); + return true; + } ); + } ); + + test( 'refuses a manifest version it does not understand', async () => { + stubFetch( { body: JSON.stringify( { ...manifest, manifestVersion: 2 } ) } ); + + await assert.rejects( fetchManifest( config() ), /Manifest version 2 is not supported/ ); + } ); + + test( 'refuses to capture variants against a site too old to render them', async () => { + stubFetch( { body: JSON.stringify( { ...manifest, features: [] } ) } ); + + await assert.rejects( + fetchManifest( + config( { + variants: [ { slug: 'dark', wrapper: {}, appliesTo: () => true } ], + } ), + ), + /does not support them/, + ); + } ); + + test( 'reports any other failing status with its URL', async () => { + stubFetch( { status: 500, body: 'boom' } ); + + await assert.rejects( fetchManifest( config() ), /HTTP 500/ ); + } ); +} ); + +describe( 'filterPatterns', () => { + /** + * Run the filter over a list of patterns. + * + * @param {Array} patterns Manifest pattern entries. + * @param {Object} overrides Config overrides. + * @return {Object} Kept and skipped patterns. + */ + const run = ( patterns, overrides = {} ) => + filterPatterns( { patterns }, config( overrides ) ); + + test( 'keeps everything when nothing is configured to exclude it', () => { + const { patterns, skipped } = run( [ pattern() ] ); + + assert.equal( patterns.length, 1 ); + assert.equal( skipped.length, 0 ); + } ); + + test( 'drops patterns outside the configured namespaces', () => { + const { patterns, skipped } = run( + [ pattern(), pattern( { name: 'core/banner', basename: 'banner' } ) ], + { namespaces: [ 'my-theme/' ] }, + ); + + assert.deepEqual( + patterns.map( ( item ) => item.name ), + [ 'my-theme/hero' ], + ); + assert.equal( skipped[ 0 ].reason, 'outside configured namespaces' ); + } ); + + test( 'drops patterns hidden from the inserter, unless that is turned off', () => { + const hidden = [ pattern( { inserter: false } ) ]; + + assert.equal( run( hidden ).skipped[ 0 ].reason, 'hidden from the inserter' ); + assert.equal( + run( hidden, { exclude: { inserterHidden: false, postTypes: [], patterns: [] } } ) + .patterns.length, + 1, + ); + } ); + + test( 'names the post types that got a pattern excluded', () => { + const { skipped } = run( [ pattern( { postTypes: [ 'wp_template' ] } ) ], { + exclude: { + inserterHidden: true, + postTypes: [ 'wp_template', 'wp_template_part' ], + patterns: [], + }, + } ); + + assert.equal( skipped[ 0 ].reason, 'scoped to wp_template' ); + } ); + + test( 'drops patterns named explicitly, by full name', () => { + const { skipped } = run( [ pattern() ], { + exclude: { inserterHidden: true, postTypes: [], patterns: [ 'my-theme/hero' ] }, + } ); + + assert.equal( skipped[ 0 ].reason, 'explicitly excluded' ); + } ); + + test( 'keeps the pattern entry intact on the skipped list, adding only a reason', () => { + const { skipped } = run( [ pattern( { inserter: false } ) ] ); + + assert.equal( skipped[ 0 ].name, 'my-theme/hero' ); + assert.equal( skipped[ 0 ].title, 'Hero' ); + assert.ok( skipped[ 0 ].reason ); + } ); +} ); + +describe( 'shotsFor', () => { + const dark = { slug: 'dark', label: 'Dark section', wrapper: {}, appliesTo: () => true }; + + test( 'is just the pattern itself when no variants are configured', () => { + assert.deepEqual( shotsFor( pattern(), config() ), [ + { basename: 'hero', variant: null }, + ] ); + } ); + + test( 'puts the plain capture first, then one per applicable variant', () => { + const shots = shotsFor( pattern(), config( { variants: [ dark ] } ) ); + + assert.deepEqual( + shots.map( ( shot ) => shot.basename ), + [ 'hero', 'hero--dark' ], + ); + assert.equal( shots[ 0 ].variant, null ); + assert.equal( shots[ 1 ].variant, dark ); + } ); + + test( 'honours appliesTo, so a variant costs captures only where it means something', () => { + const pages = { + ...dark, + appliesTo: ( item ) => ! item.categories.includes( 'my-theme/pages' ), + }; + + assert.equal( shotsFor( pattern(), config( { variants: [ pages ] } ) ).length, 2 ); + assert.equal( + shotsFor( + pattern( { categories: [ 'my-theme/pages' ] } ), + config( { variants: [ pages ] } ), + ).length, + 1, + ); + } ); +} ); diff --git a/tests/js/markdown.test.mjs b/tests/js/markdown.test.mjs new file mode 100644 index 0000000..bae6e68 --- /dev/null +++ b/tests/js/markdown.test.mjs @@ -0,0 +1,381 @@ +/** + * Markdown generation: how categories become pages, and what one pattern's + * section says about it. + * + * These write into a temporary directory and read the result back, because the + * output is the product — a unit test of the string builders would not catch a + * page written to the wrong path or a link that does not resolve. + */ + +import { test, describe, beforeEach, afterEach } from 'node:test'; +import assert from 'node:assert/strict'; +import { mkdtemp, rm, mkdir, writeFile, readFile } from 'node:fs/promises'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; + +import { anchor, buildPages, generate } from '../../src/markdown.mjs'; +import { flatClassify } from '../../src/config.mjs'; + +let dir; + +beforeEach( async () => { + dir = await mkdtemp( join( tmpdir(), 'pattern-library-markdown-' ) ); +} ); + +afterEach( async () => { + await rm( dir, { recursive: true, force: true } ); +} ); + +/** + * A resolved-configuration stub rooted in the temporary directory. + * + * @param {Object} overrides Values to layer over the base stub. + * @return {Object} Config stub. + */ +const config = ( overrides = {} ) => ( { + title: 'Pattern Library', + outputDir: join( dir, 'out' ), + indexFile: join( dir, 'out', 'README.md' ), + screenshotsDir: join( dir, 'out', 'screenshots' ), + imageFormat: 'webp', + classify: flatClassify, + variants: [], + extraFields: [], + baseLabel: 'Default rendering', + includeSkipped: true, + ...overrides, +} ); + +/** + * A manifest pattern entry. + * + * @param {Object} overrides Values to layer over the base entry. + * @return {Object} Pattern stub. + */ +const pattern = ( overrides = {} ) => ( { + name: 'my-theme/hero', + basename: 'hero', + title: 'Hero', + description: '', + categories: [ 'banner' ], + keywords: [], + blockTypes: [], + postTypes: [], + viewportWidth: 0, + inserter: true, + source: 'theme', + ...overrides, +} ); + +/** + * Place a screenshot file, so generation believes the capture happened. + * + * @param {string} basename Screenshot basename, without extension. + */ +async function placeShot( basename ) { + await mkdir( join( dir, 'out', 'screenshots' ), { recursive: true } ); + await writeFile( join( dir, 'out', 'screenshots', `${ basename }.webp` ), 'not-really-webp' ); +} + +/** + * Read a generated file relative to the output directory. + * + * @param {string} relativePath Path under outputDir. + * @return {Promise} File contents. + */ +const read = ( relativePath ) => readFile( join( dir, 'out', relativePath ), 'utf8' ); + +describe( 'anchor', () => { + test( 'matches how GitHub slugs a heading', () => { + assert.equal( anchor( 'Hero' ), 'hero' ); + assert.equal( anchor( 'Call to action' ), 'call-to-action' ); + assert.equal( anchor( 'Hero — with image' ), 'hero--with-image' ); + assert.equal( anchor( "Editor's picks (2026)" ), 'editors-picks-2026' ); + } ); +} ); + +describe( 'buildPages', () => { + const manifest = { + categories: [ + { slug: 'banner', label: 'Banners' }, + { slug: 'text', label: 'Text' }, + { slug: 'empty', label: 'Empty' }, + ], + }; + + test( 'makes one page per category that has patterns, in registration order', () => { + const pages = buildPages( + manifest, + [ pattern(), pattern( { name: 'my-theme/quote', basename: 'quote', title: 'Quote', categories: [ 'text' ] } ) ], + config(), + ); + + assert.deepEqual( + pages.map( ( page ) => page.slug ), + [ 'banner', 'text' ], + ); + // A category nothing is filed under gets no page at all. + assert.equal( pages.some( ( page ) => page.slug === 'empty' ), false ); + } ); + + test( 'files a pattern under every category it declares', () => { + const pages = buildPages( + manifest, + [ pattern( { categories: [ 'banner', 'text' ] } ) ], + config(), + ); + + assert.equal( pages.length, 2 ); + assert.equal( pages[ 0 ].patterns.length, 1 ); + assert.equal( pages[ 1 ].patterns.length, 1 ); + } ); + + test( 'sorts patterns within a page by title', () => { + const pages = buildPages( + manifest, + [ + pattern( { name: 'my-theme/z', basename: 'z', title: 'Zebra' } ), + pattern( { name: 'my-theme/a', basename: 'a', title: 'Apple' } ), + ], + config(), + ); + + assert.deepEqual( + pages[ 0 ].patterns.map( ( item ) => item.title ), + [ 'Apple', 'Zebra' ], + ); + } ); + + test( 'flattens a namespaced category slug so it cannot write into a subdirectory', () => { + const pages = buildPages( + { categories: [ { slug: 'my-theme/hero', label: 'Hero' } ] }, + [ pattern( { categories: [ 'my-theme/hero' ] } ) ], + config(), + ); + + assert.equal( pages[ 0 ].filename, 'my-theme-hero' ); + } ); + + test( 'lets a classifier place, relabel, and drop categories', () => { + const pages = buildPages( + manifest, + [ pattern(), pattern( { name: 'my-theme/quote', basename: 'quote', title: 'Quote', categories: [ 'text' ] } ) ], + config( { + classify: ( { slug, label } ) => + slug === 'text' + ? null + : { kind: 'section', dir: 'sections', label: `${ label } (section)` }, + } ), + ); + + assert.equal( pages.length, 1 ); + assert.equal( pages[ 0 ].kind, 'section' ); + assert.equal( pages[ 0 ].dir, 'sections' ); + assert.equal( pages[ 0 ].label, 'Banners (section)' ); + } ); +} ); + +describe( 'generate', () => { + const manifest = { categories: [ { slug: 'banner', label: 'Banners' } ] }; + + test( 'writes an index and one page per category, and reports what it wrote', async () => { + const resolved = config(); + const result = await generate( manifest, [ pattern() ], resolved ); + + assert.equal( result.pages, 1 ); + assert.equal( result.index, resolved.indexFile ); + + const index = await read( 'README.md' ); + assert.match( index, /^# Pattern Library$/m ); + assert.match( index, /1 patterns across 1 categories\./ ); + assert.match( index, /- \[Banners\]\(banner\.md\) \(1\)/ ); + + const page = await read( 'banner.md' ); + assert.match( page, /^# Banners$/m ); + assert.match( page, /\[← Pattern Library\]\(README\.md\)/ ); + assert.match( page, /^### Hero$/m ); + assert.match( page, /`my-theme\/hero`/ ); + } ); + + test( 'links the index to a repository that exists', async () => { + await generate( manifest, [ pattern() ], config() ); + + const index = await read( 'README.md' ); + assert.match( index, /github\.com\/humanmade\/wp-pattern-library/ ); + } ); + + test( 'says a preview is pending when no screenshot was captured', async () => { + await generate( manifest, [ pattern() ], config() ); + + assert.match( await read( 'banner.md' ), /_Preview pending\._/ ); + } ); + + test( 'embeds the screenshot, uncaptioned, when a pattern has no variants', async () => { + await placeShot( 'hero' ); + await generate( manifest, [ pattern() ], config() ); + + const page = await read( 'banner.md' ); + assert.match( page, /!\[Hero\]\(screenshots\/hero\.webp\)/ ); + assert.doesNotMatch( page, /_Default rendering_/ ); + } ); + + test( 'captions every image once a pattern has a variant to tell apart', async () => { + await placeShot( 'hero' ); + await placeShot( 'hero--dark' ); + + await generate( + manifest, + [ pattern() ], + config( { + variants: [ + { slug: 'dark', label: 'Dark section', wrapper: {}, appliesTo: () => true }, + ], + } ), + ); + + const page = await read( 'banner.md' ); + assert.match( page, /_Default rendering_/ ); + assert.match( page, /!\[Hero — Default rendering\]\(screenshots\/hero\.webp\)/ ); + assert.match( page, /_Dark section_/ ); + assert.match( page, /!\[Hero — Dark section\]\(screenshots\/hero--dark\.webp\)/ ); + // Plain capture first. + assert.ok( page.indexOf( 'hero.webp' ) < page.indexOf( 'hero--dark.webp' ) ); + } ); + + test( 'renders the metadata a pattern declares, and omits what it does not', async () => { + await generate( + manifest, + [ + pattern( { + description: 'A big hero.', + keywords: [ 'banner', 'masthead' ], + blockTypes: [ 'core/group' ], + viewportWidth: 1280, + } ), + ], + config(), + ); + + const page = await read( 'banner.md' ); + assert.match( page, /A big hero\./ ); + assert.match( page, /\*\*Categories:\*\* Banners/ ); + assert.match( page, /\*\*Keywords:\*\* banner, masthead/ ); + assert.match( page, /\*\*Block types:\*\* `core\/group`/ ); + assert.match( page, /\*\*Viewport:\*\* 1280px/ ); + assert.doesNotMatch( page, /\*\*Post types:\*\*/ ); + } ); + + test( 'appends extraFields, from a property name or a function', async () => { + await generate( + manifest, + [ pattern() ], + config( { + extraFields: [ + { label: 'Source', value: 'source' }, + { label: 'Namespace', value: ( item ) => item.name.split( '/' )[ 0 ] }, + ], + } ), + ); + + const page = await read( 'banner.md' ); + assert.match( page, /\*\*Source:\*\* theme/ ); + assert.match( page, /\*\*Namespace:\*\* my-theme/ ); + } ); + + test( 'writes a page into the directory its classifier chose, with working links', async () => { + await generate( + manifest, + [ pattern() ], + config( { + classify: ( { label } ) => ( { kind: 'section', dir: 'sections', label } ), + } ), + ); + + const page = await read( 'sections/banner.md' ); + // Both links have to climb out of sections/ to resolve. + assert.match( page, /\[← Pattern Library\]\(\.\.\/README\.md\)/ ); + assert.match( await read( 'README.md' ), /\(sections\/banner\.md\)/ ); + } ); + + test( 'promotes a leadsIn category to the top of the pages it leads', async () => { + const twoCategories = { + categories: [ + { slug: 'full-page', label: 'Full page' }, + { slug: 'banner', label: 'Banners' }, + ], + }; + + await generate( + twoCategories, + [ + pattern( { + name: 'my-theme/homepage', + basename: 'homepage', + title: 'Homepage', + categories: [ 'full-page', 'banner' ], + } ), + pattern(), + ], + config( { + classify: ( { slug, label } ) => + slug === 'full-page' + ? { kind: 'reference', dir: '.', label, leadsIn: 'section' } + : { kind: 'section', dir: '.', label }, + } ), + ); + + const page = await read( 'banner.md' ); + assert.match( page, /## Full page references/ ); + assert.match( page, /## Sections/ ); + assert.ok( page.indexOf( '### Homepage' ) < page.indexOf( '### Hero' ) ); + } ); + + test( 'lists patterns whose categories produced no page as uncategorized', async () => { + await generate( manifest, [ pattern( { categories: [ 'nowhere' ] } ) ], config() ); + + const index = await read( 'README.md' ); + assert.match( index, /## Uncategorized/ ); + assert.match( index, /- `my-theme\/hero`/ ); + } ); + + test( 'reports skipped patterns with their reasons, unless asked not to', async () => { + const skipped = [ { ...pattern(), reason: 'hidden from the inserter' } ]; + + await generate( manifest, [], config(), skipped ); + const withSkipped = await read( 'README.md' ); + assert.match( withSkipped, /## Not included/ ); + assert.match( withSkipped, /- `my-theme\/hero` — hidden from the inserter/ ); + + await generate( manifest, [], config( { includeSkipped: false } ), skipped ); + assert.doesNotMatch( await read( 'README.md' ), /## Not included/ ); + } ); + + test( 'groups the index by kind only when there is more than one', async () => { + const flat = await generate( manifest, [ pattern() ], config() ); + assert.equal( flat.pages, 1 ); + assert.doesNotMatch( await read( 'README.md' ), /^## Categorys/m ); + + await generate( + { + categories: [ + { slug: 'banner', label: 'Banners' }, + { slug: 'text', label: 'Text' }, + ], + }, + [ + pattern(), + pattern( { name: 'my-theme/quote', basename: 'quote', title: 'Quote', categories: [ 'text' ] } ), + ], + config( { + classify: ( { slug, label } ) => + slug === 'banner' + ? { kind: 'section', dir: '.', label } + : { kind: 'component', dir: '.', label }, + } ), + ); + + const index = await read( 'README.md' ); + assert.match( index, /^## Sections$/m ); + assert.match( index, /^## Components$/m ); + } ); +} ); diff --git a/tests/php/access-test.php b/tests/php/access-test.php new file mode 100644 index 0000000..2fe6b58 --- /dev/null +++ b/tests/php/access-test.php @@ -0,0 +1,143 @@ +assertFalse( is_preview_request() ); + + $_GET[ QUERY_VAR ] = 'hero'; + $this->assertTrue( is_preview_request() ); + + // Present but empty is still our route: it is a 404, not somebody else's page. + $_GET[ QUERY_VAR ] = ''; + $this->assertTrue( is_preview_request() ); + } + + /** + * wp_authenticate_application_password() ignores anything that is not REST or + * XML-RPC, so the route has to opt itself in. + */ + public function test_application_passwords_are_opted_in_for_this_route_only(): void { + $this->assertFalse( allow_application_password( false ) ); + + $_GET[ QUERY_VAR ] = 'hero'; + $this->assertTrue( allow_application_password( false ) ); + } + + /** + * The opt-in never takes away an approval core already made. + */ + public function test_application_password_opt_in_preserves_an_existing_yes(): void { + $this->assertTrue( allow_application_password( true ) ); + } + + /** + * Access hangs on a dedicated capability, and on nothing else. + * + * `view_pattern_library` is a custom primitive capability, so no built-in + * role holds it — an administrator included. That is the whole point of a + * dedicated capability, but it does mean every account that reads the + * library has to be granted it explicitly. + */ + public function test_the_capability_gates_access_even_for_an_administrator(): void { + $this->assertFalse( current_user_can_view() ); + + wp_set_current_user( self::factory()->user->create( [ 'role' => 'editor' ] ) ); + $this->assertFalse( current_user_can_view() ); + + wp_set_current_user( self::factory()->user->create( [ 'role' => 'administrator' ] ) ); + $this->assertFalse( current_user_can_view() ); + } + + /** + * Granting the capability to any existing user is enough, which is what + * `wp pattern-library grant` does. + */ + public function test_granting_the_capability_to_an_existing_user_is_enough(): void { + $user = self::factory()->user->create_and_get( [ 'role' => 'editor' ] ); + $user->add_cap( CAPABILITY ); + wp_set_current_user( $user->ID ); + + $this->assertTrue( current_user_can_view() ); + } + + /** + * A user holding only the capability can read the library. + */ + public function test_the_capability_alone_is_enough(): void { + add_role( ROLE, 'Pattern Library', [ 'read' => true, CAPABILITY => true ] ); + + $user = self::factory()->user->create( [ 'role' => ROLE ] ); + wp_set_current_user( $user ); + + $this->assertTrue( current_user_can_view() ); + // ...and nothing more. The account cannot touch content. + $this->assertFalse( current_user_can( 'edit_posts' ) ); + $this->assertFalse( current_user_can( 'manage_options' ) ); + } + + /** + * Projects with their own role management can take over the decision. + */ + public function test_the_capability_check_is_filterable(): void { + add_filter( 'pattern_library_user_can', '__return_true' ); + $this->assertTrue( current_user_can_view() ); + + remove_filter( 'pattern_library_user_can', '__return_true' ); + + wp_set_current_user( self::factory()->user->create( [ 'role' => 'administrator' ] ) ); + add_filter( 'pattern_library_user_can', '__return_false' ); + $this->assertFalse( current_user_can_view() ); + } + + /** + * The plugin hooks nothing onto the ordinary request path beyond the two + * filters it needs, so an inactive route costs a visitor nothing. + */ + public function test_bootstrap_registers_only_the_preview_hooks(): void { + $this->assertNotFalse( + has_filter( 'application_password_is_api_request', 'HM\\Pattern_Library\\allow_application_password' ) + ); + $this->assertNotFalse( + has_action( 'template_redirect', 'HM\\Pattern_Library\\maybe_render' ) + ); + } +} diff --git a/tests/php/bootstrap.php b/tests/php/bootstrap.php new file mode 100644 index 0000000..2b4b3f8 --- /dev/null +++ b/tests/php/bootstrap.php @@ -0,0 +1,39 @@ +assertSame( 'hero', basename_for( 'my-theme/hero' ) ); + $this->assertSame( 'hero', basename_for( 'hero' ) ); + $this->assertSame( 'hero/inner', basename_for( 'my-theme/hero/inner' ) ); + $this->assertSame( '', basename_for( 'my-theme/' ) ); + } + + /** + * An empty namespace list means "expose everything". + */ + public function test_empty_namespace_list_allows_every_pattern(): void { + $this->assertTrue( is_in_namespace( 'core/banner', [] ) ); + $this->assertTrue( is_in_namespace( 'my-theme/hero', [] ) ); + } + + /** + * Namespaces match on prefix, so a trailing slash scopes to one namespace. + */ + public function test_namespaces_match_on_prefix(): void { + $namespaces = [ 'my-theme/' ]; + + $this->assertTrue( is_in_namespace( 'my-theme/hero', $namespaces ) ); + $this->assertFalse( is_in_namespace( 'core/banner', $namespaces ) ); + // Prefix matching: a sibling namespace sharing the stem is not included. + $this->assertFalse( is_in_namespace( 'my-theme-extras/hero', $namespaces ) ); + } + + /** + * More than one namespace can be exposed at once. + */ + public function test_any_configured_namespace_matches(): void { + $namespaces = [ 'my-theme/', 'my-plugin/' ]; + + $this->assertTrue( is_in_namespace( 'my-plugin/card', $namespaces ) ); + $this->assertFalse( is_in_namespace( 'core/banner', $namespaces ) ); + } + + /** + * The namespace list is filterable, and always an array. + */ + public function test_namespaces_come_from_a_filter(): void { + $this->assertSame( [], get_namespaces() ); + + add_filter( 'pattern_library_namespaces', static fn (): array => [ 'my-theme/' ] ); + + $this->assertSame( [ 'my-theme/' ], get_namespaces() ); + } + + /** + * Every field the CLI reads is present and correctly typed. + */ + public function test_prepare_pattern_produces_the_manifest_shape(): void { + $prepared = prepare_pattern( + [ + 'name' => 'my-theme/hero', + 'title' => 'Hero', + 'description' => 'A big hero.', + 'categories' => [ 'banner' ], + 'keywords' => [ 'masthead' ], + 'blockTypes' => [ 'core/group' ], + 'postTypes' => [ 'page' ], + 'viewportWidth' => 1280, + 'inserter' => true, + 'source' => 'theme', + 'content' => '

Hi

', + ] + ); + + $this->assertSame( 'my-theme/hero', $prepared['name'] ); + $this->assertSame( 'hero', $prepared['basename'] ); + $this->assertSame( 'Hero', $prepared['title'] ); + $this->assertSame( 'A big hero.', $prepared['description'] ); + $this->assertSame( [ 'banner' ], $prepared['categories'] ); + $this->assertSame( [ 'masthead' ], $prepared['keywords'] ); + $this->assertSame( [ 'core/group' ], $prepared['blockTypes'] ); + $this->assertSame( [ 'page' ], $prepared['postTypes'] ); + $this->assertSame( 1280, $prepared['viewportWidth'] ); + $this->assertTrue( $prepared['inserter'] ); + $this->assertSame( 'theme', $prepared['source'] ); + } + + /** + * Pattern markup is deliberately left out: the library documents patterns + * visually, and shipping every pattern's content would bloat the manifest. + */ + public function test_prepare_pattern_omits_the_pattern_content(): void { + $prepared = prepare_pattern( + [ + 'name' => 'my-theme/hero', + 'content' => '

Hi

', + ] + ); + + $this->assertArrayNotHasKey( 'content', $prepared ); + } + + /** + * A sparsely registered pattern still yields every key, so the CLI never has + * to guard against a missing field. + */ + public function test_prepare_pattern_fills_in_missing_fields(): void { + $prepared = prepare_pattern( [ 'name' => 'my-theme/hero' ] ); + + $this->assertSame( 'my-theme/hero', $prepared['title'] ); + $this->assertSame( '', $prepared['description'] ); + $this->assertSame( [], $prepared['categories'] ); + $this->assertSame( [], $prepared['keywords'] ); + $this->assertSame( [], $prepared['blockTypes'] ); + $this->assertSame( [], $prepared['postTypes'] ); + $this->assertSame( 0, $prepared['viewportWidth'] ); + $this->assertTrue( $prepared['inserter'] ); + $this->assertSame( '', $prepared['source'] ); + } + + /** + * Registry arrays are not guaranteed to be lists, and JSON encoding turns a + * gappy array into an object the CLI cannot iterate. + */ + public function test_prepare_pattern_reindexes_list_fields(): void { + $prepared = prepare_pattern( + [ + 'name' => 'my-theme/hero', + 'categories' => [ 2 => 'banner', 5 => 'featured' ], + ] + ); + + $this->assertSame( [ 'banner', 'featured' ], $prepared['categories'] ); + $this->assertSame( [ 0, 1 ], array_keys( $prepared['categories'] ) ); + } + + /** + * A pattern hidden from the inserter is reported as such rather than dropped + * server-side, so the CLI can list it under "not included". + */ + public function test_prepare_pattern_reports_inserter_visibility(): void { + $prepared = prepare_pattern( [ 'name' => 'my-theme/hero', 'inserter' => false ] ); + + $this->assertFalse( $prepared['inserter'] ); + } +} diff --git a/tests/php/render-test.php b/tests/php/render-test.php new file mode 100644 index 0000000..1296327 --- /dev/null +++ b/tests/php/render-test.php @@ -0,0 +1,362 @@ +

Hi

'; + + /** + * Register a pattern to look up. + */ + public function set_up(): void { + parent::set_up(); + + register_block_pattern( + 'my-theme/hero', + [ + 'title' => 'Hero', + 'content' => self::CONTENT, + ] + ); + } + + /** + * Unregister it, and clear the query vars. + */ + public function tear_down(): void { + unset( $_GET[ WRAPPER_QUERY_VAR ], $_GET[ POST_TYPE_QUERY_VAR ] ); + + if ( WP_Block_Patterns_Registry::get_instance()->is_registered( 'my-theme/hero' ) ) { + unregister_block_pattern( 'my-theme/hero' ); + } + + parent::tear_down(); + } + + /** + * Set the wrapper query var to an encoded attribute set. + * + * @param mixed $value Value to encode, or a raw string to send verbatim. + */ + private function request_wrapper( $value ): void { + $json = is_string( $value ) ? $value : (string) wp_json_encode( $value ); + + // WordPress slashes every superglobal in wp_magic_quotes() before any + // plugin code runs, and the route calls wp_unslash() to undo it. Tests + // assign $_GET after that has happened, so they have to slash too — a + // wrapper containing a quote would otherwise arrive as invalid JSON here + // and as valid JSON in production. + $_GET[ WRAPPER_QUERY_VAR ] = wp_slash( $json ); + } + + /** + * Patterns resolve by full name. + */ + public function test_find_pattern_resolves_a_full_name(): void { + $pattern = find_pattern( 'my-theme/hero' ); + + $this->assertNotNull( $pattern ); + $this->assertSame( 'my-theme/hero', $pattern['name'] ); + } + + /** + * ...and by bare basename, which is what the CLI's filters use. + */ + public function test_find_pattern_falls_back_to_a_basename(): void { + $pattern = find_pattern( 'hero' ); + + $this->assertNotNull( $pattern ); + $this->assertSame( 'my-theme/hero', $pattern['name'] ); + } + + /** + * A namespaced name is never guessed at: it either exists or it does not. + */ + public function test_find_pattern_does_not_guess_at_a_namespaced_name(): void { + $this->assertNull( find_pattern( 'other-theme/hero' ) ); + $this->assertNull( find_pattern( 'nope' ) ); + } + + /** + * Without the query var, the pattern is rendered exactly as registered. + */ + public function test_no_wrapper_is_added_unless_one_is_requested(): void { + $this->assertSame( self::CONTENT, with_optional_wrapper( self::CONTENT ) ); + } + + /** + * The wrapper is a real group block, so block stylesheets registered with + * wp_enqueue_block_style() load for it. + */ + public function test_a_wrapper_is_a_real_group_block(): void { + $this->request_wrapper( [ 'className' => 'is-style-dark' ] ); + + $wrapped = with_optional_wrapper( self::CONTENT ); + + $this->assertStringStartsWith( '', $wrapped ); + $this->assertStringContainsString( self::CONTENT, $wrapped ); + $this->assertStringContainsString( 'class="wp-block-group is-style-dark"', $wrapped ); + } + + /** + * Colour supports are applied server-side only to dynamic blocks, so the + * presentation classes have to be written out in full here. + */ + public function test_colour_attributes_are_written_out_as_classes(): void { + $this->request_wrapper( + [ + 'backgroundColor' => 'shark', + 'textColor' => 'white', + ] + ); + + $wrapped = with_optional_wrapper( self::CONTENT ); + + $this->assertStringContainsString( 'has-shark-background-color', $wrapped ); + $this->assertStringContainsString( 'has-background', $wrapped ); + $this->assertStringContainsString( 'has-white-color', $wrapped ); + $this->assertStringContainsString( 'has-text-color', $wrapped ); + } + + /** + * A gradient is a background too. + */ + public function test_a_gradient_is_written_out_as_a_background(): void { + $this->request_wrapper( [ 'gradient' => 'midnight' ] ); + + $wrapped = with_optional_wrapper( self::CONTENT ); + + $this->assertStringContainsString( 'has-midnight-gradient-background', $wrapped ); + $this->assertStringContainsString( 'has-background', $wrapped ); + } + + /** + * An attribute outside the accepted vocabulary is dropped, so a config typo + * cannot quietly become a block attribute nobody meant to set. + */ + public function test_unknown_attributes_are_dropped(): void { + $this->request_wrapper( [ 'metadata' => [ 'name' => 'x' ], 'lock' => [ 'remove' => true ] ] ); + + // Nothing recognised remains, so there is no wrapper to add. + $this->assertSame( self::CONTENT, with_optional_wrapper( self::CONTENT ) ); + } + + /** + * Recognised attributes survive alongside unrecognised ones. + */ + public function test_unknown_attributes_are_dropped_but_known_ones_survive(): void { + $this->request_wrapper( [ 'className' => 'is-style-dark', 'lock' => [ 'remove' => true ] ] ); + + $wrapped = with_optional_wrapper( self::CONTENT ); + + $this->assertStringContainsString( 'is-style-dark', $wrapped ); + // Asserted on the JSON key, not the bare word: "wp-block-group" contains + // "lock". + $this->assertStringNotContainsString( '"lock"', $wrapped ); + $this->assertStringNotContainsString( 'remove', $wrapped ); + } + + /** + * Class names are sanitized, so markup cannot ride in on one. + */ + public function test_class_names_are_sanitized(): void { + $this->request_wrapper( [ 'className' => 'ok ">' ] ); + + $wrapped = with_optional_wrapper( self::CONTENT ); + + $this->assertStringNotContainsString( 'assertStringContainsString( 'ok', $wrapped ); + } + + /** + * ...and the block comment describes the same block as the div, built from + * the sanitized values rather than the raw input. + */ + public function test_the_block_comment_cannot_be_closed_early(): void { + $this->request_wrapper( [ 'className' => 'a -->' ] ); + + $wrapped = with_optional_wrapper( self::CONTENT ); + + // Exactly one opening group comment: the injected one did not survive. + $this->assertSame( 1, substr_count( $wrapped, '', $wrapped ); + $this->assertStringContainsString( '"postType":"post"', $wrapped ); + $this->assertStringContainsString( '"perPage":1', $wrapped ); + $this->assertStringContainsString( self::CONTENT, $wrapped ); + } + + /** + * An unregistered post type is refused rather than queried for. + */ + public function test_an_unknown_post_type_is_ignored(): void { + $_GET[ POST_TYPE_QUERY_VAR ] = 'no-such-type'; + + $this->assertSame( + self::CONTENT, + with_optional_post_context( [ 'blockTypes' => [ 'core/post-template' ] ], self::CONTENT ) + ); + } + + /** + * A post that already has a featured image keeps it. + */ + public function test_the_placeholder_leaves_a_real_thumbnail_alone(): void { + $this->assertSame( + '', + placeholder_thumbnail( '', 1, 7, 'post-thumbnail', [] ) + ); + } + + /** + * A post without one gets an inline SVG, so the layout has no hole in it. + */ + public function test_the_placeholder_fills_in_for_a_missing_thumbnail(): void { + $html = placeholder_thumbnail( '', 1, 0, 'post-thumbnail', [] ); + + $this->assertStringContainsString( 'data:image/svg+xml', $html ); + $this->assertStringContainsString( 'attachment-post-thumbnail', $html ); + } + + /** + * The requested classes are carried onto the placeholder, so theme styles + * that target them still apply. + */ + public function test_the_placeholder_keeps_the_requested_classes(): void { + $html = placeholder_thumbnail( '', 1, 0, 'post-thumbnail', [ 'class' => 'my-theme-card__image' ] ); + + $this->assertStringContainsString( 'my-theme-card__image', $html ); + } + + /** + * Projects can supply their own placeholder. + */ + public function test_the_placeholder_is_filterable(): void { + add_filter( 'pattern_library_placeholder_image', static fn (): string => '' ); + + $this->assertSame( + '', + placeholder_thumbnail( '', 1, 0, 'post-thumbnail', [] ) + ); + } +} From 166d4ee9d6efccab87a3fd9516b4b349cff0f67a Mon Sep 17 00:00:00 2001 From: goldenapples Date: Fri, 4 Sep 2026 15:01:43 -0400 Subject: [PATCH 02/15] Satisfy the new linters and static analysis Includes all code updates required to get the CI workflows added last commit passing. --- .gitignore | 19 + bin/pattern-library.mjs | 22 +- composer.json | 20 +- composer.lock | 2647 ++++++++ inc/namespace.php | 2 +- inc/render.php | 4 +- package-lock.json | 13866 ++++++++++++++++++++++++++++++++++++-- package.json | 19 + src/animations.mjs | 4 +- src/capture.mjs | 14 +- src/config.mjs | 18 +- src/manifest.mjs | 12 +- src/markdown.mjs | 26 +- 13 files changed, 16096 insertions(+), 577 deletions(-) create mode 100644 composer.lock diff --git a/.gitignore b/.gitignore index a265979..213652c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,22 @@ node_modules/ vendor/ .DS_Store *.log + +# PHPUnit +.phpunit.result.cache +.phpunit.cache/ + +# Jekyll build output for the documentation site +docs/_site/ +docs/.jekyll-cache/ +docs/.jekyll-metadata +docs/Gemfile.lock + +# Local wp-env overrides +.wp-env.override.json + +# Playwright MCP scratch output +.playwright-mcp/ + +# Local bundler configuration for the docs site +docs/.bundle/ diff --git a/bin/pattern-library.mjs b/bin/pattern-library.mjs index 03444be..45c6146 100755 --- a/bin/pattern-library.mjs +++ b/bin/pattern-library.mjs @@ -61,7 +61,7 @@ async function main() { if ( ! COMMANDS.includes( command ) ) { throw new Error( - `Unknown command "${ command }". Expected one of: ${ COMMANDS.join( ', ' ) }.` + `Unknown command "${ command }". Expected one of: ${ COMMANDS.join( ', ' ) }.`, ); } @@ -79,26 +79,24 @@ async function main() { return; } - const targets = filters.length - ? patterns.filter( ( pattern ) => - filters.some( ( filter ) => pattern.basename.includes( filter ) ) - ) - : patterns; + const matches = ( pattern ) => + filters.some( ( filter ) => pattern.basename.includes( filter ) ); + const targets = filters.length ? patterns.filter( matches ) : patterns; log( `${ manifest.site.name } — ${ config.siteUrl }` ); log( - `${ patterns.length } patterns in the library, ${ skipped.length } skipped, ${ targets.length } targeted.` + `${ patterns.length } patterns in the library, ${ skipped.length } skipped, ${ targets.length } targeted.`, ); if ( config.variants.length ) { const shots = targets.reduce( ( total, pattern ) => total + shotsFor( pattern, config ).length, - 0 + 0, ); log( `${ config.variants .map( ( variant ) => variant.label ) - .join( ', ' ) } variant(s) configured — ${ shots } captures for ${ targets.length } patterns.` + .join( ', ' ) } variant(s) configured — ${ shots } captures for ${ targets.length } patterns.`, ); } @@ -110,7 +108,7 @@ async function main() { log( `Skipped: ${ Object.entries( reasons ) .map( ( [ reason, count ] ) => `${ count } ${ reason }` ) - .join( ', ' ) }.` + .join( ', ' ) }.`, ); } @@ -125,12 +123,12 @@ async function main() { log( `\n${ summary.written } written, ${ summary.unchanged } unchanged, ` + - `${ summary.empty.length } empty, ${ summary.failed.length } failed.` + `${ summary.empty.length } empty, ${ summary.failed.length } failed.`, ); if ( summary.empty.length ) { log( - `Rendered empty (need post context or a live query): ${ summary.empty.join( ', ' ) }` + `Rendered empty (need post context or a live query): ${ summary.empty.join( ', ' ) }`, ); } diff --git a/composer.json b/composer.json index 173017f..21c790d 100644 --- a/composer.json +++ b/composer.json @@ -3,24 +3,36 @@ "description": "Serve a manifest and isolated previews of a WordPress site's registered block patterns, so a pattern library can be generated from them.", "type": "wordpress-plugin", "license": "GPL-2.0-or-later", - "keywords": [ "wordpress", "block-patterns", "documentation", "pattern-library" ], + "keywords": [ + "wordpress", + "block-patterns", + "documentation", + "pattern-library" + ], "require": { "php": ">=8.1" }, "require-dev": { "humanmade/coding-standards": "^1.2", "php-stubs/wordpress-stubs": "^6.7", - "phpstan/phpstan": "^1.11", - "szepeviktor/phpstan-wordpress": "^1.3" + "phpstan/phpstan": "^2.2", + "szepeviktor/phpstan-wordpress": "^2.0", + "php-stubs/wp-cli-stubs": "^2.12", + "phpunit/phpunit": "^9.6", + "yoast/phpunit-polyfills": "^2.0" }, "config": { "allow-plugins": { "dealerdirect/phpcodesniffer-composer-installer": true + }, + "platform": { + "php": "8.1" } }, "scripts": { "lint": "phpcs", "lint:fix": "phpcbf", - "analyze": "phpstan analyse" + "analyze": "phpstan analyse", + "test": "phpunit" } } diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..c6cb840 --- /dev/null +++ b/composer.lock @@ -0,0 +1,2647 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "780d4a378c4c6b9cbed9c0d987227d20", + "packages": [], + "packages-dev": [ + { + "name": "automattic/vipwpcs", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/Automattic/VIP-Coding-Standards.git", + "reference": "fc02f491dc9f51da7c32941ac579f70b9ed300c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/VIP-Coding-Standards/zipball/fc02f491dc9f51da7c32941ac579f70b9ed300c5", + "reference": "fc02f491dc9f51da7c32941ac579f70b9ed300c5", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "squizlabs/php_codesniffer": "^3.3.1", + "wp-coding-standards/wpcs": "^2.1" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5", + "phpcompatibility/php-compatibility": "^9", + "phpunit/phpunit": "^5 || ^6 || ^7" + }, + "suggest": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically." + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Contributors", + "homepage": "https://github.com/Automattic/VIP-Coding-Standards/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress VIP minimum coding conventions", + "keywords": [ + "phpcs", + "standards", + "wordpress" + ], + "support": { + "issues": "https://github.com/Automattic/VIP-Coding-Standards/issues", + "source": "https://github.com/Automattic/VIP-Coding-Standards", + "wiki": "https://github.com/Automattic/VIP-Coding-Standards/wiki" + }, + "time": "2019-07-12T08:47:36+00:00" + }, + { + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v0.7.2", + "source": { + "type": "git", + "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", + "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.3", + "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" + }, + "require-dev": { + "composer/composer": "*", + "php-parallel-lint/php-parallel-lint": "^1.3.1", + "phpcompatibility/php-compatibility": "^9.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + }, + "autoload": { + "psr-4": { + "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Franck Nijhof", + "email": "franck.nijhof@dealerdirect.com", + "homepage": "http://www.frenck.nl", + "role": "Developer / IT Manager" + }, + { + "name": "Contributors", + "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "homepage": "http://www.dealerdirect.com", + "keywords": [ + "PHPCodeSniffer", + "PHP_CodeSniffer", + "code quality", + "codesniffer", + "composer", + "installer", + "phpcbf", + "phpcs", + "plugin", + "qa", + "quality", + "standard", + "standards", + "style guide", + "stylecheck", + "tests" + ], + "support": { + "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", + "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" + }, + "time": "2022-02-04T12:51:07+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^11", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2022-12-30T00:23:10+00:00" + }, + { + "name": "fig-r/psr2r-sniffer", + "version": "0.5.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig-rectified/psr2r-sniffer.git", + "reference": "7eb462bcf19abcae122855a6d79cc8f768c77880" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig-rectified/psr2r-sniffer/zipball/7eb462bcf19abcae122855a6d79cc8f768c77880", + "reference": "7eb462bcf19abcae122855a6d79cc8f768c77880", + "shasum": "" + }, + "require": { + "php": ">=5.4.16", + "squizlabs/php_codesniffer": "^3.0" + }, + "bin": [ + "bin/tokenize", + "bin/sniff" + ], + "type": "phpcodesniffer-standard", + "autoload": { + "psr-4": { + "PSR2R\\": "PSR2R" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Scherer", + "homepage": "http://www.dereuromark.de", + "role": "Contributor" + } + ], + "description": "Code-Sniffer, Auto-Fixer and Tokenizer for PSR2-R", + "keywords": [ + "codesniffer", + "cs" + ], + "support": { + "issues": "https://github.com/php-fig-rectified/psr2r-sniffer/issues", + "source": "https://github.com/php-fig-rectified/psr2r-sniffer/tree/0.5.2" + }, + "time": "2019-07-30T11:13:07+00:00" + }, + { + "name": "humanmade/coding-standards", + "version": "v1.2.1", + "source": { + "type": "git", + "url": "https://github.com/humanmade/coding-standards.git", + "reference": "4b5aca25cb350f248f1797beed100edda9f32a0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/humanmade/coding-standards/zipball/4b5aca25cb350f248f1797beed100edda9f32a0d", + "reference": "4b5aca25cb350f248f1797beed100edda9f32a0d", + "shasum": "" + }, + "require": { + "automattic/vipwpcs": "2.0.0", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "fig-r/psr2r-sniffer": "^0.5.0", + "php": ">=7.1", + "phpcompatibility/phpcompatibility-wp": "^2.0.0", + "squizlabs/php_codesniffer": "~3.5", + "wp-coding-standards/wpcs": "2.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^7" + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Human Made Coding Standards", + "support": { + "issues": "https://github.com/humanmade/coding-standards/issues", + "source": "https://github.com/humanmade/coding-standards/tree/v1.2.1" + }, + "time": "2022-09-14T09:35:02+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.14.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae", + "reference": "8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3 <3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.14.0" + }, + "funding": [ + { + "url": "https://github.com/mnapoli", + "type": "github" + } + ], + "time": "2026-08-11T10:17:44+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.8.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "044a6a392ff8ad0d61f14370a5fbbd0a0107152f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/044a6a392ff8ad0d61f14370a5fbbd0a0107152f", + "reference": "044a6a392ff8ad0d61f14370a5fbbd0a0107152f", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.8.0" + }, + "time": "2026-07-04T14:30:18+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "php-stubs/wordpress-stubs", + "version": "v6.9.4", + "source": { + "type": "git", + "url": "https://github.com/php-stubs/wordpress-stubs.git", + "reference": "90a9412826b9944f93b10bf41d795b5fe68abcd5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-stubs/wordpress-stubs/zipball/90a9412826b9944f93b10bf41d795b5fe68abcd5", + "reference": "90a9412826b9944f93b10bf41d795b5fe68abcd5", + "shasum": "" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "5.6.1" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "nikic/php-parser": "^5.5", + "php": "^7.4 || ^8.0", + "php-stubs/generator": "^0.8.6", + "phpdocumentor/reflection-docblock": "^6.0", + "phpstan/phpstan": "^2.1", + "phpunit/phpunit": "^9.5", + "symfony/polyfill-php80": "*", + "szepeviktor/phpcs-psr-12-neutron-hybrid-ruleset": "^1.1.1", + "wp-coding-standards/wpcs": "3.1.0 as 2.3.0" + }, + "suggest": { + "paragonie/sodium_compat": "Pure PHP implementation of libsodium", + "symfony/polyfill-php80": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "szepeviktor/phpstan-wordpress": "WordPress extensions for PHPStan" + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "WordPress function and class declaration stubs for static analysis.", + "homepage": "https://github.com/php-stubs/wordpress-stubs", + "keywords": [ + "PHPStan", + "static analysis", + "wordpress" + ], + "support": { + "issues": "https://github.com/php-stubs/wordpress-stubs/issues", + "source": "https://github.com/php-stubs/wordpress-stubs/tree/v6.9.4" + }, + "time": "2026-05-01T20:36:01+00:00" + }, + { + "name": "php-stubs/wp-cli-stubs", + "version": "v2.12.0", + "source": { + "type": "git", + "url": "https://github.com/php-stubs/wp-cli-stubs.git", + "reference": "af16401e299a3fd2229bd0fa9a037638a4174a9d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-stubs/wp-cli-stubs/zipball/af16401e299a3fd2229bd0fa9a037638a4174a9d", + "reference": "af16401e299a3fd2229bd0fa9a037638a4174a9d", + "shasum": "" + }, + "require": { + "php-stubs/wordpress-stubs": "^4.7 || ^5.0 || ^6.0" + }, + "require-dev": { + "php": "~7.3 || ~8.0", + "php-stubs/generator": "^0.8.0" + }, + "suggest": { + "symfony/polyfill-php73": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "szepeviktor/phpstan-wordpress": "WordPress extensions for PHPStan" + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "WP-CLI function and class declaration stubs for static analysis.", + "homepage": "https://github.com/php-stubs/wp-cli-stubs", + "keywords": [ + "PHPStan", + "static analysis", + "wordpress", + "wp-cli" + ], + "support": { + "issues": "https://github.com/php-stubs/wp-cli-stubs/issues", + "source": "https://github.com/php-stubs/wp-cli-stubs/tree/v2.12.0" + }, + "time": "2025-06-10T09:58:05+00:00" + }, + { + "name": "phpcompatibility/php-compatibility", + "version": "9.3.5", + "source": { + "type": "git", + "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", + "reference": "9fb324479acf6f39452e0655d2429cc0d3914243" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243", + "reference": "9fb324479acf6f39452e0655d2429cc0d3914243", + "shasum": "" + }, + "require": { + "php": ">=5.3", + "squizlabs/php_codesniffer": "^2.3 || ^3.0.2" + }, + "conflict": { + "squizlabs/php_codesniffer": "2.6.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0" + }, + "suggest": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.", + "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Wim Godden", + "homepage": "https://github.com/wimg", + "role": "lead" + }, + { + "name": "Juliette Reinders Folmer", + "homepage": "https://github.com/jrfnl", + "role": "lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors" + } + ], + "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.", + "homepage": "http://techblog.wimgodden.be/tag/codesniffer/", + "keywords": [ + "compatibility", + "phpcs", + "standards" + ], + "support": { + "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues", + "source": "https://github.com/PHPCompatibility/PHPCompatibility" + }, + "time": "2019-12-27T09:44:58+00:00" + }, + { + "name": "phpcompatibility/phpcompatibility-paragonie", + "version": "1.3.4", + "source": { + "type": "git", + "url": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie.git", + "reference": "244d7b04fc4bc2117c15f5abe23eb933b5f02bbf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityParagonie/zipball/244d7b04fc4bc2117c15f5abe23eb933b5f02bbf", + "reference": "244d7b04fc4bc2117c15f5abe23eb933b5f02bbf", + "shasum": "" + }, + "require": { + "phpcompatibility/php-compatibility": "^9.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "paragonie/random_compat": "dev-master", + "paragonie/sodium_compat": "dev-master" + }, + "suggest": { + "dealerdirect/phpcodesniffer-composer-installer": "^1.0 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", + "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Wim Godden", + "role": "lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "lead" + } + ], + "description": "A set of rulesets for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by the Paragonie polyfill libraries.", + "homepage": "http://phpcompatibility.com/", + "keywords": [ + "compatibility", + "paragonie", + "phpcs", + "polyfill", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie/issues", + "security": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie/security/policy", + "source": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie" + }, + "funding": [ + { + "url": "https://github.com/PHPCompatibility", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcompatibility", + "type": "thanks_dev" + } + ], + "time": "2025-09-19T17:43:28+00:00" + }, + { + "name": "phpcompatibility/phpcompatibility-wp", + "version": "2.1.8", + "source": { + "type": "git", + "url": "https://github.com/PHPCompatibility/PHPCompatibilityWP.git", + "reference": "7c8d18b4d90dac9e86b0869a608fa09158e168fa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityWP/zipball/7c8d18b4d90dac9e86b0869a608fa09158e168fa", + "reference": "7c8d18b4d90dac9e86b0869a608fa09158e168fa", + "shasum": "" + }, + "require": { + "phpcompatibility/php-compatibility": "^9.0", + "phpcompatibility/phpcompatibility-paragonie": "^1.0", + "squizlabs/php_codesniffer": "^3.3" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^1.0" + }, + "suggest": { + "dealerdirect/phpcodesniffer-composer-installer": "^1.0 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", + "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Wim Godden", + "role": "lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "lead" + } + ], + "description": "A ruleset for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by WordPress.", + "homepage": "http://phpcompatibility.com/", + "keywords": [ + "compatibility", + "phpcs", + "standards", + "static analysis", + "wordpress" + ], + "support": { + "issues": "https://github.com/PHPCompatibility/PHPCompatibilityWP/issues", + "security": "https://github.com/PHPCompatibility/PHPCompatibilityWP/security/policy", + "source": "https://github.com/PHPCompatibility/PHPCompatibilityWP" + }, + "funding": [ + { + "url": "https://github.com/PHPCompatibility", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcompatibility", + "type": "thanks_dev" + } + ], + "time": "2025-10-18T00:05:59+00:00" + }, + { + "name": "phpstan/phpstan", + "version": "2.2.13", + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9ba9ac76ee9c5cf5b56d58eb5deec6315b7a0260", + "reference": "9ba9ac76ee9c5cf5b56d58eb5deec6315b7a0260", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ondřej Mirtes" + }, + { + "name": "Markus Staab" + }, + { + "name": "Vincent Langlet" + } + ], + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + } + ], + "time": "2026-09-03T20:38:19+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.32", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/85402a822d1ecf1db1096959413d35e1c37cf1a5", + "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.19.1 || ^5.1.0", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.6", + "phpunit/php-text-template": "^2.0.4", + "sebastian/code-unit-reverse-lookup": "^2.0.3", + "sebastian/complexity": "^2.0.3", + "sebastian/environment": "^5.1.5", + "sebastian/lines-of-code": "^1.0.4", + "sebastian/version": "^3.0.2", + "theseer/tokenizer": "^1.2.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.6" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "9.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.32" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-08-22T04:23:01+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-02T12:48:52+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "9.6.36", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "abab27ed286d3e1246fbbfe6b56bfd732d945ec9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/abab27ed286d3e1246fbbfe6b56bfd732d945ec9", + "reference": "abab27ed286d3e1246fbbfe6b56bfd732d945ec9", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.5.0 || ^2", + "ext-dom": "*", + "ext-filter": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.13.4", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=7.3", + "phpunit/php-code-coverage": "^9.2.32", + "phpunit/php-file-iterator": "^3.0.6", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.4", + "phpunit/php-timer": "^5.0.3", + "sebastian/cli-parser": "^1.0.2", + "sebastian/code-unit": "^1.0.8", + "sebastian/comparator": "^4.0.10", + "sebastian/diff": "^4.0.6", + "sebastian/environment": "^5.1.5", + "sebastian/exporter": "^4.0.9", + "sebastian/global-state": "^5.0.8", + "sebastian/object-enumerator": "^4.0.4", + "sebastian/resource-operations": "^3.0.4", + "sebastian/type": "^3.2.1", + "sebastian/version": "^3.0.2" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.6-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.36" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsoring.html", + "type": "other" + } + ], + "time": "2026-08-11T06:25:15+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T06:27:43+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" + }, + { + "name": "sebastian/comparator", + "version": "4.0.10", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "e4df00b9b3571187db2831ae9aada2c6efbd715d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/e4df00b9b3571187db2831ae9aada2c6efbd715d", + "reference": "e4df00b9b3571187db2831ae9aada2c6efbd715d", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.10" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" + } + ], + "time": "2026-01-24T09:22:56+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-22T06:19:30+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T06:30:58+00:00" + }, + { + "name": "sebastian/environment", + "version": "5.1.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:03:51+00:00" + }, + { + "name": "sebastian/exporter", + "version": "4.0.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "4352c1a3df741a7ba9e61af6fed51d1fee41cbf7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/4352c1a3df741a7ba9e61af6fed51d1fee41cbf7", + "reference": "4352c1a3df741a7ba9e61af6fed51d1fee41cbf7", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.9" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" + } + ], + "time": "2026-08-11T04:55:59+00:00" + }, + { + "name": "sebastian/global-state", + "version": "5.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/b6781316bdcd28260904e7cc18ec983d0d2ef4f6", + "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state", + "type": "tidelift" + } + ], + "time": "2025-08-10T07:10:35+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-22T06:20:34+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.7", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "c85be6922b7fd365942b986b9a50397d65407611" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/c85be6922b7fd365942b986b9a50397d65407611", + "reference": "c85be6922b7fd365942b986b9a50397d65407611", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.7" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" + } + ], + "time": "2026-08-11T05:25:24+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-14T16:00:52+00:00" + }, + { + "name": "sebastian/type", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:13:03+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.13.6", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", + "reference": "4c378e1a528ea066890fc2397cbdd2f94eb2fc91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/4c378e1a528ea066890fc2397cbdd2f94eb2fc91", + "reference": "4c378e1a528ea066890fc2397cbdd2f94eb2fc91", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" + }, + "bin": [ + "bin/phpcbf", + "bin/phpcs" + ], + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "Former lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "Current lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", + "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", + "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" + }, + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" + } + ], + "time": "2026-08-06T00:17:32+00:00" + }, + { + "name": "szepeviktor/phpstan-wordpress", + "version": "v2.0.4", + "source": { + "type": "git", + "url": "https://github.com/szepeviktor/phpstan-wordpress.git", + "reference": "84577e2ea1e4c2a95537fe5ea2ac8e18f4ceab1a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/szepeviktor/phpstan-wordpress/zipball/84577e2ea1e4c2a95537fe5ea2ac8e18f4ceab1a", + "reference": "84577e2ea1e4c2a95537fe5ea2ac8e18f4ceab1a", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "php-stubs/wordpress-stubs": ">=6.6.2", + "phpstan/phpstan": "^2.0" + }, + "require-dev": { + "composer/composer": "^2.1.14", + "composer/semver": "^3.4", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.0", + "szepeviktor/phpcs-psr-12-neutron-hybrid-ruleset": "^1.0", + "wp-coding-standards/wpcs": "3.1.0 as 2.3.0" + }, + "suggest": { + "swissspidy/phpstan-no-private": "Detect usage of internal core functions, classes and methods" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "SzepeViktor\\PHPStan\\WordPress\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "WordPress extensions for PHPStan", + "keywords": [ + "PHPStan", + "code analyse", + "code analysis", + "static analysis", + "wordpress" + ], + "support": { + "issues": "https://github.com/szepeviktor/phpstan-wordpress/issues", + "source": "https://github.com/szepeviktor/phpstan-wordpress/tree/v2.0.4" + }, + "time": "2026-05-22T16:22:09+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c", + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.3.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2025-11-17T20:03:58+00:00" + }, + { + "name": "wp-coding-standards/wpcs", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/WordPress/WordPress-Coding-Standards.git", + "reference": "7da1894633f168fe244afc6de00d141f27517b62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/7da1894633f168fe244afc6de00d141f27517b62", + "reference": "7da1894633f168fe244afc6de00d141f27517b62", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "squizlabs/php_codesniffer": "^3.3.1" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || ^0.6", + "phpcompatibility/php-compatibility": "^9.0", + "phpcsstandards/phpcsdevtools": "^1.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "suggest": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.6 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically." + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Contributors", + "homepage": "https://github.com/WordPress/WordPress-Coding-Standards/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions", + "keywords": [ + "phpcs", + "standards", + "wordpress" + ], + "support": { + "issues": "https://github.com/WordPress/WordPress-Coding-Standards/issues", + "source": "https://github.com/WordPress/WordPress-Coding-Standards", + "wiki": "https://github.com/WordPress/WordPress-Coding-Standards/wiki" + }, + "time": "2020-05-13T23:57:56+00:00" + }, + { + "name": "yoast/phpunit-polyfills", + "version": "2.0.5", + "source": { + "type": "git", + "url": "https://github.com/Yoast/PHPUnit-Polyfills.git", + "reference": "1a6aecc9ebe4a9cea4e1047d0e6c496e52314c27" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Yoast/PHPUnit-Polyfills/zipball/1a6aecc9ebe4a9cea4e1047d0e6c496e52314c27", + "reference": "1a6aecc9ebe4a9cea4e1047d0e6c496e52314c27", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "phpunit/phpunit": "^5.7.21 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0" + }, + "require-dev": { + "php-parallel-lint/php-console-highlighter": "^1.0.0", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "yoast/yoastcs": "^3.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.x-dev" + } + }, + "autoload": { + "files": [ + "phpunitpolyfills-autoload.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Team Yoast", + "email": "support@yoast.com", + "homepage": "https://yoast.com" + }, + { + "name": "Contributors", + "homepage": "https://github.com/Yoast/PHPUnit-Polyfills/graphs/contributors" + } + ], + "description": "Set of polyfills for changed PHPUnit functionality to allow for creating PHPUnit cross-version compatible tests", + "homepage": "https://github.com/Yoast/PHPUnit-Polyfills", + "keywords": [ + "phpunit", + "polyfill", + "testing" + ], + "support": { + "issues": "https://github.com/Yoast/PHPUnit-Polyfills/issues", + "security": "https://github.com/Yoast/PHPUnit-Polyfills/security/policy", + "source": "https://github.com/Yoast/PHPUnit-Polyfills" + }, + "time": "2025-08-10T05:13:49+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": {}, + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=8.1" + }, + "platform-dev": {}, + "platform-overrides": { + "php": "8.1" + }, + "plugin-api-version": "2.6.0" +} diff --git a/inc/namespace.php b/inc/namespace.php index 230be5a..4961a82 100644 --- a/inc/namespace.php +++ b/inc/namespace.php @@ -140,7 +140,7 @@ function maybe_render(): void { send_error( 401, 'Authentication required. Send an application password for a user holding the ' . CAPABILITY . ' capability.' ); } - // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- read-only route, authenticated above. + // phpcs:ignore WordPress.Security.NonceVerification.Recommended, HM.Security.ValidatedSanitizedInput.InputNotValidated -- read-only route, authenticated above; the index is guaranteed by the is_preview_request() guard at the top of this function. $value = sanitize_text_field( wp_unslash( (string) $_GET[ QUERY_VAR ] ) ); if ( '__manifest' === $value ) { diff --git a/inc/render.php b/inc/render.php index 9aecd92..44c520a 100644 --- a/inc/render.php +++ b/inc/render.php @@ -292,7 +292,9 @@ function wrapper_markup( array $attributes ): array { // JSON_HEX_TAG so no attribute value can carry an angle bracket into the // block comment and close it early. (string) wp_json_encode( $clean, JSON_HEX_TAG ), - esc_attr( implode( ' ', array_unique( array_filter( $classes ) ) ) ), + // No array_filter(): every branch above appends a literal prefix, so no + // entry can be empty even when a sanitized value is. + esc_attr( implode( ' ', array_unique( $classes ) ) ), '' === $style ? '' : sprintf( ' style="%s"', esc_attr( $style ) ) ); diff --git a/package-lock.json b/package-lock.json index 82da2a4..9f44411 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@humanmade/wp-pattern-library", - "version": "0.2.0", + "version": "0.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@humanmade/wp-pattern-library", - "version": "0.2.0", + "version": "0.3.0", "license": "GPL-2.0-or-later", "dependencies": { "playwright": "^1.62.0", @@ -15,688 +15,13510 @@ "bin": { "pattern-library": "bin/pattern-library.mjs" }, + "devDependencies": { + "@wordpress/env": "^11.14.0", + "@wordpress/eslint-plugin": "^25.10.0", + "eslint": "^9.39.5", + "globals": "^17.12.0" + }, "engines": { "node": ">=24" } }, - "node_modules/@emnapi/runtime": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz", - "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==", + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "tslib": "^2.4.0" + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@img/colour": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", - "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.3.tgz", - "integrity": "sha512-RMnFX7YQsMoh7lWfcM4NEHHymBX/rLuKNPVM84XE9ONPcaSCDgE7CHIHpSgPcO2xcRthgBy1HfNO319mwhIAkg==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], + "node_modules/@babel/core": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, "engines": { - "node": ">=20.9.0" + "node": ">=6.9.0" }, "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.3.2" + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.3.tgz", - "integrity": "sha512-Xo+5uFBtLN0BKqieTxiFzFPQAUlBbbH5iBKyRX/z1JrbnYsHTfKJnUfL8+p2TPXr1pXqao4eeL4Rl144uDpK9w==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], + "node_modules/@babel/core/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": { + "ms": "^2.1.3" + }, "engines": { - "node": ">=20.9.0" + "node": ">=6.0" }, - "funding": { - "url": "https://opencollective.com/libvips" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/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/@babel/core/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/@babel/eslint-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.29.7.tgz", + "integrity": "sha512-zxt+UJTOMKvUt3yOg+D58MLuz334pHp93qifMFcjIIO+9hN6t+ufw2gi7vDPMpxvfnHRR+3VVXvIjineCcgyXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.3.2" + "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/@img/sharp-freebsd-wasm32": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.3.tgz", - "integrity": "sha512-lUxcqWIj2wMQ9BrwNjngcr1gWUr5xgaGThBRqPPalIC2n67Cqj1uPh8NnA/ZhAg8hUbKl+kVHKwgUIwe6ZYPrg==", - "license": "Apache-2.0", - "optional": true, - "os": [ - "freebsd" - ], + "node_modules/@babel/eslint-parser/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/@babel/generator": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz", + "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", + "dev": true, + "license": "MIT", "dependencies": { - "@img/sharp-wasm32": "0.35.3" + "@babel/parser": "^7.29.8", + "@babel/types": "^7.29.8", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { - "node": ">=20.9.0" + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz", + "integrity": "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" }, - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.2.tgz", - "integrity": "sha512-9J6ypZFpQBj4YnePGoq/S38w6nz+vqg5WZLrLGY4YuSemdMq47GMLBPO42MzwdGwpg/agZ7xzZcFHa48xlywfg==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.2.tgz", - "integrity": "sha512-m2pW1n6cns9VaubNwsZ+c3CRYjxNQWgJ5gPlnL1nbBcpkBvFm6SCFN5o0psFHI8w9n11NKhFkeEDns98tiqbEw==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" } }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.2.tgz", - "integrity": "sha512-1eMLzy92I4J6rmi4mAT8yC3HxOtniyGELlzGbNMLLeqe052ahFQ0h6LFq+lh5DsDIdYViIDst08abvSbcEdLXQ==", - "cpu": [ - "arm" - ], - "libc": [ - "glibc" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@babel/helper-compilation-targets/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/@img/sharp-libvips-linux-arm64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.2.tgz", - "integrity": "sha512-dqVSFynCox4C/J8kT16V7SIFAns0IjgLwkvYT7p8LQVmJ5OS5b6tI9IGflxTeuBS//zXeFIUbwt5dwxyZ17cnA==", - "cpu": [ - "arm64" - ], - "libc": [ - "glibc" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz", + "integrity": "sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-member-expression-to-functions": "^7.29.7", + "@babel/helper-optimise-call-expression": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/traverse": "^7.29.7", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.2.tgz", - "integrity": "sha512-3z0NHDxD6n5I9gc05U1eW1AyRm+Gznzq3naMrthPNqE6oYykcogW0l/jfpJdjYnuNl8R7yI9pNbE1XiUeyq0Aw==", - "cpu": [ - "ppc64" - ], - "libc": [ - "glibc" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@babel/helper-create-class-features-plugin/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/@img/sharp-libvips-linux-riscv64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.2.tgz", - "integrity": "sha512-bsb4rI+NldGOsXuej2r8OdSS8+zXDVaCWxyWrcv6kneTOlgAHtZABRzBBCwdsPiD90J4myNJuHpg6kA20ImW/w==", - "cpu": [ - "riscv64" - ], - "libc": [ - "glibc" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.7.tgz", + "integrity": "sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.2.tgz", - "integrity": "sha512-/ABshyj8gCpyIrNXnHn4LorDJ0HHm1VhXPBlxZ8zAtfVPAaSafXPGn+sUSIRiwaSBy0mmFjSjiXI5mkcwdChKQ==", - "cpu": [ - "s390x" - ], - "libc": [ - "glibc" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@babel/helper-create-regexp-features-plugin/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/@img/sharp-libvips-linux-x64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.2.tgz", - "integrity": "sha512-ITPEtgffGJ0S6G9dRyw/366tJQqFRcHWPHhC+Stpg3Z8AEMrDrTr2lhdz4f/Y/HMbRh//7Z5mBzEpVdi62Oc3w==", - "cpu": [ - "x64" - ], - "libc": [ - "glibc" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", + "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.2.tgz", - "integrity": "sha512-zE9EdiUzUmg5mDT5a1rk5fYJ6GWPloTwWBYDS14naqHsL+EaMpDj1AWnpLgh3u0YCORv2Tt50wrcrpYqkP97Kw==", + "node_modules/@babel/helper-define-polyfill-provider/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": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/helper-define-polyfill-provider/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/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz", + "integrity": "sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz", + "integrity": "sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.29.7.tgz", + "integrity": "sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-wrap-function": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz", + "integrity": "sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.29.7", + "@babel/helper-optimise-call-expression": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz", + "integrity": "sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.29.7.tgz", + "integrity": "sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.29.7.tgz", + "integrity": "sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.29.7.tgz", + "integrity": "sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.29.7.tgz", + "integrity": "sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.7.tgz", + "integrity": "sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.29.7.tgz", + "integrity": "sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/plugin-transform-optional-chaining": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.29.7.tgz", + "integrity": "sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.29.7.tgz", + "integrity": "sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.29.7.tgz", + "integrity": "sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz", + "integrity": "sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.29.7.tgz", + "integrity": "sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.29.7.tgz", + "integrity": "sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.7.tgz", + "integrity": "sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-remap-async-to-generator": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.29.7.tgz", + "integrity": "sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-remap-async-to-generator": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.29.7.tgz", + "integrity": "sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.7.tgz", + "integrity": "sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.29.7.tgz", + "integrity": "sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.29.7.tgz", + "integrity": "sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.7.tgz", + "integrity": "sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.29.7.tgz", + "integrity": "sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/template": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.29.7.tgz", + "integrity": "sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.29.7.tgz", + "integrity": "sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.29.7.tgz", + "integrity": "sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.7.tgz", + "integrity": "sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.29.7.tgz", + "integrity": "sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.29.7.tgz", + "integrity": "sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-transform-destructuring": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.29.7.tgz", + "integrity": "sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.29.7.tgz", + "integrity": "sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.29.7.tgz", + "integrity": "sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.29.7.tgz", + "integrity": "sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.29.7.tgz", + "integrity": "sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.29.7.tgz", + "integrity": "sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.29.7.tgz", + "integrity": "sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.29.7.tgz", + "integrity": "sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.29.7.tgz", + "integrity": "sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz", + "integrity": "sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.8.tgz", + "integrity": "sha512-6iSnEK0zlkLKU4heofK/AdmRD4e2SHVpJMtrwnTCzhnaM98ria4rTrOXBBi45BTTYnJtO8txnPsX4fChYXkmeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.29.7.tgz", + "integrity": "sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.7.tgz", + "integrity": "sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.29.7.tgz", + "integrity": "sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.29.7.tgz", + "integrity": "sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.29.7.tgz", + "integrity": "sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.29.7.tgz", + "integrity": "sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-transform-destructuring": "^7.29.7", + "@babel/plugin-transform-parameters": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.29.7.tgz", + "integrity": "sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.29.7.tgz", + "integrity": "sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz", + "integrity": "sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.29.7.tgz", + "integrity": "sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.29.7.tgz", + "integrity": "sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.29.7.tgz", + "integrity": "sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.29.7.tgz", + "integrity": "sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.29.7.tgz", + "integrity": "sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-syntax-jsx": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.8.tgz", + "integrity": "sha512-0UpIXPtdDtMXfnV2OJAVMLpj3H/92vmkA6lpSRakmycJvj3VUy6Xs1dM8tXRugupykr5WB+LpiVl0J8LMVg2mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.29.7.tgz", + "integrity": "sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.29.7.tgz", + "integrity": "sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.7.tgz", + "integrity": "sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "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" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/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/@babel/plugin-transform-shorthand-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.29.7.tgz", + "integrity": "sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.8.tgz", + "integrity": "sha512-4S9ksMGVWUshvgK0mKfvZky7leuG5/uoFVwMpAomJ8bMoDJiNHRVmc1EglwW/CmGVSqqWpEbXm9FmbRit22qoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.29.7.tgz", + "integrity": "sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.29.7.tgz", + "integrity": "sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.29.7.tgz", + "integrity": "sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.29.7.tgz", + "integrity": "sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/plugin-syntax-typescript": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.29.7.tgz", + "integrity": "sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.29.7.tgz", + "integrity": "sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.29.7.tgz", + "integrity": "sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.29.7.tgz", + "integrity": "sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.7.tgz", + "integrity": "sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.29.7", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.29.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.29.7", + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^7.29.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.29.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.29.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.29.7", + "@babel/plugin-syntax-import-attributes": "^7.29.7", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.29.7", + "@babel/plugin-transform-async-generator-functions": "^7.29.7", + "@babel/plugin-transform-async-to-generator": "^7.29.7", + "@babel/plugin-transform-block-scoped-functions": "^7.29.7", + "@babel/plugin-transform-block-scoping": "^7.29.7", + "@babel/plugin-transform-class-properties": "^7.29.7", + "@babel/plugin-transform-class-static-block": "^7.29.7", + "@babel/plugin-transform-classes": "^7.29.7", + "@babel/plugin-transform-computed-properties": "^7.29.7", + "@babel/plugin-transform-destructuring": "^7.29.7", + "@babel/plugin-transform-dotall-regex": "^7.29.7", + "@babel/plugin-transform-duplicate-keys": "^7.29.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.7", + "@babel/plugin-transform-dynamic-import": "^7.29.7", + "@babel/plugin-transform-explicit-resource-management": "^7.29.7", + "@babel/plugin-transform-exponentiation-operator": "^7.29.7", + "@babel/plugin-transform-export-namespace-from": "^7.29.7", + "@babel/plugin-transform-for-of": "^7.29.7", + "@babel/plugin-transform-function-name": "^7.29.7", + "@babel/plugin-transform-json-strings": "^7.29.7", + "@babel/plugin-transform-literals": "^7.29.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.29.7", + "@babel/plugin-transform-member-expression-literals": "^7.29.7", + "@babel/plugin-transform-modules-amd": "^7.29.7", + "@babel/plugin-transform-modules-commonjs": "^7.29.7", + "@babel/plugin-transform-modules-systemjs": "^7.29.7", + "@babel/plugin-transform-modules-umd": "^7.29.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.7", + "@babel/plugin-transform-new-target": "^7.29.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.29.7", + "@babel/plugin-transform-numeric-separator": "^7.29.7", + "@babel/plugin-transform-object-rest-spread": "^7.29.7", + "@babel/plugin-transform-object-super": "^7.29.7", + "@babel/plugin-transform-optional-catch-binding": "^7.29.7", + "@babel/plugin-transform-optional-chaining": "^7.29.7", + "@babel/plugin-transform-parameters": "^7.29.7", + "@babel/plugin-transform-private-methods": "^7.29.7", + "@babel/plugin-transform-private-property-in-object": "^7.29.7", + "@babel/plugin-transform-property-literals": "^7.29.7", + "@babel/plugin-transform-regenerator": "^7.29.7", + "@babel/plugin-transform-regexp-modifiers": "^7.29.7", + "@babel/plugin-transform-reserved-words": "^7.29.7", + "@babel/plugin-transform-shorthand-properties": "^7.29.7", + "@babel/plugin-transform-spread": "^7.29.7", + "@babel/plugin-transform-sticky-regex": "^7.29.7", + "@babel/plugin-transform-template-literals": "^7.29.7", + "@babel/plugin-transform-typeof-symbol": "^7.29.7", + "@babel/plugin-transform-unicode-escapes": "^7.29.7", + "@babel/plugin-transform-unicode-property-regex": "^7.29.7", + "@babel/plugin-transform-unicode-regex": "^7.29.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.29.7", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz", + "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8", + "core-js-compat": "^3.48.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-env/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/@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==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.29.7.tgz", + "integrity": "sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "@babel/plugin-syntax-jsx": "^7.29.7", + "@babel/plugin-transform-modules-commonjs": "^7.29.7", + "@babel/plugin-transform-typescript": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz", + "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.8", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.8", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.8", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/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": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/traverse/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/@babel/types": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz", + "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@es-joy/jsdoccomment": { + "version": "0.50.2", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.50.2.tgz", + "integrity": "sha512-YAdE/IJSpwbOTiaURNCKECdAwqrJuFiZhylmesBcIRawtYKnBR2wxPhoIewMg+Yu+QuYvHfJNReWpoxGBKOChA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.6", + "@typescript-eslint/types": "^8.11.0", + "comment-parser": "1.4.1", + "esquery": "^1.6.0", + "jsdoc-type-pratt-parser": "~4.1.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-plugin-eslint-comments": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-4.7.2.tgz", + "integrity": "sha512-LF03qURSwEWm2dz5wtdDCzNk+7Opl0X7q6I3undsaIuNsEiNvRV3BCtqu14Q/6Pzg1tBj44LcxpW2EpSLZStZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^4.0.0", + "ignore": "^7.0.5" + }, + "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 || ^9.0.0 || ^10.0.0" + } + }, + "node_modules/@eslint-community/eslint-plugin-eslint-comments/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint-community/eslint-plugin-eslint-comments/node_modules/ignore": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.8.tgz", + "integrity": "sha512-YYNsSlXBjMk92SKnkwvB5LOVSa6OznlFUGcsvrFgNJbJCd0M1XKeFVRc8ZByeCqz32FivYNHJVooLmdqrmvp/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.10.1.tgz", + "integrity": "sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==", + "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" + } + }, + "node_modules/@eslint-community/eslint-utils/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", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/compat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-2.1.1.tgz", + "integrity": "sha512-rMcy8GSrwNzcISX/BlTDY/GLB4eCopEuy9woIls3To+15OLxykZrxxq+WUcylCPCQ6F4MujjBM1DX5V1aqI3Vw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "peerDependencies": { + "eslint": "^8.40 || 9 || 10" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "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": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.5" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/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": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@eslint/config-array/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": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/config-array/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/@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": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers/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": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz", + "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.7.tgz", + "integrity": "sha512-F42g89Qd5oAWtp0k0nnSrjziAKza7w8SVT4mStc18LZMaRb4J1HQAHLCalEtDCxrTuksx7NU9qsmeLwpOfPqWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "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.3.2", + "minimatch": "^3.1.5", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/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": { + "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/@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/brace-expansion": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/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": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", + "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/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": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/eslintrc/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/@eslint/js": { + "version": "9.39.5", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.5.tgz", + "integrity": "sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "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": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit/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": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "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": { + "@humanfs/types": "^0.15.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "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": { + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "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": ">=18.18.0" + } + }, + "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": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "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": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@img/colour": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.3.tgz", + "integrity": "sha512-RMnFX7YQsMoh7lWfcM4NEHHymBX/rLuKNPVM84XE9ONPcaSCDgE7CHIHpSgPcO2xcRthgBy1HfNO319mwhIAkg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.3.2" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.3.tgz", + "integrity": "sha512-Xo+5uFBtLN0BKqieTxiFzFPQAUlBbbH5iBKyRX/z1JrbnYsHTfKJnUfL8+p2TPXr1pXqao4eeL4Rl144uDpK9w==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.3.2" + } + }, + "node_modules/@img/sharp-freebsd-wasm32": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.3.tgz", + "integrity": "sha512-lUxcqWIj2wMQ9BrwNjngcr1gWUr5xgaGThBRqPPalIC2n67Cqj1uPh8NnA/ZhAg8hUbKl+kVHKwgUIwe6ZYPrg==", + "license": "Apache-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "dependencies": { + "@img/sharp-wasm32": "0.35.3" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.2.tgz", + "integrity": "sha512-9J6ypZFpQBj4YnePGoq/S38w6nz+vqg5WZLrLGY4YuSemdMq47GMLBPO42MzwdGwpg/agZ7xzZcFHa48xlywfg==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.2.tgz", + "integrity": "sha512-m2pW1n6cns9VaubNwsZ+c3CRYjxNQWgJ5gPlnL1nbBcpkBvFm6SCFN5o0psFHI8w9n11NKhFkeEDns98tiqbEw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.2.tgz", + "integrity": "sha512-1eMLzy92I4J6rmi4mAT8yC3HxOtniyGELlzGbNMLLeqe052ahFQ0h6LFq+lh5DsDIdYViIDst08abvSbcEdLXQ==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.2.tgz", + "integrity": "sha512-dqVSFynCox4C/J8kT16V7SIFAns0IjgLwkvYT7p8LQVmJ5OS5b6tI9IGflxTeuBS//zXeFIUbwt5dwxyZ17cnA==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.2.tgz", + "integrity": "sha512-3z0NHDxD6n5I9gc05U1eW1AyRm+Gznzq3naMrthPNqE6oYykcogW0l/jfpJdjYnuNl8R7yI9pNbE1XiUeyq0Aw==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.2.tgz", + "integrity": "sha512-bsb4rI+NldGOsXuej2r8OdSS8+zXDVaCWxyWrcv6kneTOlgAHtZABRzBBCwdsPiD90J4myNJuHpg6kA20ImW/w==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.2.tgz", + "integrity": "sha512-/ABshyj8gCpyIrNXnHn4LorDJ0HHm1VhXPBlxZ8zAtfVPAaSafXPGn+sUSIRiwaSBy0mmFjSjiXI5mkcwdChKQ==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.2.tgz", + "integrity": "sha512-ITPEtgffGJ0S6G9dRyw/366tJQqFRcHWPHhC+Stpg3Z8AEMrDrTr2lhdz4f/Y/HMbRh//7Z5mBzEpVdi62Oc3w==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.2.tgz", + "integrity": "sha512-zE9EdiUzUmg5mDT5a1rk5fYJ6GWPloTwWBYDS14naqHsL+EaMpDj1AWnpLgh3u0YCORv2Tt50wrcrpYqkP97Kw==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.2.tgz", + "integrity": "sha512-m0lrLiUt+lBYnCFr8qV/65yMR4E/c7/wf78I5eKTdkEakFAlZ9QlzEM3QIhhAwVeUhLAHLcCq7a7Vszq/oFNZQ==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.3.tgz", + "integrity": "sha512-affVWCTLooy8TSxbDx2qkzuDeaWLNVBA+P//FNBirHsXpP2fuBhk5AuboYUnrDnzoXes8GFjpTx0SBFOCRg+FA==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.3.2" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.3.tgz", + "integrity": "sha512-QgKDspHPnrU+GQ55XPhGwyhC8acLVOOSyAvo1oVfFmrIXLkDNmGWzAfDZ4xK8oSA1qBQrALcHX0G5UZni/SuFQ==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.3.2" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.3.tgz", + "integrity": "sha512-sMd8rDxmpLOwv/7N44klFjOD5DUO7FLdjiXDI0hoxYaf7Ar262dQIEkosE98bps+5HPLtp/EvNqeqQtOycP/IA==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.3.2" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.3.tgz", + "integrity": "sha512-0Eob78yjlYPfL5vMNWAW55l3R9Y6BQS/gOfe0ZcP9mEz9ohhKSt4im1hayiknXgf8AWrFqMvJcKIdmLmEe7yeQ==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.3.2" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.3.tgz", + "integrity": "sha512-KgAxQ0DxpNOq1rG2t5cgTgShJFGSuU7XO45cqC+1NVOuZnP6tlgZRuSYOfNupGkHID0o3cJOsw4DVeJpMovcGw==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.3.2" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.3.tgz", + "integrity": "sha512-8pqvxubL2PGdhlPy6GLqzDYMUjyRmKAwKHYKixpdJYBUK7PJ0C029XdsnpFIdgRZG68fZiGdHVWcKPvtiPB4cA==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.3.2" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.3.tgz", + "integrity": "sha512-Vz0iQjzzcSX3HCbfwFfCSG/9SCIqyO0mH2sXyiHaAYfBk0cRsCWXRyQYX0ovCK/PAQBbTzQ0dsPQHh5MAFL59w==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.3.2" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.3.tgz", + "integrity": "sha512-6O1NPKcDVj9QEdg7Hx549EX8U0rp6yXQERqru6yRN7fGBn32UvIRJUlWnk+8xDCiG76hXVBbX82NZ/ZKr0euIg==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.3.2" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.3.tgz", + "integrity": "sha512-cZ0XkcYGpHZkqW6iCkqTcmUC0CD9DhD5d/qeZlZkfRBn6GnHniZXLUo5+9xw8Iv76YE6LQFN9YNBlKREcCG76w==", + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.11.1" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-webcontainers-wasm32": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.3.tgz", + "integrity": "sha512-2rnq7bX3NzeR2T4YWgz8qiG4h3TSdMe+vN1iQXpJleSJ3SM5zQ8Fy2SyyXAWlbxpEZ2Y+Z4u1BePgJEYbSy80Q==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/sharp-wasm32": "0.35.3" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.3.tgz", + "integrity": "sha512-4bPwFdMbeC4JQ8L8LOyWp6nsHcboP5fxkp6iPOXz2Vg49R42TuMs2whkJ5OAP4/Ul035qOzy0AecOF9VOscn4w==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.3.tgz", + "integrity": "sha512-r53mXsBN6lFUDiST764SvgwUdHAqM4rPAiDzAmf4fLoB6X/rkfyTrLCg6+g17wJJiCmB3JYgHuUldCWUIRFSXw==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.3.tgz", + "integrity": "sha512-D4y1vNeZrIIJCN+uHaWVtH86B+aCrdMYYjicy9pXHvbGZeGYLLSd3wdVuC37FxVXlU1ARsk84eKWfWMXGYEqvA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@inquirer/ansi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/checkbox": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", + "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/confirm": { + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/editor": { + "version": "4.2.23", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", + "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/external-editor": "^1.0.3", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/expand": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", + "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/external-editor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^2.1.1", + "iconv-lite": "^0.7.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/input": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", + "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/number": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", + "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/password": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", + "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/prompts": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", + "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^4.3.2", + "@inquirer/confirm": "^5.1.21", + "@inquirer/editor": "^4.2.23", + "@inquirer/expand": "^4.0.23", + "@inquirer/input": "^4.3.1", + "@inquirer/number": "^3.0.23", + "@inquirer/password": "^4.0.23", + "@inquirer/rawlist": "^4.1.11", + "@inquirer/search": "^3.2.2", + "@inquirer/select": "^4.4.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/rawlist": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", + "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/search": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", + "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/select": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", + "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/type": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", + "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.3.0.tgz", + "integrity": "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "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==", + "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/@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": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "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": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "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", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz", + "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==", + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1" + } + }, + "node_modules/@kwsites/file-exists/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": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@kwsites/file-exists/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/@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.3.tgz", + "integrity": "sha512-UMduMbqO5s5zF2NkNacMT/yK5Y5QiKvWr2+50bzIIxFDwVJ2h49b+oyjaCGPhJxd2/gC2x39EHv/gHVuu36x2Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.3" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=23.5.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4", + "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@nodable/entities": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-3.0.0.tgz", + "integrity": "sha512-8L9xFeTYKhm49xfIypoe2W5wV1m/3Z58kT+7kR9A8OyFxcPduI4VmxaUMQyKYrRjUoLLSXv6EKKID5Tvj9cUVw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/nodable" + } + ], + "license": "MIT" + }, + "node_modules/@octokit/app": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@octokit/app/-/app-14.1.0.tgz", + "integrity": "sha512-g3uEsGOQCBl1+W1rgfwoRFUIR6PtvB2T1E4RpygeUU5LrLvlOqcxrt5lfykIeRpUPpupreGJUYl70fqMDXdTpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/auth-app": "^6.0.0", + "@octokit/auth-unauthenticated": "^5.0.0", + "@octokit/core": "^5.0.0", + "@octokit/oauth-app": "^6.0.0", + "@octokit/plugin-paginate-rest": "^9.0.0", + "@octokit/types": "^12.0.0", + "@octokit/webhooks": "^12.0.4" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/auth-app": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-6.1.4.tgz", + "integrity": "sha512-QkXkSOHZK4dA5oUqY5Dk3S+5pN2s1igPjEASNQV8/vgJgW034fQWR16u7VsNOK/EljA00eyjYF5mWNxWKWhHRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/auth-oauth-app": "^7.1.0", + "@octokit/auth-oauth-user": "^4.1.0", + "@octokit/request": "^8.3.1", + "@octokit/request-error": "^5.1.0", + "@octokit/types": "^13.1.0", + "deprecation": "^2.3.1", + "lru-cache": "npm:@wolfy1339/lru-cache@^11.0.2-patch.1", + "universal-github-app-jwt": "^1.1.2", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/auth-app/node_modules/@octokit/openapi-types": { + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", + "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/auth-app/node_modules/@octokit/types": { + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", + "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^24.2.0" + } + }, + "node_modules/@octokit/auth-oauth-app": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-7.1.0.tgz", + "integrity": "sha512-w+SyJN/b0l/HEb4EOPRudo7uUOSW51jcK1jwLa+4r7PA8FPFpoxEnHBHMITqCsc/3Vo2qqFjgQfz/xUUvsSQnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/auth-oauth-device": "^6.1.0", + "@octokit/auth-oauth-user": "^4.1.0", + "@octokit/request": "^8.3.1", + "@octokit/types": "^13.0.0", + "@types/btoa-lite": "^1.0.0", + "btoa-lite": "^1.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/openapi-types": { + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", + "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/types": { + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", + "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^24.2.0" + } + }, + "node_modules/@octokit/auth-oauth-device": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-6.1.0.tgz", + "integrity": "sha512-FNQ7cb8kASufd6Ej4gnJ3f1QB5vJitkoV1O0/g6e6lUsQ7+VsSNRHRmFScN2tV4IgKA12frrr/cegUs0t+0/Lw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/oauth-methods": "^4.1.0", + "@octokit/request": "^8.3.1", + "@octokit/types": "^13.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/openapi-types": { + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", + "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/types": { + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", + "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^24.2.0" + } + }, + "node_modules/@octokit/auth-oauth-user": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-4.1.0.tgz", + "integrity": "sha512-FrEp8mtFuS/BrJyjpur+4GARteUCrPeR/tZJzD8YourzoVhRics7u7we/aDcKv+yywRNwNi/P4fRi631rG/OyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/auth-oauth-device": "^6.1.0", + "@octokit/oauth-methods": "^4.1.0", + "@octokit/request": "^8.3.1", + "@octokit/types": "^13.0.0", + "btoa-lite": "^1.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/openapi-types": { + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", + "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/types": { + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", + "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^24.2.0" + } + }, + "node_modules/@octokit/auth-token": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/auth-unauthenticated": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-5.0.1.tgz", + "integrity": "sha512-oxeWzmBFxWd+XolxKTc4zr+h3mt+yofn4r7OfoIkR/Cj/o70eEGmPsFbueyJE2iBAGpjgTnEOKM3pnuEGVmiqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/core": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.2.tgz", + "integrity": "sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.1.0", + "@octokit/request": "^8.4.1", + "@octokit/request-error": "^5.1.1", + "@octokit/types": "^13.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/core/node_modules/@octokit/openapi-types": { + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", + "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/core/node_modules/@octokit/types": { + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", + "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^24.2.0" + } + }, + "node_modules/@octokit/endpoint": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz", + "integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/endpoint/node_modules/@octokit/openapi-types": { + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", + "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/endpoint/node_modules/@octokit/types": { + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", + "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^24.2.0" + } + }, + "node_modules/@octokit/graphql": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.1.tgz", + "integrity": "sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/request": "^8.4.1", + "@octokit/types": "^13.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/graphql/node_modules/@octokit/openapi-types": { + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", + "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/graphql/node_modules/@octokit/types": { + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", + "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^24.2.0" + } + }, + "node_modules/@octokit/oauth-app": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@octokit/oauth-app/-/oauth-app-6.1.0.tgz", + "integrity": "sha512-nIn/8eUJ/BKUVzxUXd5vpzl1rwaVxMyYbQkNZjHrF7Vk/yu98/YDF/N2KeWO7uZ0g3b5EyiFXFkZI8rJ+DH1/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/auth-oauth-app": "^7.0.0", + "@octokit/auth-oauth-user": "^4.0.0", + "@octokit/auth-unauthenticated": "^5.0.0", + "@octokit/core": "^5.0.0", + "@octokit/oauth-authorization-url": "^6.0.2", + "@octokit/oauth-methods": "^4.0.0", + "@types/aws-lambda": "^8.10.83", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/oauth-authorization-url": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-6.0.2.tgz", + "integrity": "sha512-CdoJukjXXxqLNK4y/VOiVzQVjibqoj/xHgInekviUJV73y/BSIcwvJ/4aNHPBPKcPWFnd4/lO9uqRV65jXhcLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/oauth-methods": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-4.1.0.tgz", + "integrity": "sha512-4tuKnCRecJ6CG6gr0XcEXdZtkTDbfbnD5oaHBmLERTjTMZNi2CbfEHZxPU41xXLDG4DfKf+sonu00zvKI9NSbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/oauth-authorization-url": "^6.0.2", + "@octokit/request": "^8.3.1", + "@octokit/request-error": "^5.1.0", + "@octokit/types": "^13.0.0", + "btoa-lite": "^1.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/oauth-methods/node_modules/@octokit/openapi-types": { + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", + "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/oauth-methods/node_modules/@octokit/types": { + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", + "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^24.2.0" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/plugin-paginate-graphql": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-graphql/-/plugin-paginate-graphql-4.0.1.tgz", + "integrity": "sha512-R8ZQNmrIKKpHWC6V2gum4x9LG2qF1RxRjo27gjQcG3j+vf2tLsEfE7I/wRWEPzYMaenr1M+qDAtNcwZve1ce1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": ">=5" + } + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.2.tgz", + "integrity": "sha512-u3KYkGF7GcZnSD/3UP0S7K5XUFT2FkOQdcfXZGZQPGv3lm4F2Xbf71lvjldr8c1H3nNbF+33cLEkWYbokGWqiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^12.6.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz", + "integrity": "sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^12.6.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" + } + }, + "node_modules/@octokit/plugin-retry": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.1.0.tgz", + "integrity": "sha512-WrO3bvq4E1Xh1r2mT9w6SDFg01gFmP81nIG77+p/MqW1JeXXgL++6umim3t6x0Zj5pZm3rXAN+0HEjmmdhIRig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^13.0.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" + } + }, + "node_modules/@octokit/plugin-retry/node_modules/@octokit/openapi-types": { + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", + "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/plugin-retry/node_modules/@octokit/types": { + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", + "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^24.2.0" + } + }, + "node_modules/@octokit/plugin-throttling": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-8.2.0.tgz", + "integrity": "sha512-nOpWtLayKFpgqmgD0y3GqXafMFuKcA4tRPZIfu7BArd2lEZeb1988nhWhwx4aZWmjDmUfdgVf7W+Tt4AmvRmMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^12.2.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "^5.0.0" + } + }, + "node_modules/@octokit/request": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.1.tgz", + "integrity": "sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/endpoint": "^9.0.6", + "@octokit/request-error": "^5.1.1", + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/request-error": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz", + "integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.1.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/request-error/node_modules/@octokit/openapi-types": { + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", + "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/request-error/node_modules/@octokit/types": { + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", + "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^24.2.0" + } + }, + "node_modules/@octokit/request/node_modules/@octokit/openapi-types": { + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", + "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/request/node_modules/@octokit/types": { + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", + "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^24.2.0" + } + }, + "node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^20.0.0" + } + }, + "node_modules/@octokit/webhooks": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-12.3.2.tgz", + "integrity": "sha512-exj1MzVXoP7xnAcAB3jZ97pTvVPkQF9y6GA/dvYC47HV7vLv+24XRS6b/v/XnyikpEuvMhugEXdGtAlU086WkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/request-error": "^5.0.0", + "@octokit/webhooks-methods": "^4.1.0", + "@octokit/webhooks-types": "7.6.1", + "aggregate-error": "^3.1.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/webhooks-methods": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-4.1.0.tgz", + "integrity": "sha512-zoQyKw8h9STNPqtm28UGOYFE7O6D4Il8VJwhAtMHFt2C4L0VQT1qGKLeefUOqHNs1mNRYSadVv7x0z8U2yyeWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/webhooks-types": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-7.6.1.tgz", + "integrity": "sha512-S8u2cJzklBC0FgTwWVLaM8tMrDuDMVE4xiTK4EYXM9GntyvrdbSoxqDQa+Fh57CCNApyIpyeqPhhFEmHPfrXgw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "license": "MIT" + }, + "node_modules/@php-wasm/cli-util": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@php-wasm/cli-util/-/cli-util-3.1.52.tgz", + "integrity": "sha512-/YP0JqY+l5SjB/kn3yeOe/Kdo88xUkIis3xbhtMivuARTBtxYC7tdHpW1uxJiw6dkmHR89tVFxiPA9PiZdS0/g==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@php-wasm/util": "3.1.52", + "fast-xml-parser": "^5.8.0", + "jsonc-parser": "3.3.1" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@php-wasm/logger": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@php-wasm/logger/-/logger-3.1.52.tgz", + "integrity": "sha512-Hr/pKVE4HPjQP4rwvAlZm0DvcEHlVFesHgAvASEc5LgOaKbULy7SVYvtozuuh1e+24Hg1n6CoxA0fKL+nsp+Dg==", + "dev": true, + "license": "GPL-2.0-or-later", + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@php-wasm/node": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@php-wasm/node/-/node-3.1.52.tgz", + "integrity": "sha512-5fRw4dMvLGfRKHLZ7iGANVNQ8eGcq8Of91NcKo6qW8TorAIwAhTz+RQHuFtjI2zC7bq21E3IHxLa2I8338yX5A==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@php-wasm/cli-util": "3.1.52", + "@php-wasm/logger": "3.1.52", + "@php-wasm/node-5-2": "3.1.52", + "@php-wasm/node-7-4": "3.1.52", + "@php-wasm/node-8-0": "3.1.52", + "@php-wasm/node-8-1": "3.1.52", + "@php-wasm/node-8-2": "3.1.52", + "@php-wasm/node-8-3": "3.1.52", + "@php-wasm/node-8-4": "3.1.52", + "@php-wasm/node-8-5": "3.1.52", + "@php-wasm/universal": "3.1.52", + "@php-wasm/util": "3.1.52", + "fs-ext-extra-prebuilt": "2.2.7", + "wasm-feature-detect": "1.8.0", + "ws": "8.21.0" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@php-wasm/node-5-2": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@php-wasm/node-5-2/-/node-5-2-3.1.52.tgz", + "integrity": "sha512-z/RzVUr9NPPIe/41VWyJJ5YETEbHwkbq9Jk5fLgc9xhkBDh8EmKRz3MptgvcQyF1IZyuPW4ADe3AZ+R24LrjQw==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@php-wasm/universal": "3.1.52", + "wasm-feature-detect": "1.8.0" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@php-wasm/node-7-4": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@php-wasm/node-7-4/-/node-7-4-3.1.52.tgz", + "integrity": "sha512-e31adpo6SOl7mlptVpHCJwtlDNZWbP/KvPVmkYubs5wtstAzY8YeGzYWndGDUh43SqBr+zxiB9CH2B77IgAyIg==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@php-wasm/universal": "3.1.52", + "wasm-feature-detect": "1.8.0" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@php-wasm/node-8-0": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@php-wasm/node-8-0/-/node-8-0-3.1.52.tgz", + "integrity": "sha512-+Po4d45fSqxgbPPeYRP7XNdc1oCGOWbuxluB0jJthA60LaTtLC4JEQ2B02BhE07gB2W+Nmvvf+HHY3e05JrvQw==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@php-wasm/universal": "3.1.52", + "wasm-feature-detect": "1.8.0" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@php-wasm/node-8-1": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@php-wasm/node-8-1/-/node-8-1-3.1.52.tgz", + "integrity": "sha512-H6wh4NDRTvDanVnumhN5dpSCUsKqBujW/84hHQcyZURGTS36frp1Runr5mmapRF/ZpyH7q+uG1kFzYEYkZIlaQ==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@php-wasm/universal": "3.1.52", + "wasm-feature-detect": "1.8.0" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@php-wasm/node-8-2": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@php-wasm/node-8-2/-/node-8-2-3.1.52.tgz", + "integrity": "sha512-+PIiU8whNov93e3VnojZik0dDciRkqwd+j2+nm4VDcXfHD9SewHP+k3chaUipTAhDDx8Q6fWYWa1CSGp5jrAtg==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@php-wasm/universal": "3.1.52", + "wasm-feature-detect": "1.8.0" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@php-wasm/node-8-3": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@php-wasm/node-8-3/-/node-8-3-3.1.52.tgz", + "integrity": "sha512-UNkxXw7qUfeS6jG0luztYGosZHZaVMiziaPwY6FFUH0FnHwhrtFpYLI86ksfOZMnS9BjDf7bryIrdr0160tIJQ==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@php-wasm/universal": "3.1.52", + "wasm-feature-detect": "1.8.0" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@php-wasm/node-8-4": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@php-wasm/node-8-4/-/node-8-4-3.1.52.tgz", + "integrity": "sha512-M7L3lU0co6dPPi3PHs3agG6eeOHAszyJfUq/KmrmRReBJNHyviEcHpaGKextGJArJLfMvAAZjrhGOWVMBrQc/w==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@php-wasm/universal": "3.1.52", + "wasm-feature-detect": "1.8.0" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@php-wasm/node-8-5": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@php-wasm/node-8-5/-/node-8-5-3.1.52.tgz", + "integrity": "sha512-7Y6EkujT5tUTiZKZYVsG8L7cAlLvpl6X5TX+SP1C7YZnxnpZBafX4j/4reQGrYTKdvrK/8NklRH73BQkXhYWhg==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@php-wasm/universal": "3.1.52", + "wasm-feature-detect": "1.8.0" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@php-wasm/progress": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@php-wasm/progress/-/progress-3.1.52.tgz", + "integrity": "sha512-Zr4pHQDyX+OhkiLm830x0nt38L6ZRK3cWJMJNYSxvhlN7YKEmTHoA8hifchIE7OfgpF++s0rORXoBvEX5MmteA==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@php-wasm/logger": "3.1.52" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@php-wasm/scopes": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@php-wasm/scopes/-/scopes-3.1.52.tgz", + "integrity": "sha512-1+f6czXaQVtO+LT8Bx9gORg/dQ+L5M7Kkp1Bk69RJE9nde6ZO/ex/wLymCx0nORHN01k6csqG2j/Nnew4KLRLg==", + "dev": true, + "license": "GPL-2.0-or-later", + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@php-wasm/stream-compression": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@php-wasm/stream-compression/-/stream-compression-3.1.52.tgz", + "integrity": "sha512-RpCCUpF/BwPLbqhUWxHz4utRtu5gSM66SaCFQkxdjAGI5yitaptsu1W6Z7Wp2UDabF3g1qfKfDog0JQ3D9azcw==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@php-wasm/util": "3.1.52" + } + }, + "node_modules/@php-wasm/universal": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@php-wasm/universal/-/universal-3.1.52.tgz", + "integrity": "sha512-vgEV73SfpECzcCuTmr8+tGEzK6syk0p2I6E5CX2kJaE1/prCc4x5DyZtQ0dwhnzcEGrbhKDL2mpxxgl4B9fQOA==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@php-wasm/logger": "3.1.52", + "@php-wasm/progress": "3.1.52", + "@php-wasm/stream-compression": "3.1.52", + "@php-wasm/util": "3.1.52", + "ini": "4.1.2" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@php-wasm/util": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@php-wasm/util/-/util-3.1.52.tgz", + "integrity": "sha512-lwxtwyIXEO8537eCv5iBfx1WW+DhSYc6obgtTQ6Up85GbHCE050n0RbOWva4XBu7T3Y5PfQshPoPccM/l14chA==", + "dev": true, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@php-wasm/web-service-worker": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@php-wasm/web-service-worker/-/web-service-worker-3.1.52.tgz", + "integrity": "sha512-jEajg31JjVEdLX9yeQ1pa34dtztfMiz6I5y20/LZ3NADO9NrSvcAPsjYf2NkN4cpUDz4mKs6hkOskA6gd1CVxw==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@php-wasm/scopes": "3.1.52", + "@php-wasm/universal": "3.1.52" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@php-wasm/xdebug-bridge": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@php-wasm/xdebug-bridge/-/xdebug-bridge-3.1.52.tgz", + "integrity": "sha512-I5yMzjRe+Ivh6N2e5QSh8Fy3VN9WIv7YFhqFOlN3eq0UKCt3gDERCOtt96VMulWYH2m8qmYvpcX20h6p3T2Hyw==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@php-wasm/logger": "3.1.52", + "@php-wasm/universal": "3.1.52", + "ws": "8.21.0", + "xml2js": "0.6.2", + "yargs": "17.7.2" + }, + "bin": { + "xdebug-bridge": "xdebug-bridge.js" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@php-wasm/xdebug-bridge/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@php-wasm/xdebug-bridge/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@php-wasm/xdebug-bridge/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.3.6.tgz", + "integrity": "sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@simple-git/args-pathspec": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@simple-git/args-pathspec/-/args-pathspec-1.0.3.tgz", + "integrity": "sha512-ngJMaHlsWDTfjyq9F3VIQ8b7NXbBLq5j9i5bJ6XLYtD6qlDXT7fdKY2KscWWUF8t18xx052Y/PUO1K1TRc9yKA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@simple-git/argv-parser": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@simple-git/argv-parser/-/argv-parser-1.1.1.tgz", + "integrity": "sha512-Q9lBcfQ+VQCpQqGJFHe5yooOS5hGdLFFbJ5R+R5aDsnkPCahtn1hSkMcORX65J2Z5lxSkD0lQorMsncuBQxYUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@simple-git/args-pathspec": "^1.0.3" + } + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "license": "MIT", + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@tannin/compile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@tannin/compile/-/compile-1.1.0.tgz", + "integrity": "sha512-n8m9eNDfoNZoxdvWiTfW/hSPhehzLJ3zW7f8E7oT6mCROoMNWCB4TYtv041+2FMAxweiE0j7i1jubQU4MEC/Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tannin/evaluate": "^1.2.0", + "@tannin/postfix": "^1.1.0" + } + }, + "node_modules/@tannin/evaluate": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tannin/evaluate/-/evaluate-1.2.0.tgz", + "integrity": "sha512-3ioXvNowbO/wSrxsDG5DKIMxC81P0QrQTYai8zFNY+umuoHWRPbQ/TuuDEOju9E+jQDXmj6yI5GyejNuh8I+eg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tannin/plural-forms": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@tannin/plural-forms/-/plural-forms-1.1.0.tgz", + "integrity": "sha512-xl9R2mDZO/qiHam1AgMnAES6IKIg7OBhcXqy6eDsRCdXuxAFPcjrej9HMjyCLE0DJ/8cHf0i5OQTstuBRhpbHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tannin/compile": "^1.1.0" + } + }, + "node_modules/@tannin/postfix": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@tannin/postfix/-/postfix-1.1.0.tgz", + "integrity": "sha512-oocsqY7g0cR+Gur5jRQLSrX2OtpMLMse1I10JQBm8CdGMrDkh1Mg2gjsiquMHRtBs4Qwu5wgEp5GgIYHk4SNPw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tannin/sprintf": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@tannin/sprintf/-/sprintf-1.3.3.tgz", + "integrity": "sha512-RwARl+hFwhzy0tg9atWcchLFvoQiOh4rrP7uG2N5E4W80BPCUX0ElcUR9St43fxB9EfjsW2df9Qp+UsTbvQDjA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", + "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/aws-lambda": { + "version": "8.10.163", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.163.tgz", + "integrity": "sha512-+4zuoEB3S8RIhimtOFT7zAEk2SbpwrKjjGl9CyYnQR6k08uynxfauIIB0pDU1ssr05F8oyGiETwpn+8eXZMqPw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/btoa-lite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/btoa-lite/-/btoa-lite-1.0.2.tgz", + "integrity": "sha512-ZYbcE2x7yrvNFJiU7xJGrpF/ihpkM7zKgw8bha3LNJSesvTtUNxbpzaT7WXBIryf6jovisrxTBvymxMeLLj1Mg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==", + "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/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jsonwebtoken": { + "version": "9.0.10", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.10.tgz", + "integrity": "sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/ms": "*", + "@types/node": "*" + } + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/mousetrap": { + "version": "1.6.15", + "resolved": "https://registry.npmjs.org/@types/mousetrap/-/mousetrap-1.6.15.tgz", + "integrity": "sha512-qL0hyIMNPow317QWW/63RvL1x5MVMV+Ru3NaY9f/CuEpCqrmb7WeuK2071ZY5hczOnm38qExWM2i2WtkXLSqFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "26.4.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.4.1.tgz", + "integrity": "sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~8.3.0" + } + }, + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.69.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.69.0.tgz", + "integrity": "sha512-t5jQTKPIgVW1PE6dR6H6Qz5gm8zjMlX5/2gRaOGd9eO6V7J+tQc6iWKukEe7dY8u9HyYasQ0yfF0/FSSTEO2gA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.69.0", + "@typescript-eslint/type-utils": "8.69.0", + "@typescript-eslint/utils": "8.69.0", + "@typescript-eslint/visitor-keys": "8.69.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.69.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.8.tgz", + "integrity": "sha512-YYNsSlXBjMk92SKnkwvB5LOVSa6OznlFUGcsvrFgNJbJCd0M1XKeFVRc8ZByeCqz32FivYNHJVooLmdqrmvp/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.69.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.69.0.tgz", + "integrity": "sha512-l4b0DhWioGg6Gt2ebGlvfkFMOjRsauxtsnDRwUSRX1qHq3HdTfQHV8wW9zEXeciai6HfeaKOedQn2Zoofx3WBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.69.0", + "@typescript-eslint/types": "8.69.0", + "@typescript-eslint/typescript-estree": "8.69.0", + "@typescript-eslint/visitor-keys": "8.69.0", + "debug": "^4.4.3" + }, + "engines": { + "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/@typescript-eslint/parser/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": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/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/@typescript-eslint/project-service": { + "version": "8.69.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.69.0.tgz", + "integrity": "sha512-yi4obFrHMmnsesWehHbkg9zMA7Jt8cXT+mKM08G999pH1yT6nqgsHx7MYm0uY1wAj8CqiBXYRJ7WAT0QdQHQXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.69.0", + "@typescript-eslint/types": "^8.69.0", + "debug": "^4.4.3" + }, + "engines": { + "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/@typescript-eslint/project-service/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": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/project-service/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/@typescript-eslint/scope-manager": { + "version": "8.69.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.69.0.tgz", + "integrity": "sha512-ewfspqWvSxKSOaplqAUNbaSFO0eB6w1EtQ+esfYFRm3614Ty4uNtExkcbgd6nWsXphbqKyf9ZYdbZdv2xEoWEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.69.0", + "@typescript-eslint/visitor-keys": "8.69.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.69.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.69.0.tgz", + "integrity": "sha512-xNqK7YTDZsLniQMV/4rpFR8Z5JlqeRvVjuG1YgF/mdPVH84HSD19L8CczMA0qg2RfwEV231GHH3VnToJDo4MfQ==", + "dev": true, + "license": "MIT", + "engines": { + "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/@typescript-eslint/type-utils": { + "version": "8.69.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.69.0.tgz", + "integrity": "sha512-ZfoJAVg3JZndQEpEl9petVlxau3lRuElc4HRMuAlLCf8to04/iHz692RUSNmXKDjEuJmIL+KZ2/BsOcBc16dsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.69.0", + "@typescript-eslint/typescript-estree": "8.69.0", + "@typescript-eslint/utils": "8.69.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "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/@typescript-eslint/type-utils/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": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/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/@typescript-eslint/types": { + "version": "8.69.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.69.0.tgz", + "integrity": "sha512-K3VrubUPhlo9VDBS6QdI8YB5j7ClpqLRdefcz6PFrhnwicehBweqQ9Evhl4l+FYz0HdDmMqIiSX0aldGRYtDCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.69.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.69.0.tgz", + "integrity": "sha512-AdFkgqck3Vudb/kWnxlyafU/4aBhHrbQ9locP2N4psXTy5mOBg0SHJumnLvx7r6g1gV4DKvUFwV2nJZBoqOD8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.69.0", + "@typescript-eslint/tsconfig-utils": "8.69.0", + "@typescript-eslint/types": "8.69.0", + "@typescript-eslint/visitor-keys": "8.69.0", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "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/@typescript-eslint/typescript-estree/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", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", + "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/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": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.8" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/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/@typescript-eslint/utils": { + "version": "8.69.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.69.0.tgz", + "integrity": "sha512-tUbx60BBqQa31kXF5MCsOOLL5E/WzUuxIn7YpAvq+eaUlqvk8/NXnXMBNAdLCr0icjkzem7iUA5QqWHe/hJ1aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.69.0", + "@typescript-eslint/types": "8.69.0", + "@typescript-eslint/typescript-estree": "8.69.0" + }, + "engines": { + "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/@typescript-eslint/visitor-keys": { + "version": "8.69.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.69.0.tgz", + "integrity": "sha512-+rmdgPA+EXkNgKYvHvFfhrs35utXbwaC5PGpDquSXcoXQDKUA5UjV0LmTucG/4JXkM31BTu4TilHtrN8IVBe8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.69.0", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "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": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.12.2.tgz", + "integrity": "sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.12.2.tgz", + "integrity": "sha512-YGCRZv/9GLhwmz6mYDeTsm/92BAyR28l6c2ReweVW5pWgfsitWLY8upvfRlGdoyD8HjeTHSYJWyZGD4KJA/nFQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.12.2.tgz", + "integrity": "sha512-u9DiNT1auQMO20A9SyTuG3wUgQWB9Z7KjAg0uFuCDR1FsAY8A0CG2S6JpHS1xwm/w1G08bjXZDcyOCjv1WAm2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.12.2.tgz", + "integrity": "sha512-f7rPLi/T1HVKZu/u6t87lroib16n8vrSzcyxI7lg4BGO9UF26KhQL44sd9eOUgrTYhvRXtWOIZT5PejdPyJfUA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.12.2.tgz", + "integrity": "sha512-BpcOjWCJub6nRZUS2zA20pmLvjtqAtGejETaIyRLiZiQf++cbrjltLA5NN/xaXfqeOBOSlMFbemIl5/S5tljmg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.12.2.tgz", + "integrity": "sha512-vZTDvdSISZjJx66OzJqtsOhzifbqRjbmI1Mnu49fQDwog5GtDI4QidRiEAYbZCRj9C8YZEW+3ZjqsyS9GR4k2A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.12.2.tgz", + "integrity": "sha512-BiPI+IrIlwcW4nLLMM21+B1dFPzd55yAVgVGrdgDjNef+ch03GdxrcyaIz8X9SsQirh/kCQ7mviyWlMxdh2D7g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.12.2.tgz", + "integrity": "sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.12.2.tgz", + "integrity": "sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-loong64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-loong64-gnu/-/resolver-binding-linux-loong64-gnu-1.12.2.tgz", + "integrity": "sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-loong64-musl": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-loong64-musl/-/resolver-binding-linux-loong64-musl-1.12.2.tgz", + "integrity": "sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==", + "cpu": [ + "loong64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.12.2.tgz", + "integrity": "sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.12.2.tgz", + "integrity": "sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.12.2.tgz", + "integrity": "sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.12.2.tgz", + "integrity": "sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.12.2.tgz", + "integrity": "sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.12.2.tgz", + "integrity": "sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-openharmony-arm64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-openharmony-arm64/-/resolver-binding-openharmony-arm64-1.12.2.tgz", + "integrity": "sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.12.2.tgz", + "integrity": "sha512-tYFDIkMxSflfEc/h92ZWNsZlHSwgimbNHSO3PL2JWQHfCuC2q316jMyYU9TIWZsFK2bQwyK5VAdYgn8ygPj69A==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.10.0", + "@emnapi/runtime": "1.10.0", + "@napi-rs/wasm-runtime": "^1.1.4" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi/node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.12.2.tgz", + "integrity": "sha512-qzNyg3xL0VPQmCaUh+N5jSitce6k+uCBfMDesWRnlULOZaqUkaJ0ybdT+UqlAWJoQjuqfIU/0Ptx9bteN4D82g==", "cpu": [ "arm64" ], - "libc": [ - "musl" + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.12.2.tgz", + "integrity": "sha512-WD9sY00OfpHVGfsnHZoA8jVT+esS/Bg8z8jzxp5BnDCjjwsuKsPQrzswwpFy4J1AUJbXPRfkpcX0mXrzeXW79g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.12.2.tgz", + "integrity": "sha512-nAB74NfSNKknqQ1RrYj6uz8FcXEomu/MATJZxh/x+BArzN2U3JbOYC0APYzUIGhVY3m5hRxA8VPNdPBoG8txlA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@wordpress/babel-preset-default": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-8.54.0.tgz", + "integrity": "sha512-L2X5Neh5qTpa7THqBFATmGnfnhXsAGrDCwNYJSJ6pfgnCSyXNPKR07bbU0hreVTl1G+c42di4z7PH8sFdUxLdA==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@babel/core": "^7.25.7", + "@babel/plugin-syntax-import-attributes": "^7.26.0", + "@babel/plugin-transform-react-jsx": "^7.25.7", + "@babel/plugin-transform-runtime": "^7.25.7", + "@babel/preset-env": "^7.25.7", + "@babel/preset-typescript": "^7.25.7", + "@wordpress/browserslist-config": "^6.54.0", + "@wordpress/warning": "^3.54.0", + "browserslist": "^4.28.4", + "core-js": "^3.31.0", + "react": "^18.3.1" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/babel-preset-default/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@wordpress/browserslist-config": { + "version": "6.54.0", + "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-6.54.0.tgz", + "integrity": "sha512-6fH6DVILWiAhDgtCvEe8ZMOkKdBaJXXs68cKVnUJVPv8pZTCsJ3zABoUAxoj6U0Kiu65leSO/mMyoP7lJmcgJQ==", + "dev": true, + "license": "GPL-2.0-or-later", + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/compose": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-8.7.0.tgz", + "integrity": "sha512-wx+J+ffWOiKhFsmCLio9dE8JGK1/xh6IIEuVqQ7KV/Hakrwt6C1Zdfyhv+6tiNzYowB9gX2aXi5ESnHtDNzd5Q==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^4.54.0", + "@wordpress/dom": "^4.54.0", + "@wordpress/element": "^8.6.0", + "@wordpress/is-shallow-equal": "^5.54.0", + "@wordpress/keycodes": "^4.54.0", + "@wordpress/priority-queue": "^3.54.0", + "@wordpress/private-apis": "^1.54.0", + "@wordpress/undo-manager": "^1.54.0", + "change-case": "^4.1.2", + "mousetrap": "^1.6.5", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "@types/react": "^18 || ^19", + "react": "^18 || ^19" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@wordpress/compose/node_modules/use-memo-one": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz", + "integrity": "sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@wordpress/deprecated": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-4.54.0.tgz", + "integrity": "sha512-CpTcvBtDLStxslBm2HvMrQVbZ8cS0iYjKQvaW2vJcJxf+C0CDO0bS86juBnjcxtSRXFPGtBhxx6DKVP6L3pntw==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@wordpress/hooks": "^4.54.0" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/dom": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-4.54.0.tgz", + "integrity": "sha512-HcxOhNVwkFqOakvViddUsSjjkbqHyRhFqmjkPJpiLWWtuIaCzIenPhT/GJID8W8MgLhWFU87krLDXg3yJuLnzQ==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@wordpress/deprecated": "^4.54.0" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/element": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-8.6.0.tgz", + "integrity": "sha512-9stRsEfNoJf7K3jmP4GEvdUPdRqUn/JCYobSsrDzREmaAKNy1OBVW5ZqgK3/s+hbKBlkX8WKU48sTgJ/9aqCzQ==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@wordpress/deprecated": "^4.54.0", + "@wordpress/escape-html": "^3.54.0", + "change-case": "^4.1.2", + "is-plain-object": "^5.1.0" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "@types/react": "^18 || ^19", + "@types/react-dom": "^18 || ^19", + "react": "^18 || ^19", + "react-dom": "^18 || ^19" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@wordpress/env": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/env/-/env-11.14.0.tgz", + "integrity": "sha512-Q/XUhGjFJtlfybw/mq+7H5MsF2u3zWH5YxNR5y473+CeIjZx20wt5Dx0RDHAJcG2ICTky4pJevNlIq/EFnUwIQ==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@inquirer/prompts": "^7.2.0", + "@wp-playground/cli": "^3.0.48", + "adm-zip": "^0.6.0", + "chalk": "^4.1.1", + "copy-dir": "^1.3.0", + "cross-spawn": "^7.0.6", + "docker-compose": "^0.24.3", + "got": "^11.8.5", + "js-yaml": "^3.15.0", + "ora": "^4.0.2", + "rimraf": "^5.0.10", + "simple-git": "^3.32.3", + "yargs": "^17.3.0" + }, + "bin": { + "wp-env": "bin/wp-env" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/escape-html": { + "version": "3.54.0", + "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-3.54.0.tgz", + "integrity": "sha512-dbXSgUZgJ4KcZF9OLO+suayc7PxptZ0qhSE1bgJraD8bnk/jkaCohp5J7WQKzTWw1OSiJtQFZLw2T+BnyqQOpA==", + "dev": true, + "license": "GPL-2.0-or-later", + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/eslint-plugin": { + "version": "25.10.0", + "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-25.10.0.tgz", + "integrity": "sha512-Lx3LVVVQuhCOfwVQDUL7Mh8c++y/JKHh+GozJmYNEyOosEZGW+LFTWS6GQiqoR3d4qIRJTZ3lRlmRf0Md568aQ==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@babel/eslint-parser": "^7.28.6", + "@eslint-community/eslint-plugin-eslint-comments": "^4.7.0", + "@eslint/compat": "^2.0.0", + "@wordpress/babel-preset-default": "^8.54.0", + "@wordpress/prettier-config": "^4.54.0", + "@wordpress/theme": "^2.0.0", + "cosmiconfig": "^7.0.0", + "eslint-config-prettier": "^10.0.0", + "eslint-import-resolver-typescript": "^4.4.4", + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-jest": "^29.16.0", + "eslint-plugin-jsdoc": "^50.0.0", + "eslint-plugin-jsx-a11y": "^6.10.0", + "eslint-plugin-playwright": "^2.1.0", + "eslint-plugin-prettier": "^5.5.5", + "eslint-plugin-react": "^7.37.0", + "eslint-plugin-react-hooks": "^7.1.1", + "globals": "^16.0.0", + "requireindex": "^1.2.0", + "typescript-eslint": "^8.57.1" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "@babel/core": ">=7", + "eslint": "^9.0.0 || ^10.0.0", + "prettier": ">=3", + "typescript": ">=5" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/@wordpress/eslint-plugin/node_modules/globals": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wordpress/hooks": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-4.54.0.tgz", + "integrity": "sha512-9eMe48ixxAd+ILuXe3n+zOc1XlphfPppf0drTuJEjJy0xGXV7eUw459KEvk4KCrznb9pKemHjj4mGjogV5f1CQ==", + "dev": true, + "license": "GPL-2.0-or-later", + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/i18n": { + "version": "6.27.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-6.27.0.tgz", + "integrity": "sha512-6+mBSNGrB9EvnGa33tgNzZ7/vq98yCJ75eX81CU1XBKcoIvPcz5/G+zURpSuoOwAgAYaCxoXMDFX4gJDJjSbaw==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@tannin/sprintf": "^1.3.2", + "@wordpress/hooks": "^4.54.0", + "gettext-parser": "^1.3.1", + "tannin": "^1.2.0" + }, + "bin": { + "pot-to-php": "tools/pot-to-php.js" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/is-shallow-equal": { + "version": "5.54.0", + "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-5.54.0.tgz", + "integrity": "sha512-j5mskkhAD3jWrgNSdoSsexos1dxI9EQftfAZAbI2GZwFi6I20cgSrktgCewAUSZDqJ+vPwaJs0bTDhtUDMHXLg==", + "dev": true, + "license": "GPL-2.0-or-later", + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/keycodes": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-4.54.0.tgz", + "integrity": "sha512-WeaKup+THfx62hGOOVZpeK0AvEA0d3xwWo2P44pUbUKaBFydTXWqmm7HNsZ7bX9lDdk7JshuLSwhpHfwFPOQEw==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@wordpress/i18n": "^6.27.0" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "@types/react": "^18 || ^19" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@wordpress/prettier-config": { + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/@wordpress/prettier-config/-/prettier-config-4.54.0.tgz", + "integrity": "sha512-uwiRJ3S2d/T/+ZwB2HjehVfu3rw+LYBjSiJcE/CSxbBC7eobtQ3WZsNsUc5p1M7Be6orpowtl2wtAFg/bUDJuA==", + "dev": true, + "license": "GPL-2.0-or-later", + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "prettier": ">=3" + } + }, + "node_modules/@wordpress/priority-queue": { + "version": "3.54.0", + "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-3.54.0.tgz", + "integrity": "sha512-YOJAKb80OFzHCdamyfKu9L3k+AZWexo5f1Jjm8HFs3+6CIxmkPyTe7uYccpRvmgag8MkVAdus/VaO5thzOy+gA==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "requestidlecallback": "^0.3.0" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/private-apis": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/@wordpress/private-apis/-/private-apis-1.54.0.tgz", + "integrity": "sha512-OOZXNT5O0D+w6pPipc0RYIfxxNQm8ahzQjIyYkVq6Qep6sq9sXut6cjgiznOApIywQNCsVOn/S34anZ4f2ONMg==", + "dev": true, + "license": "GPL-2.0-or-later", + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/style-runtime": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@wordpress/style-runtime/-/style-runtime-0.10.0.tgz", + "integrity": "sha512-yZm2r8qzt++oW+4X2UEHl2FBuO/9O+BazXsQbSjGxcabA2g4apjBH2pEZqKbdbNqlArkj5KZm0LCxY1p6DKYTQ==", + "dev": true, + "license": "GPL-2.0-or-later", + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@wordpress/theme": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/theme/-/theme-2.0.0.tgz", + "integrity": "sha512-4yFei1ayJinMOVY6cTzKZV961p2Vjex9Nst1SReIFKv3ckb6ih5QN+qMpJQdpuukwabXrBTaoiA4ZB1akl2CfQ==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@wordpress/compose": "^8.7.0", + "@wordpress/deprecated": "^4.54.0", + "@wordpress/element": "^8.6.0", + "@wordpress/private-apis": "^1.54.0", + "@wordpress/style-runtime": "^0.10.0", + "colorjs.io": "^0.7.1", + "memize": "^2.1.1" + }, + "engines": { + "node": "^20.19.0 || >=22.13.0", + "npm": ">=10.2.3" + }, + "peerDependencies": { + "@types/react": "^18 || ^19", + "esbuild": ">=0.27.2 <1.0.0", + "postcss": "^8.0.0", + "react": "^18 || ^19", + "react-dom": "^18 || ^19", + "stylelint": "^16 || ^17", + "vite": "^7 || ^8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "postcss": { + "optional": true + }, + "stylelint": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@wordpress/undo-manager": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/@wordpress/undo-manager/-/undo-manager-1.54.0.tgz", + "integrity": "sha512-6b10QkKqvvWl1v67CXT04V/eM9dOzSoTcu7ZenA8ZmImLjYT1fDJ5ckJnldY5HkCMO8STd6gnJMgs/ZkXYv35A==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@wordpress/is-shallow-equal": "^5.54.0" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/warning": { + "version": "3.54.0", + "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.54.0.tgz", + "integrity": "sha512-0QWxBc/CHQdgzTwnUg+Ha5Ir0qyuIQUDzA2gmGSbbVshgm3d5FugLGpZHL1/S2+KlczyjKS2fftDJmK1dxdsEg==", + "dev": true, + "license": "GPL-2.0-or-later", + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wp-playground/blueprints": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@wp-playground/blueprints/-/blueprints-3.1.52.tgz", + "integrity": "sha512-K4QieiesG8MgZnKQerObS7dON4ngZCDt32aqnYLeaTiSJ2jFXqMcfBXH8MjFO3KVncJsTfU2euh8OtDV1fKkqA==", + "dev": true, + "dependencies": { + "@php-wasm/logger": "3.1.52", + "@php-wasm/progress": "3.1.52", + "@php-wasm/stream-compression": "3.1.52", + "@php-wasm/universal": "3.1.52", + "@php-wasm/util": "3.1.52", + "@php-wasm/web-service-worker": "3.1.52", + "@wp-playground/common": "3.1.52", + "@wp-playground/storage": "3.1.52", + "@wp-playground/wordpress": "3.1.52", + "ajv": "8.18.0" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@wp-playground/cli": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@wp-playground/cli/-/cli-3.1.52.tgz", + "integrity": "sha512-NXApYcnZwKGOL/E6rdAwHKXbyPFMRIBKF9SX/TlxH9TOgBef0eblwjylnxnYzdAuiOzdJT7PhO4gJw2WSFTZAw==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@php-wasm/cli-util": "3.1.52", + "@php-wasm/logger": "3.1.52", + "@php-wasm/node": "3.1.52", + "@php-wasm/progress": "3.1.52", + "@php-wasm/universal": "3.1.52", + "@php-wasm/util": "3.1.52", + "@php-wasm/xdebug-bridge": "3.1.52", + "@wp-playground/blueprints": "3.1.52", + "@wp-playground/common": "3.1.52", + "@wp-playground/storage": "3.1.52", + "@wp-playground/tools": "3.1.52", + "@wp-playground/wordpress": "3.1.52", + "express": "4.22.2", + "fs-extra": "11.1.1", + "tmp-promise": "3.0.3", + "wasm-feature-detect": "1.8.0", + "yargs": "17.7.2" + }, + "bin": { + "wp-playground-cli": "wp-playground.js" + } + }, + "node_modules/@wp-playground/cli/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@wp-playground/cli/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wp-playground/cli/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wp-playground/common": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@wp-playground/common/-/common-3.1.52.tgz", + "integrity": "sha512-QGE8CdykgfVEjqRKMXMFsXOwh3MV26FkXJ4c/HzsKKAaRt+zwp7BAK2s6jht40iz9TVDR3ZPcpBrSltfmjIshQ==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@php-wasm/universal": "3.1.52", + "@php-wasm/util": "3.1.52" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@wp-playground/storage": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@wp-playground/storage/-/storage-3.1.52.tgz", + "integrity": "sha512-hUQLdZ5iSC8Y01o06aMK/m9DZmMjo2cgl52MvXxR8Cuma+xgrMnlC+G1n7lnjaT+5Wbo58KaawxjZJxUpgcvxw==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@php-wasm/stream-compression": "3.1.52", + "@php-wasm/universal": "3.1.52", + "@php-wasm/util": "3.1.52", + "@zip.js/zip.js": "2.7.57", + "isomorphic-git": "1.37.6", + "octokit": "3.1.2", + "pako": "^1.0.10", + "sha.js": "2.4.12" + } + }, + "node_modules/@wp-playground/tools": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@wp-playground/tools/-/tools-3.1.52.tgz", + "integrity": "sha512-rn604x/fH2VFW6rYw3mN5idaMh03sKIbxoeBDPZsh6Ca1Hv9oyheiQFEy0Y3Kzli4B58YwbRUcC0wlv3laT3hw==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@php-wasm/util": "3.1.52", + "@wp-playground/blueprints": "3.1.52" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@wp-playground/wordpress": { + "version": "3.1.52", + "resolved": "https://registry.npmjs.org/@wp-playground/wordpress/-/wordpress-3.1.52.tgz", + "integrity": "sha512-vXvgrN33y3zvxWxVjtEEb4L4ZNfgBRPlvVe6wXHB19Dbiu32ZLkrlUpEkpKvft7wnrXnWvbDJqbEBfU2rKJtqw==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "@php-wasm/logger": "3.1.52", + "@php-wasm/universal": "3.1.52", + "@php-wasm/util": "3.1.52", + "@wp-playground/common": "3.1.52", + "zstddec": "^0.2.0" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/@zip.js/zip.js": { + "version": "2.7.57", + "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.57.tgz", + "integrity": "sha512-BtonQ1/jDnGiMed6OkV6rZYW78gLmLswkHOzyMrMb+CAR7CZO8phOHO6c2qw6qb1g1betN7kwEHhhZk30dv+NA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "bun": ">=0.7.0", + "deno": ">=1.0.0", + "node": ">=16.5.0" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", + "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.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==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/adm-zip": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.6.0.tgz", + "integrity": "sha512-XleryMhbuksdKtofnWZ9Sk+4CUTbms4Mb/EU32SZwToAyZ5RgVos/ki8n+yr0LWHOGKuakbXTuuYNHLQjhddgg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "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/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anynum": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/anynum/-/anynum-1.0.1.tgz", + "integrity": "sha512-N6//FLET/tXYNM/F6ABca1oH6fWB+KlTt909Le28WMDBk8oaT4vY17DCrwg2MvmuqUKt3Ni4N5dGJ/EoBgcO6A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "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/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": { + "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==", + "dev": true, + "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==", + "dev": true, + "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.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": { + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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.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": { + "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==", + "dev": true, + "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/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/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", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/async-lock": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.1.tgz", + "integrity": "sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==", + "dev": true, + "license": "MIT" + }, + "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": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.13.0.tgz", + "integrity": "sha512-UzGt8zg7Ny8djbYMhxl2zuEevVa7r2gJjYY5Lwr1xM7+XU2nd6CkIWFTVcCIbAP63vSz71NaVyyuSk9lHKcy0A==", + "dev": true, + "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==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", + "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.8", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/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/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==", + "dev": true, + "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.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", + "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "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/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.11.21", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.21.tgz", + "integrity": "sha512-uh8vpY/1/YyFkunIDFH/12p7/7VdPKA1hejMVEbdkEaWnUz0Hesvx5EbiU6XxjyHZIOju+ZMbQJkRh+es3/spQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/body-parser": { + "version": "1.20.6", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.6.tgz", + "integrity": "sha512-p5tAzS57i5MV9fZFDj9LeIiTZEufbSe2eDozP+ElheSUq1m74CRq1jI4mYNDdVs9vQztXFLuk/Gd6BWTdwRJ5g==", + "dev": true, + "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.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.15.1", + "raw-body": "~2.5.3", + "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/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", + "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/browserslist": { + "version": "4.28.9", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.9.tgz", + "integrity": "sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg==", + "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": { + "baseline-browser-mapping": "^2.11.20", + "caniuse-lite": "^1.0.30001810", + "electron-to-chromium": "^1.5.420", + "node-releases": "^2.0.54", + "update-browserslist-db": "^1.3.2" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001810", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001810.tgz", + "integrity": "sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==", + "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/capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/chardet": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.2.0.tgz", + "integrity": "sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA==", + "dev": true, + "license": "MIT" + }, + "node_modules/clean-git-ref": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/clean-git-ref/-/clean-git-ref-2.0.1.tgz", + "integrity": "sha512-bLSptAy2P0s6hU4PzuIMKmMJJSE6gLXGH1cntDu7bWJUksvuM+7ReOK61mozULErYvP6a15rnYl0zFDef+pyPw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/colorjs.io": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.7.1.tgz", + "integrity": "sha512-LY7OHnJZxHwT5UlzNa9bbhHHDbzB6yE5+3MIPwJEQKRvSCt/T4G7epsj+9j2BExUIIfXFIJGsIXUKdfrK9Q5tA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/color" + } + }, + "node_modules/comment-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12.0.0" + } + }, + "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/constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/copy-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/copy-dir/-/copy-dir-1.3.0.tgz", + "integrity": "sha512-Q4+qBFnN4bwGwvtXXzbp4P/4iNk0MaiGAzvQ8OiMtlLjkIKjmNN689uVzShSM0908q7GoFHXIPx4zi75ocoaHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-js": { + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.50.0.tgz", + "integrity": "sha512-BRWgOLKkFeCgRudR6zrs8p9XJZcE14grzKMMssoYrk6krtuEZ7MTKPIY5RzOnqsEKIR9kst7wNzphttraT+Yqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.50.0.tgz", + "integrity": "sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.7" + }, + "engines": { + "node": ">=6.4.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "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/cosmiconfig/node_modules/yaml": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz", + "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "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": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "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-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": { + "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==", + "dev": true, + "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==", + "dev": true, + "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": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "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-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": { + "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/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "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==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/diff3": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/diff3/-/diff3-0.0.3.tgz", + "integrity": "sha512-iSq8ngPOt0K53A6eVr4d5Kn6GNrM2nQZtC740pzIriHtn4pOQ2lyzEXQMBeVcWERN0ye7fhBsk9PbLLQOnUx/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/docker-compose": { + "version": "0.24.8", + "resolved": "https://registry.npmjs.org/docker-compose/-/docker-compose-0.24.8.tgz", + "integrity": "sha512-plizRs/Vf15H+GCVxq2EUvyPK7ei9b/cVesHvjnX4xaXjM9spHe2Ytq0BitndFgvTJ3E3NljPNUEl7BAN43iZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "yaml": "^2.2.2" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "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": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "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": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.422", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.422.tgz", + "integrity": "sha512-UvA/32XqrLDdZSn7Jllo1AYNcWji/G0d5M0GTViE7KoGBiMunw3a34Sb2KO4ZZyrSEhqsxFoVhWWJshdyfKqJA==", + "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/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.2.tgz", + "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==", + "dev": true, + "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-abstract-get": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-abstract-get/-/es-abstract-get-1.0.0.tgz", + "integrity": "sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.2", + "is-callable": "^1.2.7", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.4.0.tgz", + "integrity": "sha512-c/A0P0oxkACDc+cKWw8evLXK83oBKgn0qPOqCYT4x9uolpCIJAcYvJC9QYKNDRPsTeGyCrQ326jrvgZWdCdK5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.2", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.1.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.3.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", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.5", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.4.tgz", + "integrity": "sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-abstract-get": "^1.0.0", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "is-callable": "^1.2.7", + "is-date-object": "^1.1.0", + "is-symbol": "^1.1.1" + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "9.39.5", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.5.tgz", + "integrity": "sha512-DgZS62aPLXKlnxILS/AYCoRvHaZeXceIzlXPkkGGzJWSow1aEk0lbTlxUSlyjC8jcaKxAdOnTDz+o1JFSBsyjw==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "dependencies": { + "@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.6", + "@eslint/js": "9.39.5", + "@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": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-context": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.9.tgz", + "integrity": "sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-tsconfig": "^4.10.1", + "stable-hash-x": "^0.2.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-context" + }, + "peerDependencies": { + "unrs-resolver": "^1.0.0" + }, + "peerDependenciesMeta": { + "unrs-resolver": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.10.tgz", + "integrity": "sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.16.1", + "resolve": "^2.0.0-next.6" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-node/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/eslint-import-resolver-node/node_modules/resolve": { + "version": "2.0.0-next.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.7.tgz", + "integrity": "sha512-tqt+NBWwyaMgw3zDsnygx4CByWjQEJHOPMdslYhppaQSJUtL/D4JO9CcBBlhPoI8lz9oJIDXkwXfhF4aWqP8xQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.2", + "node-exports-info": "^1.6.0", + "object-keys": "^1.1.1", + "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/eslint-import-resolver-typescript": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.4.5.tgz", + "integrity": "sha512-nbE5XLph6TLtGYcu/U6e6ZVXyKBhbDWK5cLGk76eJ7NdZpwf1P9EFkpt1Z01mNZNrrilsAYWKH6zUkL4reoXbw==", + "dev": true, + "license": "ISC", + "dependencies": { + "debug": "^4.4.1", + "eslint-import-context": "^0.1.8", + "get-tsconfig": "^4.10.1", + "is-bun-module": "^2.0.0", + "stable-hash-x": "^0.2.0", + "tinyglobby": "^0.2.14", + "unrs-resolver": "^1.7.11" + }, + "engines": { + "node": "^16.17.0 || >=18.6.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-typescript/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": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-typescript/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/eslint-module-utils": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.14.0.tgz", + "integrity": "sha512-W2WCRZ9Dqntd+2u8jJcVMV2PKulc6RdLgUUoh/yQr3uB6lo/ZOeGx11sv60/8S4QFFKNslAlWhr9u0Ef7ZW6Ig==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils/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/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==", + "dev": true, + "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/brace-expansion": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/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": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-import/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/eslint-plugin-import/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/eslint-plugin-jest": { + "version": "29.16.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-29.16.6.tgz", + "integrity": "sha512-q8TVr0rlNvUD0XnafGWkwtPeX+tTl2llP86EDl3sJtwWrQA/JT9SIu2hLLZbhhX6fT5SDE4O0gIKyZUujKnkYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^8.0.0" + }, + "engines": { + "node": "^20.12.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^8.0.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "jest": "*", + "typescript": ">=4.8.4 <8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jsdoc": { + "version": "50.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.8.0.tgz", + "integrity": "sha512-UyGb5755LMFWPrZTEqqvTJ3urLz1iqj+bYOHFNag+sw3NvaMWP9K2z+uIn37XfNALmQLQyrBlJ5mkiVPL7ADEg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@es-joy/jsdoccomment": "~0.50.2", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.1", + "debug": "^4.4.1", + "escape-string-regexp": "^4.0.0", + "espree": "^10.3.0", + "esquery": "^1.6.0", + "parse-imports-exports": "^0.2.4", + "semver": "^7.7.2", + "spdx-expression-parse": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-jsdoc/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": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jsdoc/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-jsdoc/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/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": { + "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/brace-expansion": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-jsx-a11y/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": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-playwright": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-playwright/-/eslint-plugin-playwright-2.11.0.tgz", + "integrity": "sha512-zOIEYyv1TSn2izXkyg/yj0LXc4YBQI6pl3xIFWwMCcXt/dgQCz8dBqXiXFMoM3xc/GqZThAtaGYo8aPu/vBd+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "globals": "^17.3.0" + }, + "engines": { + "node": ">=16.9.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.5.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.6.tgz", + "integrity": "sha512-ifetmTcxWfz+4qRW3pH/ujdTq2jQIj59AxJMIN26K5avYgU8dxycUETQonWiW+wPrYXA0j3Try0l1CnwVQtDqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.13" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "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": { + "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": "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": { + "@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": { + "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/eslint-plugin-react/node_modules/brace-expansion": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-react/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": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.7.tgz", + "integrity": "sha512-tqt+NBWwyaMgw3zDsnygx4CByWjQEJHOPMdslYhppaQSJUtL/D4JO9CcBBlhPoI8lz9oJIDXkwXfhF4aWqP8xQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.2", + "node-exports-info": "^1.6.0", + "object-keys": "^1.1.1", + "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/eslint-plugin-react/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/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/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==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/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": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/eslint/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": { + "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/eslint/node_modules/brace-expansion": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/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": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/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": { + "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/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": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/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/eslint/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": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint/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/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": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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": "^18.18.0 || ^20.9.0 || >=21.1.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==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/express": { + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.2.tgz", + "integrity": "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.5", + "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.15.1", + "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/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-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "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.7", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.7.tgz", + "integrity": "sha512-dOvZVzjdZdz7phd9v6jCbwxrBW3fK6n8Rc0CtdmM4bumzMnxywBYhuph6J819RRw/ku+rLbelwfMunktuzVVHg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fast-xml-builder": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.3.1.tgz", + "integrity": "sha512-pIM/1n3ntFXKYrUZwW7QCK0gAW7XY+wzj1YMIV3tLDvPj/V+zTGJK5e3/4WJfwj0qWw2ElNXiTixda/R+3YSug==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "path-expression-matcher": "^1.6.2", + "xml-naming": "^0.3.0" + } + }, + "node_modules/fast-xml-parser": { + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.11.1.tgz", + "integrity": "sha512-TBw6K/fxoQGGjCmZDw9w/ZwP3uDcnTM4YH/g+PFRWr8sbe5idXtxNN6vITh4+1ruCZaho6uBFurElsA7F0zzgw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "@nodable/entities": "^3.0.0", + "fast-xml-builder": "^1.2.0", + "is-unsafe": "^2.0.0", + "path-expression-matcher": "^1.6.2", + "strnum": "^2.4.2", + "xml-naming": "^0.3.0" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "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", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "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": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "dev": true, + "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.2", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "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": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.4.tgz", + "integrity": "sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==", + "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": { + "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==", + "dev": true, + "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/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-ext-extra-prebuilt": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fs-ext-extra-prebuilt/-/fs-ext-extra-prebuilt-2.2.7.tgz", + "integrity": "sha512-Q7rayYRBDIvDF01HWOwSSjoaP+05N1g+o3BXL1Zf8Frw2JkjSmi4EtvCBITuW30l6hB2m2TW1pehdh8wyU/+gw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "nan": "^2.24.0" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "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==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.2.0.tgz", + "integrity": "sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2", + "hasown": "^2.0.4", + "is-callable": "^1.2.7", + "is-document.all": "^1.0.0" + }, + "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==", + "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", + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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-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": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "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==", + "dev": true, + "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/get-tsconfig": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.3.tgz", + "integrity": "sha512-++QEw4DIY7WGoukz+/+A/8dGYPT9l9yIadnmSgZ8Rjr3YVSVDipQSO9CdnJo9ePqFqUUqh+wk9uIaoiAwsiPkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/gettext-parser": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.4.0.tgz", + "integrity": "sha512-sedZYLHlHeBop/gZ1jdg59hlUEcpcZJofLq2JFwJT1zTqAU3l2wFv6IsuwFHGqbiT9DWzMUW4/em2+hspnmMMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "encoding": "^0.1.12", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "17.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.12.0.tgz", + "integrity": "sha512-cezEd/DTyyht9cvSSURyygXPfy04GtWO/5e6ZPvH7fCtjKz9PYOmuawphw1Ctd1f6C+5JypXfGD7ahNMXvevBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "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==", + "dev": true, + "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/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", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "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", + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "capital-case": "^1.0.4", + "tslib": "^2.0.3" + } + }, + "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/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": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.3.tgz", + "integrity": "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "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", + "engines": { + "node": ">= 4" + } + }, + "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": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "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==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ini": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.2.tgz", + "integrity": "sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "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": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "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", + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" + } + }, + "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", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", + "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.3" + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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-document.all": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-document.all/-/is-document.all-1.0.0.tgz", + "integrity": "sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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", + "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==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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": { + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-object": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.1.0.tgz", + "integrity": "sha512-bUi/yjmtKYcRVUtWRGr0UA6xEFh2I6zWUwMrUXB3s7bmYCaZ8a+0ZsTRkrawh/mzlSD1Y0Ph8bp/U+TvBpWDNw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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": { + "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-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": ">= 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==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "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==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unsafe": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-unsafe/-/is-unsafe-2.0.2.tgz", + "integrity": "sha512-HgbIHPBH0KHHCcjLfGsCvhtPTVxjaAZlXjwdz7/GQC40SjSe4sfQsar8J5VFo8JOSbarkpV0OLG95bbaNd9aAQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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/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/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/isomorphic-git": { + "version": "1.37.6", + "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.37.6.tgz", + "integrity": "sha512-qr1NFCPsVTZ6YGqTXw0CzamnsHyH9QQ1OTEfeXIweSljRUMzuHFCJdUn0wc6OcjtTDns6knxjPb7N6LmJeftOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-lock": "^1.4.1", + "clean-git-ref": "^2.0.1", + "crc-32": "^1.2.0", + "diff3": "0.0.3", + "ignore": "^5.1.4", + "minimisted": "^2.0.0", + "pako": "^1.0.10", + "pify": "^4.0.1", + "readable-stream": "^4.0.0", + "sha.js": "^2.4.12", + "simple-get": "^4.0.1" + }, + "bin": { + "isogit": "cli.cjs" + }, + "engines": { + "node": ">=14.17" + } + }, + "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": { + "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==", + "dev": true, + "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/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.2.tgz", + "integrity": "sha512-6EuL879VkRA+1Cz578mKMiKvjPNEuk6+r1JaFzoSWejZmtf7xWbIyw1e3KkxlkzTIt9Taw6JBhEppG7utc1P+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz", + "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "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==", + "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": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-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", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", + "dev": true, + "license": "MIT", + "dependencies": { + "jws": "^4.0.1", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/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/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", + "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/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "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/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": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "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": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/lru-cache": { + "name": "@wolfy1339/lru-cache", + "version": "11.0.2-patch.1", + "resolved": "https://registry.npmjs.org/@wolfy1339/lru-cache/-/lru-cache-11.0.2-patch.1.tgz", + "integrity": "sha512-BgYZfL2ADCXKOw2wJtkM3slhHotawWkgIRRxq4wEybnZQPjvAp71SPX35xepMykTw8gXlzWcWPTY31hlbnRsDA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "18 >=18.20 || 20 || >=22" + } + }, + "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.4" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memize": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/memize/-/memize-2.1.1.tgz", + "integrity": "sha512-8Nl+i9S5D6KXnruM03Jgjb+LwSupvR13WBr4hJegaaEyobvowCVupi79y2WSiWvO1mzBWxPwEYE5feCe8vyA5w==", + "dev": true, + "license": "MIT" + }, + "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==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimisted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minimisted/-/minimisted-2.0.1.tgz", + "integrity": "sha512-1oPjfuLQa2caorJUM8HV8lGgWCc0qqAO1MNv/k05G4qslmsndV/5WdNZrqCiyqiz3wohia2Ij2B7w2Dr7/IyrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mousetrap": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz", + "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==", + "dev": true, + "license": "Apache-2.0 WITH LLVM-exception" + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/nan": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.28.0.tgz", + "integrity": "sha512-fTsDz99OTq2sVePhGdp4qQhggZFtKr64ZNVyVajRKtMOkJxYekplBh577PiJB12v/D3s2E5cGtOI45LWp6rnLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "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/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-exports-info": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.2.tgz", + "integrity": "sha512-kXs9Go0cah0qHVV2v389IXQLdLCeE1xfFtjOAF+iobu0OIoG1pje8At2vMHyaPMiPMnG/LWP50twML21eMcAag==", + "dev": true, + "license": "MIT", + "dependencies": { + "array.prototype.flatmap": "^1.3.3", + "es-errors": "^1.3.0", + "object.entries": "^1.1.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/node-exports-info/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/node-releases": { + "version": "2.0.54", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.54.tgz", + "integrity": "sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/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": { + "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==", + "dev": true, + "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==", + "dev": true, + "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.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "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==", + "dev": true, + "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/octokit": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/octokit/-/octokit-3.1.2.tgz", + "integrity": "sha512-MG5qmrTL5y8KYwFgE1A4JWmgfQBaIETE/lOlfwNYx1QOtCQHGVxkRJmdUJltFc1HVn73d61TlMhMyNTOtMl+ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/app": "^14.0.2", + "@octokit/core": "^5.0.0", + "@octokit/oauth-app": "^6.0.0", + "@octokit/plugin-paginate-graphql": "^4.0.0", + "@octokit/plugin-paginate-rest": "^9.0.0", + "@octokit/plugin-rest-endpoint-methods": "^10.0.0", + "@octokit/plugin-retry": "^6.0.0", + "@octokit/plugin-throttling": "^8.0.0", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "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==", + "dev": true, + "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/ora": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-4.1.1.tgz", + "integrity": "sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.2.0", + "is-interactive": "^1.0.0", + "log-symbols": "^3.0.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true, + "license": "ISC" + }, + "node_modules/own-keys": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.2.tgz", + "integrity": "sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "get-intrinsic": "^1.3.0", + "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-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true, + "license": "(MIT AND Zlib)" + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-imports-exports": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz", + "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-statements": "1.0.11" + } + }, + "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==", + "dev": true, + "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/parse-statements": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz", + "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-expression-matcher": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.6.2.tgz", + "integrity": "sha512-enSlaiat05iasnzmgNxRj8reFdj3puY2QpNgP1aPIaVfT6nn9ICuPoFlKHk8EN22HcwewshO+mN2DGbkCEOtqQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "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/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "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==", + "dev": true, + "license": "ISC" + }, + "node_modules/path-to-regexp": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", + "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/playwright": { + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.62.1.tgz", + "integrity": "sha512-0M+L3LAD8/nm554LOla9Ayx0j0tmFZ0FBcoQ7F1VuVHpM/XpiC8RcDzBQB8W5+hA8L22THxELzeF+2WcUzvcLg==", + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.62.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=20" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.1.tgz", + "integrity": "sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==", + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "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.4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.6.tgz", + "integrity": "sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", + "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pump": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.15.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz", + "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "es-define-property": "^1.0.1", + "side-channel": "^1.1.1" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "19.2.8", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.8.tgz", + "integrity": "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.8", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.8.tgz", + "integrity": "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.8" + } + }, + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "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", + "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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "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-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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.2.tgz", + "integrity": "sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/requestidlecallback": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/requestidlecallback/-/requestidlecallback-0.3.0.tgz", + "integrity": "sha512-TWHFkT7S9p7IxLC5A1hYmAYQx2Eb9w1skrXmQ+dS1URyvR8tenMLl4lHbqEOUnpEYxNKpkVMXUgknVpBZWXXfQ==", + "dev": true, + "license": "MIT" + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.5" + } + }, + "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": { + "es-errors": "^1.3.0", + "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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/rimraf": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.4.tgz", + "integrity": "sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "get-intrinsic": "^1.3.0", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/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": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz", + "integrity": "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.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==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/sentence-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", + "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "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_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": { + "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/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": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, + "node_modules/sha.js": { + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", + "dev": true, + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" + }, + "bin": { + "sha.js": "bin.js" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sharp": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.3.tgz", + "integrity": "sha512-ej0zVHuZGHCiABXcNxeYhpRnPNPAcvbG8RMdBAhDAxLKkCRVSpK3Iyu7qbqw3JMzoj0REeM6f3tJLtVwl0023Q==", + "license": "Apache-2.0", + "dependencies": { + "@img/colour": "^1.1.0", + "detect-libc": "^2.1.2", + "semver": "^7.8.5" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.35.3", + "@img/sharp-darwin-x64": "0.35.3", + "@img/sharp-freebsd-wasm32": "0.35.3", + "@img/sharp-libvips-darwin-arm64": "1.3.2", + "@img/sharp-libvips-darwin-x64": "1.3.2", + "@img/sharp-libvips-linux-arm": "1.3.2", + "@img/sharp-libvips-linux-arm64": "1.3.2", + "@img/sharp-libvips-linux-ppc64": "1.3.2", + "@img/sharp-libvips-linux-riscv64": "1.3.2", + "@img/sharp-libvips-linux-s390x": "1.3.2", + "@img/sharp-libvips-linux-x64": "1.3.2", + "@img/sharp-libvips-linuxmusl-arm64": "1.3.2", + "@img/sharp-libvips-linuxmusl-x64": "1.3.2", + "@img/sharp-linux-arm": "0.35.3", + "@img/sharp-linux-arm64": "0.35.3", + "@img/sharp-linux-ppc64": "0.35.3", + "@img/sharp-linux-riscv64": "0.35.3", + "@img/sharp-linux-s390x": "0.35.3", + "@img/sharp-linux-x64": "0.35.3", + "@img/sharp-linuxmusl-arm64": "0.35.3", + "@img/sharp-linuxmusl-x64": "0.35.3", + "@img/sharp-webcontainers-wasm32": "0.35.3", + "@img/sharp-win32-arm64": "0.35.3", + "@img/sharp-win32-ia32": "0.35.3", + "@img/sharp-win32-x64": "0.35.3" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "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": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "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==", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "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==", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" + "license": "MIT", + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/simple-git": { + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.36.0.tgz", + "integrity": "sha512-cGQjLjK8bxJw4QuYT7gxHw3/IouVESbhahSsHrX97MzCL1gu2u7oy38W6L2ZIGECEfIBG4BabsWDPjBxJENv9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@kwsites/file-exists": "^1.1.1", + "@kwsites/promise-deferred": "^1.1.1", + "@simple-git/args-pathspec": "^1.0.3", + "@simple-git/argv-parser": "^1.1.0", + "debug": "^4.4.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/steveukx/git-js?sponsor=1" + } + }, + "node_modules/simple-git/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": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/simple-git/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/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", + "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/stable-hash-x": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.2.0.tgz", + "integrity": "sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "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": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.3.0.tgz", + "integrity": "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "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": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.1.0.tgz", + "integrity": "sha512-tHNHTxInrYLCga9O9YGxWA3G9/nnzQw8UGAyqGx3Ar1pSTTzIuM4woFSq4SowkXCjJIwq5sIiQvEfRI9tCH1qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.2", + "get-intrinsic": "^1.3.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.4", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.11.tgz", + "integrity": "sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.2", + "es-object-atoms": "^1.1.2", + "has-property-descriptors": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.10.tgz", + "integrity": "sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "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", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strnum": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.4.2.tgz", + "integrity": "sha512-rDG3Ah4TV0k1hWvLSzkZtMmLN9+eS+h3knq4MP6A42Y3Yh5qGNnOUs1jJkoSr8FG5dsL28c7KgkIBzSEykqtuw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } ], + "license": "MIT", + "dependencies": { + "anynum": "^1.0.1" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { - "url": "https://opencollective.com/libvips" + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/synckit": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.13.tgz", + "integrity": "sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.3.6" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/tannin": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tannin/-/tannin-1.2.0.tgz", + "integrity": "sha512-U7GgX/RcSeUETbV7gYgoz8PD7Ni4y95pgIP/Z6ayI3CfhSujwKEBlGFTCRN+Aqnuyf4AN2yHL+L8x+TCGjb9uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tannin/plural-forms": "^1.1.0" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tmp": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz", + "integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tmp": "^0.2.0" + } + }, + "node_modules/to-buffer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", + "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "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", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "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==", + "devOptional": true, + "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" + }, + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.2.tgz", - "integrity": "sha512-m0lrLiUt+lBYnCFr8qV/65yMR4E/c7/wf78I5eKTdkEakFAlZ9QlzEM3QIhhAwVeUhLAHLcCq7a7Vszq/oFNZQ==", - "cpu": [ - "x64" - ], - "libc": [ - "musl" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.3.tgz", - "integrity": "sha512-affVWCTLooy8TSxbDx2qkzuDeaWLNVBA+P//FNBirHsXpP2fuBhk5AuboYUnrDnzoXes8GFjpTx0SBFOCRg+FA==", - "cpu": [ - "arm" - ], - "libc": [ - "glibc" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "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", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, "engines": { - "node": ">=20.9.0" + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "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", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" }, - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">= 0.4" }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.3.2" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.3.tgz", - "integrity": "sha512-QgKDspHPnrU+GQ55XPhGwyhC8acLVOOSyAvo1oVfFmrIXLkDNmGWzAfDZ4xK8oSA1qBQrALcHX0G5UZni/SuFQ==", - "cpu": [ - "arm64" - ], - "libc": [ - "glibc" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "node_modules/typed-array-byte-offset": { + "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", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, "engines": { - "node": ">=20.9.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.3.2" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@img/sharp-linux-ppc64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.3.tgz", - "integrity": "sha512-sMd8rDxmpLOwv/7N44klFjOD5DUO7FLdjiXDI0hoxYaf7Ar262dQIEkosE98bps+5HPLtp/EvNqeqQtOycP/IA==", - "cpu": [ - "ppc64" - ], - "libc": [ - "glibc" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "node_modules/typed-array-length": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.8.tgz", + "integrity": "sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "for-each": "^0.3.5", + "gopd": "^1.2.0", + "is-typed-array": "^1.1.15", + "possible-typed-array-names": "^1.1.0", + "reflect.getprototypeof": "^1.0.10" + }, "engines": { - "node": ">=20.9.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-ppc64": "1.3.2" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@img/sharp-linux-riscv64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.3.tgz", - "integrity": "sha512-0Eob78yjlYPfL5vMNWAW55l3R9Y6BQS/gOfe0ZcP9mEz9ohhKSt4im1hayiknXgf8AWrFqMvJcKIdmLmEe7yeQ==", - "cpu": [ - "riscv64" - ], - "libc": [ - "glibc" - ], + "node_modules/typescript": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "dev": true, "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, "engines": { - "node": ">=20.9.0" + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.69.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.69.0.tgz", + "integrity": "sha512-B3MltX0VqjUBNEe3b3sSuiRbfa6XrfHFtBiPamjT5AsW/dfq+y+bc0wyuS9DxAS1LyzCxRp2+rxzpLUvqM2BvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.69.0", + "@typescript-eslint/parser": "8.69.0", + "@typescript-eslint/typescript-estree": "8.69.0", + "@typescript-eslint/utils": "8.69.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/libvips" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, - "optionalDependencies": { - "@img/sharp-libvips-linux-riscv64": "1.3.2" + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.3.tgz", - "integrity": "sha512-KgAxQ0DxpNOq1rG2t5cgTgShJFGSuU7XO45cqC+1NVOuZnP6tlgZRuSYOfNupGkHID0o3cJOsw4DVeJpMovcGw==", - "cpu": [ - "s390x" - ], - "libc": [ - "glibc" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "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": ">=20.9.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/libvips" + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz", + "integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.3.2" + "engines": { + "node": ">=4" } }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.3.tgz", - "integrity": "sha512-8pqvxubL2PGdhlPy6GLqzDYMUjyRmKAwKHYKixpdJYBUK7PJ0C029XdsnpFIdgRZG68fZiGdHVWcKPvtiPB4cA==", - "cpu": [ - "x64" - ], - "libc": [ - "glibc" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "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==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=20.9.0" + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/universal-github-app-jwt": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-1.2.0.tgz", + "integrity": "sha512-dncpMpnsKBk0eetwfN8D8OUHGfiDhhJ+mtsbMl+7PfW7mYjiH8LIcqRmYMtzYLgSh47HjfdBtrBwIQ/gizKR3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/jsonwebtoken": "^9.0.0", + "jsonwebtoken": "^9.0.2" + } + }, + "node_modules/universal-user-agent": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unrs-resolver": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.12.2.tgz", + "integrity": "sha512-dmlRxBJJayXjqTwC+JtF1HhJmgf3ftQ3YejFcZrf4+KKtJv0qDsK1pjqaaVjG7wJ5NJ6UVP1OqRMQ71Z4C3rxQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.4" }, "funding": { - "url": "https://opencollective.com/libvips" + "url": "https://opencollective.com/unrs-resolver" }, "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.3.2" + "@unrs/resolver-binding-android-arm-eabi": "1.12.2", + "@unrs/resolver-binding-android-arm64": "1.12.2", + "@unrs/resolver-binding-darwin-arm64": "1.12.2", + "@unrs/resolver-binding-darwin-x64": "1.12.2", + "@unrs/resolver-binding-freebsd-x64": "1.12.2", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.12.2", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.12.2", + "@unrs/resolver-binding-linux-arm64-gnu": "1.12.2", + "@unrs/resolver-binding-linux-arm64-musl": "1.12.2", + "@unrs/resolver-binding-linux-loong64-gnu": "1.12.2", + "@unrs/resolver-binding-linux-loong64-musl": "1.12.2", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.12.2", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.12.2", + "@unrs/resolver-binding-linux-riscv64-musl": "1.12.2", + "@unrs/resolver-binding-linux-s390x-gnu": "1.12.2", + "@unrs/resolver-binding-linux-x64-gnu": "1.12.2", + "@unrs/resolver-binding-linux-x64-musl": "1.12.2", + "@unrs/resolver-binding-openharmony-arm64": "1.12.2", + "@unrs/resolver-binding-wasm32-wasi": "1.12.2", + "@unrs/resolver-binding-win32-arm64-msvc": "1.12.2", + "@unrs/resolver-binding-win32-ia32-msvc": "1.12.2", + "@unrs/resolver-binding-win32-x64-msvc": "1.12.2" } }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.3.tgz", - "integrity": "sha512-Vz0iQjzzcSX3HCbfwFfCSG/9SCIqyO0mH2sXyiHaAYfBk0cRsCWXRyQYX0ovCK/PAQBbTzQ0dsPQHh5MAFL59w==", - "cpu": [ - "arm64" - ], - "libc": [ - "musl" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" + "node_modules/update-browserslist-db": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.2.tgz", + "integrity": "sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=20.9.0" + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/wasm-feature-detect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/wasm-feature-detect/-/wasm-feature-detect-1.8.0.tgz", + "integrity": "sha512-zksaLKM2fVlnB5jQQDqKXXwYHLQUVH9es+5TOOHwGOVJOCeRBCiPjwSg+3tN2AdTCzjgli4jijCH290kXb/zWQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "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" }, - "funding": { - "url": "https://opencollective.com/libvips" + "bin": { + "node-which": "bin/node-which" }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.3.2" + "engines": { + "node": ">= 8" } }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.3.tgz", - "integrity": "sha512-6O1NPKcDVj9QEdg7Hx549EX8U0rp6yXQERqru6yRN7fGBn32UvIRJUlWnk+8xDCiG76hXVBbX82NZ/ZKr0euIg==", - "cpu": [ - "x64" - ], - "libc": [ - "musl" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "node_modules/which-boxed-primitive": { + "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", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, "engines": { - "node": ">=20.9.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.3.2" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@img/sharp-wasm32": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.3.tgz", - "integrity": "sha512-cZ0XkcYGpHZkqW6iCkqTcmUC0CD9DhD5d/qeZlZkfRBn6GnHniZXLUo5+9xw8Iv76YE6LQFN9YNBlKREcCG76w==", - "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", - "optional": true, + "node_modules/which-builtin-type": { + "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": { - "@emnapi/runtime": "^1.11.1" + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" }, "engines": { - "node": ">=20.9.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/libvips" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@img/sharp-webcontainers-wasm32": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.3.tgz", - "integrity": "sha512-2rnq7bX3NzeR2T4YWgz8qiG4h3TSdMe+vN1iQXpJleSJ3SM5zQ8Fy2SyyXAWlbxpEZ2Y+Z4u1BePgJEYbSy80Q==", - "cpu": [ - "wasm32" - ], - "license": "Apache-2.0", - "optional": true, + "node_modules/which-collection": { + "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": { - "@img/sharp-wasm32": "0.35.3" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" }, "engines": { - "node": ">=20.9.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/libvips" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@img/sharp-win32-arm64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.3.tgz", - "integrity": "sha512-4bPwFdMbeC4JQ8L8LOyWp6nsHcboP5fxkp6iPOXz2Vg49R42TuMs2whkJ5OAP4/Ul035qOzy0AecOF9VOscn4w==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], + "node_modules/which-typed-array": { + "version": "1.1.22", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.22.tgz", + "integrity": "sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, "engines": { - "node": ">=20.9.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/libvips" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@img/sharp-win32-ia32": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.3.tgz", - "integrity": "sha512-r53mXsBN6lFUDiST764SvgwUdHAqM4rPAiDzAmf4fLoB6X/rkfyTrLCg6+g17wJJiCmB3JYgHuUldCWUIRFSXw==", - "cpu": [ - "ia32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", "engines": { - "node": "^20.9.0" + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">=8" } }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.3.tgz", - "integrity": "sha512-D4y1vNeZrIIJCN+uHaWVtH86B+aCrdMYYjicy9pXHvbGZeGYLLSd3wdVuC37FxVXlU1ARsk84eKWfWMXGYEqvA==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">=20.9.0" + "node": ">=10" }, "funding": { - "url": "https://opencollective.com/libvips" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "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==", - "license": "Apache-2.0", + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { "node": ">=8" } }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", + "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", + "dev": true, + "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/xml-naming": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.3.0.tgz", + "integrity": "sha512-ghig2TBE/H11aOVgmahA3MhimvkBr6JIYknH/Dhdk10nXwdbIqBJsbfMxpvFPG8bAw77gN29aQWvKpmVoPlvPQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } ], + "license": "MIT", "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=16.0.0" } }, - "node_modules/playwright": { - "version": "1.62.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.62.1.tgz", - "integrity": "sha512-0M+L3LAD8/nm554LOla9Ayx0j0tmFZ0FBcoQ7F1VuVHpM/XpiC8RcDzBQB8W5+hA8L22THxELzeF+2WcUzvcLg==", - "license": "Apache-2.0", + "node_modules/xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "dev": true, + "license": "MIT", "dependencies": { - "playwright-core": "1.62.1" + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "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": "2.9.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", + "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", + "dev": true, + "license": "ISC", "bin": { - "playwright": "cli.js" + "yaml": "bin.mjs" }, "engines": { - "node": ">=20" + "node": ">= 14.6" }, - "optionalDependencies": { - "fsevents": "2.3.2" + "funding": { + "url": "https://github.com/sponsors/eemeli" } }, - "node_modules/playwright-core": { - "version": "1.62.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.1.tgz", - "integrity": "sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==", - "license": "Apache-2.0", - "bin": { - "playwright-core": "cli.js" + "node_modules/yargs": { + "version": "17.7.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz", + "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=20" + "node": ">=12" } }, - "node_modules/semver": { - "version": "7.8.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", - "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/sharp": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.3.tgz", - "integrity": "sha512-ej0zVHuZGHCiABXcNxeYhpRnPNPAcvbG8RMdBAhDAxLKkCRVSpK3Iyu7qbqw3JMzoj0REeM6f3tJLtVwl0023Q==", - "license": "Apache-2.0", + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", "dependencies": { - "@img/colour": "^1.1.0", - "detect-libc": "^2.1.2", - "semver": "^7.8.5" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=20.9.0" + "node": ">=8" + } + }, + "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" }, "funding": { - "url": "https://opencollective.com/libvips" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.35.3", - "@img/sharp-darwin-x64": "0.35.3", - "@img/sharp-freebsd-wasm32": "0.35.3", - "@img/sharp-libvips-darwin-arm64": "1.3.2", - "@img/sharp-libvips-darwin-x64": "1.3.2", - "@img/sharp-libvips-linux-arm": "1.3.2", - "@img/sharp-libvips-linux-arm64": "1.3.2", - "@img/sharp-libvips-linux-ppc64": "1.3.2", - "@img/sharp-libvips-linux-riscv64": "1.3.2", - "@img/sharp-libvips-linux-s390x": "1.3.2", - "@img/sharp-libvips-linux-x64": "1.3.2", - "@img/sharp-libvips-linuxmusl-arm64": "1.3.2", - "@img/sharp-libvips-linuxmusl-x64": "1.3.2", - "@img/sharp-linux-arm": "0.35.3", - "@img/sharp-linux-arm64": "0.35.3", - "@img/sharp-linux-ppc64": "0.35.3", - "@img/sharp-linux-riscv64": "0.35.3", - "@img/sharp-linux-s390x": "0.35.3", - "@img/sharp-linux-x64": "0.35.3", - "@img/sharp-linuxmusl-arm64": "0.35.3", - "@img/sharp-linuxmusl-x64": "0.35.3", - "@img/sharp-webcontainers-wasm32": "0.35.3", - "@img/sharp-win32-arm64": "0.35.3", - "@img/sharp-win32-ia32": "0.35.3", - "@img/sharp-win32-x64": "0.35.3" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.5.4.tgz", + "integrity": "sha512-sC95tT5iHHH9gtpj6A81kh+NEaRAUFN+qlUPDUbRfOMvNf5QCBqsb3WgvnpVtK5Y+4UfA6KqufotuTvMGiTlsA==", + "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" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" } }, - "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", - "optional": true + "node_modules/zstddec": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/zstddec/-/zstddec-0.2.0.tgz", + "integrity": "sha512-oyPnDa1X5c13+Y7mA/FDMNJrn4S8UNBe0KCqtDmor40Re7ALrPN6npFwyYVRRh+PqozZQdeg23QtbcamZnG5rA==", + "dev": true, + "license": "MIT AND BSD-3-Clause" } } } diff --git a/package.json b/package.json index fc50a7b..1047773 100644 --- a/package.json +++ b/package.json @@ -28,5 +28,24 @@ }, "allowScripts": { "sharp@0.35.3": true + }, + "devDependencies": { + "@wordpress/env": "^11.14.0", + "@wordpress/eslint-plugin": "^25.10.0", + "eslint": "^9.39.5", + "globals": "^17.12.0" + }, + "scripts": { + "env:start": "wp-env start", + "env:stop": "wp-env stop", + "env:destroy": "wp-env destroy", + "env:cli": "wp-env run cli -- wp", + "lint": "npm run lint:js && npm run lint:php", + "lint:js": "eslint .", + "lint:js:fix": "eslint . --fix", + "lint:php": "composer lint && composer analyze", + "test": "npm run test:js && npm run test:php", + "test:js": "node --test \"tests/js/**/*.test.mjs\"", + "test:php": "wp-env run tests-cli --env-cwd=\"wp-content/plugins/$(basename \"$PWD\")\" vendor/bin/phpunit" } } diff --git a/src/animations.mjs b/src/animations.mjs index bf75411..c5a84e0 100644 --- a/src/animations.mjs +++ b/src/animations.mjs @@ -51,8 +51,8 @@ export function resolveAnimations( animations ) { if ( ! LIBRARIES[ entry ] ) { throw new Error( `Unknown animation library "${ entry }" in config. Built in: ${ Object.keys( - LIBRARIES - ).join( ', ' ) }. Pass an object ({ css, settle }) for a custom library.` + LIBRARIES, + ).join( ', ' ) }. Pass an object ({ css, settle }) for a custom library.`, ); } diff --git a/src/capture.mjs b/src/capture.mjs index 21ce993..731c576 100644 --- a/src/capture.mjs +++ b/src/capture.mjs @@ -45,8 +45,8 @@ async function prepareForCapture( page, animations ) { } ); await Promise.all( images.map( ( image ) => - image.complete ? Promise.resolve() : image.decode().catch( () => {} ) - ) + image.complete ? Promise.resolve() : image.decode().catch( () => {} ), + ), ); } ); } @@ -74,7 +74,7 @@ async function assertAuthenticated( page, config ) { 'Browsers only attach credentials after a 401 carrying WWW-Authenticate, which the preview ' + 'route sends — check that the site runs a wp-pattern-library new enough to send it, and that ' + 'the credentials are valid for this origin. A 403 or a redirect to a login screen is more ' + - 'likely an access proxy in front of WordPress — see extraHeaders.' + 'likely an access proxy in front of WordPress — see extraHeaders.', ); } } @@ -167,7 +167,7 @@ export async function captureAll( patterns, config, log = () => {} ) { return route.continue( sameOrigin ? { headers: { ...request.headers(), ...config.extraHeaders } } - : undefined + : undefined, ); } ); } @@ -209,7 +209,7 @@ export async function captureAll( patterns, config, log = () => {} ) { for ( const shot of shotsFor( pattern, config ) ) { const destination = join( config.screenshotsDir, - `${ shot.basename }.${ config.imageFormat }` + `${ shot.basename }.${ config.imageFormat }`, ); try { @@ -229,7 +229,7 @@ export async function captureAll( patterns, config, log = () => {} ) { // isolation. Surface it as this pattern's failure and move on. throw new Error( `HTTP ${ status } rendering the pattern (likely a block that needs post context; ` + - 'try postTypeContext, or exclude it).' + 'try postTypeContext, or exclude it).', ); } await page.evaluate( () => document.fonts && document.fonts.ready ); @@ -266,7 +266,7 @@ export async function captureAll( patterns, config, log = () => {} ) { box ? Math.round( box.height ) : '?' }px tall)${ isEmpty ? ' — EMPTY' : '' }${ missingResources.length ? ` — ${ missingResources.length } missing resource(s)` : '' - }` + }`, ); } catch ( error ) { summary.failed.push( { basename: shot.basename, error: error.message } ); diff --git a/src/config.mjs b/src/config.mjs index abd935a..8457541 100644 --- a/src/config.mjs +++ b/src/config.mjs @@ -166,8 +166,8 @@ function normalizeVariants( variants ) { if ( ! /^[a-z0-9]+(-[a-z0-9]+)*$/.test( variant?.slug ?? '' ) ) { throw new Error( `Configuration error: ${ where }.slug must be a lowercase kebab-case string; got ${ JSON.stringify( - variant?.slug - ) }.` + variant?.slug, + ) }.`, ); } @@ -183,7 +183,7 @@ function normalizeVariants( variants ) { ! Object.keys( variant.wrapper ).length ) { throw new Error( - `Configuration error: ${ where }.wrapper must be a non-empty object of group block attributes.` + `Configuration error: ${ where }.wrapper must be a non-empty object of group block attributes.`, ); } @@ -208,7 +208,7 @@ function normalizeVariants( variants ) { */ const titleCase = ( slug ) => slug.replace( /(^|-)([a-z])/g, ( _, separator, letter ) => - ( separator ? ' ' : '' ) + letter.toUpperCase() + ( separator ? ' ' : '' ) + letter.toUpperCase(), ); /** @@ -236,8 +236,8 @@ function parseHeaders( value ) { if ( separator < 1 ) { throw new Error( `PATTERN_LIBRARY_EXTRA_HEADERS lines must read "Name: value"; got ${ JSON.stringify( - trimmed.slice( 0, 40 ) - ) }.` + trimmed.slice( 0, 40 ), + ) }.`, ); } @@ -263,8 +263,8 @@ function parseHeaders( value ) { function clean( object ) { return Object.fromEntries( Object.entries( object ).filter( - ( [ , value ] ) => value !== undefined && value !== null && value !== '' - ) + ( [ , value ] ) => value !== undefined && value !== null && value !== '', + ), ); } @@ -286,7 +286,7 @@ export function requireConfig( config, keys ) { throw new Error( `Missing required configuration: ${ missing .map( ( key ) => `${ key } (set via ${ hints[ key ] ?? key })` ) - .join( ', ' ) }` + .join( ', ' ) }`, ); } } diff --git a/src/manifest.mjs b/src/manifest.mjs index 2704d43..b2f672d 100644 --- a/src/manifest.mjs +++ b/src/manifest.mjs @@ -42,7 +42,7 @@ export function previewUrl( config, slug, postType = '', wrapper = null ) { */ export function authHeader( config ) { const encoded = Buffer.from( - `${ config.username }:${ config.appPassword }` + `${ config.username }:${ config.appPassword }`, ).toString( 'base64' ); return `Basic ${ encoded }`; @@ -67,7 +67,7 @@ export async function fetchManifest( config ) { throw new Error( `Authentication failed (HTTP ${ response.status }) for ${ config.username } at ${ url }. ` + 'Check the application password, and that the user holds the view_pattern_library capability ' + - 'on this site (roles are per-site on multisite).' + 'on this site (roles are per-site on multisite).', ); } @@ -83,14 +83,14 @@ export async function fetchManifest( config ) { `Expected JSON from ${ url } but got ${ response.headers.get( 'content-type' ) ?? 'unknown' }. ` + `Response starts: ${ JSON.stringify( body.slice( 0, 200 ) ) }. ` + 'Is the wp-pattern-library plugin active on this site? An HTML login page here ' + - 'usually means an access proxy answered instead of WordPress — see extraHeaders.' + 'usually means an access proxy answered instead of WordPress — see extraHeaders.', ); } if ( manifest.manifestVersion !== SUPPORTED_MANIFEST_VERSION ) { throw new Error( `Manifest version ${ manifest.manifestVersion } is not supported (expected ` + - `${ SUPPORTED_MANIFEST_VERSION }). Update the wp-pattern-library package on the site or in this project.` + `${ SUPPORTED_MANIFEST_VERSION }). Update the wp-pattern-library package on the site or in this project.`, ); } @@ -101,7 +101,7 @@ export async function fetchManifest( config ) { if ( config.variants.length && ! manifest.features?.includes( 'variants' ) ) { throw new Error( 'This config declares `variants`, but the site does not support them. Update the ' + - 'wp-pattern-library plugin on the site to a version that advertises the "variants" feature.' + 'wp-pattern-library plugin on the site to a version that advertises the "variants" feature.', ); } @@ -181,7 +181,7 @@ function exclusionReason( pattern, namespaces, exclude ) { } const blockedPostTypes = ( exclude.postTypes ?? [] ).filter( ( postType ) => - pattern.postTypes?.includes( postType ) + pattern.postTypes?.includes( postType ), ); if ( blockedPostTypes.length ) { return `scoped to ${ blockedPostTypes.join( ', ' ) }`; diff --git a/src/markdown.mjs b/src/markdown.mjs index 16e0175..1aded8b 100644 --- a/src/markdown.mjs +++ b/src/markdown.mjs @@ -132,7 +132,7 @@ function renderPattern( pattern, shotsRelPath, config, haveShots, labels ) { // unrelated entries. Captions appear only when there is something to tell // apart — a pattern with no variant needs no label on its only image. const shots = shotsFor( pattern, config ).filter( ( shot ) => - haveShots.has( shot.basename ) + haveShots.has( shot.basename ), ); const captioned = shots.length > 1; @@ -226,12 +226,12 @@ export async function generate( manifest, patterns, config, skipped = [] ) { .map( async ( shot ) => { const file = join( config.screenshotsDir, - `${ shot.basename }.${ config.imageFormat }` + `${ shot.basename }.${ config.imageFormat }`, ); if ( await exists( file ) ) { haveShots.add( shot.basename ); } - } ) + } ), ); for ( const page of pages ) { @@ -239,7 +239,7 @@ export async function generate( manifest, patterns, config, skipped = [] ) { await mkdir( dirname( path ), { recursive: true } ); const shotsRelPath = toPosix( - relative( dirname( path ), config.screenshotsDir ) + relative( dirname( path ), config.screenshotsDir ), ); const indexRelPath = toPosix( relative( dirname( path ), config.indexFile ) ); @@ -263,9 +263,9 @@ export async function generate( manifest, patterns, config, skipped = [] ) { out.push( '## Contents', '' ); out.push( ...[ ...lead, ...rest ].map( - ( pattern ) => `- [${ pattern.title }](#${ anchor( pattern.title ) })` + ( pattern ) => `- [${ pattern.title }](#${ anchor( pattern.title ) })`, ), - '' + '', ); const section = ( list ) => @@ -304,8 +304,8 @@ async function writeIndex( pages, patterns, config, skipped ) { const kinds = [ ...new Set( pages.map( ( page ) => page.kind ) ) ]; const uncategorized = patterns.filter( ( pattern ) => ! pattern.categories.some( ( slug ) => - pages.some( ( page ) => page.slug === slug ) - ) + pages.some( ( page ) => page.slug === slug ), + ), ); const out = [ @@ -329,8 +329,8 @@ async function writeIndex( pages, patterns, config, skipped ) { const rel = toPosix( relative( dirname( config.indexFile ), - resolve( config.outputDir, page.dir, `${ page.filename }.md` ) - ) + resolve( config.outputDir, page.dir, `${ page.filename }.md` ), + ), ); out.push( `- [${ page.label }](${ rel }) (${ page.patterns.length })` ); } @@ -342,7 +342,7 @@ async function writeIndex( pages, patterns, config, skipped ) { '## Uncategorized', '', '_These patterns carry no category that appears above._', - '' + '', ); out.push( ...uncategorized.map( ( pattern ) => `- \`${ pattern.name }\`` ), '' ); } @@ -352,11 +352,11 @@ async function writeIndex( pages, patterns, config, skipped ) { '## Not included', '', '_Registered on the site, but excluded from this library by configuration._', - '' + '', ); out.push( ...skipped.map( ( pattern ) => `- \`${ pattern.name }\` — ${ pattern.reason }` ), - '' + '', ); } From 62a8ea3d186cc0590ebff748bfcff807d0dd2528 Mon Sep 17 00:00:00 2001 From: goldenapples Date: Sun, 6 Sep 2026 10:16:33 -0400 Subject: [PATCH 03/15] Add read-the-docs site --- docs/01-index.md | 70 +++++ docs/02-getting-started.md | 156 ++++++++++ docs/03-plugin.md | 195 ++++++++++++ docs/04-npm-package.md | 291 ++++++++++++++++++ docs/05-github-action.md | 199 ++++++++++++ docs/404.html | 12 + docs/Gemfile | 6 + docs/_config.yml | 36 +++ docs/_includes/head_custom.html | 47 +++ docs/_layouts/home.html | 19 ++ .../images/example-capture-variant.webp | Bin 0 -> 59708 bytes docs/assets/images/example-capture.webp | Bin 0 -> 59708 bytes 12 files changed, 1031 insertions(+) create mode 100644 docs/01-index.md create mode 100644 docs/02-getting-started.md create mode 100644 docs/03-plugin.md create mode 100644 docs/04-npm-package.md create mode 100644 docs/05-github-action.md create mode 100644 docs/404.html create mode 100644 docs/Gemfile create mode 100644 docs/_config.yml create mode 100644 docs/_includes/head_custom.html create mode 100644 docs/_layouts/home.html create mode 100644 docs/assets/images/example-capture-variant.webp create mode 100644 docs/assets/images/example-capture.webp diff --git a/docs/01-index.md b/docs/01-index.md new file mode 100644 index 0000000..2cca734 --- /dev/null +++ b/docs/01-index.md @@ -0,0 +1,70 @@ +--- + +layout: home +title: About this plugin +nav_order: 1 +permalink: / +--- + +# WP Pattern Library + +WP Pattern Library builds a browsable, screenshotted Markdown design reference from the registered patterns in a WordPress project. Documentation is generated from the patterns themselves, so it can reflect the actual theming. + +![A pattern as the generator captured it — a full-width hero, rendered at 1440px with the theme's real styles and fonts]({{ site.baseurl }}/assets/images/example-capture.webp) + +The preview is similar to the pattern previews in the editor "Add Pattern" interface, but pregenerated so that its easier to browse. It also includes description and pattern metadata, for design reference. On a project with 50 or more patterns this can be useful as end user reference documentation as well as for developer review and regression testing. + +## Purpose + +Designed to make living project reference documentation easier to maintain. This is intentionally unopinionated about workflow, to address different requirements and use cases: + +* Can be run locally to generate preview screenshots while developing patterns. Example, developer runs it locally alongside a PR to generate previews of new patterns in development. + +* Can be run against a QA site to capture patterns with live content, for example in a CI action. + +* Can enable the plugin on a production site to capture patterns built in the editor in addition to the ones on disk, and then deactivate once no longer needed. + +## Use cases + +I built this to address specific pain points that came up in development on projects: + +* *Is there already a pattern for this?* Easier to look at pre-existing work before adding new patterns or blocks. +- *What does `card-person-horizontal` actually look like?* You open the editor, insert it, look, undo. +- *Which of these three testimonial patterns did the design call for?* The designer does not have an editor login, so you screenshot it and paste it into Slack. Again. +- *What changed in the theme this sprint?* Run a pattern library update automatically at reporting intervals. +- *Where do these components from the source site migrate to in the new theme?* Extend the pattern library markup to describe which fields in the source content populate each element in a pattern. +- Does this CSS rule break the rendering of any existing content? With a thoughtful setup this can be used as a basic visual regression test in CI workflows. + +I'm sure there are workflows that I haven't thought of yet. Feature requests or PRs welcome! + +## How it works + +**WP Pattern Library** generator contains two separate packages, both of which are maintained and served from a single repo: + +* a **WordPress plugin**, installed or loaded the usual way. This provides a new front-end endpoint which will return a single rendered pattern, wrapped in the theme stylesheet and any block-specific enqueues. It also provides a manifest of patterns available on the site, configurable in a local config file. + +* an **NPM package**, which processes the manifest, collects screenshots of each pattern in a headless Playwright instance, and builds a set of Markdown pages with pattern details + +* a **GitHub Actions workflow**, which can be used to run the documentation generation in a workflow runner and open a pull-request or commit the changes directly to the repo. + +## Output + +What you get is a directory you can commit: + +``` +docs/pattern-library/ +├── README.md Index: every category, with counts +├── banner.md One page per pattern category +├── call-to-action.md +├── testimonials.md +└── screenshots/ + ├── hero-podcast.webp + ├── hero-full-width-image.webp + └── ... +``` + +Each pattern gets its screenshot, its description, its categories and keywords, its block and post types, and the viewport it was captured at. Because it is Markdown in the repository, it renders on GitHub, it is searchable, it diffs in pull requests — and when a pattern's appearance changes, the changed screenshot shows up in review. + + + +Ready? [Get started]({{ site.baseurl }}/getting-started). \ No newline at end of file diff --git a/docs/02-getting-started.md b/docs/02-getting-started.md new file mode 100644 index 0000000..1da6f3c --- /dev/null +++ b/docs/02-getting-started.md @@ -0,0 +1,156 @@ +--- +layout: home +title: Getting started +nav_order: 2 +permalink: /getting-started +--- + +# Getting started + +The quickest way to see what this does is point it at the site you already have running locally. Nothing is deployed, no CI involved, and if you don't like the result you delete a directory. + +These steps are the ones the project's own test environment runs, so they work as written. + +You need a WordPress site running locally with a block theme that registers patterns, Node 24+, and WP-CLI access to that site. Any local environment works — `wp-env`, Altis, VIP, Local, Studio, MAMP, a plain `wp server`. The tool talks to the site over HTTP and doesn't care what is serving it. + +WP-CLI commands below are written as plain `wp`. Run them however your environment expects. + +## 1. Install the plugin + +```bash +composer require humanmade/wp-pattern-library +wp plugin activate wp-pattern-library +``` + +The package declares `"type": "wordpress-plugin"`, so `composer/installers` routes it to the project's plugin directory without any `installer-paths` change. + +Not using Composer? Clone the repository into your plugins directory and activate it. There is no build step. + +## 2. Limit it to your own patterns + +WordPress registers a lot of patterns you didn't write. Tell the plugin which namespace is yours: + +```php +add_filter( 'pattern_library_namespaces', fn () => [ 'my-theme/' ] ); +``` + +Put this in your theme's `functions.php` or a small mu-plugin. The prefix is matched literally, so keep the trailing slash. + +## 3. Create an account for the generator + +The routes are gated behind a dedicated capability, `view_pattern_library`. A bundled WP-CLI command creates a role that holds it, plus a user in that role: + +```bash +wp pattern-library setup --login=pattern-library-bot +``` + +It prints an application password once: + +``` +Store these as CI secrets — the password is not recoverable: + PATTERN_LIBRARY_WP_USER=pattern-library-bot + PATTERN_LIBRARY_WP_APP_PASSWORD=ExsLVnKTz0aSHpwTXGwBlTC7 +``` + +Copy it now. + +{: .warning } + +> **Your own admin account won't work without a grant.** `view_pattern_library` is a custom capability, so no built-in role holds it — administrator included. To use an existing user instead of a bot account, run `wp pattern-library setup` and then `wp pattern-library grant `. + +{: .note } + +> **Application passwords need HTTPS, or a local environment.** If the command warns that they're unavailable, set `WP_ENVIRONMENT_TYPE` to `local` in `wp-config.php`. Most local environments already do. + +## 4. Configure the generator + +In your project root — the repository, not the WordPress install — create `pattern-library.config.js`: + +```js +export default { + title: 'My Theme Pattern Library', + namespaces: [ 'my-theme/' ], + outputDir: 'docs/pattern-library', +}; +``` + +Credentials never go in this file. They come from the environment: + +```bash +export PATTERN_LIBRARY_SITE="http://localhost:8888" +export PATTERN_LIBRARY_WP_USER="pattern-library-bot" +export PATTERN_LIBRARY_WP_APP_PASSWORD="ExsLVnKTz0aSHpwTXGwBlTC7" +``` + +Use whatever URL you actually browse the site at. Plain HTTP and a port number are fine. + +## 5. Look before you leap + +```bash +npx @humanmade/wp-pattern-library build --dry-run +``` + +This fetches the pattern list and reports what a real run would do, without writing anything or starting a browser: + +``` +My Theme — http://localhost:8888 +62 patterns in the library, 47 skipped, 62 targeted. +Skipped: 11 outside configured namespaces, 28 hidden from the inserter, 8 scoped to wp_template. + +Dry run — nothing written. +``` + +A large "skipped" number is usually correct — patterns hidden from the inserter and template parts are excluded by default. See [exclusions]({{ site.baseurl }}/npm-package#exclusions). + +## 6. Capture a few patterns + +Before committing to a full run, try one. A bare argument filters by pattern basename: + +```bash +npx @humanmade/wp-pattern-library build hero +``` + +``` +Capturing to /path/to/project/docs/pattern-library/screenshots + write hero-book (1440px, 792px tall) + write hero-full-width-image (1440px, 840px tall) + write hero-podcast (1440px, 648px tall) + +3 written, 0 unchanged, 0 empty, 0 failed. + +Wrote /path/to/project/docs/pattern-library/README.md and 15 category pages. +``` + +Open `docs/pattern-library/README.md` and click through. This is the moment to check that fonts loaded, images resolved, and nothing is cut off. + +## 7. Run the whole thing + +```bash +npx @humanmade/wp-pattern-library build +``` + +Expect this to take a while on a large library — it's a real browser loading a real page per capture. A hundred patterns is a few minutes. + +Screenshots are only written when their bytes change, so re-running doesn't churn images whose content merely shifted underneath them. That's what makes the output reviewable in a pull request. + +## Adding it to your project + +Install the CLI as a dev dependency so everyone runs the same version: + +```bash +npm install -D @humanmade/wp-pattern-library +``` + +```json +{ + "scripts": { + "patterns": "pattern-library build" + } +} +``` + +## Next + +- [WordPress plugin]({{ site.baseurl }}/plugin) — what it adds to a site, access control, filters. +- [NPM package]({{ site.baseurl }}/npm-package) — every config option, CLI commands, output. +- [GitHub Action]({{ site.baseurl }}/github-action) — running it in CI against a live site. diff --git a/docs/03-plugin.md b/docs/03-plugin.md new file mode 100644 index 0000000..fa23cb6 --- /dev/null +++ b/docs/03-plugin.md @@ -0,0 +1,195 @@ +--- +layout: home +title: WordPress plugin +nav_order: 3 +permalink: /plugin +--- + +# WordPress plugin + +The plugin is the half that runs on WordPress. It adds one front-end endpoint that renders a single registered pattern in isolation, and a manifest listing every pattern available to capture. + +## Installing + +```bash +composer require humanmade/wp-pattern-library +wp plugin activate wp-pattern-library +``` + +The Composer package declares `"type": "wordpress-plugin"`, so `composer/installers` routes it to the project's plugin directory. This can be activated as a standard plugin, or in code from mu-plugins. + +The plugin belongs in whichever environment you capture *from*. If you only generate locally, a `require-dev` install is fine. + +### Enabling it temporarily + +Because the plugin is inert unless its query var is present, it's reasonable to activate it on a production site, capture, and deactivate again — for instance to document patterns that were built in the editor rather than committed to the theme. + +Nothing persists when deactivated except the role, and the routes can be switched off without deactivating: + +```php +add_filter( 'pattern_library_enabled', '__return_false' ); +``` + +## Choosing which patterns to expose + +By default the manifest lists every pattern in the registry, core's included. Limit it to your own: + +```php +add_filter( 'pattern_library_namespaces', fn () => [ 'my-theme/', 'my-plugin/' ] ); +``` + +Prefixes are matched literally, so keep the trailing slash. You can also filter on the generator side, but doing it here means the site never serves patterns that are none of the library's business. + +## Access control + +The routes are gated behind `view_pattern_library`, a custom primitive capability. No built-in role holds it — administrators included. That's the point: the account that reads the library should hold that one capability and nothing else. + +```bash +wp pattern-library setup # Create the role. +wp pattern-library setup --login= # ...and a user in it. +wp pattern-library setup --login= --email= +wp pattern-library grant # Grant it to an existing user. +``` + +`` accepts a login, an email address, or a numeric ID. Both commands mint and print an application password when they touch a user; it isn't recoverable, so capture it at the time. + +The bundled `pattern_library` role has the `read` and `view_pattern_library` caps and nothing else, so the account can't create or change content. + +- **On multisite**, roles are stored per site. Run `setup` with `--url=` for each site you want to capture. +- **Application passwords need HTTPS**, or `WP_ENVIRONMENT_TYPE` set to `local`. WordPress refuses to generate one otherwise. + +To grant access through your own role management instead: + +```php +add_filter( 'pattern_library_user_can', fn () => current_user_can( 'edit_theme_options' ) ); +``` + +## The endpoints + +Both are query vars on `index.php`, on the front end. + +| URL | Returns | +| ----------------------------------------------- | ----------------------------------------- | +| `/index.php?pattern-library-preview=__manifest` | JSON manifest of patterns and categories. | +| `/index.php?pattern-library-preview=` | One pattern, rendered in a bare page. | + +`` is a full pattern name (`my-theme/hero`) or an unambiguous basename (`hero`). + +`index.php` is targeted rather than `/` because a site may have proxy or rewrite rules that intercept the root path before WordPress sees the query var. + +A pattern renders in a minimal HTML document with `wp_head()` and `wp_footer()` intact, so the theme's real stylesheets, fonts and block styles load — but with no site header, footer or admin bar. The pattern is wrapped in `#pattern-library-preview`, which is what the capture tool crops to. + +Every response carries `X-Robots-Tag: noindex, nofollow` and cache-busting headers. An unauthenticated request gets a `401` with a `WWW-Authenticate` challenge. + +Three further query vars exist, all set by the CLI rather than by hand: + +| Query var | Purpose | +| ----------------------------- | -------------------------------------------------------------- | +| `pattern-library-post-type` | Wrap the pattern in a one-item query loop over this post type. | +| `pattern-library-placeholder` | Substitute a placeholder featured image. | +| `pattern-library-wrapper` | JSON group-block attributes to wrap the pattern in. | + +## How authentication works + +Worth understanding, because both of these fail *silently* — WordPress serves the logged-out page with a `200`, so a broken setup doesn't error. It produces a complete, plausible, entirely wrong pattern library. + +Requests authenticate with a standard WordPress application password over HTTP Basic Auth. Two things make that work on a front-end route: + +- **`wp_authenticate_application_password()` ignores any request that isn't REST or XML-RPC.** A front-end route authenticates as nobody otherwise. The route opts itself in through the `application_password_is_api_request` filter, scoped to its own query var. +- **Browsers only attach Basic credentials after a `401` carrying `WWW-Authenticate`,** and never send them preemptively. Playwright's `httpCredentials.send: 'always'` looks like it fixes this and doesn't — it applies to Playwright's API request context, not to page navigation. So the route sends a real challenge with its `401`. + +As a backstop, the CLI navigates the browser to the manifest URL and requires a `200` before capturing anything. + +{: .warning } + +> **An origin behind HTTP Basic can't be captured.** The application password needs the `Authorization: Basic` header, and a request can only carry one. Gates that use other headers — Cloudflare Access service tokens, for instance — are supported; see [access proxies]({{ site.baseurl }}/github-action#sites-behind-an-access-proxy). + +## The manifest + +The manifest is the contract between the two packages: the plugin produces it and the NPM package consumes it. + +```json +{ + "manifestVersion": 1, + "features": [ "variants" ], + "site": { "name": "Example", "url": "https://example.com/" }, + "categories": [ { "slug": "banner", "label": "Banners" } ], + "patterns": [ + { + "name": "my-theme/hero", + "basename": "hero", + "title": "Hero", + "description": "A full-width hero.", + "categories": [ "banner" ], + "keywords": [ "masthead" ], + "blockTypes": [ "core/group" ], + "postTypes": [], + "viewportWidth": 1440, + "inserter": true, + "source": "theme" + } + ] +} +``` + +Pattern markup is deliberately omitted — the library documents patterns visually, and shipping every pattern's content would make the manifest an order of magnitude larger. + +`manifestVersion` only moves when the shape changes incompatibly; the CLI refuses a version it doesn't understand rather than misreading it. `features` is additive, so a CLI too old to know a feature never asks for it, and one configured to use a feature can say plainly that the *site* is too old. + +Keep the plugin and the CLI on the same version. They ship from one repository under one tag for exactly this reason. + +## Filters + +| Filter | Purpose | +| ----------------------------------- | ----------------------------------------- | +| `pattern_library_enabled` | Disable the routes entirely. | +| `pattern_library_namespaces` | Pattern-name prefixes to expose. | +| `pattern_library_user_can` | Override the capability check. | +| `pattern_library_placeholder_image` | Markup of the placeholder featured image. | +| `pattern_library_wrapper_open` | Opening markup of a variant wrapper. | +| `pattern_library_wrapper_close` | Closing markup of a variant wrapper. | + +Disable the routes outside development: + +```php +add_filter( 'pattern_library_enabled', fn () => 'production' !== wp_get_environment_type() ); +``` + +Use a themed placeholder image: + +```php +add_filter( 'pattern_library_placeholder_image', function (): string { + return ''; +} ); +``` + +Replace the variant wrapper with your own section markup: + +```php +add_filter( 'pattern_library_wrapper_open', function ( string $open, array $attributes ): string { + return '
'; +}, 10, 2 ); + +add_filter( 'pattern_library_wrapper_close', fn (): string => '
' ); +``` + +## Variant wrappers + +When the CLI asks for a [section variant]({{ site.baseurl }}/npm-package#section-variants), the plugin builds the wrapper server-side as a real `core/group` block, from JSON attributes in the query var. What travels in the URL is data, never markup. + +`className`, `align`, `backgroundColor`, `gradient`, `textColor`, `style` and `layout` are accepted — the attributes of a section group. Anything else is dropped, so a config typo can't quietly become a block attribute nobody meant to set. + +Two details make this a real group block rather than a class added in the browser: + +- Block stylesheets registered with `wp_enqueue_block_style()` only load when their block actually renders. A pattern containing no group of its own would otherwise be captured without the very CSS the wrapper's style lives in. +- Colour classes are written out in full, because core applies colour supports server-side only to dynamic blocks. + +## Troubleshooting + +**`wp pattern-library` isn't a command.** The plugin isn't active on the site you're running WP-CLI against. Check `wp plugin list --status=active`, and add `--url=` on multisite. + +**`Application passwords are unavailable for this user`.** Set `WP_ENVIRONMENT_TYPE` to `local`, or use HTTPS. The role and user are still created; run `wp pattern-library grant ` afterwards to mint the password. + +**The manifest returns a WordPress 404 page.** The plugin isn't active on that site. + +**The manifest returns an HTML login page.** Something is answering before WordPress — an access proxy, an SSO gateway, or a "coming soon" plugin short-circuiting the front end before `template_redirect`. diff --git a/docs/04-npm-package.md b/docs/04-npm-package.md new file mode 100644 index 0000000..ea52e7f --- /dev/null +++ b/docs/04-npm-package.md @@ -0,0 +1,291 @@ +--- +layout: home +title: NPM package +nav_order: 4 +permalink: /npm-package +--- + +# NPM package + +The NPM package is the half that generates the documentation. It reads the manifest from the site, screenshots each pattern in a headless Playwright browser, and writes an index plus one Markdown page per category. + +```bash +npm install -D @humanmade/wp-pattern-library +``` + +Or run it without installing: `npx @humanmade/wp-pattern-library build`. + +It talks to the site over HTTP, so it doesn't care whether that site is `localhost:8888` or `www.example.com` — and it doesn't need to run on the same machine. The site itself never needs Node. + +## Commands + +```bash +pattern-library build # Capture screenshots, then write Markdown. The default. +pattern-library capture # Screenshots only. +pattern-library generate # Markdown only, from screenshots already on disk. +pattern-library manifest # Print the filtered manifest as JSON. +``` + +| Flag | Effect | +| --------------------- | --------------------------------------------------------------- | +| `--dry-run` | Report what would be included; write nothing, start no browser. | +| `--site=` | Override `PATTERN_LIBRARY_SITE`. | +| `--output-dir=` | Override `outputDir`. | + +Any other `--key=value` overrides the matching config key, converted from kebab-case to camelCase. + +A bare argument filters patterns by basename substring: + +```bash +pattern-library build hero # Every pattern with "hero" in its name. +pattern-library capture hero card # Either. +``` + +The filter affects what gets *captured*. Markdown is always written for the whole library, so a filtered run doesn't truncate the pages — patterns without a screenshot on disk are marked *"Preview pending"*. + +Some combinations worth knowing: + +```bash +# Re-shoot one pattern after changing it. +pattern-library capture hero-podcast + +# Rebuild the Markdown after changing config, without re-capturing anything. +pattern-library generate + +# Inspect what the site is actually reporting. +pattern-library manifest | jq '.patterns[].name' +``` + +`generate` is the fast loop when you're tuning `classify()`, `extraFields` or `title`. It reuses the screenshots on disk and takes about a second. + +## Reading the run summary + +``` +120 written, 45 unchanged, 2 empty, 1 failed. +``` + +- **written** — the screenshot's bytes changed, so the file was rewritten. +- **unchanged** — byte-identical to what was on disk, so it's left alone and doesn't churn in your diff. +- **empty** — the pattern rendered nothing. Usually a query-loop item template needing [post context](#patterns-that-render-empty). +- **failed** — the capture errored. The run exits non-zero. + +The summary also reports **missing resources** — images, fonts and scripts a pattern referenced that failed to load. A hero whose background image 404s renders "successfully" and previews wrong, so this is worth reading. + +## Configuration + +The generator reads `pattern-library.config.js` (or `.mjs`) from the directory you run it in. It's a real ES module, so values can be computed and options that take a function get one. + +Credentials never belong in this file — anything you put there is committed. Precedence, lowest to highest: **defaults → config file → environment → CLI flags.** + +| Key | Default | What it does | +| ------------------- | ------------------------- | ------------------------------------------------------------ | +| `title` | `Pattern Library` | Heading on the index page. | +| `namespaces` | `[]` (all) | Pattern-name prefixes to include. | +| `outputDir` | `docs/pattern-library` | Where pages and screenshots are written. | +| `indexFile` | `/README.md` | Index path. | +| `screenshotsDir` | `/screenshots` | Screenshot path. | +| `imageFormat` | `webp` | `webp`, `avif`, `jpeg` or `png`. | +| `imageQuality` | `80` | Ignored for `png`. | +| `defaultViewport` | `1440` | Used when a pattern declares no `Viewport Width`. | +| `captureTimeout` | `30000` | Milliseconds to wait for one capture. | +| `exclude` | see below | What to leave out. | +| `postTypeContext` | `{}` | Basename → post type, for query-loop item templates. | +| `classify` | flat | Where each category's page goes. | +| `animations` | `[ 'aos' ]` | Animation libraries to settle before capture. | +| `extraFields` | `[]` | Extra metadata lines per pattern. | +| `variants` | `[]` | Extra captures inside a section wrapper. | +| `baseLabel` | `Default rendering` | Caption on the plain capture of a pattern that has variants. | +| `includeSkipped` | `true` | List excluded patterns, with reasons, on the index. | +| `placeholderImages` | `true` | Placeholder featured image for posts that have none. | +| `extraHeaders` | `{}` | Headers sent with every request to the site. | + +Credentials and the site URL come from the environment: + +| Variable | Purpose | +| --------------------------------- | ------------------------------------------ | +| `PATTERN_LIBRARY_SITE` | Origin of the site to capture from. | +| `PATTERN_LIBRARY_WP_USER` | Login holding `view_pattern_library`. | +| `PATTERN_LIBRARY_WP_APP_PASSWORD` | That user's application password. | +| `PATTERN_LIBRARY_EXTRA_HEADERS` | Extra headers, one `Name: value` per line. | + +## Exclusions + +```js +exclude: { + inserterHidden: true, + postTypes: [ 'wp_template', 'wp_template_part' ], + patterns: [], // Exact pattern names. +} +``` + +The defaults skip patterns hidden from the inserter, and those scoped to `wp_template` / `wp_template_part` — a template part rendered on its own is meaningless. + +Partial overrides merge with the defaults, so this only adds to the list: + +```js +exclude: { + patterns: [ 'my-theme/work-in-progress' ], +} +``` + +Excluded patterns still appear on the index under **Not included**, with the reason. Set `includeSkipped: false` to suppress that. + +## Patterns that render empty + +A pattern built as a query-loop *item template* — a person card, a post card — has nothing to bind to when rendered alone. Its post-title and post-content blocks resolve against whatever the global query happens to be, which is nothing, so it captures as an empty box. + +Give it a post type, keyed by basename: + +```js +postTypeContext: { + 'person-card': 'person', + 'card-post': 'post', +} +``` + +The site then wraps the pattern in a one-item query loop over that post type. This applies to patterns registered with `core/post-template` in their `blockTypes`. + +A pattern that renders empty for some other reason — a query with no matching posts, a block that needs a logged-in user, an editor-only block — won't be fixed by this, and is a candidate for `exclude.patterns`. + +## Placeholder images + +Posts with no featured image leave a hole where the image should be. By default the generator asks the site to substitute a neutral grey placeholder, so the capture shows the layout rather than the gap. + +```js +placeholderImages: false, // Show exactly what the front end shows. +``` + +Themes can replace the markup through the `pattern_library_placeholder_image` [filter]({{ site.baseurl }}/plugin#filters). + +## Animation libraries + +Some scroll-triggered animation libraries hide content until it scrolls into view. A headless capture never scrolls, so by default those patterns photograph blank. + +Additionally, some sites may include features which block rendering on initial load - modals, cookie consent banners, or lazy-loaded content. By adding an entry in the pattern library config, you can hide these elements either by adding additional CSS or running javascript to wait for the content to settle. + +`animations` lists what to settle before capturing — built-in names, or custom handlers: + +```js +animations: [ + 'aos', + { + // CSS injected before capture, overriding the hidden state. + css: '.js-reveal { opacity: 1 !important; transform: none !important; }', + // Runs in the browser to flip elements to "done". Serialized into the + // page, so it must not close over variables from this config file. + settle: () => { + document + .querySelectorAll( '.js-reveal' ) + .forEach( ( el ) => el.classList.add( 'is-revealed' ) ); + }, + }, +] +``` + +`aos` ([Animate On Scroll](https://michalsnik.github.io/aos/)) is the only built-in so far. If you write a handler for a library other projects use, it belongs in `src/animations.mjs` as a new built-in so somebody else can list it by name — PRs welcome. + +## Extra metadata fields + +Each pattern's section shows its description, categories, keywords, block types and post types. `extraFields` appends more. `value` is either a manifest property name or a function receiving the pattern: + +```js +extraFields: [ + { label: 'Source', value: 'source' }, + { label: 'Namespace', value: ( pattern ) => pattern.name.split( '/' )[ 0 ] }, + { label: 'Figma', value: ( pattern ) => FIGMA_LINKS[ pattern.basename ] ?? '' }, +] +``` + +A field whose value is empty is omitted for that pattern, so a partial lookup table is fine. + +This is also the hook for migration work — a field describing which fields in the source content populate each element in a pattern travels alongside the screenshot. + +## Section variants + +A theme whose patterns work in more than one section style — for example, the same section on light and dark backgrounds — can document both without duplicating any patterns. + +Each entry in `variants` captures every pattern it applies to a second time, rendered inside a group block carrying the attributes in `wrapper`: + +```js +variants: [ + { + slug: 'dark', + label: 'Dark section', + wrapper: { className: 'is-style-dark', backgroundColor: 'shark' }, + appliesTo: ( pattern ) => ! pattern.categories.includes( 'my-theme/pages' ), + }, +] +``` + +| Key | Required | Purpose | +| ----------- | -------- | ---------------------------------------------------------- | +| `slug` | yes | Kebab-case. Becomes the `--slug` filename suffix. | +| `wrapper` | yes | Group block attributes. | +| `label` | no | Caption above the image. Defaults to a title-cased `slug`. | +| `appliesTo` | no | Predicate receiving the pattern. Defaults to all patterns. | + +![The same pattern captured a second time inside a dark section wrapper]({{ site.baseurl }}/assets/images/example-capture-variant.webp) + +When a pattern has at least one variant image, every image in its section gets a caption — the variant's `label`, and `baseLabel` for the plain capture. A pattern with no variants keeps its single uncaptioned image. + +The wrapper is built by the plugin, which accepts a [fixed set of group attributes]({{ site.baseurl }}/plugin#variant-wrappers). + +{: .warning } + +> **Use `appliesTo` deliberately.** A variant doubles the captures, the capture time and the committed images for every pattern it covers, and some patterns have no second treatment worth showing — a whole-page reference already contains its own sections. + +Variants need a site running a plugin version that advertises the feature. An older one is reported as an error rather than silently capturing duplicates. + +## Grouping categories + +By default every registered category becomes one page in the output root. A project with a richer taxonomy can supply `classify()`, called once per category, returning where it belongs — or nothing, to drop it: + +```js +classify: ( { slug, label } ) => { + // A cross-cutting category of whole-page references, which should also lead + // each section page rather than sitting in the list. + if ( slug === 'full-page' ) { + return { kind: 'reference', dir: 'references', label: 'Full page', leadsIn: 'section' }; + } + + if ( label.startsWith( 'Component - ' ) ) { + return { kind: 'component', dir: 'components', label: label.slice( 12 ) }; + } + + return { kind: 'section', dir: 'sections', label }; +} +``` + +| Return key | Purpose | +| ------------- | ----------------------------------------------------------------------------- | +| `kind` | Groups pages under headings on the index. | +| `dir` | Directory the page is written to, relative to `outputDir`. | +| `label` | Page title and index link text. | +| `leadsIn` | Promotes this category's patterns to the top of every page of the named kind. | +| `description` | Optional paragraph under the page heading. | + +Category slugs are commonly namespaced (`my-theme/hero`). The separator is flattened in filenames, so a slug can't write into a subdirectory and bypass the placement `classify()` asked for. + +Every project I've worked on organises its patterns differently, which is why this is a function rather than a setting. + +## Troubleshooting + +**`Missing required configuration: siteUrl`.** The three required values come from the environment, and an empty string counts as unset. If you exported them in a different shell, they aren't set here. + +**`Authentication failed (HTTP 401)`.** In order of likelihood: the user doesn't hold `view_pattern_library`; the application password is wrong; you're on multisite and the role is on a different site; or the password lost its spaces — they're part of the value, so quote it. + +**`The browser is not authenticating (HTTP 401)`.** The manifest fetch worked but the browser probe didn't, which narrows it to the browser path. Usually the site's plugin is too old to send the `WWW-Authenticate` challenge. A `403`, or a redirect to a login screen, is more likely an access proxy. + +**`Expected JSON but got text/html`.** The error prints the first 200 characters of the response, which usually identifies the culprit — a login page, a 404, a maintenance page, or a cached response. + +**`Manifest version 2 is not supported`.** The site's plugin is newer than the CLI, or the reverse. Update whichever is behind. + +**Screenshots are blank.** Scroll-triggered animation. Add a handler to [`animations`](#animation-libraries). + +**Fonts look wrong.** The capture waits for `document.fonts.ready`, so this is almost always a font that didn't load at all. Check the missing-resources section of the run summary. + +**Every screenshot is rewritten on every run.** Something genuinely differs each time — live content in a query loop, a rotating hero image, a timestamp. Exclude those patterns or give them stable content. + +**Captures are slow.** Filter to what you're working on, check whether `variants` is doubling your capture count, and in CI use the Playwright container image. + +**Images are too large to commit.** Lower `imageQuality`, switch `imageFormat` to `avif`, narrow `variants`, or point `outputDir` somewhere published rather than committed. diff --git a/docs/05-github-action.md b/docs/05-github-action.md new file mode 100644 index 0000000..3e817b2 --- /dev/null +++ b/docs/05-github-action.md @@ -0,0 +1,199 @@ +--- +layout: home +title: GitHub Action +nav_order: 5 +permalink: /github-action +--- + +# GitHub Action + +The repository ships a composite action that wraps the NPM package, so running the generator in CI is a few lines rather than a build script. + +This is how you keep a library current without anyone remembering to update it — run it after a release, on a schedule, or on demand, and let it open a pull request with whatever changed. + +## What CI adds + +Running from a workflow rather than a local environment gets you two things: + +- **Captures against a deployed site**, with real content, real images and real fonts, on code that's actually shipped. +- **A reviewable diff.** Screenshots are only rewritten when their bytes change, so the pull request contains exactly the patterns whose appearance changed. That doubles as a rough visual regression check — a screenshot that changes in a release nobody expected to touch the front end is worth a look. + +The trade-off is that it only sees what's deployed. A pattern that exists on your branch and not on the captured site renders as *"Preview pending"* until it ships. If you want previews of in-progress work, run the CLI locally alongside the PR instead. + +## Setup + +### 1. Deploy the plugin and create an account + +The [plugin]({{ site.baseurl }}/plugin) has to be active on whichever site you capture from, and you need a user holding `view_pattern_library`: + +```bash +wp pattern-library setup --login=pattern-library-bot +``` + +### 2. Store the credentials + +Under **Settings → Secrets and variables → Actions**: + +| Name | Kind | Value | +| --------------------------------- | -------- | ------------------------- | +| `PATTERN_LIBRARY_WP_USER` | Secret | `pattern-library-bot` | +| `PATTERN_LIBRARY_WP_APP_PASSWORD` | Secret | The application password | +| `PATTERN_LIBRARY_SITE` | Variable | `https://www.example.com` | + +The site URL is a variable rather than a secret because it isn't one, and having it visible in the workflow log is useful when a run captures the wrong environment. + +### 3. Check the credentials from your machine first + +```bash +export PATTERN_LIBRARY_SITE="https://www.example.com" +export PATTERN_LIBRARY_WP_USER="pattern-library-bot" +export PATTERN_LIBRARY_WP_APP_PASSWORD="xxxx xxxx xxxx xxxx" + +npx @humanmade/wp-pattern-library build --dry-run +``` + +A dry run makes no captures and writes nothing, but it does authenticate and fetch the manifest — which is where credential problems show up. Much faster to debug here than through CI logs. + +## The workflow + +Copy [`examples/refresh-pattern-library.yml`](https://github.com/humanmade/wp-pattern-library/blob/main/examples/refresh-pattern-library.yml) into `.github/workflows/` and adjust: + +```yaml +name: Refresh pattern library + +on: + workflow_dispatch: + inputs: + base_branch: + description: Branch to open the pull request against. + required: true + default: main + output_path: + description: Directory to write the pattern library into. + required: true + default: docs/pattern-library + +permissions: + contents: write + pull-requests: write + +jobs: + refresh: + runs-on: ubuntu-latest + # Ships Chromium and its system dependencies preinstalled, which saves a + # minute or so of apt traffic on every run. + container: mcr.microsoft.com/playwright:v1.62.1-noble + + steps: + - uses: actions/checkout@v7 + with: + ref: ${{ inputs.base_branch }} + + - uses: actions/setup-node@v7 + with: + node-version: 24 + + - name: Build the pattern library + uses: humanmade/wp-pattern-library@v0.3.0 + with: + site-url: ${{ vars.PATTERN_LIBRARY_SITE }} + username: ${{ secrets.PATTERN_LIBRARY_WP_USER }} + app-password: ${{ secrets.PATTERN_LIBRARY_WP_APP_PASSWORD }} + output-path: ${{ inputs.output_path }} + + - name: Open a pull request + uses: peter-evans/create-pull-request@v8 + with: + base: ${{ inputs.base_branch }} + branch: pattern-library/refresh + title: Refresh the pattern library + commit-message: Refresh the pattern library + add-paths: ${{ inputs.output_path }} + delete-branch: true +``` + +To commit directly to a branch instead of opening a pull request, drop the last step and commit the `output_path` yourself. + +## Action inputs + +| Input | Required | Purpose | +| ------------------- | -------- | ----------------------------------------------------- | +| `site-url` | yes | Origin of the site to capture from. | +| `username` | yes | Login holding `view_pattern_library`. | +| `app-password` | yes | That user's application password. | +| `output-path` | no | Overrides `outputDir` from the config file. | +| `working-directory` | no | Where `pattern-library.config.js` lives. Default `.`. | +| `extra-headers` | no | Headers for an origin behind an access proxy. | +| `version` | no | Version of the NPM package to run. Default `latest`. | + +Pin `version` to the same release as the action reference, so a run can't mix versions. Consuming workflows should pin the action to a released tag — there's deliberately no moving `@v1` tag while the package is pre-1.0. + +## Triggers + +The example is `workflow_dispatch` on purpose. A refresh opens a pull request containing images and captures whatever is deployed at that moment, so it's usually best run when you know what state the site is in. + +On a schedule instead: + +```yaml +on: + workflow_dispatch: + schedule: + - cron: '0 6 * * 1' # Mondays, 06:00 UTC +``` + +Note that `schedule` triggers don't receive `inputs`, so give the workflow defaults that stand on their own. + +## Which environment to capture + +Any environment the plugin is active on and the runner can reach. Production gives the most representative output; a QA or staging site gives live-ish content without depending on a release. + +{: .warning } + +> **Staging behind HTTP Basic can't be used.** The application password needs the `Authorization: Basic` header, and a request can only carry one. Use header-based access control instead, or capture from an environment that isn't gated that way. + +## Sites behind an access proxy + +An origin fronted by Cloudflare Access, or anything like it, answers before WordPress does — the manifest request comes back as an HTML login page, and no application password helps, because the request never reached WordPress. + +Send the proxy's credentials alongside the application password: + +```yaml + - name: Build the pattern library + uses: humanmade/wp-pattern-library@v0.3.0 + with: + site-url: ${{ vars.PATTERN_LIBRARY_SITE }} + username: ${{ secrets.PATTERN_LIBRARY_WP_USER }} + app-password: ${{ secrets.PATTERN_LIBRARY_WP_APP_PASSWORD }} + extra-headers: | + CF-Access-Client-Id: ${{ secrets.CF_ACCESS_CLIENT_ID }} + CF-Access-Client-Secret: ${{ secrets.CF_ACCESS_CLIENT_SECRET }} +``` + +Locally, the same thing as one `Name: value` per line: + +```bash +export PATTERN_LIBRARY_EXTRA_HEADERS="CF-Access-Client-Id: .access +CF-Access-Client-Secret: " +``` + +Non-secret headers can live in the config file instead, and merge underneath: + +```js +extraHeaders: { 'X-Environment': 'production' }, +``` + +These headers go on the manifest request and on every browser request made **to the site's own origin**. They're withheld from third-party requests a theme makes — fonts, analytics, CDNs — so a service token is never handed to a host that merely happens to be referenced by a pattern. If a font host sits behind the same gate it will fail to load, and the run will report it as a missing resource. + +## Running it elsewhere + +The action is a thin wrapper. The CLI is a plain Node program, so GitLab CI, Bitbucket Pipelines, Buildkite or a cron job on a box all work the same way: install Node 24 and Chromium, set the three environment variables, run `npx @humanmade/wp-pattern-library build`. + +## Troubleshooting + +**The run captures the wrong site.** `PATTERN_LIBRARY_SITE` is a repository variable, so it's visible in the workflow log — check what the run actually printed. + +**Chromium fails to install.** Use the `mcr.microsoft.com/playwright` container image, which ships it. The action skips its own install when it detects one. + +**The pull request is enormous.** Every screenshot changed, which usually means live content in query loops. See [screenshot churn]({{ site.baseurl }}/npm-package#troubleshooting). + +**Nothing happens on a schedule trigger.** `schedule` doesn't pass `inputs`, so a workflow that relies on `${{ inputs.output_path }}` gets an empty string. Give the inputs defaults the expressions can fall back to. diff --git a/docs/404.html b/docs/404.html new file mode 100644 index 0000000..3c1b419 --- /dev/null +++ b/docs/404.html @@ -0,0 +1,12 @@ +--- +layout: home +title: Page not found +nav_exclude: true +permalink: /404.html +--- + +# Page not found + +The page you're looking for doesn't exist. + +[Go to the home page]({{ site.baseurl }}/) diff --git a/docs/Gemfile b/docs/Gemfile new file mode 100644 index 0000000..debdac6 --- /dev/null +++ b/docs/Gemfile @@ -0,0 +1,6 @@ +source "https://rubygems.org" + +gem "just-the-hm-docs", github: "humanmade/just-the-hm-docs" +gem "jekyll" +gem "jekyll-include-cache" +gem "webrick" diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 0000000..720c85f --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1,36 @@ +title: WP Pattern Library +tagline: A browsable, screenshotted pattern library generated from the patterns your theme already registers. +description: Generate a Markdown pattern library, with screenshots, from a WordPress site's registered block patterns — from your local environment or from production. +author: Human Made +baseurl: '/wp-pattern-library' +url: 'https://humanmade.github.io' + +theme: just-the-hm-docs + +plugins: + - jekyll-include-cache + +aux_links: + "WP Pattern Library on GitHub": + - https://github.com/humanmade/wp-pattern-library + +nav_external_links: + - title: GitHub source + url: https://github.com/humanmade/wp-pattern-library + - title: Issues + url: https://github.com/humanmade/wp-pattern-library/issues + +# Callout styles. Theme colours are defined by just-the-hm-docs; the callout +# names have to be declared here, because a Jekyll theme's own _config.yml is +# not inherited by the sites that use it. +callouts_level: quiet +callouts: + note: + title: Note + color: hm-blue-callout + warning: + title: Warning + color: hm-red-callout + important: + title: Important + color: hm-purple-callout diff --git a/docs/_includes/head_custom.html b/docs/_includes/head_custom.html new file mode 100644 index 0000000..a42d69d --- /dev/null +++ b/docs/_includes/head_custom.html @@ -0,0 +1,47 @@ + + + + + + + + diff --git a/docs/_layouts/home.html b/docs/_layouts/home.html new file mode 100644 index 0000000..617a861 --- /dev/null +++ b/docs/_layouts/home.html @@ -0,0 +1,19 @@ +--- +layout: default +--- + +{{ content }} + +{% if page.nav_order %} + {% assign next_nav_order = page.nav_order | plus: 1 %} + {% assign next_page = nil %} + {% for p in site.pages %} + {% if p.nav_order == next_nav_order %} + {% assign next_page = p %} + {% endif %} + {% endfor %} + + {% if next_page %} +

Next: {{ next_page.title }} →

+ {% endif %} +{% endif %} diff --git a/docs/assets/images/example-capture-variant.webp b/docs/assets/images/example-capture-variant.webp new file mode 100644 index 0000000000000000000000000000000000000000..c528b519c34d7a1a48f35051a78029c3bfbd5368 GIT binary patch literal 59708 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 gJ95@H8LpMk00000000000000000000000000F&7^D*ylh literal 0 HcmV?d00001 diff --git a/docs/assets/images/example-capture.webp b/docs/assets/images/example-capture.webp new file mode 100644 index 0000000000000000000000000000000000000000..c528b519c34d7a1a48f35051a78029c3bfbd5368 GIT binary patch literal 59708 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 gJ95@H8LpMk00000000000000000000000000F&7^D*ylh literal 0 HcmV?d00001 From ec2c7d73acd6d0819842ba39101d27f5356fe54b Mon Sep 17 00:00:00 2001 From: goldenapples Date: Sun, 6 Sep 2026 10:29:18 -0400 Subject: [PATCH 04/15] Update formatting in README, check in CONTRIBUTING.md --- CONTRIBUTING.md | 295 ++++++++++++++++++++++++++++++++++++ README.md | 389 ++++++++---------------------------------------- 2 files changed, 355 insertions(+), 329 deletions(-) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..7f56161 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,295 @@ +# Contributing + +Thanks for looking. This is a small package with a fairly unusual shape — two +languages, three published artefacts, one repository — so this document is +mostly about the things that are not obvious from reading the code. + +- [What lives where](#what-lives-where) +- [Setting up](#setting-up) +- [Running the tests](#running-the-tests) +- [Code style](#code-style) +- [The manifest contract](#the-manifest-contract) +- [Making a change](#making-a-change) +- [Documentation](#documentation) +- [Releasing](#releasing) +- [Good first issues](#good-first-issues) + +## What lives where + +``` +plugin.php WordPress plugin bootstrap +inc/ The PHP half — routes, manifest, rendering, WP-CLI +bin/ The Node CLI entry point +src/ The Node half — config, manifest, capture, Markdown +action.yml GitHub Action wrapper around the npm package +tests/php/ PHPUnit, run against a real WordPress +tests/js/ node:test +docs/ The Jekyll documentation site +docs/architecture/ ADRs — why things are the way they are +examples/ A workflow consuming projects can copy +``` + +Three artefacts ship from this one tree, from the same tag: + +| Artefact | Built from | Published to | +|---|---|---| +| `humanmade/wp-pattern-library` | `plugin.php`, `inc/` | Packagist | +| `@humanmade/wp-pattern-library` | `bin/`, `src/` | npm | +| `humanmade/wp-pattern-library` action | `action.yml` | GitHub | + +There is no separate source for the Node CLI and no build step. What is in the +repository is what is published. + +## Setting up + +You need **Node 24+**, **PHP 8.1+**, **Composer**, and **Docker** (for the +WordPress test environment). + +```bash +git clone https://github.com/humanmade/wp-pattern-library.git +cd wp-pattern-library + +composer install +npm install +``` + +Then bring up a WordPress to work against: + +```bash +npm run env:start +``` + +This is [`wp-env`](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-env/). +It gives you a site at `http://localhost:8888` with this plugin active and +Twenty Twenty-Five as the theme — which is convenient, because Twenty +Twenty-Five registers about sixty patterns, so there is something real to +capture. + +```bash +npm run env:stop # Stop it. +npm run env:destroy # Throw it away, including the database. +``` + +### Capturing against the local site + +To exercise the whole thing end to end: + +```bash +# Provision an account on the local site. +npm run env:cli -- pattern-library setup --login=pattern-library-bot + +# Point the CLI at it, using the application password that printed. +export PATTERN_LIBRARY_SITE="http://localhost:8888" +export PATTERN_LIBRARY_WP_USER="pattern-library-bot" +export PATTERN_LIBRARY_WP_APP_PASSWORD="" + +# Somewhere outside the repository, so you do not commit the output. +mkdir -p /tmp/pattern-library-scratch && cd $_ +cat > pattern-library.config.js <<'EOF' +export default { + title: 'Twenty Twenty-Five', + namespaces: [ 'twentytwentyfive/' ], + outputDir: 'out', +}; +EOF + +node /path/to/wp-pattern-library/bin/pattern-library.mjs build hero +``` + +`--dry-run` first is a good habit; it authenticates and fetches the manifest +without starting a browser. + +## Running the tests + +```bash +npm test # Both suites. +npm run test:js # node:test — config, manifest, Markdown. +npm run test:php # PHPUnit, inside wp-env. Needs `npm run env:start` first. +``` + +### Why the PHP tests need Docker + +The plugin is thin glue over the block pattern registry, the block renderer, the +style engine and the roles API. Mocking that surface would test the mocks, so +the suite runs against a real WordPress. `wp-env` provides it, and +`npm run test:php` executes PHPUnit inside the `tests-cli` container. + +Two things routinely trip people up when writing PHP tests here: + +- **`$_GET` has to be slashed.** WordPress runs `wp_magic_quotes()` over the + superglobals before any plugin code sees them, and the route calls + `wp_unslash()` to undo it. A test that assigns `$_GET` directly has to + `wp_slash()` the value, or a JSON payload containing a quote arrives + malformed in the test and correctly in production. See + `Render_Test::request_wrapper()`. +- **Custom capabilities are not implied by any role.** `view_pattern_library` is + a primitive capability; administrators do not hold it. Tests grant it + explicitly. + +### Why the JS tests write to disk + +`generate()` is tested by writing into a temporary directory and reading the +result back, because the files are the product. A unit test of the string +builders would not catch a page written to the wrong path or a relative link +that does not resolve. + +## Code style + +All three linters run in CI, and all three are clean on `main`. + +```bash +npm run lint # Everything. +npm run lint:js # ESLint. +npm run lint:js:fix # ...and fix what it can. +npm run lint:php # PHPCS and PHPStan. +composer lint:fix # PHPCBF. +``` + +- **PHP** follows [Human Made's standards](https://github.com/humanmade/coding-standards) + (`HM-Minimum`), plus PHPStan at level 5 with the WordPress stubs. Namespaced + procedural code, not classes, unless there is an object to model. +- **JavaScript** follows `@wordpress/eslint-plugin`'s + `recommended-with-formatting` — WordPress conventions, tabs, spaces inside + parentheses. Note that Prettier is deliberately *not* used: WordPress' paren + spacing needs the `wp-prettier` fork, and that is a large dependency for a + package that ships no build. + +`composer.json` pins `platform.php` to `8.1`, the minimum this package supports, +so dev dependencies resolve to versions that actually run on it regardless of +what PHP you have locally. + +### Comments + +Comments here explain *why*, not *what*. There are a number of places in this +codebase where the obvious implementation is wrong for a non-obvious reason — +the `WWW-Authenticate` challenge, the group-block wrapper, the `?? ''` on the +style engine's output — and each carries a comment saying so. Please keep that +up; those comments are load-bearing. + +## The manifest contract + +`inc/manifest.php` produces the manifest and `src/manifest.mjs` consumes it. +This is the seam between the two halves, and the one place where a change can +break a site and a CLI that are on different versions. + +- **A change to the manifest's shape is a change to both sides, in one commit, + released under one tag.** +- Adding a field is safe. Removing or retyping one is not: bump + `MANIFEST_VERSION`, and the CLI will refuse a site it does not understand + rather than misread it. +- A new *optional* capability of the route goes in `MANIFEST_FEATURES` instead. + That is additive, so it does not move `MANIFEST_VERSION`: a CLI too old to + know a feature never asks for it, and a CLI configured to use one can say + plainly that the site is too old. `variants` works this way. + +## Making a change + +1. Branch from `main`. +2. Make the change, with tests. New behaviour in `src/` or `inc/` should come + with coverage; a bug fix should come with a test that failed before it. +3. Run `npm run lint && npm test`. +4. Update the documentation in `docs/` if you changed anything a user sees. +5. Open a pull request describing what changed and why. + +For anything architectural — a change to the manifest, to how authentication +works, to what the route accepts — write an ADR in `docs/architecture/` as part +of the pull request. Follow the format of the existing ones: context, decision, +consequences, in prose. They are the reason this codebase is legible a year +later. + +### Adding an animation library handler + +`src/animations.mjs` holds the built-in handlers that force scroll-triggered +animation libraries into their finished state before a capture. If you write a +handler for a library other projects use, it belongs there as a new built-in +rather than in your project's config — so somebody else can list it by name. + +A handler is `{ css, settle }`. Both are optional. `settle` is serialized into +the browser, so it must not close over anything from the config file. + +### Adding a wrapper attribute + +`WRAPPER_ATTRIBUTES` in `inc/render.php` is deliberately narrow — a wrapper +exists to put a pattern on a different ground, so the vocabulary stops at what a +section group needs. Anything outside the list is dropped, which is what stops a +config typo becoming a block attribute nobody meant to set. + +Widening it is possible but wants justification: what section treatment cannot +be expressed with the current list, and can it be done through +`pattern_library_wrapper_open` instead? + +## Documentation + +The site in `docs/` is [Just the HM Docs](https://github.com/humanmade/just-the-hm-docs), +a Jekyll theme. It deploys to GitHub Pages on every push to `main` that touches +`docs/`. + +To work on it locally: + +```bash +cd docs +bundle install +bundle exec jekyll serve +``` + +Then open . Note the base path — the +site is configured for a project Pages URL, so the root will 404. + +Pages are numbered (`01-index.md`, `02-getting-started.md`) so the file order +matches the navigation order, which is set by `nav_order` in each file's front +matter. Keep the two in step. + +## Releasing + +Releases are cut from `main`. One tag drives all three artefacts, so the +versions have to agree before the tag exists. + +1. **Bump the version in two places, in one commit:** `version` in + `package.json`, and the `Version:` header in `plugin.php`. CI fails the pull + request if they disagree. +2. **Merge to `main`.** +3. **Run the [Tag and Release](../../actions/workflows/tag-and-release.yml) + workflow**, giving it the tag (`v0.4.0`). It re-checks that the tag, + `package.json` and `plugin.php` all agree, refuses to overwrite an existing + tag, creates the tag, and publishes a GitHub release with generated notes. +4. **Publishing happens automatically.** The `Publish to npm` workflow runs when + that release is published. Packagist picks the tag up through its GitHub + hook. + +Publishing to npm needs an `NPM_TOKEN` repository secret — an automation token +for an account that can publish to the `@humanmade` scope — exposed to the `npm` +environment. + +Consuming workflows pin the action to a released tag. There is deliberately no +moving `@v1` tag while the package is pre-1.0. + +## Good first issues + +Some things that would be genuinely useful and do not require deep knowledge of +the codebase: + +- **More built-in animation handlers.** GSAP ScrollTrigger, Framer Motion, + Lenis, `@wordpress/interactivity`-driven reveals. One handler, one test. +- **More `imageFormat` coverage.** `avif` and `jpeg` are supported but only + `webp` is exercised in the tests. +- **Better empty-pattern diagnosis.** The CLI reports which patterns rendered + empty; it could say more about *why* by inspecting what blocks they contain. + +[`docs/roadmap.md`](docs/roadmap.md) has a longer list of ideas, including +larger ones. If you want to take something on, open an issue first so we can +agree on the shape before you build it. + +## Reporting a bug + +Include the command you ran, the full error, and the plugin and CLI versions. +These two are almost always the first thing anyone will ask for: + +```bash +pattern-library manifest +pattern-library build --dry-run +``` + +## License + +By contributing, you agree that your contributions will be licensed under the +GPL-2.0-or-later license that covers this project. diff --git a/README.md b/README.md index 914320a..e286f27 100644 --- a/README.md +++ b/README.md @@ -1,385 +1,116 @@ # WP Pattern Library -Generate a browsable Markdown pattern library — with screenshots — from a -WordPress site's registered block patterns. +Generate a browsable Markdown pattern library — with screenshots — from a WordPress site's registered block patterns. -The site serves a manifest of its registered patterns and renders each one in -isolation; a Node CLI captures them with Playwright and writes an index plus one -page per pattern category. A GitHub Action runs the whole thing and opens a pull -request with the refreshed docs. +**📖 [Documentation](https://humanmade.github.io/wp-pattern-library/)** +- [Getting started](https://humanmade.github.io/wp-pattern-library/getting-started) +- [WordPress plugin](https://humanmade.github.io/wp-pattern-library/plugin) +- [NPM package](https://humanmade.github.io/wp-pattern-library/npm-package) +- [GitHub Action](https://humanmade.github.io/wp-pattern-library/github-action) -Two packages ship from this repository: +--- -| Package | Install | -|---------------------------------|--------------------------------------------------| -| `humanmade/wp-pattern-library` | `composer require humanmade/wp-pattern-library` | -| `@humanmade/wp-pattern-library` | `npm install -D @humanmade/wp-pattern-library` | +A block theme of any size is going to end up with dozens or hundreds of patterns. That is a design system, and it has the design system problem: the names live in `patterns/*.php`, the appearance lives in the block inserter behind a login, and neither is somewhere you can point at. -## Install +This generates the missing artefact. The site serves a manifest of its registered patterns and renders each one in isolation; a Node CLI captures them with Playwright and writes an index plus one page per category. The result is Markdown and images you commit — so it renders on GitHub, it is searchable, and when a pattern's appearance changes, the changed screenshot shows up in review. -### 1. The plugin +It works against your local environment or a live site. A GitHub Action can run the whole thing and open a pull request with the refreshed docs. -```bash -composer require humanmade/wp-pattern-library -``` +## Install -The Composer package declares `"type": "wordpress-plugin"`, so `composer/installers` -routes it to the project's plugin directory — `content/plugins/` on Altis, -`plugins/` on WordPress VIP — without any `installer-paths` change. +Two packages ship from this repository, from the same tag: -Activate it as you would any other plugin: through wp-admin, `wp plugin activate -wp-pattern-library`, or your platform's code-activation helper. +| Package | Install | +|---|---| +| `humanmade/wp-pattern-library` | `composer require humanmade/wp-pattern-library` | +| `@humanmade/wp-pattern-library` | `npm install -D @humanmade/wp-pattern-library` | -```php -// VIP: in client-mu-plugins/plugin-loader.php -wpcom_vip_load_plugin( 'wp-pattern-library' ); -``` +The Composer package is the WordPress plugin, and belongs on the site you capture from. The npm package is the CLI, and runs wherever you generate the library — your machine, or CI. The site does not need Node. -It belongs in the deployed environment, not in `require-dev`: the library is -captured from the running production site, so the route has to be live there. -What it adds to that site is one front-end route behind a dedicated capability, -plus a WP-CLI command — no admin UI, no front-end assets, nothing on the -request path for ordinary visitors. +## Quick start -Limit it to your own patterns, so core and plugin patterns stay out of the -library: +```bash +# 1. On the site you want to capture from. +composer require humanmade/wp-pattern-library +wp plugin activate wp-pattern-library +``` ```php +// 2. Limit it to your own patterns, so core's stay out of the library. add_filter( 'pattern_library_namespaces', fn () => [ 'my-theme/' ] ); ``` -### 2. A service account - -The routes require a dedicated capability, `view_pattern_library`. The bundled -WP-CLI command creates a role holding that capability and `read` — and nothing -else, so the account cannot create or edit content: - ```bash +# 3. Create an account for the generator. Prints an application password once. wp pattern-library setup --login=pattern-library-bot ``` -It prints an application password. Store it, along with the login, as CI secrets; -it is not recoverable. - -> On multisite, roles are stored per site. Run the command with `--url=` for each -> site whose patterns you want to capture. - -To use an existing user instead, run `wp pattern-library setup` and then -`wp pattern-library grant `. - -### 3. Configuration - -Create `pattern-library.config.js` in your project root: - ```js +// 4. pattern-library.config.js, in your project root. export default { - title: 'My Pattern Library', + title: 'My Theme Pattern Library', namespaces: [ 'my-theme/' ], outputDir: 'docs/pattern-library', }; ``` -Credentials come from the environment, never the config file: - ```bash -export PATTERN_LIBRARY_SITE="https://example.com" +# 5. Credentials come from the environment, never the config file. +export PATTERN_LIBRARY_SITE="http://localhost:8888" export PATTERN_LIBRARY_WP_USER="pattern-library-bot" export PATTERN_LIBRARY_WP_APP_PASSWORD="xxxx xxxx xxxx xxxx" -``` - -Sites behind an access proxy also need its headers — see -[Sites behind an access proxy](#sites-behind-an-access-proxy). - -## Usage - -```bash -npx pattern-library build # capture screenshots, then write Markdown -npx pattern-library build --dry-run # report what would be included, write nothing -npx pattern-library capture hero # screenshots only, for patterns matching "hero" -npx pattern-library generate # Markdown only, from existing screenshots -npx pattern-library manifest # print the filtered manifest as JSON -``` - -Screenshots are written only when their bytes change, so re-running against a -live site does not churn images whose content merely shifted underneath them. - -The run summary flags patterns that rendered empty, failed outright, or -referenced resources — images, fonts — that no longer exist, so broken previews -are caught at generation time rather than in review. - -## Configuration reference - -| Key | Default | Notes | -|-------------------|-------------------------------|----------------------------------------------------------| -| `title` | `Pattern Library` | Index heading. | -| `namespaces` | `[]` (all) | Pattern-name prefixes to include. | -| `outputDir` | `docs/pattern-library` | Where pages and screenshots are written. | -| `indexFile` | `/README.md` | Index path. | -| `screenshotsDir` | `/screenshots` | Screenshot path. | -| `imageFormat` | `webp` | `webp`, `avif`, `jpeg` or `png`. | -| `imageQuality` | `80` | Ignored for `png`. | -| `defaultViewport` | `1440` | Used when a pattern declares no `Viewport Width`. | -| `exclude` | see below | What to leave out of the library. | -| `postTypeContext` | `{}` | Basename to post type, for `core/post-template` patterns. | -| `classify` | flat | Category placement. See below. | -| `animations` | `[ 'aos' ]` | Animation libraries to settle before capture. See below. | -| `extraFields` | `[]` | Extra metadata lines per pattern. See below. | -| `variants` | `[]` | Extra captures inside a wrapper. See below. | -| `baseLabel` | `Default rendering` | Caption on the plain capture of a pattern that has variants. | -| `includeSkipped` | `true` | List excluded patterns, with reasons, on the index page. | -| `placeholderImages` | `true` | Placeholder featured image for posts that have none. | -| `extraHeaders` | `{}` | Headers sent with every request to the site. See below. | - -`exclude` defaults to skipping patterns hidden from the inserter and those scoped -to `wp_template` / `wp_template_part`, since template parts render meaninglessly -in isolation: - -```js -exclude: { - inserterHidden: true, - postTypes: [ 'wp_template', 'wp_template_part' ], - patterns: [], // Exact pattern names. -} -``` - -### Patterns that render empty - -A pattern built as a query-loop *item template* has nothing to bind to when -rendered alone. Give it a post type, keyed by basename: - -```js -postTypeContext: { 'person-card': 'person' } -``` -The CLI reports any pattern that rendered empty, so these are easy to find. - -### Animation libraries - -Scroll-triggered animation libraries hide content until it scrolls into view, so -a capture must force everything to its finished state first. `animations` lists -what to settle: built-in library names (currently `aos`), or custom -`{ css, settle }` objects for project-specific conventions: - -```js -animations: [ - 'aos', - { - // Optional: CSS injected before capture, overriding the hidden state. - css: '.js-reveal { opacity: 1 !important; transform: none !important; }', - // Optional: runs in the browser to flip elements to "done". Serialized - // into the page, so it must not close over config-file variables. - settle: () => { - document - .querySelectorAll( '.js-reveal' ) - .forEach( ( el ) => el.classList.add( 'is-revealed' ) ); - }, - }, -] +npx @humanmade/wp-pattern-library build --dry-run # Look first. +npx @humanmade/wp-pattern-library build # Then capture. ``` -A handler that proves generally useful belongs in `src/animations.mjs` as a new -built-in, so other projects can list it by name. - -### Extra metadata fields +Full walkthrough, including the things that catch people out: **[Getting started](https://humanmade.github.io/wp-pattern-library/getting-started)**. -Each pattern's section shows its description, categories, keywords, block types -and post types by default. `extraFields` appends further lines: `value` is a -manifest property name, or a function receiving the pattern: +## Commands -```js -extraFields: [ - { label: 'Source', value: 'source' }, - { label: 'Namespace', value: ( pattern ) => pattern.name.split( '/' )[ 0 ] }, -] +```bash +pattern-library build # Capture screenshots, then write Markdown. +pattern-library build --dry-run # Report what would be included; write nothing. +pattern-library capture hero # Screenshots only, for patterns matching "hero". +pattern-library generate # Markdown only, from existing screenshots. +pattern-library manifest # Print the filtered manifest as JSON. ``` -### Variants +Screenshots are written only when their bytes change, so re-running does not churn images whose content merely shifted underneath them. The run summary flags patterns that rendered empty, failed outright, or referenced resources that no longer load. -A theme whose patterns are built to work on more than one ground — the same -section used plain, and again inside a dark wrapper — can document both without -duplicating the patterns. Each entry in `variants` captures every pattern it -applies to a second time, rendered inside a `core/group` block carrying the -attributes in `wrapper`: +## What you get -```js -variants: [ - { - slug: 'dark', - label: 'Dark section', - wrapper: { className: 'is-style-dark', backgroundColor: 'shark' }, - appliesTo: ( pattern ) => ! pattern.categories.includes( 'my-theme/pages' ), - }, -] ``` - -| Key | Required | Purpose | -|-------------|----------|---------------------------------------------------------------------| -| `slug` | yes | Kebab-case. Becomes the `--slug` filename suffix. | -| `wrapper` | yes | Group block attributes. See the accepted attributes below. | -| `label` | no | Caption above the image. Defaults to a title-cased `slug`. | -| `appliesTo` | no | Predicate receiving the manifest pattern. Defaults to every pattern. | - -`wrapper` accepts `className`, `align`, `backgroundColor`, `gradient`, -`textColor`, `style` and `layout` — the attributes of a section group. Anything -else is dropped, so a typo cannot quietly become an attribute nobody meant to -set. The site builds the block from them, so what travels in the URL is data, -never markup. A theme whose section treatment needs more can replace the markup -through `pattern_library_wrapper_open` and `pattern_library_wrapper_close`. - -The wrapper is a real group block rather than a class added in the browser, -because block stylesheets registered with `wp_enqueue_block_style()` load only -when their block actually renders — a pattern containing no group of its own -would otherwise be captured without the stylesheet the wrapper's style lives in. -Its colour classes are written out in full by the site, because core applies the -colour supports server-side only to dynamic blocks; `layout` needs no such help, -being resolved by a `render_block` filter that runs for static blocks too. - -Use `appliesTo` deliberately. A variant doubles the captures, the capture time -and the committed images for every pattern it covers, and some patterns have no -second treatment worth showing — a whole-page reference already contains its own -sections. - -When a pattern has at least one variant image, every image in its section gets a -caption — the variant's `label`, and `baseLabel` for the plain capture. A pattern -with no variants keeps its single uncaptioned image. - -Variants need a site running a plugin version that advertises the feature; an -older one is reported as an error rather than silently capturing duplicates. - -### Grouping categories - -By default every registered category becomes one page in the output root. A -project with a richer taxonomy can supply a `classify()` function, called once per -category, returning where it belongs — or nothing, to drop it from the library: - -```js -classify: ( { slug, label } ) => { - // A cross-cutting category of whole-page references, which should also lead - // each section page rather than sitting in the list. - if ( slug === 'full-page' ) { - return { kind: 'reference', dir: 'references', label: 'Full page', leadsIn: 'section' }; - } - if ( label.startsWith( 'Component - ' ) ) { - return { kind: 'component', dir: 'components', label: label.slice( 12 ) }; - } - return { kind: 'section', dir: 'sections', label }; -} +docs/pattern-library/ +├── README.md Index: every category, with counts +├── banner.md One page per pattern category +├── testimonials.md +└── screenshots/ ``` -`kind` groups pages under headings on the index, `dir` places the page, `label` -sets its title, and `leadsIn` promotes its patterns to the top of every page of -the named kind. - -## GitHub Action - -Copy [`examples/refresh-pattern-library.yml`](examples/refresh-pattern-library.yml) -into `.github/workflows/`. It is `workflow_dispatch`-triggered, takes a base -branch and output path, and opens a pull request with the refreshed docs. - -Capture from **production**. Screenshots reflect deployed code, so a pattern that -exists only on the branch being documented renders as "preview pending" until it -ships. Staging environments sitting behind their own HTTP Basic gate cannot be -used: two `Authorization: Basic` headers cannot coexist on one request. Gates -that use headers rather than Basic — Cloudflare Access, say — are supported -through `extra-headers`; see -[Sites behind an access proxy](#sites-behind-an-access-proxy). - -## How authentication works - -Requests authenticate with a standard WordPress application password over HTTP -Basic. Two details are worth knowing, because both fail *silently* otherwise — -WordPress serves the logged-out page with a `200`, which would yield a run's worth -of plausible but wrong screenshots: - -- `wp_authenticate_application_password()` ignores any request that is not REST or - XML-RPC. The preview route opts itself in through the - `application_password_is_api_request` filter, scoped to its own query var. -- Browsers only attach Basic credentials after a `401` carrying - `WWW-Authenticate`, and never send them preemptively. Playwright's - `httpCredentials.send: 'always'` does not change this — it applies only to its - API request context, not to page navigation. The route therefore sends a proper - challenge with its `401`. +Each pattern gets its screenshot, description, categories, keywords, block and post types, and the viewport it was captured at. -As a backstop, before capturing anything the CLI navigates the browser to the -manifest URL and requires a `200` — a probe that authenticates through the same -browser path the captures use, yet cannot be brought down by a single pattern -that fails to render. - -## Sites behind an access proxy - -An origin fronted by Cloudflare Access, or anything like it, answers before -WordPress does: the manifest request comes back as an HTML login page rather than -JSON, and no application password will help, because the request never reached -WordPress. - -`extraHeaders` sends the proxy's credentials alongside the application password. -Values are secrets, so they belong in the environment, as one `Name: value` per -line: - -```bash -export PATTERN_LIBRARY_EXTRA_HEADERS="CF-Access-Client-Id: .access -CF-Access-Client-Secret: " -``` - -Config-file headers, if a project has non-secret ones, merge underneath: - -```js -extraHeaders: { 'X-Environment': 'production' }, -``` - -The headers are attached to Node's manifest request and to every browser request -made **to the site's own origin**. They are deliberately withheld from -third-party requests a theme makes — fonts, analytics, CDNs — so a service token -is never handed to a host that merely happens to be referenced by a pattern. - -This is the supported way to capture from a gated environment. An origin behind -HTTP Basic still is not: two `Authorization: Basic` headers cannot coexist on one -request, and the application password needs that header. - -## Filters - -| Filter | Purpose | -|---------------------------------------|------------------------------------------------------| -| `pattern_library_enabled` | Disable the routes entirely. | -| `pattern_library_namespaces` | Pattern-name prefixes to expose. | -| `pattern_library_user_can` | Override the capability check. | -| `pattern_library_placeholder_image` | Markup of the placeholder featured image. | -| `pattern_library_wrapper_open` | Opening markup of a variant wrapper. | -| `pattern_library_wrapper_close` | Closing markup of a variant wrapper. | +Beyond the basics, the generator can capture [section variants](https://humanmade.github.io/wp-pattern-library/npm-package#section-variants) (the same pattern on a second ground), give [query-loop item templates a post to bind to](https://humanmade.github.io/wp-pattern-library/npm-package#patterns-that-render-empty), settle [scroll-triggered animations](https://humanmade.github.io/wp-pattern-library/npm-package#animation-libraries) before capturing, and [group categories](https://humanmade.github.io/wp-pattern-library/npm-package#grouping-categories) into a multi-level taxonomy. ## Requirements -PHP 8.1+, WordPress 6.0+, Node 24+. - -The PHP side runs on the WordPress site; the Node side runs wherever the library -is generated, which in practice is CI or a developer machine. They do not need to -be the same host, and the site does not need Node. - -## Contributing and releases +WordPress 6.0+ · PHP 8.1+ · Node 24+ -Both published packages — the Composer package and the npm package — are built -from this one repository, from the same tree. There is no separate source for the -Node CLI: `bin/` and `src/` are what npm publishes, `inc/` and `plugin.php` are -what Packagist serves, and `action.yml` wraps the npm package for GitHub Actions. +## Documentation -One tag drives all three, so a given version means the same code everywhere: +| | | +|---|---| +| [About](https://humanmade.github.io/wp-pattern-library/) | What it does, and what it deliberately does not. | +| [Getting started](https://humanmade.github.io/wp-pattern-library/getting-started) | Install and first capture, against a local site. | +| [WordPress plugin](https://humanmade.github.io/wp-pattern-library/plugin) | What it adds to a site, access control, endpoints, filters. | +| [NPM package](https://humanmade.github.io/wp-pattern-library/npm-package) | Every config option, CLI commands, output. | +| [GitHub Action](https://humanmade.github.io/wp-pattern-library/github-action) | Running it in CI against a live site. | -1. Bump `version` in `package.json`, and the `Version:` header in `plugin.php`. - Keep them equal — the plugin header is what shows in wp-admin, and a manifest - served by one version being read by another is the failure mode this - convention exists to prevent. -2. Tag the release `vX.Y.Z` and push the tag. -3. `npm publish --access public` publishes `@humanmade/wp-pattern-library`. - Packagist picks up `humanmade/wp-pattern-library` from the same tag via its - GitHub hook. +Design decisions are recorded as ADRs in [`docs/architecture/`](docs/architecture). -Consuming workflows pin the action to a released tag -(`humanmade/wp-pattern-library@vX.Y.Z`). There is deliberately no moving `@v1` -tag while the package is pre-1.0. +## Contributing -The two halves are coupled by the manifest: `inc/manifest.php` produces it and -`src/manifest.mjs` consumes it. A change to either shape is a change to both, in -one commit, released under one tag. +Bug reports, ideas and pull requests are all welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for the development setup — `npm run env:start` gives you a WordPress with sixty patterns to capture against — and [`docs/roadmap.md`](docs/roadmap.md) for things that have been thought about but not built. ## License From f5ba8957600d5c15eb5d4a16dd84779a7c39c40d Mon Sep 17 00:00:00 2001 From: goldenapples Date: Sun, 6 Sep 2026 10:31:16 -0400 Subject: [PATCH 05/15] Fix claude's weird spelling of "artifact" --- CONTRIBUTING.md | 8 ++++---- README.md | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7f56161..18f5b1e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,7 +1,7 @@ # Contributing Thanks for looking. This is a small package with a fairly unusual shape — two -languages, three published artefacts, one repository — so this document is +languages, three published artifacts, one repository — so this document is mostly about the things that are not obvious from reading the code. - [What lives where](#what-lives-where) @@ -29,9 +29,9 @@ docs/architecture/ ADRs — why things are the way they are examples/ A workflow consuming projects can copy ``` -Three artefacts ship from this one tree, from the same tag: +Three artifacts ship from this one tree, from the same tag: -| Artefact | Built from | Published to | +| Artifact | Built from | Published to | |---|---|---| | `humanmade/wp-pattern-library` | `plugin.php`, `inc/` | Packagist | | `@humanmade/wp-pattern-library` | `bin/`, `src/` | npm | @@ -241,7 +241,7 @@ matter. Keep the two in step. ## Releasing -Releases are cut from `main`. One tag drives all three artefacts, so the +Releases are cut from `main`. One tag drives all three artifacts, so the versions have to agree before the tag exists. 1. **Bump the version in two places, in one commit:** `version` in diff --git a/README.md b/README.md index e286f27..f1b2602 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Generate a browsable Markdown pattern library — with screenshots — from a Wo A block theme of any size is going to end up with dozens or hundreds of patterns. That is a design system, and it has the design system problem: the names live in `patterns/*.php`, the appearance lives in the block inserter behind a login, and neither is somewhere you can point at. -This generates the missing artefact. The site serves a manifest of its registered patterns and renders each one in isolation; a Node CLI captures them with Playwright and writes an index plus one page per category. The result is Markdown and images you commit — so it renders on GitHub, it is searchable, and when a pattern's appearance changes, the changed screenshot shows up in review. +This generates the missing artifact. The site serves a manifest of its registered patterns and renders each one in isolation; a Node CLI captures them with Playwright and writes an index plus one page per category. The result is Markdown and images you commit — so it renders on GitHub, it is searchable, and when a pattern's appearance changes, the changed screenshot shows up in review. It works against your local environment or a live site. A GitHub Action can run the whole thing and open a pull request with the refreshed docs. From 1d83469faaeae8584925ecc839d34cbe4e483cd9 Mon Sep 17 00:00:00 2001 From: goldenapples Date: Sun, 6 Sep 2026 10:33:52 -0400 Subject: [PATCH 06/15] Run deploy-docs workflow for review --- .github/workflows/deploy-docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index 8e23f9e..0494d0e 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -2,7 +2,7 @@ name: Deploy documentation to GitHub Pages on: push: - branches: [ main ] + branches: [ main, release-prep-and-docs ] paths: - 'docs/**' - '.github/workflows/deploy-docs.yml' From e7e7c34296db3d9c87f074be4907a50ed3d27213 Mon Sep 17 00:00:00 2001 From: goldenapples Date: Mon, 7 Sep 2026 13:33:36 -0400 Subject: [PATCH 07/15] Use tag-and-release action from hm-github-actions --- .github/workflows/tag-and-release.yml | 90 +++++++++++---------------- 1 file changed, 35 insertions(+), 55 deletions(-) diff --git a/.github/workflows/tag-and-release.yml b/.github/workflows/tag-and-release.yml index fd9bab6..7dfe9ba 100644 --- a/.github/workflows/tag-and-release.yml +++ b/.github/workflows/tag-and-release.yml @@ -1,23 +1,17 @@ # Cut a release: tag the target branch, then publish a GitHub release from it. # -# Publishing to npm and Packagist is handled by publish.yml, which runs when the -# release this workflow creates is published. +# The tagging and release mechanics live in humanmade/hm-github-actions, shared +# with ~23 other Human Made plugin repositories. Only the version check below is +# specific to this repository: one tag drives the Composer package, the npm +# package and the action, so those have to agree before the tag exists — +# afterwards it is too late. # -# NOTE: this duplicates the "Tag and Release" workflow copied into ~23 Human Made -# plugin repositories. It is being centralized as a reusable workflow in -# humanmade/hm-github-actions (PR #21). Once that has merged and been tagged, the -# body of this file should collapse to a call: -# -# jobs: -# tag_and_release: -# permissions: -# contents: write -# uses: humanmade/hm-github-actions/.github/workflows/tag-and-release.yml@ # vX.Y.Z -# with: -# version: ${{ inputs.version }} -# target_branch: ${{ inputs.target_branch }} -# -# It is kept self-contained until then so the release path works today. +# Publishing to npm is handled by publish.yml, which runs when the release this +# workflow creates is published. That only fires if the release is created by a +# personal access token: GitHub deliberately does not let the automatic +# GITHUB_TOKEN trigger further workflow runs. Set a RELEASE_TOKEN secret holding +# a PAT with `contents: write` on this repository, or dispatch "Publish to npm" +# by hand after cutting the release. name: Tag and Release @@ -32,62 +26,48 @@ on: default: main required: true -permissions: - contents: write - jobs: - tag_and_release: - name: Tag and Release + check_versions: + name: Check the versions agree runs-on: ubuntu-latest + permissions: + contents: read steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: ref: ${{ inputs.target_branch }} - fetch-depth: 0 - # One tag drives the Composer package, the npm package and the action, so - # they have to agree before the tag exists — afterwards it is too late. - - name: Check the tag is new and the versions agree + - name: The tag, package.json and plugin.php agree + env: + VERSION: ${{ inputs.version }} run: | set -euo pipefail - version="${{ inputs.version }}" - - if [ -z "${version##v*}" ]; then - bare="${version#v}" - else - echo "::error::Version must be tag-shaped, e.g. v0.4.0; got ${version}." - exit 1 - fi - - if git ls-remote --tags --exit-code origin "refs/tags/${version}" >/dev/null 2>&1; then - echo "::error::Tag ${version} already exists." + if [ -n "${VERSION##v*}" ]; then + echo "::error::Version must be tag-shaped, e.g. v0.4.0; got ${VERSION}." exit 1 fi + bare="${VERSION#v}" npm_version="$(node -p "require('./package.json').version")" plugin_version="$(sed -n 's/^ \* Version: *//p' plugin.php | head -1 | tr -d '[:space:]')" if [ "${npm_version}" != "${bare}" ] || [ "${plugin_version}" != "${bare}" ]; then - echo "::error::Version mismatch. Tag ${version}, package.json ${npm_version}, plugin.php ${plugin_version}." + echo "::error::Version mismatch. Tag ${VERSION}, package.json ${npm_version}, plugin.php ${plugin_version}." exit 1 fi - - name: Create and push the tag - run: | - set -euo pipefail - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - git tag "${{ inputs.version }}" - git push origin "${{ inputs.version }}" - - - name: Create the GitHub release - uses: ncipollo/release-action@339a81892b84b4eeb0f6e744e4574d79d0d9b8dd # v1.21.0 - with: - tag: ${{ inputs.version }} - name: ${{ inputs.version }} - generateReleaseNotes: true - draft: false - prerelease: false - token: ${{ secrets.GITHUB_TOKEN }} + tag_and_release: + name: Tag and Release + needs: check_versions + permissions: + contents: write + uses: humanmade/hm-github-actions/.github/workflows/tag-and-release.yml@70b862a2bc0669a2123d5bf3d909642c8dc07483 # v0.5.0 + with: + version: ${{ inputs.version }} + target_branch: ${{ inputs.target_branch }} + secrets: + # Falls back to GITHUB_TOKEN when unset — at the cost of publish.yml not + # being triggered by the release this creates. + token: ${{ secrets.RELEASE_TOKEN }} From 33cad14a83967acd5cd6455801aab5eb823b15de Mon Sep 17 00:00:00 2001 From: goldenapples Date: Mon, 7 Sep 2026 13:43:02 -0400 Subject: [PATCH 08/15] Configure npm publish workflow using trusted-publisher OIDC connection --- .github/workflows/publish.yml | 33 ++++++++++++++++++++++++++------- CONTRIBUTING.md | 19 +++++++++++++------ package.json | 6 ++++++ 3 files changed, 45 insertions(+), 13 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 1f4b42c..cd3e08b 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -4,8 +4,19 @@ # the same tag through its GitHub hook. This workflow covers the other half of # the pair, so one tag really does mean the same code in both registries. # -# Requires an NPM_TOKEN repository secret — an automation token for an account -# that can publish to the @humanmade scope. +# Authentication is npm trusted publishing: npmjs.com holds a trusted publisher +# for this package naming this repository, this workflow file and the `npm` +# environment, and npm exchanges the OIDC token minted below for a short-lived +# publish credential. There is no NPM_TOKEN to store or rotate, and the four +# facts npm matches on are all visible here — moving or renaming this file, or +# dropping the environment, breaks publishing until the trusted publisher is +# updated to match. +# +# The `release: published` trigger only fires for a release created by a personal +# access token. GitHub deliberately does not let the automatic GITHUB_TOKEN +# trigger further workflow runs, so tag-and-release.yml has to cut the release +# with its RELEASE_TOKEN secret for this to run on its own. Without that secret, +# dispatch this workflow by hand after the release exists. name: Publish to npm @@ -16,8 +27,9 @@ on: permissions: contents: read - # Required by `npm publish --provenance`, which signs the published tarball - # with an attestation tying it back to this workflow run and commit. + # Required to mint the OIDC token npm exchanges for publish rights. It is also + # what ties the published tarball to this workflow run and commit, which npm + # records as provenance. id-token: write jobs: @@ -37,6 +49,12 @@ jobs: registry-url: https://registry.npmjs.org cache: npm + # Trusted publishing needs npm 11.5.1 or newer. Node 24 ships something + # recent enough today, but the bundled version moves with the runner + # image, so it is pinned forward here rather than left to chance. + - name: Use an npm that can publish over OIDC + run: npm install --global npm@^11.5.1 + - run: npm ci # Publishing is irreversible, so the gate that CI applies to every pull @@ -59,7 +77,8 @@ jobs: exit 1 fi + # No NODE_AUTH_TOKEN: the credential comes from the OIDC exchange above. + # Provenance is generated automatically for a trusted-publisher release, + # so `--provenance` is not passed either. - name: Publish - run: npm publish --access public --provenance - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + run: npm publish --access public diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 18f5b1e..e53a484 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -256,9 +256,17 @@ versions have to agree before the tag exists. that release is published. Packagist picks the tag up through its GitHub hook. -Publishing to npm needs an `NPM_TOKEN` repository secret — an automation token -for an account that can publish to the `@humanmade` scope — exposed to the `npm` -environment. +Publishing to npm needs no secret. npmjs.com holds a trusted publisher for +`@humanmade/wp-pattern-library` naming this repository, `publish.yml` and the +`npm` environment, and the workflow trades a GitHub OIDC token for short-lived +publish rights. Renaming or moving `publish.yml`, or dropping its `environment: +npm`, breaks publishing until the trusted publisher on npm is updated to match. + +Step 4 also needs a `RELEASE_TOKEN` secret: a personal access token with +`contents: write` on this repository, which `Tag and Release` uses to cut the +release. GitHub deliberately does not let the automatic `GITHUB_TOKEN` trigger +further workflow runs, so a release created without that token is a dead end — +`Publish to npm` never starts, and someone has to dispatch it by hand. Consuming workflows pin the action to a released tag. There is deliberately no moving `@v1` tag while the package is pre-1.0. @@ -275,9 +283,8 @@ the codebase: - **Better empty-pattern diagnosis.** The CLI reports which patterns rendered empty; it could say more about *why* by inspecting what blocks they contain. -[`docs/roadmap.md`](docs/roadmap.md) has a longer list of ideas, including -larger ones. If you want to take something on, open an issue first so we can -agree on the shape before you build it. +If you want to take something on, open an issue first so we can agree on the +shape before you build it. ## Reporting a bug diff --git a/package.json b/package.json index 1047773..2713f38 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,12 @@ "version": "0.3.0", "description": "Generate a Markdown pattern library, with screenshots, from a WordPress site's registered block patterns.", "license": "GPL-2.0-or-later", + "repository": { + "type": "git", + "url": "git+https://github.com/humanmade/wp-pattern-library.git" + }, + "bugs": "https://github.com/humanmade/wp-pattern-library/issues", + "homepage": "https://humanmade.github.io/wp-pattern-library/", "type": "module", "engines": { "node": ">=24" From ce7cd28db0701ee8f4c1cbd693dd7fb6ecce19ef Mon Sep 17 00:00:00 2001 From: goldenapples Date: Mon, 7 Sep 2026 13:44:03 -0400 Subject: [PATCH 09/15] Note that the test suite runs inside wp-env container --- tests/php/bootstrap.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/php/bootstrap.php b/tests/php/bootstrap.php index 2b4b3f8..85f7d50 100644 --- a/tests/php/bootstrap.php +++ b/tests/php/bootstrap.php @@ -4,8 +4,10 @@ * * The plugin is thin glue over WordPress' pattern registry, the block renderer * and the roles API, so these are integration tests against a real WordPress: - * mocking that surface would test the mocks. `composer test` runs them inside - * wp-env, where the test library lives at /wordpress-phpunit. + * mocking that surface would test the mocks. Run them with `npm run test:php`, + * which executes PHPUnit inside wp-env, where the test library lives at + * /wordpress-phpunit. `composer test` is the bare PHPUnit call that wrapper + * makes, and only works from inside the container or with WP_TESTS_DIR set. * * @package HM\Pattern_Library */ @@ -22,7 +24,7 @@ fwrite( STDERR, "Could not find the WordPress test library at {$_tests_dir}.\n" . - "Run the suite with `composer test`, which executes it inside wp-env, or set WP_TESTS_DIR.\n" + "Run the suite with `npm run test:php`, which executes it inside wp-env, or set WP_TESTS_DIR.\n" ); exit( 1 ); } From 6ae70fddf5733e5faa5dc2f1d8c7c11686fe1451 Mon Sep 17 00:00:00 2001 From: goldenapples Date: Mon, 7 Sep 2026 13:44:44 -0400 Subject: [PATCH 10/15] Bump required WordPress version --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f1b2602..54a0e9e 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,7 @@ Beyond the basics, the generator can capture [section variants](https://humanmad ## Requirements -WordPress 6.0+ · PHP 8.1+ · Node 24+ +WordPress 6.1+ · PHP 8.1+ · Node 24+ ## Documentation From 38fa213d93a59564a1bfdf7da893dbed6e3fdf71 Mon Sep 17 00:00:00 2001 From: goldenapples Date: Mon, 7 Sep 2026 14:03:10 -0400 Subject: [PATCH 11/15] Remove ADRs from docs site, remove broken links --- docs/01-index.md | 2 +- docs/05-github-action.md | 2 +- docs/_config.yml | 12 ++++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/01-index.md b/docs/01-index.md index 2cca734..3dbf4a4 100644 --- a/docs/01-index.md +++ b/docs/01-index.md @@ -39,7 +39,7 @@ I'm sure there are workflows that I haven't thought of yet. Feature requests or ## How it works -**WP Pattern Library** generator contains two separate packages, both of which are maintained and served from a single repo: +**WP Pattern Library** generator contains three separate packages, all of which are maintained and served from a single repo: * a **WordPress plugin**, installed or loaded the usual way. This provides a new front-end endpoint which will return a single rendered pattern, wrapped in the theme stylesheet and any block-specific enqueues. It also provides a manifest of patterns available on the site, configurable in a local config file. diff --git a/docs/05-github-action.md b/docs/05-github-action.md index 3e817b2..aea577a 100644 --- a/docs/05-github-action.md +++ b/docs/05-github-action.md @@ -18,7 +18,7 @@ Running from a workflow rather than a local environment gets you two things: - **Captures against a deployed site**, with real content, real images and real fonts, on code that's actually shipped. - **A reviewable diff.** Screenshots are only rewritten when their bytes change, so the pull request contains exactly the patterns whose appearance changed. That doubles as a rough visual regression check — a screenshot that changes in a release nobody expected to touch the front end is worth a look. -The trade-off is that it only sees what's deployed. A pattern that exists on your branch and not on the captured site renders as *"Preview pending"* until it ships. If you want previews of in-progress work, run the CLI locally alongside the PR instead. +The trade-off is that it only sees what's deployed. The manifest comes from the captured site, so a pattern that exists on your branch and not on that site is absent from the library entirely — it appears for the first time in the run that follows its deployment. If you want previews of in-progress work, run the CLI locally alongside the PR instead. ## Setup diff --git a/docs/_config.yml b/docs/_config.yml index 720c85f..2f8f831 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -7,6 +7,18 @@ url: 'https://humanmade.github.io' theme: just-the-hm-docs +# ADRs are engineering records read on GitHub, not site pages: they carry no +# front matter, so Jekyll would publish them unstyled and un-navigable. +# Listing `exclude` at all replaces Jekyll's defaults, so those are repeated here. +exclude: + - .jekyll-cache/ + - .sass-cache/ + - Gemfile + - Gemfile.lock + - vendor/ + - architecture/ + - roadmap.md + plugins: - jekyll-include-cache From a87a56d08db48ba2b0bdf6deebaed2e60cfa4507 Mon Sep 17 00:00:00 2001 From: goldenapples Date: Mon, 7 Sep 2026 14:18:13 -0400 Subject: [PATCH 12/15] Misc updates to the docs --- docs/02-getting-started.md | 4 ++-- docs/03-plugin.md | 6 ++---- docs/04-npm-package.md | 2 +- .../images/example-capture-variant.webp | Bin 59708 -> 78672 bytes 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/docs/02-getting-started.md b/docs/02-getting-started.md index 1da6f3c..1cd0d7c 100644 --- a/docs/02-getting-started.md +++ b/docs/02-getting-started.md @@ -24,11 +24,11 @@ wp plugin activate wp-pattern-library The package declares `"type": "wordpress-plugin"`, so `composer/installers` routes it to the project's plugin directory without any `installer-paths` change. -Not using Composer? Clone the repository into your plugins directory and activate it. There is no build step. +Not using Composer? Clone the repository into your plugins directory and activate it. There is no build step required for the server-side plugin. ## 2. Limit it to your own patterns -WordPress registers a lot of patterns you didn't write. Tell the plugin which namespace is yours: +Some WordPress themes or plugins register a lot of patterns you didn't write and might not want to maintain documentation for. Tell the plugin which namespace is yours: ```php add_filter( 'pattern_library_namespaces', fn () => [ 'my-theme/' ] ); diff --git a/docs/03-plugin.md b/docs/03-plugin.md index fa23cb6..5b4b3ad 100644 --- a/docs/03-plugin.md +++ b/docs/03-plugin.md @@ -7,7 +7,7 @@ permalink: /plugin # WordPress plugin -The plugin is the half that runs on WordPress. It adds one front-end endpoint that renders a single registered pattern in isolation, and a manifest listing every pattern available to capture. +The WP Pattern Library WordPress plugin adds a front-end endpoint which renders a single registered pattern in isolation, and a manifest that lists every pattern and variant available to capture. ## Installing @@ -66,7 +66,7 @@ add_filter( 'pattern_library_user_can', fn () => current_user_can( 'edit_theme_o ## The endpoints -Both are query vars on `index.php`, on the front end. +Both are query vars on `index.php`, on the front end. | URL | Returns | | ----------------------------------------------- | ----------------------------------------- | @@ -81,8 +81,6 @@ A pattern renders in a minimal HTML document with `wp_head()` and `wp_footer()` Every response carries `X-Robots-Tag: noindex, nofollow` and cache-busting headers. An unauthenticated request gets a `401` with a `WWW-Authenticate` challenge. -Three further query vars exist, all set by the CLI rather than by hand: - | Query var | Purpose | | ----------------------------- | -------------------------------------------------------------- | | `pattern-library-post-type` | Wrap the pattern in a one-item query loop over this post type. | diff --git a/docs/04-npm-package.md b/docs/04-npm-package.md index ea52e7f..a3082a4 100644 --- a/docs/04-npm-package.md +++ b/docs/04-npm-package.md @@ -224,7 +224,7 @@ variants: [ | `label` | no | Caption above the image. Defaults to a title-cased `slug`. | | `appliesTo` | no | Predicate receiving the pattern. Defaults to all patterns. | -![The same pattern captured a second time inside a dark section wrapper]({{ site.baseurl }}/assets/images/example-capture-variant.webp) +![A pattern section in the generated library, showing the plain capture and the same pattern captured again inside a dark section wrapper, each under its own caption]({{ site.baseurl }}/assets/images/example-capture-variant.webp) When a pattern has at least one variant image, every image in its section gets a caption — the variant's `label`, and `baseLabel` for the plain capture. A pattern with no variants keeps its single uncaptioned image. diff --git a/docs/assets/images/example-capture-variant.webp b/docs/assets/images/example-capture-variant.webp index c528b519c34d7a1a48f35051a78029c3bfbd5368..6dc5411c56708867037727fb183c5b76ba53edb3 100644 GIT binary patch literal 78672 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 gJ95@H8LpMk00000000000000000000000000F&7^D*ylh From b2f5b7d96121c73a2e31eb2fe375a17ec8e2eb40 Mon Sep 17 00:00:00 2001 From: goldenapples Date: Mon, 7 Sep 2026 15:12:13 -0400 Subject: [PATCH 13/15] Update docs manually, and remove testing branch rule --- .github/workflows/deploy-docs.yml | 2 +- docs/01-index.md | 2 +- docs/05-github-action.md | 95 ++++++++++++++++-- .../images/example-capture-variant.webp | Bin 78672 -> 77198 bytes docs/assets/images/example-capture.webp | Bin 59708 -> 97050 bytes 5 files changed, 88 insertions(+), 11 deletions(-) diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index 0494d0e..8e23f9e 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -2,7 +2,7 @@ name: Deploy documentation to GitHub Pages on: push: - branches: [ main, release-prep-and-docs ] + branches: [ main ] paths: - 'docs/**' - '.github/workflows/deploy-docs.yml' diff --git a/docs/01-index.md b/docs/01-index.md index 3dbf4a4..7b6ba40 100644 --- a/docs/01-index.md +++ b/docs/01-index.md @@ -10,7 +10,7 @@ permalink: / WP Pattern Library builds a browsable, screenshotted Markdown design reference from the registered patterns in a WordPress project. Documentation is generated from the patterns themselves, so it can reflect the actual theming. -![A pattern as the generator captured it — a full-width hero, rendered at 1440px with the theme's real styles and fonts]({{ site.baseurl }}/assets/images/example-capture.webp) +![One pattern's entry in a generated library: its title, its slug, the capture itself, the description from the pattern header, and the category, keyword, block type and viewport metadata beneath it]({{ site.baseurl }}/assets/images/example-capture.webp) The preview is similar to the pattern previews in the editor "Add Pattern" interface, but pregenerated so that its easier to browse. It also includes description and pattern metadata, for design reference. On a project with 50 or more patterns this can be useful as end user reference documentation as well as for developer review and regression testing. diff --git a/docs/05-github-action.md b/docs/05-github-action.md index aea577a..9004a1d 100644 --- a/docs/05-github-action.md +++ b/docs/05-github-action.md @@ -34,11 +34,11 @@ wp pattern-library setup --login=pattern-library-bot Under **Settings → Secrets and variables → Actions**: -| Name | Kind | Value | -| --------------------------------- | -------- | ------------------------- | -| `PATTERN_LIBRARY_WP_USER` | Secret | `pattern-library-bot` | -| `PATTERN_LIBRARY_WP_APP_PASSWORD` | Secret | The application password | -| `PATTERN_LIBRARY_SITE` | Variable | `https://www.example.com` | +| Name | Kind | Value | +| --------------------------------- | -------- | -------------------------- | +| `PATTERN_LIBRARY_WP_USER` | Secret | e.g. `pattern-library-bot` | +| `PATTERN_LIBRARY_WP_APP_PASSWORD` | Secret | The application password | +| `PATTERN_LIBRARY_SITE` | Variable | `https://www.example.com` | The site URL is a variable rather than a secret because it isn't one, and having it visible in the workflow log is useful when a run captures the wrong environment. @@ -130,9 +130,11 @@ Pin `version` to the same release as the action reference, so a run can't mix ve ## Triggers -The example is `workflow_dispatch` on purpose. A refresh opens a pull request containing images and captures whatever is deployed at that moment, so it's usually best run when you know what state the site is in. +The example above illustrates a manual `workflow_dispatch`. This opens a pull request containing images and captures whatever is deployed at that moment. -On a schedule instead: +For a hand-off approach, use any other triggers available in GitHub Actions: + +### On a schedule ```yaml on: @@ -141,7 +143,80 @@ on: - cron: '0 6 * * 1' # Mondays, 06:00 UTC ``` -Note that `schedule` triggers don't receive `inputs`, so give the workflow defaults that stand on their own. +### When patterns or styles change + +The obvious thing to reach for is a path-filtered `push`: + +```yaml +on: + workflow_dispatch: + push: + branches: [ main ] + paths: + - 'themes/*/patterns/**' + - 'themes/*/parts/**' + - 'themes/*/templates/**' + - 'themes/*/theme.json' + - 'themes/*/style.css' + - 'themes/*/assets/**' +``` + +{: .warning } + +> **A bare `push` trigger races your deploy.** The capture reads the *deployed* site, not the branch that just changed. A push-triggered run starts within seconds of the merge, while the deploy that would put those patterns on the site is still going — so the refresh captures the previous build and reports no changes, or worse, quietly re-commits the old screenshots. Use it only where the merge and the deploy are effectively the same event. + +The trigger you usually want is the deploy finishing, not the push starting: + +```yaml +on: + workflow_dispatch: + workflow_run: + workflows: [ Deploy ] # The `name:` of your deploy workflow. + branches: [ main ] + types: [ completed ] + +concurrency: + group: pattern-library-refresh + cancel-in-progress: true + +jobs: + refresh: + if: ${{ github.event.workflow_run.conclusion == 'success' }} +``` + +`workflow_run` takes no `paths` filter, so the path check moves inside the job — check out the commit the deploy shipped, with its parent, and compare: + +```yaml + - uses: actions/checkout@v7 + with: + ref: ${{ github.event.workflow_run.head_sha || github.ref }} + fetch-depth: 2 + + - name: Did anything visual change? + id: touched + run: | + set -euo pipefail + + if git diff --quiet HEAD^ HEAD -- \ + 'themes/*/patterns/*' 'themes/*/parts/*' 'themes/*/templates/*' \ + 'themes/*/theme.json' 'themes/*/style.css' 'themes/*/assets/*' + then + echo 'No pattern or style changes in this deploy.' + echo 'changed=false' >> "$GITHUB_OUTPUT" + else + echo 'changed=true' >> "$GITHUB_OUTPUT" + fi +``` + +Those pathspecs are not the same strings as the `paths:` filter above, and the difference is easy to lose an afternoon to. A `paths:` filter is matched by Actions, where `*` stops at a `/` and `**` is what recurses. A pathspec is matched by git, where `*` happily crosses `/` — but a pathspec containing a wildcard has to match the *whole* path, so the directory shorthand stops working: `themes/*/patterns` matches nothing at all, while `themes/*/patterns/*` matches every file at any depth beneath it. + +Then guard the capture and the pull request with `if: steps.touched.outputs.changed == 'true'`. Leaving `workflow_dispatch` in place gives you a manual override for the times the diff is not the whole story — a plugin update or a content change can move a rendering without touching a file in that list. + +The `concurrency` group matters more here than on a schedule: several merges in an afternoon would otherwise start several capture runs against the same site, each spending minutes in a browser to produce a pull request the next one supersedes. Cancelling the in-flight run keeps one refresh going at a time. The pull request itself is safe either way — `create-pull-request` reuses the `pattern-library/refresh` branch, so repeated runs update one pull request rather than opening a pile of them. + +### Automatic triggers get no `inputs` + +`schedule`, `push` and `workflow_run` all run without the `workflow_dispatch` inputs, so `${{ inputs.output_path }}` evaluates to an empty string. Give every input a default the expression can fall back to, or replace the references with `env:` values the whole workflow shares. ## Which environment to capture @@ -196,4 +271,6 @@ The action is a thin wrapper. The CLI is a plain Node program, so GitLab CI, Bit **The pull request is enormous.** Every screenshot changed, which usually means live content in query loops. See [screenshot churn]({{ site.baseurl }}/npm-package#troubleshooting). -**Nothing happens on a schedule trigger.** `schedule` doesn't pass `inputs`, so a workflow that relies on `${{ inputs.output_path }}` gets an empty string. Give the inputs defaults the expressions can fall back to. +**Nothing happens on a schedule trigger.** `schedule` doesn't pass `inputs`, so a workflow that relies on `${{ inputs.output_path }}` gets an empty string. Give the inputs defaults the expressions can fall back to. The same applies to `push` and `workflow_run`. + +**An automatic refresh reports no changes after an obvious pattern change.** The run captured the site before the deploy reached it. Trigger the refresh from the deploy finishing rather than from the push — see [triggers](#when-patterns-or-styles-change). diff --git a/docs/assets/images/example-capture-variant.webp b/docs/assets/images/example-capture-variant.webp index 6dc5411c56708867037727fb183c5b76ba53edb3..4ea4200d693e54f498df30cb71e6b336632c3a7d 100644 GIT binary patch literal 77198 zcmd42Ra7Ng(lv^^YvJzh?(SB&yF=k_g}b}EI~49vxI^LY?rxVl-J}2We_x-|eecuV z50JTX<;b-oG9u=jv9_XwsAv!kAb_ffpuCDaJHGqp@g*o|CLm=FC=VDf4{n4AAwh1; zvhWx_aDPLSH+Jcpk`L;BeAq$yLNuTBFIVCIuDB&%8wA`!Nguo$rqOeqwk3p*lXt`E zsIa$;+n^i1B_EL&ms^Q(2354-jYwBPw-p!2hU63J@jMo)#Qopg3riD_WQz%!ujOu8bh!@94wljpDWIJ^C@)mu_Eo$>-=J;zR1C_%`*m`0aB=$37OH zcLTq6y_&x9-Qb<@J$%%C-hFdR^dxr|eZR5sG5)dpLGw8jy@B`f;l9z%_wlyrN zvi}}K*-IEgeoj@t?OSOKa|@ijcU~LpN}#k~;gG%m9qOXZDy0!Dtxy79NmZZomJ+@>2g&7d z!_6(e$dgw1bqo5QJ>AHzZsJfERjjuv;cM0Z9ySN%s$lsA^T?>f{BN%QkDKzHM{}Mm z^7n=KB=auInpi}|sBmN8l8ki8R>PTo@kcU*BVwL_d1BCE{`-en9oSNzaWqzY2>_rp zv}|BVP_i|CV{?Y{`q_>OP^NK5<89@fg`_3_#mbe~tm>+GkkLx?gJtPEfV+1}n1z+t zitw9V?(AN(PkmOTL`_<39Mzdf#=-L=$18HzOzE|AA@Dka$E`f9@>YUDHJ&#jwbe~> zGI6{4-`Qfi&A3JH3b=T(9K2EZdz8cjr8XY+28TjyKgHs`dp)VjOoVjyT{RA55@O#k zGIS0irnN_y>nJkm3#6J$5W<{k#=$;ZCQE{$dm; zCc!ab%L(34X3<0MoykGim_{YoAF5fSOs(U%x5S_3E?`Xx5AsMv3-*%%>IQ@Lzl({ET?!f$H=w^WvlYjva6`KU9#@Hn^O@Dd$O!8*b%Owrv$Nz> zgcN+0ViK#}e_8^*QR~Faqh{VrPYB=*#7Mp9ILEIVd-5ItRpgki9-bp>jW4`#>+&L= z4_-+2DUU2mqakIYbX| zF$mZkzLV{Iy%g0hqF3>m(BIqfAN7IA`KU~< zxJ6+xBC}`|&x>L*B#62gJTJa@G*~^b)BGebJZ4M~cY0Hj;+r~MTzA7XLWw#e_-wGq zo^6n(M^Bnr!rv8<=Q!z?d@m^~#hzD!oJ_X?1RDRg2xTWI%(Swc)r5T}aM3vRTK{}X z8{Ym4habX{#O+L)NVYy#wh(3HOrY3vV&`pxR_<<6>8WWi&%;s{Ld}l=e$vagqjJMs zg_72l0So)bdQmD$FSH-nhTav-YHITK}8++K#tjZ~Cr$?yv3m_r>CmTK3QNx03%CbNB4oY|@ILJQ8sb`Z@Zp zFAM)C#1I1-`Y@GFTWBhqa*rL9bS1NfO2FtUgiJh7ZHG8*-iGacNF#j-4> z(p9NYj25>N2@G5uATf|=N90VU;q&UgtuWuPhGEeJR{ZrHoPzlmou;q7DUt^w z0yJbF=>&4a>hEXN3o;3<-%NTjH@R#mR$z=*96GP0juS~DX9W+_LE%6tdH)yQrfiy2DEnQC zJnKKc*-k;zjt01zKjN%};(oB2EGAUJwQcg%bJ2fme&mS?mNJSC1o1Xy6-45~wBj%= z_$5Gc4IY>sKKF{+ZxR~hX$NA}qc%!;x86h2Nt};u$fY>q_vMP2x|wyHnUeP1PD;Tl z#}*BfpDqH|*q8?xxFEy}sBcpLLZHr6E+`wcyGW;kO^>A~uvF?1JL+89o*MA7OT#P@ z<@x|~NA}`pv-faVm|QJzPOMGL#{t&cAC+)^uVyJ0VSPH~CGi?{kNxs9r4;Z4Wx=!+ z&Oc$;equuGXfPEOJAU1W2!``ORZ4tD>MnW^S(nQGrix+#2E?iw^RhiVP<3xaf>?UY%i{CykC;mN?Q`6RK6wktc85lfEX$!LloYp=3Md$vdLCuOHQ#!KegKA zFXmH^@=of%Cz60{a^HXZ_TGGP8Png)2kJz}$oz9FPFv)%N*9+gjXlO<*}gMucdw0D zTI?oMw5tKsdR%DIP^F&A734*HqNdu(&Dj_GtjZUEPFkEGoMn?xqoBBJM@oim9I$s$ zXc~wyy7r35HsvcLV&{J1VVjT}uVapVxD?*NC|wjP97ob%QpJ0og&g_n7d=P|Ds#W& zYj_qI3%lTQEB?B9sorA2DLoV4v~L!~n*d3agc6cr+3CBkdA55)I+Qk%xrPdWeX>Fx zSD|17@>I;}sCDoRUpZBMTKCZlcJuVo(U4M&=>8E{7eJkI5^Z(l?akn|=**apQOG6O z*6DRE=sOd-)ZN=Cuol=XdqHUDa7*8ebqJY1Os2;4%24_Z2Z)r zE~XhjhS&Ot(>>dpQQEWb68t)VgD-F`Vz2BLJTXWM$_+|b2Twq#l>TCzh`P2uXibS5UO2V|CPigF zY+b86I2WTr9*04h{0@Td#m zH_g z-`ECC``0*VCDQF=)P4w>_Ko60#X@DaaQ5>Mb5HsWU25n415502{xhFms1SGcs4;C0 zyAG0TnVt}QZ6WVwr)NDN>Tw=MiTi`>VVQqp|2<)*41-iV{mjSI_l*oz1SQN9M>U4- z{LI@8FHF))zF6p7AX%}q9DYh8s<)3dsQFPokHV7aC;G`)f{^gXGeTO7snVzG=lrOm zJD5G-?^WH?^ZU(s{jKrn2tn(_BXL|c*4?>$K>COr`RuU=e;EBH#ENb+(7$WL8zRm< zdhopxRV&6PujX?27q2#ak4AibI5MpYg)9*5fRhFL6Y~y&;OyW%?&VrQbG?U+vAE2u z!1;6K?6OrqLW@CG+N~cu45!m2mAq1RC_u@^J^WQj#}+5+Mz)=i;$V(^pt#nnUwTIvtLcuW;`_GCHMzw{!PyAm8{-TBHgYrS3>c4>{cf_d=qR&a%DE|$F zX~AleQ3B;7arbSPZA*NL(vv15jpjP79&-TF=U{f*F!nY~L53X8pLn6V!R}6xmBDpc z(oNY1>9sezX~H6;D(zqt%OYDp$^RRo_GhX9wydG}`%U`OxBE+?f4Ek+wc8*NUxl8~ zLa55g><0<=j<=GQ*jO9Lg)m&3N9IS}&%Yvl$TRDSz>qm+L~Fw)i(^M*5p{A>QJggL+g!PkLMJcHS$aLbY+tsaUP(#KKM zZD3SwHS=U?GbaF`)J0QLr=do{_5=6-S{eKOWWRQ+Gu@5)xNh%S%Q{9IE9J5Amd68l z4t{pYJx@JL)^4hWsGDO4XWU{z!R2t zssqLgP5$mD{&}YrnhZZ24S9=mcGeYg-3F4c#3$L^6yIT^S8t{f7Ef~k=ziz@zlv|l zaUZYYY*S1-EyT2*+pAnX*QnK?gqU>1Y7U@Ld>#1nI2nS^;&8Mp=HKK82oAQdJ;D&u|CO3alXd%($t|zyztBBDHB>QHt@FrM zsYW&fuxUl9UBp5cQ+_rGLaFjU<* zw&bctn5o z;^cg<=(Mh`rscIAMNKF5L1p3138BMLN3riD~w&rW@M|YEr@aZXqyo* z`eQ8h8f!k+9)h&oBh1yU%iM%eJxVI4MjN<(Xh#YSVFffbGW5FUB=p!S@K zPh~LvMR=46(wsSvWTPPR4g&~ICUb`JD%+KMD5QA`aBQ0lkbW}Oe(`3^7xSqM_V*Lq z!X#^uY+sTWyUj*7v4nG(?>(=k^9w;QW+ML9p?WzMSY@=&m?2nT{g7~y+xAw|B6I9V z3=@@0GMKX|pP3Yc>UcQrT`~72w%7KqZKqq> zQ+grFyJfUm$ZCfKRD41}n22vgt0Om)ReoGhNr?Rx8Hvu`!kGy1mISwm-GZ<2KlS70 zuzFBg-T~LJcEGCY=lXi0*dASDZv&~HqGxJHWiob~pZcu*Jj7bb@0ZAKxPF@fw>86k zfLZo7`--GFlqr5~HuBopR*w0BYEtVh)pvW}FKoMtOKuzK?b;<&C4*y&VWV=3cM*2b z0<$U%S(p^ffDaU?vABG$1{)%d<~DB|a3=ANS-d%wtpHH|n@j zsFfNBqxvx1d}l^f+-Fuw*W&lxDqzuk(XASN|8;1mL5rp)?uCA)Eh_Ba2Y({j-#?C$VO+A(d)t}qiZ6CS10Df z)hA1vXs~M-er~{<&{xeY17k z_6PX~VKP1QxU34$$UuJ8J9H`bRa+5XkJ)90%-q%9MC44!TP^^A_+1i*A#ju^exm_S>|Mq#Y%3)(%<4^ zH*$VgMCu$bRjbtdDu??q|CRkevdFI&daMLR{%btYM2@ZoR2N1vwcl8#nRR-7-uziS zrG7_Q6AU?Vlufbz54tsg3}H1Cd@o-W7p*t2y`N%VRwSdzQgS8j?ud=yHsf4$1(tqaa*WYq5PsNxg zH0UO}_@{QM(^B5%BK|)d=eP%?^e-LqpNKQiuJMH&*gvl<;{WcG@~H@3Vmqn=|Iaon zQbGzeU%;64FP#}8oj8GCCWx@&(L?+lm^llq4dU?qQwTDI7w6d zKI@6t`_ox0;7Vrs%l*&41Xh3MY0Vt)So^el-~MB-;Ey&gSm~#Boq?CwEakFKt{rX9 zhc&Od&*4X(k;Z*d*Tpaf8L&Hj;PvnMSCT)`5+fK`X>6PERJ~2N=HGOZ|G&a{37T!Q zS>D6#ze1FM{^Gx3I!(seo?0AU#Q`P0OVgPsJ-fcGG=~JnHq=>}_HEJo31+3lR3`-V;50Ce@e(-uhxGGf z$%pt`(L|6`XD7y^+pu{}g3&X|4z*0zvWTKFk}%DD)xznwG6uvG^-2@35DLcdk{>J` zYZI+TR-r8hzj!;R{3e`iJA~IKhd_y)VaknA{YZ-61hX=3)ok;!Aqn@%_|%Om(Lmw_ zd+Q5mO!njT@sU6U9W%r{N6EfmN+t`*H4zNruzf`&yZftN>L-H}P|=-XM7zO!LVr6l zh>lmN4`Un;kL8d{ncBrjV`>lQGWQ$67}k=eGt>DrVL@bHB&3DT5i z;$D0{aqs4SXC5})BijfReXZ8M12Dt=0C)pDD~~0+*Pbjqp=wq9{{;EJ-#VdUBFt0Y zfbB~ob{$u6q)}890h*%tAI$c9xeUI+XczrsS@>8gc_0*U6g>e{Y#9 zSZmlEcvW1ym6$bQ+YT%QtV^?d`-wTfF;GIPk%*ou3*A>N$ZT3N7h;q$ifW!0Z2JCa ze*rP=%Aknvjs)j5hy7@=KeKaar^_p;N=U+(@kN;wnq%#{TydSd`cM@O zZyKF@QT^r?AgrUnyzNJh9axWQLygP^r=T3fy7gy+v0S%=P&tdmwFF!}$2^ zh9*g2Z9XzpG>}Fj!U842F+&5lsBrCwuphtdi}n2wyqlHqQ+xYhn#7;*$t?{?860+ zXR*|wWF#QN`#due_Ds33oW>%P6M zHI2zJ;n_j?rr9BVzh$OQ`kI8ZcCVA!?-*RZ$h=O6&Kl*It>tI|1xIs|%uK}F{ zUeRIceC1~zLH~dCj}cTO-vPQi_KW@sjy)Aw*2>!&j!Vjj^$$Rn9VkJ3JcxbTZbbAF z)hteT2&Fu8{LAk&_V@t*`vV8HtnLy%v4TMtaHZY$kL!@^zGS)k(Vgb zH|#_HyKB5g{JJ&-JM0?b@|aSj9@syrks~Wt+vT((4X0TRcu+`#+?}h7E=|=h#}X-r z9Pcd7z6Rby*q}DK2Skge7AmKB0&rZGOIr?$AXPKM;uW0*ufRC5ywBYjGXQMpS3+LM zfH82Iny$>Gu>o0460{WJbXI;7dk9(1pUuawVbF5sk7?=gF>}}fFD6KMzGzuo5dBh_ z9-(6ch5@D4|9C{ysso$agmr5P&rIavhV-g_3z=qT##rrD{&lgcQOH!I%}k|!VM}P* zNoU<;N%;xiqbmrZV9esL_zG*}{Y(;}y&t_K`}_hnjaqnELhmO5ZgnPq_=H&IFc*k`_r;Dk`<=wX zvs)08)VeUPSCx%)ZY_*W4Tsf)YsM(ZG4UACb>Y-p2#jJ^ViN45dyaiy7fWwpPP zWx-ykSNDE(0@*==?>;txd~H_tl+m9g^1FK**N?W6F9XhtWkn@bm2zCEOXciu8ac)1 zI%{GpU~)`1e4H$&4NmCaD>>$)VV3P%=}^k`Z^@srV$LbgUHZicq>^f8AciuY+e^L^ zRoB?@Cf*u`nt@9NIp*OyPxN=d(6CJM@DvF1O9_qEGj?d4<_NqyDLDz6x)8WQu*a*R zBhGV}A^M>Zjdzl-n|k{4ss6EHxv$is3x6-fg%0xSh0OTK9+5FaqLwVPw=(`&oF4$;trT)dXVm^bXF|m(+ z%<%-jCLjaXJY7g=E*$-m-Jy+6 zSJoM&NZY#|=zWaix{TTMa`1Hpd^tDgRF1it`sKOOKBmno(Ne{$o5ehV&H>~*q1}}U zJW8rk0`FctsL5euz~h>V1zbrn*pj?=vSoGSG}upTm&Sr%E>DYTp4L=rm#avt0sX0L zGe3g%rchm|;Xs}&XgNLNQN_T!Hn3gti74_N%24YEvPn*B7Fi+I6(=Bvl54vkeE>+o zRwt1TYXC$P&xn`Ixm;v(MM6_yz`u`E?Rq9--!j(r3CD%XKwo`e*_H`=^_zS$w2ZI%hCL1nF6apoj8J(C^~XpMH| zNW}*7^gMH|(|YkJ4YF)FNMyPkuYv%6N687Co6Z%+Zi9dU{i_p%%CQr~lnXOyTZFAS zDX5xRK&t*kRwK8^$VmzW4?P^0I`pkx2&PrOy$?bcz$wLz8#e;+PDj)f^SvSvmP^0I z*ueZ=w0}vb`zLwd6WMdNQA&|@7uBSZV4=FT;2P^xsw)KHbcyKs{z;>1FbZNLG~ z6US=qleHBxl~&} zY-$dTRY26x+}Qs%(lkvW5%k8ZnH6k+1 zMjfbmg={9UBSPPLOtr0kjBA?VAP^um_6%XeJUe1~oBBE=KZPKPk8x8*Hu&T#l(0R2 z#ft>#e1XEqbvFJ!EtRt5?0f|}0S#!}zzz!YQ+cjG0<<|b(tl7U4~GBJs4ZY;@@0eq z+G0B+)buB~Qjc#5PO<_aghjaw_C6iK_FTi4x&#g#qjH1;uEFGA*VYX2+A~XY?vw5U z86@^T@Zui>Ax4N`#B$5W$!~^a#vFV~`^!b8>eRtrkk+xOrbE&)__LH|zB(KUepLgY zOY<0z&tLZwdW=JP?Q<<_DuMQ<9-`f6C2iyx&PiOa?fUE4`sLSVf(&mNbr1C$`nsUg zX@AMG*Y56OUag-qn8{ME7`~+YzRs*yAHY6Ngm`?fOjj+?p=aS+cruVDSd?y*E9H$m zsJ3yO^_qN4zJxhJmGK9lf0l7J`+C-E1%rKGjEQmS8k8Pn-@W0RWHXq`g>HaH+M{As{58#lKiFUcTN$rcTUeWw@T7O!h;&1a0q_WPo#gA46lx4+Gd0#y-eT&}2x z3IQKMOV8{T7J;i?F@kG~k8gkeNC8Ya#5JYqmz$&N-BNevAH_RW4I4%Ao)yA9OmxsL zrd!|Og|iw>6b>NhqLQ~JqxTwdS-q(q^Q95S`E^h{^&x=8W~$1ml?N*TjT4WRoVLAS zc@u^5{M-eZ8!dNP2>M}i;xtkRZGW0A^&X2OnDl`ac?SU6&-$OkE)r#D*hX*HGSLaBfmz0dFyot+7@DgP#0gs;TJ(4j7>1G zpLo?xr`@KUm#uFmT>H{K25I3#pG6Z6&?jYtz^wezeVNEOzT3RMP>KprA(J}aEf&zS zU%Hq9GTJP4;$_qUyu7`Sd6ix6AY$rmo1!G?x-+_b#XP|%t-CdGj->uLv3U%DVLOL>J4eVv4SN>yT7WC;wTz7LlJn zzNZPshX#CYV0e!QNbZd<2FE5!#MLn(G7LR1 ze0&EB_T;Od{hhCvG-NeCD6Ifk06K?sr63NndbNA=ds7ue$-AfL`+$9<$B^k)WTYc^a|VySgofEHj!fnWuDzW~6@*BGE*>n84avHZifk=|RW79dz>w z5^l1e%@+EyMI63uSqmzU5SU}lhz!XHL-jFDl6oeNHSu&(^VOpQX$-n;|z%9*wW4r8sF828mm{!ESAuO8}3l@Al@+d4kox zX_b+m$QuY5+Lm{a{EA zWI-3;-l+QsH+`LuSo#JqAnh5*)ID<1=3I!vbD8_|<~Kn+bXNOPYAn_bYZIEN4m_7_sC#gE0-G}6~QYA&QUsCZJl=){U|Gf zCB`PqUJB9NyGhpXhDKT>AL?V({p2s>o{cdqDfAggVUa=wmxXn z#iBg}mz&{tHUix{+3@`%Eq(rxt$>yP;}}r6c6>JR=Y*R3y;Ws~Isvs`!9*&Dga!%2 zW`6HF2xSYSW*F|Hk9^+OeLEg7pv82C?@Ujk`ABFT57ni*^xk0S3peC-!nMsS0ipm( zIm6wx6YSG(eu2(xK&xHrmo5oCW(Bo`bQ^ghVkD?00}{wHi!qW(hsc^Az-=|Rgo()H z^WZ79duWTs=?C`CLz4Fhs5K&MZCWvVeG9FHC!sEhg+)?ul{6G!#A_<>2e=7s-x_Va z1};#~@5d3CGI z8B2R6(yssHIIf=cFu$Wc?&E!p@}=#H?uqt$%9zDp!0>>>zhjFPNfreY%6UE!t-wtj z|FCSQC=W+viB=!=*x$x;htVfcN~nNo33l?ZM-X-iL_+s;U0F2;%~`k%@}06KylAvr z74|kh7D^rezqZp1GWTud4Rj!-zgN2NQXF*5|@v-9ep};Gp|`z!|K1f_RsF z0cZFa?2N(i$xq@d0wr<~gQT^oQ|eq;^fGDCGUD+CYw#-<;J6bQE}1Y3&xi(<$C}zo zbz;3Tvg2G^cC9UV!r}7pRa@g;c&f_dt0AiP!37U~@EtlDT5FKT?$?}yzv$R8-!OrH zEQnt6h*{wyH{rVkBprpo4vni_|O=_3oL z`7?YYqL(8xPp&xCd(Boc z6MZ|BS_-cH^?Fjqa4JS)87h;_F2g;Q31UO*4 zagal8VgJAgJZBU2DIYeT7~lgFux; zbKG8U>0KQl1c0zsarlbSU1!-ypQ0ui`ZGQO9~Gxewu67|2xi||2N9okbn&qisceiv z8YGymQ*LqzT@vkiR3&SZ&gPrPSqLJ17bdA#p&-F8R7e}53@G##kBZp&42Y%fe%nlMz13C}Qkata(Jf*jH_3%j=>Chfp z<#dxPj`Z_P)YexP<9ly9OkDJ{3O;H1*=Z`o@WhUf`-9fa%(9wHYOadNxM|av@8W%J zIKfEz6s}%vp|dC099t+RIOm**o<j;k zI?@!)h6VsQc9ZRtpOhB}#Z6twZyYI=*f{Sb(=KGo$bAHhKH8R47B$QzPzY4rXaOYQ z`mHOvD@~{-I9Ix!V+ix?YIi7Qj}viRH(9UDUunGCadK^$^Bgzvo3Ym_q~ps1e| z_4?9C?Rg5-0+m~QM0FR@g?N1p>dV2xGbW{T<=(Vf8&Z)V-Yx~iqv~X57iXUVRQm%S zFSIB_?hSk2AQcx8w^evz-E!)AfGO8wL}4Km@&i$65KVUHcxYLEZC_CZ|FO*3V6=h{ z{(+K{ma%>LVyk58WL4H!QiKgh8}EcSVb6FbquW$`N7G!xv|O&$mncdbNe1=7B~$DA zf&(y`D+$Z)fZznfc0dG^0Q2|6GDEp|-YyrvwV41MRJ*47^KoN=y3PF$blL)=`b46B z0o#?=fk`(@Jc89B;;!s23=C9NfIaY&w9z>95~^DAJ1MyJl=5YrmYnBbYW@I^hh*B&lI2MJa`y!BJb1py z_n7qjebJ}#rTrZ625Vv$ZdtPMnJ@^%z#K8G=n~Ue7>2&l>Q;?iq?d{p?JSHLjEv{5 zLqd5%Z^fF#lULKn{n!d;%QThHET~JJhy#q^&LAOC`@%(tZ5&bkx6RVk|* zaOQO7E(qH?M`auf&4wpcj;0(x3KX;${s?s0i<4=$=hyzmd3b4&Efmhu539ro7lXY>}=+SwayM=|QrgCz)uv zEW`E}&|!Epqkg}RBrQA(Dvt^mbeAD`?XI-uz}=&|Elwy*`5eG>LM)llUE_{4h&49R zt5w-b(h0uhv~}Vct9_^VEUjy&)lhzyZlof%q!4q2{VoFhpxW>vQPo=5%bR%h{_8RJ zkifYOChuR@#z$UO@u4AthD%RUz%uLp3krJrSxZJWC)8C^w!X3BRN0kV?P82L4;*SB zt8t^ zTumyRrN2_gFUkHX&g!l?+HdA^u2L!ql4^E$i~HlP7WEQ?b4Fg0Obf3)HWKRw^TC)` zKMkVw!x6zYA>}c?&(d7{tIkaF{XzJCCIOzLr?Z^kNdE#XF>1o-996nU3^Ff z6URlY&9g@>By-XdENmCV7OvufVX09HxypxIf74)gQ7n^gk}JFv zWn$nan;PsX;vrLBGJ#Uc`_-}8AsFgp^nFnzF#d+Wg2a|dZWpCj3~rwEjU`>TaHq+* zpOy#Z_Jg|Lv~sp-6tO(d4ZVjzuIrL6792A+ck^`pAnSv`S_m4#V#^U6>0rIcwss6^ z)d?JJZ5*X2jeUTL&^0+8P$34ritn%Xu=p64N1AZ+p(Nwh=eH+Jzpw|9SHa$WPASjW zR@&y4Ie}_N^C}T%@3}DNq;--_Y3W5<@9reBG9cN${tff5MQ}zg`E4Q(Msz0FSX|$c zdz+NM6(klvc{7+1d0Nvx=+!HH%#LFstl^d`9Xo;1+@D@a2l;=mGh*~M9Ry6v3v_k5 zwYW#M7A2e~3&`2piG`Hn?a}_Gwe)gJS2IOEDtGYT`TnpLpc~gh=HK|URIJ|A&#To73d!3qA5eSK zK)V$Jxa?UB!FaVk7NcQ)TV9_|;j8%pNio@_d&$?aF)4KH*W|LO9sYa?E%7&x+GbAT z+}RvG>NgQl%|L+!40>_s-825rC4pZ&?fzcc?+;wgvB^J=9F5iLvRKlOUk4Q|(VwMcU5(HCzT(Qd? zR{vhVL3U~g90%XZd)q=Z!ZMf@&sg%6@G^Y}39`5U*WNKk5^8|5h9?KOYRGyx*x2_8 zt?~`GqB0bwoIc6T`cQ|E57h(J*4-=jrTOGdmf?eE`LBs3SfSqj_b|3lLTBX)D+yY0 zvJ3f@V_O(U)_Q_qiKJfX5S`c}i)|$4P!vBh{Uvf#!isx6vA@-J;N&I|@zW^yH=vnF zwszNt6DcKf#rtruFY9;MCBJK>K`R^X=Um?6NkGa>U#P)CQA4lLCMIhManASf9AmIE zY(_eDA`n*|e9gg;CT__xy($K0>ASb7{G#qH4yy%m0zfJtrjLoutUa!B1(w9xDDW^| zYz%BYbLye@&9EA%XPuUP_D#T8kZD5vy;mFar{&#^AwgPfZ3SrQ)*=lcHb3gh=TQL{Ni>kiL3osS^%tg_=0>Dm4bZ z5~^e45ygVOWO z8Vb`#(noXW?BCE-i+jf{PMM}^wKJ2Sd5U}zf7SkatM;kNN9b9?$X>ZS0E)boOv?0| zNa8?k3bdUxn4nG7;W~f57U3HU*dYj0*Lp}wNg{Z3VWpEv<%FMgbTzpp z%u>GR1^_uu)g72H?Lffl@MVA0;cXY5bG`e3I1tBeqeF#OI_CWyj93w{?0^e^VJZGB zc`t?3r?|_LC1;`99xJSmVqRPc|;)^Ab_17q^PEMQf`+#bx zuz6dr1uqM%F6liFAZy<7d8v{@!R3*FR_kZHLhhF2gRA(p5a^?P270CLN8xFg3(8ic zRvJjaQa>Qr>v;2*MbmT+O>0NPD(IGe@CgnGn}yXs4Fc(CVq zd6V~O<7q!6`f=uEz*>Hw(V#+X9}PeXTJ-^MUROR%DoRzr`Sy?Ghh9XzqPQuZ@bz#( z!;#n&pR1A>q)Op1o|UCHh`Mq7g55F!u+R*1A{C!}p|qz(H;+0p=VzzNUn#cKCFpIW z67m_YZ(lvJLzI!#%>k~9%(67g%||YV1ym#VCe|V$F&sQqA+vdxo{#Jl6LSqMgBd)& zX>&cbrws&MWz%gWK(nkp66HRzfiH=8V$67XYvQe&AHuSa_@Z6x{M=Az_#S7IX^}-F z2r%}P=HaVY&%}L+#vqp#$97cu^GjZHh_~coo3lJUuw#3@)^Yc!O+8)I%#GXKOy-;? z85=_{30)Ri|Qq`eOo-EFzH9vxzvAer0yh;@FIs zXfhyKAeD=`oUQSB=AKV4bh27ECgwFC$0G?SAF-ba0&%vf!AgOGfcY+@a~B>$AE>kr zJ1UamK(eoVwnj$W(cBdH(*PARe*PnxS7b7l79YbsW@Y8z#**lr-V#V_+h*eCXfHYD zt_z`pjUxPcrR_VZhdhx)k2^z163M>o`qV~QvoAQvw&9*@?-hy&<&Do5YI$e8jOK|Q zQw#(oh*|HZtKlTne)AIq2K(*2(t5kiGz%-JWbPIO4$yRgQ^iqw ziL9Gs`017H#U)N*xi)URE6lyyoGS^g*VUZ0$~)+tl4!ft9TVi>AAZ0AII^8W4X7Sn zieGxJ3^QFVFX?8n?P)MuaOaE%w^IKkJ0LTgaE<3HZw!;OQA-~eFd+d(rlwWKnW(?U z*WDONQiq|r)Eo?tp_><9VqaxuReSbPGXkU(gXO(YaazS`5iv8`^MLxTuV3(B_M_$Yen%tDdRtV8kiQfN2+U?*A!D>; zh&xvO(5O-lxmSae#r;GoVFM+ZRy9n!8x#KFr-hs| zj^F&ono_Z|O%pnj)`r>RfS1b+6aEbV0(OL^Eabl!6Q2X|rKj6iyUQzGN@H9CT{2q9 zW>a;LcIZA(>^Vbvxvjhkb-;>0<+LlUKZB47t9k7IWxf#n{~sNOo?06WvFoKs+nR26 z1W{EtC!pu%1oYS#hn}4k&~tSJdTNSC&&l@hzCH#$`~SU&c+Y78WKsr^F{td&^)jkB z5RKvq9uw)mZvIynC$+ES{C^Dmea0lOSj^KYG5VVA!h;Ue8SV_i3QT&8;v@M~$-oNS#6;2<@ zeUsKioVSQIIBX3vHBXV7=}HqM-xFH<_(bX3jVR}V(uGzlynRI>QbN~8$B7FyaT}RU zaAyZTI#6c}7z;^H#X#ByhmphOC)^Lgg8UMsdD_GIomTfVQ`Z4F=-d@5HJ+5wK-)Thv+jOoy>01`*30+Q0&lk&W? zGwLERRlq!^bHJicW0E@pW>uJM`;6OV?;z!5k94oPvEsWCb9+VS%W6QY3nI(M#rLA@ zr)T(6SMq9)m43dm-1#CnkNNFb#8D=+8fm4$QHgp*=sj?D?U)!~i*2O$_1`JV<-0{C z3FPHvER*Nv230v92MDHeu4_#l*p}DvTq&%Q8fw zM#=1xo|`ZiMpHEB|E(n)I0W|_pv=##Ab6#PIbSwd!^KQ<`2TE8S560_Y0u6FRFbez z-Yd<5)_pjPKew8NdT;p*?ne?N-B?kvxc_5;+}0G=KG)48X6ga9Q(wG7-N{**HrV=0 zBvmU0bS%fDdKnknj26QhU4sU9#4V-LF~WTq2rMZpI0R5OfFy<4)Qpt{X}V zLJ}^xF0OfSGc6zF-hq&A1*Q;fR8n^MHw^X*3(VoHBYf93wS~}e%V;iCbe7iFRNvR{ zC}2!cmL+t3FrR0$CxSMLZ|OvmEhr|FZ2yHy-G2@L`mVfbv3IAG(j5~F+y?VwjYxLm z+7eGEn16!0(pg$9rvH9~luQ(u3?AUNZRb${W&ty88Y?0w z8d?2O_pi0!&GaVh9pdpA1#|Nesi5CX(7Gxpl2sl@X#gcz_HKTRQxvsgg0c!3BcFc{ zd}7l9mYjaQ)p&CIsnPCfo8ifY7BsOaC7rkTJz;%Qhz75_k4no)X{ul|E2yPwoR@=4 zxyLO0`4)0D8bS7$@8X!EAWl>e8;j0u)f6*VqhSCs%dQesW9?JFt zwXu6NmecVxy`p1e(Yy6r84JY3W_a2$ad>U{=`aU25eNQ*x`WwCQ~5K%uuo^3S!duY zG3ZN}#7(cuFWL%$128ijpCE8%8+WTbO{f7g$hOXVG!nllN?9EjQ<9on32kq=L|+11 z5wlKOiqtX=Eb%_nAdhCb*Gnc`{qumlG?dRK>DNYeLRP^>6c1q7WwZ&wl-S2=6h;b* zLGcAP0+V!V^^tjirA?N?J&zWoPs;5Gk`_oRxPqI&srW&u3{_%dwWK=>eq0(z+TIBn zcJbqI=QZc)cm+SR_1??Y-8bkK%sp5ZVNYFbXQQ=y%|Ep{N_J7E8M0wYtCnc%LH|KE zZ36HxkJ(PTayu|!)@+3)2Kef7e=71i;UiEjzeiLWD6}%L*z^@3W$X6{c{_MU&4FiJ z(E>3r_|MUW9(VUDCUw`LJnpno&OFW_XE~GWUP)Z1Pf9pLsMYVHGc&@$*iyZxARxtE zNbe)O=2149VWeh*eU~{FIE<0Z@M-Na|3b?A2g&C6q)HtAK0g!%N8m)(=H+Ztb>_L zX{+D_O*$&N30(@kG!O+n>V%~$fnez&A-G*Qv42%1G{!H8{Wg*pBC{PvB|nXj2p&m2 z91z);$qwJwo#~PQ_CETlMkrhY-$|Zam4ae-@z1+|sQ#e1=<_i(y>1ci^>(E+vFdvS zgMK{&CriSS4uARkMBeO;qV)#TD+1dKiWnK*G1NEESl@$oyQZ<&kYSZ=h!Q`sZrhi> z*YE^)I*%&tk>NI1yEBHQuxsOnD*X}~iYP=kF!m@hW+Iv}!rVT+dYP^SygP{KsEK_7 zM(A%52NnNEv%i>logxWC1;>A$Is>W4WRo83yTak48S@l@~7r?39MZRIw^W*^8@_eiv$`yL+R2m{eJukfPVomqED4zwa zNr*8+xA@FaqYZ+9^1vZ(VL99Epku(;w^G#?H-Lq7TuLtBmZNs?eQ2g9QMJhyA(juI zlaxG{|CH(v8M9T=fo}iSt-g07a$wS8uy&6)XNLPOm1lO9{j5@pG|O zMiWPv{=dkyH&T5p>LYV8NsUx?=os9ZcW14}qK12b)_#+o8JEkD=~eZcKxmJTWT#Kn z!~qzGc=iK`qlCJCiCw)!X(M6r3|@zMC3yt$zOjnfLy)rpo*SUrT5(t)0F+kDXh$V z1M-A^j`=V!sh8y2`2{coHcZkO4|HcGJf1DuUt161kv`>fhqew_rzc6#viJYJD5FdP ztNhO?`QM=Y4onvMKM2mnl>2`O=0gzPBto2!?u9kUo3qJzKQ2q9}&4l<}sL~zMQEf8em%Z_bYzNu{et-1{VvYJ4l2Z=yY|DvxlGeh%v z)y;1^Ex6j<2S*T^2(%jS{8*nx^y<|BLy!x!7{i_NCt?=F&Vp4PT8JZ4My#@33(@XW zNgoPw1DmynLquIcuc2p&LBrGRl|4kKiOyA=0q|5ecDdJ5M0Dr4m_hm0H6I8A z)Iki1Y!}vuT-sqDz9AGZP$y3<6g#rHnqNsDQ>jrPG-7Y8b6P^~slJqiW@7K}dL_HZ zM}@EBGe%|QM*kR-5obkq*GcApkXS3-Ht9`O{U3r| z3e$8BQlbjcXCOR+mbagYnDPu7glDobCZ&d$%?5l@@h+i@^rqb`N$cH}{tZ&yzAEaW z)MBT1C2Hu(c3VatlC8~FKIYrL4YjVYW4lXYrD<=$x_G1<HufMXsxe z-h}Zve1V%xgILh?#{c6}{Goc;NB3#+dRE?!%gsIs3NuSk9Fyr)_FEIl_cg+N8_d}v z)^mPscy}NKu{QI?hRD9lRkQ&glR z}-uj z{+msUxFYFyP?KEsh8YhZLML;qK-m7@879>hUH7UY+bx|PA?N8VG9KE)9LAJ3v~g0C zy|2x@g!Ff{bdUWtodJtAY&}!?3a`L_{#Y}$J1_x6Y|j|y9o)l2wJnsYD>BWaxMH$V@bdfuhf3*SZj$@f*WtGpnoqgxNwZtq=sSJsq&Yb;U9aEA1(^8 zwvUag;%6th|EM|ri*v=K+8xeTw#s6h>rmP$-zO(XCOi3b)^VC2Z*_+~4Ym+3xRxY= z7E03uW6AKJpMP%CmxlMcSf!@EVKg$i<3!Y!yFGJc!*$yk=_WKc?mRh4=G7F`MjW>O z9yE9mf{z2FyZ$7JH;iLo`|;z9tqWk|Ic;4Gu6L*hRj%owOF2~#bT#-FbCbjhn09a|>e05T(s&7U9#4R=nh8AD#2keJv4QqX`Y!GJ+sG(ZNTgcv2Y ziNx$uh6QrW&RP1zzMi`E^uh4$$huDJNncHT!^avRzTm#PeMK^09mB8PRgxtl(+G4q_Sx?TPzC#Ms3hWh`aE0 z>e#s4P|}^=7?x?vo=I5|*k%#}H9t&8|KTyfmVd823RFo@(3!9tWc2V!F`pjB`a#{x z-gn~?XFlguP!$pAROlb_8bMA)1}qXW-sIvGB}~gJYa3X_KU=l`=x?j$)$$09g3{8| z386)n{85yM3!5-v;HT28peU7H9YJD_=lC|Wdr>v^YDQ4_TG}Oj+F6Y*o3kS)xKP-g z!xiXWSH6f>d{l`GS&It$j^ze=AE zkQ4V51iGiFBbP9Gj*WNn#V(p$?^WE(P-Bep$_teR-M)XVI+&|%3Ne)*s@5@lHxi@j z;r!{s4~t;vw7#A)p3V!=^%vPEps@v1WVc{cuLKkyR3f--&_eP>#MEz8gWl*pruNj|9@vafjnm~IzekhpoX5V_h8 z=St(nR9-=<%Ks&O+)GM6I9o)Ssr|(UVa)He5mHOwvEHYuad-_OB&v`e`u^?;rpyRQ zd4+^dWg-u08Dkm@!StUX3Z7!_|3{m{LZU&QZ6$*`#uh(+wsD1ep~)#+bNEpbPLxHz z0+!DeHk#}hmgJ8h!Yr-4!bjdOlz>>lVz{*UQU;b2!HuWB&V(oMt3`* z$C^6sVxI=>Y7+rxXynSO<^T|Jp0QrU02J15qnYGvUv(+@;9l$Hd^`IU?OHR0XCDMT@iLW+1!XqQ%APZl=8&=(n3;DzXT zOHmqkB#F*GxB`5Ulf&g9Q?EB#>RB;UI|<&*c4XuD?vq?<#nW6=_kMx61S}n^LZZSP z+oq09G2rbyz9I?HwFrzjeEd+UzE(>x&IJ?^5nUoRckpA`tL(5ujN1i_kfZzwHA zF45*+iog2?8_Iq@RT1;%Tvtu}(HXEyisU?f_gLY$NNdHx;4vYBLP!@Rv^)E%_fEvW zoAaf^-k^?FsFvAA0(x~CUiA#^ZkMbnI6|-q zJq-aXw$W8^KoaPF7To&i3GXfjZU;njv0EIt&spb%svb<>%j|IH7SjI#^M^5*ZdpYo ziD&2+C`l+UqRmXpE&aP(pNdzJBEyl{sq3eYjq{>`)I?gjAZ}0@wyD*Fc;#x0cqFB5 zksDlj!5?pL?vqC)DP))u{-TM(AY5A_kNUg`99{5p1!vV3;9#qNEY=}@ItHeXQc3)n$+lVicPVvkcr~+Z!^9-<}}43f3q1^d-y< zh17L0F2>nXfWzc1ihA*V65}-f20|ge=9S%zagu`|t1xlN4of4Hq6Q4&#TxQ$)vMp1 ztZA?ji`vwE`_foD_!QVmHs7>|ldnmglaq|!K3~Zb{h1v;!*AKG;HB9n5fsrptX3?c zjrcS7c@lq3(O7Mt{;R-IK?>w04;*gegA2|f!`P_ssy&1%p-$a{nfq018d4hc%T>ph zfjWoHxqG1LK(GU?({^(mPn&MZmIYZOE2%z1{=_xKO~Uo8e4;P8=+_;4L;MI5lRdoZ znh??j7a_Ucq8_X7c&GYfoe~kg9vi)=M7^wb(kdP)QVldHbAiu*PTT|RV7C2IGUxrK(xqH(H3= zNN@>4(L4ZjnO8^Py`yqws>5^xlY*OafaVurqtWsS@F?TvAis z(uB+zQd1KfN~?{ogWSVTS_A<9CI1RAURqE!mV*pZ&-lTuDlpfJHKU*$&cPQ)(L=L^ zP2EqKIW7(kk4mVg=$o*T?k`k_5yU+#yJQ}a<5%+>Gm|S>V2V<+dWMVc^NYLEWPCx@ z;Co81N>vQ0?r~_tm6P-)&ZGd~IU-$2lzzXT%R@Fm{5pXj#y?S==kUq(>*zB{LgtNN z2^~HHAoTodm3ABHGb!O!f0Gy(J`7k`VR$!3i~kPc7K}+F6bD6wk)ZPn*@)+iDZ5Um zDXXgDMz$y4hu}@PP7=|8iQUhlB6VozoWm3lPSecyTY6iC}~&o?3dYUnRJbDYXCis*ur zirDX@u>xf&cSuldRTHQFbZ$5`X<=X?t(UG9PoA$F{mgRCxNE<84+Sj}(}FExn|NAh z3#NO?anUfZq1}o6P72!H$!lecQQKsePVJqR%oH-n%W=7?z3O#v?!-~>%mJc?Ov*_t zg?J&-IlwNB%CJ-Z*3I#;tZAiv7_QIR*N(37ZSr_GKLv-zRs&9D*wR5NaN@vhR!t`) zGduXQF^<^)kiiv-*?_h~+Ir-)dm%}G18OfY$#KgXGT4Uzy8DM(VX%LkOj+24#vZ~q zXvm>}*nRYX0bl2j+M5zkyYj%DL;1Kt&R*xqWA0t9?%{`f+6GktPNK8hA+HKGe(YyB ztiYnZC2UI%K#1jH8B?RH5=A_KrSZg-^kNM(*|6=A#OZMmJ*CrQ07WZd+Oa0<4Fim`ebb@D;ydQPAqj$xz6m&=LmP6ujRcNHK);GSFXg?j{OpJ;vxwoE_#YzRY<=c-7_#FQ%v*C$ zrJx*LA(l8+@qW1V+p2haq@rn4P_j$nXtJ18qqUevqXMZ$S$NR8Ir&oPY?pbcBz^Ka0vph zXgp(8%y~)0O8oKyxLGG)dC)!{AgnU9otLro8Y%c z6?kCWu=2vSq@laRy!#tx z(i#OL=zjbreJYhZ<%ZPfKM@T=C8Rfua}BzHzpZz?vo#E^)Bq1B6)$Mx+KICXii6fF zEHf~<$!)5-$0y;o1WH?ot4+lgXOQJw^uOZUFo_x$L4yp>WKd2@ztV#MtHO$eo!SYSTruOKwsBOY-E3zE)- zeF%(z=8;$Mh^IUxN&g(Lb0Cs)c!4G6Dt@5a7`ZDXdQ0RIPDSAFlgusOE3k!Q@+?rQ zx_>u$=rPq3r4ynx^@_O;yGwFkjqV7J^D{kh13BemLQ4I2_GAD~E^va1%xC&?ueP z;4}wwLfeCFqoROKd%I!9)FvrB$Cg4QB03`}2zIII@vqL}}3jm8myh4Wjt&da{(j7!&!vqCl z(qMMJ4yP(Gue%dFOn>&A^WmyC5jiIoJ4Xh|0Y~~Z7!Eq>2d6q4zYxq9r0($)d6+~@ zxIjKkOc>iJo|A)d@pG>jwWvFrRz-!|>I}|-gcS|&mG9ENk)8Z5`Cs8G<@?Rf56d## z`xfNNOKVdGO>Q0zBBf;#I)SlDfkNe5i1qyziR7r zG@RZ^l~QAwNr<=1^>IlPDnVBSli`;VdPY_cv0!TcllEL416zi+xpFfgY?)kICuqAZ(AL9|m1KOrN6l|L zw+wd33pfe8a=VQ$+^!O<{0SA*{)#Uma)~ju-5LT0Fj-WCyn5p;V06|pUNJh!t2H~s zM_cJGuuFRtKvp35=QAJz&%_WfkE|rZ?2$Xv0O$g9*8DWP5WwApmb{)Y>&RNVtdj`F zQOnPVJgLm^)8S zX#x(g-&q4-{*uX!oFq5_z}4lepBRU(#O@*vN^hK%-abgus+&;r%|Oj00t41N^}t#c zT~1U?z%&0{IE(E&JaUc2rY$n@6wvlU?TNagf{Y-R%7U|KP|)3X2`SaLLU+s|5X!<^ z3}iFUfp5^1p_8i>1;xd)(lE@T;UP1W5$6ep4YkALFI;oe(@-MBJ6?W@KaQRc2i4Kg zv|=!F2m0)+L{OJ^8JgTF#Fh<~JKyW->igbS0mwMhuC)v??%Y=+N^Q-uXaw+-jr5U> zQv~EuPAG}rO`VJ2?g~EDh3I!wyaYz;F@u7I0oy)chARns6kg8NUGKBkG=;ZiJDQ&6YReijNLKhaQ>axn0Z58sR z+0KMk)#v9QIwlSbDIl>fiy(!C?tChE9_a_z3rLW8HJPt^yjU#qsW(wy$@qgZ*gwY4 zs2OG)hG-f%_Zs#o8>&U$V+0a0~Y^6s_=BXUeEE1R_t$ zf|EjnbGZWuoL}up)k-*rfM27I&sxZSNN;zE_ARFcmr?Tp=>hXhUX9GMTc;g6-l2x%Fk}TFvveygq(Yhnl(tZbdgm(}) zh-}H;AD-t^GOl={Hb-mww)f{xULYwi{+p{m3Pt*_T{1mt3G)M{i`^nrR$FBuF}SJH z2E(6NU8wXQ?8S1crTdH!-Av7%D*$wimK_%q&)nDCj7SWZbB= z9PeTlhPUCEcF_eTin6XUc81@sB*X?TADV}QywN6%MeFSCcg%)LN5~V|ptJispd}6~ zWCk8cShw(EeQk>~n_f|$Wy1~hcons_u3++0OS{2!`KdmeP(do?bjrVfAIJErcpWC8 zG^P52jTmU#?KKF6R#<>y>d)6Q4~*gNaPijz7^cG3vq#Qpa|th>XJGMQ#oJ$ZJh@tixuq0%J~J61D;jAKw83;Arr75HReIgJ$uILo_t~w^!k=mVh(t+n5K2AIe!;! z54+1iHKJ@V(AYgvxt;SeTneCxRlVMHuw{97vmGAYl0jH?D3Ghg>WvR2RA`SLc~RUT zhGd>FX82RnLAy$i(1kAI1{aN3a~9t3L8T~1^|Q#4iQ9q^!@T|!=-Mhi2jj0m+VkA= z_=6c zv+^n9M4@zItgD|TiU)PP)`ENZr86_etevLFov5mJ#VvNT2ng(HlRahXeCEKw+2OLx z*3?>3{F7b(zPRIi=v6>h$)DSMu^H&S>s}4i1Gbg)fy5??7ro7e^vw0?l?p5k#e!>) z8-%vD3EFt#Zpr(g-dCSjkBd#3QL~>v+u(Nn^L|HJ?f;%kO7toA2=!!9l;a_59X(bk z;ez=H+&xjMZlkfiUz#61d+QeErPUI0>Z=vR3l9XeWXijMZMP4Z;&^D6`Mc4;SS>|` z#920$t*Yy_;=4Zj$<`-71oP_e*qAiAx}d+Mx~`|}NsG@ejI86e*K%2qP*&2 zl|{K5iX#=syg3h!g)t_G2~0g-SJ<}=T3CY{ELnsVO8DhdSxVwaPxV+jf6-oLZm(G7 zsuTlCse-2VQ3V|6ZWJC(=03rKw%UUP7*02lh{wrk2sM3xyTJMh(gTAFinkXHcrXGW zM^Jks1a<_^)x@sd)5y43sRf({4s9L$9;iCS*@SvdcpvVLrE<xC7=#A68sY95M!M8oez4c`af~Y0gg5L{0#$R0F{icL3^KE2UxL-w( z`@vxisgdw5cSQY(LoRv#SMeU3rwM_sHNYHb*dz<8z?pNZIzRK__6Hm9<63DU&4~ib z=ySZB&qUG>X%Etx;8$?eh+F;A4b5ytFn)&Lfzz|T2)U>+Nw^bmJnL8z0mN8#E>rTk z_e^>R8xs^g))d9d5o#GG)Ll2@hb(UmirUUy9zhKFPJ?u*R9fKHxz++h7I;-(*L8Cs zf83cn>4g!m^>c`y2^B^pD63reh+I&RwU9cIA{{t-OG2>&0&zt;!4(v%&LFuSx}_+C z`JsV=)PXu070L7_S;&B(A0uPp^~{N9KiW6#xH0vEH$k~4+B_BWHJUBkiDK+$tZQyA z-Fajcs!-AsbKi2-_edb>U+XWk8C_rGX2P5=P5EK8L^l|)BPrR__F%)z#z$Xzx=2AB z;Zh^%ZBcnc1!3`*Xhq%itb;8v&B`s%!^wkY(pB;_Pv&u)0&Xq#2qX5!pjfuM? zg^iGT*T}ZFE}SITwAt(rtjp3jO5U2Ab5(VzFu#1Tc7*bF{WSxN+&3smC zuI90EKz+aqyPS4~MzuJ*qYlx(21nz}o$S=4ubqkZU%tlc#MS9*sBp&WjO!74hbE!U zLIfU=!_8Ek+0Zg)E$|Pgi>~T&MPM~o%}>LpuFfx{_%=UAEjwDFQA6Cj7*x|X&??jcts-`-$yTM57;1l61pVb&8;RwSUvO{MYFcI=d1+mPPaEhmmjHxW+Sr$GrRT z6w?-MXEYr90h2uF&v@LR080?N-n$put_|)OMYidjffNG zS%CZWKU+&QEN(B5H|~+II1{!?2Syd-$~)r97Lma(k7rmp3+8e-Ba|Ql4IT$#In9F8 zD^xu88p(}f7^F)l9Si(K%U@3v^V!4hisk#ZJ2xT1DE8ebdh>w&HmyY8yY9@)xsS=q zTShbZr4TsX&kDE9_?Ykx&S#jwX5u=FHBK{y`1Bijtg$z?_NLz>*>tt6lIW6;&rVqX zKJf?jH@YOV>6ddj>?(belPkAlW}qZ3p~RL9{JUIe30&c;gJofmuyx5#&WG}Y%I?;; z!_MiMEqjpJAbK)x$j{I>Ts6!Syzz8Kk^#NgoMjO4Js${jH9z%gb*|R8Y-;8Qpq3p9 zszssdL0)enhB`J{`3uKowIK1a&X!c4!$E{4IxJGAzOI1NWg~2dZ`y~AZ`c!W*Mn?% zf&*V~CS;|hW+T~o^ z!5*k)Xq5fUCUPchz+j6s0}>kjj^`N0&-gru4Z+GTKynnh_%7Wp#|n~7v~CBh%?5B_ zH{rF4D}xY3Y7wwTiTGIl>`H+Y3WE?cLc8Y7O{YB~#p{aC^+PcTgTfo-6gSn$>A$wR~cAJKFZp*tb?VCEX< zGG)C@QM8t7X3QU@mhUs-+V7xsx(o!^@`aDZYi1#Zk?tFOuR-cxv(*p}W9fb{QsfUG|FaM{p6~QBA9i^x#4kwq!C=}VEfn@^GOj=ABQ-3#~a05 zj3tDy=a)k{xs%gcRXg;w_ljL2hWg2^&SC{qvc?d6g?on6z!?<^88^(b1wF`JRg3EL z?S7zgPbh6so5A4hTHwn{DL^<)wN9MquzT|tE5B0^t)+GMv!Css>M)k)Sl2QsvDcrc zLQR*P?j8G2ZF_;iC!=?PNTzcYX_1&gnBl~#iz*Hulw1&JXU`=Bhd@B*54?WWO(|be z3iZMmujJl$OOr376H86ALa@4yAXhhWmeR;Vu|=)os*1ohX=KJP49<^b3A}KKDq_3X zsqKVUmxrR8C{_`H*F|FL&XS~D3xtSt05^$zEXC{}9?FQQBw_;cE0>`jXu1ouja?xg z=DcSOoQXl-ybkXR_k_=8-7$&l3CdwB{E|eNK8^GY?6LZu$1tTgdXM^ov-UQ68-Z4w zr7ia&AD%x0d~ur^1#zW7+x@O}pVn~S=|*~bXG93G4A(fGx$`{q0PUKcxGN24gK{-I zV^6&tGYMlQd!aC`(j>PzACGlzZ_N6cinYPDSah2xL4?e|93o}x({*h4_eO20&C*~Xqx+cTGP4rY!L=Q%RdO?D@(Vs9oJkQ?*nC#4>z zUz);=o|FSfJh?H*ZY*uzI++^%4q~nK<#mW+4(6jvLLz)k|Cn&~mExQ&DAnp9B_e3Q@2>If~I!XVnb z2}y+HxV}!#(t_Zu!K8$es~x8DDCk~BUhHO*H^~g>+Vlq4V<2k#TKX1mC#gaMQYGOf zp}N@TzEHl1akf%?sxzm0(rf-*c?gCEQJ~;A)Pm%J7O7YX*V`a~!Z(g)B5NCRCiDEW z-U^)Hb981K&LlZTpx($_+3=r8S>`g;Gw8kVmIw}NO|DPUv*1GvYaN?( ze~+!(zdx)vjL+qst+&Mk`91FbA+;$&rHVC_dH>L)m=-G?^vU6loq*u5AU*B=GSM?S zA%Gie|G80ec)*ypEfX=OKj$V8K{@bK4f)uOrI!r}EC7Qd4Zgdhc%Rfr=zVnxQ-Qj_ z_jmh>{q@YA>~UV;D&u7`>V0Cw21V*C_rsvf?QSvC*2+y-cPN-bE_f+9N&>Lx;!(|P zbIQ-R)`lRS{XiT-#bLw9`XUyawTTm0ECFV)LRbL!~P!NBhN%3 zEWE~3EB>;TTZ+3L2_i}~M`ER=lsoW=;HW`@NIk4#K{~1?IAIMq$zubm3f1qvbg)1> zirx!2h^Ss(LJ`dE#yHh+2-{dV_9vb!z@Rbjh-5pKY?|v}97V20OZP@n38Pj#sT>G! znbx*$(HOsuq!>ovlpmJw00e$|JBhpAajHU50RD9#9gFM~22ifaAK5_dTF(!!iW60P zi|dI9x!l%gFHJLIudeb(FW{OKuJbP}j9vmc7{F7@2JT7RvH@q7A&YvOwG=c$ua7s7 z1PqV?#?!)06=^zD1+{|Lq@xIkR$JLy3fHh|GV*XD@GIeNBtiDXehSu;y3&&$Pxph78Ra&(fcVkqVG=ec3-%H7(-kvmUf)l z2M`}zDCQQWlz6ywaFsb4(?fV%OoKpAy@jCFC}h|K_uH!2HgtBZDvf`sm|jGv8sizq zr{IrM+f~enRh@AYDY?_4zB8O+-3dy&9D0a1GM=GQDUeUkgqXLQe(h5<&<7=6OvX+H zXinyCss0mY_VAHEj;tAZ8R{$%mhZ^Jhuzfy`Cs1BwBtk-MPHNnSl8SWZZZ)p#9rEv zPSvRzqPH48_bTH>h|`{)e5mc0dWXfF`mPo|I~5&;OKg1k5XdYET01XFo}_3Xx=2Z` zE(t?!45w6;nCgv1zi7U{f*f&4)@72==%agWQ7som)y(dDV?~CkSixrq8+hsO;gAl5 z2+jmCD2NnIe__6}=?33|F6B_XN(Na#47FyeCQW&iUw;8JDFkF<@(L7t@L+QiH7&rJ zCbcXPb5aRVV2LV-6L&9y#sR{fH)nzD_z?+uwp-Uvqqm|Nvb#8Fv@dy>TZVCd^0K%J z0>l8fHvF=0f&e*4r7+GSv`Q=)%j*?gSeUMNa_70N_dnd(m&xwqq} zIpsMr6^YW&BmW+Mr@@(N?@{V?`97pmAJn1fnI0guzsT^Rt}2=ZVbnHN%uzAWzhAb0 zJoICf_`6j&F*sW>MRIJWT{WG_-?u68=Ta!4&=94N|fsQ zet6NQntq7O96NQg@l&FM-e@OwLuH&Y50g2pUJgQ(ILlVQ%F=o9dD#3f)^?SjblaIZ z<90Pz5vi~dp%9|qzDAq&ei49nOq{G%9B5$Z>OKcsXE3y!Opu`;3gMNjVg6==^D%;e zM{bWzz+`wBQcVJ@d>G@U=Hmi#Zv@gwA*g6NU%Dd485`41mdcCAofXkh2;x#y1d z1p}B~q+w;ASbodoI@J?G!&7Ujy|#DUmBPdj8)yR|e-OJ%`F0Oy?Zu+=_XBaBDZCt)7HxIB0t1BJW&-_purWC zJ3=ex({i8}@zf+7KcI0=Irv7twIW#_GrcxPciG}m5s4K-C6;ARg-DyksC0GgFu{G6 z67Cj6qp8%g*-KuXNOOSwdIf^N&v%~F`0#4uc!g})12Dq>`$)p`(F$YU*qVn{=3SHB z1lkNs&kO9Wtp82x+#sm~HJC=0eK9+?F8uo_4g0A?Hog;A|D1K?LT z=#mt1cgqtZ_8d9*8Hc~2mt*jCXk^1(d8_cg9{!G>D^99#InpdoR}GY6g*zPDCnfYK zF3sZ3W~y<$M|W7kfO=qpZfy=8CrDhi74?C-XBqly&ppv1||kh zgmlaQqYWv#T)$$SOX-2aOj^rD=v&&@!Cj z6AA7ip;K%+cEOR}>X5u{;c5@FIhZgWPI?r_bX}3g|6}ePfXz-Q zTefZ6wr$(CZM*vZ?{!2Edf1bm?AUqo3{GU6*qIrb>syi855kD`71JrstSb+TEi=ev z>maE*K4@bldo*Qp=eN@Cmob!h2v?1vcY*G{?joVCApQZj5$ zqyR~df1FzWZjBE;&zyE^LO-*UKf)+q-)|+-^WFX;t*}rV30K7vUK70ye~~sIWl4{7 zx%o;yoIUsQQkoLNLLs?T$7F^TUUfehO^kRE2urSNg?e);_>uV>i(a1J>_IG$FL6ih z@mswIj{Lq10is(uy{-0f zG6QdddvOs6{V=Peux$&k;RvG~>~dTB@=cuV%r4%~ML)beu!I!12pr6Zqx#VPB%|Qo zulRib{Nm$0ZS@^zZw1<$zlIBSMB!ip61+Wl1Ao_=%ky&T42j6No{CU@DAt#Hk*MJx z_;-X(kJ?S1+{=t^Nn|ZVd&AV;s-ipdbAc=uXNdpTYP9|&4l+WAi0}K4! zU&LRnaT&)o(}5hGjsD1;bAxjuROP6~R{UeGx^%TU+Q7?4w?vJZM2@|zkJFtT?Endv zbhguQD6P#wT5~GAn#_rK{%tm_Iq3MKK7Qyy^1v_xh~)ab6~{QgRyr60LA(!Z=q|FC z5!3+dpU`b2g4Apvyn~d)&~ayexLlQfQLwWMixp^(o&xt25slr8dg2MOboARcpumaz zKZtJp!v3cIc<#A5{6fZ=95{{E!fdESVH->2xVE-m#G z8&0;ZEAX!ob2!KQ#)gS|r(NI=A!k%jc~6JM6!6FZ6rIAhkDxVRC&d|E?GYL5wYvg! zV>Xm{^1-FfR-Rs|tlAOj@JUb;TWe5`LMV8zh5i?%Y>v(o{eTWVA~%5!SrdBJb_@;) zJ|u=E2t}%Y27+PYHJ)N|t9<6Y5n4GY)oMtVRQSWG}?$o z9s#dR3H&`sjtWQ#qmegj2uz6g7>$yVj(_d+k?NFEGMWM{Yl)S7kQy%x-V{Nsm%_Y+ z<*|$)$NIPX0$nu}X>){9&gT!0VmFcPz|bdzdkHw`%HbLz2QleY6k?WVw5bQEruMVg zQ@!A$ed4t$F?O$Zr=gV|GHrWaccPygfnA(jLexGk;GrQ2({#dREb4=c($J%`ZKDKU z_J}rY&)m|Sc0ID&RHAtzblj5TpDHa{R;~swEpPkEp3+0R?zOc*BUE0lz9E~k?1Si{ z#Vc}i&F+;lS6g7>XkuxzlP~$ZX(HCO^PC!Q{%tiB+D1P9LGU>2VFV*QoQvtgJSaTW zlchc%eaA4X2#4m@MsY?6Pqj9)TEz-9cH!o+UDsV z;$Kzm#TY-eZDJm6TtN~Lk*XL*5~pSYL%p$c-0^XW{BrLmp&|;_a>-)-bz0#xMCQ3T zViTpqV4tSwm5(|Ij5ld5)@;k=M60UXI9x97YuDJcTxYF7oMcgQNNz^eI)#@JSl>oG z`hn!&$9I+7%`wFUwSv2BVW-uFp*2ox;vx+G&fQ9OJ!G@5TkB&#$JD&q$cHU+kw`JB zVOKWycg?_VuJVbePyVnnBrn6OCH36V`r|?aomj+8YcwG9>lviSpubzAF(K`mr$v;pmuP+PK&TAvkPYbuRs*b0Tb)s2V6<8M zBb9Tm@+|j@e3v>F3)R;g784qli3HJQ)9V^utF=*4dwqeg+&f@S&*J0=dgOlMgy2|B znLT~Dl=z)}OAy-Y3nGZbkq?$R+kiJf^eEU@xM7-DtJO{U$yABYCDt1mg0j4u4CK}h zk6#N{EwZ(#vTWx#rIm)U$Esdn?bSDda37++6*q+wI7Tzt)(l^q7n1xnRnmvS3TDf_ zinpJB`5FGw7izC@rqgnLX_4{6;~ggyrbkV61ZktBp+ZN%wQ9LG%q!P;)p)(6EQUI} zT!p`{mqRc>O-^KuO*Ur9r#sg`dC6+qJ%EyM3es?$Zs6PJ%>(KAL(eQ(o}D4msG$YU zp7KS8gOnsv0HZR&L8|nb7sxTeN~3OO0|?v;*iG}`QeT^4&uIbNd0T}rRVB;p6&l^2 zO|Bisa9TJfXkJ+*T?EHQ@qAr4)h4vISfEGPqJ}X)^jlC@?1(@$hXdDklRCqkjNyIw zCfx0!CdjjZ>H_mY6eIpXg4RrsBs8Au6j813Yg$~IYLt0`!;lx%#R;`-HUdPxOl|rD zY(cLMb9*l{iMCh^kOsHidEk*HvG$Yy^h@~N4XF|CFGi%cBUHJn*fw6{*AlW+$mGq_ z?2suQ=l#qPyNdgUm&T|OA`i<=Je5w)k1VO^1F_|fvfXC*W+JEo%%Fg}Sy}@5S?c#$ zy#}A>O8?WHD1`z3kY~b|P*5&dMWypcLPn~{AVdqzk|88<~m-uM#*%X-8HzZRQPRcHIknf$j@_Q{r>84?`uj z(ts~ ztW|&c{qv5R(j4vmHGh`}1q90r08L+ft)I@3T9 z0~5;uD*1`TU*_HVap3dJQ3kx!8eCe6L>~}nlHVRAKYHY!avd5Pz*&~60!PP9)Z_@*X2wAdk_L|}#HO%74_v;@Rkuqkur|{pci$K7SOk3`_?^c3 zAvTYZS;5%yxcC;fcWUZ17>OqY23tE06uubZoj#Q}zeSuX#Dx$r$RTkRF+i-pg_9~O zQT`<)g4~DK=^BRkJxu%djo5{ERzpe!`F*@r3+V0nUB$7`U#m*ZxkSwtP7|mM1_4xZ z2pG=-ledY~UybGD)Kz;qg!^Kp7lK9!3XWk}6-Q;)<43k>bT7)`;T4d^;%O#NG~#>{ zh1=2VKI|WLMtiz_95LI*$)v_CF!rH|R`vUkb)d}44B+RyLA$$1*t9vD^f}Cq{AN`l zAvyb`e@w)s-VQQ|(;SUkP@P*j6WKNLBSzy+&L}g=l{-G)`F-|dndq@p{HdXputjkq zoz=C->#b*lO}(>{E!~vzf`S$AF)2>NKy5L+%*IEwn;h)jLB!q=+N@m(6z3P?Bq97A zE$}q_l(zp0>ia?u18VO3?>GMM2zU}F?DwA>q%P0Szu<~zhXQ+C(C%_;7{ou} z#Clur$M5s7EvBLo1+O)IblI!q$?bAAH>4daWKP6%zx0Z+h`a#oi+hk;BOrC;vxT)2 z*{JjRxMMnRiiKqg*R!BLDADi~fXT6Hu}FV*$E!E_%ZX8vM_QEPInx&PeMCtHSAwaI zd#&H_EzHN11stfWl@oj1;?EE|54I33i5g^jvuSDTS0bO_0 z{;#a58M|lxx9?>tP9Xuuxh^ zy6$N4pfMv1J1o=>Hw)LPh#p)uP0Psjm;kzpeoF4*B~6+VcZVu11$-T3rgmV+b?MeH z6RZkHzoC@{lQhcj9H8)6rQYrl$v~Ia)r^(4yY>vSeV9WY9lygTyB!t;lO-n;@4nbF z*n82ImccvRERI0PWBH9WsoG41$e^E96U0mP6WZ&1MbOqg+|@1^pv#h^JQSnPCTYf+ zHQ45fDyf_K{$rwMj053EDNB^PVdz}1_IcS`KgEoT3Rk|7JB@JMK>Y6AZ)ECI3#e{H zzuB;6R)s2^t1Vz9C~MO!>%7;TLHBXmo*r~Ey#&#`=mg`Y8IWR`K!2FE00hx#A}*b^ z^lh0gT+zj!;pi^3##F&oBG1nGEssZdl<_Oy^?sreZ*w0H&8xD){o<3w+IUMMAmU*% zc}NANtwu=|a0vGjeNVqqlPzomXn4IQ9>c>xnVT7vyK8cr`uIyg4pA|nepG7lK{Ro5 z#D8AD7oQ4pq39-Y1Cc$(u9R{BgwF)k^U`+es$@4O;vRm)%f=P8?!RDHvIa(&vPBl> z7j%R$aqH=oONrY6O>SB}Od&<<<$BCtfG~FG*>jzHwl!!k$*tqB8;6e1B%CaZ*$!Wa ztr5g_YdP7utkuJ%e=CkHNf{Q;I%k$g^f{$b-wWRqpvmr~O zQSDD;sH1anup)t*l8^>Yl-Fm)l*>sxiudg*{yaE_SPyT(&cAB zq~6t{_P!6lP{*(9a@XymlTU|wolD>ahgh%vmW;bPuP8qG(47IeAgDp5DfX<*G+Iq| zP7Li1^vU_6L2@x(ol--g?^t#(H<5x(t|Ib9t_pUJy8||8J1H|dc5ouF4Ild#Cw9hY z6J%hzNb~tE1^T8yQ_DE4V#QE-GrLW3)v7GYOC2k!w3te10(}zSG|wG?NfKOPOv36E>Z^N2`MVWI4&+j1$3rEaxk~{u zA(o^HbZfF`0;){{x3iPFJRlmF_~YR;9+GC1SjQJpoL?gyhZzxip50)6c3T`ulztyHBcQ+skB8HZhi z_R^x|Fuk{LZyO{m@`o=0T!Pke0nIH@ow~%zCTLzjxh=grULQA}*f@;B z1v4*T|8xM$$hHOcAI*&xJbe$_#`KvzSh=1ll7G5_ZdJokZ@IIEx`WfCx9`gXn9=^R zMe2nt9U{Bu&@=&1onu#G6i1X@9C7h-caCzFCbb>9Ts#-6>fRk&27lXDSI?2d zZrw!HKOhoB7?|7NrTDM@^a{Shx|`rUqNX-yw%^@VGhc#P(QjDbd~6T9sG7iSo3w<( z0>?k=Xw+ZHE3ZGuF-%|J4g+IeAEuZ6T_B@kTyv25@-sTCZ#L4+_M^6NxZA^~lwZ1Z zNt|HpqAWQt{7J(c^5dS0x~`Z27q^DyzP9ZtphEb%qS1;W ztzcj~5gE<81Rb;%4p`3KRG7!+t=+oDkYTjPRvVG&r$Riqx@sq1757_4wewC%^TAwQ zP2FfN=pPl3N=THWJJvG^(ek4W%0wp+Jw6V!ymmPV*(^Qfs$sxGKfziQQszvx=v?-m z#v1rc3R;Bl0U!9W;h2281MR{5TubH#D|{50hwFyupuOnuk3DA2C2sI2Kwme$z)Hzr zc~NeBBPe&r@2q6+8`!B-|0F=5Y*k6#mx}*<79A)8yV?M^^z(Lor?CHEaZ? z=fc1yyoXuBLhDrf04#T~W;BVV9VLTR*xu|ANhi`?!C3l`*mGX-jg2^{l;jF{&BkO6 zQ4ZFWl)pXdvui)Po9Ue;w~yhW>l5HHlr#a!@1bO=*Pv`f0o@dxX*I)M{%5Eo#~}OX z;GcDP7;{rxxUHS02fPmtJ8$C6+Yg=hzdN(al&KpQSGP*jOUGA97v<$jqKeBbeHs9< zZt%(|-`C)+gi|}i{r6hQ)wX~ZTDFS!GUhXbx^E$MRwd2x$t)}v(fNh=T31x)1EQ_% zDRCJzp15em_$V7j!aObESSsvfjC!^;ej&K0EX_54$`!tZ^*#cc*SZcW;)QHD$VBZ4 zU*Lrw^XAf(9Oy&H#8Vw2ja1?WSE@|cz-bB@Cb@VVnf zbTlIRoa!ulh{+DUJ0n^nfeBTdNRlLzqLI8a_A3kQFmPK(8o0z!k$pmef0f(2TtsZ#JQICHzJVGf@quzs|2=E5GUJkfWa+yx| zYVjS=g9+_np%}-l3omHMQi14MgJ=6v4y)9l5yM9uz(qh~dx+V{PP7$?#Pw;iTTR<&xy1j}d?SoDa5m=8zw!o7C4l8wW7TgUnrg zzb0=DGU3lz@N^SX{{Ofkp)OZDqJR(pn`<6GSk z!8wy=%;A!fwu*{X)wKiHQJX8V?<3z+LmjjME7LBF4s1l zKw(tHd(Y9p7vY~2c-pf^zODD4lAS|Xg3wD33&cgzXL^nEbRO+I%239PToIQ}d*zWM zB<83Wy$Ik2O@f8rzGF6+jirJD;JJGXelU8g35X++;NWNKePfy2q& zzNUnAEvSpLPCBwD&0@7(wFTwhxQjX~%uv>_vJPsY-?LwrmbPgnmC1o!@t~&`faL*f zQcKU-ZEeVF3%fvXUEwT-Yxx;osQVK_3K{bYR6$U`7Y)DPV?*PqV+tSC!$}aV30m!-Of&RM(X< zY(1oU*am})_ThoUho5>BQTRkk(no&>in;-S&~-71nNj0S1)4HoFYka#!@lo<0VBZY zgLNHAv>~v}G7BM2+%em)y&^MjklVaDfEQg+)Oa+dA>C0b2_O@=s`}azN4TRa;k)6Y zq2q9t%Is@8bDNkyjDora@-0{Fs$$Fw6PiO$ItQQculE*w1XCAyQN3z8oAaONQt(GD zB*Fa}E?QMn0}o4lc5~!p^XID`HAV)%xY?6ruj2OGz(b#8Z4Siq+rA{ZGUN?GV|{^a zm2j_jpgqBbybuz`LbPk!e#m?XdUu{3#cozULgViwzlC0`0lIBZj*sWgyIGzN{YO@Y zV($Gyz|IA^kD9>{8D}W|b?TmiOfI1B5N%LhN?fO)cO5{qx3wA?9M1{;#W?aiFZ9-2 zj!s!^QC3ztNEL){xGdvsF~P6Lk81$%e1hz4Utn~HOr}Bj1)JJHDVoJ{l?gLk_$0-D zt3+D^#v>se-I1TdDjk(olLD1}wC>5BAO!DLBCShNSTCgOR~U7sYvv{75~Z79tf&ueGrJcCc;DMh zV!ej1k8$Cc1?`~fdEt=sJBj4G#4M!xsv;QK4USUypGiR@n)K0ryNg!$Y01|S1>U9p z1UYGO#v`2j%rZ>@pJfG-9t_q4qXU(^75Q%dP&0~k=za=8BN5|mv9WlNhqS}-Q7_WC z)$u?SIhSz^a8n=u!Xpt~$dn@?i_rN6v3Z#Bj=x-9@sQM%jml^1qWPIi%7EaQoz>00 zyyh~ws0zs2Hr6L^3#UE`t_2y0x4hqO_lo4#i<2jkFkV_JrJGp`>WWN6y0v*>+>Tf^ z)8o`w5l;p*T#E~A{+Qp|0STQ|ZI@XgT|^If#U7?vCKo78FU+ai2L;Msm_n}dXen*N3CjF$bL+#p zYr~Ouh$OhN609WGj$jY?^urVFZe8h&#q2*IK)Zl70wCy+@$RG8AW74c4;C;t0A(W5 zHj1M?Lcx5nSi-6{HTu{Zkk<5J2IIp-z zF$ug}c$9UVi;|oj{ZWJ)u&B!HdF}Q#$KD3V`~%U$5Iq_9C5K~QeaCT&60_x{zKzd(wsr{FVWlkmw_lG zt0oQGuPzJ0Hk5-h%m~mS2$2qAk@FtX(;^}}U*X#@VZ_yO?K(;%u3_J?KLW0vvNR5x z0i%n+!yaL={e~j*y@>*~(UdK#%8I!_L!;Y1qCX99;ax!IUFm|%f+Ae#|kS=O8#>I>Y5}p}H z(q(uXSrCfl-5;4lQ+!NSf}e=H~)AL}5;RtnM@s zz^CdeF@=gJST^b?MUvhIiOaou{-#h8B|4JE|q zFUyM4n%!FzsenBiPW;izm-Owt>S}*y9d~k+>=kdMHN94S)|9ff>jspi~L0I{*6E_Mo2 zf>vzlK#>76DtfX}$y8z@loG@CnO~!P?A{JN)Ca#)7~jkx1F?v>!M6+q#|*KKNX5?C z0rYeLp2vdu_Qf7&rZ;Je6FzN{+ITyf!C@JB+C)!I;4@h}KyUhC>@!}Sj9`;jV08JD zf+6fG2pb1zh{N`1q{am}b+^~#%werF#Hw$^=aJe2T^yfb_uE?WwwIfJDF+Juf#kyx zZ$M(uanP{X)YUV&$oFC|i*=v0-W%n4o8kr>e1VJfb_!%vbI-x(xvhDj3o?WB36vPa zRblV~FMN`q`A1W&9PS^5G45)=kxvg1lq{#OE8D&lP}6|$`nZ)U+9ei8u{1w^zXf!~ zHcNI`vHjvU7cHu_`!)ye!y*%R**ddej4}*SB3jN#{qv^^E9_|2A%=~(Th0C98VyT3AQ?wTx2A}s`R_M8TEhItgP8b_BB@dC4AP@@oDPo!x zh3KWaQ~f)RNXMdiy=$42wticF7Ie_2s&n`gL^a5_BD?yrpCzv=z%`dP|2<@mGD=B#KF>{Bb*PuErv`(b zHJrc3Cslqkm@==3`40l{-O|=oW#C@m5@lshA20a%_FtVuIGLJClTnI6>_Z!2X#a-4 z;H)k*IpWxA6!(x}#Y5#(U`Km2zieJp^f`e%7U(K0yfe2^Ogfmn!ZT&w!0k~j*05$pR5u`#s>yY!5o!~1*^?xjY zEHlDIO(sbCqIJ|64a>2|Y_l z5UZR~mpBUPYcQrD`ax0UZ&mO=iBIx?6mzvJJhM@Bux-```g~ z=yo)ZCBjX?u!p@>_MCRa7z8F9!-U`YO9qgZ3G{hxENXZcqX5uoYleebD1BIGg4D-o zMutToSj7!*Lk3%e95UrO3|x`zPCk4cI0}b5bTB!&p)m(o(HO3vC#M<^r$SmQvu1xQ zgMoOIo}zn4buoIRr+8Jhxsl?8z@e((x_jp^wH^(C#b)Gg z?21i{I^8m7u->BcCxXS=in3%eUuPa2K5{f5{# zcYvlny??OOwc&9|!UumqKCgf=$rn;&HKI_xX9Ku$tm4dFMU6A8QLXH@bljRA(a@a; zJNYPYj}Z#ieWBu?h&eP-Udmd}faRop`<>(WoFb7IMrC<-jb~v0pr;R6>rZp_s$0Ue z7)kh)bp1HhHf0B2hR6+2tz_9#hi@5@e*+%3q-)8Sb&JjsznIuw^dnIYWg{%wC z?#K@`x6K=*&z@<^aFZ>+^2m6a#4juH>H~{ukaj?F`=@1})$;*O&_1$g+Wx4?swxEvwWDBv4?o#ewl_euX`^9y6a^6kjR# z{WLYMPp-{xsU!Eu4l|>%aXG7Fb6DZlplr?)U&sW0Zdg->gD_pUV@Lz|-g+*;M|W(T z-6T?Of~cL7`Qd9a7K2y9^YZda5!(ddxtPQ!Qw5^bs`D7sa*(W(#>e?|20H&G2Wn@i z3}0(wyu&HHFOzXawpnEYuYq z>67nNifyKa1-1BySh2>a=>-58Xt%;^n%d^4V-)?4eq|KXrB~^qvlJvkQY$r`CPvX& zk9&L-2hzdYBbl-0d!x(1l+IB^aP`I02*7Yi&sy3V`uPmo0TbqC5L6n1+pm`5j??m4 zPsx(iyI~k#>OA}SYWyfyL`mh~8e7lCI8Em2#n9OJ1{2n(wadFX2t`2Yn{5WO-R19+ zFn6gbnkB+uR>$2(#v^a3dBF$d3B^X}%&lWz0gKRjpEn1jL*cy=-8yB=vaKaLTE7$# z_wLH;fJg$Ysw5OtBC3>1WqFd$A?{LCteFNT3<+JI>gx#yFN!an#S!G=6j0el4&TE$ z5*|-G8l2q(#z^Cc<66~4!JrizTGr}uoOm__e&lq$z2INoWw1mK@vR9Sm-R2i&kW{iT zA%UIJa4{oryb3H-ZH_z&smj21FQLg)%F(cACH)eQ&T7;e$gvn0*VE}M22P3~o%fVu zx2>rjPqeXRG+GUzv5sfU$996)ECUj{-+569G->t+5lMi-BSS5&S2sV!wXTX;;kX^3eT&dIG;Xp{Y1=I1aq_#wPT&rdjdpRYTt zjBd@2m9vv;tKz5V8H|Tx)U-H3GIZ^f039<(H?Ri~ZKq_NUSNUHVF!;|Uf4+l|Q9W(7G4f#Slv#2>s9JNGbQMX24# zf4mdIPUlyN*Z^r`ZzosCUjoF(yjgqdeUqkARx4}QF1^+%e#^lShH;JTyej0`B%Xs# z12a^j-(_gg&8>7`Sq-wRG9?_)|ylSGUOuxn`?ZKry_vAC3+zQ+V{fx z(FZ4C7tzqSHXhsgWRK~=pwd4cZNgr^1h48q9TBj-vcv$AH+)*E=H5PsXqS^(KUs74 zOeKlDxKCX(J$70?4EC1R!@w8p(Os1x*e$b)WmwM0W-J|#da|A8^DmU7kXOjhdwV6g7!ZOOw(0G0z zc7G%F$7L5b;|4?Y-gfOeXT_tXWM_!r(rCo@j(hrttB0a3ww#gqE+v&GG%Hc_lFN}$ ze(XwgJ%s~!l3K^w+`ZM%7SCh(4?!O|^aolaS~v!`DJE0J1wZst&j3N@w$5Dj&~lPH zPv=wHsQ2aZtN-JPz7PKa+(7{g{09Vz`6Cp(J$n#;s7(TYD1MH7q8&>U<|S3+>uhB9;uvFoXVAUJc0urEMMVojZS z3=ih{vox~8Fe(PP94H=1yBg_OzGa-XU4%WyUF&hEq?mlzt9lpDxY=yJ&tIj3zhOxj z(=bdcz}h9n=5S{>ZVlA1`}Mep>Wyt#UI(NX(D4<7R@||Vsj@bv1xjL%jj;f*?iM#! zPe0JrlAHdd?EsfD_D%7!j&T&(c!8qGqZLXF>o^EZW*1o8m2!dG$9uo5VbStH`kF#S zA^d}nszK|q805dZq%+j18c8C3eunfM6q=W18YjFs`LB%JULP6`$FCmhQNV-R87tI( zwtXZ-G{0xKwcr&L13pW8Q1+MNXpe25v>3cDhvC2|5vJV_4?(THfJi({!xou5f83!{`ws z0xF%ho@=hwC>by5(gC&(V4Czdga<|^$EuJ18r`~*1K@{I|Adys?8kG|KY#ZaRMYc} zISDkX`nA1!3P_4*!GwN<1`W`2ykl~~NkHhGXe20rC2)3rn68K1b;_Q#dzZltVOc4E7FH{yqhCdB=lObW~FFD?L7|eK632 zAGzJ3Xa&A>!kV1MzTw+7ny8aUN|e#=tqog91e3;k?xD@Nf-F4(!6^8*o zspG~S?U2YvR7v>c(T@7}vmHBJx6xj>ROZvIQSnuIJsI;-Gq7a7kz#D$c=0RhUhJ9-m8W%R2|oJZ835P06D+^s_6E*f&M(N$GE-~-&NFI?%mt!A zjrYS&v^UdX@!%^%62U6Tpbt1b7D|~T@*>xHAp8D`)(H7xoa6;8I*nL^%|33U+3+79%_{kDLmgL$p=?7z?=EL)>_NjWfpq#L zL4hYo?>x#mH}7OU`Id!pp&uumo$fw+(WqD)Vi&p*Pla#Jw{@>=9M;%J>T?LMyEis- zc_nuDR0AzIi;EX3zVY}Avc_Q`+qhsH_ZPx=@66oM=pxP=c!A{X7kz~B1|ch}VG>Qk z|M0s!B>cfHB1|j4PLXQh&Mi3El06DNbq9&acs3J7k*YBqZrl;w_>k$0xGOvE;vN@yriiFUj!O3e0uhw1sU(RQ)uvl-$?mg{s=n<9uptqjfgbwQc4GQk6#hw9GlhV{hm#Y)#On9Dxi(V`oZ2C zb6w(oCmX|+^cL)6eZ|`a39@>a!eESU*x4V*aHQNm8%hmA>N1_X!$`>|SDMyJpC>nS z*VO@KgS0!ecn|M1G7}AHe-vv6Kkdhw`#nt3Vz*1itmL>KgH&J`ysvN*&bar54tMB3 zQdM>aW6jl*F>^KPWm<6Qa5+A*R07anJluwy8UekL^=h8KSxM0 zP{o$2z%ZLo4&;sXF})C*jjcswKBY&eEtqHoTVkVW5km$A>0emd{}lM=k|lLgA4A%U zdW>AJ;~rB$B^$}LcgnAv;z+xLyqW^8goRE?^;T@Vh%GAeag{G|ps$SBWC0UE@eg+I zJf!asI@3AGnxEDOe4I{$?N3RM7@m+0ETJMpdpsW=W5T)tlY;$bf@XAEz2nweoVbOn zI%bZww~YO~k`dG+KxC5E=RQW7faKASzo^tn7G!~4zN1FSq|*^L;pwQ)W*$t(-IDp? zhzh;7CEq{BMOY@AEDE>TM?Pm3EpnbCOLcb3b#fRu`~te1Z|fmnJ6iaY z?&{$EJ+BUj!4u5o3M7y#>J(KT-ScQGaOQQxwtbQKuEyH(G@{3#`KMD`9?Yn*L*V7S zTM$f!^d$n#D)iswJ^Qt!y`FMzqXT+zZ-7#tb+-QaEs+dE`rC{)r$}q$A~NhI8!G*m zuCGZbbixB9|FtVn-&Eoenvze2qulvw{4ebcY@R^wPMliGj8sl`IiRryMqM02ZXhz= z%yw5QWF;j%rR0+pw;cNl6n87;=jO8Gr>5_1-eMkd?V9)o4>p3Y4{$V*oKi=L6o16T z$JkqDZ)tSN?uu(EgvL{lk>QXzNaE>2SfbfWrDvx-V8GiygB z67h{(X)74lDVXE^b{J>kLjU8zu{;Y`tf#%4YyR2TBg&&^M{BZ7M(ESff6jqJn6)x@ z_vZq;N+XfJ2Di`G4=F^STZ~jgYY*O81*>8KNvZ>P(8Jt$+<#IIKZ_w>VgOFT2Vjepo?8;tUHuE-%B40r_8+*`lDIeYG633Q1AN^*?=H^4J-i z4=6V@HZT)cdVvzr#I;XWa-F(X%c<9M){rlw)@vN(ro6B3z0Sih+o{-jt}XEoOKCwW z9+>l?g2<0ZpmR9dj~5}B=zwMk7@tX0MxHvTQ0?0s-pRS{I`etA=!2q*iL)gt+|-8a zuhB11_bN7{-yO1>VZX_9pK)tOQT(Z+LpmwwQtW?@C}b}1{-T<|T~r5gMB-o<4y5(C z9J1aPjecEkVQq@R!TseVk6Ub*b`k2_d=Pz#uRf2CoH0eaC;x+B_|o`P1vaYGg=Dj@ zcK=a(0QLvs*~4qFy};ra2`=GB&SCt8!V<8VBdQaO-Idv`gW@AwbUE*XnDp_P_i^yc z#~5@Ml2lGk%A5=h=;2ynh4L3_R(WNXUd#0 z#RxP5h@xP#UpU}bsU;y84Zzg-hG)?P94UM9a+Rx?mJxqx6|lxh|4@o9c_*ae`k7fi z7IP+kmLi>(CxQLT5n=z8KDQz-ebp)Q`|cFi@Rc=IUSOvk22&Vau*-$eIp}Eq#@M`% z=KdH}=E0TZmPNzYaU_z}6Vt`swfg)$ET25`Hmavb2XWR9pQAzrW_H%hb>Ya|{C`xT zx(b4cQnEG@Qq0;lN)2kP^884ip$GtQ3R@oe6g&*nYJ# z;;p#$he#^^>JcLU8#Jn4sZ!Ff`E{t^qX16YX}y`GO5XT8okOw}4Sq2rD-h&tj0FM7 z4-TMoMsu3ODl8v-1)~EYr9e*e4$zs7K|obE&)5x2E)MCIQGNLq=GGt{8&ZqabYw6bUC*O< zgrxN*4vLV~6Lj_p*v)rBz{(ZOxj<64b}*zI^}bjWr}$ki%ILvdc*4xD#25zqo(BERJts${IfY&;Dn|+d2fC<>gQ-;MR!hG+mg5nWY<(LZ1iD)=E)gCY*--z` zA8AntRtC%TzxmU!Z4|AifH=`JoEHKVq3Vkh>B5!#c8@JI6JK3sSErIX%48Uco9i4# zA=pUO3?Dy-`E?Tms;x5!8!Gm$#*xPU&ezTPmuF>~J~m#Sg5&O2fg_oOIuI2RW>NI! zx9}_q2pZQvfMsqV(4hkg%r<8!QdGP0)##rWIsHF`g^OsdZf5US_o?rM2B#;g1mkVv zHkngjl+#>6(Q6Kz75QJ29{B$HRf1ZWa_Te_fn$_nytL#PMu9#fA+-(u5~Ih)+x`xRlI z5bgZ=?OpuE4_Jx!zNpC3!Fh;m{-Uhg{$sY{uHUqwE_@>3FE4Zj@$az&QklfvEEAPU zE8vX_9FwwgoOX_c4n`aim0_>2U-(AX-uhgR-+q4MCz0GDRgJ9*jw*N`*J zWSUSL5pRE^?ZMyl^v>(H%rO@H9Z_lPAo6t&7c7E!NY0bx=Q{Aoi%-18su9G{ik|mY z4*wTx=M*bSw5;oC+qP}n_FU7pZQHiFrfu7{ZQDF+?{jmL`+i5ijC8s?l}V9}gno-rl z6>9fErD-I-FocPdi_~-ua4^3fcP)+%OWpJ!J2Et7E%E6fkV-*<;X@?OC+YU9ajXaS z;mNcE5ya&wdeZjOD#Va=3^*bp54%D)D7=F5oG(t)=jRqKs3sn z9IZeC5I>EAwt9iATP2QyQJ5%;YW=#P>g zxggvp3vJ-JT-JAdqG{BI_a(S#&@xBp3C_agv7pKiNuZdXLidumO^tcQ?0b1=o%u%( z0$L0?k5*i8s1^Ht74#>nASMW?xrHY*I(~t?93CgbuPuZ_pk6@>eLcwr`#^J7b`{&h zkeQ;{ctu47$m7*11(jOm(}19y|2++2x9X3!t{wy97nPl-DwHQbGYj&{ zJAZz7lbr6MJOJ>42Z#j6jOWz?WZN76OGZQTX~k)=df1)A6eFADHf`HvKQ zmPB*T&^UM)sW$Z2Hf={#TxrN(N!q;}i_Ju8YSBVo7$Mkb@%-BwA+EC4*_%9=R>Sjv3MpxIC^h%YND>vDK=CA^krwZ9Px;NXkyz3 z57wa5h~ajVx4#(u{@U(vEsyEWUJSU_xzGdUKgz~1vXg#T^Wd?X+(EOvF2gTEyoT1T zWbFu9$GCANjTA8A+(H%w2aVL?D~rkLFaUkSWDwe21_5?*D)k**ZSe6H-~|9m+U|w$ z>he)dRUQV+l$CZf#4240lKL#5qd;^@T9oJEt?V?tlb~t)Z6H_nxm~Bhe;AtAIH@Z^ zXd|1ELU7c^`?ToQn4Nj+YyUig9FQiWiH22sJ60{&L!31ssi#D?^gEF_X zyljTyH%VnS<)1dwmZtnyPuZxlOBuP7X;$4kYOk>zW7h?nXV zUO%pade2sW8%tGwEYgw0=jC41@S|F}yYy1ww+e(O_C-$t-r&j;m?Yo3yC$_5B*>*T zHU^hiSkMOP67VNIy4;BKGSpebYil`;=0L zS2@UL7XT}8og-y*>c4&o+TBrvwN%ibsFuRK2E^V*{%&(QaP$1gI9mKR1L#fMy?3-+{)_7TsrR zL8q~n|7nizFAR~-!ol)SL){CaY>c{|sRDw>UJu}E!K@yzc}q((B`WB#1Y;{|0djc| z1zUxcuLwf|>+7UJRLjq|X1{~>`l9%d_&{>&l*X3(0z%jHQ(x}OqE#Y7T z5nZ!}!)fZLL6;pa=x1jSje(bM9LJ~tq6EZ6qcZ}Cvi(7iE9SZO+`&8#212tPS4Sf} zk~)aZt9jBmY^qX(B^!=~us<4FExHP;LOIY8{ohLFE5f=CG=k`U)^5W;Km`3sdKN}+ zLwY?nRgiZYG8tQNm-qmQ={#{W^OLv?`IW3nehLTgbFh@NPqpzQ6u@avKTURUZHgqN$!8MD9eBuk5UJ0X~n~?jv$Q*Il zbOx>Qcb==aLYj7{)pA#nW%ln z=3BueE>dxg4F2GeS2Kq565Hkqt8KV?B(P$Q+nQZ3+oG+qJ1GsgX*o!r_a(AOx9wi@ zp+_qsot>utnYj`b4h>TYcDn=@5=Aho{9@!PKV^mu&G>O$3UvL%86vL?VSMXnPL+~d z*ERy6VrgIm1VSh=2kktkQmMebI;db3%s3OK%`{yE=qw5}1+#U)C!-K5AXCrrik>)Y zee+)RhBwpUcTDf|6%I3R;2u&G`9MKtD8{3mE1i!} zl!DTk0MN@f^g+*k13|nLG~Fo1@J02Hw3k>;v!}YhNj;Lvgb^3_gmLf^FaU@^HlDNWKrT4wo_F#y)qetKi=AsA0iWL7z zQOht=fuv%7Q_*q3lJh5t1J5Tw_Kw1A7cI4rLVc1PLrJhYJk|u;efl7lc1bZ#ZR28k zm^~SGH1jpoZ7WB3}zHPTQsuu9*(+rTTYDx|aj>W4A{*g9`G(6BR!Cq&8C zLBO`#x^P>mKdKhq!+2yM$i@CZDG+#M=>HQ~-1Xy2&p7FrJ06agEqt$zRB2;rGjlt6!N|&rIQBZC3JvAWA%#2U>*|g=vP5n3iM>GHpu&v@GqZB?e8;~` z2n*#wetkb7TB}V9d}o_wb)gzLQwwaSJ5o+P5n(5$6>NPc?ZN+BKOWGP#nGS_d%45$ zJ{sW|r@mlY&C%kPp^RMh$G%O~$EEEP=v1}IJ#R6*F+oX^gw9aKUae-OA2A_JhWX}C>AHAd?3v2D) z0~3H+Gs!Mh<Fb6`v=>in>MQ%je1R8W4JH#OBl>*aPgTEkE zx4xo55J(_j$(b694eCIw!)|K6$xHLK>oJr7BVTivM<^VXnI;& zz0DK&H;ngcTd%8~pi_e1Cxos|U$?ZJ#y$didDKFN=JJ3B3l0Fw*6yvS-#d_(>Fj1u zZ^dNYP3D0rW2Z@-%bGg)GJ?R9T5)-In8I7Rh*z7BmE@s@;gabb$5hKP@bqJ%KwDFP z%Xml_Qqb!;rUDoPWC}YVkeROmpnHjgvt2cYYLDCM-zq!C1$!HS>Z6E%>+xuh@Wd#; zRKQNFkG{|G0w?odG?SC~=}0~um5WWU7RMX2fRek2!(5qtJ zw7r?JM+&kSsE3_x4RCy)I)XP5RapGz4{4GfNAue-yqH6h>fmv~7zx1ZE!2dO@Wm={ zQ9$zSY^}`aWL;hi~L;7Tg6WwQQpx6qq zZg+E|B!y3d9fy${K|$rvLjHIEnZA=dPq+<8PZN+z2*2gHC6!Zdq3mp^c>?eh4!$4W zfZk2_=ph4_`TJpkr32x6<3oLAR)@8$L6RfuMtSe^z9*|YJbfvQqs66hswkh`6{Ws> zez8EeOEbt+-R%)*y$>dDPyh9!E1v4>9dmDU>>WcPasdgbnGQ&!>b5V4A7PJWv)8QO zGqEL*jU;BDR#lpyDi~H_;vL9j^3T&y)egnhyAu%bQAtQb&*;=1pz-B|hE_^=WV=1O zNW;ot?p~_*g`<{gBJ(;HWFtEr|LnR&QYoGTpd4MUdz*yN_pR)=-TbAiI#3~IRMo{W zZ=A~@PLzs78VR*ym3druvD5wfYHK+AblRD%L0ZUPSNnAp9~#$yy#>28)OWowP2gU| z4xn9sD(!RUN`j8J{r=hw9OipUNrJBt>E2638N@$}2$B>{YsK5_yBMsj=bu+I26_F_ zc>kzKTg@rc1XZEGvaF&KQ7*Uiu&y8!H9i*zq8X|!hZb;H- zeg_5Yf>?_J_)=o@>VGG#4T0|7@qCGlAj*4rJ6MqKp%CD`cXzDwsc(Uj)L=6VFh#?JQw*5Jw@nP2fQ1)8h zBI=Yg{~Q1m=`1d0{k^-HI!)7UyOOhtZByQ5u6@v6369z*#=FkqmRKKehA0a0=b~NK zaAEU^&wRNf!=vjQcKo3#CmW7{+U+6j&Rrv~pE#aqjX!+|&X|+0Wd*GR&n!ZPfAvN; z59Uxex<`OJSdNSma!u5kABMmeP^IPOc4AhUOilE&g~+wMk!aN$?MHo9_f$56&`Va9 zmVlS%cAR%uD19oE6DvE&b3Q0h2>v)1{#^Z5+qNFCiaeF}V+AaxfxlekNw5poaJIra zl)|?eQ)4tD5YCog>-83{qE&;WvPLIkU=!nA_uMBzJf31|LT?%Y@1n4Zx;7gEUV+uN z%=In%c5p83T0bcy|17@k`zWt~7PZ%irnW&&A1f>Vw*pFB6=C>zm*p19lxsan zRRE_&15tIXdL@GcDu1Cyi73ROfoaz92v`d&^-Q0FYN?21lVmxIUzv05U0hu|dw$7a zVmf}^nQJk$DokwU^n}IjO|6VvQ06Jhgv!86&H&(b?j?gVNH+ZixVyFih>-&OhX-SB z;Ye|sa!Y44F|WP{-nvCwn&ViEgUw!$f!AYkJ+i@u%?cJh5qum>u`2$#k_JC0h(?$i z;%Fm7+Sbl0B8$l6oDf6wQCb%7Lft?(lVa&JwXBOL=axj%6Wa#8$_}oVN~V|cKAh?% zJ)PC0?LaZ(_IHis$Zl?Yl_>zdz*>vHMS@O7g{_6m?uQx%7Y*cw=^qSmN0-nuCSh8g zP|Rd79@Y+N<9F!3;(|(FIwZ$<#y|lKveWoRK;Eg){#g&7O!Q4kK(`b6M?TF0vp~0C z;33rt8ZHQEo2VdJbz@IHNE#}rwFjxC%s<2!n@M0MTa(Eiu}^>t`#R2b zY(y(Fc`EsN2|^ZryJDM2356N9*-{=aDQv@DZU!HV_QrOB#GasISpeu;!=NMueBQh8 zN8^tc}95G38aJtH%y z9g};pWE|yCs)#;{RJL$$o=SY0tm{}lxtROIx7#Rv12K9pvxzqzu>4Yuu8Ij&4;uqG zhE7^xD<6cp>?2aeP8Jn={%CZc91cBHjj`YXSg9K1BIvFvZHdpc<*)C=x!?;OZNbv% zz4neZ+se2FR?h{x_i||yO0K}p3AoC!D{E;eL|ow=p(#{N4xe0M`CC+%*QPdO0r)D%{N1q4TdiA;VTJSr|{>zEf1eV-%-h$l2Ypbn|Gs zpx>FGn(X%#4%|<|%Q+ND#5yu0%*)F?vTv95eKSrDbFfwA6qZ9WyR|5PW099|?#ddj z7Y7p2D-Wp}GVcJ7-y)!lRPW&sa&j*=IViVXq^q{F=hla2&`J?ZQnGeK=7zJ#Hyc@o zJ7rtO>9(^{`H2lfrnYhx1S>@hkmUKafadMQBL**MVbtyvA%V|=ka_Ku0n!|0U~>6k z6vi%JB+V82lH7Y1&pVSPS~6XqNLpv2hSud@mMPb*xM80W6W0Csry1iHe1@b3(T63| zT>Sxk{I!<#X@~1FTjPv{(|_aJxuaGY8~5Off}v#zrEna{}x|$XzEZ! zhfIi|93x_=3h`J%7(^VpZ0Y%v!{!`-UPGktgKh?(%p6QgQwR8DwjNk)uRGnwn$qYX zJTIqnojVaEBP!gioo`f0F!Y~{zAmx>Qf%S8M@cQqS=Val)SrKd^p&&TFyr^DYxRPm zI0K-ls3WhYV7Hr&9kUM1u!6Ze>uC1ls?7Ni+&PyAcwEHALYIqO_TPGf7Oo||VBllC zn}I59DjKewvm&Vyx@0(P?_Zy+UWk4nZE4}f zGZR;$Bkp7`Klb#DSeSDDfwHDrb;n`!+oJ&CN0%?w2mIPAB`lip}6I4G?q z#CB)|g2!JTm-`#Lg0pRdo zZ3Sq~fm0)iuufHl3|r!ix?jRA>@&a%Q9}ZS$&e$?)&-7^Khy+8&yGp?a3|d~bJFcf zYa;q%!xgt&&8(XK^;(3qy54X4$6(B))x|7k?^envOzp20;1s$$>hmAs5yeTRRX2b@>%Ms2fDYFY0-@44IpOGvH?hIZ5P~pP^s(fs`GB1m3{e3X_zSsQsEpD}5z}d9Kjv;)ZQ|0t95bn>@$YQ3T3vHZ0atEg8 zA#AZwV}k@dDEs|t!gm$J28>%vB=y&inF}cve%`jMR+CgUs2;L@PPsO}#7OmJa!L0t z`J}8qPq5giwPBigN6TBw_b*8A(&hM-YSH_X>B5{`Ak!O$)9dM0;5_113QM^S)!Bmr z*1nI*J{LJ;v9%cvC@U}X!tdVajKD7Af1ciOG{{(i*B@$4qKs1zuXsk*Zu+BdFz(hJ z(u(_Lm@y<*YmKJ1LzZfgtd37w=T{|JPIU4rACFS)s7z3RNJhEWQiO%<_wxWCR)I@^N}=-H|ND%D-t-aCi4YI}nzQDfnMV30R00jHOJL-daJItrlt>(b#NW;TmUOVUKo-3_N0a4*d zX9%1)S}78>dpmzM!?Mv=brE{#<>91MZeCIdBC2O6g+Zx}g70E#GltmvXq&+*U1ykO{oO10}a0SfGWg{8u$_O_QDIzVOUXuS{|z z0a^V)dYM6)Q}Ts?e@6R*#o%Do9&U@7!$@-UydByQM(}voKgumakNbnrP2|F3W$q-P z;3DRf`JK^6#{-jW*{Y<63EmTvpxk3R{2r9^&m?;|1}l>c=VWlaa7o~e$lt0$0Bx!x zUYO3GupSuqeB?-3h%1kCX%S!mi1{$h`*}UYwP~gHB)i@A44)zSJ|Sc6`1{B4WNm>C zUY2>wPWAV)Ep!1*gc1c*`nsJe(yzfKs0!%bkTl@m1ljcszIo$-7^zFaHyzY7v>eoS zOK=!-oVA538QIhU6%sIb7>^Bvxi5)PkXqQjy5&OnYb3HVXBmRoLziZzDS9|YBDzm~ zsXLrMYusMQn_rt?PC&k26>k`(kI7{=6=`-bsDe7~5uI0&^uL*wZlrtNCjLp#xB)`w zl{KF8KwQeD{;(-ptZr2yUd)a@1a%6*wp9T=#5ldADH`PUNK2O@#W8C*=Ady^-T(2} zWXM*xN`q9$zw>mP05u=#;=+1P1!^Qx*kI`w@(LG|`|O~!{9rzfrr!|@HQB0>PK>F_ zbnQ>AP3`+v(#34xb4UGtiI=sj)j84o=Ajir|1&9ygh``y%WNbkb-mQgWf;R&M%S)s z%U+m4@*n> zOxP`P6ufC4lzf*0Duisb4nDrb-ZkRH999J?bad);kv!`RclD-*KqN;Qw&#d!dX-72 zLohqPTtZ0Z(`QL%NBiC-7{dp0E5Hue(P|LZX%+b{c(4Uxf6(dbi)E=_%9hYx1i(wv z+r(sD>Df3txSwT{$A*1rYGnwQrN3vf_t#kiBSYsO@KQgml5xhOHgzW=Ohm@EzR+Gx zmmc`h58z5V`HKkoQ?v7G@CH+ZO$2~j{Dnxh=TF=hpD_uFiyD?f&1aSMqpC%JlqgxW zXY!3H21|ZxQH61-#d_66WSiuEKScu8kBlm7F&Fw6suI)zzjhDF*lag#M+JP%{g>L@ ziL~g<4uEXxKIO)3=Ykelr5{-?n6I>Ntp33E4AVY|LBT2+G8UN@Ry1)W_YCdbnxF$1 z?=CnmaYN+n6U_N$xqSGTR|Tw&Eo;E)0=S>hO>QuQ2D5K@wGemsA2h1jXyeQ<;QQX5 z!TZT99j|{a;yl{FC=C_wUPDu`Jc<1D_R;ikfAt(v{h3a!or=x0{t1pV-{sVO&O9IB zdq<3@QI`jqpN-?BF*0&1!AP<)R@DFY$AVYQLTca2hF)xq$jcOiA6o)1>$6(p-wZGl zvP^4ShY|JRCS8o05k)y03KIDg3vn-<#Ev~BF+J4a^T&rbRd`f5WbFJ+5JV90QjoOO z%|QXB>MT(~e5mX&No=dOwQR=&7}@2V_VPe7RW%~L@B&DW;)g<&VbsuF?hBAv9`H?< z9%Mlw9w1>W2zJQaZImCcXYXlSuno}+@HEUc*sl{a;G_he31*Uq9gv{RZbzV`LCele z>83)h*K{)zwS7rmamk&$8HwO7L8YW5kv8LcFfSYPBKzuVt(`8TRQ}FND{kcQeOCl4 zL}3v9;`QY_i(4$yd2!MzFrON45$>{~>NEJBL4*h3xD? zhwYat5O6sb=s7Bd2KA+vhoE3vl1r-0tBwN-D!8 zT$ID`plVwull#7wpeeVZyy%$(BqWm4$|o@)+3!fl9CTq|4n3-I;hPXbmNO^SFB#53 zyMlSH-OX=Dj(nuskn&?#bQw>tky!H1YwbDevBho$c%7iGWqGzOb0bLfsW+8;;baq} z6G7W^{7040ySguf@O_%}DvNO3twy){i&ujTnZ+!=W?~VyzAD(8+(?CKTKT!iy=>sy z)9S!f)K6PYrjc|;E3x$bdgXNMPcyuw5`z&Dcyz1B!)?KLZ=z+3l|YOulAEQxEClAs zqXI{Szf1{PF&8ST=g3eJeb`%z2o_z*3#~(hj&#(dkEN)L9kMu}NhQKV;J&<5Qv zSB|2os6@E0+{9+!INPR!_MD(Kj>SaYg1O2g;03H&Q>2AB#tVQ26uJ)Pv>txy_jCU| zG0UR~q8$S1(M8Jq1Xg;}<^ug7u%kN01PJ5Faf>VT6;IripftdEcG%?@wA4s|Zpqju zeqLL}j-;T#?h4=cAHv4}J3ttH9^N|q_x^hp98WcDJVj0M{}7o3TdE4JnS((Ap4}do z8B(d()ozxME2Q*@ag_iuV)HDs$!DDXeE;`WfP{rFLdapP?#Wbt$x~Q4jl$m$-DTC3 z>B74T^-ZJTFWR}Y+1wPF(ld7Oju&jgd^hwRTyT>76L?c`0e&mf#|&7A445Vhlihb&H)ft2)<3tFyrrF-g2or z*DFys6#@NSd7MLyMszY=k@w0h_rs||+HEazJ7xepGH_AEQd;y~7VEu-r@0q}k#F>- zw*4uh9YxP77Z}#2xLaa|3VVDr+7T^traJ~|>Ms*y*z1ACuvS=)&)~Y^PxVU!A*m-$ z9BD38onN-#luDf2BEHoeBl+$Zlr6rmu(ihvR`YNMfH#nM#00?SunGY(WkuO^Q`{yb zvgivc3N58JBA+b4?U0vQXjTpQv%z~cE*TT9Pc3y+fvOXI4mxsml)8<)Q_NgoEw+Y;2jA=VAOQSaa| zj#PVG1xX%pNA${$ftZ+FQrkgvJI%>7!uZj2a%R7HjeT~E6ab2k%Ry*FVIo7Dt(DbK zKI8FtuRkKwxs;GD^95St-&@*}uVuJqP+&t5#HYAbf9D+{lV8q;OsF=0Z9#sB%AqeMya3qwesZEw8J0LI=l-+@w>D=JaP*WOQ5?2MJTEp z{k#V4Gb6!sRyO9Yq0~i(c}s7{#NJ$h*83De-#Y^2oQX#^Ga0a+#Z z)&G^R;3%B&GZqI9^FJN954?>apQjU@cQJN5lRm+9npEoh_b~&?G=w)e6zo#7!RVmj zjsH-mcU1={ruVePH~@wtIF8ceIOl@0^Xi{^6^kLht!R*aoA63vt3y($394c0lywMmMu@MZqXXZwhka&sh#|PRg3Si{97f-VKy2U1&*Z!` zn*Vj3LfTHQ1RIqpP;NKk8HO+Z{ePcO(wYw*zpVQRWVya}sqxJfF986g3m`$FgRr7?Ox15K4?|i}vUsyAc)JOyvspPhxQ=4#D%? z>h5a8k1X~;Tc=J$8at|o|X9p9)nB7{ml(Souhl*bu?N^D5-^Nwh@W`>`Yaug$1L< z+sIdf3?1L+Ced}G@3|oVLHU~KQ(}05a_dWOuWGW%i0D--r2zr1vlG2k*5`+5kJN9C?{- z9{9P(EU1-~c8HXP0wjnaIMc=y8_!jmLDN~jt(|_Ez-ewuVT)9|8b2LE-m_Iyo<=?g zGg^Sf@tyImhc2Q4 z#20A`H>8Sd^I(2!Xc7%!ED>q-nDM<(aQP5b6re~nJ5J4WpGc^vcBuo-g z{j21M6!%0?E>sX2-mVw`(ZVw$a8O5c7U2S>SPFtRupH$f_QFf_&&_Rw9U?9U%WD#< z0M}9{i$UR&Tb-|VaT9+thf+v5ECKqWjxrtNe0YT3d@7o#$90JY0)n?cHXi#zwa&34 zU0k^ujX-+gU{JQBG?S7nfTAP*Vj~BSy`8Z@u4-leoS%Vq_K)Bi^rhV#7s;;8k94u3 zBS&9$@UfiB6bdjzg0BPr-5W+owap>v^|z^6$9ksksyNuSr^|JyM2ZbWC=AbNFxB2vklSHfx+d>Sp71!6LkG{Q9BbP+|cdcV3(ttlPl{ z$FRD{2bbi<3(&A)BWePd`E5qKG4yN9shT$jklv=)>6eL3(9r@HhoRIS)=9-Z;QdO^ zl4vA(OOIsfF6hWmxd2~x9@g_?T5G}Jh--Z866=09hJn}z@?0Y0|Qq{J~9z&>2Lc zp7NxXOAD!*R_dda=xD=0yoiy>9>9Pdu|wI@l?{5w@JStSOQjpt`$IUfYAAXStGs^Z z(He!)FknQB*ID@CRDS%Nl*dYR=1-3GSr+``QlG=E9Y1km`5r0%S8G?-em`DtFE`bL z-dSeh$nCkWdp@-8LNPw^tj&+X+nhbxR4x> z*C@aE5}F1a4R7=v5l}bi-ds?>#W+$HDC%H2C0P_#z1x~Q(iOy{XPpAfMwahocpG9V z5Kta*@CkF*8JUQ~jk9Xp?zzZ>yrV$9*MxMLjet%&`I&;B%m6MH6R zVIC0KH7rKcM;iTwDy@-j-KzZtU8*4Cd`Y(k?8}_CZs2B3>^MO?bEWo(7dli1H_l5O zD$uOWMemvv4%e=Tv;x0Z576V|SeIzlYj+tFwc?3NdV`roDKt~!95Xz@37V5LErOi8 z^Xo&E9{zl^nd~d4bS?D;ixlyM^!-QQHSCcd;qMs=-=4H<)b4rC3#{V{& z!_f<|Og$hXvn2ewY*edH>pw}SCCArX5?kEX2$G=xvLn-LisJ<2tV>i%ZUS>yBc->) z#g(l%S`;@Q|9#jUxOtaDaq}tlygwa8;qimA5|7=HlY;RD;bX+Ajp07R7k2qp!weXp4OOz*C*3oWpH>_R>Zq633s<$AUYHvx4)Jnae+ zF3XYky?Qq01QE{(lLFdOe(m6ad)E?2Ns3_PW$4lQ{T>6!VN9pn_^!?lKi|GM9kwU{ zhkH@tcPNT0aL5;{pj&%;*?BV(PL|{D#Ygod;*bARH|+=VOrp`n6>E9KZ%zjE*!(&UvbF$<|8L9WdMYHb zCB(}ff|EO3$d+M=IXW+l5uZ*hg^8IgarX`eQT#Y+f+EnkZ~T}b&C6{lS!EP%&afRV zl;@(&i-OvBD+id)HG@Lh%9mbkDePa)3IJ&!unZ&$5$0ji3V9n{i(mnB7e8AGk=pY{ z)#NgJi<5gHoO=z*shdgPf=5k8YcX@*v_GF}`8j=>de*D2!4AU=?dsm(wAg^ zJKf8%-OyFDO+t=i^~8tkin-BGL()k+y`0U>gdf0KZk`Fhc{f+BH35a8Cc-bOZ9ND=k*q|r`EY7J5n60y%&Si;i8zCdAuab z>6F)=N3MZCCcx1+0QjUczmh*i)HCoK#*Dm`m-+aQrn-u$C3fU3Axl;KlvTg7G|^uH z=1LlmX4%MqANqHS<}kX#{Ah?QblcRc{7^A~V#UnB^rhwA+LhisajS5ypPXw=Rxf{4 zzve?DIc`7^^NdB<%agHgJm3dxT~!7{ooo>b3ZQIW1dcbdU-pysMxS!6Hg4@ zS{h(2l^@@nG*bi5HvTMtVMl40z@H;0)EKN;cQUSIdKZLI?0g({fGGx`U){P0HSb^0 zqCVi{zrhJbr!lMahyDrdtml?&AtgMWqu}tRSDOOXbk;Rclzc&KOpSHuwHOn!0>4&n zk#02uG0e3@gN8*px}>(o7Ql$Wu#;b?2JEU}tNoC$E!6nT#ljY>ZDnt{O^aKKCk>fG z`@-lv6WL@rrFh;^8aYR%KeLMw0F1LOc;lN<$R7hkkW?b(98*9t0}fB(eZzsbLqkv} z{EE|C6o)^8Q1~E=tLMTl=|6W9jiAltwf4^5%kTS2HEBKvNQgPnqz&DWdu;S%qRa~E zXZSqvtv17wykD+S4}&c)hYQiD7Y@}ieTP=Q zmSF=bUVo8!Y3D#1*RSUJ(eOl^19G`bZ|7w6kxCzt976Fliw(|gaaYLK`59`*!8UuZ zOLakl*dK8r9LkwtbSWwHR)m5+!BqkgYR~j9 z`+i9iPL#k&xc&fGAaTzamz@LxmQmrXaK=J`Bf>MZ*%J^V;{=N{9s{Pmk^?k%&UYTO zSHB?R9QYX50%-3Rqn|b-;V#allj^(YSD54TwxKVLL7-`({UGD^W>d)7zgdn3(H?6pul zk~oR_n?5Ld5ygp5p)d5FE@Qo=yUk^S&*^KhBRU?Q^fZEL{DBR~V(}OCwNf`Z`~931 zd-#wol~X9D3P`0AUhMhvgv{Z=M+5~%xi>G~O6m4fr1(0`X3SNkc29H;`me-gpFx-> zeB!aF>sW2)iD&SW4llG=*8@!!8_@{n|GZ+R^%%X5Fwt6={lgke3;9nnPFiOy(rm}V zJ!Cn5zy;lcV8rTu9zeAOf3Mk#SDVY(0^8MltPMoDerS|AstYzB{&TAzd~# z|0l;(;bhyx^dodXcisoGAdJDA;>6lTRYe*kURW5E`D)AnzL8%)Vf{U^s5J3EKLfz< zd7FePOR_j}8i2xG0ieiA)|meL)Y|lPR4wLfTP&jUNh?Q0llUa4N57QXa@b0{r}skI zVgv3{jQx^k4}{#Srv7cvvE}qou?#xQbiS;>i*&{&4Q6g8CFwR!q3-0X0J7UHg@_tD zIXV%(dJ1@pOM~I2Fs+;{KegsW&0R6kQQYmj7dkj>DhJbHVXB>;Q`WEMo=vH!37EhQ zu3ngpdoGnLI7|B~u7fSl9tNE7cnuJ$tJ?U0ew>a49M#qww9tai8lRtYKmVAjhFnY# z(q&~DW+0Y^S}V$Nn$x$9NKhXLliT>7k}DskmZf#gMj(&KAjxuUZBKy5Xl${qMXH1w5~v z5=P99dI;|nzt-7+6n5?HB~r*m{$2@lVHH?*fP~b>`U`Hc3LAiqui2;R?r7i7KV)G8n__s{`z0>`$SL$X~UAe0+P!gB`fr^8DZLFw}0PffU z1C3^Qu87}^E|L*{djq=pap_kCTw(i54k5Hb5UmN%$aJ~AL)`Iv}NXhPJJKJDU-qT`l{6g_xOi zu(T1x3h6oUgfAc`&+znH$Ssn4#%ItiVXVt@8*lN&YF29*BF1A(6o=PRJuSBT;InNM z67Dnd1^m^>vE>p{h_C59a*N$o?VMq|m4J2rY_ZWq+!AS<;HZlVTZ8vCVrM`8{DU$d ze=+6HdMxyd>(jcmwep4s2lBRTQkxi7w0&}f-Voo>BjLv5OI2@XaVtE}xrXGYMNvlZ z_B~9*7}#1^BHqepmMpUwGU_Fvk0b_MZI6CC4NCGnwJpM(t%+9=NQoj~*PH`j)Tu+4 zqp6ry$jUDp?hpI}Ei_V%MO*j$Ur&L=`#eE=Y|npdkp^3*SQ%!(Ybe`2aAX#f&EngY|J+j zCS6^0@a1pqx-zNL_lJsFK?%|GU!^9!o#uPX+js2a6R2_VT$4zrTfWtdk4jRX#4i*N zQH1{!_`k}|&nPj2subdxm=hw78KlQwn`$T%7q8=khzq?QrI|%z-Cy_yMbPV|HT+_u z_kd@dcS18Ga8ji9u_P5r?Z<~~&;XaSZkTHu1lBQGVhNa_7Q6)MScGoKDwOLYA zD#6#vckUSM!hqi*bvR>X?b|l$Pfw2Gl<1hQq07)Bd7-Dy?SoQPzjD>cU*}{?Nlsn> z&2i69fnKhEwttijYN>1(1xM9SJDFCg4W8>J6XY$;JNY$zk}3WGJwkDJ%-^o87#S-! z(ISrkQ+Sb095jU6ffmBjhZoNl(0ulTjZ%i$R#xM1YGGMSiAY8FWE=#HGTUGzm-eYzl74$8ondS$l!*?vsE<)9SCq$cW0o&|5YwfJ z#?yb@wIEy9deoha9=ANyiO85i2W7T+QuCvzN7?@eKFdgli`dZUDMDc05VJzxHeV`+ zEN|||U;l#VAtYEmUFUCh0}l0i-w?VYxO5MbvFEzrw{jG3?qJK^g%vaY>wwnPU0$x~ z!(-#G9gw(;wO0Yd++6&s0kj_TNK|XL(Z&m~TsCvcWPh{=XueA$2o69NE++51wEb7( ztwMyOkX%OS3n1RUiw!jkVo9tWqPUTdey^2)K=2$zc0}J#YKLN~kY_+ulisp&o6+mI z$w@hiGL8;h!ULmZ`NgARLImuo1u?36d|TE2{*9`6a!-uwEN))a2!R4h9IjS;eqa>i zgep2}Q|an_l7ihEHx$Yh?ITqOa^94Qibt2dmmBrvksaXPME|k(8V+g|{U7>BFVcb} z)6i~C#dYEqksnO#@z02QEhat;D`qZRXS z+CtsWpiX<}Q1Rm25LL&ePMs58_H$Rg)pM__e26~BwEn5G{pUvPQnXlxU)eAYv5$n# z7zW53KU*!AHGc8kl@g@IV0}X|^HiVJlJPuNn=p7`6b9&0d;!AWh)BH|I*GnYVb z@!ks3Re_jP#uEHprRmS^75gk>n5YC1M_L=KMdO1%jV}o-Y(^G)^vbw`i@W`kl%AD| zhOb@R0nx!}n>$P|erq`d^;|$RE3a^xh%ABX+2tog98WF|3QwvN#RMz#3rRUtX8?nT z`SmxMc(0EFwe&j!O&fPzbPaB>u))&9&H0&lW2}Se8yTQ{Olk1ngTvSk4gPU6V7=iO zlzfTkg5NnlPf6#WQH-|)-bu+dlaPNR^2I9Nl+pcC)y4&e8ScAIIeja$0>@_Jkj8As zrqDm*U8pchWEyu>KKWCnBgUsQCT=k+UtBrCrhMrP=0$MkzCymr5?9rCFAJrpx88xH zL$2Tgn7IV6>|AB#N*j)QW{U42;eJeV$ZAo8J$WFsK9~CT?9O|!Ao4y3y%LYMhSQFQ zx|27$;1ZH%Ti^mSCgW=a6zdSSc~*~%#?(HH#z@LR;hoa9D^VVEaPdi*9(431jps8^ zpNn&kRQFh)3QWVZ<-a2keeIlVSU8s2LesW|Zb{I_vS>4hO-YQl6F;*;Z(phO$G zK9&^?lNK(vDp$yxV*k_IHFa0Q1lw?8+qN;WZQHhOp4fIKHYc_p6C{{!BxdDxG6Xq2ncELDmc$wMG{lJ`}SvcS06C_my(a)}$sHzI2r}21koQM>fPMf2b1K*5R_<33`f3P1EwWBbrgX1f zF7cf5YUhe4{!N-Bc`3?9@UoGOxX>AHY`CH&SZ0eF!WRSuO&>OI{ zz>Q|p2*y_eTMO8gNL*_d**iuTk<6$Vx#oANkD?Uh*A*#QceOU5qmcFv=ap;z?n3x=yNH z{_4Z6_?f9yX#U^)YkeyyiL|R}gp-7~?|dy`!R+>yP0eiCKpjBAB>N>G9Tq(idIG8+ zJg7`N7}^cGqS>6H^3QS^^cD`4Vd)b!9ronI=95Ff;A$`$!DLqc}&`!xcegZ8?_B!6*#cDT4lMEXY7;ruGqiw}U?E>INf#KAK18Gwv2x9sXRYyan$UPlf?q{9RRJo&0JN z^XAcm`gp0lSKwGyGGFV%ApZTc0>lM)f4VwoQ7Zhl7t$g9pMtkgMFQuY@QquH`jn@> z$3%;s!%GANz@Kn8DplhmW54rJiCQXVSp-|*n$b=yI_qV(b_XkvzR9X!Kyb}2ScPi( zxn}N}2DCvA2K&wQtxyLlPY2x51bH|6o$Ncw^D zLE^T!3)(iTm)OLAOmx1A5n#eFmV};7ubCq2u^C*TKgPgMhBi#rz??$_p9SKB3gMS0 za!|sJ2_^AV^4uGF)>GN#JtsMS%sh~P=l_OT5fw4tGtgQgrD189&>un@=I^?pO>L*!?C3b>Wn8#b|-V>pkTHNkH~Z( zuyHULdTsoZSLz)A)$Qx&YPsndi&{}^e^0Z|+ zGuNV-tdbcaOhWJb(2$S`W5jEsd6P7^&hT$N&@Rtu>9DhNDU4LK;kf9#vLEDfCF(bt zdC{@GV8afS`F1Mwt8=kCV*6dCD+AJx2=de8n~EzU#A_1aMk3}%697M|is40~FXXM~ zp;{m^KMqAWl2cj3F`0-6gstLrxQ4(3vvJ}+ijh1>%12oZbP@&$S1fxkh^gF!%Q zJEy|&ZUW1?4QD47EAqd01OhJ+W6>ElL!~GZICs2P1W5QEmdGd^X#hQS0ZH{Gy{rru z>`$>ps3L}p9M;)0z>IGYsb8(+fn)MxsOkKKL=YzwjB>fxa!byq3tSlH7vXPaQ@>qY zW~7HN%kpP~tt#f?nn82kGB)qo8$IzOCP$fF$SUHc;J$%!I zb{VJu)er6y@63KDpJm*&znn_x60oZYzVie18t6Jn{YGJaDYmL?GL0Y${(DV)j;!3# zkaK@M;oX_$)!sraZF5yNvjUAn(_++~Yjjr@+kP*K1&$aLh#V)?_hfrGD`a2Xt-SzY639b;on6FK7EE)d${Jj-*KRy7S9?HdVjK`kxG#KX(Rnpkfn6gfg*vfb0+7p zKJmY6iL{5lKwGA>6(f#;UIHDE`C6q(rwSOfu*P4quSBdg3OdK}GV_JEdAXf?+s_!G zrEG2J4ub_p4w=u9h}og2#TBg->nTXP46c#*K>vZSGTsQo6)0zOH-Ktitf{E9MOdxF z8~i(qqI#Dc$hVF=Q(2B{pXn(G3VaRp{QEU{B4Dlwza03gICMx^_{8N?&V%|WfX0wo z7p_+heuPqJBaXQ;O;ntz+wi=hZs6C`#RjDzJGnFD;;j8v9(uoPS~P36G-K&ZKp>v* z*D7zkpd9<(0#+GqiL5w=#1H8c^p4RJCXJrW`U zg-muq6vrDunds}INyT{MYi()x3AnI#1pf2Qe!NAKD(S;jmfx%*AXlsnb?26$OzcBD zKKAlLedO?WA3NUOo&zxM=;kYg+#V@hssnE*MHb^v<@?+-`L$!y*7UGv6U|%^!w42s zIcKVLBrN2dDpX9p$J3?fQind%dAkbihNH~i`!GBR;Sd}`w5+QdaL&&2N_Oh|)Sw33 zGS2U=xX4qcl6vl7kD1Oz>{+_HIqY)QDVMX6g{phU2h6*Az)#juvB87^Ya8E%cO0eG zK_&|7?YO0%$$a&Df0!uv%j?A%h<(niD1^P_Y+uuW_7#h%WIWm5Q{{YOxG38)N zQp_ZFi`!1#>qu?Xsf>bdZ$D^3&vLAqlUaFW0;YH8CW<%_q$y!;$oNR|@vOr0GE*c#m5;#FVKSkVas{#jL#D$2Zi)+@7|`lH29O9y zCV1OLTp#*Pq;E6d_VVCESiGmoUNSbHj*}mz;qku3H=bzqNuM*sZ6!et(J-AGw+Kyr zrtAOH5NEmTkD~Ab``}e0uFeYsM4a2BmWXoRe0)l@)3LJr9-8%F&o8dZ72c)cdHn2o zx09TG{W4|PB zCB6}a^_Nchjv4$MJv&mvQG4=OgIBkFA}WeZwY=>)habk02DJ}YO8L}|m5$q0Zs zF$_1i->1``@y*ge3%KBY4rTUyKIFeYouFdB6q#6bq=zoZX2sepxf0cl9K>w#yIwtu zS_}HQu_Q4aA2$G#bu3QBq4~31riF1)1Nzn}W=|IYs_IQq%|i(Z%H3PrN3l!Lc)Qq; zE1z>t@>hl2n1$hee)sh)tw!8j_Kxrx3-VAEm9rCMQ3c=0>f8E(X`>feb04^6vM_tX zg9_2Wg-vLWM%2a*hFSGCyPx_s7)6ywh$u2j=as0C9#=M?eK3G)`}7S?6b0G(XNRu& z$Tz!Alt_Hj^R%A0%iOeVriX`Mwaj4m7-g;~`S{euWA&~>@_Z*Pr4_F68OUl>*enDD)>)C^J0dve2SR?t9F^~94$dhv#&v5HK*vTu#rSO@ z+8NhxS2(%)!6VWVH=W7Db-Q;pYSp(X;1^T0c!zYAe}~D22slmkp2R9%EspSzk&YDf zXl^bcyNA$@aO(Mq$((Kw-O5psW2lP=(dDwQ zRBn1^mdF|EGI9nwS{VhKz=n@gQfH*Wjh!qtXE=Vax8*BZO+7?{T3LKSqJB6(%m{e< zRw6(Jc9BTqMm1$uyZjcN@V`tk*MU_dL`vNlD!90MA_fRMCtA@%xY=LP$!A9tkl8T< zO2~69AVVY7K#vuDw<6>!hpGk9H~dfKMjezN(go9d7i{zJmK%{8hP<+V)jGsV^qe}5 zyy*>&aUR>alz{ILHbC&azYwQPzBOlgxzy%&`W0sfZfmL${69y?-~Xw@4}Q2C+~PM zYQ~}Sf?4dZeaWZ_herpU_m}n*7L5psJfWrD`yPRbydi3fT9NW-=QBK5+l-RMQsT)6 zUT7RV9tEgSu{YBJ_1kFqCqRMVnjb)&(PEpnWkX*swJG?V9^4Vp{a@-y2^`kU@#x7iAyo7)46g_H-RedAo(b~dc9f)`Q844yLbk&ri zf(|?+3!a~d-ftURZI98@TXH**!jtbCF*+(B)#v_s+z&1SwE%f7p9`W|ba$7r9~Cwq zcrB$7-OBFe<#5*V2jcakUhR+%Z_x)eX)z(d0lGpIl6`9U=^*lp-}qwVB&F3w5k-jk zRSs6cViMcvO3*2eB-ge0=tE>wMlUTZ10*sPNyl1m4YM$7X_z_JNxA4qv6>Q#G##^` z9ZvS|+EO-(&`SLLzeWm7Z0n~G7(-KI z%=4@D9E88?r=`}lM!XgZ{?cnWwC6iKJvvY=UGKxgOMAW3C2#vpPLJCS&%tAmbo;cBnf@%NXfS^5;`Ci{r4DHjlPlH~ zQeK)|LA~Lr9jl6=n5J0Oabr}<=1xlX*XVqfG8ZccI9;>0%Ps;~)uOi}s2ZLlroG64 z$1Io-D-$n9a7bD}%_V{f3vOU1pQRLk{&)@Et}i$*gXwep92<^Fo~AWA>h!(_D(0YV zK{kGgJ07>0JfQV~NFJPoOgDU*&4bgz2=9dMPZ?0VrPue%a(2ueH_DRjgG`qZ+Dz!b zd<Qbw_N8x|U~c5j`}9fPiy5jFEk?Xh#A@36JEo<-$RN_qZ&rVybmP9D zRqK_djKH>v|C6*RdY;z%!rpE64O`k}BrkeBl@V@`#UH0$ob@DE#&NJ-49~Jt!_d>< zS54XOKLDVJNAG)%T>wiUnb)19V!nia3}!zEDcB0jx(6UU(4;1QE&}^VB*wBiy;aQR zE^XHQE~L;kdy#s);bSG7A{BzGZ(dWb#Na;3#J+IP5u4Bg^VdF^cX)UB67eRe%?HyQ zH^9dz@Dr(tUdEQyfZ$fJ>t=hwpRLVp4#7tKi0m`(p^@G)F3!1?s8;x=cGPL|2+{_e zIFUubhuZm_y7?%@jqlRp++-DYQ12A^OW#nNGK9rVT4cs8Ldy zowZ|5L#GQjNbi}|_M7?2FgWN)GS@{Qh6bHK&L1;V3q4bO{|O$Ade@>^f728obv|+% zbpwtq39w$(u&yUu02#l?z~op{F{v=n^Gwc;uM6(S+q=UwvL!4&h*o=2PP%^BclW*r z4BaEsjh8@%;=)pn+np8ZDz`Sp{#};=OZ;Kr4HYvKKB7m?*dG|I+5(9AqaUc-qwaio zPw*5o`B*!z19%Mpf?2A?C!x%`W7eX|`nq@Kg(?YD4q&F9jB1^m?+&4e}D1;6Yv2%9_~N`S$^=@cE<|~ zZGaCidAzZi2Y3~P8oBo~Dc@caIVEg;`|o2AJRlb3^+#3~MU)XJQu3JfAjTC4a-SLo zD^YJoh{f4>>kbPB7}(-r;xOvnqx$3O4WNA(5^-_K@8b#=>XWIQdvL(WpvH&Xy3~qf ztFVt+c}nE^=B(DIK2EZ#@3Y8%bNQ6VqHE?TK{LYK&mkO`9YBawhKsTyGhu1m+3QK6 zZy9DyqENi9$ieN()HA`LXo|tcfAbV0OowK{aaKs(K(FSrw|V~eA6w}n*~hv^O*l5t z`5BhCGJ%_#wsKU*OwFGeZ-dZ~{iV-yICBD*9^szaw3SyaqaI3@U1oxzb9-t(w@O#^g z=q7m&wDJt3;bqctTg_?VRyCVm33XVmW-#KV4LH|{?<%$)+?M* z7*i0f(+2d2qL%!^)gJkDmYlJ)rW_;MQXrBrX92LNaLiDch<;)?Ju#Q+HNfjGqe4UN z>fshD5R>9gNTaD*)15{Jq3Dug?tjDBb0z*mIVr%?2@0lMZd@nOI_n)rG5qJPIAVYM z-IFoimmR5-6;i$wOmoJYZ-5us`npf@NhX0DZO^FKt$M&S-CS4xTZNW*sNnF5ZDpdX zfe~rd_}8Cg2NOwfZ>&M7&yEtSu&HxLUd_9ddn`8Id=-+I194h{Li3c57t%LCV0*5Fk zu#q?dj*wFb8VCJZO*Jf7^&|0QI~uvazZSmf9r~GT^qDDMz9}5JpfIMChKh=(_Zhe; zVTeQqghT)(C*ajpmg3su-NFEWzL-~;C6gbBZ4rGg4rI414`pCc^v>yYu22Q+{vOLO zrfgD2!fRVEd}J(VhHZB?!th)!6<95%ix6Z-JqDRRwi=!#NhQY#DwP{os>_K7jl+tf zb+*mcYbd3jd``#{8BG#|X|RXrp+wC7Gu#0s1P&`nPzpcfSF+fhvi%~|y@O7O48IR8 z6dn@|UIYkQe2Uo4ZzEOGfMZIyDcY|}x1*K()dsm}HS=agvydSV zam&VKVg^!aHLS+0AAvW60~YQir9ILqqm_GOZNz4ZL9b!^hR{?$VTY3BA&mFL5fg+q zpmJ&|pKp!EcpPa$eSd1oMkzuMnMPdq3arW{!-kBG<8oX~qX;=}*ME3-T0`FEEiTEJ z;qPm%v{#aZ!BWVL?3hy_gqc!tRi)6=>=n`~7RLERKR)7AtopL$WvD>Z=5**4*3z1= z^kEbbkrRX#f~9A<-$d>w@Rd^pHvQ_`aqx@d4cMjRvSn@Sam#eRACX%s_d}}v2T7#@ z>inul97L0t+MJxt-en$gT%57Po5S5i-gFK>@-x6lpxm2-$|^7!n)Ih?ex7y*J8?GO zK)ihAbA#wP&oL~X-+D5*3^=kpQyFVv_>{yU=Aqu33#P1f7Wnvm0*3@cRyvcW2o?Dn zk(8o6Ta3$I45^umRcgajL5nld#@@Ey4z1*WURbJ3J&2HUx`<%l=F{+~wH7wH0Y@!Oqxt zG&m5c;Qa*n18bxrWxq3MXqN)Q;98;pk6ej*jX9#p(9PewbyZFItHb_!{R-?B5w& zf#`jsBXHxcTBO5X#USk7_v+WsRpvgL1^wl z!j|FD|Ne>X)~*Qr%QB0*!@r)qfg6Xwjd71?=7yvMGXI~-^u>b1`LGo%7 z^uHDqpWw;cwtj*t^Z$iZ=4WM7fQs9x+Ew>6WM{2`&dee)3vm&eOgQ0Y{@d-18( z0Yq{%PMrTofnOT$e1y{|osWN%>!(rqJ^%Z>#{J zj!;9>A6?iI#)YEB(eVFx6b?xq)Ej4Ntx8(K+V1K*_Hl2S#GQuE^XWV7yFt?I9Ec2& TYvG6mQVK+3Dl}34mxccUE8$rB literal 78672 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�mO?QrQWbZK?MIe! zMIsVsvzs+SIrM;9K6m}A21f3mCG9rFo!%g_JJDyqdM|ht^C-C5g(tMUr0&uCCU^hP zW*yJXr5?0pn1h}JVPa#Nk84QPFV{U=yk}%toUs@1`;SC*UBu{tE zh3m#{X@cK}RRZc{(M#!r(VZ;4Ibd2-23cKP1)dZO{I?E0l;5_q|blRK}<%^e7(>nMa>l=GFqs4t6Bnl zra<1*m7eYC`$!dSs*SS`cJSu5vCzJnLWAO;Ok${{Wp$ObCFUIH61!f-Wa&R<7b3A2 z>8^m#w}SvKI-o3_MJ;w%-$I=ZBL<}2$Y~Kn7-MEun_4f53=cFt8!q9s?aa?qzCgi9 zW6C*w$V)zp2|bmXoXd>a`EjEK2e`nabQsUy$3f8qPZm^CsG>W54E0cHfuI)p@Wyu_ z19r5G;h-bf6;t)JXQyJjcSa)C`i@2$+yj1JN;1ldZKo_&ewZKxYUM7MeGS`E6?Pz( z+PeTGVtx~kX2PgjQ3HN0+&akCx?n?Ra_hA-)3dYfb+3K^qXG_20}N!{BU*Odx*yrt zDkkk?IqZX~DSjmk;2jTvPXMvkx{R#xSM5h&?#Sm7RGurTec79Yq!2eAD*s*Ll5hPY zNa(b=q;Hlq_hXkaxE zYGT!RG_e7yZEpC7&;xwx_Z0oSbN20G8I~MZ0pi)#sX*GS6vQ)=gX|qxaE(+W?+i~K zz>F5SN}aG$M}<97GnB5mrjIBGH5drGSuvH0e#ZR=qS2KHv8P)&JDk3}>nOXkVjHEHf za9ayw_B>N}P)As8&kDMktqW8W=n4;)1JDJ<*8rI%(z1&dqjMPkuTc4QZxd@Wl*47% z86ubvK>>+T&94+JI`{70BeNIUd-QmK@FzGnV%WqQV_@65DLwJS%97d{4T?+gOe3cC zvwK;u#^z7qwm2dkn>XMEUAsqiv>5^aC1SEREYh-`MPj%CogzYN^HNzoL#6=^6f+c* z^FFYIzt*+hyq!?V)M)>gtmRt6C=wx1AZNS%;y=a2m2T!atH0yTqk_GaFF}GHe$Qkj z26w2{uN~PQi+pqOZD@rDdH{6gnjMva^1C*T0$G8ae|a>4JG-*xWSHUNc|>C3y9aZ~ zQ1@hUm1)7-0=#&lahV+~>F?Tq!W0OIASV-ZQPSp#Y`2j#AE!UpEPff4n|4#iki~2oUkKz>n?*h91cWSzA;er&%dwv_T?VQ=p zqw&ly^omkf%b V#wsGH#iB7^LFaIC4I6=g{s$-J`e6V7 literal 59708 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 gJ95@H8LpMk00000000000000000000000000F&7^D*ylh From a4798465342615848b480ce231cd8d1f28d46c09 Mon Sep 17 00:00:00 2001 From: goldenapples Date: Mon, 7 Sep 2026 15:20:08 -0400 Subject: [PATCH 14/15] Final ( :) ) update to docs --- README.md | 30 ++++++++++++++++-------------- docs/01-index.md | 11 ++++------- docs/03-plugin.md | 2 +- 3 files changed, 21 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 54a0e9e..11deea2 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ Generate a browsable Markdown pattern library — with screenshots — from a WordPress site's registered block patterns. **📖 [Documentation](https://humanmade.github.io/wp-pattern-library/)** + - [Getting started](https://humanmade.github.io/wp-pattern-library/getting-started) - [WordPress plugin](https://humanmade.github.io/wp-pattern-library/plugin) - [NPM package](https://humanmade.github.io/wp-pattern-library/npm-package) @@ -12,20 +13,21 @@ Generate a browsable Markdown pattern library — with screenshots — from a Wo A block theme of any size is going to end up with dozens or hundreds of patterns. That is a design system, and it has the design system problem: the names live in `patterns/*.php`, the appearance lives in the block inserter behind a login, and neither is somewhere you can point at. -This generates the missing artifact. The site serves a manifest of its registered patterns and renders each one in isolation; a Node CLI captures them with Playwright and writes an index plus one page per category. The result is Markdown and images you commit — so it renders on GitHub, it is searchable, and when a pattern's appearance changes, the changed screenshot shows up in review. +This plugin generates the missing artifact. The site serves a manifest of its registered patterns and renders each one in isolation; a Node CLI captures them with Playwright and writes an index plus one page per category. The result is Markdown and images you commit — so it renders on GitHub, it is searchable, and when a pattern's appearance changes, the changed screenshot shows up in review. It works against your local environment or a live site. A GitHub Action can run the whole thing and open a pull request with the refreshed docs. ## Install -Two packages ship from this repository, from the same tag: +Three separate packages ship from this repository, all from the same tag: -| Package | Install | -|---|---| -| `humanmade/wp-pattern-library` | `composer require humanmade/wp-pattern-library` | -| `@humanmade/wp-pattern-library` | `npm install -D @humanmade/wp-pattern-library` | +| | Name | How you use it | +| ---------------- | ------------------------------- | ----------------------------------------------- | +| WordPress plugin | `humanmade/wp-pattern-library` | `composer require humanmade/wp-pattern-library` | +| CLI | `@humanmade/wp-pattern-library` | `npm install -D @humanmade/wp-pattern-library` | +| GitHub Action | `humanmade/wp-pattern-library` | `uses: humanmade/wp-pattern-library@v0.3.0` | -The Composer package is the WordPress plugin, and belongs on the site you capture from. The npm package is the CLI, and runs wherever you generate the library — your machine, or CI. The site does not need Node. +The plugin belongs on the site you capture from. The CLI runs wherever you generate the library — your machine, or CI — so the site itself never needs Node. The action is a thin wrapper around the CLI for running the whole thing in a workflow; pin it to a released tag, as there is deliberately no moving `@v1` tag while the package is pre-1.0. ## Quick start @@ -98,13 +100,13 @@ WordPress 6.1+ · PHP 8.1+ · Node 24+ ## Documentation -| | | -|---|---| -| [About](https://humanmade.github.io/wp-pattern-library/) | What it does, and what it deliberately does not. | -| [Getting started](https://humanmade.github.io/wp-pattern-library/getting-started) | Install and first capture, against a local site. | -| [WordPress plugin](https://humanmade.github.io/wp-pattern-library/plugin) | What it adds to a site, access control, endpoints, filters. | -| [NPM package](https://humanmade.github.io/wp-pattern-library/npm-package) | Every config option, CLI commands, output. | -| [GitHub Action](https://humanmade.github.io/wp-pattern-library/github-action) | Running it in CI against a live site. | +| | | +| --------------------------------------------------------------------------------- | ----------------------------------------------------------- | +| [About](https://humanmade.github.io/wp-pattern-library/) | What it does, and what it deliberately does not. | +| [Getting started](https://humanmade.github.io/wp-pattern-library/getting-started) | Install and first capture, against a local site. | +| [WordPress plugin](https://humanmade.github.io/wp-pattern-library/plugin) | What it adds to a site, access control, endpoints, filters. | +| [NPM package](https://humanmade.github.io/wp-pattern-library/npm-package) | Every config option, CLI commands, output. | +| [GitHub Action](https://humanmade.github.io/wp-pattern-library/github-action) | Running it in CI against a live site. | Design decisions are recorded as ADRs in [`docs/architecture/`](docs/architecture). diff --git a/docs/01-index.md b/docs/01-index.md index 7b6ba40..ee888df 100644 --- a/docs/01-index.md +++ b/docs/01-index.md @@ -1,5 +1,4 @@ --- - layout: home title: About this plugin nav_order: 1 @@ -12,7 +11,7 @@ WP Pattern Library builds a browsable, screenshotted Markdown design reference f ![One pattern's entry in a generated library: its title, its slug, the capture itself, the description from the pattern header, and the category, keyword, block type and viewport metadata beneath it]({{ site.baseurl }}/assets/images/example-capture.webp) -The preview is similar to the pattern previews in the editor "Add Pattern" interface, but pregenerated so that its easier to browse. It also includes description and pattern metadata, for design reference. On a project with 50 or more patterns this can be useful as end user reference documentation as well as for developer review and regression testing. +The preview is similar to the pattern previews in the editor "Add Pattern" interface, but pre-generated so that it's easier to browse. It also includes extensible description and pattern metadata, for design reference. On a project with 50 or more patterns, this can be useful as end user reference documentation as well as for developer review and regression testing. ## Purpose @@ -22,18 +21,18 @@ Designed to make living project reference documentation easier to maintain. This * Can be run against a QA site to capture patterns with live content, for example in a CI action. -* Can enable the plugin on a production site to capture patterns built in the editor in addition to the ones on disk, and then deactivate once no longer needed. +* Can enable the plugin on a production site to capture patterns built in the editor in addition to the ones on disk, and then deactivate once no longer needed. ## Use cases I built this to address specific pain points that came up in development on projects: -* *Is there already a pattern for this?* Easier to look at pre-existing work before adding new patterns or blocks. +* *Is there already a pattern for this?* Easier to look at pre-existing work before adding new patterns or blocks. - *What does `card-person-horizontal` actually look like?* You open the editor, insert it, look, undo. - *Which of these three testimonial patterns did the design call for?* The designer does not have an editor login, so you screenshot it and paste it into Slack. Again. - *What changed in the theme this sprint?* Run a pattern library update automatically at reporting intervals. - *Where do these components from the source site migrate to in the new theme?* Extend the pattern library markup to describe which fields in the source content populate each element in a pattern. -- Does this CSS rule break the rendering of any existing content? With a thoughtful setup this can be used as a basic visual regression test in CI workflows. +- *Does this CSS rule break the rendering of any existing content?* The output can be used in visual regression testing in CI workflows. I'm sure there are workflows that I haven't thought of yet. Feature requests or PRs welcome! @@ -65,6 +64,4 @@ docs/pattern-library/ Each pattern gets its screenshot, its description, its categories and keywords, its block and post types, and the viewport it was captured at. Because it is Markdown in the repository, it renders on GitHub, it is searchable, it diffs in pull requests — and when a pattern's appearance changes, the changed screenshot shows up in review. - - Ready? [Get started]({{ site.baseurl }}/getting-started). \ No newline at end of file diff --git a/docs/03-plugin.md b/docs/03-plugin.md index 5b4b3ad..a8bb381 100644 --- a/docs/03-plugin.md +++ b/docs/03-plugin.md @@ -104,7 +104,7 @@ As a backstop, the CLI navigates the browser to the manifest URL and requires a ## The manifest -The manifest is the contract between the two packages: the plugin produces it and the NPM package consumes it. +The manifest is the contract between the plugin and the NPM package: the plugin produces it, and the package consumes it. ```json { From 69b24fc0d9edeced9142681037eb59406e02352e Mon Sep 17 00:00:00 2001 From: goldenapples Date: Mon, 7 Sep 2026 15:26:17 -0400 Subject: [PATCH 15/15] Bump version to 0.4.0 --- CONTRIBUTING.md | 32 ++++++++++++++++++++++++---- README.md | 2 +- docs/05-github-action.md | 4 ++-- examples/refresh-pattern-library.yml | 2 +- package.json | 2 +- plugin.php | 2 +- 6 files changed, 34 insertions(+), 10 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e53a484..9c0f49a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -244,9 +244,31 @@ matter. Keep the two in step. Releases are cut from `main`. One tag drives all three artifacts, so the versions have to agree before the tag exists. -1. **Bump the version in two places, in one commit:** `version` in - `package.json`, and the `Version:` header in `plugin.php`. CI fails the pull - request if they disagree. +1. **Bump the version, in one commit.** Two of these are checked by CI, which + fails the pull request if they disagree. The other three are documentation, + and nothing will tell you if you forget them: + + | File | What to change | Checked? | + | ---- | -------------- | -------- | + | `package.json` | `version` | yes | + | `plugin.php` | the `Version:` header | yes | + | `README.md` | the `uses: humanmade/wp-pattern-library@vX.Y.Z` pin | no | + | `docs/05-github-action.md` | the same pin, twice | no | + | `examples/refresh-pattern-library.yml` | the same pin | no | + + The action pins are what consumers copy, so a stale one sends people to the + previous release. List all four and check they read as the new version: + + ```bash + git grep -n "wp-pattern-library@v" -- README.md docs/05-github-action.md examples/ + ``` + + Then confirm nothing anywhere still names the version you bumped *from*. + Substitute the old version; it should print no lines: + + ```bash + git grep -n "0\.3\.0" -- ':(exclude)package-lock.json' ':(exclude)composer.lock' + ``` 2. **Merge to `main`.** 3. **Run the [Tag and Release](../../actions/workflows/tag-and-release.yml) workflow**, giving it the tag (`v0.4.0`). It re-checks that the tag, @@ -269,7 +291,9 @@ further workflow runs, so a release created without that token is a dead end — `Publish to npm` never starts, and someone has to dispatch it by hand. Consuming workflows pin the action to a released tag. There is deliberately no -moving `@v1` tag while the package is pre-1.0. +moving `@v1` tag while the package is pre-1.0 — which is why step 1 has five +files in it rather than two, and why the pins are worth grepping for rather +than remembering. ## Good first issues diff --git a/README.md b/README.md index 11deea2..67b3d4f 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Three separate packages ship from this repository, all from the same tag: | ---------------- | ------------------------------- | ----------------------------------------------- | | WordPress plugin | `humanmade/wp-pattern-library` | `composer require humanmade/wp-pattern-library` | | CLI | `@humanmade/wp-pattern-library` | `npm install -D @humanmade/wp-pattern-library` | -| GitHub Action | `humanmade/wp-pattern-library` | `uses: humanmade/wp-pattern-library@v0.3.0` | +| GitHub Action | `humanmade/wp-pattern-library` | `uses: humanmade/wp-pattern-library@v0.4.0` | The plugin belongs on the site you capture from. The CLI runs wherever you generate the library — your machine, or CI — so the site itself never needs Node. The action is a thin wrapper around the CLI for running the whole thing in a workflow; pin it to a released tag, as there is deliberately no moving `@v1` tag while the package is pre-1.0. diff --git a/docs/05-github-action.md b/docs/05-github-action.md index 9004a1d..2c2c298 100644 --- a/docs/05-github-action.md +++ b/docs/05-github-action.md @@ -94,7 +94,7 @@ jobs: node-version: 24 - name: Build the pattern library - uses: humanmade/wp-pattern-library@v0.3.0 + uses: humanmade/wp-pattern-library@v0.4.0 with: site-url: ${{ vars.PATTERN_LIBRARY_SITE }} username: ${{ secrets.PATTERN_LIBRARY_WP_USER }} @@ -234,7 +234,7 @@ Send the proxy's credentials alongside the application password: ```yaml - name: Build the pattern library - uses: humanmade/wp-pattern-library@v0.3.0 + uses: humanmade/wp-pattern-library@v0.4.0 with: site-url: ${{ vars.PATTERN_LIBRARY_SITE }} username: ${{ secrets.PATTERN_LIBRARY_WP_USER }} diff --git a/examples/refresh-pattern-library.yml b/examples/refresh-pattern-library.yml index 5a6cbca..519624d 100644 --- a/examples/refresh-pattern-library.yml +++ b/examples/refresh-pattern-library.yml @@ -53,7 +53,7 @@ jobs: node-version: 24 - name: Build the pattern library - uses: humanmade/wp-pattern-library@v0.3.0 + uses: humanmade/wp-pattern-library@v0.4.0 with: site-url: ${{ inputs.site_url || vars.PATTERN_LIBRARY_SITE }} username: ${{ secrets.PATTERN_LIBRARY_WP_USER }} diff --git a/package.json b/package.json index 2713f38..9760edb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@humanmade/wp-pattern-library", - "version": "0.3.0", + "version": "0.4.0", "description": "Generate a Markdown pattern library, with screenshots, from a WordPress site's registered block patterns.", "license": "GPL-2.0-or-later", "repository": { diff --git a/plugin.php b/plugin.php index 744595f..2c8806c 100644 --- a/plugin.php +++ b/plugin.php @@ -2,7 +2,7 @@ /** * Plugin Name: WP Pattern Library * Description: Serves a manifest and isolated previews of the site's registered block patterns. - * Version: 0.3.0 + * Version: 0.4.0 * License: GPL-2.0-or-later * Requires PHP: 8.1 *