diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 36b494a8..8f3aa747 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -3,11 +3,13 @@ github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] patreon: # Replace with a single Patreon username open_collective: # Replace with a single Open Collective username -ko_fi: # Replace with a single Ko-fi username +ko_fi: crazywhalecc # Replace with a single Ko-fi username tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry liberapay: # Replace with a single Liberapay username issuehunt: # Replace with a single IssueHunt username otechie: # Replace with a single Otechie username lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry +# noinspection YAMLSchemaValidation +buy_me_a_coffee: # crazywhalecc custom: 'https://github.com/crazywhalecc/crazywhalecc/blob/master/FUNDING.md' # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000..8cf1f448 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,12 @@ +## What does this PR do? + + + +## Checklist before merging + +> If your PR involves the changes mentioned below and completed the action, please tick the corresponding option. +> If a modification is not involved, please skip it directly. + +- [ ] If it's an extension or dependency update, make sure adding related extensions in `src/global/test-extensions.php`. +- [ ] If you changed the behavior of static-php-cli, update docs in `./docs/`. +- [ ] If you updated `config/xxx.json` content, run `bin/spc dev:sort-config xxx`. diff --git a/.github/workflows/build-linux-arm.yml b/.github/workflows/build-linux-arm.yml index d36321e4..cd5acd53 100644 --- a/.github/workflows/build-linux-arm.yml +++ b/.github/workflows/build-linux-arm.yml @@ -15,6 +15,7 @@ on: default: '8.2' type: choice options: + - '8.3' - '8.2' - '8.1' - '8.0' @@ -33,7 +34,12 @@ on: description: extensions to compile (comma separated) required: true type: string + prefer-pre-built: + description: prefer pre-built binaries (reduce build time) + type: boolean + default: true debug: + description: enable debug logs type: boolean env: @@ -44,18 +50,36 @@ jobs: name: build ${{ inputs.version }} on ${{ inputs.operating-system }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 + + # Cache composer dependencies + - id: cache-composer-deps + uses: actions/cache@v4 + with: + path: vendor + key: composer-dependencies + + # If there's no Composer cache, install dependencies + - if: steps.cache-composer-deps.outputs.cache-hit != 'true' + run: composer update --no-dev --classmap-authoritative + + - name: Generate hashed key for download cache + run: | + INPUT_HASH=$(echo "${{ runner.os }}-${{ inputs.version }}-${{ inputs.extensions }}" | sha256sum | awk '{print $1}') + echo "INPUT_HASH=${INPUT_HASH}" >> $GITHUB_ENV # Cache downloaded source - id: cache-download - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: downloads - key: php-${{ inputs.version }}-dependencies + key: php-${{ env.INPUT_HASH }} # With or without debug - if: inputs.debug == true run: echo "SPC_BUILD_DEBUG=--debug" >> $GITHUB_ENV + - if: inputs.prefer-pre-built == true + run: echo "SPC_PRE_BUILT=--prefer-pre-built" >> $env:GITHUB_ENV # With target select: cli, micro or both - if: ${{ inputs.build-cli == true }} @@ -67,38 +91,38 @@ jobs: # If there's no dependencies cache, fetch sources, with or without debug - if: steps.cache-download.outputs.cache-hit != 'true' - run: SPC_USE_ARCH=${{ inputs.operating-system }} ./bin/spc-alpine-docker download --with-php=${{ inputs.version }} --all ${{ env.SPC_BUILD_DEBUG }} + run: SPC_USE_ARCH=${{ inputs.operating-system }} ./bin/spc-alpine-docker download --with-php=${{ inputs.version }} --for-extensions=${{ inputs.extensions }} ${{ env.SPC_BUILD_DEBUG }} ${{ env.SPC_PRE_BUILT }} # Run build command - run: SPC_USE_ARCH=${{ inputs.operating-system }} ./bin/spc-alpine-docker build ${{ inputs.extensions }} ${{ env.SPC_BUILD_DEBUG }} ${{ env.SPC_BUILD_CLI }} ${{ env.SPC_BUILD_MICRO }} ${{ env.SPC_BUILD_FPM }} # Upload cli executable - if: ${{ inputs.build-cli == true }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: php-${{ inputs.version }}-linux-${{ inputs.operating-system }} path: buildroot/bin/php # Upload micro self-extracted executable - if: ${{ inputs.build-micro == true }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: micro-${{ inputs.version }}-linux-${{ inputs.operating-system }} path: buildroot/bin/micro.sfx # Upload fpm executable - if: ${{ inputs.build-fpm == true }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: php-fpm-${{ inputs.version }}-linux-${{ inputs.operating-system }} path: buildroot/bin/php-fpm # Upload extensions metadata - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: license-files path: buildroot/license/ - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: build-meta path: | diff --git a/.github/workflows/build-linux-x86_64.yml b/.github/workflows/build-linux-x86_64.yml index 90705f33..a637dd7c 100644 --- a/.github/workflows/build-linux-x86_64.yml +++ b/.github/workflows/build-linux-x86_64.yml @@ -9,6 +9,7 @@ on: default: '8.2' type: choice options: + - '8.3' - '8.2' - '8.1' - '8.0' @@ -27,7 +28,12 @@ on: description: extensions to compile (comma separated) required: true type: string + prefer-pre-built: + description: prefer pre-built binaries (reduce build time) + type: boolean + default: true debug: + description: enable debug logs type: boolean env: @@ -38,11 +44,11 @@ jobs: name: build ${{ inputs.version }} on Linux x86_64 runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 # Cache composer dependencies - id: cache-composer-deps - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: vendor key: composer-dependencies @@ -51,16 +57,23 @@ jobs: - if: steps.cache-composer-deps.outputs.cache-hit != 'true' run: composer update --no-dev --classmap-authoritative + - name: Generate hashed key for download cache + run: | + INPUT_HASH=$(echo "${{ runner.os }}-${{ inputs.version }}-${{ inputs.extensions }}" | sha256sum | awk '{print $1}') + echo "INPUT_HASH=${INPUT_HASH}" >> $GITHUB_ENV + # Cache downloaded source - id: cache-download - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: downloads - key: php-${{ inputs.version }}-dependencies + key: php-${{ env.INPUT_HASH }} # With or without debug - if: inputs.debug == true run: echo "SPC_BUILD_DEBUG=--debug" >> $GITHUB_ENV + - if: inputs.prefer-pre-built == true + run: echo "SPC_PRE_BUILT=--prefer-pre-built" >> $env:GITHUB_ENV # With target select: cli, micro or both - if: ${{ inputs.build-cli == true }} @@ -72,38 +85,38 @@ jobs: # If there's no dependencies cache, fetch sources, with or without debug - if: steps.cache-download.outputs.cache-hit != 'true' - run: CACHE_API_EXEC=yes ./bin/spc-alpine-docker download --with-php=${{ inputs.version }} --all ${{ env.SPC_BUILD_DEBUG }} + run: CACHE_API_EXEC=yes ./bin/spc-alpine-docker download --with-php=${{ inputs.version }} --for-extensions=${{ inputs.extensions }} ${{ env.SPC_BUILD_DEBUG }} ${{ env.SPC_PRE_BUILT }} # Run build command - run: ./bin/spc-alpine-docker build ${{ inputs.extensions }} ${{ env.SPC_BUILD_DEBUG }} ${{ env.SPC_BUILD_CLI }} ${{ env.SPC_BUILD_MICRO }} ${{ env.SPC_BUILD_FPM }} # Upload cli executable - if: ${{ inputs.build-cli == true }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: php-${{ inputs.version }}-${{ env.SPC_BUILD_OS }} path: buildroot/bin/php # Upload micro self-extracted executable - if: ${{ inputs.build-micro == true }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: micro-${{ inputs.version }}-${{ env.SPC_BUILD_OS }} path: buildroot/bin/micro.sfx # Upload fpm executable - if: ${{ inputs.build-fpm == true }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: php-fpm-${{ inputs.version }}-${{ env.SPC_BUILD_OS }} path: buildroot/bin/php-fpm # Upload extensions metadata - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: license-files path: buildroot/license/ - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: build-meta path: | diff --git a/.github/workflows/build-macos-aarch64.yml b/.github/workflows/build-macos-aarch64.yml new file mode 100644 index 00000000..0ffe4bd2 --- /dev/null +++ b/.github/workflows/build-macos-aarch64.yml @@ -0,0 +1,139 @@ +name: CI on arm64 macOS + +on: + workflow_dispatch: + inputs: + version: + required: true + description: php version to compile + default: '8.2' + type: choice + options: + - '8.3' + - '8.2' + - '8.1' + - '8.0' + - '7.4' + build-cli: + description: build cli binary + default: true + type: boolean + build-micro: + description: build phpmicro binary + type: boolean + build-fpm: + description: build fpm binary + type: boolean + extensions: + description: extensions to compile (comma separated) + required: true + type: string + prefer-pre-built: + description: prefer pre-built binaries (reduce build time) + type: boolean + default: true + debug: + description: enable debug logs + type: boolean + +env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + +jobs: + build: + name: build ${{ inputs.version }} on macOS arm64 + runs-on: macos-14 + steps: + - uses: actions/checkout@v4 + + # Install macOS missing packages and mark os suffix + - run: | + brew install automake gzip + echo "SPC_BUILD_OS=macos" >> $GITHUB_ENV + + + - name: "Setup PHP" + uses: shivammathur/setup-php@v2 + with: + php-version: 8.1 + tools: pecl, composer + extensions: curl, openssl, mbstring, tokenizer + ini-values: memory_limit=-1 + + + # Cache composer dependencies + - id: cache-composer-deps + uses: actions/cache@v4 + with: + path: vendor + key: composer-dependencies + + # If there's no Composer cache, install dependencies + - if: steps.cache-composer-deps.outputs.cache-hit != 'true' + run: composer update --no-dev --classmap-authoritative + + - name: Generate hashed key for download cache + run: | + INPUT_HASH=$(echo "${{ runner.os }}-${{ inputs.version }}-${{ inputs.extensions }}" | sha256sum | awk '{print $1}') + echo "INPUT_HASH=${INPUT_HASH}" >> $GITHUB_ENV + + # Cache downloaded source + - id: cache-download + uses: actions/cache@v4 + with: + path: downloads + key: php-${{ env.INPUT_HASH }} + + # With or without debug + - if: inputs.debug == true + run: echo "SPC_BUILD_DEBUG=--debug" >> $GITHUB_ENV + - if: inputs.prefer-pre-built == true + run: echo "SPC_PRE_BUILT=--prefer-pre-built" >> $env:GITHUB_ENV + + # With target select: cli, micro or both + - if: ${{ inputs.build-cli == true }} + run: echo "SPC_BUILD_CLI=--build-cli" >> $GITHUB_ENV + - if: ${{ inputs.build-micro == true }} + run: echo "SPC_BUILD_MICRO=--build-micro" >> $GITHUB_ENV + - if: ${{ inputs.build-fpm == true }} + run: echo "SPC_BUILD_FPM=--build-fpm" >> $GITHUB_ENV + + # If there's no dependencies cache, fetch sources, with or without debug + - if: steps.cache-download.outputs.cache-hit != 'true' + run: ./bin/spc download --with-php=${{ inputs.version }} --for-extensions=${{ inputs.extensions }} ${{ env.SPC_BUILD_DEBUG }} ${{ env.SPC_PRE_BUILT }} + + # Run build command + - run: ./bin/spc build ${{ inputs.extensions }} ${{ env.SPC_BUILD_DEBUG }} ${{ env.SPC_BUILD_CLI }} ${{ env.SPC_BUILD_MICRO }} ${{ env.SPC_BUILD_FPM }} + + # Upload cli executable + - if: ${{ inputs.build-cli == true }} + uses: actions/upload-artifact@v4 + with: + name: php-${{ inputs.version }}-${{ env.SPC_BUILD_OS }} + path: buildroot/bin/php + + # Upload micro self-extracted executable + - if: ${{ inputs.build-micro == true }} + uses: actions/upload-artifact@v4 + with: + name: micro-${{ inputs.version }}-${{ env.SPC_BUILD_OS }} + path: buildroot/bin/micro.sfx + + # Upload fpm executable + - if: ${{ inputs.build-fpm == true }} + uses: actions/upload-artifact@v4 + with: + name: php-fpm-${{ inputs.version }}-${{ env.SPC_BUILD_OS }} + path: buildroot/bin/php-fpm + + # Upload extensions metadata + - uses: actions/upload-artifact@v4 + with: + name: license-files + path: buildroot/license/ + - uses: actions/upload-artifact@v4 + with: + name: build-meta + path: | + buildroot/build-extensions.json + buildroot/build-libraries.json diff --git a/.github/workflows/build-macos-x86_64.yml b/.github/workflows/build-macos-x86_64.yml index 6727fcbd..d02bd09f 100644 --- a/.github/workflows/build-macos-x86_64.yml +++ b/.github/workflows/build-macos-x86_64.yml @@ -9,6 +9,7 @@ on: default: '8.2' type: choice options: + - '8.3' - '8.2' - '8.1' - '8.0' @@ -27,7 +28,12 @@ on: description: extensions to compile (comma separated) required: true type: string + prefer-pre-built: + description: prefer pre-built binaries (reduce build time) + type: boolean + default: true debug: + description: enable debug logs type: boolean env: @@ -36,18 +42,26 @@ env: jobs: build: name: build ${{ inputs.version }} on macOS x86_64 - runs-on: macos-latest + runs-on: macos-13 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 # Install macOS missing packages and mark os suffix - run: | brew install automake gzip echo "SPC_BUILD_OS=macos" >> $GITHUB_ENV + - name: "Setup PHP" + uses: shivammathur/setup-php@v2 + with: + php-version: 8.1 + tools: pecl, composer + extensions: curl, openssl, mbstring, tokenizer + ini-values: memory_limit=-1 + # Cache composer dependencies - id: cache-composer-deps - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: vendor key: composer-dependencies @@ -56,16 +70,23 @@ jobs: - if: steps.cache-composer-deps.outputs.cache-hit != 'true' run: composer update --no-dev --classmap-authoritative + - name: Generate hashed key for download cache + run: | + INPUT_HASH=$(echo "${{ runner.os }}-${{ inputs.version }}-${{ inputs.extensions }}" | sha256sum | awk '{print $1}') + echo "INPUT_HASH=${INPUT_HASH}" >> $GITHUB_ENV + # Cache downloaded source - id: cache-download - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: downloads - key: php-${{ inputs.version }}-dependencies + key: php-${{ env.INPUT_HASH }} # With or without debug - if: inputs.debug == true run: echo "SPC_BUILD_DEBUG=--debug" >> $GITHUB_ENV + - if: inputs.prefer-pre-built == true + run: echo "SPC_PRE_BUILT=--prefer-pre-built" >> $env:GITHUB_ENV # With target select: cli, micro or both - if: ${{ inputs.build-cli == true }} @@ -77,38 +98,38 @@ jobs: # If there's no dependencies cache, fetch sources, with or without debug - if: steps.cache-download.outputs.cache-hit != 'true' - run: ./bin/spc download --with-php=${{ inputs.version }} --all ${{ env.SPC_BUILD_DEBUG }} + run: ./bin/spc download --with-php=${{ inputs.version }} --for-extensions=${{ inputs.extensions }} ${{ env.SPC_BUILD_DEBUG }} ${{ env.SPC_PRE_BUILT }} # Run build command - run: ./bin/spc build ${{ inputs.extensions }} ${{ env.SPC_BUILD_DEBUG }} ${{ env.SPC_BUILD_CLI }} ${{ env.SPC_BUILD_MICRO }} ${{ env.SPC_BUILD_FPM }} # Upload cli executable - if: ${{ inputs.build-cli == true }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: php-${{ inputs.version }}-${{ env.SPC_BUILD_OS }} path: buildroot/bin/php # Upload micro self-extracted executable - if: ${{ inputs.build-micro == true }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: micro-${{ inputs.version }}-${{ env.SPC_BUILD_OS }} path: buildroot/bin/micro.sfx # Upload fpm executable - if: ${{ inputs.build-fpm == true }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: php-fpm-${{ inputs.version }}-${{ env.SPC_BUILD_OS }} path: buildroot/bin/php-fpm # Upload extensions metadata - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: license-files path: buildroot/license/ - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: build-meta path: | diff --git a/.github/workflows/build-windows-x86_64.yml b/.github/workflows/build-windows-x86_64.yml new file mode 100644 index 00000000..17664851 --- /dev/null +++ b/.github/workflows/build-windows-x86_64.yml @@ -0,0 +1,115 @@ +name: CI on x86_64 Windows + +on: + workflow_dispatch: + inputs: + version: + required: true + description: php version to compile + default: '8.2' + type: choice + options: + - '8.3' + - '8.2' + - '8.1' + - '8.0' + - '7.4' + build-cli: + description: build cli binary + default: true + type: boolean + build-micro: + description: build phpmicro binary + type: boolean + extensions: + description: extensions to compile (comma separated) + required: true + type: string + prefer-pre-built: + description: prefer pre-built binaries (reduce build time) + type: boolean + default: true + debug: + description: enable debug logs + type: boolean + +env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + +jobs: + build: + name: build ${{ inputs.version }} on Windows x86_64 + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + + # Cache composer dependencies + - id: cache-composer-deps + uses: actions/cache@v4 + with: + path: vendor + key: composer-dependencies + + # If there's no Composer cache, install dependencies + - if: steps.cache-composer-deps.outputs.cache-hit != 'true' + run: composer update --no-dev --classmap-authoritative + + - name: Generate hashed key for download cache + shell: bash + run: | + INPUT_HASH=$(echo "${{ runner.os }}-${{ inputs.version }}-${{ inputs.extensions }}" | sha256sum | awk '{print $1}') + echo "INPUT_HASH=${INPUT_HASH}" >> "$GITHUB_ENV" + + # Cache downloaded source + - id: cache-download + uses: actions/cache@v4 + with: + path: downloads + key: php-${{ env.INPUT_HASH }} + + # With or without debug + - if: inputs.debug == true + run: echo "SPC_BUILD_DEBUG=--debug" >> $env:GITHUB_ENV + - if: inputs.prefer-pre-built == true + run: echo "SPC_PRE_BUILT=--prefer-pre-built" >> $env:GITHUB_ENV + + # With target select: cli, micro or both + - if: ${{ inputs.build-cli == true }} + run: echo "SPC_BUILD_CLI=--build-cli" >> $env:GITHUB_ENV + - if: ${{ inputs.build-micro == true }} + run: echo "SPC_BUILD_MICRO=--build-micro" >> $env:GITHUB_ENV + + - run: ./bin/spc doctor + + # If there's no dependencies cache, fetch sources, with or without debug + - if: steps.cache-download.outputs.cache-hit != 'true' + run: ./bin/spc download --with-php="${{ inputs.version }}" --for-extensions="${{ inputs.extensions }}" ${{ env.SPC_BUILD_DEBUG }} ${{ env.SPC_PRE_BUILT }} + + # Run build command + - run: ./bin/spc build "${{ inputs.extensions }}" ${{ env.SPC_BUILD_DEBUG }} ${{ env.SPC_BUILD_CLI }} ${{ env.SPC_BUILD_MICRO }} ${{ env.SPC_BUILD_FPM }} + + # Upload cli executable + - if: ${{ inputs.build-cli == true }} + uses: actions/upload-artifact@v4 + with: + name: php-${{ inputs.version }} + path: buildroot/bin/php.exe + + # Upload micro self-extracted executable + - if: ${{ inputs.build-micro == true }} + uses: actions/upload-artifact@v4 + with: + name: micro-${{ inputs.version }} + path: buildroot/bin/micro.sfx + + # Upload extensions metadata + - uses: actions/upload-artifact@v4 + with: + name: license-files + path: buildroot/license/ + - uses: actions/upload-artifact@v4 + with: + name: build-meta + path: | + buildroot/build-extensions.json + buildroot/build-libraries.json diff --git a/.github/workflows/download-cache.yml b/.github/workflows/download-cache.yml deleted file mode 100644 index 86b4322e..00000000 --- a/.github/workflows/download-cache.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: archive download sources weekly - -on: - workflow_dispatch: - schedule: - - cron: "* 14 * * 5" - -env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - -jobs: - download: - name: cache download sources - runs-on: ubuntu-latest - strategy: - matrix: - php-version: [ "8.0", "8.1", "8.2" ] - steps: - - uses: actions/checkout@v3 - - # Cache composer dependencies - - id: cache-composer-deps - uses: actions/cache@v3 - with: - path: vendor - key: composer-dependencies - - # If there's no Composer cache, install dependencies - - if: steps.cache-composer-deps.outputs.cache-hit != 'true' - run: composer update --no-dev - - # If there's no dependencies cache, fetch sources, with or without debug - - if: steps.cache-download.outputs.cache-hit != 'true' - run: ./bin/spc download --with-php=${{ matrix.php-version }} --all --debug - - # Upload downloaded files - - uses: actions/upload-artifact@v3 - with: - name: download-files-${{ matrix.php-version }} - path: downloads/ diff --git a/.github/workflows/release-build.yml b/.github/workflows/release-build.yml index cb08ba23..4b074fc2 100644 --- a/.github/workflows/release-build.yml +++ b/.github/workflows/release-build.yml @@ -1,47 +1,133 @@ -name: Upload SPC Binary (Release) +name: Build SPC Binary on: + push: + branches: [ "main" ] release: types: - published workflow_dispatch: +env: + PHP_VERSION: 8.2 + MICRO_VERSION: 8.2.18 + jobs: build-release-artifacts: - name: "Upload SPC Binary (Release)" - runs-on: ubuntu-latest + name: "Build SPC Binary for ${{ matrix.operating-system.name }}" + runs-on: ${{ matrix.operating-system.os }} strategy: matrix: operating-system: - - "linux-x86_64" - - "macos-x86_64" - - "linux-aarch64" - - "macos-aarch64" + - name: "linux-x86_64" + os: "ubuntu-latest" + filename: "spc-linux-x86_64.tar.gz" + - name: "macos-x86_64" + os: "macos-13" + filename: "spc-macos-x86_64.tar.gz" + - name: "linux-aarch64" + os: "ubuntu-latest" + filename: "spc-linux-aarch64.tar.gz" + - name: "macos-aarch64" + os: "macos-14" + filename: "spc-macos-aarch64.tar.gz" + - name: "windows-x64" + os: "ubuntu-latest" + filename: "spc-windows-x64.exe" steps: - name: "Checkout" uses: "actions/checkout@v4" - - name: Reuse static-php-cli-hosted artifacts - uses: dawidd6/action-download-artifact@v2 + - if: inputs.debug == true + run: echo "SPC_BUILD_DEBUG=--debug" >> $GITHUB_ENV + + - name: "Install PHP for official runners" + uses: "shivammathur/setup-php@v2" with: - repo: static-php/static-php-cli-hosted - branch: master - workflow: build-spc-release.yml - name: "spc-${{ matrix.operating-system }}" + coverage: none + tools: composer:v2 + php-version: "${{ env.PHP_VERSION }}" + ini-values: memory_limit=-1 - - name: "Archive Executable" + - name: "Get Composer Cache Directory" + id: composer-cache run: | - tar -czf spc-${{ matrix.operating-system }}.tar.gz spc - echo "filename=spc-${{ matrix.operating-system }}.tar.gz" >> $GITHUB_ENV + echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - name: upload binaries to release + - name: "Cache Composer dependencies" + uses: "actions/cache@v4" + with: + path: "${{ steps.composer-cache.outputs.dir }}" + key: "php-${{ env.PHP_VERSION }}-locked-composer-${{ hashFiles('**/composer.lock') }}" + restore-keys: | + php-${{ env.PHP_VERSION }}-locked-composer + + - name: "Install Locked Dependencies" + run: "composer install --no-interaction --no-progress" + + - name: "Build PHAR File" + run: "composer build:phar" + + - name: "Download Minimal Combination" + run: | + if [ "${{ matrix.operating-system.name }}" = "windows-x64" ]; then + curl -fsSL https://dl.static-php.dev/static-php-cli/windows/spc-min/php-${{ env.MICRO_VERSION }}-micro-win.zip -o tmp.zip + unzip tmp.zip + else + curl -fsSL https://dl.static-php.dev/static-php-cli/minimal/php-${{ env.MICRO_VERSION }}-micro-${{ matrix.operating-system.name }}.tar.gz -o tmp.tgz + tar -zxvf tmp.tgz + fi + + - name: "Generate Executable" + run: | + bin/spc micro:combine spc.phar -M micro.sfx -O spc -I "memory_limit=2G" + if [ "${{ matrix.operating-system.name }}" = "windows-x64" ]; then + mv spc spc.exe + else + chmod +x spc + fi + if [ "${{ matrix.operating-system.name }}" = "macos-aarch64" ] || [ "${{ matrix.operating-system.name }}" = "macos-x86_64" ]; then + sudo xattr -cr ./spc + fi + + - name: "Archive Executable and Validate Binary" + run: | + if [ "${{ matrix.operating-system.name }}" != "windows-x64" ]; then + tar -czf ${{ matrix.operating-system.filename }} spc + # validate spc binary + if [ "${{ matrix.operating-system.name }}" == "linux-x86_64" ]; then + ./spc dev:extensions + fi + fi + + - name: "Copy file" + run: | + if [ "${{ matrix.operating-system.name }}" != "windows-x64" ]; then + mkdir dist/ && cp ${{ matrix.operating-system.filename }} dist/ && cp spc dist/spc-${{ matrix.operating-system.name }} + else + mkdir dist/ && cp spc.exe dist/${{ matrix.operating-system.filename }} + echo "SUFFIX=.exe" >> $GITHUB_ENV + fi + + - name: "Upload Binaries to Release" uses: softprops/action-gh-release@v1 if: ${{startsWith(github.ref, 'refs/tags/') }} with: - files: ${{ env.filename }} + files: dist/${{ matrix.operating-system.filename }} + + - name: "Deploy to self-hosted OSS" + if: github.repository == 'crazywhalecc/static-php-cli' + uses: static-php/upload-s3-action@v1.0.0 + with: + aws_key_id: ${{ secrets.AWS_KEY_ID }} + aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws_bucket: ${{ secrets.AWS_BUCKET }} + source_dir: "dist/" + destination_dir: static-php-cli/spc-bin/nightly/ + endpoint: ${{ secrets.AWS_ENDPOINT }} - name: "Upload Artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - path: spc - name: spc-${{ matrix.operating-system }} + path: spc${{ env.SUFFIX }} + name: spc-${{ matrix.operating-system.name }}${{ env.SUFFIX }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index d7223f64..1088c104 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,98 +1,193 @@ name: Tests on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] + push: + branches: + - main + paths: + - 'src/globals/test-extensions.php' + pull_request: + branches: [ "main" ] + paths: + - 'src/**' + - 'config/**' + - '.github/workflows/tests.yml' + - 'bin/**' + - 'composer.json' + - 'box.json' + - '.php-cs-fixer.php' permissions: - contents: read + contents: read + +env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} jobs: - php-cs-fixer: - runs-on: ubuntu-latest - timeout-minutes: 10 - steps: - - name: Checkout - uses: actions/checkout@v4 + php-cs-fixer: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: "Checkout" + uses: actions/checkout@v4 - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: '8.1' - extensions: curl, openssl, mbstring - ini-values: memory_limit=-1 - tools: pecl, composer, php-cs-fixer + - name: "Setup PHP" + uses: shivammathur/setup-php@v2 + with: + php-version: '8.1' + extensions: curl, openssl, mbstring + ini-values: memory_limit=-1 + tools: pecl, composer, php-cs-fixer - - name: Run PHP-CS-Fixer fix - run: php-cs-fixer fix --dry-run --diff --ansi + - name: Run PHP-CS-Fixer fix + run: php-cs-fixer fix --dry-run --diff --ansi - phpstan: - runs-on: ubuntu-latest - timeout-minutes: 10 - steps: - - name: Checkout - uses: actions/checkout@v4 + phpstan: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: "Checkout" + uses: actions/checkout@v4 - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: '8.1' - extensions: curl, openssl, mbstring - ini-values: memory_limit=-1 - tools: composer + - name: "Setup PHP" + uses: shivammathur/setup-php@v2 + with: + php-version: '8.1' + extensions: curl, openssl, mbstring + ini-values: memory_limit=-1 + tools: composer - - name: Cache Composer packages - id: composer-cache - uses: actions/cache@v3 - with: - path: vendor - key: ${{ runner.os }}-phpstan-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-phpstan- + - name: "Cache Composer packages" + id: composer-cache + uses: actions/cache@v4 + with: + path: vendor + key: ${{ runner.os }}-phpstan-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-phpstan- - - name: Install Dependencies - run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist + - name: "Install Dependencies" + run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist - - name: Run phpstan - run: vendor/bin/phpstan analyse + - name: "Run phpstan" + run: vendor/bin/phpstan analyse - phpunit: - name: PHPUnit (PHP ${{ matrix.php }}) - runs-on: ubuntu-latest - timeout-minutes: 10 - strategy: - matrix: - include: - - php: '8.1' - - php: '8.2' - fail-fast: false + phpunit: + name: "PHPUnit (PHP ${{ matrix.php }})" + runs-on: ubuntu-latest + timeout-minutes: 10 + strategy: + matrix: + include: + - php: '8.1' + - php: '8.2' + - php: '8.3' - steps: - - name: Checkout - uses: actions/checkout@v4 + steps: + - name: "Checkout" + uses: actions/checkout@v4 - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: "${{ matrix.php }}" - tools: pecl, composer - extensions: curl, openssl, mbstring - ini-values: memory_limit=-1 + - name: "Setup PHP" + uses: shivammathur/setup-php@v2 + with: + php-version: "${{ matrix.php }}" + tools: pecl, composer + extensions: curl, openssl, mbstring + ini-values: memory_limit=-1 - - name: Cache Composer packages - id: composer-cache - uses: actions/cache@v3 - with: - path: vendor - key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-php- + - name: "Cache Composer packages" + id: composer-cache + uses: actions/cache@v4 + with: + path: vendor + key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-php- - - name: Install Dependencies - run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist + - name: "Install Dependencies" + run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist - - name: Run PHPUnit tests - run: | - vendor/bin/phpunit tests/ --no-coverage + - name: "Run PHPUnit Tests" + run: | + vendor/bin/phpunit tests/ --no-coverage + + build: + name: "Build PHP Test (PHP ${{ matrix.php }} ${{ matrix.os }})" + runs-on: ${{ matrix.os }} + timeout-minutes: 120 + strategy: + matrix: + php: + - "8.0" + - "8.1" + - "8.2" + - "8.3" + os: + - ubuntu-latest + - macos-13 + - windows-latest + - macos-14 + fail-fast: false + steps: + - name: "Checkout" + uses: actions/checkout@v4 + + - name: "Setup PHP" + uses: shivammathur/setup-php@v2 + with: + php-version: 8.2 + tools: pecl, composer + extensions: curl, openssl, mbstring + ini-values: memory_limit=-1 + + - name: "Cache composer packages" + id: composer-cache + uses: actions/cache@v4 + with: + path: vendor + key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-php- + + # Cache downloaded source + - id: cache-download + uses: actions/cache@v4 + with: + path: downloads + key: php-${{ matrix.php }}-dependencies + + - name: "Install Dependencies" + run: composer update -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist + + - name: "Run Build Tests (doctor)" + run: bin/spc doctor --auto-fix + + - name: "Prepare UPX for Windows" + if: matrix.os == 'windows-latest' + run: | + bin/spc install-pkg upx + echo "UPX_CMD=$(php src/globals/test-extensions.php upx)" >> $env:GITHUB_ENV + + - name: "Prepare UPX for Linux" + if: matrix.os == 'ubunut-latest' + run: | + bin/spc install-pkg upx + echo "UPX_CMD=$(php src/globals/test-extensions.php upx)" >> $GITHUB_ENV + + - name: "Run Build Tests (download)" + run: | + bin/spc download --for-extensions="$(php src/globals/test-extensions.php extensions)" --for-libs="$(php src/globals/test-extensions.php libs)" --with-php=${{ matrix.php }} --ignore-cache-sources=php-src --debug --retry=5 --shallow-clone + + - name: "Download pre-built libraries for pkg-config" + if: matrix.os != 'windows-latest' + run: | + bin/spc del-download pkg-config + bin/spc download pkg-config --prefer-pre-built --debug + + - name: "Run Build Tests (build, *nix)" + if: matrix.os != 'windows-latest' + run: bin/spc build "$(php src/globals/test-extensions.php extensions)" $(php src/globals/test-extensions.php zts) $(php src/globals/test-extensions.php no_strip) $UPX_CMD --with-libs="$(php src/globals/test-extensions.php libs)" --build-cli --build-micro --build-fpm --debug + + - name: "Run Build Tests (build, windows)" + if: matrix.os == 'windows-latest' + run: bin/spc build "$(php src/globals/test-extensions.php extensions)" $(php src/globals/test-extensions.php zts) $(php src/globals/test-extensions.php no_strip) $env:UPX_CMD --with-libs="$(php src/globals/test-extensions.php libs)" --build-cli --build-micro --debug \ No newline at end of file diff --git a/.github/workflows/vitepress-deploy.yml b/.github/workflows/vitepress-deploy.yml new file mode 100644 index 00000000..c2192461 --- /dev/null +++ b/.github/workflows/vitepress-deploy.yml @@ -0,0 +1,71 @@ +name: Docs Auto Deploy +on: + push: + branches: + - main + paths: + - 'config/**.json' + - 'docs/**' + - 'package.json' + - 'yarn.lock' + - '.github/workflows/vitepress-deploy.yml' + +jobs: + build: + name: Deploy docs + runs-on: ubuntu-latest + if: github.repository == 'crazywhalecc/static-php-cli' + steps: + - name: Checkout master + uses: actions/checkout@v4 + + - uses: actions/setup-node@v3 + with: + node-version: 18 + cache: yarn + + - run: yarn install --frozen-lockfile + + - name: "Copy Config Files" + run: | + mkdir -p docs/.vitepress/config + cp -r config/* docs/.vitepress/config/ + + - name: "Install PHP for official runners" + uses: "shivammathur/setup-php@v2" + with: + coverage: none + tools: composer:v2 + php-version: 8.2 + ini-values: memory_limit=-1 + + - name: "Get Composer Cache Directory" + id: composer-cache + run: | + echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + + - name: "Cache Composer dependencies" + uses: "actions/cache@v4" + with: + path: "${{ steps.composer-cache.outputs.dir }}" + key: "php-8.2-locked-composer-${{ hashFiles('**/composer.lock') }}" + restore-keys: | + php-8.2-locked-composer + + - name: "Install Locked Dependencies" + run: "composer install --no-interaction --no-progress" + + - name: "Generate Extension Support List" + run: | + bin/spc dev:gen-ext-docs > docs/extensions.md + bin/spc dev:gen-ext-dep-docs > docs/deps-map-ext.md + bin/spc dev:gen-lib-dep-docs > docs/deps-map-lib.md + + - name: Build + run: yarn docs:build + + - name: Deploy to GitHub Pages + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: docs/.vitepress/dist diff --git a/.gitignore b/.gitignore index 1f749916..88d8e95f 100644 --- a/.gitignore +++ b/.gitignore @@ -16,15 +16,32 @@ docker/source/ # default source build root directory /buildroot/ +# default package root directory +/pkgroot/ + +# default pack:lib and release directory +/dist/ +packlib_files.txt + # tools cache files .php-cs-fixer.cache .phpunit.result.cache # exclude self-runtime /bin/* -!/bin/spc -!/bin/setup-runtime +!/bin/spc* +!/bin/setup-runtime* !/bin/spc-alpine-docker +# exclude windows build tools +/php-sdk-binary-tools/ + # default test directory /tests/var/ + +# VitePress +/node_modules/ +/docs/.vitepress/dist/ +/docs/.vitepress/cache/ +package-lock.json +pnpm-lock.yaml diff --git a/.php-cs-fixer.php b/.php-cs-fixer.php index 143407b8..428cf277 100644 --- a/.php-cs-fixer.php +++ b/.php-cs-fixer.php @@ -63,6 +63,7 @@ return (new PhpCsFixer\Config()) 'phpdoc_summary' => false, 'php_unit_test_class_requires_covers' => false, 'phpdoc_var_without_name' => false, + 'fully_qualified_strict_types' => false, ]) ->setFinder( PhpCsFixer\Finder::create()->in([__DIR__ . '/src', __DIR__ . '/tests/SPC']) diff --git a/README-zh.md b/README-zh.md index 33cb1d64..3f8c31df 100755 --- a/README-zh.md +++ b/README-zh.md @@ -1,58 +1,99 @@ # static-php-cli -Build single static PHP binary, with PHP project together, with popular extensions included. +[![English readme](https://img.shields.io/badge/README-English%20%F0%9F%87%AC%F0%9F%87%A7-moccasin?style=flat-square)](README.md) +[![Chinese readme](https://img.shields.io/badge/README-%E4%B8%AD%E6%96%87%20%F0%9F%87%A8%F0%9F%87%B3-moccasin?style=flat-square)](README-zh.md) +[![Releases](https://img.shields.io/packagist/v/crazywhalecc/static-php-cli?include_prereleases&label=Release&style=flat-square)](https://github.com/crazywhalecc/static-php-cli/releases) +[![CI](https://img.shields.io/github/actions/workflow/status/crazywhalecc/static-php-cli/tests.yml?branch=main&label=Build%20Test&style=flat-square)](https://github.com/crazywhalecc/static-php-cli/actions/workflows/tests.yml) +[![License](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)](https://github.com/crazywhalecc/static-php-cli/blob/main/LICENSE) +[![Extensions](https://img.shields.io/badge/Extension%20Counter-75+-yellow.svg?style=flat-square)](https://static-php.dev/zh/guide/extensions.html) -🌐 **[中文](README-zh.md)** | **[English](README.md)** +**static-php-cli**是一个用于静态编译、构建 PHP 解释器的工具,支持众多流行扩展。 -编译纯静态的 PHP Binary 二进制文件,带有各种扩展,让 PHP-cli 应用变得更便携!(cli SAPI) +目前 static-php-cli 支持 `cli`、`fpm`、`embed` 和 `micro` SAPI。 -截屏2023-05-02 15 53 13 +**static-php-cli**也支持将 PHP 代码和 PHP 运行时打包为一个文件并运行。 -同时可以使用 micro 二进制文件,将 PHP 源码和 PHP 二进制构建为一个文件分发!(micro SAPI) +## 特性 -截屏2023-05-02 15 52 33 +static-php-cli(简称 `spc`)有许多特性: -> 该 SAPI 源自 [dixyes/phpmicro](https://github.com/dixyes/phpmicro) 的 [Fork 仓库](https://github.com/static-php/phpmicro)。 +- :handbag: 构建独立的单文件 PHP 解释器,无需任何依赖 +- :hamburger: 构建 **[phpmicro](https://github.com/dixyes/phpmicro)** 自执行二进制(将 PHP 代码和 PHP 解释器打包为一个文件) +- :pill: 提供一键检查和修复编译环境的 Doctor 模块 +- :zap: 支持多个系统:`Linux`、`macOS`、`FreeBSD`、`Windows` +- :wrench: 高度自定义的代码 patch 功能 +- :books: 自带编译依赖管理 +- 📦 提供由自身编译的独立 `spc` 二进制(使用 spc 和 [box](https://github.com/box-project/box) 构建) +- :fire: 支持大量 [扩展](https://static-php.dev/zh/guide/extensions.html) +- :floppy_disk: 整合 UPX 工具(减小二进制文件体积) -[![Version](https://img.shields.io/badge/Version-2.0--rc8-pink.svg?style=flat-square)]() -[![License](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)]() -[![](https://img.shields.io/github/actions/workflow/status/static-php/static-php-cli-hosted/build-php-common.yml?branch=refactor&label=Build%20Common%20Extensions&style=flat-square)](https://github.com/static-php/static-php-cli-hosted/actions/workflows/build-php-common.yml) -[![](https://img.shields.io/badge/Extension%20Counter-65+-yellow.svg?style=flat-square)]() -[![](https://img.shields.io/github/search/crazywhalecc/static-php-cli/TODO?label=TODO%20Counter&style=flat-square)]() +**静态 php-cli:** -> 项目名称是 static-php-cli,但其实支持 cli、fpm、micro 和 embed SAPI 😎 +out1 + +**使用 phpmicro 打包 PHP 代码:** + +out2 ## 文档 目前 README 编写了基本用法。有关 static-php-cli 所有的功能,请点击这里查看文档:。 -## 自托管直接下载 +## 直接下载 -如果你不想自行编译 PHP,可以从本项目现有的示例 Action 下载 Artifact,也可以从自托管的服务器下载:[进入](https://dl.static-php.dev/static-php-cli/common/) +如果你不想自行编译 PHP,可以从本项目现有的示例 Action 下载 Artifact,也可以从自托管的服务器下载。 -> 自托管的服务器默认包含的扩展有:`bcmath,bz2,calendar,ctype,curl,dom,exif,fileinfo,filter,ftp,gd,gmp,iconv,xml,mbstring,mbregex,mysqlnd,openssl,pcntl,pdo,pdo_mysql,pdo_sqlite,phar,posix,redis,session,simplexml,soap,sockets,sqlite3,tokenizer,xmlwriter,xmlreader,zlib,zip` +| 组合名称 | 组合扩展数 | 系统 | 备注 | +|---------------------------------------------------------------------|----------------------------------------------------------------------------|-------------|--------------| +| [common](https://dl.static-php.dev/static-php-cli/common/) | [30+](https://dl.static-php.dev/static-php-cli/common/README.txt) | Linux/macOS | 体积为 7.5MB 左右 | +| [bulk](https://dl.static-php.dev/static-php-cli/bulk/) | [50+](https://dl.static-php.dev/static-php-cli/bulk/README.txt) | Linux/macOS | 体积为 25MB 左右 | +| [minimal](https://dl.static-php.dev/static-php-cli/minimal/) | [5](https://dl.static-php.dev/static-php-cli/minimal/README.txt) | Linux/macOS | 体积为 3MB 左右 | +| [spc-min](https://dl.static-php.dev/static-php-cli/windows/spc-min) | [5](https://dl.static-php.dev/static-php-cli/windows/spc-min/README.txt) | Windows | 体积为 3MB 左右 | +| [spc-max](https://dl.static-php.dev/static-php-cli/windows/spc-max) | [40+](https://dl.static-php.dev/static-php-cli/windows/spc-max/README.txt) | Windows | 体积为 8.5MB 左右 | + +> Linux 和 Windows 默认启用了 UPX 压缩,可减小 30~50% 的 PHP 二进制体积。 +> macOS 当前不支持 UPX,所以上述预编译的 macOS 版本体积可能较大。 ## 使用 static-php-cli 构建 PHP ### 编译环境需求 +- PHP >= 8.1(这是 spc 自身需要的版本,不是支持的构建版本) +- 扩展:`mbstring,tokenizer,phar` +- 系统安装了 `curl` 和 `git` + 是的,本项目采用 PHP 编写,编译前需要一个 PHP 环境,比较滑稽。 -但本项目默认可通过自身构建的 micro 和 static-php 二进制运行,其他只需要包含 mbstring、pcntl 扩展和 PHP 版本大于等于 8.1 即可。 +但本项目默认可通过自身构建的 micro 和 static-php 二进制运行,其他只需要包含上面提到的扩展和 PHP 版本大于等于 8.1 即可。 下面是架构支持情况,:octocat: 代表支持 GitHub Action 构建,:computer: 代表支持本地构建,空 代表暂不支持。 | | x86_64 | aarch64 | |---------|----------------------|----------------------| -| macOS | :octocat: :computer: | :computer: | +| macOS | :octocat: :computer: | :octocat: :computer: | | Linux | :octocat: :computer: | :octocat: :computer: | -| Windows | | | +| Windows | :octocat: :computer: | | | FreeBSD | :computer: | :computer: | -> macOS-arm64 因 GitHub 暂未提供 arm runner,如果要构建 arm 二进制,可以使用手动构建。 +当前支持编译的 PHP 版本: -目前支持编译的 PHP 版本为:`7.3`,`7.4`,`8.0`,`8.1`,`8.2`,`8.3`。 +> :warning: 支持,但 static-php-cli 作者可能不再提供补丁修复 +> +> :heavy_check_mark: 支持 +> +> :x: 不支持 -### 支持的扩展情况 +| PHP Version | Status | Comment | +|-------------|--------------------|------------------------------| +| 7.2 | :x: | | +| 7.3 | :warning: | phpmicro 和许多扩展不支持 7.3、7.4 版本 | +| 7.4 | :warning: | phpmicro 和许多扩展不支持 7.3、7.4 版本 | +| 8.0 | :heavy_check_mark: | PHP 官方已停止 8.0 的维护 | +| 8.1 | :heavy_check_mark: | PHP 官方仅对 8.1 提供安全更新 | +| 8.2 | :heavy_check_mark: | | +| 8.3 | :heavy_check_mark: | | +| 8.4 | :x: | WIP | + +### 支持的扩展 请先根据下方扩展列表选择你要编译的扩展。 @@ -61,7 +102,7 @@ Build single static PHP binary, with PHP project together, with popular extensio > 如果这里没有你需要的扩展,可以提交 Issue。 -### 使用 Actions 构建 +### 在线构建(使用 GitHub Actions) 使用 GitHub Action 可以方便地构建一个静态编译的 PHP,同时可以自行定义要编译的扩展。 @@ -72,72 +113,89 @@ Build single static PHP binary, with PHP project together, with popular extensio 如果你选择了 `debug`,则会在构建时输出所有日志,包括编译的日志,以供排查错误。 -### 手动构建(使用 SPC 二进制) +### 本地构建(使用 spc 二进制,推荐) -本项目提供了一个 static-php-cli 的二进制文件,你可以直接下载对应平台的二进制文件,然后使用它来构建静态的 PHP。目前 `spc` 二进制支持的平台有 Linux 和 macOS。 +该项目提供了 static-php-cli 的二进制文件:`spc`。 +您可以使用 `spc` 二进制文件,无需安装任何运行时(用起来就像 golang 程序)。 +目前,`spc` 二进制文件提供的平台有 Linux 和 macOS。 -下面是从 GitHub Action 下载的方法: - -1. 进入 [GitHub Action](https://github.com/crazywhalecc/static-php-cli/actions/workflows/release-build.yml)。 -2. 选择一个最新的构建任务,进入后选择 `Artifacts`,下载对应平台的二进制文件。 -3. 解压 `.zip` 文件。解压后,为其添加执行权限:`chmod +x ./spc`。 - -你也可以从自托管的服务器下载二进制文件:[进入](https://dl.static-php.dev/static-php-cli/spc-bin/nightly/)。 - -### 手动构建(使用源码) - -先克隆本项目: +使用以下命令从自托管服务器下载: ```bash +# Download from self-hosted nightly builds (sync with main branch) +# For Linux x86_64 +curl -fsSL -o spc https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-linux-x86_64 +# For Linux aarch64 +curl -fsSL -o spc https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-linux-aarch64 +# macOS x86_64 (Intel) +curl -fsSL -o spc https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-macos-x86_64 +# macOS aarch64 (Apple) +curl -fsSL -o spc https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-macos-aarch64 +# Windows (x86_64, win10 build 17063 or later) +curl.exe -fsSL -o spc.exe https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-windows-x64.exe + +# Add execute perm (Linux and macOS only) +chmod +x ./spc + +# Run (Linux and macOS) +./spc --version +# Run (Windows powershell) +.\spc.exe --version +``` + +自托管 `spc` 由 GitHub Actions 构建,你也可以从 Actions 直接下载:[此处](https://github.com/crazywhalecc/static-php-cli/actions/workflows/release-build.yml)。 + +### 本地构建(使用 git 源码) + +如果你需要修改 static-php-cli 源码,或者使用 spc 二进制构建有问题,你可以使用 git 源码下载 static-php-cli。 + +```bash +# clone 仓库即可 git clone https://github.com/crazywhalecc/static-php-cli.git ``` -如果你本机没有安装 PHP,你需要先使用包管理(例如 brew、apt、yum、apk 等)安装 php。 - -你也可以通过 `bin/setup-runtime` 命令下载静态编译好的 php-cli 和 Composer。下载的 php 和 Composer 将保存为 `bin/php` 和 `bin/composer`。 +如果您的系统上尚未安装 php,我们建议你使用内置的 setup-runtime 自动安装 PHP 和 Composer。 ```bash cd static-php-cli chmod +x bin/setup-runtime -./bin/setup-runtime - -# 使用独立的 php 运行 static-php-cli -./bin/php bin/spc - -# 使用 composer -./bin/php bin/composer - -# 初始化本项目 -cd static-php-cli -composer update +# it will download static php (from self-hosted server) and composer (from getcomposer) +bin/setup-runtime +# initialize composer deps +bin/composer install +# chmod chmod +x bin/spc +bin/spc --version ``` -### 使用 static-php-cli 命令行程序 +### 开始构建 PHP -下面是使用 static-php-cli 编译静态 php 和 micro 的基础用法: +下面是使用 static-php-cli 的基础用法: -> 如果你使用的是打包好的 `spc` 二进制,你需要将下列命令的 `bin/spc` 替换为 `./spc`。 +> 如果你使用的是打包好的 `spc` 二进制,你需要将下列命令的 `./bin/spc` 替换为 `./spc`。 ```bash -# 检查环境依赖,并根据提示的命令安装缺失的编译工具 -./bin/spc doctor +# 检查环境依赖,并根据尝试自动安装缺失的编译工具 +./bin/spc doctor --auto-fix + # 拉取所有依赖库 -./bin/spc fetch --all -# 只拉取编译指定扩展需要的所有依赖 -./bin/spc download --for-extensions=openssl,pcntl,mbstring,pdo_sqlite +./bin/spc download --all +# 只拉取编译指定扩展需要的所有依赖(推荐) +./bin/spc download --for-extensions="openssl,pcntl,mbstring,pdo_sqlite" +# 下载依赖时,优先下载有预编译的库(节省编译依赖的时间) +./bin/spc download --for-extensions="openssl,curl,mbstring,mbregex" --prefer-pre-built +# 下载编译不同版本的 PHP (--with-php=x.y 或 --with-php=x.y.z,推荐 8.1 ~ 8.3) +./bin/spc download --for-extensions="openssl,curl,mbstring" --with-php=8.1 + # 构建包含 bcmath,openssl,tokenizer,sqlite3,pdo_sqlite,ftp,curl 扩展的 php-cli 和 micro.sfx ./bin/spc build "bcmath,openssl,tokenizer,sqlite3,pdo_sqlite,ftp,curl" --build-cli --build-micro +# 编译线程安全版本 (--enable-zts) +./bin/spc build "curl,phar" --enable-zts --build-cli +# 编译后使用 UPX 减小可执行文件体积 (仅 Linux、Windows 可用) (至少压缩至原来的 30~50%) +./bin/spc build "curl,phar" --enable-zts --build-cli --with-upx-pack ``` -你也可以使用参数 `--with-php=x.y` 来指定下载的 PHP 版本,目前支持 7.3 ~ 8.2: - -```bash -# 优先考虑使用 >= 8.0 的 PHP 版本,因为 phpmicro 不支持在 PHP7 中构建 -./bin/spc download --with-php=8.2 --all -``` - -其中,目前支持构建 cli,micro,fpm 三种静态二进制,使用以下参数的一个或多个来指定编译的 SAPI: +其中,目前支持构建 cli,micro,fpm 和 embed,使用以下参数的一个或多个来指定编译的 SAPI: - `--build-cli`:构建 cli 二进制 - `--build-micro`:构建 phpmicro 自执行二进制 @@ -148,18 +206,10 @@ chmod +x bin/spc 如果出现了任何错误,可以使用 `--debug` 参数来展示完整的输出日志,以供排查错误: ```bash -./bin/spc build openssl,pcntl,mbstring --debug --build-all -./bin/spc fetch --all --debug +./bin/spc build "openssl,pcntl,mbstring" --debug --build-all +./bin/spc download --all --debug ``` -此外,默认编译的 PHP 为 NTS 版本。如需编译线程安全版本(ZTS),只需添加参数 `--enable-zts` 即可。 - -```bash -./bin/spc build openssl,pcntl --build-all --enable-zts -``` - -同时,你也可以使用参数 `--no-strip` 来关闭裁剪,关闭裁剪后可以使用 gdb 等工具调试,但这样会让静态二进制体积变大。 - ## 不同 SAPI 的使用 ### 使用 cli @@ -231,22 +281,21 @@ bin/spc micro:combine my-app.phar -I "memory_limit=4G" -I "disable_functions=sys 另外,添加新扩展的贡献方式,可以参考下方 `进阶`。 -如果你想贡献文档内容,请到项目仓库 [static-php/static-php-cli-docs](https://github.com/static-php/static-php-cli-docs) 贡献。 +如果你想贡献文档内容,请直接修改 `docs/` 目录。 ## 赞助本项目 -你可以在 [我的个人赞助页](https://github.com/crazywhalecc/crazywhalecc/blob/master/FUNDING.md) 支持我和我的项目。 +你可以在 [我的个人赞助页](https://github.com/crazywhalecc/crazywhalecc/blob/master/FUNDING.md) 支持我和我的项目。你捐赠的一部分将会被用于维护 **static-php.dev** 服务器。 ## 开源协议 -本项目依据旧版本惯例采用 MIT License 开源,部分扩展的集成编译命令参考或修改自以下项目: +本项目采用 MIT License 许可开源,下面是类似的项目: -- [dixyes/lwmbs](https://github.com/dixyes/lwmbs)(木兰宽松许可证) -- [swoole/swoole-cli](https://github.com/swoole/swoole-cli)(Apache 2.0 LICENSE、SWOOLE-CLI LICENSE) +- [dixyes/lwmbs](https://github.com/dixyes/lwmbs) +- [swoole/swoole-cli](https://github.com/swoole/swoole-cli) + +该项目使用了 [dixyes/lwmbs](https://github.com/dixyes/lwmbs) 中的一些代码,例如 Windows 静态构建目标和 libiconv 库支持。 +lwmbs 使用 [Mulan PSL 2](http://license.coscl.org.cn/MulanPSL2) 许可进行分发。对应文件有关于作者和许可的特殊说明,除此之外,均使用 MIT 授权许可。 因本项目的特殊性,使用项目编译过程中会使用很多其他开源项目,例如 curl、protobuf 等,它们都有各自的开源协议。 请在编译完成后,使用命令 `bin/spc dump-license` 导出项目使用项目的开源协议,并遵守对应项目的 LICENSE。 - -## 进阶 - -本项目重构分支为模块化编写。如果你对本项目感兴趣,想加入开发,可以参照文档的 [贡献指南](https://static-php.dev) 贡献代码或文档。 diff --git a/README.md b/README.md index c89abc91..6ef29db8 100755 --- a/README.md +++ b/README.md @@ -1,60 +1,104 @@ # static-php-cli -Build single static PHP binary, with PHP project together, with popular extensions included. +[![Chinese readme](https://img.shields.io/badge/README-%E4%B8%AD%E6%96%87%20%F0%9F%87%A8%F0%9F%87%B3-moccasin?style=flat-square)](README-zh.md) +[![English readme](https://img.shields.io/badge/README-English%20%F0%9F%87%AC%F0%9F%87%A7-moccasin?style=flat-square)](README.md) +[![Releases](https://img.shields.io/packagist/v/crazywhalecc/static-php-cli?include_prereleases&label=Release&style=flat-square)](https://github.com/crazywhalecc/static-php-cli/releases) +[![CI](https://img.shields.io/github/actions/workflow/status/crazywhalecc/static-php-cli/tests.yml?branch=main&label=Build%20Test&style=flat-square)](https://github.com/crazywhalecc/static-php-cli/actions/workflows/tests.yml) +[![License](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)](https://github.com/crazywhalecc/static-php-cli/blob/main/LICENSE) +[![Extensions](https://img.shields.io/badge/Extension%20Counter-75+-yellow.svg?style=flat-square)](https://static-php.dev/en/guide/extensions.html) -🌐 **[中文](README-zh.md)** | **[English](README.md)** +**static-php-cli** is a powerful tool designed for building static, standalone PHP runtime +with popular extensions. -The project name is static-php-cli, but it actually supports cli, fpm, micro and embed SAPI 😎 +Static PHP built by **static-php-cli** supports `cli`, `fpm`, `embed` and `micro` SAPI. -Compile a purely static php-cli binary file with various extensions to make PHP applications more portable! (cli SAPI) +**static-php-cli** also has the ability to package PHP projects +along with the PHP interpreter into one single executable file. -2023-05-02 15 53 13 +## Features -You can also use the micro binary file to combine php binary and php source code into one for distribution! (micro SAPI) +static-php-cli (you can call it `spc`) has a lot of features: -2023-05-02 15 52 33 +- :handbag: Build single-file php executable, without any dependencies +- :hamburger: Build **[phpmicro](https://github.com/dixyes/phpmicro)** self-extracted executable (glue php binary and php source code into one file) +- :pill: Automatic build environment checker (Doctor module) +- :zap: `Linux`, `macOS`, `FreeBSD`, `Windows` support +- :wrench: Configurable source code patches +- :books: Build dependency management +- 📦 Provide `spc` own standalone executable (built by spc and [box](https://github.com/box-project/box)) +- :fire: Support many popular [extensions](https://static-php.dev/en/guide/extensions.html) +- :floppy_disk: UPX integration (significantly reduces binary size) -> This SAPI feature is from the [Fork](https://github.com/static-php/phpmicro) of [dixyes/phpmicro](https://github.com/dixyes/phpmicro). +**Single-file standalone php-cli:** -[![Version](https://img.shields.io/badge/Version-2.0--rc8-pink.svg?style=flat-square)]() -[![License](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)]() -[![](https://img.shields.io/github/actions/workflow/status/crazywhalecc/static-php-cli/build-linux-x86_64.yml?branch=refactor&label=Linux%20Build&style=flat-square)](https://github.com/crazywhalecc/static-php-cli/actions/workflows/build.yml) -[![](https://img.shields.io/github/actions/workflow/status/crazywhalecc/static-php-cli/build-macos-x86_64.yml?branch=refactor&label=macOS%20Build&style=flat-square)](https://github.com/crazywhalecc/static-php-cli/actions/workflows/build.yml) +out1 -[![](https://img.shields.io/badge/Extension%20Counter-65+-yellow.svg?style=flat-square)]() -[![](https://img.shields.io/github/search/crazywhalecc/static-php-cli/TODO?label=TODO%20Counter&style=flat-square)]() +**Combine PHP code with PHP interpreter using phpmicro:** -## Docs +out2 + +## Documentation The current README contains basic usage. For all the features of static-php-cli, see . ## Direct Download -If you don't want to compile yourself, you can download example pre-compiled artifact from [Actions](https://github.com/static-php/static-php-cli-hosted/actions/workflows/build-php-common.yml), or from [self-hosted server](https://dl.static-php.dev/static-php-cli/common/). +If you don't want to build or want to test first, you can download example pre-compiled artifact from [Actions](https://github.com/static-php/static-php-cli-hosted/actions/workflows/build-php-bulk.yml), or from self-hosted server. -> self-hosted server contains extensions: `bcmath,bz2,calendar,ctype,curl,dom,exif,fileinfo,filter,ftp,gd,gmp,iconv,xml,mbstring,mbregex,mysqlnd,openssl,pcntl,pdo,pdo_mysql,pdo_sqlite,phar,posix,redis,session,simplexml,soap,sockets,sqlite3,tokenizer,xmlwriter,xmlreader,zlib,zip` +Below are several precompiled static-php binaries with different extension combinations, +which can be downloaded directly according to your needs. -## Use static-php-cli to build PHP +| Combination | Extension Count | OS | Comment | +|----------------------------------------------------------------------|----------------------------------------------------------------------------|--------------|--------------------------------| +| [common](https://dl.static-php.dev/static-php-cli/common/) | [30+](https://dl.static-php.dev/static-php-cli/common/README.txt) | Linux, macOS | The binary size is about 7.5MB | +| [bulk](https://dl.static-php.dev/static-php-cli/bulk/) | [50+](https://dl.static-php.dev/static-php-cli/bulk/README.txt) | Linux, macOS | The binary size is about 25MB | +| [minimal](https://dl.static-php.dev/static-php-cli/minimal/) | [5](https://dl.static-php.dev/static-php-cli/minimal/README.txt) | Linux, macOS | The binary size is about 3MB | +| [spc-min](https://dl.static-php.dev/static-php-cli/windows/spc-min/) | [5](https://dl.static-php.dev/static-php-cli/windows/spc-min/README.txt) | Windows | The binary size is about 3MB | +| [spc-max](https://dl.static-php.dev/static-php-cli/windows/spc-max/) | [40+](https://dl.static-php.dev/static-php-cli/windows/spc-max/README.txt) | Windows | The binary size is about 8.5MB | + +> Linux and Windows supports UPX compression for binaries, which can reduce the size of the binary by 30% to 50%. +> macOS does not support UPX compression, so the size of the pre-built binaries for mac is larger. + +## Build ### Compilation Requirements -Yes, this project is written in PHP, pretty funny. -But static-php-cli runtime only requires an environment above PHP 8.1 and `mbstring`, `pcntl` extension. +You can say I made a PHP builder written in PHP, pretty funny. +But static-php-cli runtime only requires an environment above PHP 8.1 and extensions mentioned below. -Here is the architecture support status, where :octocat: represents support for GitHub Action builds, +- PHP >= 8.1 (This is the version required by spc itself, not the build version) +- Extension: `mbstring,tokenizer,phar` +- Supported OS with `curl` and `git` installed + +Here is the supported OS and arch, where :octocat: represents support for GitHub Action builds, :computer: represents support for local manual builds, and blank represents not currently supported. | | x86_64 | aarch64 | |---------|----------------------|----------------------| -| macOS | :octocat: :computer: | :computer: | +| macOS | :octocat: :computer: | :octocat: :computer: | | Linux | :octocat: :computer: | :octocat: :computer: | -| Windows | | | +| Windows | :octocat: :computer: | | | FreeBSD | :computer: | :computer: | -> macOS-arm64 is not supported for GitHub Actions, if you are going to build on arm, you can build it manually on your own machine. +Currently supported PHP versions for compilation: -Currently supported PHP versions for compilation are: `7.3`, `7.4`, `8.0`, `8.1`, `8.2`, `8.3`. +> :warning: supported but not maintained by static-php-cli authors +> +> :heavy_check_mark: supported +> +> :x: not supported + +| PHP Version | Status | Comment | +|-------------|--------------------|---------------------------------------------------| +| 7.2 | :x: | | +| 7.3 | :warning: | phpmicro and some extensions not supported on 7.x | +| 7.4 | :warning: | phpmicro and some extensions not supported on 7.x | +| 8.0 | :heavy_check_mark: | PHP official has stopped maintenance of 8.0 | +| 8.1 | :heavy_check_mark: | PHP official has security fixes only | +| 8.2 | :heavy_check_mark: | | +| 8.3 | :heavy_check_mark: | | +| 8.4 | :x: | WIP | ### Supported Extensions @@ -65,7 +109,9 @@ Please first select the extension you want to compile based on the extension lis > If an extension you need is missing, you can submit an issue. -### GitHub Actions Build +Here is the current planned roadmap for extension support: [#152](https://github.com/crazywhalecc/static-php-cli/issues/152) . + +### Build Online (using GitHub Actions) Use GitHub Action to easily build a statically compiled PHP, and at the same time define the extensions to be compiled by yourself. @@ -77,81 +123,90 @@ and at the same time define the extensions to be compiled by yourself. If you enable `debug`, all logs will be output at build time, including compiled logs, for troubleshooting. -- When using ubuntu-latest, it will build linux-x86_64 binary. -- When using macos-latest, it will build macOS-x86_64 binary. +### Build Locally (using SPC binary, recommended) -### Manual build (using SPC binary) - -This project provides a binary file of static-php-cli. -You can directly download the binary file of the corresponding platform and then use it to build static PHP. +This project provides a binary file of static-php-cli: `spc`. +You can use `spc` binary instead of installing any runtime like golang app. Currently, the platforms supported by `spc` binary are Linux and macOS. -Here's how to download from GitHub Actions: - -1. Enter [GitHub Actions](https://github.com/crazywhalecc/static-php-cli/actions/workflows/release-build.yml). -2. Select the latest build task, select `Artifacts`, and download the binary file of the corresponding platform. -3. Unzip the `.zip` file. After decompressing, add execution permissions to it: `chmod +x ./spc`. - -You can also download binaries from a self-hosted server: [enter](https://dl.static-php.dev/static-php-cli/spc-bin/nightly/). - -> SPC single-file binary is built by phpmicro and box. - -### Manual build (using source code) - -Clone repo first: +Download from self-hosted nightly builds using commands below: ```bash +# Download from self-hosted nightly builds (sync with main branch) +# For Linux x86_64 +curl -fsSL -o spc https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-linux-x86_64 +# For Linux aarch64 +curl -fsSL -o spc https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-linux-aarch64 +# macOS x86_64 (Intel) +curl -fsSL -o spc https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-macos-x86_64 +# macOS aarch64 (Apple) +curl -fsSL -o spc https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-macos-aarch64 +# Windows (x86_64, win10 build 17063 or later) +curl.exe -fsSL -o spc.exehttps://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-windows-x64.exe + +# Add execute perm (Linux and macOS only) +chmod +x ./spc + +# Run (Linux and macOS) +./spc --version +# Run (Windows powershell) +.\spc.exe --version +``` + +Self-hosted `spc` is built by GitHub Actions, you can also download from Actions artifacts [here](https://github.com/crazywhalecc/static-php-cli/actions/workflows/release-build.yml). + +### Build Locally (using git source) + +If you need to modify the static-php-cli source code, or have problems using the spc binary build, +you can download static-php-cli using the git source code. + +```bash +# just clone me! git clone https://github.com/crazywhalecc/static-php-cli.git ``` -If you have not installed php on your system, you can use package management to install PHP (such as brew, apt, yum, apk etc.). - -And you can also download single-file php binary and composer using command `bin/setup-runtime`. -The PHP runtime for static-php-cli itself will be downloaded at `bin/php`, and composer is at `bin/composer`. +If you have not installed php on your system, we recommend that you use the built-in setup-runtime to install PHP and Composer automatically. ```bash cd static-php-cli chmod +x bin/setup-runtime -# It will download php-cli from self-hosted server and composer from getcomposer.org -./bin/setup-runtime - -# Use this php runtime to run static-php-cli compiler -./bin/php bin/spc - -# Use composer -./bin/php bin/composer - -# Initialize this project -cd static-php-cli -composer update +# it will download static php (from self-hosted server) and composer (from getcomposer) +bin/setup-runtime +# initialize composer deps +bin/composer install +# chmod chmod +x bin/spc +bin/spc --version ``` -### Use static-php-cli +### Start Building PHP -Basic usage for building php and micro with some extensions: +Basic usage for building php with some extensions: -> If you are using the packaged `spc` binary, you need to replace `bin/spc` with `./spc` in the following commands. +> If you are using the packaged standalone `spc` binary, you need to replace `bin/spc` with `./spc` or `.\spc.exe` in the following commands. ```bash -# Check system tool dependencies, fix them automatically -./bin/spc doctor +# Check system tool dependencies, auto-fix them if possible +./bin/spc doctor --auto-fix + # fetch all libraries ./bin/spc download --all -# only fetch necessary sources by needed extensions -./bin/spc download --for-extensions=openssl,pcntl,mbstring,pdo_sqlite +# only fetch necessary sources by needed extensions (recommended) +./bin/spc download --for-extensions="openssl,pcntl,mbstring,pdo_sqlite" +# download pre-built libraries first (save time for compiling dependencies) +./bin/spc download --for-extensions="openssl,curl,mbstring,mbregex" --prefer-pre-built +# download different PHP version (--with-php=x.y or --with-php=x.y.z, recommend 8.1 ~ 8.3) +./bin/spc download --for-extensions="openssl,curl,mbstring" --with-php=8.1 + # with bcmath,openssl,tokenizer,sqlite3,pdo_sqlite,ftp,curl extension, build both CLI and phpmicro SAPI -./bin/spc build bcmath,openssl,tokenizer,sqlite3,pdo_sqlite,ftp,curl --build-cli --build-micro +./bin/spc build "bcmath,openssl,tokenizer,sqlite3,pdo_sqlite,ftp,curl" --build-cli --build-micro +# build thread-safe (ZTS) version (--enable-zts) +./bin/spc build "curl,phar" --enable-zts --build-cli +# build, pack executable with UPX (linux and windows only) (reduce binary size for 30~50%) +./bin/spc build "curl,phar" --enable-zts --build-cli --with-upx-pack ``` -You can also use the parameter `--with-php=x.y` to specify the downloaded PHP version, currently supports 7.4 ~ 8.2: - -```bash -# Using PHP >= 8.0 is recommended, because PHP7 cannot use phpmicro -./bin/spc fetch --with-php=8.2 --all -``` - -Now we support `cli`, `micro`, `fpm`, you can use one or more of the following parameters to specify the compiled SAPI: +Now we support `cli`, `micro`, `fpm` and `embed` SAPI. You can use one or more of the following parameters to specify the compiled SAPI: - `--build-cli`: build static cli executable - `--build-micro`: build static phpmicro self-extracted executable @@ -162,18 +217,10 @@ Now we support `cli`, `micro`, `fpm`, you can use one or more of the following p If anything goes wrong, use `--debug` option to display full terminal output: ```bash -./bin/spc build openssl,pcntl,mbstring --debug --build-all -./bin/spc fetch --all --debug +./bin/spc build "openssl,pcntl,mbstring" --debug --build-all +./bin/spc download --all --debug ``` -In addition, we build NTS by default. If you are going to build ZTS version, just add `--enable-zts` option. - -```bash -./bin/spc build openssl,pcntl --build-all --enable-zts -``` - -Adding option `--no-strip` can produce binaries with debug symbols, in order to debug (using gdb). Disabling strip will increase the size of static binary. - ## Different SAPI Usage ### Use cli @@ -227,7 +274,7 @@ cat buildroot/bin/micro.sfx my-app.phar > my-app && chmod +x my-app bin/spc micro:combine my-app.phar -I "memory_limit=4G" -I "disable_functions=system" --output my-app-2 ``` -> In some cases, PHAR files may not run in a micro environment. +> In some cases, PHAR files may not run in a micro environment. Overall, micro is not production ready. ### Use fpm @@ -235,7 +282,7 @@ When using the parameter `--build-all` or `--build-fpm`, the final compilation result will output a file named `./php-fpm`, This file will be located in the path `buildroot/bin/`, simply copy it out for use. -In normal Linux distributions and macOS systems, the package manager will automatically generate a default fpm configuration file after installing php-fpm. +In common Linux distributions and macOS systems, the package manager will automatically generate a default fpm configuration file after installing php-fpm. Because php-fpm must specify a configuration file before running, the php-fpm compiled by this project will not have any configuration files, so you need to write `php-fpm.conf` and `pool.conf` configuration files yourself. Specifying `php-fpm.conf` can use the command parameter `-y`, for example: `./php-fpm -y php-fpm.conf`. @@ -257,26 +304,27 @@ For an advanced example of how to use this feature, take a look at [how to use i If the extension you need is missing, you can create an issue. If you are familiar with this project, you are also welcome to initiate a pull request. -If you want to contribute documentation, please go to [static-php/static-php-cli-docs](https://github.com/static-php/static-php-cli-docs). +If you want to contribute documentation, please just edit in `docs/`. Now there is a [static-php](https://github.com/static-php) organization, which is used to store the repo related to the project. -Part of the English document is written by me, and part is translated by Google, -and there may be inaccurate descriptions, strange or offensive expressions. -If you are a native English speaker, some corrections to the documentation are welcome. - ## Sponsor this project -You can sponsor my project on [this page](https://github.com/crazywhalecc/crazywhalecc/blob/master/FUNDING.md). +You can sponsor my project on [this page](https://github.com/crazywhalecc/crazywhalecc/blob/master/FUNDING.md). A portion of your donation will be used to maintain the **static-php.dev** server. ## Open-Source License This project itself is based on MIT License, -some newly added extensions and dependencies may originate from the following projects (including but not limited to), -and the headers of these code files will also be given additional instructions LICENSE and AUTHOR: +some newly added extensions and dependencies may originate from the the other projects, +and the headers of these code files will also be given additional instructions LICENSE and AUTHOR. -- [dixyes/lwmbs](https://github.com/dixyes/lwmbs) (Mulun Permissive License) -- [swoole/swoole-cli](https://github.com/swoole/swoole-cli) (Apache 2.0 LICENSE+SWOOLE-CLI LICENSE) +These are similar projects: + +- [dixyes/lwmbs](https://github.com/dixyes/lwmbs) +- [swoole/swoole-cli](https://github.com/swoole/swoole-cli) + +The project uses some code from [dixyes/lwmbs](https://github.com/dixyes/lwmbs), such as windows static build target and libiconv support. +lwmbs is licensed under the [Mulan PSL 2](http://license.coscl.org.cn/MulanPSL2). Due to the special nature of this project, many other open source projects such as curl and protobuf will be used during the project compilation process, @@ -284,9 +332,3 @@ and they all have their own open source licenses. Please use the `bin/spc dump-license` command to export the open source licenses used in the project after compilation, and comply with the corresponding project's LICENSE. - -## Advanced - -The refactoring branch of this project is written modularly. -If you are interested in this project and want to join the development, -you can refer to the [Contribution Guide](https://static-php.dev) of the documentation to contribute code or documentation. diff --git a/bin/setup-runtime b/bin/setup-runtime index bd7144b7..86c29c2d 100755 --- a/bin/setup-runtime +++ b/bin/setup-runtime @@ -25,7 +25,7 @@ __DIR__=$(cd "$(dirname "$0")" && pwd) __PROJECT__=$(cd "${__DIR__}"/../ && pwd) # set download dir -__PHP_RUNTIME_URL__="https://dl.static-php.dev/static-php-cli/common/php-8.2.10-cli-${__OS_FIXED__}-${__ARCH__}.tar.gz" +__PHP_RUNTIME_URL__="https://dl.static-php.dev/static-php-cli/bulk/php-8.2.13-cli-${__OS_FIXED__}-${__ARCH__}.tar.gz" __COMPOSER_URL__="https://getcomposer.org/download/latest-stable/composer.phar" # use china mirror @@ -35,7 +35,6 @@ while [ $# -gt 0 ]; do case "$1" in --mirror) mirror="$2" - shift ;; --*) echo "Illegal option $1" @@ -46,8 +45,8 @@ done case "$mirror" in china) - __PHP_RUNTIME_URL__="https://dl.static-php.dev/static-php-cli/common/php-8.2.10-cli-${__OS_FIXED__}-${__ARCH__}.tar.gz" - __COMPOSER_URL__="https://mirrors.aliyun.com/composer/composer.phar" + __PHP_RUNTIME_URL__="https://dl.static-php.dev/static-php-cli/bulk/php-8.2.13-cli-${__OS_FIXED__}-${__ARCH__}.tar.gz" + __COMPOSER_URL__="https://mirrors.tencent.com/composer/composer.phar" ;; esac diff --git a/bin/setup-runtime.ps1 b/bin/setup-runtime.ps1 new file mode 100644 index 00000000..e9c152dd --- /dev/null +++ b/bin/setup-runtime.ps1 @@ -0,0 +1,115 @@ +param ( + [string] ${action} +) + +function AddToPath { + param ( + [string]$pathToAdd + ) + + $currentPath = [System.Environment]::GetEnvironmentVariable('Path', 'User') + + if ($currentPath -notlike "*$pathToAdd*") { + $newPath = $currentPath + ";$pathToAdd" + [System.Environment]::SetEnvironmentVariable('Path', $newPath, 'User') + Write-Host "Added '$pathToAdd' to Path." + Write-Host "To remove path, use: " -NoNewline + Write-Host "bin/setup-runtime remove-path" -ForegroundColor Cyan + } else { + Write-Host "Path already exists." + } +} + +function RemoveFromPath { + param ( + [string]$pathToRemove + ) + + $currentPath = [System.Environment]::GetEnvironmentVariable('Path', 'User') + + if ($currentPath -like "*$pathToRemove*") { + $newPath = $currentPath -replace [regex]::Escape(';' + $pathToRemove), '' + [System.Environment]::SetEnvironmentVariable('Path', $newPath, 'User') + Write-Host "Removed Path '$pathToRemove'" + } else { + Write-Host "Path '$pathToRemove' not in Path" + } +} + +# working dir +$WorkingDir = (Split-Path -Parent (Split-Path -Parent $MyInvocation.MyCommand.Definition)) + +if ($action -eq 'add-path') { + AddToPath ($WorkingDir + '\runtime') + exit 0 +} elseif ($action -eq 'remove-path') { + RemoveFromPath ($WorkingDir + '\runtime') + exit 0 +} elseif (-not($action -eq '')) { + Write-Host ("Invalid action: " + $action) -ForegroundColor Red + exit 1 +} + +# get php 8.1 specific version +$API = (Invoke-WebRequest -Uri "https://www.php.net/releases/index.php?json&version=8.1") | ConvertFrom-Json + +# php windows download +$PHPRuntimeUrl = "https://windows.php.net/downloads/releases/php-" + $API.version + "-Win32-vs16-x64.zip" +$ComposerUrl = "https://getcomposer.org/download/latest-stable/composer.phar" + +# create dir +New-Item -Path "downloads" -ItemType Directory -Force | Out-Null + +# download php +if (-not(Test-Path "downloads\php.zip")) +{ + Write-Host "Downloading PHP ..." + Invoke-WebRequest $PHPRuntimeUrl -OutFile "downloads\php.zip" +} + +# extract php +New-Item -Path "runtime" -ItemType Directory -Force | Out-Null +Write-Host "Extracting php.zip ..." +Expand-Archive -Path "downloads/php.zip" -DestinationPath "runtime" -Force +# make php.ini +Move-Item -Path "runtime\php.ini-production" -Destination "runtime\php.ini" -Force +$OriginINI = Get-Content -Path "runtime\php.ini" -Raw +$OriginINI = $OriginINI -replace ';extension=openssl', 'extension=openssl' +$OriginINI = $OriginINI -replace ';extension=curl', 'extension=curl' +$OriginINI = $OriginINI -replace ';extension=mbstring', 'extension=mbstring' +$OriginINI = $OriginINI -replace ';extension=sodium', 'extension=sodium' +$OriginINI = $OriginINI -replace ';extension_dir = "./"', ('extension_dir = "' + (Split-Path -Parent $MyInvocation.MyCommand.Definition) + '\..\runtime\ext"') +$OriginINI | Set-Content -Path "runtime\php.ini" + +# download composer +if (-not(Test-Path "runtime\composer.phar")) +{ + Write-Host "Downloading composer ..." + Invoke-WebRequest $ComposerUrl -OutFile "downloads\composer.phar" + Move-Item -Path "downloads\composer.phar" -Destination "runtime\composer.phar" -Force +} + +# create runtime\composer.ps1 +$ComposerContent = ' +$WorkingDir = (Split-Path -Parent $MyInvocation.MyCommand.Definition) +& ($WorkingDir + "\php.exe") (Join-Path $WorkingDir "\composer.phar") @args +' +$ComposerContent | Set-Content -Path 'runtime\composer.ps1' -Encoding UTF8 + +Write-Host "Successfully downloaded PHP and Composer !" -ForegroundColor Green +Write-Host "Use static-php-cli: " -NoNewline +Write-Host "bin/spc" -ForegroundColor Cyan +Write-Host "Use php: " -NoNewline +Write-Host "runtime/php" -ForegroundColor Cyan +Write-Host "Use composer: " -NoNewline +Write-Host "runtime/composer" -ForegroundColor Cyan +Write-Host "" +Write-Host "Don't forget installing composer dependencies '" -NoNewline +Write-Host "runtime/composer install" -ForegroundColor Cyan -NoNewline +Write-Host "' before using static-php-cli !" +Write-Host "" +Write-Host "If you want to use this PHP for quality tools (like phpstan, php-cs-fixer) or other project," +Write-Host "or use PHP, Composer as system executable," +Write-Host "use '" -NoNewline +Write-Host "bin/setup-runtime add-path" -ForegroundColor Cyan -NoNewline +Write-Host "' to add runtime dir in Path." diff --git a/bin/spc b/bin/spc index 58749f61..52a6401b 100755 --- a/bin/spc +++ b/bin/spc @@ -4,7 +4,13 @@ use SPC\ConsoleApplication; use SPC\exception\ExceptionHandler; -require_once __DIR__ . '/../vendor/autoload.php'; +if (file_exists(dirname(__DIR__) . '/vendor/autoload.php')) { + // Current: ./bin (git/project mode) + require_once dirname(__DIR__) . '/vendor/autoload.php'; +} else { + // Current: ./vendor/crazywhalecc/static-php-cli/bin (composer library mode) + require_once dirname(__DIR__, 3) . '/autoload.php'; +} // 防止 Micro 打包状态下不支持中文的显示(虽然这个项目目前好像没输出过中文?) if (PHP_OS_FAMILY === 'Windows' && Phar::running()) { @@ -15,4 +21,5 @@ try { (new ConsoleApplication())->run(); } catch (Exception $e) { ExceptionHandler::getInstance()->handle($e); + exit(1); } diff --git a/bin/spc-alpine-docker b/bin/spc-alpine-docker index e807a2df..5effefd6 100755 --- a/bin/spc-alpine-docker +++ b/bin/spc-alpine-docker @@ -56,6 +56,7 @@ if ! $DOCKER_EXECUTABLE images | grep -q cwcc-spc-$SPC_USE_ARCH; then FROM $ALPINE_FROM $SPC_USE_MIRROR RUN apk update; \ + apk upgrade -a; \ apk add --no-cache \ autoconf \ automake \ @@ -73,6 +74,7 @@ RUN apk update; \ git \ jq \ libgcc \ + libtool \ libstdc++ \ linux-headers \ m4 \ @@ -107,6 +109,19 @@ else INTERACT='' fi +# Mounting volumes +MOUNT_LIST="" +# shellcheck disable=SC2089 +MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/config:/app/config" +MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/src:/app/src" +MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/buildroot:/app/buildroot" +MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/source:/app/source" +MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/dist:/app/dist" +MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/downloads:/app/downloads" +MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/pkgroot:/app/pkgroot" + # Run docker # shellcheck disable=SC2068 -$DOCKER_EXECUTABLE run --rm $INTERACT -e SPC_FIX_DEPLOY_ROOT="$(pwd)" -v "$(pwd)"/config:/app/config -v "$(pwd)"/src:/app/src -v "$(pwd)"/buildroot:/app/buildroot -v "$(pwd)"/source:/app/source -v "$(pwd)"/downloads:/app/downloads cwcc-spc-$SPC_USE_ARCH bin/spc $@ +# shellcheck disable=SC2086 +# shellcheck disable=SC2090 +$DOCKER_EXECUTABLE run --rm $INTERACT -e SPC_FIX_DEPLOY_ROOT="$(pwd)" $MOUNT_LIST cwcc-spc-$SPC_USE_ARCH bin/spc $@ diff --git a/bin/spc.ps1 b/bin/spc.ps1 new file mode 100644 index 00000000..2efd09ea --- /dev/null +++ b/bin/spc.ps1 @@ -0,0 +1,12 @@ +$PHP_Exec = ".\runtime\php.exe" + +if (-not(Test-Path $PHP_Exec)) { + $PHP_Exec = Get-Command php.exe -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Definition + if (-not $PHP_Exec) { + Write-Host "Error: PHP not found, you need to install PHP on your system or use 'bin/setup-runtime'." -ForegroundColor Red + exit 1 + } +} + +& "$PHP_Exec" ("bin/spc") @args +exit $LASTEXITCODE diff --git a/box.json b/box.json index 83904e36..f6eecf1c 100644 --- a/box.json +++ b/box.json @@ -4,6 +4,7 @@ "blacklist": [ ".github" ], + "compression": "GZ", "directories": [ "config", "src", @@ -14,6 +15,5 @@ "vendor/zhamao" ], "git-commit-short": "git_commit_short", - "metadata": "ConsoleApplication::VERSION", "output": "spc.phar" } diff --git a/composer.json b/composer.json index 2a8b4c96..6bee5fba 100644 --- a/composer.json +++ b/composer.json @@ -11,19 +11,18 @@ "require": { "php": ">= 8.1", "ext-mbstring": "*", - "ext-pcntl": "*", "laravel/prompts": "^0.1.12", "symfony/console": "^5.4 || ^6 || ^7", "zhamao/logger": "^1.0" }, "require-dev": { - "captainhook/captainhook": "^5.10", - "captainhook/plugin-composer": "^5.3", + "captainhook/captainhook-phar": "^5.23", + "captainhook/hook-installer": "^1.0", "friendsofphp/php-cs-fixer": "^3.25", - "humbug/box": "^4.3", + "humbug/box": "^4.5", "nunomaduro/collision": "^7.8", "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^10.3" + "phpunit/phpunit": "^10.3 || ^9" }, "autoload": { "psr-4": { @@ -51,9 +50,17 @@ "config": { "allow-plugins": { "phpstan/extension-installer": true, - "captainhook/plugin-composer": true + "captainhook/hook-installer": true, + "captainhook/plugin-composer": true, + "captainhook/captainhook-phar": true }, "optimize-autoloader": true, "sort-packages": true - } + }, + "funding": [ + { + "type": "other", + "url": "https://github.com/crazywhalecc/crazywhalecc/blob/master/FUNDING.md" + } + ] } diff --git a/composer.lock b/composer.lock index 109c39b3..fbdcb19e 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "198b6207aabb33778c51282cb7aa0c52", + "content-hash": "186e104804f9b096eaf08f153e52fb36", "packages": [ { "name": "illuminate/collections", - "version": "v10.29.0", + "version": "v10.48.13", "source": { "type": "git", "url": "https://github.com/illuminate/collections.git", - "reference": "bb8784ce913bd46f944b4bd67cd857f40d9cfe68" + "reference": "994cedcd2060b65918efe46da805ac31b0563034" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/collections/zipball/bb8784ce913bd46f944b4bd67cd857f40d9cfe68", - "reference": "bb8784ce913bd46f944b4bd67cd857f40d9cfe68", + "url": "https://api.github.com/repos/illuminate/collections/zipball/994cedcd2060b65918efe46da805ac31b0563034", + "reference": "994cedcd2060b65918efe46da805ac31b0563034", "shasum": "" }, "require": { @@ -59,11 +59,11 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-10-10T12:55:25+00:00" + "time": "2024-06-04T13:31:47+00:00" }, { "name": "illuminate/conditionable", - "version": "v10.29.0", + "version": "v10.48.13", "source": { "type": "git", "url": "https://github.com/illuminate/conditionable.git", @@ -109,16 +109,16 @@ }, { "name": "illuminate/contracts", - "version": "v10.29.0", + "version": "v10.48.13", "source": { "type": "git", "url": "https://github.com/illuminate/contracts.git", - "reference": "6c39fba7b2311e28f5c6ac7d729e3d49a2a98406" + "reference": "8d7152c4a1f5d9cf7da3e8b71f23e4556f6138ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/contracts/zipball/6c39fba7b2311e28f5c6ac7d729e3d49a2a98406", - "reference": "6c39fba7b2311e28f5c6ac7d729e3d49a2a98406", + "url": "https://api.github.com/repos/illuminate/contracts/zipball/8d7152c4a1f5d9cf7da3e8b71f23e4556f6138ac", + "reference": "8d7152c4a1f5d9cf7da3e8b71f23e4556f6138ac", "shasum": "" }, "require": { @@ -153,11 +153,11 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-09-05T19:07:46+00:00" + "time": "2024-01-15T18:52:32+00:00" }, { "name": "illuminate/macroable", - "version": "v10.29.0", + "version": "v10.48.13", "source": { "type": "git", "url": "https://github.com/illuminate/macroable.git", @@ -203,16 +203,16 @@ }, { "name": "laravel/prompts", - "version": "v0.1.12", + "version": "v0.1.24", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "b35f249028c22016e45e48626e19e5d42fd827ff" + "reference": "409b0b4305273472f3754826e68f4edbd0150149" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/b35f249028c22016e45e48626e19e5d42fd827ff", - "reference": "b35f249028c22016e45e48626e19e5d42fd827ff", + "url": "https://api.github.com/repos/laravel/prompts/zipball/409b0b4305273472f3754826e68f4edbd0150149", + "reference": "409b0b4305273472f3754826e68f4edbd0150149", "shasum": "" }, "require": { @@ -228,7 +228,7 @@ "require-dev": { "mockery/mockery": "^1.5", "pestphp/pest": "^2.3", - "phpstan/phpstan": "^1.10", + "phpstan/phpstan": "^1.11", "phpstan/phpstan-mockery": "^1.1" }, "suggest": { @@ -252,11 +252,12 @@ "license": [ "MIT" ], + "description": "Add beautiful and user-friendly forms to your command-line applications.", "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.1.12" + "source": "https://github.com/laravel/prompts/tree/v0.1.24" }, - "time": "2023-10-18T14:18:57+00:00" + "time": "2024-06-17T13:58:22+00:00" }, { "name": "psr/container", @@ -414,16 +415,16 @@ }, { "name": "symfony/console", - "version": "v6.3.4", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6" + "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/eca495f2ee845130855ddf1cf18460c38966c8b6", - "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6", + "url": "https://api.github.com/repos/symfony/console/zipball/be5854cee0e8c7b110f00d695d11debdfa1a2a91", + "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91", "shasum": "" }, "require": { @@ -431,7 +432,7 @@ "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0" + "symfony/string": "^5.4|^6.0|^7.0" }, "conflict": { "symfony/dependency-injection": "<5.4", @@ -445,12 +446,16 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -484,7 +489,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.3.4" + "source": "https://github.com/symfony/console/tree/v6.4.8" }, "funding": [ { @@ -500,20 +505,20 @@ "type": "tidelift" } ], - "time": "2023-08-16T10:10:12+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.3.0", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", "shasum": "" }, "require": { @@ -522,7 +527,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -551,7 +556,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" }, "funding": [ { @@ -567,20 +572,20 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.28.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + "reference": "0424dff1c58f028c451efff2045f5d92410bd540" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540", + "reference": "0424dff1c58f028c451efff2045f5d92410bd540", "shasum": "" }, "require": { @@ -594,9 +599,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -633,7 +635,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0" }, "funding": [ { @@ -649,20 +651,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.28.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "875e90aeea2777b6f135677f618529449334a612" + "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", - "reference": "875e90aeea2777b6f135677f618529449334a612", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a", + "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a", "shasum": "" }, "require": { @@ -673,9 +675,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -714,7 +713,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0" }, "funding": [ { @@ -730,20 +729,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.28.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" + "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb", + "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb", "shasum": "" }, "require": { @@ -754,9 +753,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -798,7 +794,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0" }, "funding": [ { @@ -814,20 +810,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" + "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c", + "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c", "shasum": "" }, "require": { @@ -841,9 +837,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -881,7 +874,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0" }, "funding": [ { @@ -897,25 +890,26 @@ "type": "tidelift" } ], - "time": "2023-07-28T09:04:16+00:00" + "time": "2024-06-19T12:30:46+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.3.0", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", "shasum": "" }, "require": { "php": ">=8.1", - "psr/container": "^2.0" + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "ext-psr": "<1.1|>=2" @@ -923,7 +917,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -963,7 +957,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" }, "funding": [ { @@ -979,20 +973,20 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/string", - "version": "v6.3.5", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339" + "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/13d76d0fb049051ed12a04bef4f9de8715bea339", - "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339", + "url": "https://api.github.com/repos/symfony/string/zipball/a147c0f826c4a1f3afb763ab8e009e37c877a44d", + "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d", "shasum": "" }, "require": { @@ -1006,11 +1000,11 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/intl": "^6.2", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/intl": "^6.2|^7.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^5.4|^6.0" + "symfony/var-exporter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -1049,7 +1043,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.3.5" + "source": "https://github.com/symfony/string/tree/v6.4.8" }, "funding": [ { @@ -1065,7 +1059,7 @@ "type": "tidelift" } ], - "time": "2023-09-18T10:38:32+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "zhamao/logger", @@ -1140,16 +1134,16 @@ "packages-dev": [ { "name": "amphp/amp", - "version": "v2.6.2", + "version": "v2.6.4", "source": { "type": "git", "url": "https://github.com/amphp/amp.git", - "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb" + "reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", - "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", + "url": "https://api.github.com/repos/amphp/amp/zipball/ded3d9be08f526089eb7ee8d9f16a9768f9dec2d", + "reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d", "shasum": "" }, "require": { @@ -1161,8 +1155,8 @@ "ext-json": "*", "jetbrains/phpstorm-stubs": "^2019.3", "phpunit/phpunit": "^7 | ^8 | ^9", - "psalm/phar": "^3.11@dev", - "react/promise": "^2" + "react/promise": "^2", + "vimeo/psalm": "^3.12" }, "type": "library", "extra": { @@ -1217,7 +1211,7 @@ "support": { "irc": "irc://irc.freenode.org/amphp", "issues": "https://github.com/amphp/amp/issues", - "source": "https://github.com/amphp/amp/tree/v2.6.2" + "source": "https://github.com/amphp/amp/tree/v2.6.4" }, "funding": [ { @@ -1225,20 +1219,20 @@ "type": "github" } ], - "time": "2022-02-20T17:52:18+00:00" + "time": "2024-03-21T18:52:26+00:00" }, { "name": "amphp/byte-stream", - "version": "v1.8.1", + "version": "v1.8.2", "source": { "type": "git", "url": "https://github.com/amphp/byte-stream.git", - "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd" + "reference": "4f0e968ba3798a423730f567b1b50d3441c16ddc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd", - "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd", + "url": "https://api.github.com/repos/amphp/byte-stream/zipball/4f0e968ba3798a423730f567b1b50d3441c16ddc", + "reference": "4f0e968ba3798a423730f567b1b50d3441c16ddc", "shasum": "" }, "require": { @@ -1254,11 +1248,6 @@ "psalm/phar": "^3.11.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "autoload": { "files": [ "lib/functions.php" @@ -1282,7 +1271,7 @@ } ], "description": "A stream abstraction to make working with non-blocking I/O simple.", - "homepage": "http://amphp.org/byte-stream", + "homepage": "https://amphp.org/byte-stream", "keywords": [ "amp", "amphp", @@ -1292,9 +1281,8 @@ "stream" ], "support": { - "irc": "irc://irc.freenode.org/amphp", "issues": "https://github.com/amphp/byte-stream/issues", - "source": "https://github.com/amphp/byte-stream/tree/v1.8.1" + "source": "https://github.com/amphp/byte-stream/tree/v1.8.2" }, "funding": [ { @@ -1302,7 +1290,7 @@ "type": "github" } ], - "time": "2021-03-30T17:13:30+00:00" + "time": "2024-04-13T18:00:56+00:00" }, { "name": "amphp/parallel", @@ -1438,16 +1426,16 @@ }, { "name": "amphp/parser", - "version": "v1.1.0", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/amphp/parser.git", - "reference": "ff1de4144726c5dad5fab97f66692ebe8de3e151" + "reference": "3cf1f8b32a0171d4b1bed93d25617637a77cded7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/parser/zipball/ff1de4144726c5dad5fab97f66692ebe8de3e151", - "reference": "ff1de4144726c5dad5fab97f66692ebe8de3e151", + "url": "https://api.github.com/repos/amphp/parser/zipball/3cf1f8b32a0171d4b1bed93d25617637a77cded7", + "reference": "3cf1f8b32a0171d4b1bed93d25617637a77cded7", "shasum": "" }, "require": { @@ -1488,7 +1476,7 @@ ], "support": { "issues": "https://github.com/amphp/parser/issues", - "source": "https://github.com/amphp/parser/tree/v1.1.0" + "source": "https://github.com/amphp/parser/tree/v1.1.1" }, "funding": [ { @@ -1496,26 +1484,26 @@ "type": "github" } ], - "time": "2022-12-30T18:08:47+00:00" + "time": "2024-03-21T19:16:53+00:00" }, { "name": "amphp/process", - "version": "v1.1.4", + "version": "v1.1.7", "source": { "type": "git", "url": "https://github.com/amphp/process.git", - "reference": "76e9495fd6818b43a20167cb11d8a67f7744ee0f" + "reference": "1949d85b6d71af2818ff68144304a98495628f19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/process/zipball/76e9495fd6818b43a20167cb11d8a67f7744ee0f", - "reference": "76e9495fd6818b43a20167cb11d8a67f7744ee0f", + "url": "https://api.github.com/repos/amphp/process/zipball/1949d85b6d71af2818ff68144304a98495628f19", + "reference": "1949d85b6d71af2818ff68144304a98495628f19", "shasum": "" }, "require": { "amphp/amp": "^2", "amphp/byte-stream": "^1.4", - "php": ">=7" + "php": ">=7.1" }, "require-dev": { "amphp/php-cs-fixer-config": "dev-master", @@ -1553,7 +1541,7 @@ "homepage": "https://github.com/amphp/process", "support": { "issues": "https://github.com/amphp/process/issues", - "source": "https://github.com/amphp/process/tree/v1.1.4" + "source": "https://github.com/amphp/process/tree/v1.1.7" }, "funding": [ { @@ -1561,7 +1549,7 @@ "type": "github" } ], - "time": "2022-07-06T23:50:12+00:00" + "time": "2024-04-19T03:00:28+00:00" }, { "name": "amphp/serialization", @@ -1690,53 +1678,36 @@ "time": "2021-10-25T18:29:10+00:00" }, { - "name": "captainhook/captainhook", - "version": "5.18.2", + "name": "captainhook/captainhook-phar", + "version": "5.23.1", "source": { "type": "git", - "url": "https://github.com/captainhookphp/captainhook.git", - "reference": "61c24442f71ea216e9e172861d48d7676439dd18" + "url": "https://github.com/captainhookphp/captainhook-phar.git", + "reference": "055e6e109170a1d79353f9c94a6099e08bab15cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/captainhookphp/captainhook/zipball/61c24442f71ea216e9e172861d48d7676439dd18", - "reference": "61c24442f71ea216e9e172861d48d7676439dd18", + "url": "https://api.github.com/repos/captainhookphp/captainhook-phar/zipball/055e6e109170a1d79353f9c94a6099e08bab15cd", + "reference": "055e6e109170a1d79353f9c94a6099e08bab15cd", "shasum": "" }, "require": { + "composer-plugin-api": "^1.1||^2.0", "ext-json": "*", "ext-spl": "*", - "ext-xml": "*", - "php": ">=7.4", - "sebastianfeldmann/camino": "^0.9.2", - "sebastianfeldmann/cli": "^3.3", - "sebastianfeldmann/git": "^3.9", - "symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0", - "symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0", - "symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "replace": { - "sebastianfeldmann/captainhook": "*" + "phar-io/composer-distributor": "^1.0", + "php": "^8.0 || ^8.1 || ^8.2" }, "require-dev": { - "composer/composer": "~1 || ^2.0", - "mikey179/vfsstream": "~1" + "composer/composer": "^1.1 || ^2.0" }, - "bin": [ - "bin/captainhook" - ], - "type": "library", + "type": "composer-plugin", "extra": { - "branch-alias": { - "dev-main": "6.0.x-dev" - }, - "captainhook": { - "config": "captainhook.json" - } + "class": "CaptainHook\\Composer\\Plugin" }, "autoload": { "psr-4": { - "CaptainHook\\App\\": "src/" + "CaptainHook\\Composer\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1762,7 +1733,7 @@ ], "support": { "issues": "https://github.com/captainhookphp/captainhook/issues", - "source": "https://github.com/captainhookphp/captainhook/tree/5.18.2" + "source": "https://github.com/captainhookphp/captainhook-phar/tree/5.23.1" }, "funding": [ { @@ -1770,40 +1741,36 @@ "type": "github" } ], - "time": "2023-10-16T15:13:42+00:00" + "time": "2023-12-13T23:08:05+00:00" }, { - "name": "captainhook/plugin-composer", - "version": "5.3.3", + "name": "captainhook/hook-installer", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/captainhookphp/plugin-composer.git", - "reference": "0a802aaf7742ef22b5cbccd586d99e16d9d23a39" + "url": "https://github.com/captainhookphp/hook-installer.git", + "reference": "3308a9152727af4e3d1c7b63ca219d6938b702b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/captainhookphp/plugin-composer/zipball/0a802aaf7742ef22b5cbccd586d99e16d9d23a39", - "reference": "0a802aaf7742ef22b5cbccd586d99e16d9d23a39", + "url": "https://api.github.com/repos/captainhookphp/hook-installer/zipball/3308a9152727af4e3d1c7b63ca219d6938b702b8", + "reference": "3308a9152727af4e3d1c7b63ca219d6938b702b8", "shasum": "" }, "require": { - "captainhook/captainhook": "^5.0", "composer-plugin-api": "^1.1|^2.0", - "php": ">=7.1" + "php": ">=8.0" }, "require-dev": { "composer/composer": "*" }, "type": "composer-plugin", "extra": { - "class": "CaptainHook\\Plugin\\Composer\\ComposerPlugin", - "branch-alias": { - "dev-fluffy_hedgehog": "5.0.x-dev" - } + "class": "CaptainHook\\HookInstaller\\ComposerPlugin" }, "autoload": { "psr-4": { - "CaptainHook\\Plugin\\Composer\\": "src" + "CaptainHook\\HookInstaller\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1811,34 +1778,94 @@ "MIT" ], "authors": [ - { - "name": "Andreas Heigl", - "email": "andreas@heigl.org" - }, { "name": "Sebastian Feldmann", "email": "sf@sebastian-feldmann.info" } ], - "description": "Composer-Plugin handling your git-hooks", + "description": "Composer Plugin that makes everyone activate the CaptainHook git hooks locally", "support": { - "issues": "https://github.com/captainhookphp/plugin-composer/issues", - "source": "https://github.com/captainhookphp/plugin-composer/tree/5.3.3" + "issues": "https://github.com/captainhookphp/hook-installer/issues", + "source": "https://github.com/captainhookphp/hook-installer/tree/1.0.3" }, - "time": "2022-01-28T04:35:22+00:00" + "time": "2024-03-21T13:39:59+00:00" }, { - "name": "composer/pcre", - "version": "3.1.1", + "name": "clue/ndjson-react", + "version": "v1.3.0", "source": { "type": "git", - "url": "https://github.com/composer/pcre.git", - "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" + "url": "https://github.com/clue/reactphp-ndjson.git", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", - "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "url": "https://api.github.com/repos/clue/reactphp-ndjson/zipball/392dc165fce93b5bb5c637b67e59619223c931b0", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0", + "shasum": "" + }, + "require": { + "php": ">=5.3", + "react/stream": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", + "react/event-loop": "^1.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Clue\\React\\NDJson\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering" + } + ], + "description": "Streaming newline-delimited JSON (NDJSON) parser and encoder for ReactPHP.", + "homepage": "https://github.com/clue/reactphp-ndjson", + "keywords": [ + "NDJSON", + "json", + "jsonlines", + "newline", + "reactphp", + "streaming" + ], + "support": { + "issues": "https://github.com/clue/reactphp-ndjson/issues", + "source": "https://github.com/clue/reactphp-ndjson/tree/v1.3.0" + }, + "funding": [ + { + "url": "https://clue.engineering/support", + "type": "custom" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2022-12-23T10:58:28+00:00" + }, + { + "name": "composer/pcre", + "version": "3.1.4", + "source": { + "type": "git", + "url": "https://github.com/composer/pcre.git", + "reference": "04229f163664973f68f38f6f73d917799168ef24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/pcre/zipball/04229f163664973f68f38f6f73d917799168ef24", + "reference": "04229f163664973f68f38f6f73d917799168ef24", "shasum": "" }, "require": { @@ -1880,7 +1907,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.1" + "source": "https://github.com/composer/pcre/tree/3.1.4" }, "funding": [ { @@ -1896,7 +1923,7 @@ "type": "tidelift" } ], - "time": "2023-10-11T07:11:09+00:00" + "time": "2024-05-27T13:40:54+00:00" }, { "name": "composer/semver", @@ -1981,16 +2008,16 @@ }, { "name": "composer/xdebug-handler", - "version": "3.0.3", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "ced299686f41dce890debac69273b47ffe98a40c" + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", - "reference": "ced299686f41dce890debac69273b47ffe98a40c", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", "shasum": "" }, "require": { @@ -2001,7 +2028,7 @@ "require-dev": { "phpstan/phpstan": "^1.0", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^6.0" + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" }, "type": "library", "autoload": { @@ -2025,9 +2052,9 @@ "performance" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" + "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" }, "funding": [ { @@ -2043,20 +2070,20 @@ "type": "tidelift" } ], - "time": "2022-02-25T21:32:43+00:00" + "time": "2024-05-06T16:37:16+00:00" }, { "name": "doctrine/deprecations", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", "shasum": "" }, "require": { @@ -2088,9 +2115,126 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.2" + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" }, - "time": "2023-09-27T20:04:15+00:00" + "time": "2024-01-30T19:34:25+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": "evenement/evenement", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/igorw/evenement.git", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "require-dev": { + "phpunit/phpunit": "^9 || ^6" + }, + "type": "library", + "autoload": { + "psr-4": { + "Evenement\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + } + ], + "description": "Événement is a very simple event dispatching library for PHP", + "keywords": [ + "event-dispatcher", + "event-emitter" + ], + "support": { + "issues": "https://github.com/igorw/evenement/issues", + "source": "https://github.com/igorw/evenement/tree/v3.0.2" + }, + "time": "2023-08-08T05:53:35+00:00" }, { "name": "fidry/console", @@ -2177,32 +2321,91 @@ "time": "2022-12-18T10:49:34+00:00" }, { - "name": "fidry/filesystem", + "name": "fidry/cpu-core-counter", "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/theofidry/filesystem.git", - "reference": "1dd372ab3eb8b84ffe9578bff576b00c9a44ee46" + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/filesystem/zipball/1dd372ab3eb8b84ffe9578bff576b00c9a44ee46", - "reference": "1dd372ab3eb8b84ffe9578bff576b00c9a44ee46", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^1.9.2", + "phpstan/phpstan-deprecation-rules": "^1.0.0", + "phpstan/phpstan-phpunit": "^1.2.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "webmozarts/strict-phpunit": "^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Tiny utility to get the number of CPU cores.", + "keywords": [ + "CPU", + "core" + ], + "support": { + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2024-02-07T09:43:46+00:00" + }, + { + "name": "fidry/filesystem", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/theofidry/filesystem.git", + "reference": "8303225d289da1c434f6009743fbe9aad852de0c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/filesystem/zipball/8303225d289da1c434f6009743fbe9aad852de0c", + "reference": "8303225d289da1c434f6009743fbe9aad852de0c", "shasum": "" }, "require": { "php": "^8.1", - "symfony/filesystem": "^6.3", + "symfony/filesystem": "^6.4 || ^7.0", "thecodingmachine/safe": "^2.0" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.4", "ergebnis/composer-normalize": "^2.28", - "infection/infection": "^0.26", - "phpspec/prophecy-phpunit": "^2.0", + "infection/infection": ">=0.26", "phpunit/phpunit": "^10.3", - "symfony/finder": "^6.3", - "symfony/phpunit-bridge": "^6.2" + "symfony/finder": "^6.4 || ^7.0" }, "type": "library", "extra": { @@ -2235,7 +2438,7 @@ ], "support": { "issues": "https://github.com/theofidry/filesystem/issues", - "source": "https://github.com/theofidry/filesystem/tree/1.1.0" + "source": "https://github.com/theofidry/filesystem/tree/1.2.1" }, "funding": [ { @@ -2243,20 +2446,20 @@ "type": "github" } ], - "time": "2023-10-07T07:32:54+00:00" + "time": "2023-12-10T13:29:09+00:00" }, { "name": "filp/whoops", - "version": "2.15.3", + "version": "2.15.4", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "c83e88a30524f9360b11f585f71e6b17313b7187" + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/c83e88a30524f9360b11f585f71e6b17313b7187", - "reference": "c83e88a30524f9360b11f585f71e6b17313b7187", + "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", "shasum": "" }, "require": { @@ -2306,7 +2509,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.15.3" + "source": "https://github.com/filp/whoops/tree/2.15.4" }, "funding": [ { @@ -2314,54 +2517,61 @@ "type": "github" } ], - "time": "2023-07-13T12:00:00+00:00" + "time": "2023-11-03T12:00:00+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.37.1", + "version": "v3.59.3", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "c3fe76976081ab871aa654e872da588077e19679" + "reference": "30ba9ecc2b0e5205e578fe29973c15653d9bfd29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/c3fe76976081ab871aa654e872da588077e19679", - "reference": "c3fe76976081ab871aa654e872da588077e19679", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/30ba9ecc2b0e5205e578fe29973c15653d9bfd29", + "reference": "30ba9ecc2b0e5205e578fe29973c15653d9bfd29", "shasum": "" }, "require": { - "composer/semver": "^3.3", + "clue/ndjson-react": "^1.0", + "composer/semver": "^3.4", "composer/xdebug-handler": "^3.0.3", + "ext-filter": "*", "ext-json": "*", "ext-tokenizer": "*", + "fidry/cpu-core-counter": "^1.0", "php": "^7.4 || ^8.0", - "sebastian/diff": "^4.0 || ^5.0", - "symfony/console": "^5.4 || ^6.0", - "symfony/event-dispatcher": "^5.4 || ^6.0", - "symfony/filesystem": "^5.4 || ^6.0", - "symfony/finder": "^5.4 || ^6.0", - "symfony/options-resolver": "^5.4 || ^6.0", - "symfony/polyfill-mbstring": "^1.27", - "symfony/polyfill-php80": "^1.27", - "symfony/polyfill-php81": "^1.27", - "symfony/process": "^5.4 || ^6.0", - "symfony/stopwatch": "^5.4 || ^6.0" + "react/child-process": "^0.6.5", + "react/event-loop": "^1.0", + "react/promise": "^2.0 || ^3.0", + "react/socket": "^1.0", + "react/stream": "^1.0", + "sebastian/diff": "^4.0 || ^5.0 || ^6.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^5.4 || ^6.0 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-mbstring": "^1.28", + "symfony/polyfill-php80": "^1.28", + "symfony/polyfill-php81": "^1.28", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "facile-it/paraunit": "^1.3 || ^2.0", + "facile-it/paraunit": "^1.3 || ^2.3", + "infection/infection": "^0.29.5", "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^2.0", + "keradus/cli-executor": "^2.1", "mikey179/vfsstream": "^1.6.11", - "php-coveralls/php-coveralls": "^2.5.3", + "php-coveralls/php-coveralls": "^2.7", "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.16", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5", - "symfony/phpunit-bridge": "^6.2.3", - "symfony/yaml": "^5.4 || ^6.0" + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.5", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.5", + "phpunit/phpunit": "^9.6.19 || ^10.5.21 || ^11.2", + "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -2374,7 +2584,10 @@ "autoload": { "psr-4": { "PhpCsFixer\\": "src/" - } + }, + "exclude-from-classmap": [ + "src/Fixer/Internal/*" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2399,7 +2612,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.37.1" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.59.3" }, "funding": [ { @@ -2407,20 +2620,20 @@ "type": "github" } ], - "time": "2023-10-29T20:51:23+00:00" + "time": "2024-06-16T14:17:03+00:00" }, { "name": "humbug/box", - "version": "4.3.8", + "version": "4.5.1", "source": { "type": "git", "url": "https://github.com/box-project/box.git", - "reference": "55344067891d8be61e6efa50f7c2e59114f32704" + "reference": "1e10a1e974a831b64dab801d09dffa6acd43bd7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/box-project/box/zipball/55344067891d8be61e6efa50f7c2e59114f32704", - "reference": "55344067891d8be61e6efa50f7c2e59114f32704", + "url": "https://api.github.com/repos/box-project/box/zipball/1e10a1e974a831b64dab801d09dffa6acd43bd7f", + "reference": "1e10a1e974a831b64dab801d09dffa6acd43bd7f", "shasum": "" }, "require": { @@ -2428,10 +2641,13 @@ "composer-plugin-api": "^2.2", "composer/semver": "^3.3.2", "composer/xdebug-handler": "^3.0.3", + "ext-iconv": "*", + "ext-mbstring": "*", "ext-phar": "*", "ext-sodium": "*", - "fidry/console": "^0.5.3", - "humbug/php-scoper": "^0.18.3", + "fidry/console": "^0.5.3 || ^0.6.0", + "fidry/filesystem": "^1.1", + "humbug/php-scoper": "^0.18.6", "justinrainbow/json-schema": "^5.2.12", "laravel/serializable-closure": "^1.2.2", "nikic/iter": "^2.2", @@ -2439,11 +2655,15 @@ "paragonie/constant_time_encoding": "^2.6", "php": "^8.1", "phpdocumentor/reflection-docblock": "^5.3", + "phpdocumentor/type-resolver": "^1.7", "psr/log": "^3.0", + "sebastian/diff": "^4.0", "seld/jsonlint": "^1.9", "symfony/console": "^6.1.7", "symfony/filesystem": "^6.1.5", "symfony/finder": "^6.1.3", + "symfony/polyfill-iconv": "^1.28", + "symfony/polyfill-mbstring": "^1.28", "symfony/process": "^6.1.3", "symfony/var-dumper": "^6.1.6", "webmozart/assert": "^1.11" @@ -2456,9 +2676,10 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", "ergebnis/composer-normalize": "^2.29", - "fidry/makefile": "^0.2.1", + "fidry/makefile": "^1.0.1", "mikey179/vfsstream": "^1.6.11", - "phpspec/prophecy-phpunit": "^2.0.1", + "phpspec/prophecy": "^1.17", + "phpspec/prophecy-phpunit": "^2.0.2", "phpunit/phpunit": "^9.5.26", "symfony/phpunit-bridge": "^6.1.6", "symfony/yaml": "^6.2", @@ -2482,7 +2703,6 @@ }, "autoload": { "files": [ - "src/FileSystem/file_system.php", "src/consts.php", "src/functions.php" ], @@ -2515,22 +2735,22 @@ ], "support": { "issues": "https://github.com/box-project/box/issues", - "source": "https://github.com/box-project/box/tree/4.3.8" + "source": "https://github.com/box-project/box/tree/4.5.1" }, - "time": "2023-03-17T08:30:03+00:00" + "time": "2023-11-04T17:51:11+00:00" }, { "name": "humbug/php-scoper", - "version": "0.18.4", + "version": "0.18.7", "source": { "type": "git", "url": "https://github.com/humbug/php-scoper.git", - "reference": "d79c1486537280c21c907e9a8a610eceb391407f" + "reference": "9386a0af946f175d7a1ebfb68851bc2bb8ad7858" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/humbug/php-scoper/zipball/d79c1486537280c21c907e9a8a610eceb391407f", - "reference": "d79c1486537280c21c907e9a8a610eceb391407f", + "url": "https://api.github.com/repos/humbug/php-scoper/zipball/9386a0af946f175d7a1ebfb68851bc2bb8ad7858", + "reference": "9386a0af946f175d7a1ebfb68851bc2bb8ad7858", "shasum": "" }, "require": { @@ -2548,7 +2768,7 @@ "bamarni/composer-bin-plugin": "^1.1", "ergebnis/composer-normalize": "^2.28", "fidry/makefile": "^1.0", - "humbug/box": "^4.0", + "humbug/box": "^4.5.1", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.0", "symfony/yaml": "^6.1" @@ -2598,9 +2818,9 @@ "description": "Prefixes all PHP namespaces in a file or directory.", "support": { "issues": "https://github.com/humbug/php-scoper/issues", - "source": "https://github.com/humbug/php-scoper/tree/0.18.4" + "source": "https://github.com/humbug/php-scoper/tree/0.18.7" }, - "time": "2023-10-20T17:14:04+00:00" + "time": "2023-11-04T18:01:12+00:00" }, { "name": "jetbrains/phpstorm-stubs", @@ -2655,12 +2875,12 @@ "version": "v5.2.13", "source": { "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", + "url": "https://github.com/jsonrainbow/json-schema.git", "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793", + "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793", "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793", "shasum": "" }, @@ -2715,23 +2935,23 @@ "schema" ], "support": { - "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/v5.2.13" + "issues": "https://github.com/jsonrainbow/json-schema/issues", + "source": "https://github.com/jsonrainbow/json-schema/tree/v5.2.13" }, "time": "2023-09-26T02:20:38+00:00" }, { "name": "laravel/serializable-closure", - "version": "v1.3.2", + "version": "v1.3.3", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "076fe2cf128bd54b4341cdc6d49b95b34e101e4c" + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/076fe2cf128bd54b4341cdc6d49b95b34e101e4c", - "reference": "076fe2cf128bd54b4341cdc6d49b95b34e101e4c", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754", + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754", "shasum": "" }, "require": { @@ -2778,20 +2998,20 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2023-10-17T13:38:16+00:00" + "time": "2023-11-08T14:08:06+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.11.1", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", "shasum": "" }, "require": { @@ -2799,11 +3019,12 @@ }, "conflict": { "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" + "doctrine/common": "<2.13.3 || >=3 <3.2.2" }, "require-dev": { "doctrine/collections": "^1.6.8", "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", @@ -2829,7 +3050,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" }, "funding": [ { @@ -2837,20 +3058,20 @@ "type": "tidelift" } ], - "time": "2023-03-08T13:26:56+00:00" + "time": "2024-06-12T14:39:25+00:00" }, { "name": "nikic/iter", - "version": "v2.3.0", + "version": "v2.4.1", "source": { "type": "git", "url": "https://github.com/nikic/iter.git", - "reference": "d9f88bc04b5b453914373e70c041353d8e67c3f5" + "reference": "3f031ae08d82c4394410e76b88b441331a6fa15f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/iter/zipball/d9f88bc04b5b453914373e70c041353d8e67c3f5", - "reference": "d9f88bc04b5b453914373e70c041353d8e67c3f5", + "url": "https://api.github.com/repos/nikic/iter/zipball/3f031ae08d82c4394410e76b88b441331a6fa15f", + "reference": "3f031ae08d82c4394410e76b88b441331a6fa15f", "shasum": "" }, "require": { @@ -2887,27 +3108,27 @@ ], "support": { "issues": "https://github.com/nikic/iter/issues", - "source": "https://github.com/nikic/iter/tree/v2.3.0" + "source": "https://github.com/nikic/iter/tree/v2.4.1" }, - "time": "2023-07-25T19:55:40+00:00" + "time": "2024-03-19T20:45:05+00:00" }, { "name": "nikic/php-parser", - "version": "v4.17.1", + "version": "v4.19.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b", + "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.1" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", @@ -2943,9 +3164,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1" }, - "time": "2023-08-13T19:53:39+00:00" + "time": "2024-03-17T08:10:35+00:00" }, { "name": "nunomaduro/collision", @@ -3131,16 +3352,16 @@ }, { "name": "paragonie/constant_time_encoding", - "version": "v2.6.3", + "version": "v2.7.0", "source": { "type": "git", "url": "https://github.com/paragonie/constant_time_encoding.git", - "reference": "58c3f47f650c94ec05a151692652a868995d2938" + "reference": "52a0d99e69f56b9ec27ace92ba56897fe6993105" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/58c3f47f650c94ec05a151692652a868995d2938", - "reference": "58c3f47f650c94ec05a151692652a868995d2938", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/52a0d99e69f56b9ec27ace92ba56897fe6993105", + "reference": "52a0d99e69f56b9ec27ace92ba56897fe6993105", "shasum": "" }, "require": { @@ -3194,24 +3415,239 @@ "issues": "https://github.com/paragonie/constant_time_encoding/issues", "source": "https://github.com/paragonie/constant_time_encoding" }, - "time": "2022-06-14T06:56:20+00:00" + "time": "2024-05-08T12:18:48+00:00" }, { - "name": "phar-io/manifest", - "version": "2.0.3", + "name": "phar-io/composer-distributor", + "version": "1.0.2", "source": { "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + "url": "https://github.com/phar-io/composer-distributor.git", + "reference": "dd7d936290b2a42b0c64bfe08090b5c597c280c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "url": "https://api.github.com/repos/phar-io/composer-distributor/zipball/dd7d936290b2a42b0c64bfe08090b5c597c280c9", + "reference": "dd7d936290b2a42b0c64bfe08090b5c597c280c9", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1 || ^2.0", + "ext-dom": "*", + "ext-libxml": "*", + "phar-io/filesystem": "^2.0", + "phar-io/gnupg": "^1.0", + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "composer/composer": "^2.0", + "phpunit/phpunit": "^9.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "PharIo\\ComposerDistributor\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andreas Heigl", + "email": "andreas@heigl.org", + "role": "Developer" + }, + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Feldmann", + "email": "sf@sebastian-feldmann.info", + "role": "Developer" + } + ], + "description": "Base Code for a composer plugin that installs PHAR-files", + "homepage": "https://phar.io", + "keywords": [ + "bin", + "binary", + "composer", + "distribute", + "phar", + "phive" + ], + "support": { + "issues": "https://github.com/phar-io/composer-distributor/issues", + "source": "https://github.com/phar-io/composer-distributor/tree/1.0.2" + }, + "funding": [ + { + "url": "https://phar.io", + "type": "other" + } + ], + "time": "2023-05-31T17:05:49+00:00" + }, + { + "name": "phar-io/executor", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/executor.git", + "reference": "5bfb7400224a0c1cf83343660af85c7f5a073473" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/executor/zipball/5bfb7400224a0c1cf83343660af85c7f5a073473", + "reference": "5bfb7400224a0c1cf83343660af85c7f5a073473", + "shasum": "" + }, + "require": { + "phar-io/filesystem": "^2.0", + "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" + } + ], + "support": { + "issues": "https://github.com/phar-io/executor/issues", + "source": "https://github.com/phar-io/executor/tree/1.0.1" + }, + "time": "2020-11-30T10:53:57+00:00" + }, + { + "name": "phar-io/filesystem", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/filesystem.git", + "reference": "222e3ea432262a05706b7066697c21257664d9d1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/filesystem/zipball/222e3ea432262a05706b7066697c21257664d9d1", + "reference": "222e3ea432262a05706b7066697c21257664d9d1", + "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" + } + ], + "support": { + "issues": "https://github.com/phar-io/filesystem/issues", + "source": "https://github.com/phar-io/filesystem/tree/2.0.1" + }, + "time": "2020-11-30T10:16:22+00:00" + }, + { + "name": "phar-io/gnupg", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/phar-io/gnupg.git", + "reference": "3c106d39f62ba3941f830ca24e125cb1b9290a87" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/gnupg/zipball/3c106d39f62ba3941f830ca24e125cb1b9290a87", + "reference": "3c106d39f62ba3941f830ca24e125cb1b9290a87", + "shasum": "" + }, + "require": { + "phar-io/executor": "^1.0", + "phar-io/filesystem": "^2.0", + "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" + } + ], + "description": "Thin GnuPG wrapper class around the gnupg binary, mimicking the pecl/gnupg api", + "support": { + "issues": "https://github.com/phar-io/gnupg/issues", + "source": "https://github.com/phar-io/gnupg/tree/1.0.2" + }, + "time": "2020-11-30T10:21:26+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", @@ -3252,9 +3688,15 @@ "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.3" + "source": "https://github.com/phar-io/manifest/tree/2.0.4" }, - "time": "2021-07-20T11:28:43+00:00" + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" }, { "name": "phar-io/version", @@ -3362,28 +3804,35 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", + "version": "5.4.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", + "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", "shasum": "" }, "require": { + "doctrine/deprecations": "^1.1", "ext-filter": "*", - "php": "^7.2 || ^8.0", + "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", + "phpdocumentor/type-resolver": "^1.7", + "phpstan/phpdoc-parser": "^1.7", "webmozart/assert": "^1.9.1" }, "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" + "mockery/mockery": "~1.3.5", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-webmozart-assert": "^1.2", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^5.13" }, "type": "library", "extra": { @@ -3407,33 +3856,33 @@ }, { "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" + "email": "opensource@ijaap.nl" } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.4.1" }, - "time": "2021-10-19T17:43:47+00:00" + "time": "2024-05-21T05:55:05+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.7.3", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" + "reference": "153ae662783729388a584b4361f2545e4d841e3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", - "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", + "reference": "153ae662783729388a584b4361f2545e4d841e3c", "shasum": "" }, "require": { "doctrine/deprecations": "^1.0", - "php": "^7.4 || ^8.0", + "php": "^7.3 || ^8.0", "phpdocumentor/reflection-common": "^2.0", "phpstan/phpdoc-parser": "^1.13" }, @@ -3471,22 +3920,22 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" }, - "time": "2023-08-12T11:01:26+00:00" + "time": "2024-02-23T11:10:43+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.24.2", + "version": "1.29.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "bcad8d995980440892759db0c32acae7c8e79442" + "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442", - "reference": "bcad8d995980440892759db0c32acae7c8e79442", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fcaefacf2d5c417e928405b71b400d4ce10daaf4", + "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4", "shasum": "" }, "require": { @@ -3518,22 +3967,22 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.2" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.1" }, - "time": "2023-09-26T12:28:12+00:00" + "time": "2024-05-31T08:52:43+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.40", + "version": "1.11.5", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "93c84b5bf7669920d823631e39904d69b9c7dc5d" + "reference": "490f0ae1c92b082f154681d7849aee776a7c1443" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/93c84b5bf7669920d823631e39904d69b9c7dc5d", - "reference": "93c84b5bf7669920d823631e39904d69b9c7dc5d", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/490f0ae1c92b082f154681d7849aee776a7c1443", + "reference": "490f0ae1c92b082f154681d7849aee776a7c1443", "shasum": "" }, "require": { @@ -3576,45 +4025,41 @@ { "url": "https://github.com/phpstan", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" } ], - "time": "2023-10-30T14:48:31+00:00" + "time": "2024-06-17T15:10:54+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "10.1.7", + "version": "9.2.31", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "355324ca4980b8916c18b9db29f3ef484078f26e" + "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/355324ca4980b8916c18b9db29f3ef484078f26e", - "reference": "355324ca4980b8916c18b9db29f3ef484078f26e", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965", + "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", - "php": ">=8.1", - "phpunit/php-file-iterator": "^4.0", - "phpunit/php-text-template": "^3.0", - "sebastian/code-unit-reverse-lookup": "^3.0", - "sebastian/complexity": "^3.0", - "sebastian/environment": "^6.0", - "sebastian/lines-of-code": "^2.0", - "sebastian/version": "^4.0", + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^10.1" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -3623,7 +4068,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.1-dev" + "dev-master": "9.2-dev" } }, "autoload": { @@ -3652,7 +4097,7 @@ "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/10.1.7" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31" }, "funding": [ { @@ -3660,32 +4105,32 @@ "type": "github" } ], - "time": "2023-10-04T15:34:17+00:00" + "time": "2024-03-02T06:37:42+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "4.1.0", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", - "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -3712,8 +4157,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" }, "funding": [ { @@ -3721,28 +4165,28 @@ "type": "github" } ], - "time": "2023-08-31T06:24:48+00:00" + "time": "2021-12-02T12:48:52+00:00" }, { "name": "phpunit/php-invoker", - "version": "4.0.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-pcntl": "*" @@ -3750,7 +4194,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -3776,7 +4220,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" }, "funding": [ { @@ -3784,32 +4228,32 @@ "type": "github" } ], - "time": "2023-02-03T06:56:09+00:00" + "time": "2020-09-28T05:58:55+00:00" }, { "name": "phpunit/php-text-template", - "version": "3.0.1", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", - "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -3835,8 +4279,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" }, "funding": [ { @@ -3844,32 +4287,32 @@ "type": "github" } ], - "time": "2023-08-31T14:07:24+00:00" + "time": "2020-10-26T05:33:50+00:00" }, { "name": "phpunit/php-timer", - "version": "6.0.0", + "version": "5.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -3895,7 +4338,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" }, "funding": [ { @@ -3903,23 +4346,24 @@ "type": "github" } ], - "time": "2023-02-03T06:57:52+00:00" + "time": "2020-10-26T13:16:10+00:00" }, { "name": "phpunit/phpunit", - "version": "10.4.2", + "version": "9.6.19", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "cacd8b9dd224efa8eb28beb69004126c7ca1a1a1" + "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/cacd8b9dd224efa8eb28beb69004126c7ca1a1a1", - "reference": "cacd8b9dd224efa8eb28beb69004126c7ca1a1a1", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1a54a473501ef4cdeaae4e06891674114d79db8", + "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8", "shasum": "" }, "require": { + "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -3929,26 +4373,27 @@ "myclabs/deep-copy": "^1.10.1", "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", - "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.5", - "phpunit/php-file-iterator": "^4.0", - "phpunit/php-invoker": "^4.0", - "phpunit/php-text-template": "^3.0", - "phpunit/php-timer": "^6.0", - "sebastian/cli-parser": "^2.0", - "sebastian/code-unit": "^2.0", - "sebastian/comparator": "^5.0", - "sebastian/diff": "^5.0", - "sebastian/environment": "^6.0", - "sebastian/exporter": "^5.1", - "sebastian/global-state": "^6.0.1", - "sebastian/object-enumerator": "^5.0", - "sebastian/recursion-context": "^5.0", - "sebastian/type": "^4.0", - "sebastian/version": "^4.0" + "php": ">=7.3", + "phpunit/php-code-coverage": "^9.2.28", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.8", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.5", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^3.2", + "sebastian/version": "^3.0.2" }, "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files" + "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" @@ -3956,7 +4401,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.4-dev" + "dev-master": "9.6-dev" } }, "autoload": { @@ -3988,7 +4433,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.4.2" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.19" }, "funding": [ { @@ -4004,7 +4449,7 @@ "type": "tidelift" } ], - "time": "2023-10-26T07:21:45+00:00" + "time": "2024-04-05T04:35:58+00:00" }, { "name": "psr/event-dispatcher", @@ -4057,29 +4502,559 @@ "time": "2019-01-08T18:20:26+00:00" }, { - "name": "sebastian/cli-parser", - "version": "2.0.0", + "name": "react/cache", + "version": "v1.2.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" + "url": "https://github.com/reactphp/cache.git", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", - "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", + "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=5.3.0", + "react/promise": "^3.0 || ^2.0 || ^1.1" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, Promise-based cache interface for ReactPHP", + "keywords": [ + "cache", + "caching", + "promise", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/cache/issues", + "source": "https://github.com/reactphp/cache/tree/v1.2.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2022-11-30T15:59:55+00:00" + }, + { + "name": "react/child-process", + "version": "v0.6.5", + "source": { + "type": "git", + "url": "https://github.com/reactphp/child-process.git", + "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/child-process/zipball/e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", + "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/event-loop": "^1.2", + "react/stream": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35", + "react/socket": "^1.8", + "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\ChildProcess\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven library for executing child processes with ReactPHP.", + "keywords": [ + "event-driven", + "process", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/child-process/issues", + "source": "https://github.com/reactphp/child-process/tree/v0.6.5" + }, + "funding": [ + { + "url": "https://github.com/WyriHaximus", + "type": "github" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2022-09-16T13:41:56+00:00" + }, + { + "name": "react/dns", + "version": "v1.13.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/dns.git", + "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/dns/zipball/eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/cache": "^1.0 || ^0.6 || ^0.5", + "react/event-loop": "^1.2", + "react/promise": "^3.2 || ^2.7 || ^1.2.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4.3 || ^3 || ^2", + "react/promise-timer": "^1.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Dns\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async DNS resolver for ReactPHP", + "keywords": [ + "async", + "dns", + "dns-resolver", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/dns/issues", + "source": "https://github.com/reactphp/dns/tree/v1.13.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-13T14:18:03+00:00" + }, + { + "name": "react/event-loop", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/event-loop.git", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "suggest": { + "ext-pcntl": "For signal handling support when using the StreamSelectLoop" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\EventLoop\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", + "keywords": [ + "asynchronous", + "event-loop" + ], + "support": { + "issues": "https://github.com/reactphp/event-loop/issues", + "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-11-13T13:48:05+00:00" + }, + { + "name": "react/promise", + "version": "v3.2.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63", + "shasum": "" + }, + "require": { + "php": ">=7.1.0" + }, + "require-dev": { + "phpstan/phpstan": "1.10.39 || 1.4.10", + "phpunit/phpunit": "^9.6 || ^7.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "React\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "support": { + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v3.2.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-05-24T10:39:05+00:00" + }, + { + "name": "react/socket", + "version": "v1.15.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/socket.git", + "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/socket/zipball/216d3aec0b87f04a40ca04f481e6af01bdd1d038", + "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/dns": "^1.11", + "react/event-loop": "^1.2", + "react/promise": "^3 || ^2.6 || ^1.2.1", + "react/stream": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4 || ^3 || ^2", + "react/promise-stream": "^1.4", + "react/promise-timer": "^1.10" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Socket\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", + "keywords": [ + "Connection", + "Socket", + "async", + "reactphp", + "stream" + ], + "support": { + "issues": "https://github.com/reactphp/socket/issues", + "source": "https://github.com/reactphp/socket/tree/v1.15.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-12-15T11:02:10+00:00" + }, + { + "name": "react/stream", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/stream.git", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/stream/zipball/1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.8", + "react/event-loop": "^1.2" + }, + "require-dev": { + "clue/stream-filter": "~1.2", + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Stream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", + "keywords": [ + "event-driven", + "io", + "non-blocking", + "pipe", + "reactphp", + "readable", + "stream", + "writable" + ], + "support": { + "issues": "https://github.com/reactphp/stream/issues", + "source": "https://github.com/reactphp/stream/tree/v1.4.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-11T12:45:25+00:00" + }, + { + "name": "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-main": "2.0-dev" + "dev-master": "1.0-dev" } }, "autoload": { @@ -4102,7 +5077,7 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" }, "funding": [ { @@ -4110,32 +5085,32 @@ "type": "github" } ], - "time": "2023-02-03T06:58:15+00:00" + "time": "2024-03-02T06:27:43+00:00" }, { "name": "sebastian/code-unit", - "version": "2.0.0", + "version": "1.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", - "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.0-dev" + "dev-master": "1.0-dev" } }, "autoload": { @@ -4158,7 +5133,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" }, "funding": [ { @@ -4166,32 +5141,32 @@ "type": "github" } ], - "time": "2023-02-03T06:58:43+00:00" + "time": "2020-10-26T13:08:54+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "3.0.0", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -4213,7 +5188,7 @@ "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/3.0.0" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" }, "funding": [ { @@ -4221,36 +5196,34 @@ "type": "github" } ], - "time": "2023-02-03T06:59:15+00:00" + "time": "2020-09-28T05:30:19+00:00" }, { "name": "sebastian/comparator", - "version": "5.0.1", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2db5010a484d53ebf536087a70b4a5423c102372" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", - "reference": "2db5010a484d53ebf536087a70b4a5423c102372", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-mbstring": "*", - "php": ">=8.1", - "sebastian/diff": "^5.0", - "sebastian/exporter": "^5.0" + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^10.3" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -4289,8 +5262,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" }, "funding": [ { @@ -4298,33 +5270,33 @@ "type": "github" } ], - "time": "2023-08-14T13:18:12+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { "name": "sebastian/complexity", - "version": "3.1.0", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "68cfb347a44871f01e33ab0ef8215966432f6957" + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68cfb347a44871f01e33ab0ef8215966432f6957", - "reference": "68cfb347a44871f01e33ab0ef8215966432f6957", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", - "php": ">=8.1" + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -4347,8 +5319,7 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.1.0" + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" }, "funding": [ { @@ -4356,33 +5327,33 @@ "type": "github" } ], - "time": "2023-09-28T11:50:59+00:00" + "time": "2023-12-22T06:19:30+00:00" }, { "name": "sebastian/diff", - "version": "5.0.3", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b" + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b", - "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0", + "phpunit/phpunit": "^9.3", "symfony/process": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -4414,8 +5385,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" }, "funding": [ { @@ -4423,27 +5393,27 @@ "type": "github" } ], - "time": "2023-05-01T07:48:21+00:00" + "time": "2024-03-02T06:30:58+00:00" }, { "name": "sebastian/environment", - "version": "6.0.1", + "version": "5.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", - "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-posix": "*" @@ -4451,7 +5421,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -4470,7 +5440,7 @@ } ], "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "https://github.com/sebastianbergmann/environment", + "homepage": "http://www.github.com/sebastianbergmann/environment", "keywords": [ "Xdebug", "environment", @@ -4478,8 +5448,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" }, "funding": [ { @@ -4487,34 +5456,34 @@ "type": "github" } ], - "time": "2023-04-11T05:39:26+00:00" + "time": "2023-02-03T06:03:51+00:00" }, { "name": "sebastian/exporter", - "version": "5.1.1", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", - "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", "shasum": "" }, "require": { - "ext-mbstring": "*", - "php": ">=8.1", - "sebastian/recursion-context": "^5.0" + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.1-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -4556,8 +5525,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" }, "funding": [ { @@ -4565,35 +5533,38 @@ "type": "github" } ], - "time": "2023-09-24T13:22:09+00:00" + "time": "2024-03-02T06:33:00+00:00" }, { "name": "sebastian/global-state", - "version": "6.0.1", + "version": "5.0.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", - "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", "shasum": "" }, "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -4618,8 +5589,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" }, "funding": [ { @@ -4627,33 +5597,33 @@ "type": "github" } ], - "time": "2023-07-19T07:19:23+00:00" + "time": "2024-03-02T06:35:11+00:00" }, { "name": "sebastian/lines-of-code", - "version": "2.0.1", + "version": "1.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d" + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/649e40d279e243d985aa8fb6e74dd5bb28dc185d", - "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", - "php": ">=8.1" + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.0-dev" + "dev-master": "1.0-dev" } }, "autoload": { @@ -4676,8 +5646,7 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.1" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" }, "funding": [ { @@ -4685,34 +5654,34 @@ "type": "github" } ], - "time": "2023-08-31T09:25:50+00:00" + "time": "2023-12-22T06:20:34+00:00" }, { "name": "sebastian/object-enumerator", - "version": "5.0.0", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", - "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", "shasum": "" }, "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -4734,7 +5703,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" }, "funding": [ { @@ -4742,32 +5711,32 @@ "type": "github" } ], - "time": "2023-02-03T07:08:32+00:00" + "time": "2020-10-26T13:12:34+00:00" }, { "name": "sebastian/object-reflector", - "version": "3.0.0", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", - "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -4789,7 +5758,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" }, "funding": [ { @@ -4797,32 +5766,32 @@ "type": "github" } ], - "time": "2023-02-03T07:06:18+00:00" + "time": "2020-10-26T13:14:26+00:00" }, { "name": "sebastian/recursion-context", - "version": "5.0.0", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712" + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -4852,7 +5821,7 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" }, "funding": [ { @@ -4860,32 +5829,86 @@ "type": "github" } ], - "time": "2023-02-03T07:05:40+00:00" + "time": "2023-02-03T06:07:39+00:00" }, { - "name": "sebastian/type", - "version": "4.0.0", + "name": "sebastian/resource-operations", + "version": "3.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "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": { @@ -4908,7 +5931,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" }, "funding": [ { @@ -4916,29 +5939,29 @@ "type": "github" } ], - "time": "2023-02-03T07:10:45+00:00" + "time": "2023-02-03T06:13:03+00:00" }, { "name": "sebastian/version", - "version": "4.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" + "reference": "c6c1022351a901512170118436c764e473f6de8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -4961,7 +5984,7 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" }, "funding": [ { @@ -4969,195 +5992,20 @@ "type": "github" } ], - "time": "2023-02-07T11:34:05+00:00" - }, - { - "name": "sebastianfeldmann/camino", - "version": "0.9.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianfeldmann/camino.git", - "reference": "bf2e4c8b2a029e9eade43666132b61331e3e8184" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianfeldmann/camino/zipball/bf2e4c8b2a029e9eade43666132b61331e3e8184", - "reference": "bf2e4c8b2a029e9eade43666132b61331e3e8184", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "SebastianFeldmann\\Camino\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Sebastian Feldmann", - "email": "sf@sebastian-feldmann.info" - } - ], - "description": "Path management the OO way", - "homepage": "https://github.com/sebastianfeldmann/camino", - "keywords": [ - "file system", - "path" - ], - "support": { - "issues": "https://github.com/sebastianfeldmann/camino/issues", - "source": "https://github.com/sebastianfeldmann/camino/tree/0.9.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianfeldmann", - "type": "github" - } - ], - "time": "2022-01-03T13:15:10+00:00" - }, - { - "name": "sebastianfeldmann/cli", - "version": "3.4.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianfeldmann/cli.git", - "reference": "8a932e99e9455981fb32fa6c085492462fe8f8cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianfeldmann/cli/zipball/8a932e99e9455981fb32fa6c085492462fe8f8cf", - "reference": "8a932e99e9455981fb32fa6c085492462fe8f8cf", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "require-dev": { - "symfony/process": "^4.3 | ^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4.x-dev" - } - }, - "autoload": { - "psr-4": { - "SebastianFeldmann\\Cli\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Sebastian Feldmann", - "email": "sf@sebastian-feldmann.info" - } - ], - "description": "PHP cli helper classes", - "homepage": "https://github.com/sebastianfeldmann/cli", - "keywords": [ - "cli" - ], - "support": { - "issues": "https://github.com/sebastianfeldmann/cli/issues", - "source": "https://github.com/sebastianfeldmann/cli/tree/3.4.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianfeldmann", - "type": "github" - } - ], - "time": "2021-12-20T14:59:49+00:00" - }, - { - "name": "sebastianfeldmann/git", - "version": "3.9.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianfeldmann/git.git", - "reference": "eb2ca84a2b45a461f0bf5d4fd400df805649e83a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianfeldmann/git/zipball/eb2ca84a2b45a461f0bf5d4fd400df805649e83a", - "reference": "eb2ca84a2b45a461f0bf5d4fd400df805649e83a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-xml": "*", - "php": ">=7.2", - "sebastianfeldmann/cli": "^3.0" - }, - "require-dev": { - "mikey179/vfsstream": "^1.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "SebastianFeldmann\\Git\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Sebastian Feldmann", - "email": "sf@sebastian-feldmann.info" - } - ], - "description": "PHP git wrapper", - "homepage": "https://github.com/sebastianfeldmann/git", - "keywords": [ - "git" - ], - "support": { - "issues": "https://github.com/sebastianfeldmann/git/issues", - "source": "https://github.com/sebastianfeldmann/git/tree/3.9.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianfeldmann", - "type": "github" - } - ], - "time": "2023-10-13T09:10:48+00:00" + "time": "2020-09-28T06:39:44+00:00" }, { "name": "seld/jsonlint", - "version": "1.10.0", + "version": "1.10.2", "source": { "type": "git", "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1" + "reference": "9bb7db07b5d66d90f6ebf542f09fc67d800e5259" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/594fd6462aad8ecee0b45ca5045acea4776667f1", - "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/9bb7db07b5d66d90f6ebf542f09fc67d800e5259", + "reference": "9bb7db07b5d66d90f6ebf542f09fc67d800e5259", "shasum": "" }, "require": { @@ -5184,7 +6032,7 @@ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "homepage": "https://seld.be" } ], "description": "JSON Linter", @@ -5196,7 +6044,7 @@ ], "support": { "issues": "https://github.com/Seldaek/jsonlint/issues", - "source": "https://github.com/Seldaek/jsonlint/tree/1.10.0" + "source": "https://github.com/Seldaek/jsonlint/tree/1.10.2" }, "funding": [ { @@ -5208,20 +6056,20 @@ "type": "tidelift" } ], - "time": "2023-05-11T13:16:46+00:00" + "time": "2024-02-07T12:57:50+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.3.2", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e" + "reference": "8d7507f02b06e06815e56bb39aa0128e3806208b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e", - "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8d7507f02b06e06815e56bb39aa0128e3806208b", + "reference": "8d7507f02b06e06815e56bb39aa0128e3806208b", "shasum": "" }, "require": { @@ -5238,13 +6086,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^5.4|^6.0" + "symfony/stopwatch": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -5272,7 +6120,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.8" }, "funding": [ { @@ -5288,20 +6136,20 @@ "type": "tidelift" } ], - "time": "2023-07-06T06:56:43+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.3.0", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", "shasum": "" }, "require": { @@ -5311,7 +6159,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "3.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -5348,7 +6196,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" }, "funding": [ { @@ -5364,20 +6212,20 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { "name": "symfony/filesystem", - "version": "v6.3.1", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae" + "reference": "4d37529150e7081c51b3c5d5718c55a04a9503f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", - "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/4d37529150e7081c51b3c5d5718c55a04a9503f3", + "reference": "4d37529150e7081c51b3c5d5718c55a04a9503f3", "shasum": "" }, "require": { @@ -5385,6 +6233,9 @@ "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, + "require-dev": { + "symfony/process": "^5.4|^6.4|^7.0" + }, "type": "library", "autoload": { "psr-4": { @@ -5411,7 +6262,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.3.1" + "source": "https://github.com/symfony/filesystem/tree/v6.4.8" }, "funding": [ { @@ -5427,27 +6278,27 @@ "type": "tidelift" } ], - "time": "2023-06-01T08:30:39+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/finder", - "version": "v6.3.5", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4" + "reference": "3ef977a43883215d560a2cecb82ec8e62131471c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/a1b31d88c0e998168ca7792f222cbecee47428c4", - "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4", + "url": "https://api.github.com/repos/symfony/finder/zipball/3ef977a43883215d560a2cecb82ec8e62131471c", + "reference": "3ef977a43883215d560a2cecb82ec8e62131471c", "shasum": "" }, "require": { "php": ">=8.1" }, "require-dev": { - "symfony/filesystem": "^6.0" + "symfony/filesystem": "^6.0|^7.0" }, "type": "library", "autoload": { @@ -5475,7 +6326,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.3.5" + "source": "https://github.com/symfony/finder/tree/v6.4.8" }, "funding": [ { @@ -5491,20 +6342,20 @@ "type": "tidelift" } ], - "time": "2023-09-26T12:56:25+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/options-resolver", - "version": "v6.3.0", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd" + "reference": "22ab9e9101ab18de37839074f8a1197f55590c1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a10f19f5198d589d5c33333cffe98dc9820332dd", - "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/22ab9e9101ab18de37839074f8a1197f55590c1b", + "reference": "22ab9e9101ab18de37839074f8a1197f55590c1b", "shasum": "" }, "require": { @@ -5542,7 +6393,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.3.0" + "source": "https://github.com/symfony/options-resolver/tree/v6.4.8" }, "funding": [ { @@ -5558,20 +6409,100 @@ "type": "tidelift" } ], - "time": "2023-05-12T14:21:09+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { - "name": "symfony/process", - "version": "v6.3.4", + "name": "symfony/polyfill-iconv", + "version": "v1.30.0", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54" + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "c027e6a3c6aee334663ec21f5852e89738abc805" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/0b5c29118f2e980d455d2e34a5659f4579847c54", - "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/c027e6a3c6aee334663ec21f5852e89738abc805", + "reference": "c027e6a3c6aee334663ec21f5852e89738abc805", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-iconv": "*" + }, + "suggest": { + "ext-iconv": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Iconv extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.30.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-05-31T15:07:36+00:00" + }, + { + "name": "symfony/process", + "version": "v6.4.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/8d92dd79149f29e89ee0f480254db595f6a6a2c5", + "reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5", "shasum": "" }, "require": { @@ -5603,7 +6534,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.3.4" + "source": "https://github.com/symfony/process/tree/v6.4.8" }, "funding": [ { @@ -5619,20 +6550,20 @@ "type": "tidelift" } ], - "time": "2023-08-07T10:39:22+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/stopwatch", - "version": "v6.3.0", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2" + "reference": "63e069eb616049632cde9674c46957819454b8aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", - "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/63e069eb616049632cde9674c46957819454b8aa", + "reference": "63e069eb616049632cde9674c46957819454b8aa", "shasum": "" }, "require": { @@ -5665,7 +6596,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.3.0" + "source": "https://github.com/symfony/stopwatch/tree/v6.4.8" }, "funding": [ { @@ -5681,20 +6612,20 @@ "type": "tidelift" } ], - "time": "2023-02-16T10:14:28+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.3.6", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "999ede244507c32b8e43aebaa10e9fce20de7c97" + "reference": "ad23ca4312395f0a8a8633c831ef4c4ee542ed25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/999ede244507c32b8e43aebaa10e9fce20de7c97", - "reference": "999ede244507c32b8e43aebaa10e9fce20de7c97", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ad23ca4312395f0a8a8633c831ef4c4ee542ed25", + "reference": "ad23ca4312395f0a8a8633c831ef4c4ee542ed25", "shasum": "" }, "require": { @@ -5707,10 +6638,11 @@ }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.3|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", "twig/twig": "^2.13|^3.0.4" }, "bin": [ @@ -5749,7 +6681,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.6" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.8" }, "funding": [ { @@ -5765,7 +6697,7 @@ "type": "tidelift" } ], - "time": "2023-10-12T18:45:56+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "thecodingmachine/safe", @@ -5908,16 +6840,16 @@ }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", "shasum": "" }, "require": { @@ -5946,7 +6878,7 @@ "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.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" }, "funding": [ { @@ -5954,7 +6886,7 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2024-03-03T12:36:25+00:00" }, { "name": "webmozart/assert", @@ -6022,9 +6954,8 @@ "prefer-lowest": false, "platform": { "php": ">= 8.1", - "ext-mbstring": "*", - "ext-pcntl": "*" + "ext-mbstring": "*" }, "platform-dev": [], - "plugin-api-version": "2.2.0" + "plugin-api-version": "2.6.0" } diff --git a/config/ext.json b/config/ext.json index 2ab3dc65..9555dfb1 100644 --- a/config/ext.json +++ b/config/ext.json @@ -1,4 +1,18 @@ { + "amqp": { + "support": { + "BSD": "wip" + }, + "type": "external", + "arg-type": "custom", + "source": "amqp", + "lib-depends": [ + "librabbitmq" + ], + "ext-depends-windows": [ + "openssl" + ] + }, "apcu": { "type": "external", "source": "apcu" @@ -8,7 +22,8 @@ }, "bz2": { "type": "builtin", - "arg-type": "with-prefix", + "arg-type-unix": "with-prefix", + "arg-type-windows": "with", "lib-depends": [ "bzip2" ] @@ -20,26 +35,58 @@ "type": "builtin" }, "curl": { + "notes": true, "type": "builtin", "arg-type": "with", "lib-depends": [ "curl" + ], + "ext-depends-windows": [ + "zlib", + "openssl" ] }, "dba": { "type": "builtin", - "arg-type-windows": "with" + "arg-type": "custom", + "lib-suggests": [ + "qdbm" + ] }, "dom": { + "support": { + "BSD": "wip" + }, "type": "builtin", "arg-type": "custom", "arg-type-windows": "with", "lib-depends": [ "libxml2", "zlib" + ], + "ext-depends-windows": [ + "xml" ] }, + "ds": { + "type": "external", + "source": "ext-ds" + }, + "enchant": { + "support": { + "Windows": "wip", + "BSD": "wip", + "Darwin": "wip", + "Linux": "wip" + }, + "type": "wip" + }, "event": { + "support": { + "Windows": "wip", + "BSD": "wip" + }, + "notes": true, "type": "external", "source": "ext-event", "arg-type": "custom", @@ -57,10 +104,18 @@ "type": "builtin" }, "ffi": { + "support": { + "Linux": "no", + "BSD": "wip" + }, + "notes": true, "arg-type": "custom", "type": "builtin", - "lib-depends": [ + "lib-depends-unix": [ "libffi" + ], + "lib-depends-windows": [ + "libffi-win" ] }, "fileinfo": { @@ -76,6 +131,10 @@ ] }, "gd": { + "support": { + "BSD": "wip" + }, + "notes": true, "type": "builtin", "arg-type": "custom", "arg-type-windows": "with", @@ -94,35 +153,82 @@ ] }, "gettext": { + "support": { + "Windows": "wip", + "BSD": "wip" + }, "type": "builtin", - "arg-type": "with", + "arg-type": "with-prefix", "lib-depends": [ "gettext" ] }, "glfw": { + "support": { + "Windows": "wip", + "BSD": "no", + "Linux": "no" + }, + "notes": true, "type": "external", "arg-type": "custom", "source": "ext-glfw", "lib-depends": [ "glfw" - ] + ], + "lib-depends-windows": [] }, "gmp": { + "support": { + "Windows": "wip", + "BSD": "wip" + }, "type": "builtin", "arg-type": "with-prefix", "lib-depends": [ "gmp" ] }, + "gmssl": { + "support": { + "BSD": "wip" + }, + "type": "external", + "source": "ext-gmssl", + "lib-depends": [ + "gmssl" + ] + }, "iconv": { + "support": { + "BSD": "wip" + }, "type": "builtin", "arg-type": "with-prefix", - "lib-depends-windows": [ + "arg-type-windows": "with", + "lib-depends-unix": [ "libiconv" + ], + "lib-depends-windows": [ + "libiconv-win" + ] + }, + "igbinary": { + "support": { + "BSD": "wip" + }, + "type": "external", + "source": "igbinary", + "ext-suggests": [ + "session", + "apcu" ] }, "imagick": { + "support": { + "Windows": "wip", + "BSD": "wip" + }, "type": "external", "source": "ext-imagick", "arg-type": "custom", @@ -131,26 +237,44 @@ ] }, "imap": { + "support": { + "Windows": "wip", + "BSD": "wip" + }, + "notes": true, "type": "builtin", - "arg-type": "with", + "arg-type": "custom", "lib-depends": [ "imap" ], - "lib-suggests": [ - "kerberos" + "ext-suggests": [ + "openssl" ] }, "inotify": { + "support": { + "Windows": "no", + "BSD": "wip", + "Darwin": "no" + }, "type": "external", "source": "inotify" }, "intl": { + "support": { + "Windows": "no", + "BSD": "wip" + }, "type": "builtin", "lib-depends": [ "icu" ] }, "ldap": { + "support": { + "Windows": "wip", + "BSD": "wip" + }, "type": "builtin", "arg-type": "with-prefix", "lib-depends": [ @@ -164,21 +288,45 @@ "openssl" ] }, + "libxml": { + "support": { + "BSD": "wip" + }, + "type": "builtin", + "arg-type": "none", + "ext-depends": [ + "xml" + ] + }, "mbregex": { "type": "builtin", "arg-type": "custom", "ext-depends": [ "mbstring" - ] - }, - "mbstring": { - "type": "builtin", - "arg-type": "custom", + ], "lib-depends": [ "onig" ] }, + "mbstring": { + "type": "builtin", + "arg-type": "custom" + }, + "mcrypt": { + "type": "wip", + "support": { + "Windows": "no", + "BSD": "no", + "Darwin": "no", + "Linux": "no" + }, + "notes": true + }, "memcache": { + "support": { + "Windows": "wip", + "BSD": "wip" + }, "type": "external", "source": "ext-memcache", "arg-type": "custom", @@ -190,6 +338,11 @@ ] }, "memcached": { + "support": { + "Windows": "wip", + "BSD": "wip", + "Linux": "no" + }, "type": "external", "source": "memcached", "arg-type": "custom", @@ -203,6 +356,10 @@ ] }, "mongodb": { + "support": { + "BSD": "wip", + "Windows": "wip" + }, "type": "external", "source": "mongodb", "arg-type": "custom", @@ -213,6 +370,15 @@ "zlib" ] }, + "msgpack": { + "support": { + "BSD": "wip" + }, + "type": "external", + "source": "msgpack", + "arg-type-unix": "with", + "arg-type-win": "enable" + }, "mysqli": { "type": "builtin", "arg-type": "with", @@ -227,20 +393,61 @@ "zlib" ] }, + "oci8": { + "type": "wip", + "support": { + "Windows": "wip", + "BSD": "no", + "Darwin": "no", + "Linux": "no" + }, + "notes": true + }, "opcache": { - "type": "builtin" + "type": "builtin", + "arg-type-unix": "custom" }, "openssl": { + "notes": true, "type": "builtin", "arg-type": "custom", + "arg-type-windows": "with", "lib-depends": [ - "openssl" + "openssl", + "zlib" ], "ext-depends": [ "zlib" ] }, + "parallel": { + "support": { + "BSD": "wip" + }, + "notes": true, + "type": "external", + "source": "parallel", + "arg-type-windows": "with", + "lib-depends-windows": [ + "pthreads4w" + ] + }, + "password-argon2": { + "support": { + "Windows": "wip", + "BSD": "wip" + }, + "notes": true, + "type": "builtin", + "arg-type": "with-prefix", + "lib-depends": [ + "libargon2" + ] + }, "pcntl": { + "support": { + "Windows": "no" + }, "type": "builtin", "unix-only": true }, @@ -256,6 +463,10 @@ ] }, "pdo_pgsql": { + "support": { + "Windows": "wip", + "BSD": "wip" + }, "type": "builtin", "arg-type": "with-prefix", "ext-depends": [ @@ -267,6 +478,9 @@ ] }, "pdo_sqlite": { + "support": { + "BSD": "wip" + }, "type": "builtin", "arg-type": "with", "ext-depends": [ @@ -277,7 +491,24 @@ "sqlite" ] }, + "pdo_sqlsrv": { + "support": { + "BSD": "wip" + }, + "type": "external", + "source": "pdo_sqlsrv", + "arg-type": "with", + "ext-depends": [ + "pdo", + "sqlsrv" + ] + }, "pgsql": { + "support": { + "Windows": "wip", + "BSD": "wip" + }, + "notes": true, "type": "builtin", "arg-type": "with-prefix", "lib-depends": [ @@ -291,21 +522,35 @@ ] }, "posix": { + "support": { + "Windows": "no" + }, "type": "builtin", "unix-only": true }, "protobuf": { + "support": { + "Windows": "wip", + "BSD": "wip" + }, "type": "external", "source": "protobuf" }, - "pspell": { - "type": "builtin", - "arg-type": "with", - "lib-depends": [ - "aspell" - ] + "rar": { + "support": { + "BSD": "wip", + "Darwin": "partial" + }, + "notes": true, + "type": "external", + "source": "rar", + "cpp-extension": true }, "readline": { + "support": { + "Windows": "wip", + "BSD": "wip" + }, "type": "builtin", "arg-type": "with-prefix", "lib-depends": [ @@ -313,11 +558,19 @@ ] }, "redis": { + "support": { + "BSD": "wip" + }, "type": "external", "source": "redis", "arg-type": "custom", "ext-suggests": [ - "session" + "session", + "igbinary" + ], + "lib-suggests-unix": [ + "zstd", + "liblz4" ] }, "session": { @@ -326,15 +579,29 @@ "shmop": { "type": "builtin" }, + "simdjson": { + "type": "external", + "source": "ext-simdjson", + "cpp-extension": true + }, "simplexml": { + "support": { + "BSD": "wip" + }, "type": "builtin", "arg-type": "custom", - "arg-type-windows": "with", "lib-depends": [ "libxml2" + ], + "ext-depends-windows": [ + "xml" ] }, "snappy": { + "support": { + "Windows": "wip", + "BSD": "wip" + }, "type": "external", "source": "ext-snappy", "cpp-extension": true, @@ -342,47 +609,89 @@ "lib-depends": [ "snappy" ], - "ext-suggest": [ + "ext-suggests": [ "apcu" ] }, - "snmp": { - "type": "builtin", - "arg-type": "with", - "lib-depends": [ - "net-snmp" - ] - }, "soap": { + "support": { + "BSD": "wip" + }, "type": "builtin", "arg-type": "custom", "lib-depends": [ "libxml2" + ], + "ext-depends-windows": [ + "xml" ] }, "sockets": { "type": "builtin" }, "sodium": { + "support": { + "Windows": "wip", + "BSD": "wip" + }, "type": "builtin", "arg-type": "with", "lib-depends": [ "libsodium" ] }, + "spx": { + "support": { + "BSD": "wip", + "Windows": "no" + }, + "notes": true, + "type": "external", + "source": "spx", + "arg-type": "custom", + "lib-depends": [ + "zlib" + ] + }, "sqlite3": { + "support": { + "BSD": "wip" + }, "type": "builtin", "arg-type": "with-prefix", + "arg-type-windows": "with", "lib-depends": [ "sqlite" ] }, + "sqlsrv": { + "support": { + "BSD": "wip" + }, + "type": "external", + "source": "sqlsrv", + "lib-depends-unix": [ + "unixodbc" + ], + "ext-depends-linux": [ + "pcntl" + ], + "cpp-extension": true + }, "ssh2": { + "support": { + "BSD": "wip" + }, "type": "external", "source": "ext-ssh2", "arg-type": "with-prefix", + "arg-type-windows": "with", "lib-depends": [ "libssh2" + ], + "ext-depends-windows": [ + "openssl", + "zlib" ] }, "rdkafka": { @@ -395,23 +704,81 @@ ] }, "swoole": { + "support": { + "Windows": "no", + "BSD": "wip" + }, + "notes": true, "type": "external", "source": "swoole", "arg-type": "custom", "cpp-extension": true, + "unix-only": true, "lib-depends": [ - "openssl" + "libcares", + "brotli", + "nghttp2", + "zlib" ], "ext-depends": [ - "openssl" + "openssl", + "curl" ], "ext-suggests": [ - "curl", - "pgsql" + "swoole-hook-pgsql", + "swoole-hook-mysql", + "swoole-hook-sqlite" + ] + }, + "swoole-hook-mysql": { + "support": { + "Windows": "no", + "BSD": "wip" + }, + "notes": true, + "type": "addon", + "arg-type": "custom", + "ext-depends": [ + "mysqlnd", + "pdo", + "pdo_mysql" ], - "unix-only": true + "ext-suggests": [ + "mysqli" + ] + }, + "swoole-hook-pgsql": { + "support": { + "Windows": "no", + "BSD": "wip", + "Darwin": "partial" + }, + "notes": true, + "type": "addon", + "arg-type": "custom", + "ext-depends": [ + "pgsql", + "pdo" + ] + }, + "swoole-hook-sqlite": { + "support": { + "Windows": "no", + "BSD": "wip" + }, + "notes": true, + "type": "addon", + "arg-type": "custom", + "ext-depends": [ + "sqlite3", + "pdo" + ] }, "swow": { + "support": { + "BSD": "wip" + }, + "notes": true, "type": "external", "source": "swow", "arg-type": "custom", @@ -425,20 +792,34 @@ ] }, "sysvmsg": { + "support": { + "Windows": "no", + "BSD": "wip" + }, "type": "builtin", "unix-only": true }, "sysvsem": { + "support": { + "Windows": "no", + "BSD": "wip" + }, "type": "builtin", "unix-only": true }, "sysvshm": { - "type": "builtin", - "unix-only": true + "support": { + "BSD": "wip" + }, + "type": "builtin" }, "tidy": { + "support": { + "Windows": "wip", + "BSD": "wip" + }, "type": "builtin", - "arg-type": "with", + "arg-type": "with-prefix", "lib-depends": [ "tidy" ] @@ -446,38 +827,118 @@ "tokenizer": { "type": "builtin" }, + "uuid": { + "support": { + "Windows": "wip", + "BSD": "wip" + }, + "type": "external", + "source": "ext-uuid", + "arg-type": "with-prefix", + "lib-depends": [ + "libuuid" + ] + }, + "uv": { + "support": { + "Windows": "wip", + "BSD": "wip" + }, + "type": "external", + "source": "ext-uv", + "arg-type": "with-prefix", + "lib-depends": [ + "libuv" + ], + "ext-depends": [ + "sockets" + ] + }, + "xdebug": { + "type": "builtin", + "support": { + "Windows": "wip", + "BSD": "no", + "Darwin": "no", + "Linux": "no" + }, + "notes": true + }, + "xhprof": { + "support": { + "Windows": "wip", + "BSD": "wip" + }, + "notes": true, + "type": "external", + "source": "xhprof", + "ext-depends": [ + "ctype" + ] + }, "xlswriter": { + "support": { + "Windows": "wip", + "BSD": "wip" + }, "type": "external", "source": "xlswriter", "arg-type": "custom", "ext-depends": [ "zlib", "zip" + ], + "lib-suggests": [ + "openssl" ] }, "xml": { + "support": { + "BSD": "wip" + }, + "notes": true, "type": "builtin", "arg-type": "custom", "arg-type-windows": "with", "lib-depends": [ "libxml2" + ], + "ext-depends-windows": [ + "iconv" ] }, "xmlreader": { + "support": { + "BSD": "wip" + }, "type": "builtin", "arg-type": "custom", "lib-depends": [ "libxml2" + ], + "ext-depends-windows": [ + "xml", + "dom" ] }, "xmlwriter": { + "support": { + "BSD": "wip" + }, "type": "builtin", "arg-type": "custom", "lib-depends": [ "libxml2" + ], + "ext-depends-windows": [ + "xml" ] }, "xsl": { + "support": { + "Windows": "wip", + "BSD": "wip" + }, "type": "builtin", "arg-type": "with-prefix", "lib-depends": [ @@ -488,20 +949,48 @@ "dom" ] }, + "yac": { + "support": { + "BSD": "wip" + }, + "type": "external", + "source": "yac", + "arg-type-unix": "custom", + "ext-depends-unix": [ + "igbinary" + ] + }, "yaml": { + "support": { + "BSD": "wip" + }, "type": "external", "source": "yaml", - "arg-type": "with-prefix", + "arg-type-unix": "with-prefix", + "arg-type-windows": "with", "lib-depends": [ "libyaml" ] }, "zip": { + "support": { + "BSD": "wip" + }, "type": "builtin", "arg-type": "with-prefix", "arg-type-windows": "enable", - "lib-depends": [ + "lib-depends-unix": [ "libzip" + ], + "ext-depends-windows": [ + "zlib", + "bz2" + ], + "lib-depends-windows": [ + "libzip", + "zlib", + "bzip2", + "xz" ] }, "zlib": { @@ -513,6 +1002,10 @@ ] }, "zstd": { + "support": { + "Windows": "wip", + "BSD": "wip" + }, "type": "external", "source": "ext-zstd", "arg-type": "custom", diff --git a/config/lib.json b/config/lib.json index 3c84b2bf..5718cfb5 100644 --- a/config/lib.json +++ b/config/lib.json @@ -2,14 +2,14 @@ "brotli": { "source": "brotli", "static-libs-unix": [ - "libbrotlidec-static.a", - "libbrotlienc-static.a", - "libbrotlicommon-static.a" + "libbrotlidec.a", + "libbrotlienc.a", + "libbrotlicommon.a" ], "static-libs-windows": [ - "brotlicommon-static.lib", - "brotlienc-static.lib", - "brotlidec-static.lib" + "brotlicommon.lib", + "brotlienc.lib", + "brotlidec.lib" ], "headers": [ "brotli" @@ -21,10 +21,8 @@ "libbz2.a" ], "static-libs-windows": [ - [ - "libbz2.lib", - "libbz2_a.lib" - ] + "libbz2.lib", + "libbz2_a.lib" ], "headers": [ "bzlib.h" @@ -36,7 +34,7 @@ "libcurl.a" ], "static-libs-windows": [ - "libcurl.lib" + "libcurl_a.lib" ], "headers": [ "curl" @@ -45,21 +43,22 @@ "openssl", "zlib" ], - "lib-suggests": [ - "libssh2", - "brotli", - "nghttp2", - "zstd" - ], - "lib-suggests-windows": [ + "lib-depends-windows": [ + "openssl", "zlib", + "libssh2", + "nghttp2" + ], + "lib-suggests-unix": [ "libssh2", "brotli", "nghttp2", "zstd", - "openssl", - "idn2", - "psl" + "libcares" + ], + "lib-suggests-windows": [ + "brotli", + "zstd" ], "frameworks": [ "CoreFoundation", @@ -72,6 +71,9 @@ "static-libs-unix": [ "libfreetype.a" ], + "static-libs-windows": [ + "libfreetype_a.lib" + ], "headers-unix": [ "freetype2/freetype/freetype.h", "freetype2/ft2build.h" @@ -85,6 +87,22 @@ "brotli" ] }, + "gettext": { + "source": "gettext", + "static-libs-unix": [ + "libintl.a" + ], + "lib-depends": [ + "libiconv" + ], + "lib-suggests": [ + "ncurses", + "libxml2" + ], + "frameworks": [ + "CoreFoundation" + ] + }, "glfw": { "source": "ext-glfw", "static-libs-unix": [ @@ -109,6 +127,18 @@ "gmp.h" ] }, + "gmssl": { + "source": "gmssl", + "static-libs-unix": [ + "libgmssl.a" + ], + "static-libs-windows": [ + "gmssl.lib" + ], + "frameworks": [ + "Security" + ] + }, "icu": { "source": "icu", "cpp-library": true, @@ -131,7 +161,8 @@ "libpng", "libjpeg", "libwebp", - "freetype" + "freetype", + "libtiff" ], "lib-suggests": [ "zstd", @@ -141,22 +172,53 @@ "libxml2" ] }, + "imap": { + "source": "imap", + "static-libs-unix": [ + "libc-client.a" + ], + "lib-suggests": [ + "openssl" + ] + }, "ldap": { "source": "ldap", "static-libs-unix": [ "liblber.a", "libldap.a" ], - "lib-suggests": [ + "lib-depends": [ "openssl", + "zlib", "gmp", "libsodium" ] }, + "libargon2": { + "source": "libargon2", + "static-libs-unix": [ + "libargon2.a" + ] + }, "libavif": { "source": "libavif", "static-libs-unix": [ "libavif.a" + ], + "static-libs-windows": [ + "avif.lib" + ] + }, + "libcares": { + "source": "libcares", + "static-libs-unix": [ + "libcares.a" + ], + "headers-unix": [ + "ares.h", + "ares_dns.h", + "ares_nameser.h", + "ares_rules.h" ] }, "libevent": { @@ -189,6 +251,17 @@ "ffitarget.h" ] }, + "libffi-win": { + "source": "libffi-win", + "static-libs-windows": [ + "libffi.lib" + ], + "headers-windows": [ + "ffi.h", + "ffitarget.h", + "fficonfig.h" + ] + }, "libiconv": { "source": "libiconv", "static-libs-unix": [ @@ -201,17 +274,30 @@ "localcharset.h" ] }, + "libiconv-win": { + "source": "libiconv-win", + "static-libs-windows": [ + "libiconv.lib", + "libiconv_a.lib" + ] + }, "libjpeg": { "source": "libjpeg", "static-libs-unix": [ "libjpeg.a", "libturbojpeg.a" + ], + "static-libs-windows": [ + "libjpeg_a.lib" + ], + "lib-suggests-windows": [ + "zlib" ] }, - "libmcrypt": { - "source": "libmcrypt", + "liblz4": { + "source": "liblz4", "static-libs-unix": [ - "libmcrypt.a" + "liblz4.a" ] }, "libmemcached": { @@ -227,7 +313,8 @@ "libpng16.a" ], "static-libs-windows": [ - "libpng16_static.lib" + "libpng16_static.lib", + "libpng_a.lib" ], "headers-unix": [ "png.h", @@ -242,6 +329,18 @@ "zlib" ] }, + "librabbitmq": { + "source": "librabbitmq", + "static-libs-unix": [ + "librabbitmq.a" + ], + "static-libs-windows": [ + "rabbitmq.4.lib" + ], + "lib-depends": [ + "openssl" + ] + }, "libsodium": { "source": "libsodium", "static-libs-unix": [ @@ -268,6 +367,27 @@ "zlib" ] }, + "libtiff": { + "source": "libtiff", + "static-libs-unix": [ + "libtiff.a" + ] + }, + "libuuid": { + "source": "libuuid", + "static-libs-unix": [ + "libuuid.a" + ], + "headers": [ + "uuid/uuid.h" + ] + }, + "libuv": { + "source": "libuv", + "static-libs-unix": [ + "libuv.a" + ] + }, "libwebp": { "source": "libwebp", "static-libs-unix": [ @@ -276,6 +396,12 @@ "libwebpdemux.a", "libwebpmux.a", "libsharpyuv.a" + ], + "static-libs-windows": [ + "libwebp.lib", + "libwebpdecoder.lib", + "libwebpdemux.lib", + "libsharpyuv.lib" ] }, "libxml2": { @@ -284,26 +410,25 @@ "libxml2.a" ], "static-libs-windows": [ - [ - "libxml2s.lib", - "libxml2_a.lib" - ] + "libxml2s.lib", + "libxml2_a.lib" ], "headers": [ "libxml2" ], - "lib-depends": [ - "libiconv", + "lib-depends-unix": [ + "libiconv" + ], + "lib-suggests-unix": [ + "xz", + "icu", "zlib" ], - "lib-suggests": [ - "xz", - "icu" + "lib-depends-windows": [ + "libiconv-win" ], "lib-suggests-windows": [ - "icu", - "xz", - "pthreads4w" + "zlib" ] }, "libxslt": { @@ -334,29 +459,30 @@ "libzip.a" ], "static-libs-windows": [ - [ - "zip.lib", - "libzip_a.lib" - ] + "zip.lib", + "libzip_a.lib" ], "headers": [ "zip.h", "zipconf.h" ], - "lib-depends": [ + "lib-depends-unix": [ "zlib" ], - "lib-suggests": [ + "lib-suggests-unix": [ "bzip2", "xz", "zstd", "openssl" - ] - }, - "mcrypt": { - "source": "mcrypt", - "static-libs-unix": [ - "libmcrypt.a" + ], + "lib-depends-windows": [ + "zlib", + "bzip2", + "xz" + ], + "lib-suggests-windows": [ + "zstd", + "openssl" ] }, "ncurses": { @@ -390,10 +516,8 @@ "libonig.a" ], "static-libs-windows": [ - [ - "onig.lib", - "onig_a.lib" - ] + "onig.lib", + "onig_a.lib" ], "headers": [ "oniggnu.h", @@ -456,12 +580,18 @@ "source": "pthreads4w", "static-libs-windows": [ "libpthreadVC3.lib" + ] + }, + "qdbm": { + "source": "qdbm", + "static-libs-unix": [ + "libqdbm.a" + ], + "static-libs-windows": [ + "qdbm_a.lib" ], "headers-windows": [ - "_ptw32.h", - "pthread.h", - "sched.h", - "semaphore.h" + "depot.h" ] }, "readline": { @@ -493,21 +623,39 @@ "static-libs-unix": [ "libsqlite3.a" ], - "headers-unix": [ + "static-libs-windows": [ + "libsqlite3_a.lib" + ], + "headers": [ "sqlite3.h", "sqlite3ext.h" ] }, + "tidy": { + "source": "tidy", + "static-libs-unix": [ + "libtidy.a" + ] + }, + "unixodbc": { + "source": "unixodbc", + "static-libs-unix": [ + "libodbc.a", + "libodbccr.a", + "libodbcinst.a" + ], + "lib-depends": [ + "libiconv" + ] + }, "xz": { "source": "xz", "static-libs-unix": [ "liblzma.a" ], "static-libs-windows": [ - [ - "liblzma.lib", - "liblzma_a.lib" - ] + "liblzma.lib", + "liblzma_a.lib" ], "headers-unix": [ "lzma" @@ -516,7 +664,7 @@ "lzma", "lzma.h" ], - "lib-depends": [ + "lib-depends-unix": [ "libiconv" ] }, diff --git a/config/pkg.json b/config/pkg.json new file mode 100644 index 00000000..74de6fd3 --- /dev/null +++ b/config/pkg.json @@ -0,0 +1,46 @@ +{ + "musl-toolchain-aarch64-linux": { + "type": "url", + "url": "https://dl.static-php.dev/static-php-cli/deps/musl-toolchain/aarch64-musl-toolchain.tgz" + }, + "musl-toolchain-x86_64-linux": { + "type": "url", + "url": "https://dl.static-php.dev/static-php-cli/deps/musl-toolchain/x86_64-musl-toolchain.tgz" + }, + "nasm-x86_64-win": { + "type": "url", + "url": "https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/win64/nasm-2.16.01-win64.zip", + "extract-files": { + "nasm-2.16.01/nasm.exe": "{php_sdk_path}/bin/nasm.exe", + "nasm-2.16.01/ndisasm.exe": "{php_sdk_path}/bin/ndisasm.exe" + } + }, + "strawberry-perl-x86_64-win": { + "type": "url", + "url": "https://github.com/StrawberryPerl/Perl-Dist-Strawberry/releases/download/SP_5380_5361/strawberry-perl-5.38.0.1-64bit-portable.zip" + }, + "upx-aarch64-linux": { + "type": "ghrel", + "repo": "upx/upx", + "match": "upx.+-arm64_linux\\.tar\\.xz", + "extract-files": { + "upx": "{pkg_root_path}/bin/upx" + } + }, + "upx-x86_64-linux": { + "type": "ghrel", + "repo": "upx/upx", + "match": "upx.+-amd64_linux\\.tar\\.xz", + "extract-files": { + "upx": "{pkg_root_path}/bin/upx" + } + }, + "upx-x86_64-win": { + "type": "ghrel", + "repo": "upx/upx", + "match": "upx.+-win64\\.zip", + "extract-files": { + "upx-*-win64/upx.exe": "{pkg_root_path}/bin/upx.exe" + } + } +} diff --git a/config/pre-built.json b/config/pre-built.json new file mode 100644 index 00000000..396c8820 --- /dev/null +++ b/config/pre-built.json @@ -0,0 +1,6 @@ +{ + "repo": "static-php/static-php-cli-hosted", + "prefer-stable": true, + "match-pattern": "{name}-{arch}-{os}.txz", + "suffix": "txz" +} \ No newline at end of file diff --git a/config/source.json b/config/source.json index 447bc65a..f2896957 100644 --- a/config/source.json +++ b/config/source.json @@ -6,6 +6,16 @@ "path": "LICENSE" } }, + "amqp": { + "type": "url", + "url": "https://pecl.php.net/get/amqp", + "path": "php-src/ext/amqp", + "filename": "amqp.tgz", + "license": { + "type": "file", + "path": "LICENSE" + } + }, "apcu": { "type": "url", "url": "https://pecl.php.net/get/APCu", @@ -19,6 +29,7 @@ "brotli": { "type": "ghtar", "repo": "google/brotli", + "provide-pre-built": true, "license": { "type": "file", "path": "LICENSE" @@ -28,20 +39,32 @@ "type": "filelist", "url": "https://sourceware.org/pub/bzip2/", "regex": "/href=\"(?bzip2-(?[^\"]+)\\.tar\\.gz)\"/", + "provide-pre-built": true, "license": { "type": "text", - "text": "This program, \"bzip2\", the associated library \"libbzip2\", and all documentation, are copyright (C) 1996-2010 Julian R Seward. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n 2. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n 3. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n 4. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nJulian Seward, jseward@bzip.org bzip2/libbzip2 version 1.0.6 of 6 September 2010\n\nPATENTS: To the best of my knowledge, bzip2 and libbzip2 do not use any patented algorithms. However, I do not have the resources to carry out a patent search. Therefore I cannot give any guarantee of the above statement." + "text": "This program, \"bzip2\", the associated library \"libbzip2\", and all documentation, are copyright (C) 1996-2010 Julian R Seward. All rights reserved. \n\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n 2. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n 3. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n 4. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nJulian Seward, jseward@bzip.org bzip2/libbzip2 version 1.0.6 of 6 September 2010\n\nPATENTS: To the best of my knowledge, bzip2 and libbzip2 do not use any patented algorithms. However, I do not have the resources to carry out a patent search. Therefore I cannot give any guarantee of the above statement." } }, "curl": { "type": "ghrel", "repo": "curl/curl", "match": "curl.+\\.tar\\.xz", + "prefer-stable": true, "license": { "type": "file", "path": "COPYING" } }, + "ext-ds": { + "type": "url", + "url": "https://pecl.php.net/get/ds", + "path": "php-src/ext/ds", + "filename": "ds.tgz", + "license": { + "type": "file", + "path": "LICENSE" + } + }, "librdkafka": { "type": "ghtar", "repo": "confluentinc/librdkafka", @@ -77,6 +100,15 @@ "path": "LICENSE" } }, + "ext-gmssl": { + "type": "ghtar", + "repo": "gmssl/GmSSL-PHP", + "path": "php-src/ext/gmssl", + "license": { + "type": "file", + "path": "LICENSE" + } + }, "ext-imagick": { "type": "url", "url": "https://pecl.php.net/get/imagick", @@ -97,6 +129,16 @@ "path": "LICENSE" } }, + "ext-simdjson": { + "type": "url", + "url": "https://pecl.php.net/get/simdjson", + "path": "php-src/ext/simdjson", + "filename": "simdjson.tgz", + "license": { + "type": "file", + "path": "LICENSE" + } + }, "ext-snappy": { "type": "git", "path": "php-src/ext/snappy", @@ -117,6 +159,26 @@ "path": "LICENSE" } }, + "ext-uuid": { + "type": "url", + "url": "https://pecl.php.net/get/uuid", + "path": "php-src/ext/uuid", + "filename": "uuid.tgz", + "license": { + "type": "file", + "path": "LICENSE" + } + }, + "ext-uv": { + "type": "url", + "url": "https://pecl.php.net/get/uv", + "path": "php-src/ext/uv", + "filename": "uv.tgz", + "license": { + "type": "file", + "path": "LICENSE" + } + }, "ext-zstd": { "type": "git", "path": "php-src/ext/zstd", @@ -128,31 +190,65 @@ } }, "freetype": { - "type": "filelist", - "url": "https://download-mirror.savannah.gnu.org/releases/freetype/", - "regex": "/href=\"(?freetype-(?[^\"]+)\\.tar\\.xz)\"/", + "type": "git", + "rev": "VER-2-13-2", + "url": "https://github.com/freetype/freetype", "license": { "type": "file", "path": "LICENSE.TXT" } }, + "gettext": { + "type": "filelist", + "url": "https://ftp.gnu.org/pub/gnu/gettext/", + "regex": "/href=\"(?gettext-(?[^\"]+)\\.tar\\.xz)\"/", + "license": { + "type": "file", + "path": "COPYING" + } + }, "gmp": { - "type": "ghtagtar", - "repo": "alisw/GMP", + "type": "url", + "url": "https://dl.static-php.dev/static-php-cli/deps/gmp/gmp-6.3.0.tar.xz", + "provide-pre-built": true, + "alt": { + "type": "ghtagtar", + "repo": "alisw/GMP" + }, "license": { "type": "text", "text": "Since version 6, GMP is distributed under the dual licenses, GNU LGPL v3 and GNU GPL v2. These licenses make the library free to use, share, and improve, and allow you to pass on the result. The GNU licenses give freedoms, but also set firm restrictions on the use with non-free programs." } }, + "gmssl": { + "type": "ghtar", + "repo": "guanzhi/GmSSL", + "license": { + "type": "file", + "path": "LICENSE" + } + }, "icu": { "type": "ghrel", "repo": "unicode-org/icu", "match": "icu4c.+-src\\.tgz", + "prefer-stable": true, + "provide-pre-built": true, "license": { "type": "file", "path": "LICENSE" } }, + "igbinary": { + "type": "url", + "url": "https://pecl.php.net/get/igbinary", + "path": "php-src/ext/igbinary", + "filename": "igbinary.tgz", + "license": { + "type": "file", + "path": "COPYING" + } + }, "imagemagick": { "type": "ghtar", "repo": "ImageMagick/ImageMagick", @@ -161,6 +257,15 @@ "path": "LICENSE" } }, + "imap": { + "type": "git", + "url": "https://github.com/static-php/imap.git", + "rev": "master", + "license": { + "type": "file", + "path": "LICENSE" + } + }, "inotify": { "type": "url", "url": "https://pecl.php.net/get/inotify", @@ -180,18 +285,47 @@ "path": "LICENSE" } }, - "libavif": { - "type": "ghtar", - "repo": "AOMediaCodec/libavif", + "libargon2": { + "type": "git", + "rev": "master", + "url": "https://github.com/static-php/phc-winner-argon2", + "provide-pre-built": true, "license": { "type": "file", "path": "LICENSE" } }, + "libavif": { + "type": "ghtar", + "repo": "AOMediaCodec/libavif", + "provide-pre-built": true, + "license": { + "type": "file", + "path": "LICENSE" + } + }, + "libcares": { + "type": "ghrel", + "repo": "c-ares/c-ares", + "match": "c-ares-.+\\.tar\\.gz", + "prefer-stable": true, + "provide-pre-built": true, + "alt": { + "type": "filelist", + "url": "https://c-ares.org/download/", + "regex": "/href=\"\\/download\\/(?c-ares-(?[^\"]+)\\.tar\\.gz)\"/" + }, + "license": { + "type": "file", + "path": "LICENSE.md" + } + }, "libevent": { "type": "ghrel", "repo": "libevent/libevent", "match": "libevent.+\\.tar\\.gz", + "prefer-stable": true, + "provide-pre-built": true, "license": { "type": "file", "path": "LICENSE" @@ -201,6 +335,16 @@ "type": "ghrel", "repo": "libffi/libffi", "match": "libffi.+\\.tar\\.gz", + "prefer-stable": true, + "license": { + "type": "file", + "path": "LICENSE" + } + }, + "libffi-win": { + "type": "git", + "rev": "master", + "url": "https://github.com/static-php/libffi-win.git", "license": { "type": "file", "path": "LICENSE" @@ -210,11 +354,21 @@ "type": "filelist", "url": "https://ftp.gnu.org/gnu/libiconv/", "regex": "/href=\"(?libiconv-(?[^\"]+)\\.tar\\.gz)\"/", + "provide-pre-built": true, "license": { "type": "file", "path": "COPYING" } }, + "libiconv-win": { + "type": "git", + "rev": "master", + "url": "https://github.com/static-php/libiconv-win.git", + "license": { + "type": "file", + "path": "source/COPYING" + } + }, "libjpeg": { "type": "ghtar", "repo": "libjpeg-turbo/libjpeg-turbo", @@ -223,12 +377,15 @@ "path": "LICENSE.md" } }, - "libmcrypt": { - "type": "url", - "url": "https://nchc.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz", + "liblz4": { + "type": "ghrel", + "repo": "lz4/lz4", + "match": "lz4-.+\\.tar\\.gz", + "prefer-stable": true, + "provide-pre-built": true, "license": { "type": "file", - "path": "COPYING" + "path": "LICENSE" } }, "libmemcached": { @@ -242,16 +399,29 @@ }, "libpng": { "type": "git", - "url": "https://git.code.sf.net/p/libpng/code", + "url": "https://github.com/glennrp/libpng.git", "rev": "libpng16", + "provide-pre-built": true, + "license": { + "type": "file", + "path": "LICENSE" + } + }, + "librabbitmq": { + "type": "git", + "url": "https://github.com/alanxz/rabbitmq-c.git", + "rev": "master", "license": { "type": "file", "path": "LICENSE" } }, "libsodium": { - "type": "url", - "url": "https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz", + "type": "ghrel", + "repo": "jedisct1/libsodium", + "match": "libsodium-\\d+(\\.\\d+)*\\.tar\\.gz", + "prefer-stable": true, + "provide-pre-built": true, "license": { "type": "file", "path": "LICENSE" @@ -261,14 +431,49 @@ "type": "ghrel", "repo": "libssh2/libssh2", "match": "libssh2.+\\.tar\\.gz", + "prefer-stable": true, "license": { "type": "file", "path": "COPYING" } }, + "libtiff": { + "type": "filelist", + "url": "https://download.osgeo.org/libtiff/", + "regex": "/href=\"(?tiff-(?[^\"]+)\\.tar\\.xz)\"/", + "provide-pre-built": true, + "license": { + "type": "file", + "path": "LICENSE.md" + } + }, + "libuuid": { + "type": "git", + "url": "https://github.com/static-php/libuuid.git", + "rev": "master", + "license": { + "type": "file", + "path": "COPYING" + } + }, + "libuv": { + "type": "ghtar", + "repo": "libuv/libuv", + "license": [ + { + "type": "file", + "path": "LICENSE" + }, + { + "type": "file", + "path": "LICENSE-extra" + } + ] + }, "libwebp": { "type": "url", "url": "https://github.com/webmproject/libwebp/archive/refs/tags/v1.3.2.tar.gz", + "provide-pre-built": true, "license": { "type": "file", "path": "COPYING" @@ -276,7 +481,7 @@ }, "libxml2": { "type": "url", - "url": "https://github.com/GNOME/libxml2/archive/refs/tags/v2.9.14.tar.gz", + "url": "https://github.com/GNOME/libxml2/archive/refs/tags/v2.12.5.tar.gz", "license": { "type": "file", "path": "Copyright" @@ -295,6 +500,8 @@ "type": "ghrel", "repo": "yaml/libyaml", "match": "yaml-.+\\.tar\\.gz", + "prefer-stable": true, + "provide-pre-built": true, "license": { "type": "file", "path": "License" @@ -304,19 +511,12 @@ "type": "ghrel", "repo": "nih-at/libzip", "match": "libzip.+\\.tar\\.xz", + "prefer-stable": true, "license": { "type": "file", "path": "LICENSE" } }, - "mcrypt": { - "type": "url", - "url": "https://jaist.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz", - "license": { - "type": "file", - "path": "COPYING" - } - }, "memcached": { "type": "url", "url": "https://pecl.php.net/get/memcached", @@ -342,6 +542,17 @@ "repo": "mongodb/mongo-php-driver", "path": "php-src/ext/mongodb", "match": "mongodb.+\\.tgz", + "prefer-stable": true, + "license": { + "type": "file", + "path": "LICENSE" + } + }, + "msgpack": { + "type": "url", + "url": "https://pecl.php.net/get/msgpack", + "path": "php-src/ext/msgpack", + "filename": "msgpack.tgz", "license": { "type": "file", "path": "LICENSE" @@ -351,6 +562,7 @@ "type": "filelist", "url": "https://ftp.gnu.org/pub/gnu/ncurses/", "regex": "/href=\"(?ncurses-(?[^\"]+)\\.tar\\.gz)\"/", + "provide-pre-built": true, "license": { "type": "file", "path": "COPYING" @@ -360,6 +572,7 @@ "type": "ghrel", "repo": "nghttp2/nghttp2", "match": "nghttp2.+\\.tar\\.xz", + "prefer-stable": true, "license": { "type": "file", "path": "COPYING" @@ -369,24 +582,53 @@ "type": "ghrel", "repo": "kkos/oniguruma", "match": "onig-.+\\.tar\\.gz", + "prefer-stable": true, + "provide-pre-built": true, "license": { "type": "file", "path": "COPYING" } }, "openssl": { - "type": "filelist", - "url": "https://www.openssl.org/source/", - "regex": "/href=\"(?openssl-(?[^\"]+)\\.tar\\.gz)\"/", + "type": "ghrel", + "repo": "openssl/openssl", + "match": "openssl.+\\.tar\\.gz", + "prefer-stable": true, + "alt": { + "type": "filelist", + "url": "https://www.openssl.org/source/", + "regex": "/href=\"(?openssl-(?[^\"]+)\\.tar\\.gz)\"/" + }, + "provide-pre-built": true, "license": { "type": "file", "path": "LICENSE.txt" } }, + "parallel": { + "type": "url", + "url": "https://pecl.php.net/get/parallel", + "path": "php-src/ext/parallel", + "filename": "parallel.tgz", + "license": { + "type": "file", + "path": "LICENSE" + } + }, + "pdo_sqlsrv": { + "type": "url", + "url": "https://pecl.php.net/get/pdo_sqlsrv", + "path": "php-src/ext/pdo_sqlsrv", + "filename": "pdo_sqlsrv.tgz", + "license": { + "type": "file", + "path": "LICENSE" + } + }, "pkg-config": { - "type": "filelist", - "url": "https://pkgconfig.freedesktop.org/releases/", - "regex": "/href=\"(?pkg-config-(?[^\"]+)\\.tar\\.gz)\"/", + "type": "url", + "url": "https://dl.static-php.dev/static-php-cli/deps/pkg-config/pkg-config-0.29.2.tar.gz", + "provide-pre-built": true, "license": { "type": "file", "path": "COPYING" @@ -394,7 +636,7 @@ }, "postgresql": { "type": "url", - "url": "https://ftp.postgresql.org/pub/source/v15.1/postgresql-15.1.tar.gz", + "url": "https://ftp.postgresql.org/pub/source/v16.2/postgresql-16.2.tar.bz2", "license": { "type": "file", "path": "COPYRIGHT" @@ -419,10 +661,30 @@ "path": "LICENSE" } }, + "qdbm": { + "type": "git", + "url": "https://github.com/static-php/qdbm.git", + "rev": "main", + "license": { + "type": "file", + "path": "COPYING" + } + }, + "rar": { + "type": "git", + "url": "https://github.com/static-php/php-rar.git", + "path": "php-src/ext/rar", + "rev": "issue-php82", + "license": { + "type": "file", + "path": "LICENSE" + } + }, "readline": { "type": "filelist", "url": "https://ftp.gnu.org/pub/gnu/readline/", "regex": "/href=\"(?readline-(?[^\"]+)\\.tar\\.gz)\"/", + "provide-pre-built": true, "license": { "type": "file", "path": "COPYING" @@ -431,11 +693,14 @@ "redis": { "type": "git", "path": "php-src/ext/redis", - "rev": "5.3.7", + "rev": "release/6.0.2", "url": "https://github.com/phpredis/phpredis", "license": { "type": "file", - "path": "COPYING" + "path": [ + "LICENSE", + "COPYING" + ] } }, "snappy": { @@ -448,18 +713,40 @@ "path": "COPYING" } }, + "spx": { + "type": "git", + "rev": "master", + "url": "https://github.com/static-php/php-spx.git", + "path": "php-src/ext/spx", + "license": { + "type": "file", + "path": "LICENSE" + } + }, "sqlite": { "type": "url", "url": "https://www.sqlite.org/2023/sqlite-autoconf-3430200.tar.gz", + "provide-pre-built": true, "license": { "type": "text", "text": "The author disclaims copyright to this source code. In place of\na legal notice, here is a blessing:\n\n * May you do good and not evil.\n * May you find forgiveness for yourself and forgive others.\n * May you share freely, never taking more than you give." } }, + "sqlsrv": { + "type": "url", + "url": "https://pecl.php.net/get/sqlsrv", + "path": "php-src/ext/sqlsrv", + "filename": "sqlsrv.tgz", + "license": { + "type": "file", + "path": "LICENSE" + } + }, "swoole": { "type": "ghtar", "path": "php-src/ext/swoole", "repo": "swoole/swoole-src", + "prefer-stable": true, "license": { "type": "file", "path": "LICENSE" @@ -476,6 +763,34 @@ "path": "LICENSE" } }, + "tidy": { + "type": "url", + "url": "https://github.com/htacg/tidy-html5/archive/refs/tags/5.8.0.tar.gz", + "filename": "tidy-html5.tgz", + "license": { + "type": "file", + "path": "README/LICENSE.md" + } + }, + "unixodbc": { + "type": "url", + "url": "https://www.unixodbc.org/unixODBC-2.3.12.tar.gz", + "provide-pre-built": true, + "license": { + "type": "file", + "path": "COPYING" + } + }, + "xhprof": { + "type": "url", + "url": "https://pecl.php.net/get/xhprof", + "path": "php-src/ext/xhprof-src", + "filename": "xhprof.tgz", + "license": { + "type": "file", + "path": "LICENSE" + } + }, "xlswriter": { "type": "url", "url": "https://pecl.php.net/get/xlswriter", @@ -487,14 +802,26 @@ } }, "xz": { - "type": "filelist", - "url": "https://tukaani.org/xz/", - "regex": "/href=\"(?xz-(?[^\"]+)\\.tar\\.xz)\"/", + "type": "ghrel", + "repo": "tukaani-project/xz", + "match": "xz.+\\.tar\\.xz", + "prefer-stable": true, + "provide-pre-built": true, "license": { "type": "file", "path": "COPYING" } }, + "yac": { + "type": "url", + "url": "https://pecl.php.net/get/yac", + "path": "php-src/ext/yac", + "filename": "yac.tgz", + "license": { + "type": "file", + "path": "LICENSE" + } + }, "yaml": { "type": "git", "path": "php-src/ext/yaml", @@ -509,6 +836,8 @@ "type": "ghrel", "repo": "madler/zlib", "match": "zlib.+\\.tar\\.gz", + "prefer-stable": true, + "provide-pre-built": true, "license": { "type": "text", "text": "(C) 1995-2022 Jean-loup Gailly and Mark Adler\n\nThis software is provided 'as-is', without any express or implied\nwarranty. In no event will the authors be held liable for any damages\narising from the use of this software.\n\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it\nfreely, subject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not\n claim that you wrote the original software. If you use this software\n in a product, an acknowledgment in the product documentation would be\n appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be\n misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n\nJean-loup Gailly Mark Adler\njloup@gzip.org madler@alumni.caltech.edu" @@ -518,6 +847,7 @@ "type": "ghrel", "repo": "facebook/zstd", "match": "zstd.+\\.tar\\.gz", + "prefer-stable": true, "license": { "type": "file", "path": "LICENSE" diff --git a/docs/.vitepress/components/CliGenerator.vue b/docs/.vitepress/components/CliGenerator.vue new file mode 100644 index 00000000..3a44ecdd --- /dev/null +++ b/docs/.vitepress/components/CliGenerator.vue @@ -0,0 +1,593 @@ +