diff --git a/.coding_release.yml.sample b/.coding_release.yml.sample new file mode 100644 index 0000000..e2bd646 --- /dev/null +++ b/.coding_release.yml.sample @@ -0,0 +1,100 @@ +service: +- name: e-coding + migrate: enterprise/app/e-coding/doc/mysql/migrate_script + source: + - enterprise/app/e-coding + - enterprise/controller/core + - enterprise/controller/admin + - enterprise/controller/git + - enterprise/lib/core + - enterprise/lib/statistic + - enterprise/lib/search + - enterprise/lib/importer + - enterprise/lib/admin + - enterprise/lib/build-artifact +- name: e-scheduler + source: + - enterprise/app/e-coding + - enterprise/controller/core + - enterprise/controller/admin + - enterprise/controller/git + - enterprise/lib/core + - enterprise/lib/statistic + - enterprise/lib/search + - enterprise/lib/importer + - enterprise/lib/admin + - enterprise/lib/build-artifact +- name: e-front + migrate: + source: + - frontend/coding-front-v2 +- name: e-admin + migrate: + source: + - frontend/coding-front/e-admin +- name: e-repo-importer + migrate: + source: + - enterprise/lib/importer/src/main/java +- name: e-nexus-server + migrate: + source: + - app/nexus-server +- name: e-git-backup + migrate: + source: + - go-git-server/cmd/git-backup + - go-git-server/pkg/backup +- name: e-git-http-server + migrate: + source: + - go-git-server/cmd/git-server/app/git.go + - go-git-server/pkg/server/http +- name: e-git-lfs-server + migrate: + source: + - go-git-server/cmd/git-server/app/lfs.go + - go-git-server/pkg/server/lfs +- name: e-git-rpc-server + migrate: + source: + - go-git-server/cmd/git-server/app/rpc.go + - go-git-server/pkg/server/rpc +- name: e-git-ssh-server + migrate: + source: + - go-git-server/cmd/git-server/app/ssh.go + - go-git-server/pkg/server/ssh +- name: e-git-svn-ssh-server + migrate: + source: + - go-git-server/cmd/git-server/app/svn.go + - go-git-server/pkg/server/svn +- name: e-repo-auth-server + migrate: + source: + - app/repo-auth-server +- name: e-git-svn-server + migrate: + source: + - app/git-svn-server +- name: e-git-svn-server + migrate: + source: + - app/repo-manager +- name: e-webhook-listener + migrate: + source: + - app/webhook-listener +- name: e-message + migrate: + source: + - app/message +- name: e-md2html + migrate: + source: + - app/md2html +- name: e-cci + migrate: + source: + - app/cci diff --git a/.git-pre-commit b/.git-pre-commit deleted file mode 100755 index c456026..0000000 --- a/.git-pre-commit +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -set -e - -FILES=$(git diff --diff-filter=d --name-only HEAD | { grep '.php$' || true; }) -for file in $FILES; do - ./vendor/bin/phpcs --extensions=php --standard=PSR12 "$file" - ./vendor/bin/phpmd "$file" text phpmd.xml --exclude vendor -done -XDEBUG_MODE=coverage ./vendor/bin/phpunit --coverage-text --coverage-filter=app/ tests/ diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index bd90605..0000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,94 +0,0 @@ -name: CI -on: - push: - branches: - - php - tags: - - 2.*.* - pull_request: - branches: - - php - -jobs: - build: - name: Build - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v2 - - - name: prepare - uses: docker://ecoding/php:8.0 - with: - args: composer install - - - name: Lint - uses: docker://ecoding/php:8.0 - with: - args: ./vendor/bin/phpcs --extensions=php --standard=PSR12 app/ tests/ - - - name: PHPMD - uses: docker://ecoding/php:8.0 - with: - args: ./vendor/bin/phpmd . text phpmd.xml --exclude vendor - - - name: test - uses: docker://ecoding/php:8.0 - env: - XDEBUG_MODE: coverage - with: - args: ./vendor/bin/phpunit --coverage-clover coverage.xml --coverage-filter app/ tests/ - - - name: codecov - uses: codecov/codecov-action@v2 - - - name: GitHub Environment Variables Action - uses: FranzDiebold/github-env-vars-action@v2 - - - name: Set env - run: | - echo "APP_VERSION=$CI_SHA_SHORT" >> $GITHUB_ENV - - - name: Set env when tag - if: startsWith(github.ref, 'refs/tags/') - run: | - echo "APP_VERSION=$CI_ACTION_REF_NAME" >> $GITHUB_ENV - - - name: build - uses: docker://ecoding/php:8.0 - env: - APP_VERSION: ${{ env.APP_VERSION }} - with: - args: php coding app:build --build-version=${{ env.APP_VERSION }} - - - name: Upload Artifact - uses: actions/upload-artifact@v2 - with: - name: coding - path: builds/coding - - - name: Set up Docker Buildx - if: startsWith(github.ref, 'refs/tags/') - uses: docker/setup-buildx-action@v1 - - - name: Login to DockerHub - if: startsWith(github.ref, 'refs/tags/') - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - - name: Build and push - id: docker_build - if: startsWith(github.ref, 'refs/tags/') - uses: docker/build-push-action@v2 - env: - APP_VERSION: ${{ env.APP_VERSION }} - with: - push: true - context: . - tags: ecoding/coding-cli:latest,ecoding/coding-cli:${{ env.APP_VERSION }} - - - name: Image digest - if: steps.docker_build.conclusion == 'success' - run: echo ${{ steps.docker_build.outputs.digest }} diff --git a/.gitignore b/.gitignore index 58f5e38..130412a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,7 @@ -/builds -/coverage.xml -/vendor -/.idea -/.vscode -/.vagrant -.phpunit.result.cache -/database/database.sqlite +.cookie +vendor +.idea +dist +.history +.vscode +.coding_release.yml \ No newline at end of file diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index d19bf1b..0000000 --- a/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM php:8.0-cli -WORKDIR /root - -RUN apt-get update \ - && apt-get install -y libzip-dev -RUN docker-php-ext-install zip - -COPY builds/coding /usr/local/bin/ - -ENTRYPOINT ["coding"] -CMD ["list"] diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index ba8ead9..0000000 --- a/Jenkinsfile +++ /dev/null @@ -1,46 +0,0 @@ -pipeline { - agent { - docker { - reuseNode 'true' - registryUrl 'https://coding-public-docker.pkg.coding.net' - image 'public/docker/php:8.0' - } - } - stages { - stage('检出') { - steps { - checkout([ - $class: 'GitSCM', - branches: [[name: GIT_BUILD_REF]], - userRemoteConfigs: [[ - url: GIT_REPO_URL, - credentialsId: CREDENTIALS_ID - ]]]) - } - } - stage('打包') { - steps { - script { - if (env.TAG_NAME ==~ /.*/ ) { - BUILD_VERSION = "${env.TAG_NAME}" - } else if (env.MR_SOURCE_BRANCH ==~ /.*/ ) { - BUILD_VERSION = "dev-${env.MR_RESOURCE_ID}-${env.GIT_COMMIT_SHORT}" - } else { - BUILD_VERSION = "dev-${env.BRANCH_NAME.replace('/', '-')}-${env.GIT_COMMIT_SHORT}" - } - } - - sh 'composer install' - sh "php coding app:build --build-version=${BUILD_VERSION}" - } - } - stage('上传到制品库') { - steps { - sh 'mv builds/coding builds/coding.phar' - dir ('builds') { - codingArtifactsGeneric(files: 'coding.phar', repoName: 'downloads', version: "${BUILD_VERSION}") - } - } - } - } -} diff --git a/LICENSE b/LICENSE index 3330735..d645695 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,202 @@ -MIT License - -Copyright (c) 2021 CODING Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md index dab9570..c9cb5da 100644 --- a/README.md +++ b/README.md @@ -1,57 +1,69 @@ -# CODING cli +# Coding Release 发布工具 -[![CI](https://github.com/Coding/coding-cli/actions/workflows/ci.yml/badge.svg?branch=php)](https://github.com/Coding/coding-cli/actions/workflows/ci.yml) -[![codecov](https://codecov.io/gh/Coding/coding-cli/branch/php/graph/badge.svg?token=Su2WCy3Yfg)](https://codecov.io/gh/Coding/coding-cli) -[![docker hub](https://img.shields.io/docker/automated/ecoding/coding-cli)](https://hub.docker.com/r/ecoding/coding-cli) -CODING cli 基于 [Laravel Zero](https://laravel-zero.com/)。 +## 简介 -## run in Docker +用于创建 Coding 发布使用的 Release Checklist 文档 -```shell -docker pull ecoding/coding-cli -docker run -it ecoding/coding-cli -docker run -it ecoding/coding-cli wiki:import --help -docker run -it -v $(pwd):/root --env CODING_TOKEN=foo --env CONFLUENCE_USERNAME=admin ecoding/coding-cli wiki:import -docker run -it -v $(pwd):/root --env-file .env ecoding/coding-cli wiki:import +## 安装 + +windows 用户请先设置环境变量 $GOBIN + +```bash +curl https://raw.githubusercontent.com/coding/coding-cli/master/install.sh | sh ``` -![docker run coding cli](https://user-images.githubusercontent.com/4971414/124946851-f0a87500-e041-11eb-9840-1c66e4773af1.png) +或者下载源码编译安装 -## run without Docker +## 命令 -要求:PHP 8.0 或更高版本 +### 登录用户 -访问「[CODING 公共制品库](https://coding-public.coding.net/public-artifacts/public/downloads/coding.phar/version/6352163/list)」,下载后在命令行中执行。 +示例命令:`coding-cli login -u username` -在 Linux/macOS 中,建议重命名,并放到系统目录: +在用户目录下创建一个 ~/.coding_release_rc 文件保存 session -```shell -chmod +x coding.phar -sudo mv coding.phar /usr/local/bin/coding -coding list -``` +### 生成 Release 文件 -## Confluence to CODING Wiki +在当前目录生成 Markdown 格式的 Release 文件 -1. 浏览器访问 Confluence 空间,导出 HTML,获得一个 zip 压缩包。 +示例命令:`coding-cli release release-20181122 general-products -p coding-frontend -o release-20181122-general-products.md` -![image](https://user-images.githubusercontent.com/4971414/127876158-8ab62714-e43f-4e20-8865-f8817f9264e1.png) +示例命令:`coding-cli release master enterprise-saas -o release-20181030.1-enterprise.md -l enterprise-saas -t normal -n 1 -c ~/.coding_release.yml` -2. 浏览器访问 CODING,创建个人令牌 +查看帮助:`coding-cli release -h` -![image](https://user-images.githubusercontent.com/4971414/127877027-68a3f58e-c253-4ba9-b4f9-68b6673582a3.png) +![图片](https://dn-coding-net-production-pp.codehub.cn/e34c95cb-3ca7-4f2e-b081-03efdce7c036.png) -3. 打开命令行,进入 zip 文件所在的目录,执行命令导入: +### 创建环境变量文件 + +示例命令:`coding-cli env add -c "redis.host=17.0.0.1" -f add_redis_host` + +![图片](https://dn-coding-net-production-pp.codehub.cn/36e64407-5d03-4764-b2c3-a0775e2e6777.png) + +### 创建 pt-online-schema-change 数据库表结构更新文件 + +示例命令:`coding-cli pt -t sample -a "add column nickname varchar(32) default null comment '昵称' after id" -f sample_table_add_nickname_col` + +![图片](https://dn-coding-net-production-pp.codehub.cn/993f59be-f40c-40c3-bba0-9a06a80d94d6.png) + +### 创建数据库数据更新 SQL 文件 + +示例命令:`coding-cli sql -c " UPDATE sample SET nickname='tom' WHERE id = 1 " -f update_sample_nickname` + +![图片](https://dn-coding-net-production-pp.codehub.cn/81123b37-fcd1-476a-9a47-0a5c46e749f4.png) -```shell -cd ~/Downloads/ -docker run -it -v $(pwd):/root --env CODING_IMPORT_PROVIDER=Confluence \ - --env CODING_IMPORT_DATA_TYPE=HTML \ - --env CODING_IMPORT_DATA_PATH=./Confluence-space-export-231543-81.html.zip \ - --env CODING_TOKEN=foo \ - ecoding/coding-cli wiki:import -``` -![image](https://user-images.githubusercontent.com/4971414/127878108-f778bfd6-fe7f-49f3-9590-9efd68404df5.png) +### .coding_release.yml 文件示例 +```yml +service: +- name: e-coding + migrate: enterprise/app/e-coding/doc/mysql/migrate_script + source: + - enterprise/app/e-coding +- name: e-front + migrate: + source: + - frontend/coding-front-v2 +``` \ No newline at end of file diff --git a/app/Coding/Base.php b/app/Coding/Base.php deleted file mode 100644 index 95b516a..0000000 --- a/app/Coding/Base.php +++ /dev/null @@ -1,59 +0,0 @@ -client = $client ?? new Client(); - $this->zipArchive = $zipArchive ?? new ZipArchive(); - } - - public function createUploadToken($token, $projectName, $fileName) - { - $response = $this->client->request('POST', 'https://e.coding.net/open-api', [ - 'headers' => [ - 'Accept' => 'application/json', - 'Authorization' => "token ${token}", - 'Content-Type' => 'application/json' - ], - 'json' => [ - 'Action' => 'CreateUploadToken', - 'ProjectName' => $projectName, - 'FileName' => $fileName, - ], - ]); - $uploadToken = json_decode($response->getBody(), true)['Response']['Token']; - preg_match_all( - '|https://([a-z0-9\-]+)-(\d+)\.cos\.([a-z0-9\-]+)\.myqcloud\.com|', - $uploadToken['UploadLink'], - $matches - ); - $uploadToken['Bucket'] = $matches[1][0] . '-' . $matches[2][0]; - $uploadToken['AppId'] = $matches[2][0]; - $uploadToken['Region'] = $matches[3][0]; - return $uploadToken; - } - - public function upload(array $uploadToken, string $fileFullPath): bool - { - config(['filesystems.disks.cos.credentials.appId' => $uploadToken['AppId']]); - config(['filesystems.disks.cos.credentials.secretId' => $uploadToken['SecretId']]); - config(['filesystems.disks.cos.credentials.secretKey' => $uploadToken['SecretKey']]); - config(['filesystems.disks.cos.credentials.token' => $uploadToken['UpToken']]); - config(['filesystems.disks.cos.region' => $uploadToken['Region']]); - config(['filesystems.disks.cos.bucket' => $uploadToken['Bucket']]); - - $disk = Storage::build(config('filesystems.disks.cos')); - return $disk->put($uploadToken['StorageKey'], File::get($fileFullPath)); - } -} diff --git a/app/Coding/Disk.php b/app/Coding/Disk.php deleted file mode 100644 index 06db24a..0000000 --- a/app/Coding/Disk.php +++ /dev/null @@ -1,96 +0,0 @@ -client->request('POST', 'https://e.coding.net/open-api', [ - 'headers' => [ - 'Accept' => 'application/json', - 'Authorization' => "token ${token}", - 'Content-Type' => 'application/json' - ], - 'json' => [ - 'Action' => 'CreateFolder', - 'ProjectName' => $projectName, - 'FolderName' => $folderName, - 'ParentId' => $parentId, - ], - ]); - $result = json_decode($response->getBody(), true); - return $result['Response']['Data']['Id']; - } - - /** - * @param string $token - * @param string $projectName - * @param array $data - * @return int - * @throws \GuzzleHttp\Exception\GuzzleException - * @todo data 数组无法强类型校验内部字段,考虑用对象 - */ - public function createFile(string $token, string $projectName, array $data): array - { - $response = $this->client->request('POST', 'https://e.coding.net/open-api', [ - 'headers' => [ - 'Accept' => 'application/json', - 'Authorization' => "token ${token}", - 'Content-Type' => 'application/json' - ], - 'json' => array_merge([ - 'Action' => 'CreateFile', - 'ProjectName' => $projectName, - ], $data), - ]); - $result = json_decode($response->getBody(), true); - return $result['Response']['Data']; - } - - public function uploadAttachments(string $token, string $projectName, string $dataDir, array $attachments): array - { - if (empty($attachments)) { - return []; - } - $data = []; - // TODO hard code folder name - $folderId = $this->createFolder($token, $projectName, 'wiki-attachments'); - foreach ($attachments as $path => $filename) { - $uploadToken = $this->createUploadToken( - $token, - $projectName, - $filename - ); - $filePath = $dataDir . DIRECTORY_SEPARATOR . $path; - $result = []; - try { - $this->upload($uploadToken, $filePath); - $result = $this->createFile($token, $projectName, [ - "OriginalFileName" => $filename, - "MimeType" => mime_content_type($filePath), - "FileSize" => filesize($filePath), - "StorageKey" => $uploadToken['StorageKey'], - "Time" => $uploadToken['Time'], - "AuthToken" => $uploadToken['AuthToken'], - "FolderId" => $folderId, - ]); - } catch (\Exception $e) { - // TODO laravel log - error_log('ERROR: ' . $e->getMessage()); - } - $data[$path] = $result; - } - return $data; - } -} diff --git a/app/Coding/Iteration.php b/app/Coding/Iteration.php deleted file mode 100644 index 8ec9031..0000000 --- a/app/Coding/Iteration.php +++ /dev/null @@ -1,14 +0,0 @@ -year == $endAt->year ? 'm/d' : 'Y/m/d'; - return $startAt->format('Y/m/d') . '-' . $endAt->format($endFormat) . ' 迭代'; - } -} diff --git a/app/Coding/Wiki.php b/app/Coding/Wiki.php deleted file mode 100644 index eac9c32..0000000 --- a/app/Coding/Wiki.php +++ /dev/null @@ -1,204 +0,0 @@ -client->request('POST', 'https://e.coding.net/open-api', [ - 'headers' => [ - 'Accept' => 'application/json', - 'Authorization' => "token ${token}", - 'Content-Type' => 'application/json' - ], - 'json' => array_merge([ - 'Action' => 'CreateWiki', - 'ProjectName' => $projectName, - ], $data), - ]); - return json_decode($response->getBody(), true)['Response']['Data']; - } - - public function createMarkdownZip($markdown, $path, $markdownFilename, $title): bool|string - { - $zipFileFullPath = sys_get_temp_dir() . DIRECTORY_SEPARATOR . $markdownFilename . '-' . Str::uuid() . '.zip'; - if ($this->zipArchive->open($zipFileFullPath, ZipArchive::CREATE) !== true) { - Log::error("cannot open <$zipFileFullPath>"); - return false; - } - $this->zipArchive->addFromString($markdownFilename, $markdown); - preg_match_all('/!\[\]\(([a-z0-9\/\._\-]+)\)/', $markdown, $matches); - if (!empty($matches)) { - foreach ($matches[1] as $attachment) { - // markdown image title: ![](images/default.svg "admin") - $tmp = explode(' ', $attachment); - $filename = $tmp[0]; - $filepath = $path . DIRECTORY_SEPARATOR . $filename; - if (!file_exists($filepath)) { - Log::error("文件不存在", ['filename' => $filename, 'title' => $title]); - continue; - } - $this->zipArchive->addFile($filepath, $filename); - } - } - $this->zipArchive->close(); - return $zipFileFullPath; - } - - public function createWikiByZip(string $token, string $projectName, array $uploadToken, array $data) - { - $response = $this->client->request('POST', 'https://e.coding.net/open-api', [ - 'headers' => [ - 'Accept' => 'application/json', - 'Authorization' => "token ${token}", - 'Content-Type' => 'application/json' - ], - 'json' => [ - 'Action' => 'CreateWikiByZip', - 'ProjectName' => $projectName, - 'ParentIid' => $data['ParentIid'], - 'FileName' => $data['FileName'], - 'Key' => $uploadToken['StorageKey'], - 'Time' => $uploadToken['Time'], - 'AuthToken' => $uploadToken['AuthToken'], - ], - ]); - $result = json_decode($response->getBody(), true); - if (!isset($result['Response']['JobId'])) { - return new Exception('failed'); - } - return $result['Response']; - } - - /** - * 获取 Wiki 导入任务的进度(API 文档未展示,其实此接口已上线) - * - * @param string $token - * @param string $projectName - * @param string $jobId - * @return mixed - * @throws \GuzzleHttp\Exception\GuzzleException - * @throws Exception - */ - public function getImportJobStatus(string $token, string $projectName, string $jobId) - { - $response = $this->client->request('POST', 'https://e.coding.net/open-api', [ - 'headers' => [ - 'Accept' => 'application/json', - 'Authorization' => "token ${token}", - 'Content-Type' => 'application/json' - ], - 'json' => [ - 'Action' => 'DescribeImportJobStatus', - 'ProjectName' => $projectName, - 'JobId' => $jobId, - ], - ]); - $result = json_decode($response->getBody(), true); - if (isset($result['Response']['Error']['Message'])) { - throw new Exception($result['Response']['Error']['Message']); - } - return $result['Response']['Data']; - } - - public function getImportJobStatusWithRetry(string $token, string $projectName, string $jobId, int $retry = 10) - { - $waitingTimes = 0; - while (true) { - // HACK 如果上传成功立即查询,会报错:invoke function - sleep(1); - try { - $jobStatus = $this->getImportJobStatus($token, $projectName, $jobId); - if (in_array($jobStatus['Status'], ['wait_process', 'processing']) && $waitingTimes < $retry) { - $waitingTimes++; - continue; - } - return $jobStatus; - } catch (Exception $e) { - if ($waitingTimes < 10) { - $waitingTimes++; - continue; - } - throw $e; - } - break; - } - } - public function createWikiByUploadZip(string $token, string $projectName, string $zipFileFullPath, int $parentId) - { - $zipFilename = basename($zipFileFullPath); - $uploadToken = $this->createUploadToken( - $token, - $projectName, - $zipFilename - ); - $this->upload($uploadToken, $zipFileFullPath); - return $this->createWikiByZip($token, $projectName, $uploadToken, [ - 'ParentIid' => $parentId, - 'FileName' => $zipFilename, - ]); - } - - public function getWiki(string $token, string $projectName, int $id, int $version = 1) - { - $response = $this->client->request('POST', 'https://e.coding.net/open-api', [ - 'headers' => [ - 'Accept' => 'application/json', - 'Authorization' => "token ${token}", - 'Content-Type' => 'application/json' - ], - 'json' => [ - 'Action' => 'DescribeWiki', - 'ProjectName' => $projectName, - 'Iid' => $id, - 'VersionId' => $version, - ], - ]); - $result = json_decode($response->getBody(), true); - return $result['Response']['Data']; - } - - public function updateTitle(string $token, string $projectName, int $id, string $title): bool - { - $response = $this->client->request('POST', 'https://e.coding.net/open-api', [ - 'headers' => [ - 'Accept' => 'application/json', - 'Authorization' => "token ${token}", - 'Content-Type' => 'application/json' - ], - 'json' => [ - 'Action' => 'ModifyWikiTitle', - 'ProjectName' => $projectName, - 'Iid' => $id, - 'Title' => $title, - ], - ]); - $result = json_decode($response->getBody(), true); - return $result['Response']['Data']['Title'] == $title; - } - - public function replaceAttachments(string $markdown, array $codingAttachments): string - { - if (empty($codingAttachments)) { - return $markdown; - } - $markdown .= "\n\nAttachments\n---\n\n"; - foreach ($codingAttachments as $attachmentPath => $codingAttachment) { - $resourceCode = $codingAttachment['ResourceCode'] ?? 0; - $filename = $codingAttachment['FileName'] ?? '此文件迁移失败'; - $markdown .= "- #${resourceCode} ${filename}\n"; - $markdown = preg_replace( - "|\[.*\]\(${attachmentPath}\)|", - " #${resourceCode} `${filename}`", - $markdown - ); - } - return $markdown; - } -} diff --git a/app/Commands/ConfluenceHtml2MarkdownCommand.php b/app/Commands/ConfluenceHtml2MarkdownCommand.php deleted file mode 100644 index 948ac29..0000000 --- a/app/Commands/ConfluenceHtml2MarkdownCommand.php +++ /dev/null @@ -1,42 +0,0 @@ -argument('html_path'); - $dataDir = dirname($htmlPath); - $page = basename($htmlPath); - $markdown = $confluence->htmlFile2Markdown($htmlPath); - $mdFilename = substr($page, 0, -5) . '.md'; - $mdPath = $dataDir . DIRECTORY_SEPARATOR . $mdFilename; - file_put_contents($mdPath, $markdown . "\n"); - $this->info($mdPath); - return 0; - } -} diff --git a/app/Commands/IssueCreateCommand.php b/app/Commands/IssueCreateCommand.php deleted file mode 100644 index c883013..0000000 --- a/app/Commands/IssueCreateCommand.php +++ /dev/null @@ -1,70 +0,0 @@ -setCodingApi(); - $codingIssue->setToken($this->codingToken); - - $data = [ - 'ProjectName' => $this->codingProjectUri, - ]; - $data['Type'] = $this->option('type') ?? $this->choice( - '类型:', - ['DEFECT', 'REQUIREMENT', 'MISSION', 'EPIC', 'SUB_TASK'], - 0 - ); - $data['Name'] = $this->option('name') ?? $this->ask('标题:'); - $data['Priority'] = $this->option('priority') ?? $this->choice( - '优先级:', - ['0', '1', '2', '3'], - 0 - ); - - try { - $result = $codingIssue->create($data); - } catch (\Exception $e) { - $this->error('Error: ' . $e->getMessage()); - return 1; - } - - $this->info('创建成功'); - $this->info("https://{$this->codingTeamDomain}.coding.net/p/{$this->codingProjectUri}" . - "/all/issues/${result['Code']}"); - - return 0; - } -} diff --git a/app/Commands/IssueImportCommand.php b/app/Commands/IssueImportCommand.php deleted file mode 100644 index 6b433ab..0000000 --- a/app/Commands/IssueImportCommand.php +++ /dev/null @@ -1,161 +0,0 @@ -setCodingApi(); - $codingIssue->setToken($this->codingToken); - $iteration->setToken($this->codingToken); - $projectSetting->setToken($this->codingToken); - - $filePath = $this->argument('file'); - if (!file_exists($filePath)) { - $this->error("文件不存在:$filePath"); - return 1; - } - - $rows = FastExcel::import($filePath); - if (!empty($rows) && isset($rows[0]['ID'])) { - $rows = $rows->sortBy('ID'); - } - foreach ($rows as $row) { - try { - $issueResult = $this->createIssueByRow($projectSetting, $codingIssue, $iteration, $row); - } catch (Exception $e) { - $this->error('Error: ' . $e->getMessage()); - return 1; - } - $this->info('标题:' . $row['标题']); - $this->info("https://{$this->codingTeamDomain}.coding.net/p/{$this->codingProjectUri}" . - "/all/issues/${issueResult['Code']}"); - } - - return 0; - } - - private function getIssueTypes(ProjectSetting $projectSetting, array $row): void - { - if (empty($this->issueTypes)) { - $result = $projectSetting->getIssueTypes(['ProjectName' => $this->codingProjectUri]); - foreach ($result as $item) { - $this->issueTypes[$item['Name']] = $item; - } - } - if (!isset($this->issueTypes[$row['事项类型']])) { - throw new Exception('「' . $row['事项类型'] . '」类型不存在,请在项目设置中添加'); - } - } - - private function getStatusId(ProjectSetting $projectSetting, string $issueTypeName, string $statusName): int - { - if (!isset($this->issueTypeStatus[$issueTypeName])) { - $type = $this->issueTypes[$issueTypeName]['IssueType']; - $typeId = $this->issueTypes[$issueTypeName]['Id']; - $result = $projectSetting->getIssueStatus([ - 'ProjectName' => $this->codingProjectUri, - 'IssueType' => $type, - 'IssueTypeId' => $typeId - ]); - foreach ($result as $item) { - $tmp = $item['IssueStatus']; - $this->issueTypeStatus[$issueTypeName][$tmp['Name']] = $tmp['Id']; - } - } - if (!isset($this->issueTypeStatus[$issueTypeName][$statusName])) { - throw new Exception('「' . $statusName . '」不存在,请在设置中添加'); - } - return intval($this->issueTypeStatus[$issueTypeName][$statusName]); - } - - private function createIssueByRow(ProjectSetting $projectSetting, Issue $issue, Iteration $iteration, array $row) - { - $this->getIssueTypes($projectSetting, $row); - $data = [ - 'ProjectName' => $this->codingProjectUri, - 'Type' => $this->issueTypes[$row['事项类型']]['IssueType'], - 'IssueTypeId' => $this->issueTypes[$row['事项类型']]['Id'], - 'Name' => $row['标题'], - ]; - if (!empty($row['优先级'])) { - $data['Priority'] = \App\Models\Issue::PRIORITY_MAP[$row['优先级']]; - } - if (!empty($row['所属迭代'])) { - $data['IterationCode'] = $this->getIterationCode($iteration, $row['所属迭代']); - } - if (!empty($row['ParentCode'])) { - $data['ParentCode'] = $this->issueCodeMap[$row['ParentCode']]; - } - foreach ( - [ - 'Description' => '描述', - 'DueDate' => '截止日期', - 'StartDate' => '开始日期', - 'StoryPoint' => '故事点', - ] as $english => $chinese - ) { - if (!empty($row[$chinese])) { - $data[$english] = $row[$chinese]; - } - } - if (!empty($row['状态'])) { - $data['StatusId'] = $this->getStatusId($projectSetting, $row['事项类型'], $row['状态']); - } - $result = $issue->create($data); - if (isset($row['ID'])) { - $this->issueCodeMap[$row['ID']] = intval($result['Code']); - } - return $result; - } - - private function getIterationCode(Iteration $iteration, string $name) - { - if (!isset($this->iterationMap[$name])) { - $result = $iteration->create([ - 'ProjectName' => $this->codingProjectUri, - 'Name' => $name, - ]); - $this->iterationMap[$name] = $result['Code']; - } - return $this->iterationMap[$name]; - } -} diff --git a/app/Commands/IterationCreateCommand.php b/app/Commands/IterationCreateCommand.php deleted file mode 100644 index bc1745a..0000000 --- a/app/Commands/IterationCreateCommand.php +++ /dev/null @@ -1,68 +0,0 @@ -setCodingApi(); - $iteration->setToken($this->codingToken); - - $data = [ - 'ProjectName' => $this->codingProjectUri, - ]; - $startAt = Carbon::parse($this->option('start_at') ?? $this->ask('开始时间:', Carbon::today()->toDateString())); - $data['StartAt'] = $startAt->toDateString(); - $endAt = Carbon::parse($this->option('end_at') ?? $this->ask( - '结束时间:', - Carbon::today()->addDays(14)->toDateString() - )); - $data['EndAt'] = $endAt->toDateString(); - $data['Name'] = $this->option('name') ?? $this->ask('标题:', LocalIteration::generateName($startAt, $endAt)); - $data['Goal'] = $this->option('goal'); - $data['Assignee'] = $this->option('assignee'); - - $result = $iteration->create($data); - - $this->info('创建成功'); - $this->info("https://{$this->codingTeamDomain}.coding.net/p/{$this->codingProjectUri}" . - "/iterations/${result['Code']}/issues"); - - return 0; - } -} diff --git a/app/Commands/ProjectGetIssueTypesCommand.php b/app/Commands/ProjectGetIssueTypesCommand.php deleted file mode 100644 index ff7b081..0000000 --- a/app/Commands/ProjectGetIssueTypesCommand.php +++ /dev/null @@ -1,47 +0,0 @@ -setCodingApi(); - $projectSetting->setToken($this->codingToken); - - $result = $projectSetting->getIssueTypes(['ProjectName' => $this->codingProjectUri]); - - foreach ($result as $item) { - $this->info($item['Id'] . ' ' . $item['Name']); - } - - return 0; - } -} diff --git a/app/Commands/WikiImportCommand.php b/app/Commands/WikiImportCommand.php deleted file mode 100644 index b49b3ea..0000000 --- a/app/Commands/WikiImportCommand.php +++ /dev/null @@ -1,324 +0,0 @@ -codingDisk = $codingDisk; - $this->codingWiki = $codingWiki; - $this->confluence = $confluence; - $this->document = $document; - $this->setCodingApi(); - - $provider = $this->option('coding_import_provider'); - if (is_null($provider)) { - $provider = config('coding.import.provider') ?? $this->choice( - '数据来源?', - ['Confluence', 'MediaWiki'], - 0 - ); - } - if ($provider != 'Confluence') { - $this->error('TODO'); - return 1; - } - - $dataType = $this->option('coding_import_data_type'); - if (is_null($dataType)) { - $dataType = config('coding.import.data_type') ?? $this->choice( - '数据类型?', - ['HTML', 'API'], - 0 - ); - } - switch ($dataType) { - case 'HTML': - $this->handleConfluenceHtml(); - break; - case 'API': - $this->handleConfluenceApi(); - break; - default: - break; - } - if (!empty($this->errors)) { - $this->info('报错信息汇总:'); - } - foreach ($this->errors as $error) { - $this->error($error); - } - return count($this->errors); - } - - private function createWiki($data) - { - $result = $this->codingWiki->createWiki($this->codingToken, $this->codingProjectUri, $data); - $path = $result['Path']; - $this->info("https://{$this->codingTeamDomain}.coding.net/p/{$this->codingProjectUri}/wiki/${path}"); - } - - private function handleConfluenceApi(): int - { - $baseUri = $this->option('confluence_base_uri'); - if (is_null($baseUri)) { - $baseUri = config('confluence.base_uri') ?? $this->ask( - 'Confluence API 链接:', - 'http://localhost:8090/rest/api/' - ); - } - config(['confluence.base_uri' => $baseUri]); - - $username = $this->option('confluence_username'); - if (is_null($username)) { - $username = config('confluence.username') ?? $this->ask('Confluence 账号:', 'admin'); - } - $password = $this->option('confluence_password'); - if (is_null($password)) { - $password = config('confluence.password') ?? $this->ask('Confluence 密码:', '123456'); - } - config(['confluence.auth' => [$username, $password]]); - - $data = Confluence::resource(Content::class)->index(); - $this->info("已获得 ${data['size']} 条数据"); - if ($data['size'] == 0) { - return 0; - } - $this->info("开始导入 CODING:"); - foreach ($data['results'] as $result) { - $content = Confluence::resource(Content::class)->show($result['id'], ['expand' => 'body.storage']); - $this->createWiki([ - 'Title' => $content['title'], - 'Content' => $content['body']['storage']['value'], - 'ParentIid' => 0, - ]); - } - return 0; - } - - private function handleConfluenceHtml(): int - { - $path = $this->unzipConfluenceHtml(); - if (str_ends_with($path, '.html')) { - return $this->uploadConfluencePage($path); - } - $htmlDir = $path; - $filePath = $htmlDir . DIRECTORY_SEPARATOR . 'index.html'; - if (!file_exists($filePath)) { - $message = "文件不存在:$filePath"; - $this->error($message); - $this->errors[] = $message; - return 1; - } - try { - libxml_use_internal_errors(true); - $this->document->loadHTMLFile($filePath); - $mainContent = $this->document->getElementById('main-content'); - $trList = $mainContent->getElementsByTagName('tr'); - $space = []; - foreach ($trList as $tr) { - if ($tr->getElementsByTagName('th')[0]->nodeValue == 'Key') { - $space['key'] = $tr->getElementsByTagName('td')[0]->nodeValue; - } elseif ($tr->getElementsByTagName('th')[0]->nodeValue == 'Name') { - $space['name'] = $tr->getElementsByTagName('td')[0]->nodeValue; - } - } - $this->info('空间名称:' . $space['name']); - $this->info('空间标识:' . $space['key']); - - $pages = $this->confluence->parseAvailablePages($filePath); - if (empty($pages['tree'])) { - $this->info("未发现有效数据"); - return 0; - } - $this->info('发现 ' . count($pages['tree']) . ' 个一级页面'); - $this->info("开始导入 CODING:"); - $this->clean($htmlDir); - $this->uploadConfluencePages($htmlDir, $pages['tree'], $pages['titles']); - } catch (\ErrorException $e) { - $this->error($e->getMessage()); - return 1; - } - - return 0; - } - - private function clean(string $htmlDir): void - { - if ($this->option('clean')) { - File::delete($htmlDir . DIRECTORY_SEPARATOR . 'success.log'); - } - if (file_exists($htmlDir . DIRECTORY_SEPARATOR . 'success.log')) { - $this->importedPages = parse_ini_file($htmlDir . DIRECTORY_SEPARATOR . 'success.log'); - } - } - - private function uploadConfluencePages(string $htmlDir, array $tree, array $titles, int $parentId = 0): void - { - foreach ($tree as $page => $subPages) { - $title = $titles[$page]; - $wikiId = $this->uploadConfluencePage($htmlDir . DIRECTORY_SEPARATOR . $page, $title, $parentId); - if ($wikiId && !empty($subPages)) { - $this->info('发现 ' . count($subPages) . ' 个子页面'); - // TODO tests - $this->uploadConfluencePages($htmlDir, $subPages, $titles, $wikiId); - } - } - } - - private function uploadConfluencePage(string $filePath, string $title = '', int $parentId = 0): int - { - $page = basename($filePath); - if (!$this->option('clean') && isset($this->importedPages[$page])) { - $this->warn('断点续传,跳过页面:' . $page); - return $this->importedPages[$page]; - } - try { - $markdown = $this->confluence->htmlFile2Markdown($filePath); - } catch (FileNotFoundException $e) { - $message = '页面不存在:' . $filePath; - $this->error($message); - $this->errors[] = $message; - return false; - } - libxml_use_internal_errors(true); - $this->document->loadHTMLFile($filePath); - if (empty($title)) { - $title = $this->document->getElementsByTagName('title')[0]->nodeValue; - } - $this->info('标题:' . $title); - - $htmlDir = dirname($filePath); - $markdown = $this->dealAttachments($filePath, $markdown); - $mdFilename = substr($page, 0, -5) . '.md'; - if ($this->option('save-markdown')) { - file_put_contents($htmlDir . DIRECTORY_SEPARATOR . $mdFilename, $markdown . "\n"); - } - $zipFilePath = $this->codingWiki->createMarkdownZip($markdown, $htmlDir, $mdFilename, $title); - $result = $this->codingWiki->createWikiByUploadZip( - $this->codingToken, - $this->codingProjectUri, - $zipFilePath, - $parentId, - ); - $this->info('上传成功,正在处理,任务 ID:' . $result['JobId']); - try { - $jobStatus = $this->codingWiki->getImportJobStatusWithRetry( - $this->codingToken, - $this->codingProjectUri, - $result['JobId'] - ); - if ($jobStatus['Status'] != 'success') { - throw new Exception('job status ' . $jobStatus['Status']); - } - $wikiId = intval($jobStatus['Iids'][0]); - } catch (Exception $e) { - $message = '错误:导入失败,跳过 ' . $title . ' ' . $page; - $this->error($message); - $this->errors[] = $message; - return false; - } - $this->codingWiki->updateTitle($this->codingToken, $this->codingProjectUri, $wikiId, $title); - file_put_contents($htmlDir . DIRECTORY_SEPARATOR . 'success.log', "$page = $wikiId\n", FILE_APPEND); - return $wikiId; - } - - private function unzipConfluenceHtml(): string - { - $dataPath = $this->option('coding_import_data_path'); - if (is_null($dataPath)) { - $dataPath = config('coding.import.data_path') ?? trim($this->ask( - '空间导出的 HTML zip 文件路径', - './confluence/space1.zip' - )); - } - - if (str_ends_with($dataPath, '.zip')) { - $zip = new ZipArchive(); - $zip->open($dataPath); - $tmpDir = sys_get_temp_dir() . '/confluence-' . Str::uuid(); - mkdir($tmpDir); - for ($i = 0; $i < $zip->numFiles; $i++) { - // HACK crash when zip include root path / - if ($zip->getNameIndex($i) != '/' && $zip->getNameIndex($i) != '__MACOSX/_') { - $zip->extractTo($tmpDir, [$zip->getNameIndex($i)]); - } - } - $zip->close(); - return $tmpDir . '/' . scandir($tmpDir, 1)[0] . '/'; - } - return rtrim($dataPath, '/'); - } - - private function dealAttachments(string $filePath, string $markdown): string - { - $attachments = $this->confluence->parseAttachments($filePath, $markdown); - $codingAttachments = $this->codingDisk->uploadAttachments( - $this->codingToken, - $this->codingProjectUri, - dirname($filePath), - $attachments - ); - foreach ($codingAttachments as $attachmentPath => $codingAttachment) { - if (empty($codingAttachment)) { - $message = '错误:文件上传失败 ' . $attachmentPath; - $this->error($message); - $this->errors[] = $message; - } - } - return $this->codingWiki->replaceAttachments($markdown, $codingAttachments); - } -} diff --git a/app/Commands/WikiUploadCommand.php b/app/Commands/WikiUploadCommand.php deleted file mode 100644 index bf6342c..0000000 --- a/app/Commands/WikiUploadCommand.php +++ /dev/null @@ -1,61 +0,0 @@ -codingDisk = $codingDisk; - $this->codingWiki = $codingWiki; - $this->setCodingApi(); - - $filePath = $this->argument('file'); - if (!file_exists($filePath)) { - $this->error("文件不存在:$filePath"); - return 1; - } - $parentId = intval($this->option('parent_id')); - $result = $this->codingWiki->createWikiByUploadZip( - $this->codingToken, - $this->codingProjectUri, - $filePath, - $parentId - ); - $this->info('上传成功,正在处理,任务 ID:' . $result['JobId']); - - return 0; - } -} diff --git a/app/Commands/WithCoding.php b/app/Commands/WithCoding.php deleted file mode 100644 index baaaa1c..0000000 --- a/app/Commands/WithCoding.php +++ /dev/null @@ -1,31 +0,0 @@ -option('coding_team_domain'); - if (is_null($codingTeamDomain)) { - $codingTeamDomain = config('coding.team_domain') ?? $this->ask('CODING 团队域名:'); - } - $this->codingTeamDomain = str_replace('.coding.net', '', "$codingTeamDomain"); - - $codingProjectUri = $this->option('coding_project_uri'); - if (is_null($codingProjectUri)) { - $codingProjectUri = config('coding.project_uri') ?? $this->ask('CODING 项目标识:'); - } - $this->codingProjectUri = "$codingProjectUri"; - - $codingToken = $this->option('coding_token'); - if (is_null($codingToken)) { - $codingToken = config('coding.token') ?? $this->ask('CODING Token:'); - } - $this->codingToken = "$codingToken"; - } -} diff --git a/app/Confluence.php b/app/Confluence.php deleted file mode 100644 index f13c092..0000000 --- a/app/Confluence.php +++ /dev/null @@ -1,158 +0,0 @@ -document = $document ?? new DOMDocument(); - $this->htmlConverter = $htmlConverter ?? new HtmlConverter(); - $this->htmlConverter->getConfig()->setOption('strip_tags', true); - $this->htmlConverter->getEnvironment()->addConverter(new TableConverter()); - } - - public function parsePageHtml(string $filename, string $spaceName): array - { - libxml_use_internal_errors(true); - $this->document->loadHTMLFile($filename); - $title = trim($this->document->getElementById('title-text')->nodeValue); - $title = str_replace($spaceName . ' : ', '', $title); - - $content = trim($this->document->getElementById('main-content')->nodeValue); - return [ - 'title' => $title, - 'content' => $content, - ]; - } - - public function htmlFile2Markdown(string $filename): string - { - $html = preg_replace( - [ - '|.*|', - '|
.*
|s', - '||s', - '||', - '|document->loadHTMLFile($htmlFilename); - $divElements = $this->document->getElementById('content')->getElementsByTagName('div'); - $attachmentDivElement = null; - foreach ($divElements as $divElement) { - if ($divElement->getAttribute('class') != 'pageSection group') { - continue; - } - $h2Element = $divElement->getElementsByTagName('h2')[0]; - if (!empty($h2Element) && $h2Element->getAttribute('id') == 'attachments') { - $attachmentDivElement = $divElement; - break; - } - } - if (empty($attachmentDivElement)) { - return []; - } - $aElements = $attachmentDivElement->getElementsByTagName('a'); - $attachments = []; - foreach ($aElements as $aElement) { - $filePath = $aElement->getAttribute('href'); - $filename = $aElement->nodeValue; - if (!str_contains($markdownContent, "![](${filePath}")) { - $attachments[$filePath] = $filename; - } - } - return $attachments; - } - - /** - * @return array ['tree' => "array", 'titles' => "array"] - */ - public function parseAvailablePages(string $filename): array - { - $this->document->loadHTMLFile($filename); - $divElements = $this->document->getElementById('content')->getElementsByTagName('div'); - $divElement = null; - foreach ($divElements as $divElement) { - if ($divElement->getAttribute('class') != 'pageSection') { - continue; - } - $h2Element = $divElement->getElementsByTagName('h2')[0]; - if (!empty($h2Element) && $h2Element->nodeValue == 'Available Pages:') { - break; - } - } - if (empty($divElement)) { - return [ - 'tree' => [], - 'titles' => [], - ]; - } - $xpath = new DOMXPath($this->document); - return [ - 'tree' => $this->parsePagesTree($xpath, $divElement), - 'titles' => $this->pageTitles, - ]; - } - - public function parsePagesTree(DOMXPath $xpath, \DOMElement $parentElement) - { - $liElements = $xpath->query('ul/li', $parentElement); - if ($liElements->count() == 0) { - return []; - } - - $tree = []; - foreach ($liElements as $liElement) { - $aElement = $xpath->query('a', $liElement)->item(0); - $href = $aElement->getAttribute('href'); - $this->pageTitles[$href] = $aElement->nodeValue; - $tree[$href] = $this->parsePagesTree($xpath, $liElement); - } - return $tree; - } -} diff --git a/app/Models/Issue.php b/app/Models/Issue.php deleted file mode 100644 index 44b1797..0000000 --- a/app/Models/Issue.php +++ /dev/null @@ -1,13 +0,0 @@ - '0', - '中' => '1', - '高' => '2', - '紧急' => '3', - ]; -} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php deleted file mode 100644 index 35471f6..0000000 --- a/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,28 +0,0 @@ -singleton( - Illuminate\Contracts\Console\Kernel::class, - LaravelZero\Framework\Kernel::class -); - -$app->singleton( - Illuminate\Contracts\Debug\ExceptionHandler::class, - Illuminate\Foundation\Exceptions\Handler::class -); - -/* -|-------------------------------------------------------------------------- -| Return The Application -|-------------------------------------------------------------------------- -| -| This script returns the application instance. The instance is given to -| the calling script so we can separate the building of the instances -| from the actual running of the application and sending responses. -| -*/ - -return $app; diff --git a/box.json b/box.json deleted file mode 100644 index a852f2e..0000000 --- a/box.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "chmod": "0755", - "directories": [ - "app", - "bootstrap", - "config", - "vendor" - ], - "files": [ - "composer.json" - ], - "exclude-composer-files": false, - "compression": "GZ", - "compactors": [ - "KevinGH\\Box\\Compactor\\Php", - "KevinGH\\Box\\Compactor\\Json" - ] -} diff --git a/coding b/coding deleted file mode 100755 index 33aa752..0000000 --- a/coding +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/composer.json b/composer.json deleted file mode 100644 index 2d5c4f1..0000000 --- a/composer.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "laravel-zero/laravel-zero", - "description": "The Laravel Zero Framework.", - "keywords": ["framework", "laravel", "laravel zero", "console", "cli"], - "homepage": "https://laravel-zero.com", - "type": "project", - "license": "MIT", - "support": { - "issues": "https://github.com/laravel-zero/laravel-zero/issues", - "source": "https://github.com/laravel-zero/laravel-zero" - }, - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "require": { - "php": "^8.0", - "ext-dom": "*", - "ext-fileinfo": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-zip": "*", - "coding/sdk": "^0.3.0", - "illuminate/log": "^8.0", - "laravel-fans/confluence": "^0.1.1", - "laravel-zero/framework": "^8.8", - "league/html-to-markdown": "^5.0", - "nesbot/carbon": "^2.53", - "rap2hpoutre/fast-excel": "^3.1", - "sinkcup/laravel-filesystem-cos-updated": "^4.0" - }, - "require-dev": { - "fakerphp/faker": "^1.16", - "mockery/mockery": "^1.4.3", - "phpmd/phpmd": "^2.10", - "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "psr-4": { - "App\\": "app/" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "config": { - "preferred-install": "dist", - "sort-packages": true, - "optimize-autoloader": true - }, - "minimum-stability": "stable", - "prefer-stable": true, - "scripts": { - "post-install-cmd": [ - "php -r \"if (is_dir('.git/hooks/')) {copy('.git-pre-commit', '.git/hooks/pre-commit'); chmod('.git/hooks/pre-commit', 0755);}\"" - ] - }, - "bin": ["coding"] -} diff --git a/composer.lock b/composer.lock deleted file mode 100644 index 1e3073b..0000000 --- a/composer.lock +++ /dev/null @@ -1,8425 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "b408b6a3c536eca0f449625d5f3fca29", - "packages": [ - { - "name": "box/spout", - "version": "v3.3.0", - "source": { - "type": "git", - "url": "https://github.com/box/spout.git", - "reference": "9bdb027d312b732515b884a341c0ad70372c6295" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/box/spout/zipball/9bdb027d312b732515b884a341c0ad70372c6295", - "reference": "9bdb027d312b732515b884a341c0ad70372c6295", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-xmlreader": "*", - "ext-zip": "*", - "php": ">=7.2.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2", - "phpunit/phpunit": "^8" - }, - "suggest": { - "ext-iconv": "To handle non UTF-8 CSV files (if \"php-intl\" is not already installed or is too limited)", - "ext-intl": "To handle non UTF-8 CSV files (if \"iconv\" is not already installed)" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Box\\Spout\\": "src/Spout" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Adrien Loison", - "email": "adrien@box.com" - } - ], - "description": "PHP Library to read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way", - "homepage": "https://www.github.com/box/spout", - "keywords": [ - "OOXML", - "csv", - "excel", - "memory", - "odf", - "ods", - "office", - "open", - "php", - "read", - "scale", - "spreadsheet", - "stream", - "write", - "xlsx" - ], - "support": { - "issues": "https://github.com/box/spout/issues", - "source": "https://github.com/box/spout/tree/v3.3.0" - }, - "time": "2021-05-14T21:18:09+00:00" - }, - { - "name": "brick/math", - "version": "0.9.3", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" - } - ], - "time": "2021-08-15T20:50:18+00:00" - }, - { - "name": "coding/sdk", - "version": "0.3.0", - "source": { - "type": "git", - "url": "https://github.com/Coding/coding-sdk-php.git", - "reference": "4bdc7746826f7f1025198e6dc9543d9a3127eb59" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Coding/coding-sdk-php/zipball/4bdc7746826f7f1025198e6dc9543d9a3127eb59", - "reference": "4bdc7746826f7f1025198e6dc9543d9a3127eb59", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/guzzle": "^7.4", - "illuminate/validation": "^8.67", - "php": ">=7.4" - }, - "require-dev": { - "fakerphp/faker": "^1.16", - "mockery/mockery": "^1.4", - "phpmd/phpmd": "^2.10", - "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "^3.6" - }, - "type": "library", - "autoload": { - "psr-4": { - "Coding\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "description": "CODING.net SDK for PHP", - "support": { - "issues": "https://github.com/Coding/coding-sdk-php/issues", - "source": "https://github.com/Coding/coding-sdk-php/tree/0.3.0" - }, - "time": "2021-10-25T09:09:13+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", - "homepage": "https://www.doctrine-project.org/projects/inflector.html", - "keywords": [ - "inflection", - "inflector", - "lowercase", - "manipulation", - "php", - "plural", - "singular", - "strings", - "uppercase", - "words" - ], - "support": { - "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.4" - }, - "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%2Finflector", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:16:43+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11.8", - "phpunit/phpunit": "^8.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", - "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.1" - }, - "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%2Flexer", - "type": "tidelift" - } - ], - "time": "2020-05-25T17:44:05+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.1.0", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c", - "reference": "7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "webmozart/assert": "^1.7.0" - }, - "replace": { - "mtdowling/cron-expression": "^1.0" - }, - "require-dev": { - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-webmozart-assert": "^0.12.7", - "phpunit/phpunit": "^7.0|^8.0|^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Cron\\": "src/Cron/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Tankersley", - "email": "chris@ctankersley.com", - "homepage": "https://github.com/dragonmantank" - } - ], - "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", - "keywords": [ - "cron", - "schedule" - ], - "support": { - "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.1.0" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2020-11-24T19:55:57+00:00" - }, - { - "name": "egulias/email-validator", - "version": "2.1.25", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0dbf5d78455d4d6a41d186da50adc1122ec066f4", - "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.0.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.10" - }, - "require-dev": { - "dominicsayers/isemail": "^3.0.7", - "phpunit/phpunit": "^4.8.36|^7.5.15", - "satooshi/php-coveralls": "^1.0.1" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Egulias\\EmailValidator\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eduardo Gulias Davis" - } - ], - "description": "A library for validating emails against several RFCs", - "homepage": "https://github.com/egulias/EmailValidator", - "keywords": [ - "email", - "emailvalidation", - "emailvalidator", - "validation", - "validator" - ], - "support": { - "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/2.1.25" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2020-12-29T14:50:06+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.4", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "f056f1fe935d9ed86e698905a957334029899895" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/f056f1fe935d9ed86e698905a957334029899895", - "reference": "f056f1fe935d9ed86e698905a957334029899895", - "shasum": "" - }, - "require": { - "php": "^5.5.9 || ^7.0 || ^8.0", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "require-dev": { - "mockery/mockery": "^0.9 || ^1.0", - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", - "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" - }, - "suggest": { - "symfony/var-dumper": "Pretty print complex values better with var-dumper available", - "whoops/soap": "Formats errors as SOAP responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Whoops\\": "src/Whoops/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Filipe Dobreira", - "homepage": "https://github.com/filp", - "role": "Developer" - } - ], - "description": "php error handling for cool kids", - "homepage": "https://filp.github.io/whoops/", - "keywords": [ - "error", - "exception", - "handling", - "library", - "throwable", - "whoops" - ], - "support": { - "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.14.4" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2021-10-03T12:00:00+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.0.3", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "296c015dc30ec4322168c5ad3ee5cc11dae827ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/296c015dc30ec4322168c5ad3ee5cc11dae827ac", - "reference": "296c015dc30ec4322168c5ad3ee5cc11dae827ac", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "GrahamCampbell\\ResultType\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk" - } - ], - "description": "An Implementation Of The Result Type", - "keywords": [ - "Graham Campbell", - "GrahamCampbell", - "Result Type", - "Result-Type", - "result" - ], - "support": { - "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.3" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2021-10-17T19:48:54+00:00" - }, - { - "name": "guzzlehttp/command", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/command.git", - "reference": "04b06e7f5ef37d814aeb3f4b6015b65a9d4412c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/command/zipball/04b06e7f5ef37d814aeb3f4b6015b65a9d4412c5", - "reference": "04b06e7f5ef37d814aeb3f4b6015b65a9d4412c5", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^7.3", - "guzzlehttp/promises": "^1.3", - "guzzlehttp/psr7": "^1.7 || ^2.0", - "php": "^7.2.5 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.19" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Command\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - } - ], - "description": "Provides the foundation for building command-based web service clients", - "support": { - "issues": "https://github.com/guzzle/command/issues", - "source": "https://github.com/guzzle/command/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/command", - "type": "tidelift" - } - ], - "time": "2021-09-05T19:12:19+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.4.5", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", - "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.9 || ^2.4", - "php": "^7.2.5 || ^8.0", - "psr/http-client": "^1.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "provide": { - "psr/http-client-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "psr/log": "^1.1 || ^2.0 || ^3.0" - }, - "suggest": { - "ext-curl": "Required for CURL handler support", - "ext-intl": "Required for Internationalized Domain Name (IDN) support", - "psr/log": "Required for using the Log middleware" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "7.4-dev" - } - }, - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "GuzzleHttp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "psr-18", - "psr-7", - "rest", - "web service" - ], - "support": { - "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.4.5" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", - "type": "tidelift" - } - ], - "time": "2022-06-20T22:16:13+00:00" - }, - { - "name": "guzzlehttp/guzzle-services", - "version": "1.3.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle-services.git", - "reference": "3731f120ce6856f4c71fff7cb2a27e263fe69f84" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle-services/zipball/3731f120ce6856f4c71fff7cb2a27e263fe69f84", - "reference": "3731f120ce6856f4c71fff7cb2a27e263fe69f84", - "shasum": "" - }, - "require": { - "guzzlehttp/command": "^1.2", - "guzzlehttp/guzzle": "^7.3", - "guzzlehttp/psr7": "^1.7 || ^2.0", - "guzzlehttp/uri-template": "^0.2 || ^1.0", - "php": "^7.2.5 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.19 || ^9.5.8" - }, - "suggest": { - "gimler/guzzle-description-loader": "^0.0.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Command\\Guzzle\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Stefano Kowalke", - "email": "blueduck@mail.org", - "homepage": "https://github.com/Konafets" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - } - ], - "description": "Provides an implementation of the Guzzle Command library that uses Guzzle service descriptions to describe web services, serialize requests, and parse responses into easy to use model structures.", - "support": { - "issues": "https://github.com/guzzle/guzzle-services/issues", - "source": "https://github.com/guzzle/guzzle-services/tree/1.3.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle-services", - "type": "tidelift" - } - ], - "time": "2021-10-07T13:01:35+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.4.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "13388f00956b1503577598873fffb5ae994b5737" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/13388f00956b1503577598873fffb5ae994b5737", - "reference": "13388f00956b1503577598873fffb5ae994b5737", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", - "ralouphie/getallheaders": "^3.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ], - "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.4.0" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", - "type": "tidelift" - } - ], - "time": "2022-06-20T21:43:11+00:00" - }, - { - "name": "guzzlehttp/uri-template", - "version": "v1.0.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/uri-template.git", - "reference": "b945d74a55a25a949158444f09ec0d3c120d69e2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/uri-template/zipball/b945d74a55a25a949158444f09ec0d3c120d69e2", - "reference": "b945d74a55a25a949158444f09ec0d3c120d69e2", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "symfony/polyfill-php80": "^1.17" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.19 || ^9.5.8", - "uri-template/tests": "1.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\UriTemplate\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - } - ], - "description": "A polyfill class for uri_template of PHP", - "keywords": [ - "guzzlehttp", - "uri-template" - ], - "support": { - "issues": "https://github.com/guzzle/uri-template/issues", - "source": "https://github.com/guzzle/uri-template/tree/v1.0.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", - "type": "tidelift" - } - ], - "time": "2021-10-07T12:57:01+00:00" - }, - { - "name": "illuminate/bus", - "version": "v8.67.0", - "source": { - "type": "git", - "url": "https://github.com/illuminate/bus.git", - "reference": "be400399687b97d5558a224e970060fd5d5f2735" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/illuminate/bus/zipball/be400399687b97d5558a224e970060fd5d5f2735", - "reference": "be400399687b97d5558a224e970060fd5d5f2735", - "shasum": "" - }, - "require": { - "illuminate/collections": "^8.0", - "illuminate/contracts": "^8.0", - "illuminate/pipeline": "^8.0", - "illuminate/support": "^8.0", - "php": "^7.3|^8.0" - }, - "suggest": { - "illuminate/queue": "Required to use closures when chaining jobs (^7.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Bus\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Bus package.", - "homepage": "https://laravel.com", - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2021-10-21T19:19:36+00:00" - }, - { - "name": "illuminate/cache", - "version": "v8.67.0", - "source": { - "type": "git", - "url": "https://github.com/illuminate/cache.git", - "reference": "f4dda85d48e8dc6000432db16176f2c9fa0ff08e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/illuminate/cache/zipball/f4dda85d48e8dc6000432db16176f2c9fa0ff08e", - "reference": "f4dda85d48e8dc6000432db16176f2c9fa0ff08e", - "shasum": "" - }, - "require": { - "illuminate/collections": "^8.0", - "illuminate/contracts": "^8.0", - "illuminate/macroable": "^8.0", - "illuminate/support": "^8.0", - "php": "^7.3|^8.0" - }, - "provide": { - "psr/simple-cache-implementation": "1.0" - }, - "suggest": { - "ext-memcached": "Required to use the memcache cache driver.", - "illuminate/database": "Required to use the database cache driver (^8.0).", - "illuminate/filesystem": "Required to use the file cache driver (^8.0).", - "illuminate/redis": "Required to use the redis cache driver (^8.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^5.1.4)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Cache\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Cache package.", - "homepage": "https://laravel.com", - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2021-09-15T14:32:50+00:00" - }, - { - "name": "illuminate/collections", - "version": "v8.67.0", - "source": { - "type": "git", - "url": "https://github.com/illuminate/collections.git", - "reference": "2142c8cf75f1cf4416a5f414a6ed377de4b73ad9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/illuminate/collections/zipball/2142c8cf75f1cf4416a5f414a6ed377de4b73ad9", - "reference": "2142c8cf75f1cf4416a5f414a6ed377de4b73ad9", - "shasum": "" - }, - "require": { - "illuminate/contracts": "^8.0", - "illuminate/macroable": "^8.0", - "php": "^7.3|^8.0" - }, - "suggest": { - "symfony/var-dumper": "Required to use the dump method (^5.1.4)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Support\\": "" - }, - "files": [ - "helpers.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Collections package.", - "homepage": "https://laravel.com", - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2021-10-20T22:21:30+00:00" - }, - { - "name": "illuminate/config", - "version": "v8.67.0", - "source": { - "type": "git", - "url": "https://github.com/illuminate/config.git", - "reference": "70973cbbe0cb524658b6eeaa2386dd5b71de4b02" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/illuminate/config/zipball/70973cbbe0cb524658b6eeaa2386dd5b71de4b02", - "reference": "70973cbbe0cb524658b6eeaa2386dd5b71de4b02", - "shasum": "" - }, - "require": { - "illuminate/collections": "^8.0", - "illuminate/contracts": "^8.0", - "php": "^7.3|^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Config\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Config package.", - "homepage": "https://laravel.com", - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2021-08-03T13:42:24+00:00" - }, - { - "name": "illuminate/console", - "version": "v8.67.0", - "source": { - "type": "git", - "url": "https://github.com/illuminate/console.git", - "reference": "9c66af18f7a491d45dc7527837f22a175776870a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/illuminate/console/zipball/9c66af18f7a491d45dc7527837f22a175776870a", - "reference": "9c66af18f7a491d45dc7527837f22a175776870a", - "shasum": "" - }, - "require": { - "illuminate/collections": "^8.0", - "illuminate/contracts": "^8.0", - "illuminate/macroable": "^8.0", - "illuminate/support": "^8.0", - "php": "^7.3|^8.0", - "symfony/console": "^5.1.4", - "symfony/process": "^5.1.4" - }, - "suggest": { - "dragonmantank/cron-expression": "Required to use scheduler (^3.0.2).", - "guzzlehttp/guzzle": "Required to use the ping methods on schedules (^6.5.5|^7.0.1).", - "illuminate/bus": "Required to use the scheduled job dispatcher (^8.0).", - "illuminate/container": "Required to use the scheduler (^8.0).", - "illuminate/filesystem": "Required to use the generator command (^8.0).", - "illuminate/queue": "Required to use closures for scheduled jobs (^8.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Console\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Console package.", - "homepage": "https://laravel.com", - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2021-10-21T19:19:36+00:00" - }, - { - "name": "illuminate/container", - "version": "v8.67.0", - "source": { - "type": "git", - "url": "https://github.com/illuminate/container.git", - "reference": "ef73feb5216ef97ab7023cf59c0c8dbbd5505a9d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/illuminate/container/zipball/ef73feb5216ef97ab7023cf59c0c8dbbd5505a9d", - "reference": "ef73feb5216ef97ab7023cf59c0c8dbbd5505a9d", - "shasum": "" - }, - "require": { - "illuminate/contracts": "^8.0", - "php": "^7.3|^8.0", - "psr/container": "^1.0" - }, - "provide": { - "psr/container-implementation": "1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Container\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Container package.", - "homepage": "https://laravel.com", - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2021-09-15T14:32:50+00:00" - }, - { - "name": "illuminate/contracts", - "version": "v8.67.0", - "source": { - "type": "git", - "url": "https://github.com/illuminate/contracts.git", - "reference": "ab4bb4ec3b36905ccf972c84f9aaa2bdd1153913" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/illuminate/contracts/zipball/ab4bb4ec3b36905ccf972c84f9aaa2bdd1153913", - "reference": "ab4bb4ec3b36905ccf972c84f9aaa2bdd1153913", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0", - "psr/container": "^1.0", - "psr/simple-cache": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Contracts\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Contracts package.", - "homepage": "https://laravel.com", - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2021-09-08T12:09:40+00:00" - }, - { - "name": "illuminate/events", - "version": "v8.67.0", - "source": { - "type": "git", - "url": "https://github.com/illuminate/events.git", - "reference": "b7f06cafb6c09581617f2ca05d69e9b159e5a35d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/illuminate/events/zipball/b7f06cafb6c09581617f2ca05d69e9b159e5a35d", - "reference": "b7f06cafb6c09581617f2ca05d69e9b159e5a35d", - "shasum": "" - }, - "require": { - "illuminate/bus": "^8.0", - "illuminate/collections": "^8.0", - "illuminate/container": "^8.0", - "illuminate/contracts": "^8.0", - "illuminate/macroable": "^8.0", - "illuminate/support": "^8.0", - "php": "^7.3|^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Events\\": "" - }, - "files": [ - "functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Events package.", - "homepage": "https://laravel.com", - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2021-09-15T14:32:50+00:00" - }, - { - "name": "illuminate/filesystem", - "version": "v8.67.0", - "source": { - "type": "git", - "url": "https://github.com/illuminate/filesystem.git", - "reference": "a7bc30dac4e27dbeb37b026f3dbaee13bd578861" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/illuminate/filesystem/zipball/a7bc30dac4e27dbeb37b026f3dbaee13bd578861", - "reference": "a7bc30dac4e27dbeb37b026f3dbaee13bd578861", - "shasum": "" - }, - "require": { - "illuminate/collections": "^8.0", - "illuminate/contracts": "^8.0", - "illuminate/macroable": "^8.0", - "illuminate/support": "^8.0", - "php": "^7.3|^8.0", - "symfony/finder": "^5.1.4" - }, - "suggest": { - "ext-ftp": "Required to use the Flysystem FTP driver.", - "illuminate/http": "Required for handling uploaded files (^7.0).", - "league/flysystem": "Required to use the Flysystem local and FTP drivers (^1.1).", - "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", - "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", - "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", - "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^5.1.4).", - "symfony/mime": "Required to enable support for guessing extensions (^5.1.4)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Filesystem\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Filesystem package.", - "homepage": "https://laravel.com", - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2021-10-22T13:20:42+00:00" - }, - { - "name": "illuminate/log", - "version": "v8.67.0", - "source": { - "type": "git", - "url": "https://github.com/illuminate/log.git", - "reference": "48f459af3ffc2b5dc030986742812cfb0b9babcc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/illuminate/log/zipball/48f459af3ffc2b5dc030986742812cfb0b9babcc", - "reference": "48f459af3ffc2b5dc030986742812cfb0b9babcc", - "shasum": "" - }, - "require": { - "illuminate/contracts": "^8.0", - "illuminate/support": "^8.0", - "monolog/monolog": "^2.0", - "php": "^7.3|^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Log\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Log package.", - "homepage": "https://laravel.com", - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2021-10-20T14:18:17+00:00" - }, - { - "name": "illuminate/macroable", - "version": "v8.67.0", - "source": { - "type": "git", - "url": "https://github.com/illuminate/macroable.git", - "reference": "300aa13c086f25116b5f3cde3ca54ff5c822fb05" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/illuminate/macroable/zipball/300aa13c086f25116b5f3cde3ca54ff5c822fb05", - "reference": "300aa13c086f25116b5f3cde3ca54ff5c822fb05", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Support\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Macroable package.", - "homepage": "https://laravel.com", - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2020-10-27T15:20:30+00:00" - }, - { - "name": "illuminate/pipeline", - "version": "v8.67.0", - "source": { - "type": "git", - "url": "https://github.com/illuminate/pipeline.git", - "reference": "23aeff5b26ae4aee3f370835c76bd0f4e93f71d2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/illuminate/pipeline/zipball/23aeff5b26ae4aee3f370835c76bd0f4e93f71d2", - "reference": "23aeff5b26ae4aee3f370835c76bd0f4e93f71d2", - "shasum": "" - }, - "require": { - "illuminate/contracts": "^8.0", - "illuminate/support": "^8.0", - "php": "^7.3|^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Pipeline\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Pipeline package.", - "homepage": "https://laravel.com", - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2021-03-26T18:39:16+00:00" - }, - { - "name": "illuminate/support", - "version": "v8.67.0", - "source": { - "type": "git", - "url": "https://github.com/illuminate/support.git", - "reference": "85b6513696d407280b54014865dca4e3fcdccce3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/illuminate/support/zipball/85b6513696d407280b54014865dca4e3fcdccce3", - "reference": "85b6513696d407280b54014865dca4e3fcdccce3", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^1.4|^2.0", - "ext-json": "*", - "ext-mbstring": "*", - "illuminate/collections": "^8.0", - "illuminate/contracts": "^8.0", - "illuminate/macroable": "^8.0", - "nesbot/carbon": "^2.53.1", - "php": "^7.3|^8.0", - "voku/portable-ascii": "^1.4.8" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "suggest": { - "illuminate/filesystem": "Required to use the composer class (^8.0).", - "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^1.3|^2.0.2).", - "ramsey/uuid": "Required to use Str::uuid() (^4.2.2).", - "symfony/process": "Required to use the composer class (^5.1.4).", - "symfony/var-dumper": "Required to use the dd function (^5.1.4).", - "vlucas/phpdotenv": "Required to use the Env class and env helper (^5.2)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Support\\": "" - }, - "files": [ - "helpers.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Support package.", - "homepage": "https://laravel.com", - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2021-10-22T13:20:42+00:00" - }, - { - "name": "illuminate/testing", - "version": "v8.67.0", - "source": { - "type": "git", - "url": "https://github.com/illuminate/testing.git", - "reference": "e55e0e2d0655fc606d01744140528848c9b80887" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/illuminate/testing/zipball/e55e0e2d0655fc606d01744140528848c9b80887", - "reference": "e55e0e2d0655fc606d01744140528848c9b80887", - "shasum": "" - }, - "require": { - "illuminate/collections": "^8.0", - "illuminate/contracts": "^8.0", - "illuminate/macroable": "^8.0", - "illuminate/support": "^8.0", - "php": "^7.3|^8.0" - }, - "suggest": { - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "illuminate/console": "Required to assert console commands (^8.0).", - "illuminate/database": "Required to assert databases (^8.0).", - "illuminate/http": "Required to assert responses (^8.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "phpunit/phpunit": "Required to use assertions and run tests (^8.5.19|^9.5.8)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Testing\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Testing package.", - "homepage": "https://laravel.com", - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2021-10-20T13:28:43+00:00" - }, - { - "name": "illuminate/translation", - "version": "v8.67.0", - "source": { - "type": "git", - "url": "https://github.com/illuminate/translation.git", - "reference": "019c83d17b6311be5e52ab99487804d210110d9d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/illuminate/translation/zipball/019c83d17b6311be5e52ab99487804d210110d9d", - "reference": "019c83d17b6311be5e52ab99487804d210110d9d", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/collections": "^8.0", - "illuminate/contracts": "^8.0", - "illuminate/filesystem": "^8.0", - "illuminate/macroable": "^8.0", - "illuminate/support": "^8.0", - "php": "^7.3|^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Translation\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Translation package.", - "homepage": "https://laravel.com", - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2021-10-21T16:07:23+00:00" - }, - { - "name": "illuminate/validation", - "version": "v8.67.0", - "source": { - "type": "git", - "url": "https://github.com/illuminate/validation.git", - "reference": "221e63001f0c698b5df2300224aae6409267d2b9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/illuminate/validation/zipball/221e63001f0c698b5df2300224aae6409267d2b9", - "reference": "221e63001f0c698b5df2300224aae6409267d2b9", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10", - "ext-json": "*", - "illuminate/collections": "^8.0", - "illuminate/container": "^8.0", - "illuminate/contracts": "^8.0", - "illuminate/macroable": "^8.0", - "illuminate/support": "^8.0", - "illuminate/translation": "^8.0", - "php": "^7.3|^8.0", - "symfony/http-foundation": "^5.1.4", - "symfony/mime": "^5.1.4" - }, - "suggest": { - "illuminate/database": "Required to use the database presence verifier (^8.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Validation\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Validation package.", - "homepage": "https://laravel.com", - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2021-10-13T13:37:38+00:00" - }, - { - "name": "jolicode/jolinotif", - "version": "v2.3.0", - "source": { - "type": "git", - "url": "https://github.com/jolicode/JoliNotif.git", - "reference": "9cca717bbc47aa2ffeca51d77daa13b824a489ee" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jolicode/JoliNotif/zipball/9cca717bbc47aa2ffeca51d77daa13b824a489ee", - "reference": "9cca717bbc47aa2ffeca51d77daa13b824a489ee", - "shasum": "" - }, - "require": { - "php": ">=7.0", - "symfony/process": "^3.3|^4.0|^5.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.0", - "symfony/finder": "^3.3|^4.0|^5.0", - "symfony/phpunit-bridge": "^3.4.26|^4.0|^5.0" - }, - "bin": [ - "jolinotif" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Joli\\JoliNotif\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Loïck Piera", - "email": "pyrech@gmail.com" - } - ], - "description": "Send desktop notifications on Windows, Linux, MacOS.", - "keywords": [ - "MAC", - "growl", - "linux", - "notification", - "windows" - ], - "support": { - "issues": "https://github.com/jolicode/JoliNotif/issues", - "source": "https://github.com/jolicode/JoliNotif/tree/v2.3.0" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/jolicode/jolinotif", - "type": "tidelift" - } - ], - "time": "2021-03-07T12:30:00+00:00" - }, - { - "name": "laravel-fans/confluence", - "version": "0.1.1", - "source": { - "type": "git", - "url": "https://github.com/laravel-fans/confluence-sdk-laravel.git", - "reference": "037111ed82450bfa5bfe6a5e2c63c2571f590c5f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel-fans/confluence-sdk-laravel/zipball/037111ed82450bfa5bfe6a5e2c63c2571f590c5f", - "reference": "037111ed82450bfa5bfe6a5e2c63c2571f590c5f", - "shasum": "" - }, - "require": { - "illuminate/support": "^8.0", - "php": ">=7.4", - "sinkcup/confluence-sdk-php": "^0.1.1" - }, - "require-dev": { - "fakerphp/faker": "^1.14", - "orchestra/testbench": "^6.0", - "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "^3.6" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "LaravelFans\\Confluence\\ConfluenceServiceProvider" - ], - "aliases": { - "Confluence": "LaravelFans\\Confluence\\Facades\\Confluence" - } - } - }, - "autoload": { - "psr-4": { - "LaravelFans\\Confluence\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "sinkcup", - "email": "sinkcup@gmail.com" - } - ], - "description": "Confluence SDK for PHP Laravel", - "support": { - "issues": "https://github.com/laravel-fans/confluence-sdk-laravel/issues", - "source": "https://github.com/laravel-fans/confluence-sdk-laravel/tree/0.1.1" - }, - "time": "2021-07-02T13:13:23+00:00" - }, - { - "name": "laravel-zero/foundation", - "version": "v8.62.0", - "source": { - "type": "git", - "url": "https://github.com/laravel-zero/foundation.git", - "reference": "717c8e4cf37fe5cea63941860b1dd08840ebbe80" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel-zero/foundation/zipball/717c8e4cf37fe5cea63941860b1dd08840ebbe80", - "reference": "717c8e4cf37fe5cea63941860b1dd08840ebbe80", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "8.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Foundation/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "This is a mirror from illuminate/foundation.", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "source": "https://github.com/laravel-zero/foundation/tree/v8.62.0" - }, - "time": "2021-10-01T14:32:32+00:00" - }, - { - "name": "laravel-zero/framework", - "version": "v8.9.0", - "source": { - "type": "git", - "url": "https://github.com/laravel-zero/framework.git", - "reference": "ca99ce5c5030cbc81bcb61d30cdba23095e4fa20" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel-zero/framework/zipball/ca99ce5c5030cbc81bcb61d30cdba23095e4fa20", - "reference": "ca99ce5c5030cbc81bcb61d30cdba23095e4fa20", - "shasum": "" - }, - "require": { - "dragonmantank/cron-expression": "^3.0.2", - "ext-json": "*", - "illuminate/cache": "^8.0", - "illuminate/config": "^8.0", - "illuminate/console": "^8.0", - "illuminate/container": "^8.0", - "illuminate/contracts": "^8.0", - "illuminate/events": "^8.0", - "illuminate/filesystem": "^8.0", - "illuminate/support": "^8.0", - "illuminate/testing": "^8.0", - "laravel-zero/foundation": "^8.0", - "league/flysystem": "^1.1.3", - "nunomaduro/collision": "^5.1", - "nunomaduro/laravel-console-summary": "^1.7", - "nunomaduro/laravel-console-task": "^1.6", - "nunomaduro/laravel-desktop-notifier": "^2.5.1", - "php": "^7.3 || ^8.0", - "psr/log": "^1.1", - "ramsey/uuid": "^4.0", - "symfony/console": "^5.1", - "symfony/error-handler": "^5.1", - "symfony/process": "^5.1", - "symfony/var-dumper": "^5.1", - "vlucas/phpdotenv": "^5.0" - }, - "require-dev": { - "guzzlehttp/guzzle": "^6.5.5|^7.0", - "hmazter/laravel-schedule-list": "^2.2.1", - "illuminate/bus": "^8.0", - "illuminate/database": "^8.40", - "illuminate/http": "^8.0", - "illuminate/log": "^8.0", - "illuminate/queue": "^8.0", - "illuminate/redis": "^8.0", - "laminas/laminas-text": "^2.8", - "laravel-zero/phar-updater": "^1.0.6", - "nunomaduro/laravel-console-dusk": "^1.8", - "nunomaduro/laravel-console-menu": "^3.2", - "pestphp/pest": "^1.3", - "phpstan/phpstan": "^0.12.88" - }, - "suggest": { - "ext-pcntl": "Required to ensure that data is cleared when cancelling the build process." - }, - "type": "library", - "autoload": { - "psr-4": { - "LaravelZero\\Framework\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "The Laravel Zero Framework.", - "homepage": "https://laravel-zero.com", - "keywords": [ - "Laravel Zero", - "cli", - "console", - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel-zero/laravel-zero/issues", - "source": "https://github.com/laravel-zero/laravel-zero" - }, - "time": "2021-06-03T15:51:45+00:00" - }, - { - "name": "league/flysystem", - "version": "1.1.5", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "18634df356bfd4119fe3d6156bdb990c414c14ea" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/18634df356bfd4119fe3d6156bdb990c414c14ea", - "reference": "18634df356bfd4119fe3d6156bdb990c414c14ea", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "league/mime-type-detection": "^1.3", - "php": "^7.2.5 || ^8.0" - }, - "conflict": { - "league/flysystem-sftp": "<1.0.6" - }, - "require-dev": { - "phpspec/prophecy": "^1.11.1", - "phpunit/phpunit": "^8.5.8" - }, - "suggest": { - "ext-ftp": "Allows you to use FTP server storage", - "ext-openssl": "Allows you to use FTPS server storage", - "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", - "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", - "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", - "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", - "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", - "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", - "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", - "league/flysystem-webdav": "Allows you to use WebDAV storage", - "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", - "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", - "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "League\\Flysystem\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frenky.net" - } - ], - "description": "Filesystem abstraction: Many filesystems, one API.", - "keywords": [ - "Cloud Files", - "WebDAV", - "abstraction", - "aws", - "cloud", - "copy.com", - "dropbox", - "file systems", - "files", - "filesystem", - "filesystems", - "ftp", - "rackspace", - "remote", - "s3", - "sftp", - "storage" - ], - "support": { - "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/1.1.5" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "other" - } - ], - "time": "2021-08-17T13:49:42+00:00" - }, - { - "name": "league/html-to-markdown", - "version": "5.0.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/html-to-markdown.git", - "reference": "e5600a2c5ce7b7571b16732c7086940f56f7abec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/e5600a2c5ce7b7571b16732c7086940f56f7abec", - "reference": "e5600a2c5ce7b7571b16732c7086940f56f7abec", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-xml": "*", - "php": "^7.2.5 || ^8.0" - }, - "require-dev": { - "mikehaertl/php-shellcommand": "^1.1.0", - "phpstan/phpstan": "^0.12.82", - "phpunit/phpunit": "^8.5 || ^9.2", - "scrutinizer/ocular": "^1.6", - "unleashedtech/php-coding-standard": "^2.7", - "vimeo/psalm": "^4.6" - }, - "bin": [ - "bin/html-to-markdown" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-dev" - } - }, - "autoload": { - "psr-4": { - "League\\HTMLToMarkdown\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com", - "role": "Lead Developer" - }, - { - "name": "Nick Cernis", - "email": "nick@cern.is", - "homepage": "http://modernnerd.net", - "role": "Original Author" - } - ], - "description": "An HTML-to-markdown conversion helper for PHP", - "homepage": "https://github.com/thephpleague/html-to-markdown", - "keywords": [ - "html", - "markdown" - ], - "support": { - "issues": "https://github.com/thephpleague/html-to-markdown/issues", - "source": "https://github.com/thephpleague/html-to-markdown/tree/5.0.1" - }, - "funding": [ - { - "url": "https://www.colinodell.com/sponsor", - "type": "custom" - }, - { - "url": "https://www.paypal.me/colinpodell/10.00", - "type": "custom" - }, - { - "url": "https://github.com/colinodell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/html-to-markdown", - "type": "tidelift" - } - ], - "time": "2021-09-17T20:00:27+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.8.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "b38b25d7b372e9fddb00335400467b223349fd7e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b38b25d7b372e9fddb00335400467b223349fd7e", - "reference": "b38b25d7b372e9fddb00335400467b223349fd7e", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.18", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "type": "library", - "autoload": { - "psr-4": { - "League\\MimeTypeDetection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frankdejonge.nl" - } - ], - "description": "Mime-type detection for Flysystem", - "support": { - "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.8.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-09-25T08:23:19+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", - "ext-mbstring": "Allow to work properly with unicode symbols", - "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", - "ext-openssl": "Required to send log messages using SSL", - "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Monolog\\": "src/Monolog" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "https://seld.be" - } - ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "https://github.com/Seldaek/monolog", - "keywords": [ - "log", - "logging", - "psr-3" - ], - "support": { - "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.3.5" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-10-01T21:08:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.53.1", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "f4655858a784988f880c1b8c7feabbf02dfdf045" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/f4655858a784988f880c1b8c7feabbf02dfdf045", - "reference": "f4655858a784988f880c1b8c7feabbf02dfdf045", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0" - }, - "require-dev": { - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "squizlabs/php_codesniffer": "^3.4" - }, - "bin": [ - "bin/carbon" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-3.x": "3.x-dev", - "dev-master": "2.x-dev" - }, - "laravel": { - "providers": [ - "Carbon\\Laravel\\ServiceProvider" - ] - }, - "phpstan": { - "includes": [ - "extension.neon" - ] - } - }, - "autoload": { - "psr-4": { - "Carbon\\": "src/Carbon/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Brian Nesbitt", - "email": "brian@nesbot.com", - "homepage": "https://markido.com" - }, - { - "name": "kylekatarnls", - "homepage": "https://github.com/kylekatarnls" - } - ], - "description": "An API extension for DateTime that supports 281 different languages.", - "homepage": "https://carbon.nesbot.com", - "keywords": [ - "date", - "datetime", - "time" - ], - "support": { - "issues": "https://github.com/briannesbitt/Carbon/issues", - "source": "https://github.com/briannesbitt/Carbon" - }, - "funding": [ - { - "url": "https://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "time": "2021-09-06T09:29:23+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v5.10.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "3004cfa49c022183395eabc6d0e5207dfe498d00" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/3004cfa49c022183395eabc6d0e5207dfe498d00", - "reference": "3004cfa49c022183395eabc6d0e5207dfe498d00", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0", - "filp/whoops": "^2.14.3", - "php": "^7.3 || ^8.0", - "symfony/console": "^5.0" - }, - "require-dev": { - "brianium/paratest": "^6.1", - "fideloper/proxy": "^4.4.1", - "fruitcake/laravel-cors": "^2.0.3", - "laravel/framework": "8.x-dev", - "nunomaduro/larastan": "^0.6.2", - "nunomaduro/mock-final-classes": "^1.0", - "orchestra/testbench": "^6.0", - "phpstan/phpstan": "^0.12.64", - "phpunit/phpunit": "^9.5.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "NunoMaduro\\Collision\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Cli error handling for console/command-line PHP applications.", - "keywords": [ - "artisan", - "cli", - "command-line", - "console", - "error", - "handling", - "laravel", - "laravel-zero", - "php", - "symfony" - ], - "support": { - "issues": "https://github.com/nunomaduro/collision/issues", - "source": "https://github.com/nunomaduro/collision" - }, - "funding": [ - { - "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2021-09-20T15:06:32+00:00" - }, - { - "name": "nunomaduro/laravel-console-summary", - "version": "v1.7.1", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/laravel-console-summary.git", - "reference": "b5a6b856aeaa2a0f69feb61a279ab4af4d6fecb1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/laravel-console-summary/zipball/b5a6b856aeaa2a0f69feb61a279ab4af4d6fecb1", - "reference": "b5a6b856aeaa2a0f69feb61a279ab4af4d6fecb1", - "shasum": "" - }, - "require": { - "illuminate/console": "^7.0|^8.0", - "illuminate/support": "^7.0|^8.0", - "php": "^7.2.5|^8.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "NunoMaduro\\LaravelConsoleSummary\\LaravelConsoleSummaryServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "NunoMaduro\\LaravelConsoleSummary\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "A Beautiful Laravel Console Summary for your Laravel/Laravel Zero commands.", - "keywords": [ - "artisan", - "cli", - "command-line", - "console", - "laravel", - "laravel-zero", - "php", - "symfony" - ], - "support": { - "issues": "https://github.com/nunomaduro/laravel-console-summary/issues", - "source": "https://github.com/nunomaduro/laravel-console-summary" - }, - "time": "2020-12-14T10:21:43+00:00" - }, - { - "name": "nunomaduro/laravel-console-task", - "version": "v1.6.1", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/laravel-console-task.git", - "reference": "de3062d80caa61be1dfde4ec3b84232871ef7f73" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/laravel-console-task/zipball/de3062d80caa61be1dfde4ec3b84232871ef7f73", - "reference": "de3062d80caa61be1dfde4ec3b84232871ef7f73", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0", - "illuminate/support": "^6.0|^7.0|^8.0", - "php": "^7.2.5|^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.21|^9.5.10" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "NunoMaduro\\LaravelConsoleTask\\LaravelConsoleTaskServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "NunoMaduro\\LaravelConsoleTask\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Laravel Console Task is a output method for your Laravel/Laravel Zero commands.", - "keywords": [ - "artisan", - "cli", - "command-line", - "console", - "laravel", - "laravel-zero", - "php", - "symfony" - ], - "support": { - "issues": "https://github.com/nunomaduro/laravel-console-task/issues", - "source": "https://github.com/nunomaduro/laravel-console-task" - }, - "time": "2021-10-19T11:33:38+00:00" - }, - { - "name": "nunomaduro/laravel-desktop-notifier", - "version": "v2.5.1", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/laravel-desktop-notifier.git", - "reference": "ce17d71c934c42f2e53c308184ac1edf2d17a51a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/laravel-desktop-notifier/zipball/ce17d71c934c42f2e53c308184ac1edf2d17a51a", - "reference": "ce17d71c934c42f2e53c308184ac1edf2d17a51a", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.20|^7.29|^8.12", - "illuminate/support": "^6.20|^7.29|^8.12", - "jolicode/jolinotif": "^2.0", - "php": "^7.2.5|^8.0" - }, - "require-dev": { - "graham-campbell/testbench": "^5.5", - "phpunit/phpunit": "^8.5.8|^9.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "NunoMaduro\\LaravelDesktopNotifier\\LaravelDesktopNotifierServiceProvider" - ], - "aliases": { - "Notifier": "NunoMaduro\\LaravelDesktopNotifier\\Facaces\\Notifier" - } - } - }, - "autoload": { - "psr-4": { - "NunoMaduro\\LaravelDesktopNotifier\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Send notifications to your desktop from your Laravel commands. An JoliNotif wrapper for Laravel 5.", - "keywords": [ - "JoliNotif", - "Nuno Maduro", - "NunoMaduro", - "artisan", - "console", - "framework", - "laravel", - "notification", - "notifier", - "php", - "wrapper" - ], - "support": { - "issues": "https://github.com/nunomaduro/laravel-desktop-notifier/issues", - "source": "https://github.com/nunomaduro/laravel-desktop-notifier/tree/v2.5.1" - }, - "time": "2020-10-30T15:41:03+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.8.0", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "5455cb38aed4523f99977c4a12ef19da4bfe2a28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/5455cb38aed4523f99977c4a12ef19da4bfe2a28", - "reference": "5455cb38aed4523f99977c4a12ef19da4bfe2a28", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.0.20 || ^8.5.19 || ^9.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-dev" - } - }, - "autoload": { - "psr-4": { - "PhpOption\\": "src/PhpOption/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk" - } - ], - "description": "Option Type for PHP", - "keywords": [ - "language", - "option", - "php", - "type" - ], - "support": { - "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.8.0" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2021-08-28T21:27:29+00:00" - }, - { - "name": "psr/container", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" - }, - "time": "2021-03-05T17:36:06+00:00" - }, - { - "name": "psr/http-client", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", - "keywords": [ - "http", - "http-client", - "psr", - "psr-18" - ], - "support": { - "source": "https://github.com/php-fig/http-client/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-factory/tree/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/master" - }, - "time": "2016-08-06T14:39:51+00:00" - }, - { - "name": "psr/log", - "version": "1.1.4", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" - }, - "time": "2021-05-03T11:20:27+00:00" - }, - { - "name": "psr/simple-cache", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\SimpleCache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for simple caching", - "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" - ], - "support": { - "source": "https://github.com/php-fig/simple-cache/tree/master" - }, - "time": "2017-10-23T01:57:42+00:00" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "type": "library", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" - }, - "time": "2019-03-08T08:55:37+00:00" - }, - { - "name": "ramsey/collection", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Ramsey\\Collection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - } - ], - "description": "A PHP library for representing and manipulating collections.", - "keywords": [ - "array", - "collection", - "hash", - "map", - "queue", - "set" - ], - "support": { - "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "replace": { - "rhumsaa/uuid": "self.version" - }, - "require-dev": { - "captainhook/captainhook": "^5.10", - "captainhook/plugin-composer": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "doctrine/annotations": "^1.8", - "ergebnis/composer-normalize": "^2.15", - "mockery/mockery": "^1.3", - "moontoast/math": "^1.1", - "paragonie/random-lib": "^2", - "php-mock/php-mock": "^2.2", - "php-mock/php-mock-mockery": "^1.3", - "php-parallel-lint/php-parallel-lint": "^1.1", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", - "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", - "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", - "keywords": [ - "guid", - "identifier", - "uuid" - ], - "support": { - "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "rap2hpoutre/fast-excel", - "version": "v3.1.0", - "source": { - "type": "git", - "url": "https://github.com/rap2hpoutre/fast-excel.git", - "reference": "01e309600b2ead458ce0d4399c70746677b08cca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/rap2hpoutre/fast-excel/zipball/01e309600b2ead458ce0d4399c70746677b08cca", - "reference": "01e309600b2ead458ce0d4399c70746677b08cca", - "shasum": "" - }, - "require": { - "box/spout": "^3", - "illuminate/support": "5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.* || 5.8.* || ^6.0 || ^7.0 || ^8.0", - "php": "^7.1|^8.0" - }, - "require-dev": { - "illuminate/database": "^6.20.12 || ^7.30.4 || ^8.24.0", - "phpunit/phpunit": "^9.5" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Rap2hpoutre\\FastExcel\\Providers\\FastExcelServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Rap2hpoutre\\FastExcel\\": "src/" - }, - "files": [ - "src/functions/fastexcel.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "rap2h", - "email": "raphaelht@gmail.com" - } - ], - "description": "Fast Excel import/export for Laravel", - "keywords": [ - "csv", - "excel", - "laravel", - "xls", - "xlsx" - ], - "support": { - "issues": "https://github.com/rap2hpoutre/fast-excel/issues", - "source": "https://github.com/rap2hpoutre/fast-excel/tree/v3.1.0" - }, - "time": "2021-10-13T20:12:19+00:00" - }, - { - "name": "sinkcup/confluence-sdk-php", - "version": "0.1.1", - "source": { - "type": "git", - "url": "https://github.com/sinkcup/confluence-sdk-php.git", - "reference": "aa51ee00ab5b853d3444adf8daf58abcab25ff47" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sinkcup/confluence-sdk-php/zipball/aa51ee00ab5b853d3444adf8daf58abcab25ff47", - "reference": "aa51ee00ab5b853d3444adf8daf58abcab25ff47", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/guzzle": "^7.3", - "php": ">=8.0" - }, - "require-dev": { - "fakerphp/faker": "^1.14", - "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "^3.6" - }, - "type": "library", - "autoload": { - "psr-4": { - "Confluence\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "sinkcup", - "homepage": "https://github.com/sinkcup", - "role": "Developer" - } - ], - "description": "Confluence SDK PHP", - "support": { - "issues": "https://github.com/sinkcup/confluence-sdk-php/issues", - "source": "https://github.com/sinkcup/confluence-sdk-php/tree/0.1.1" - }, - "time": "2021-07-02T13:08:18+00:00" - }, - { - "name": "sinkcup/cos-sdk-v5-updated", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sinkcup/cos-php-sdk-v5.git", - "reference": "b8174cb10c535b596cf1c5b58301d2317b81132a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sinkcup/cos-php-sdk-v5/zipball/b8174cb10c535b596cf1c5b58301d2317b81132a", - "reference": "b8174cb10c535b596cf1c5b58301d2317b81132a", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^7.0.1", - "guzzlehttp/guzzle-services": "^1.2", - "php": "^7.3|^8.0" - }, - "conflict": { - "qcloud/cos-sdk-v5": "*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Qcloud\\Cos\\": "src/Qcloud/Cos/" - }, - "files": [ - "src/Qcloud/Cos/Common.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "yaozongyou", - "email": "yaozongyou@vip.qq.com" - }, - { - "name": "lewzylu", - "email": "327874225@qq.com" - } - ], - "description": "PHP SDK for QCloud COS 升级依赖版,支持 guzzle 7、Laravel 8", - "keywords": [ - "cos", - "php", - "qcloud" - ], - "support": { - "source": "https://github.com/sinkcup/cos-php-sdk-v5/tree/3.0.0" - }, - "time": "2021-07-08T03:39:16+00:00" - }, - { - "name": "sinkcup/laravel-filesystem-cos-updated", - "version": "4.0.0", - "source": { - "type": "git", - "url": "https://github.com/sinkcup/laravel-filesystem-cos.git", - "reference": "7c7387efe8868501179d5c4c2ba7d48bda8f861c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sinkcup/laravel-filesystem-cos/zipball/7c7387efe8868501179d5c4c2ba7d48bda8f861c", - "reference": "7c7387efe8868501179d5c4c2ba7d48bda8f861c", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^7.0.1", - "php": "^7.3 | ^8.0", - "sinkcup/cos-sdk-v5-updated": "^3.0" - }, - "conflict": { - "dscmall/laravel-filesystem-cos": "*" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Dscmall\\Flysystem\\Cos\\CosStorageServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Dscmall\\Flysystem\\Cos\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A Cos storage filesystem for Laravel. 升级依赖版,支持 guzzle 7、Laravel 8", - "support": { - "source": "https://github.com/sinkcup/laravel-filesystem-cos/tree/4.0.0" - }, - "time": "2021-07-08T05:11:55+00:00" - }, - { - "name": "symfony/console", - "version": "v5.3.7", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "8b1008344647462ae6ec57559da166c2bfa5e16a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/8b1008344647462ae6ec57559da166c2bfa5e16a", - "reference": "8b1008344647462ae6ec57559da166c2bfa5e16a", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2", - "symfony/string": "^5.1" - }, - "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0" - }, - "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command line", - "console", - "terminal" - ], - "support": { - "source": "https://github.com/symfony/console/tree/v5.3.7" - }, - "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": "2021-08-25T20:02:16+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v2.5.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "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": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.1" - }, - "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": "2022-01-02T09:53:40+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v5.3.7", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "3bc60d0fba00ae8d1eaa9eb5ab11a2bbdd1fc321" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/3bc60d0fba00ae8d1eaa9eb5ab11a2bbdd1fc321", - "reference": "3bc60d0fba00ae8d1eaa9eb5ab11a2bbdd1fc321", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^4.4|^5.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v5.3.7" - }, - "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": "2021-08-28T15:07:08+00:00" - }, - { - "name": "symfony/finder", - "version": "v5.3.7", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "a10000ada1e600d109a6c7632e9ac42e8bf2fb93" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/a10000ada1e600d109a6c7632e9ac42e8bf2fb93", - "reference": "a10000ada1e600d109a6c7632e9ac42e8bf2fb93", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Finds files and directories via an intuitive fluent interface", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/finder/tree/v5.3.7" - }, - "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": "2021-08-04T21:20:46+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v5.3.7", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "e36c8e5502b4f3f0190c675f1c1f1248a64f04e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e36c8e5502b4f3f0190c675f1c1f1248a64f04e5", - "reference": "e36c8e5502b4f3f0190c675f1c1f1248a64f04e5", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php80": "^1.16" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Defines an object-oriented layer for the HTTP specification", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.3.7" - }, - "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": "2021-08-27T11:20:35+00:00" - }, - { - "name": "symfony/mime", - "version": "v5.3.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "a756033d0a7e53db389618653ae991eba5a19a11" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/a756033d0a7e53db389618653ae991eba5a19a11", - "reference": "a756033d0a7e53db389618653ae991eba5a19a11", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<4.4" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/property-access": "^4.4|^5.1", - "symfony/property-info": "^4.4|^5.1", - "symfony/serializer": "^5.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Mime\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Allows manipulating MIME messages", - "homepage": "https://symfony.com", - "keywords": [ - "mime", - "mime-type" - ], - "support": { - "source": "https://github.com/symfony/mime/tree/v5.3.8" - }, - "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": "2021-09-10T12:30:38+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.23.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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 intl's grapheme_* functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1" - }, - "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": "2021-05-27T12:26:48+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/65bd267525e82759e7d8c4e8ceea44f398838e65", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.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": "2021-05-27T09:27:20+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "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 intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.23.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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 Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" - }, - "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": "2021-05-27T12:26:48+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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 backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.23.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "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 backporting some PHP 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.23.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" - }, - "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": "2021-07-28T13:41:28+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "e66119f3de95efc359483f810c4c3e6436279436" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/e66119f3de95efc359483f810c4c3e6436279436", - "reference": "e66119f3de95efc359483f810c4c3e6436279436", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "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 backporting some PHP 8.1+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.23.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": "2021-05-21T13:25:03+00:00" - }, - { - "name": "symfony/process", - "version": "v5.3.7", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "38f26c7d6ed535217ea393e05634cb0b244a1967" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/38f26c7d6ed535217ea393e05634cb0b244a1967", - "reference": "38f26c7d6ed535217ea393e05634cb0b244a1967", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v5.3.7" - }, - "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": "2021-08-04T21:20:46+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v2.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/container": "^1.1" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.4.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": "2021-04-01T10:43:52+00:00" - }, - { - "name": "symfony/string", - "version": "v5.3.7", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/8d224396e28d30f81969f083a58763b8b9ceb0a5", - "reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" - }, - "require-dev": { - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.php" - ], - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "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": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v5.3.7" - }, - "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": "2021-08-26T08:00:08+00:00" - }, - { - "name": "symfony/translation", - "version": "v5.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "6e69f3551c1a3356cf6ea8d019bf039a0f8b6886" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/6e69f3551c1a3356cf6ea8d019bf039a0f8b6886", - "reference": "6e69f3551c1a3356cf6ea8d019bf039a0f8b6886", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^2.3" - }, - "conflict": { - "symfony/config": "<4.4", - "symfony/dependency-injection": "<5.0", - "symfony/http-kernel": "<5.0", - "symfony/twig-bundle": "<5.0", - "symfony/yaml": "<4.4" - }, - "provide": { - "symfony/translation-implementation": "2.3" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/http-kernel": "^5.0", - "symfony/intl": "^4.4|^5.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^4.4|^5.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to internationalize your application", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/translation/tree/v5.3.9" - }, - "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": "2021-08-26T08:22:53+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v2.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "95c812666f3e91db75385749fe219c5e494c7f95" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/95c812666f3e91db75385749fe219c5e494c7f95", - "reference": "95c812666f3e91db75385749fe219c5e494c7f95", - "shasum": "" - }, - "require": { - "php": ">=7.2.5" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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": "Generic abstractions related to translation", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v2.4.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": "2021-03-23T23:28:01+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v5.3.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "eaaea4098be1c90c8285543e1356a09c8aa5c8da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/eaaea4098be1c90c8285543e1356a09c8aa5c8da", - "reference": "eaaea4098be1c90c8285543e1356a09c8aa5c8da", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<4.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "bin": [ - "Resources/bin/var-dump-server" - ], - "type": "library", - "autoload": { - "files": [ - "Resources/functions/dump.php" - ], - "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "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": "Provides mechanisms for walking through any arbitrary PHP variable", - "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], - "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.3.8" - }, - "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": "2021-09-24T15:59:58+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.3.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "accaddf133651d4b5cf81a119f25296736ffc850" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/accaddf133651d4b5cf81a119f25296736ffc850", - "reference": "accaddf133651d4b5cf81a119f25296736ffc850", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.3-dev" - } - }, - "autoload": { - "psr-4": { - "Dotenv\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk" - }, - { - "name": "Vance Lucas", - "email": "vance@vancelucas.com" - } - ], - "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", - "keywords": [ - "dotenv", - "env", - "environment" - ], - "support": { - "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.3.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-10-02T19:24:42+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "1.5.6", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "80953678b19901e5165c56752d087fc11526017c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/80953678b19901e5165c56752d087fc11526017c", - "reference": "80953678b19901e5165c56752d087fc11526017c", - "shasum": "" - }, - "require": { - "php": ">=7.0.0" - }, - "require-dev": { - "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" - }, - "suggest": { - "ext-intl": "Use Intl for transliterator_transliterate() support" - }, - "type": "library", - "autoload": { - "psr-4": { - "voku\\": "src/voku/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Lars Moelleken", - "homepage": "http://www.moelleken.org/" - } - ], - "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", - "homepage": "https://github.com/voku/portable-ascii", - "keywords": [ - "ascii", - "clean", - "php" - ], - "support": { - "issues": "https://github.com/voku/portable-ascii/issues", - "source": "https://github.com/voku/portable-ascii/tree/1.5.6" - }, - "funding": [ - { - "url": "https://www.paypal.me/moelleken", - "type": "custom" - }, - { - "url": "https://github.com/voku", - "type": "github" - }, - { - "url": "https://opencollective.com/portable-ascii", - "type": "open_collective" - }, - { - "url": "https://www.patreon.com/voku", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", - "type": "tidelift" - } - ], - "time": "2020-11-12T00:07:28+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "composer/xdebug-handler", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/84674dd3a7575ba617f5a76d7e9e29a7d3891339", - "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0", - "psr/log": "^1 || ^2 || ^3" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.55", - "symfony/phpunit-bridge": "^4.2 || ^5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "description": "Restarts a process without Xdebug.", - "keywords": [ - "Xdebug", - "performance" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/2.0.2" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2021-07-31T17:03:58+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "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/1.4.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": "2020-11-10T18:47:58+00:00" - }, - { - "name": "fakerphp/faker", - "version": "v1.16.0", - "source": { - "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "271d384d216e5e5c468a6b28feedf95d49f83b35" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/271d384d216e5e5c468a6b28feedf95d49f83b35", - "reference": "271d384d216e5e5c468a6b28feedf95d49f83b35", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0", - "psr/container": "^1.0 || ^2.0", - "symfony/deprecation-contracts": "^2.2" - }, - "conflict": { - "fzaninotto/faker": "*" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-intl": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.16-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.16.0" - }, - "time": "2021-09-06T14:53:37+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.4.4", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "e01123a0e847d52d186c5eb4b9bf58b0c6d00346" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/e01123a0e847d52d186c5eb4b9bf58b0c6d00346", - "reference": "e01123a0e847d52d186c5eb4b9bf58b0c6d00346", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "description": "Mockery is a simple yet flexible PHP mock object framework", - "homepage": "https://github.com/mockery/mockery", - "keywords": [ - "BDD", - "TDD", - "library", - "mock", - "mock objects", - "mockery", - "stub", - "test", - "test double", - "testing" - ], - "support": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.4.4" - }, - "time": "2021-09-13T15:28:59+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "50953a2691a922aa1769461637869a0a2faa3f53" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/50953a2691a922aa1769461637869a0a2faa3f53", - "reference": "50953a2691a922aa1769461637869a0a2faa3f53", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.0" - }, - "time": "2021-09-20T12:20:58+00:00" - }, - { - "name": "pdepend/pdepend", - "version": "2.10.1", - "source": { - "type": "git", - "url": "https://github.com/pdepend/pdepend.git", - "reference": "30452fdabb3dfca89f4bf977abc44adc5391e062" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pdepend/pdepend/zipball/30452fdabb3dfca89f4bf977abc44adc5391e062", - "reference": "30452fdabb3dfca89f4bf977abc44adc5391e062", - "shasum": "" - }, - "require": { - "php": ">=5.3.7", - "symfony/config": "^2.3.0|^3|^4|^5", - "symfony/dependency-injection": "^2.3.0|^3|^4|^5", - "symfony/filesystem": "^2.3.0|^3|^4|^5" - }, - "require-dev": { - "easy-doc/easy-doc": "0.0.0|^1.2.3", - "gregwar/rst": "^1.0", - "phpunit/phpunit": "^4.8.36|^5.7.27", - "squizlabs/php_codesniffer": "^2.0.0" - }, - "bin": [ - "src/bin/pdepend" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "PDepend\\": "src/main/php/PDepend" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Official version of pdepend to be handled with Composer", - "support": { - "issues": "https://github.com/pdepend/pdepend/issues", - "source": "https://github.com/pdepend/pdepend/tree/2.10.1" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/pdepend/pdepend", - "type": "tidelift" - } - ], - "time": "2021-10-11T12:15:18+00:00" - }, - { - "name": "phar-io/manifest", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" - }, - "time": "2021-07-20T11:28:43+00:00" - }, - { - "name": "phar-io/version", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "bae7c545bef187884426f042434e561ab1ddb182" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.1.0" - }, - "time": "2021-02-23T14:00:09+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@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" - }, - "time": "2021-10-19T17:43:47+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/a12f7e301eb7258bb68acd89d4aefa05c2906cae", - "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "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.5.1" - }, - "time": "2021-10-02T14:08:47+00:00" - }, - { - "name": "phpmd/phpmd", - "version": "2.10.2", - "source": { - "type": "git", - "url": "https://github.com/phpmd/phpmd.git", - "reference": "1bc74db7cf834662d83abebae265be11bb2eec3a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpmd/phpmd/zipball/1bc74db7cf834662d83abebae265be11bb2eec3a", - "reference": "1bc74db7cf834662d83abebae265be11bb2eec3a", - "shasum": "" - }, - "require": { - "composer/xdebug-handler": "^1.0 || ^2.0", - "ext-xml": "*", - "pdepend/pdepend": "^2.10.0", - "php": ">=5.3.9" - }, - "require-dev": { - "easy-doc/easy-doc": "0.0.0 || ^1.3.2", - "ext-json": "*", - "ext-simplexml": "*", - "gregwar/rst": "^1.0", - "mikey179/vfsstream": "^1.6.8", - "phpunit/phpunit": "^4.8.36 || ^5.7.27", - "squizlabs/php_codesniffer": "^2.0" - }, - "bin": [ - "src/bin/phpmd" - ], - "type": "library", - "autoload": { - "psr-0": { - "PHPMD\\": "src/main/php" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Manuel Pichler", - "email": "github@manuel-pichler.de", - "homepage": "https://github.com/manuelpichler", - "role": "Project Founder" - }, - { - "name": "Marc Würth", - "email": "ravage@bluewin.ch", - "homepage": "https://github.com/ravage84", - "role": "Project Maintainer" - }, - { - "name": "Other contributors", - "homepage": "https://github.com/phpmd/phpmd/graphs/contributors", - "role": "Contributors" - } - ], - "description": "PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD.", - "homepage": "https://phpmd.org/", - "keywords": [ - "mess detection", - "mess detector", - "pdepend", - "phpmd", - "pmd" - ], - "support": { - "irc": "irc://irc.freenode.org/phpmd", - "issues": "https://github.com/phpmd/phpmd/issues", - "source": "https://github.com/phpmd/phpmd/tree/2.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/phpmd/phpmd", - "type": "tidelift" - } - ], - "time": "2021-07-22T09:56:23+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "1.14.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", - "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/1.14.0" - }, - "time": "2021-09-10T09:02:12+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.7", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d4c798ed8d51506800b441f7a13ecb0f76f12218", - "reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.12.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": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.7" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-09-17T05:39:03+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:57:25+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c814a05837f2edb0d1471d6e3f4ab3501ca3899a", - "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "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.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.5-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ], - "files": [ - "src/Framework/Assert/Functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.10" - }, - "funding": [ - { - "url": "https://phpunit.de/donate.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-09-25T07:38:51+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", - "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:24:23+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", - "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", - "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.1", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "f268ca40d54617c6e06757f83f699775c9b3ff2e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/f268ca40d54617c6e06757f83f699775c9b3ff2e", - "reference": "f268ca40d54617c6e06757f83f699775c9b3ff2e", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" - }, - "bin": [ - "bin/phpcs", - "bin/phpcbf" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Greg Sherwood", - "role": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-10-11T04:00:11+00:00" - }, - { - "name": "symfony/config", - "version": "v5.3.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "4268f3059c904c61636275182707f81645517a37" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/4268f3059c904c61636275182707f81645517a37", - "reference": "4268f3059c904c61636275182707f81645517a37", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/filesystem": "^4.4|^5.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22" - }, - "conflict": { - "symfony/finder": "<4.4" - }, - "require-dev": { - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/yaml": "^4.4|^5.0" - }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Config\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/config/tree/v5.3.4" - }, - "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": "2021-07-21T12:40:44+00:00" - }, - { - "name": "symfony/dependency-injection", - "version": "v5.3.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "e39c344e06a3ceab531ebeb6c077e6652c4a0829" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/e39c344e06a3ceab531ebeb6c077e6652c4a0829", - "reference": "e39c344e06a3ceab531ebeb6c077e6652c4a0829", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/container": "^1.1.1", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1.6|^2" - }, - "conflict": { - "ext-psr": "<1.1|>=2", - "symfony/config": "<5.3", - "symfony/finder": "<4.4", - "symfony/proxy-manager-bridge": "<4.4", - "symfony/yaml": "<4.4" - }, - "provide": { - "psr/container-implementation": "1.0", - "symfony/service-implementation": "1.0|2.0" - }, - "require-dev": { - "symfony/config": "^5.3", - "symfony/expression-language": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" - }, - "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Allows you to standardize and centralize the way objects are constructed in your application", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.3.8" - }, - "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": "2021-09-21T20:52:44+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v5.3.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "343f4fe324383ca46792cae728a3b6e2f708fb32" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/343f4fe324383ca46792cae728a3b6e2f708fb32", - "reference": "343f4fe324383ca46792cae728a3b6e2f708fb32", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides basic utilities for the filesystem", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.3.4" - }, - "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": "2021-07-21T12:40:44+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8.0", - "ext-dom": "*", - "ext-fileinfo": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-zip": "*" - }, - "platform-dev": [], - "plugin-api-version": "2.3.0" -} diff --git a/config/app.php b/config/app.php deleted file mode 100644 index 6916200..0000000 --- a/config/app.php +++ /dev/null @@ -1,63 +0,0 @@ - 'Coding', - - /* - |-------------------------------------------------------------------------- - | Application Version - |-------------------------------------------------------------------------- - | - | This value determines the "version" your application is currently running - | in. You may want to follow the "Semantic Versioning" - Given a version - | number MAJOR.MINOR.PATCH when an update happens: https://semver.org. - | - */ - - 'version' => app('git.version'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. This can be overridden using - | the global command line "--env" option when calling commands. - | - */ - - 'env' => 'development', - - /* - |-------------------------------------------------------------------------- - | Autoloaded Service Providers - |-------------------------------------------------------------------------- - | - | The service providers listed here will be automatically loaded on the - | request to your application. Feel free to add your own services to - | this array to grant expanded functionality to your applications. - | - */ - - 'providers' => [ - App\Providers\AppServiceProvider::class, - \LaravelFans\Confluence\ConfluenceServiceProvider::class, - \Dscmall\Flysystem\Cos\CosStorageServiceProvider::class, - \Rap2hpoutre\FastExcel\Providers\FastExcelServiceProvider::class, - ], - -]; diff --git a/config/coding.php b/config/coding.php deleted file mode 100644 index d1c3f94..0000000 --- a/config/coding.php +++ /dev/null @@ -1,12 +0,0 @@ - env('CODING_TOKEN'), - 'team_domain' => env('CODING_TEAM_DOMAIN'), - 'project_uri' => env('CODING_PROJECT_URI'), - 'import' => [ - 'provider' => env('CODING_IMPORT_PROVIDER'), - 'data_type' => env('CODING_IMPORT_DATA_TYPE'), - 'data_path' => env('CODING_IMPORT_DATA_PATH'), - ], -]; diff --git a/config/commands.php b/config/commands.php deleted file mode 100644 index 838b65f..0000000 --- a/config/commands.php +++ /dev/null @@ -1,80 +0,0 @@ - NunoMaduro\LaravelConsoleSummary\SummaryCommand::class, - - /* - |-------------------------------------------------------------------------- - | Commands Paths - |-------------------------------------------------------------------------- - | - | This value determines the "paths" that should be loaded by the console's - | kernel. Foreach "path" present on the array provided below the kernel - | will extract all "Illuminate\Console\Command" based class commands. - | - */ - - 'paths' => [app_path('Commands')], - - /* - |-------------------------------------------------------------------------- - | Added Commands - |-------------------------------------------------------------------------- - | - | You may want to include a single command class without having to load an - | entire folder. Here you can specify which commands should be added to - | your list of commands. The console's kernel will try to load them. - | - */ - - 'add' => [ - // .. - ], - - /* - |-------------------------------------------------------------------------- - | Hidden Commands - |-------------------------------------------------------------------------- - | - | Your application commands will always be visible on the application list - | of commands. But you can still make them "hidden" specifying an array - | of commands below. All "hidden" commands can still be run/executed. - | - */ - - 'hidden' => [ - NunoMaduro\LaravelConsoleSummary\SummaryCommand::class, - Symfony\Component\Console\Command\HelpCommand::class, - Illuminate\Console\Scheduling\ScheduleRunCommand::class, - Illuminate\Console\Scheduling\ScheduleFinishCommand::class, - Illuminate\Foundation\Console\VendorPublishCommand::class, - ], - - /* - |-------------------------------------------------------------------------- - | Removed Commands - |-------------------------------------------------------------------------- - | - | Do you have a service provider that loads a list of commands that - | you don't need? No problem. Laravel Zero allows you to specify - | below a list of commands that you don't to see in your app. - | - */ - - 'remove' => [ - // .. - ], - -]; diff --git a/config/confluence.php b/config/confluence.php deleted file mode 100644 index ecf475d..0000000 --- a/config/confluence.php +++ /dev/null @@ -1,9 +0,0 @@ - env('CONFLUENCE_BASE_URI'), - 'auth' => [ - env('CONFLUENCE_AUTH_USERNAME', 'admin'), - env('CONFLUENCE_AUTH_PASSWORD', '123456'), - ] -]; diff --git a/config/filesystems.php b/config/filesystems.php deleted file mode 100644 index 34c78f8..0000000 --- a/config/filesystems.php +++ /dev/null @@ -1,27 +0,0 @@ - 'local', - 'disks' => [ - 'local' => [ - 'driver' => 'local', - 'root' => getcwd(), - ], - 'cos' => [ - 'driver' => 'cos', - 'region' => env('COS_REGION', 'ap-guangzhou'), - 'credentials' => [ - 'appId' => env('COS_APP_ID'), - 'secretId' => env('COS_SECRET_ID'), - 'secretKey' => env('COS_SECRET_KEY'), - 'token' => env('COS_TOKEN'), - ], - 'timeout' => env('COS_TIMEOUT', 60), - 'connect_timeout' => env('COS_CONNECT_TIMEOUT', 60), - 'bucket' => env('COS_BUCKET'), - 'cdn' => env('COS_CDN'), - 'scheme' => env('COS_SCHEME', 'https'), - 'read_from_cdn' => env('COS_READ_FROM_CDN', false), - ], - ], -]; diff --git a/config/logging.php b/config/logging.php deleted file mode 100644 index 658c1c6..0000000 --- a/config/logging.php +++ /dev/null @@ -1,104 +0,0 @@ - env('LOG_CHANNEL', 'stack'), - - /* - |-------------------------------------------------------------------------- - | Log Channels - |-------------------------------------------------------------------------- - | - | Here you may configure the log channels for your application. Out of - | the box, Laravel uses the Monolog PHP logging library. This gives - | you a variety of powerful log handlers / formatters to utilize. - | - | Available Drivers: "single", "daily", "slack", "syslog", - | "errorlog", "monolog", - | "custom", "stack" - | - */ - - 'channels' => [ - 'stack' => [ - 'driver' => 'stack', - 'channels' => ['stderr'], - 'ignore_exceptions' => false, - ], - - 'single' => [ - 'driver' => 'single', - 'path' => storage_path('logs/laravel.log'), - 'level' => 'debug', - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => 'debug', - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => 'critical', - ], - - 'papertrail' => [ - 'driver' => 'monolog', - 'level' => 'debug', - 'handler' => SyslogUdpHandler::class, - 'handler_with' => [ - 'host' => env('PAPERTRAIL_URL'), - 'port' => env('PAPERTRAIL_PORT'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => 'debug', - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => 'debug', - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..f3c310d --- /dev/null +++ b/install.sh @@ -0,0 +1,177 @@ +#!/bin/sh + +# This install script is intended to download and install the latest available +# release of the coding-cli. +# +# It attempts to identify the current platform and an error will be thrown if +# the platform is not supported. +# +# Environment variables: +# - INSTALL_DIRECTORY (optional): defaults to $GOPATH/bin +# - CLI_RELEASE_TAG (optional): defaults to fetching the latest release +# - CLI_OS (optional): use a specific value for OS (mostly for testing) +# - CLI_ARCH (optional): use a specific value for ARCH (mostly for testing) +# +# You can install using this script: +# $ curl https://raw.githubusercontent.com/coding/coding-cli/master/install.sh | sh + +set -e + +RELEASES_URL="https://github.com/coding/coding-cli/releases" + +downloadJSON() { + url="$2" + + if test -x "$(command -v curl)"; then + echo "Curl fetching $url.." + response=$(curl -s -L -w 'HTTPSTATUS:%{http_code}' -H 'Accept: application/json' "$url") + body=$(echo "$response" | sed -e 's/HTTPSTATUS\:.*//g') + code=$(echo "$response" | tr -d '\n' | sed -e 's/.*HTTPSTATUS://') + elif test -x "$(command -v wget)"; then + echo "Wget fetching $url.." + temp=$(mktemp) + body=$(wget -q --header='Accept: application/json' -O - --server-response "$url" 2> "$temp") + code=$(awk '/^ HTTP/{print $2}' < "$temp" | tail -1) + rm "$temp" + else + echo "Neither curl nor wget was available to perform http requests." + exit 1 + fi + if [ "$code" != 200 ]; then + echo "Request failed with code $code" + exit 1 + fi + + eval "$1='$body'" +} + +downloadFile() { + url="$1" + destination="$2" + + if test -x "$(command -v curl)"; then + echo "Curl downloading $url.." + code=$(curl -s -w '%{http_code}' -L "$url" -o "$destination" --progress) + elif test -x "$(command -v wget)"; then + echo "Wget downloading $url.." + code=$(wget -q -O "$destination" --server-response "$url" 2>&1 | awk '/^ HTTP/{print $2}' | tail -1) + else + echo "Neither curl nor wget was available to perform http requests." + exit 1 + fi + + if [ "$code" != 200 ]; then + echo "Request failed with code $code" + exit 1 + fi +} + +findGoBinDirectory() { + EFFECTIVE_GOPATH=$(go env GOPATH) + # CYGWIN: Convert Windows-style path into sh-compatible path + if [ "$OS_CYGWIN" = "1" ]; then + EFFECTIVE_GOPATH=$(cygpath "$EFFECTIVE_GOPATH") + fi + if [ -z "$EFFECTIVE_GOPATH" ]; then + echo "Installation could not determine your \$GOPATH." + exit 1 + fi + if [ -z "$GOBIN" ]; then + GOBIN=$(echo "${EFFECTIVE_GOPATH%%:*}/bin" | sed s#//*#/#g) + fi + if [ ! -d "$GOBIN" ]; then + echo "Installation requires your GOBIN directory $GOBIN to exist. Please create it." + exit 1 + fi + eval "$1='$GOBIN'" +} + +initArch() { + ARCH=$(uname -m) + if [ -n "$CLI_ARCH" ]; then + echo "Using CLI_ARCH" + ARCH="$CLI_ARCH" + fi + case $ARCH in + amd64) ARCH="amd64";; + x86_64) ARCH="amd64";; + i386) ARCH="386";; + ppc64) ARCH="ppc64";; + ppc64le) ARCH="ppc64le";; + *) echo "Architecture ${ARCH} is not supported by this installation script"; exit 1;; + esac + echo "ARCH = $ARCH" +} + +initOS() { + OS=$(uname | tr '[:upper:]' '[:lower:]') + OS_CYGWIN=0 + if [ -n "$CLI_OS" ]; then + echo "Using CLI_OS" + OS="$CLI_OS" + fi + case "$OS" in + darwin) OS='darwin';; + linux) OS='linux';; + freebsd) OS='freebsd';; + mingw*) OS='windows';; + msys*) OS='windows';; + cygwin*) + OS='windows' + OS_CYGWIN=1 + ;; + *) echo "OS ${OS} is not supported by this installation script"; exit 1;; + esac + echo "OS = $OS" +} + +# identify platform based on uname output +initArch +initOS + +# determine install directory if required +if [ -z "$INSTALL_DIRECTORY" ]; then + findGoBinDirectory INSTALL_DIRECTORY +fi +echo "Will install into $INSTALL_DIRECTORY" + +# assemble expected release artifact name +if [ "${OS}" != "linux" ] && { [ "${ARCH}" = "ppc64" ] || [ "${ARCH}" = "ppc64le" ];}; then + # ppc64 and ppc64le are only supported on Linux. + echo "${OS}-${ARCH} is not supported by this installation script" +else + BINARY="coding-cli-${OS}-${ARCH}" +fi + +# add .exe if on windows +if [ "$OS" = "windows" ]; then + BINARY="$BINARY.exe" +fi + +# if CLI_RELEASE_TAG was not provided, assume latest +if [ -z "$CLI_RELEASE_TAG" ]; then + echo "Not set CLI_RELEASE_TAG use latest" + downloadJSON LATEST_RELEASE "$RELEASES_URL/latest" + CLI_RELEASE_TAG=$(echo "${LATEST_RELEASE}" | tr -s '\n' ' ' | sed 's/.*"tag_name":"//' | sed 's/".*//' ) +fi +echo "Release Tag = $CLI_RELEASE_TAG" + +# fetch the real release data to make sure it exists before we attempt a download +downloadJSON RELEASE_DATA "$RELEASES_URL/tag/$CLI_RELEASE_TAG" + +BINARY_URL="$RELEASES_URL/download/$CLI_RELEASE_TAG/$BINARY" +DOWNLOAD_FILE=$(mktemp) + +downloadFile "$BINARY_URL" "$DOWNLOAD_FILE" + +echo "Setting executable permissions." +chmod +x "$DOWNLOAD_FILE" + +INSTALL_NAME="coding-cli" + +if [ "$OS" = "windows" ]; then + INSTALL_NAME="$INSTALL_NAME.exe" +fi + +echo "Moving executable to $INSTALL_DIRECTORY/$INSTALL_NAME" +mv "$DOWNLOAD_FILE" "$INSTALL_DIRECTORY/$INSTALL_NAME" \ No newline at end of file diff --git a/phpmd.xml b/phpmd.xml deleted file mode 100644 index f083827..0000000 --- a/phpmd.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - 3 - - - - - - - - diff --git a/phpunit.xml.dist b/phpunit.xml.dist deleted file mode 100644 index dba39c3..0000000 --- a/phpunit.xml.dist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - ./tests/Feature - - - ./tests/Unit - - - - - ./app - - - diff --git a/tests/CreatesApplication.php b/tests/CreatesApplication.php deleted file mode 100644 index ab92402..0000000 --- a/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/tests/Feature/ConfluenceHtml2MarkdownCommandTest.php b/tests/Feature/ConfluenceHtml2MarkdownCommandTest.php deleted file mode 100755 index 87b7284..0000000 --- a/tests/Feature/ConfluenceHtml2MarkdownCommandTest.php +++ /dev/null @@ -1,18 +0,0 @@ -artisan('confluence:html2markdown', [ - 'html_path' => $this->dataDir . 'confluence/space1/text-demo_65601.html' - ]) - ->expectsOutput($this->dataDir . 'confluence/space1/text-demo_65601.md') - ->assertExitCode(0); - $this->assertEquals("你好\n==\n", file_get_contents($this->dataDir . 'confluence/space1/text-demo_65601.md')); - } -} diff --git a/tests/Feature/IssueCreateCommandTest.php b/tests/Feature/IssueCreateCommandTest.php deleted file mode 100755 index 6edaec6..0000000 --- a/tests/Feature/IssueCreateCommandTest.php +++ /dev/null @@ -1,59 +0,0 @@ -codingToken = $this->faker->md5; - config(['coding.token' => $this->codingToken]); - $this->codingTeamDomain = $this->faker->domainWord; - config(['coding.team_domain' => $this->codingTeamDomain]); - $this->codingProjectUri = $this->faker->slug; - config(['coding.project_uri' => $this->codingProjectUri]); - } - - public function testCreateSuccess() - { - $mock = \Mockery::mock(Issue::class, [])->makePartial(); - $this->instance(Issue::class, $mock); - - $mock->shouldReceive('create')->times(1)->andReturn(json_decode( - file_get_contents($this->dataDir . 'coding/' . 'CreateIssueResponse.json'), - true - )['Response']['Issue']); - - $this->artisan('issue:create') - ->expectsQuestion('类型:', 'REQUIREMENT') - ->expectsQuestion('标题:', $this->faker->title) - ->expectsOutput('创建成功') - ->expectsOutput("https://$this->codingTeamDomain.coding.net/p/$this->codingProjectUri/all/issues/2742") - ->assertExitCode(0); - } - - public function testCreateFailed() - { - $mock = \Mockery::mock(Issue::class, [])->makePartial(); - $this->instance(Issue::class, $mock); - - $mock->shouldReceive('create')->times(1)->andThrow(\Exception::class, json_decode( - file_get_contents($this->dataDir . 'coding/' . 'CreateIssueFailedResponse.json'), - true - )['Response']['Error']['Message']); - - $this->artisan('issue:create') - ->expectsQuestion('类型:', 'REQUIREMENT') - ->expectsQuestion('标题:', $this->faker->title) - ->expectsOutput('Error: issue_custom_field_required') - ->assertExitCode(1); - } -} diff --git a/tests/Feature/IssueImportCommandTest.php b/tests/Feature/IssueImportCommandTest.php deleted file mode 100755 index 797e509..0000000 --- a/tests/Feature/IssueImportCommandTest.php +++ /dev/null @@ -1,212 +0,0 @@ -token = $this->faker->md5; - config(['coding.token' => $this->token]); - $this->teamDomain = $this->faker->domainWord; - config(['coding.team_domain' => $this->teamDomain]); - $this->projectUri = $this->faker->slug; - config(['coding.project_uri' => $this->projectUri]); - } - - public function testImportSuccess() - { - $projectSettingMock = \Mockery::mock(ProjectSetting::class, [])->makePartial(); - $this->instance(ProjectSetting::class, $projectSettingMock); - - $projectSettingMock->shouldReceive('getIssueTypes')->times(1)->andReturn(json_decode( - file_get_contents($this->dataDir . 'coding/' . 'DescribeProjectIssueTypeListResponse.json'), - true - )['Response']['IssueTypes']); - $requirementStatus = json_decode( - file_get_contents($this->dataDir . 'coding/' . 'DescribeProjectIssueStatusListResponse.json'), - true - )['Response']['ProjectIssueStatusList']; - $projectSettingMock->shouldReceive('getIssueStatus')->times(5)->andReturn( - $requirementStatus, - $requirementStatus, - $requirementStatus, - $requirementStatus, - [ - ['IssueStatus' => ['Id' => 22, 'Name' => '处理中']], - ['IssueStatus' => ['Id' => 23, 'Name' => '待处理']], - ] - ); - - $issueMock = \Mockery::mock(Issue::class, [])->makePartial(); - $this->instance(Issue::class, $issueMock); - $iterationMock = \Mockery::mock(Iteration::class, [])->makePartial(); - $this->instance(Iteration::class, $iterationMock); - - $response = json_decode( - file_get_contents($this->dataDir . 'coding/' . 'CreateIssueResponse.json'), - true - )['Response']['Issue']; - $results = []; - for ($i = 1; $i <= 21; $i++) { - $response['Code'] = $i; - $results[] = $response; - } - $iterationMock->shouldReceive('create')->times(2)->andReturn(json_decode( - file_get_contents($this->dataDir . 'coding/' . 'CreateIterationResponse.json'), - true - )['Response']['Iteration']); - - $issueMock->shouldReceive('create')->times(21)->andReturn(...$results); - - $this->artisan('issue:import', ['file' => $this->dataDir . 'coding/scrum-issues.csv']) - ->expectsOutput("https://$this->teamDomain.coding.net/p/$this->projectUri/all/issues/1") - ->expectsOutput("https://$this->teamDomain.coding.net/p/$this->projectUri/all/issues/2") - ->expectsOutput("https://$this->teamDomain.coding.net/p/$this->projectUri/all/issues/3") - ->expectsOutput("https://$this->teamDomain.coding.net/p/$this->projectUri/all/issues/20") - ->expectsOutput("https://$this->teamDomain.coding.net/p/$this->projectUri/all/issues/21") - ->assertExitCode(0); - } - - public function testImportUserStorySuccess() - { - $projectSettingMock = \Mockery::mock(ProjectSetting::class, [])->makePartial(); - $this->instance(ProjectSetting::class, $projectSettingMock); - - $projectSettingMock->shouldReceive('getIssueTypes')->times(1)->andReturn(json_decode( - file_get_contents($this->dataDir . 'coding/' . 'DescribeProjectIssueTypeListResponse.json'), - true - )['Response']['IssueTypes']); - $projectSettingMock->shouldReceive('getIssueStatus')->times(1)->andReturn(json_decode( - file_get_contents($this->dataDir . 'coding/' . 'DescribeProjectIssueStatusListResponse.json'), - true - )['Response']['ProjectIssueStatusList']); - - $issueMock = \Mockery::mock(Issue::class, [])->makePartial(); - $this->instance(Issue::class, $issueMock); - $iterationMock = \Mockery::mock(Iteration::class, [])->makePartial(); - $this->instance(Iteration::class, $iterationMock); - - $response = json_decode( - file_get_contents($this->dataDir . 'coding/' . 'CreateIssueResponse.json'), - true - )['Response']['Issue']; - $response['Code'] = $this->faker->randomNumber(); - $result = $response; - $iterationMock->shouldReceive('create')->times(1)->andReturn(json_decode( - file_get_contents($this->dataDir . 'coding/' . 'CreateIterationResponse.json'), - true - )['Response']['Iteration']); - - $issueMock->shouldReceive('create')->times(1)->withArgs([ - [ - 'ProjectName' => $this->projectUri, - 'Type' => 'REQUIREMENT', - 'IssueTypeId' => 213218, - 'Name' => '用户可通过手机号注册账户', - 'Priority' => "1", - 'IterationCode' => 2746, - 'DueDate' => '2021-10-21', - 'StoryPoint' => '2', - 'StatusId' => 1227037, - ] - ])->andReturn($result); - - $this->artisan('issue:import', ['file' => $this->dataDir . 'coding/scrum-issue-5.csv']) - ->expectsOutput('标题:用户可通过手机号注册账户') - ->expectsOutput("https://$this->teamDomain.coding.net/p/$this->projectUri/all/issues/" . - $result['Code']) - ->assertExitCode(0); - } - - public function testImportSubTask() - { - $projectSettingMock = \Mockery::mock(ProjectSetting::class, [])->makePartial(); - $this->instance(ProjectSetting::class, $projectSettingMock); - - $projectSettingMock->shouldReceive('getIssueTypes')->times(1)->andReturn(json_decode( - file_get_contents($this->dataDir . 'coding/' . 'DescribeProjectIssueTypeListResponse.json'), - true - )['Response']['IssueTypes']); - $projectSettingMock->shouldReceive('getIssueStatus')->times(2)->andReturn(json_decode( - file_get_contents($this->dataDir . 'coding/' . 'DescribeProjectIssueStatusListResponse.json'), - true - )['Response']['ProjectIssueStatusList']); - - $issueMock = \Mockery::mock(Issue::class, [])->makePartial(); - $this->instance(Issue::class, $issueMock); - - $response = json_decode( - file_get_contents($this->dataDir . 'coding/' . 'CreateIssueResponse.json'), - true - )['Response']['Issue']; - - $parentIssue = $response; - $issueMock->shouldReceive('create')->times(1)->withArgs([ - [ - 'ProjectName' => $this->projectUri, - 'Type' => 'REQUIREMENT', - 'IssueTypeId' => 213218, - 'Name' => '用户可通过手机号注册账户', - 'DueDate' => '2021-10-21', - 'StoryPoint' => '2', - 'StatusId' => 1227037, - ] - ])->andReturn($parentIssue); - - $subTask1 = $response; - $subTask1['Code'] = $this->faker->randomNumber(); - $issueMock->shouldReceive('create')->times(1)->withArgs([ - [ - 'ProjectName' => $this->projectUri, - 'Type' => 'SUB_TASK', - 'IssueTypeId' => 213222, - 'Name' => '完成手机号注册的短信验证码发送接口', - 'Priority' => "0", - 'ParentCode' => 2742, - 'StatusId' => 1227058, - ] - ])->andReturn($subTask1); - - $subTask2 = $response; - $subTask2['Code'] = $this->faker->randomNumber(); - $issueMock->shouldReceive('create')->times(1)->withArgs([ - [ - 'ProjectName' => $this->projectUri, - 'Type' => 'SUB_TASK', - 'IssueTypeId' => 213222, - 'Name' => '完成通过手机号注册用户的接口', - 'Priority' => "1", - 'ParentCode' => 2742, - 'StatusId' => 1227058, - ] - ])->andReturn($subTask2); - - $this->artisan('issue:import', ['file' => $this->dataDir . 'coding/scrum-issues-5-6-7.csv']) - ->expectsOutput("https://$this->teamDomain.coding.net/p/$this->projectUri/all/issues/2742") - ->expectsOutput("https://$this->teamDomain.coding.net/p/$this->projectUri/all/issues/" . $subTask1['Code']) - ->expectsOutput("https://$this->teamDomain.coding.net/p/$this->projectUri/all/issues/" . $subTask2['Code']) - ->assertExitCode(0); - } - - public function testImportFailedIssueTypeNotExists() - { - $mock = \Mockery::mock(ProjectSetting::class, [])->makePartial(); - $this->instance(ProjectSetting::class, $mock); - $mock->shouldReceive('getIssueTypes')->times(1)->andReturn([]); - - $this->artisan('issue:import', ['file' => $this->dataDir . 'coding/scrum-issues.csv']) - ->expectsOutput('Error: 「史诗」类型不存在,请在项目设置中添加') - ->assertExitCode(1); - } -} diff --git a/tests/Feature/IterationCreateCommandTest.php b/tests/Feature/IterationCreateCommandTest.php deleted file mode 100755 index 8a8a2b8..0000000 --- a/tests/Feature/IterationCreateCommandTest.php +++ /dev/null @@ -1,48 +0,0 @@ -faker->md5; - config(['coding.token' => $codingToken]); - $this->teamDomain = $this->faker->domainWord; - config(['coding.team_domain' => $this->teamDomain]); - $this->projectUri = $this->faker->slug; - config(['coding.project_uri' => $this->projectUri]); - } - - public function testCreateSuccess() - { - $mock = \Mockery::mock(Iteration::class, [])->makePartial(); - $this->instance(Iteration::class, $mock); - - $mock->shouldReceive('create')->times(1)->andReturn(json_decode( - file_get_contents($this->dataDir . 'coding/' . 'CreateIterationResponse.json'), - true - )['Response']['Iteration']); - - $startAt = $this->faker->date(); - $endAt = Carbon::parse($startAt)->addDays($this->faker->randomNumber())->toDateString(); - $this->artisan('iteration:create', [ - '--goal' => $this->faker->text(), - '--assignee' => $this->faker->randomNumber(), - ]) - ->expectsQuestion('开始时间:', $startAt) - ->expectsQuestion('结束时间:', $endAt) - ->expectsQuestion('标题:', $startAt . '~' . $endAt . ' 迭代') - ->expectsOutput('创建成功') - ->expectsOutput("https://$this->teamDomain.coding.net/p/$this->projectUri/iterations/2746/issues") - ->assertExitCode(0); - } -} diff --git a/tests/Feature/ProjectGetIssueTypesCommandTest.php b/tests/Feature/ProjectGetIssueTypesCommandTest.php deleted file mode 100755 index 85de5ee..0000000 --- a/tests/Feature/ProjectGetIssueTypesCommandTest.php +++ /dev/null @@ -1,39 +0,0 @@ -faker->md5; - config(['coding.token' => $codingToken]); - $codingTeamDomain = $this->faker->domainWord; - config(['coding.team_domain' => $codingTeamDomain]); - $codingProjectUri = $this->faker->slug; - config(['coding.project_uri' => $codingProjectUri]); - } - - public function testCreateSuccess() - { - $mock = \Mockery::mock(ProjectSetting::class, [])->makePartial(); - $this->instance(ProjectSetting::class, $mock); - - $mock->shouldReceive('getIssueTypes')->times(1)->andReturn(json_decode( - file_get_contents($this->dataDir . 'coding/' . 'DescribeProjectIssueTypeListResponse.json'), - true - )['Response']['IssueTypes']); - - $this->artisan('project:get-issue-types') - ->expectsOutput('213217 史诗') - ->expectsOutput('213218 用户故事') - ->expectsOutput('213220 任务') - ->expectsOutput('213221 缺陷') - ->expectsOutput('213222 子工作项') - ->assertExitCode(0); - } -} diff --git a/tests/Feature/WikiImportCommandTest.php b/tests/Feature/WikiImportCommandTest.php deleted file mode 100755 index 5486c5f..0000000 --- a/tests/Feature/WikiImportCommandTest.php +++ /dev/null @@ -1,364 +0,0 @@ -createWikiResponse = json_decode( - file_get_contents($this->dataDir . 'coding/CreateWikiResponse.json'), - true - )['Response']['Data']; - } - - public function testHandleIndex() - { - $data = json_decode('{ - "results": [], - "start": 0, - "limit": 25, - "size": 0 - }', true); - $mock = $this->partialMock(Content::class, function (MockInterface $mock) use ($data) { - $mock->shouldReceive('index')->once()->andReturn($data); - }); - Confluence::setResource($mock); - $this->artisan('wiki:import') - ->expectsQuestion('CODING 团队域名:', $this->faker->domainWord) - ->expectsQuestion('CODING 项目标识:', $this->faker->slug) - ->expectsQuestion('CODING Token:', $this->faker->md5) - ->expectsQuestion('数据来源?', 'Confluence') - ->expectsQuestion('数据类型?', 'API') - ->expectsQuestion('Confluence API 链接:', $this->faker->url) - ->expectsQuestion('Confluence 账号:', $this->faker->userName) - ->expectsQuestion('Confluence 密码:', $this->faker->password) - ->expectsOutput("已获得 0 条数据") - ->assertExitCode(0); - } - - public function testHandleShow() - { - config(['confluence.base_uri' => $this->faker->url]); - config(['confluence.username' => $this->faker->userName]); - config(['confluence.password' => $this->faker->password]); - $codingToken = $this->faker->md5; - config(['coding.token' => $codingToken]); - $codingTeamDomain = $this->faker->domainWord; - config(['coding.team_domain' => $codingTeamDomain]); - $codingProjectUri = $this->faker->slug; - config(['coding.project_uri' => $codingProjectUri]); - - $data = json_decode('{ - "results": [ - { - "id": "65619", - "type": "page", - "status": "current", - "title": "hello-world" - } - ], - "start": 0, - "limit": 25, - "size": 1 - }', true); - - $content = json_decode('{ - "id": "65619", - "type": "page", - "status": "current", - "title": "hello-world", - "body": { - "storage": { - "value": "

Hello World!

\u7b2c\u4e00\u7ae0

h3>1.1 What is Lorem Ipsum?", - "representation": "storage", - "_expandable": { - "content": "/rest/api/content/65619" - } - } - } - }', true); - $mock = $this->partialMock(Content::class, function (MockInterface $mock) use ($data, $content) { - $mock->shouldReceive('index')->once()->andReturn($data); - $mock->shouldReceive('show')->once()->andReturn($content); - }); - Confluence::setResource($mock); - - $codingResponse = $this->createWikiResponse; - $this->mock(Wiki::class, function (MockInterface $mock) use ( - $codingToken, - $codingProjectUri, - $content, - $codingResponse - ) { - $mock->shouldReceive('createWiki')->once()->withArgs([ - $codingToken, - $codingProjectUri, - [ - 'Title' => $content['title'], - 'Content' => $content['body']['storage']['value'], - 'ParentIid' => 0, - ] - ])->andReturn($codingResponse); - }); - - $this->artisan('wiki:import') - ->expectsQuestion('数据来源?', 'Confluence') - ->expectsQuestion('数据类型?', 'API') - ->expectsOutput("已获得 1 条数据") - ->expectsOutput("开始导入 CODING:") - ->expectsOutput("https://${codingTeamDomain}.coding.net/p/$codingProjectUri/wiki/27") - ->assertExitCode(0); - } - - private function setConfig() - { - $codingToken = $this->faker->md5; - config(['coding.token' => $codingToken]); - $codingTeamDomain = $this->faker->domainWord; - config(['coding.team_domain' => $codingTeamDomain]); - $codingProjectUri = $this->faker->slug; - config(['coding.project_uri' => $codingProjectUri]); - } - - public function testHandleConfluenceHtmlDirNotExist() - { - $this->setConfig(); - $this->artisan('wiki:import') - ->expectsQuestion('数据来源?', 'Confluence') - ->expectsQuestion('数据类型?', 'HTML') - ->expectsQuestion('空间导出的 HTML zip 文件路径', '/dev/null/') - ->expectsOutput('文件不存在:/dev/null/index.html') - ->expectsOutput('报错信息汇总:') - ->expectsOutput('文件不存在:/dev/null/index.html') - ->assertExitCode(1); - } - - public function testHandleConfluenceHtmlFileNotExist() - { - $this->setConfig(); - - $this->artisan('wiki:import') - ->expectsQuestion('数据来源?', 'Confluence') - ->expectsQuestion('数据类型?', 'HTML') - ->expectsQuestion('空间导出的 HTML zip 文件路径', '/dev/null/index.html') - ->expectsOutput('页面不存在:/dev/null/index.html') - ->assertExitCode(1); - } - - public function testHandleConfluenceHtmlSuccess() - { - $this->setConfig(); - - // 注意:不能使用 partialMock - // https://laracasts.com/discuss/channels/testing/this-partialmock-doesnt-call-the-constructor - $mock = \Mockery::mock(Wiki::class, [])->makePartial(); - $this->instance(Wiki::class, $mock); - - $mock->shouldReceive('createWikiByUploadZip')->times(4)->andReturn(json_decode( - file_get_contents($this->dataDir . 'coding/' . 'CreateWikiByZipResponse.json'), - true - )['Response']); - $mock->shouldReceive('getImportJobStatus')->times(4)->andReturn(json_decode( - file_get_contents($this->dataDir . 'coding/' . 'DescribeImportJobStatusResponse.json'), - true - )['Response']['Data']); - $mock->shouldReceive('updateTitle')->times(4)->andReturn(true); - - - $mockDisk = \Mockery::mock(Disk::class, [])->makePartial(); - $this->instance(Disk::class, $mockDisk); - $mockDisk->shouldReceive('uploadAttachments')->times(4)->andReturn([]); - - $log = "image-demo_65619.html = 27\n" - . "65591.html = 27\n"; - file_put_contents($this->dataDir . '/confluence/space1/success.log', $log); - $this->artisan('wiki:import', ['--save-markdown' => true, '--clean' => true]) - ->expectsQuestion('数据来源?', 'Confluence') - ->expectsQuestion('数据类型?', 'HTML') - ->expectsQuestion('空间导出的 HTML zip 文件路径', $this->dataDir . 'confluence/space1/') - ->expectsOutput('空间名称:空间 1') - ->expectsOutput('空间标识:space1') - ->expectsOutput('发现 3 个一级页面') - ->expectsOutput("开始导入 CODING:") - ->expectsOutput('页面不存在:' . $this->dataDir . 'confluence/space1/not-found.html') - ->expectsOutput('标题:Image Demo') - ->expectsOutput('上传成功,正在处理,任务 ID:a12353fa-f45b-4af2-83db-666bf9f66615') - ->expectsOutput('标题:你好世界') - ->expectsOutput('上传成功,正在处理,任务 ID:a12353fa-f45b-4af2-83db-666bf9f66615') - ->expectsOutput('发现 2 个子页面') - ->expectsOutput('标题:Attachment Demo') - ->expectsOutput('上传成功,正在处理,任务 ID:a12353fa-f45b-4af2-83db-666bf9f66615') - ->expectsOutput('标题:Text Demo') - ->expectsOutput('上传成功,正在处理,任务 ID:a12353fa-f45b-4af2-83db-666bf9f66615') - ->expectsOutput('报错信息汇总:') - ->expectsOutput('页面不存在:' . $this->dataDir . 'confluence/space1/not-found.html') - ->assertExitCode(1); - $this->assertFileExists($this->dataDir . '/confluence/space1/65591.md'); - $this->assertFileExists($this->dataDir . '/confluence/space1/attachment-demo_65615.md'); - $this->assertFileExists($this->dataDir . '/confluence/space1/text-demo_65601.md'); - unlink($this->dataDir . '/confluence/space1/65591.md'); - unlink($this->dataDir . '/confluence/space1/attachment-demo_65615.md'); - unlink($this->dataDir . '/confluence/space1/text-demo_65601.md'); - $log = "image-demo_65619.html = 27\n" - . "65591.html = 27\n" - . "attachment-demo_65615.html = 27\n" - . "text-demo_65601.html = 27\n"; - $this->assertEquals($log, file_get_contents($this->dataDir . '/confluence/space1/success.log')); - } - - public function testAskNothing() - { - $this->setConfig(); - config(['coding.import.provider' => 'Confluence']); - // TODO config function can set the key not exists, can't test the key not exists in config file - config(['coding.import.data_type' => 'HTML']); - config(['coding.import.data_path' => '/dev/null']); - $this->artisan('wiki:import') - ->expectsOutput('文件不存在:/dev/null/index.html') - ->assertExitCode(1); - } - - public function testHandleConfluenceHtmlZipSuccess() - { - $this->setConfig(); - - // 注意:不能使用 partialMock - // https://laracasts.com/discuss/channels/testing/this-partialmock-doesnt-call-the-constructor - $mock = \Mockery::mock(Wiki::class, [])->makePartial(); - $this->instance(Wiki::class, $mock); - - $mock->shouldReceive('createWikiByUploadZip')->times(5)->andReturn(json_decode( - file_get_contents($this->dataDir . 'coding/' . 'CreateWikiByZipResponse.json'), - true - )['Response']); - $mock->shouldReceive('getImportJobStatus')->times(5)->andReturn(json_decode( - file_get_contents($this->dataDir . 'coding/' . 'DescribeImportJobStatusResponse.json'), - true - )['Response']['Data']); - $mock->shouldReceive('updateTitle')->times(5)->andReturn(true); - - - $mockDisk = \Mockery::mock(Disk::class, [])->makePartial(); - $this->instance(Disk::class, $mockDisk); - $mockDisk->shouldReceive('uploadAttachments')->times(5)->andReturn([]); - - $this->artisan('wiki:import') - ->expectsQuestion('数据来源?', 'Confluence') - ->expectsQuestion('数据类型?', 'HTML') - ->expectsQuestion( - '空间导出的 HTML zip 文件路径', - $this->dataDir . 'confluence/Confluence-space-export-231543-81.html.zip' - ) - ->expectsOutput('空间名称:空间 1') - ->expectsOutput('空间标识:space1') - ->expectsOutput('发现 1 个一级页面') - ->expectsOutput("开始导入 CODING:") - ->expectsOutput('标题:空间 1 Home') - ->expectsOutput('上传成功,正在处理,任务 ID:a12353fa-f45b-4af2-83db-666bf9f66615') - ->expectsOutput('发现 2 个子页面') - ->expectsOutput('标题:hello world') - ->expectsOutput('上传成功,正在处理,任务 ID:a12353fa-f45b-4af2-83db-666bf9f66615') - ->expectsOutput('发现 2 个子页面') - ->expectsOutput('标题:hello') - ->expectsOutput('上传成功,正在处理,任务 ID:a12353fa-f45b-4af2-83db-666bf9f66615') - ->expectsOutput('标题:world') - ->expectsOutput('上传成功,正在处理,任务 ID:a12353fa-f45b-4af2-83db-666bf9f66615') - ->expectsOutput('标题:你好世界') - ->expectsOutput('上传成功,正在处理,任务 ID:a12353fa-f45b-4af2-83db-666bf9f66615') - ->assertExitCode(0); - } - - public function testHandleConfluenceSingleHtmlSuccess() - { - $this->setConfig(); - - // 注意:不能使用 partialMock - // https://laracasts.com/discuss/channels/testing/this-partialmock-doesnt-call-the-constructor - $mock = \Mockery::mock(Wiki::class, [])->makePartial(); - $this->instance(Wiki::class, $mock); - - $mock->shouldReceive('createWikiByUploadZip')->times(1)->andReturn(json_decode( - file_get_contents($this->dataDir . 'coding/' . 'CreateWikiByZipResponse.json'), - true - )['Response']); - $mock->shouldReceive('getImportJobStatus')->times(1)->andReturn(json_decode( - file_get_contents($this->dataDir . 'coding/' . 'DescribeImportJobStatusResponse.json'), - true - )['Response']['Data']); - $mock->shouldReceive('updateTitle')->times(1)->andReturn(true); - - - $this->artisan('wiki:import') - ->expectsQuestion('数据来源?', 'Confluence') - ->expectsQuestion('数据类型?', 'HTML') - ->expectsQuestion('空间导出的 HTML zip 文件路径', $this->dataDir . 'confluence/space1/image-demo_65619.html') - ->expectsOutput('标题:空间 1 : Image Demo') - ->expectsOutput('上传成功,正在处理,任务 ID:a12353fa-f45b-4af2-83db-666bf9f66615') - ->assertExitCode(0); - } - - public function testHandleConfluenceHtmlContinueSuccess() - { - $this->setConfig(); - - // 注意:不能使用 partialMock - // https://laracasts.com/discuss/channels/testing/this-partialmock-doesnt-call-the-constructor - $mock = \Mockery::mock(Wiki::class, [])->makePartial(); - $this->instance(Wiki::class, $mock); - - $mock->shouldReceive('createWikiByUploadZip')->times(2)->andReturn(json_decode( - file_get_contents($this->dataDir . 'coding/' . 'CreateWikiByZipResponse.json'), - true - )['Response']); - $mock->shouldReceive('getImportJobStatus')->times(2)->andReturn(json_decode( - file_get_contents($this->dataDir . 'coding/' . 'DescribeImportJobStatusResponse.json'), - true - )['Response']['Data']); - $mock->shouldReceive('updateTitle')->times(2)->andReturn(true); - - - $mockDisk = \Mockery::mock(Disk::class, [])->makePartial(); - $this->instance(Disk::class, $mockDisk); - $mockDisk->shouldReceive('uploadAttachments')->times(2)->andReturn([]); - - $log = "image-demo_65619.html = 27\n" - . "65591.html = 27\n"; - file_put_contents($this->dataDir . '/confluence/space1/success.log', $log); - $this->artisan('wiki:import') - ->expectsQuestion('数据来源?', 'Confluence') - ->expectsQuestion('数据类型?', 'HTML') - ->expectsQuestion('空间导出的 HTML zip 文件路径', $this->dataDir . 'confluence/space1/') - ->expectsOutput('空间名称:空间 1') - ->expectsOutput('空间标识:space1') - ->expectsOutput('发现 3 个一级页面') - ->expectsOutput("开始导入 CODING:") - ->expectsOutput('页面不存在:' . $this->dataDir . 'confluence/space1/not-found.html') - ->expectsOutput('断点续传,跳过页面:image-demo_65619.html') - ->expectsOutput('断点续传,跳过页面:65591.html') - ->expectsOutput('发现 2 个子页面') - ->expectsOutput('标题:Attachment Demo') - ->expectsOutput('上传成功,正在处理,任务 ID:a12353fa-f45b-4af2-83db-666bf9f66615') - ->expectsOutput('标题:Text Demo') - ->expectsOutput('上传成功,正在处理,任务 ID:a12353fa-f45b-4af2-83db-666bf9f66615') - ->expectsOutput('报错信息汇总:') - ->expectsOutput('页面不存在:' . $this->dataDir . 'confluence/space1/not-found.html') - ->assertExitCode(1); - $log = "image-demo_65619.html = 27\n" - . "65591.html = 27\n" - . "attachment-demo_65615.html = 27\n" - . "text-demo_65601.html = 27\n"; - $this->assertEquals($log, file_get_contents($this->dataDir . '/confluence/space1/success.log')); - unlink($this->dataDir . '/confluence/space1/success.log'); - } -} diff --git a/tests/Feature/WikiUploadCommandTest.php b/tests/Feature/WikiUploadCommandTest.php deleted file mode 100755 index 3462dd9..0000000 --- a/tests/Feature/WikiUploadCommandTest.php +++ /dev/null @@ -1,44 +0,0 @@ -faker->md5; - config(['coding.token' => $codingToken]); - $codingTeamDomain = $this->faker->domainWord; - config(['coding.team_domain' => $codingTeamDomain]); - $codingProjectUri = $this->faker->slug; - config(['coding.project_uri' => $codingProjectUri]); - } - - public function testHandleFileNotExist() - { - $filePath = sys_get_temp_dir() . '/nothing-' . $this->faker->uuid; - $this->artisan('wiki:upload', ['file' => $filePath]) - ->expectsOutput("文件不存在:${filePath}") - ->assertExitCode(1); - } - - public function testHandleConfluenceHtmlSuccess() - { - $mock = \Mockery::mock(Wiki::class, [])->makePartial(); - $this->instance(Wiki::class, $mock); - - $mock->shouldReceive('createWikiByUploadZip')->times(1)->andReturn(json_decode( - file_get_contents($this->dataDir . 'coding/' . 'CreateWikiByZipResponse.json'), - true - )['Response']); - - $filePath = $this->faker->filePath(); - $this->artisan('wiki:upload', ['file' => $filePath]) - ->expectsOutput('上传成功,正在处理,任务 ID:a12353fa-f45b-4af2-83db-666bf9f66615') - ->assertExitCode(0); - } -} diff --git a/tests/TestCase.php b/tests/TestCase.php deleted file mode 100644 index 997045f..0000000 --- a/tests/TestCase.php +++ /dev/null @@ -1,14 +0,0 @@ - '65e5968b5e17d5aaa3f5d33200aca2d1911fe2ad2948b47d899d46e6da1e4', - 'Provide' => 'TENCENT', - 'SecretId' => 'AKIDU-VqQm39vRar-ZrHj1UIE5u2gYJ7gWFcG2ThwFNO9eU1HbyQlZp8vVcQ99', - 'SecretKey' => 'clUYSNeg2es16EILsrF6RyCD3ss6uFLX3Xgc=', - 'UploadLink' => 'https://coding-net-dev-file-123456.cos.ap-shanghai.myqcloud.com', - 'UpToken' => 'EOlMEc2x0xbrFoL9CMy7OqDl5413654938410a360a63207e30dab4655pMKmNJ3t5M-Z8bGt', - 'StorageKey' => 'b5d0d8e0-3aca-11eb-8673-a9b6d94ca755.zip', - 'Time' => 1625579588693, - 'Bucket' => 'coding-net-dev-file-123456', - 'AppId' => '123456', - 'Region' => 'ap-shanghai', - ]; - - protected function setUp(): void - { - parent::setUp(); - $codingToken = $this->faker->md5; - config(['coding.token' => $codingToken]); - $codingTeamDomain = $this->faker->domainWord; - config(['coding.team_domain' => $codingTeamDomain]); - $codingProjectUri = $this->faker->slug; - config(['coding.project_uri' => $codingProjectUri]); - } - - public function testCreateFolder() - { - $responseBody = file_get_contents($this->dataDir . 'coding/CreateFolderResponse.json'); - $codingToken = $this->faker->md5; - $codingProjectUri = $this->faker->slug; - $folderName = 'foo'; - $parentId = $this->faker->randomNumber(); - - $clientMock = $this->getMockBuilder(Client::class)->getMock(); - $clientMock->expects($this->exactly(2)) - ->method('request') - ->with( - 'POST', - 'https://e.coding.net/open-api', - [ - 'headers' => [ - 'Accept' => 'application/json', - 'Authorization' => "token ${codingToken}", - 'Content-Type' => 'application/json' - ], - 'json' => [ - 'Action' => 'CreateFolder', - 'ProjectName' => $codingProjectUri, - 'FolderName' => $folderName, - 'ParentId' => $parentId, - ], - ] - ) - ->willReturn(new Response(200, [], $responseBody)); - $coding = new Disk($clientMock); - $result = $coding->createFolder($codingToken, $codingProjectUri, $folderName, $parentId); - $this->assertTrue(is_numeric($result)); - - $result = $coding->createFolder($codingToken, $codingProjectUri, $folderName, $parentId); - $this->assertTrue(is_numeric($result)); - } - - public function testCreateFile() - { - $responseBody = file_get_contents($this->dataDir . 'coding/CreateFileResponse.json'); - $codingToken = $this->faker->md5; - $codingProjectUri = $this->faker->slug; - $data = [ - "OriginalFileName" => "foo.pdf", - "MimeType" => "application/pdf", - "FileSize" => 123456, - "StorageKey" => "b5d0d8e0-3aca-11eb-8673-a9b6d94ca755.pdf", - "Time" => 1625579588693, - "AuthToken" => "65e5968b5e17d5aaa3f5d33200aca2d1911fe2ad2948b47d899d46e6da1e4", - "FolderId" => 24515861, - ]; - - $clientMock = $this->getMockBuilder(Client::class)->getMock(); - $clientMock->expects($this->once()) - ->method('request') - ->with( - 'POST', - 'https://e.coding.net/open-api', - [ - 'headers' => [ - 'Accept' => 'application/json', - 'Authorization' => "token ${codingToken}", - 'Content-Type' => 'application/json' - ], - 'json' => array_merge([ - 'Action' => 'CreateFile', - 'ProjectName' => $codingProjectUri, - ], $data) - ] - ) - ->willReturn(new Response(200, [], $responseBody)); - $coding = new Disk($clientMock); - $result = $coding->createFile($codingToken, $codingProjectUri, $data); - $this->assertArrayHasKey('FileId', $result); - } -} diff --git a/tests/Unit/CodingIterationTest.php b/tests/Unit/CodingIterationTest.php deleted file mode 100644 index f83f664..0000000 --- a/tests/Unit/CodingIterationTest.php +++ /dev/null @@ -1,23 +0,0 @@ -assertEquals("2021/10/20-10/30 迭代", $result); - - $startAt = Carbon::parse('2021-12-27'); - $endAt = Carbon::parse('2022-01-07'); - $result = Iteration::generateName($startAt, $endAt); - $this->assertEquals("2021/12/27-2022/01/07 迭代", $result); - } -} diff --git a/tests/Unit/CodingWikiTest.php b/tests/Unit/CodingWikiTest.php deleted file mode 100644 index 90d035c..0000000 --- a/tests/Unit/CodingWikiTest.php +++ /dev/null @@ -1,327 +0,0 @@ - '65e5968b5e17d5aaa3f5d33200aca2d1911fe2ad2948b47d899d46e6da1e4', - 'Provide' => 'TENCENT', - 'SecretId' => 'AKIDU-VqQm39vRar-ZrHj1UIE5u2gYJ7gWFcG2ThwFNO9eU1HbyQlZp8vVcQ99', - 'SecretKey' => 'clUYSNeg2es16EILsrF6RyCD3ss6uFLX3Xgc=', - 'UploadLink' => 'https://coding-net-dev-file-123456.cos.ap-shanghai.myqcloud.com', - 'UpToken' => 'EOlMEc2x0xbrFoL9CMy7OqDl5413654938410a360a63207e30dab4655pMKmNJ3t5M-Z8bGt', - 'StorageKey' => 'b5d0d8e0-3aca-11eb-8673-a9b6d94ca755.zip', - 'Time' => 1625579588693, - 'Bucket' => 'coding-net-dev-file-123456', - 'AppId' => '123456', - 'Region' => 'ap-shanghai', - ]; - - protected function setUp(): void - { - parent::setUp(); - $codingToken = $this->faker->md5; - config(['coding.token' => $codingToken]); - $codingTeamDomain = $this->faker->domainWord; - config(['coding.team_domain' => $codingTeamDomain]); - $codingProjectUri = $this->faker->slug; - config(['coding.project_uri' => $codingProjectUri]); - } - - public function testCreateWiki() - { - $responseBody = file_get_contents($this->dataDir . 'coding/CreateWikiResponse.json'); - $codingToken = $this->faker->md5; - $codingProjectUri = $this->faker->slug; - $article = [ - 'Title' => $this->faker->title, - 'Content' => $this->faker->sentence, - 'ParentIid' => $this->faker->randomNumber(), - ]; - - $clientMock = $this->getMockBuilder(Client::class)->getMock(); - $clientMock->expects($this->once()) - ->method('request') - ->with( - 'POST', - 'https://e.coding.net/open-api', - [ - 'headers' => [ - 'Accept' => 'application/json', - 'Authorization' => "token ${codingToken}", - 'Content-Type' => 'application/json' - ], - 'json' => array_merge([ - 'Action' => 'CreateWiki', - 'ProjectName' => $codingProjectUri, - ], $article) - ] - ) - ->willReturn(new Response(200, [], $responseBody)); - $coding = new Wiki($clientMock); - $result = $coding->createWiki($codingToken, $codingProjectUri, $article); - $this->assertEquals(json_decode($responseBody, true)['Response']['Data'], $result); - } - - public function testCreateUploadToken() - { - $responseBody = file_get_contents($this->dataDir . 'coding/CreateUploadTokenResponse.json'); - $codingToken = $this->faker->md5; - $codingProjectUri = $this->faker->slug; - $fileName = $this->faker->word; - - $clientMock = $this->getMockBuilder(Client::class)->getMock(); - $clientMock->expects($this->once()) - ->method('request') - ->with( - 'POST', - 'https://e.coding.net/open-api', - [ - 'headers' => [ - 'Accept' => 'application/json', - 'Authorization' => "token ${codingToken}", - 'Content-Type' => 'application/json' - ], - 'json' => [ - 'Action' => 'CreateUploadToken', - 'ProjectName' => $codingProjectUri, - 'FileName' => $fileName, - ], - ] - ) - ->willReturn(new Response(200, [], $responseBody)); - $coding = new Wiki($clientMock); - $result = $coding->createUploadToken($codingToken, $codingProjectUri, $fileName); - $this->assertEquals(self::$uploadToken, $result); - } - - public function testCreateMarkdownZip() - { - $path = $this->dataDir . 'confluence/space1/'; - $filename = 'image-demo_65619.md'; - $markdown = file_get_contents($path . $filename); - $coding = new Wiki(); - $zipFile = $coding->createMarkdownZip($markdown, $path, $filename, 'hello'); - - $this->assertTrue(file_exists($zipFile)); - $zip = new ZipArchive(); - $zip->open($zipFile); - $this->assertEquals(3, $zip->numFiles); - $this->assertEquals('image-demo_65619.md', $zip->getNameIndex(0)); - $this->assertEquals('attachments/65619/65624.png', $zip->getNameIndex(1)); - $this->assertEquals('attachments/65619/65623.png', $zip->getNameIndex(2)); - } - - public function testCreateMarkdownZipButImageNotExist() - { - $path = $this->dataDir . 'confluence/'; - $filename = 'image-not-exist-demo.md'; - $markdown = file_get_contents($path . $filename); - $coding = new Wiki(); - Log::shouldReceive('error') - ->with('文件不存在', ['filename' => 'not/exist.png', 'title' => 'hello']); - $zipFile = $coding->createMarkdownZip($markdown, $path, $filename, 'hello'); - - $this->assertTrue(file_exists($zipFile)); - $zip = new ZipArchive(); - $zip->open($zipFile); - $this->assertEquals(1, $zip->numFiles); - $this->assertEquals($filename, $zip->getNameIndex(0)); - } - - public function testGetImportJobStatus() - { - $responseBody = file_get_contents($this->dataDir . 'coding/DescribeImportJobStatusResponse.json'); - $codingToken = $this->faker->md5; - $codingProjectUri = $this->faker->slug; - $jobId = '123456ad-f123-4ac2-9586-42ebe5d1234d'; - - $clientMock = $this->getMockBuilder(Client::class)->getMock(); - $clientMock->expects($this->once()) - ->method('request') - ->with( - 'POST', - 'https://e.coding.net/open-api', - [ - 'headers' => [ - 'Accept' => 'application/json', - 'Authorization' => "token ${codingToken}", - 'Content-Type' => 'application/json' - ], - 'json' => [ - 'Action' => 'DescribeImportJobStatus', - 'ProjectName' => $codingProjectUri, - 'JobId' => $jobId, - ], - ] - ) - ->willReturn(new Response(200, [], $responseBody)); - $coding = new Wiki($clientMock); - $result = $coding->getImportJobStatus($codingToken, $codingProjectUri, $jobId); - $this->assertEquals('success', $result['Status']); - $this->assertEquals([27], $result['Iids']); - } - - public function testCreateWikiByZip() - { - $responseBody = file_get_contents($this->dataDir . 'coding/CreateWikiByZipResponse.json'); - $codingToken = $this->faker->md5; - $codingProjectUri = $this->faker->slug; - - $data = [ - 'ParentIid' => $this->faker->randomNumber(), - 'FileName' => $this->faker->word, - ]; - $clientMock = $this->getMockBuilder(Client::class)->getMock(); - $clientMock->expects($this->once()) - ->method('request') - ->with( - 'POST', - 'https://e.coding.net/open-api', - [ - 'headers' => [ - 'Accept' => 'application/json', - 'Authorization' => "token ${codingToken}", - 'Content-Type' => 'application/json' - ], - 'json' => [ - 'Action' => 'CreateWikiByZip', - 'ProjectName' => $codingProjectUri, - 'ParentIid' => $data['ParentIid'], - 'FileName' => $data['FileName'], - 'Key' => self::$uploadToken['StorageKey'], - 'Time' => self::$uploadToken['Time'], - 'AuthToken' => self::$uploadToken['AuthToken'], - ], - ] - ) - ->willReturn(new Response(200, [], $responseBody)); - $coding = new Wiki($clientMock); - $result = $coding->createWikiByZip($codingToken, $codingProjectUri, self::$uploadToken, $data); - $this->assertArrayHasKey('JobId', $result); - } - - public function testCreateWikiByUploadZip() - { - $mock = \Mockery::mock(Wiki::class, [])->makePartial(); - $this->instance(Wiki::class, $mock); - - $mock->shouldReceive('createUploadToken')->times(1)->andReturn(CodingWikiTest::$uploadToken); - $mock->shouldReceive('upload')->times(1)->andReturn(true); - $mock->shouldReceive('createWikiByZip')->times(1)->andReturn(json_decode( - file_get_contents($this->dataDir . 'coding/' . 'CreateWikiByZipResponse.json'), - true - )['Response']); - - $filePath = $this->faker->filePath(); - $result = $mock->createWikiByUploadZip('token', 'project', $filePath, $this->faker->randomNumber()); - $this->assertArrayHasKey('JobId', $result); - } - - public function testGetWiki() - { - $responseBody = file_get_contents($this->dataDir . 'coding/DescribeWikiResponse.json'); - $codingToken = $this->faker->md5; - $codingProjectUri = $this->faker->slug; - $id = $this->faker->randomNumber(); - $version = $this->faker->randomNumber(); - - $clientMock = $this->getMockBuilder(Client::class)->getMock(); - $clientMock->expects($this->once()) - ->method('request') - ->with( - 'POST', - 'https://e.coding.net/open-api', - [ - 'headers' => [ - 'Accept' => 'application/json', - 'Authorization' => "token ${codingToken}", - 'Content-Type' => 'application/json' - ], - 'json' => [ - 'Action' => 'DescribeWiki', - 'ProjectName' => $codingProjectUri, - 'Iid' => $id, - 'VersionId' => $version, - ], - ] - ) - ->willReturn(new Response(200, [], $responseBody)); - $coding = new Wiki($clientMock); - $result = $coding->getWiki($codingToken, $codingProjectUri, $id, $version); - $this->assertEquals(json_decode($responseBody, true)['Response']['Data'], $result); - } - - public function testUpdateTitle() - { - $responseBody = file_get_contents($this->dataDir . 'coding/ModifyWikiTitleResponse.json'); - $codingToken = $this->faker->md5; - $codingProjectUri = $this->faker->slug; - $id = $this->faker->randomNumber(); - $title = 'new title'; - - $clientMock = $this->getMockBuilder(Client::class)->getMock(); - $clientMock->expects($this->once()) - ->method('request') - ->with( - 'POST', - 'https://e.coding.net/open-api', - [ - 'headers' => [ - 'Accept' => 'application/json', - 'Authorization' => "token ${codingToken}", - 'Content-Type' => 'application/json' - ], - 'json' => [ - 'Action' => 'ModifyWikiTitle', - 'ProjectName' => $codingProjectUri, - 'Iid' => $id, - 'Title' => $title, - ], - ] - ) - ->willReturn(new Response(200, [], $responseBody)); - $coding = new Wiki($clientMock); - $result = $coding->updateTitle($codingToken, $codingProjectUri, $id, $title); - $this->assertTrue($result); - } - - public function testReplaceAttachments() - { - $codingAttachments = [ - 'attachments/123/1.pdf' => [ - "FileId" => 1234561, - "FileName" => "foo.pdf", - "ResourceCode" => 11, - ], - 'attachments/123/2.ppt' => [ - "FileId" => 1234562, - "FileName" => "bar.ppt", - "ResourceCode" => 12, - ], - 'attachments/123/3.mp4' => [], - ]; - $markdown = "hello [foo.pdf](attachments/123/1.pdf)\n" - . "world [bar.ppt](attachments/123/2.ppt) [hello.mp4](attachments/123/3.mp4)"; - $expectedMarkdown = "hello #11 `foo.pdf`\n" - . "world #12 `bar.ppt` #0 `此文件迁移失败`\n\n" - . "Attachments\n" - . "---\n\n" - . "- #11 foo.pdf\n" - . "- #12 bar.ppt\n" - . "- #0 此文件迁移失败\n" - ; - $wiki = new Wiki(); - $newMarkdown = $wiki->replaceAttachments($markdown, $codingAttachments); - $this->assertEquals($expectedMarkdown, $newMarkdown); - } -} diff --git a/tests/Unit/ConfluenceIgnoreHtmlTest.php b/tests/Unit/ConfluenceIgnoreHtmlTest.php deleted file mode 100644 index 4e8f1fa..0000000 --- a/tests/Unit/ConfluenceIgnoreHtmlTest.php +++ /dev/null @@ -1,33 +0,0 @@ -dataDir . 'confluence/recent-space-activity-demo.md'); - $newMarkdown = $confluence->htmlFile2Markdown($this->dataDir . 'confluence/recent-space-activity-demo.html'); - $this->assertEquals(trim($markdown), $newMarkdown); - } - - public function testIgnoreSpaceContributors() - { - $confluence = new Confluence(); - $markdown = file_get_contents($this->dataDir . 'confluence/space-contributors-demo.md'); - $newMarkdown = $confluence->htmlFile2Markdown($this->dataDir . 'confluence/space-contributors-demo.html'); - $this->assertEquals(trim($markdown), $newMarkdown); - } - - public function testIgnoreUserLink() - { - $confluence = new Confluence(); - $markdown = file_get_contents($this->dataDir . 'confluence/userlink-demo.md'); - $newMarkdown = $confluence->htmlFile2Markdown($this->dataDir . 'confluence/userlink-demo.html'); - $this->assertEquals(trim($markdown), $newMarkdown); - } -} diff --git a/tests/Unit/ConfluenceTest.php b/tests/Unit/ConfluenceTest.php deleted file mode 100644 index 14b8768..0000000 --- a/tests/Unit/ConfluenceTest.php +++ /dev/null @@ -1,118 +0,0 @@ -parsePageHtml($this->dataDir . 'confluence/space1/text-demo_65601.html', '空间 1'); - $this->assertEquals([ - 'title' => 'Text Demo', - 'content' => '你好', - ], $result); - } - - public function testHtmlFile2Markdown() - { - $confluence = new Confluence(); - $markdown = $confluence->htmlFile2Markdown($this->dataDir . 'confluence/space1/text-demo_65601.html'); - $this->assertEquals("你好\n==", $markdown); - } - - public function testParsePagesTree() - { - $document = new DOMDocument(); - $document->loadHTML('
- -
'); - $xpath = new DOMXPath($document); - $confluence = new Confluence(); - $tree = $confluence->parsePagesTree($xpath, $document->getElementById('foo')); - $this->assertEquals([ - '1.html' => [], - '2.html' => [ - '2.1.html' => [ - '2.1.1.html' => [], - ], - '2.2.html' => [], - ] - ], $tree); - } - - public function testParseAttachmentsIgnoreImages() - { - $confluence = new Confluence(); - $htmlFilePath = $this->dataDir . 'confluence/space1/image-demo_65619.html'; - $markdown = $confluence->htmlFile2Markdown($htmlFilePath); - $attachments = $confluence->parseAttachments($htmlFilePath, $markdown); - $this->assertEquals([], $attachments); - } - - public function testParseAttachmentsNoIgnoreImages() - { - $confluence = new Confluence(); - $htmlFilePath = $this->dataDir . 'confluence/space1/image-demo_65619.html'; - $attachments = $confluence->parseAttachments($htmlFilePath); - $this->assertEquals([ - 'attachments/65619/65623.png' => 'github-ubuntu-16.04.png', - 'attachments/65619/65624.png' => 'coding-logo.png', - ], $attachments); - } - - public function testParseAttachmentsSuccess() - { - $confluence = new Confluence(); - $htmlFilePath = $this->dataDir . 'confluence/space1/attachment-demo_65615.html'; - $markdown = $confluence->htmlFile2Markdown($htmlFilePath); - $attachments = $confluence->parseAttachments($htmlFilePath, $markdown); - $this->assertEquals([ - 'attachments/65615/65616.txt' => 'Lorem Ipsum 2021-06-08T10_55_27+0800.txt' - ], $attachments); - } - - public function testParseAttachmentsOfIndex() - { - $confluence = new Confluence(); - $htmlFilePath = $this->dataDir . 'confluence/space1/index.html'; - $markdown = $confluence->htmlFile2Markdown($htmlFilePath); - $attachments = $confluence->parseAttachments($htmlFilePath, $markdown); - $this->assertEquals([], $attachments); - } - - public function testTable() - { - $confluence = new Confluence(); - $markdown = file_get_contents($this->dataDir . 'confluence/table-demo.md'); - $newMarkdown = $confluence->htmlFile2Markdown($this->dataDir . 'confluence/table-demo.html'); - $this->assertEquals(trim($markdown), $newMarkdown); - } -} diff --git a/tests/data/coding/CreateFileResponse.json b/tests/data/coding/CreateFileResponse.json deleted file mode 100644 index fb2859f..0000000 --- a/tests/data/coding/CreateFileResponse.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "Response" : { - "Data" : { - "FileId" : 24528608, - "FileName" : "foo.pdf", - "ResourceCode" : 183 - }, - "RequestId" : "7f8b8f12-d889-4732-b48a-f563b8e214af" - } -} diff --git a/tests/data/coding/CreateFolderResponse.json b/tests/data/coding/CreateFolderResponse.json deleted file mode 100644 index 98b9fba..0000000 --- a/tests/data/coding/CreateFolderResponse.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Response" : { - "Data" : { - "FolderName" : "foo", - "Id" : 24515861 - }, - "RequestId" : "b43bdea4-0602-4266-e451-dfcc671c91f7" - } -} diff --git a/tests/data/coding/CreateIssueFailedResponse.json b/tests/data/coding/CreateIssueFailedResponse.json deleted file mode 100644 index e236145..0000000 --- a/tests/data/coding/CreateIssueFailedResponse.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Response" : { - "Error" : { - "Code" : "FailedOperation", - "Message" : "issue_custom_field_required" - }, - "RequestId" : "504114e3-bcb7-5b51-6ff7-7bb5cb04f121" - } -} diff --git a/tests/data/coding/CreateIssueResponse.json b/tests/data/coding/CreateIssueResponse.json deleted file mode 100644 index 4e31528..0000000 --- a/tests/data/coding/CreateIssueResponse.json +++ /dev/null @@ -1,124 +0,0 @@ -{ - "Response" : { - "Issue" : { - "Assignee" : { - "Avatar" : "", - "Email" : "", - "GlobalKey" : "", - "Id" : 0, - "Name" : "", - "Phone" : "", - "Status" : 0, - "TeamGlobalKey" : "", - "TeamId" : 0 - }, - "Code" : 2742, - "CompletedAt" : 0, - "CreatedAt" : 1634541907501, - "Creator" : { - "Avatar" : "https://coding-net-production-static-ci.codehub.cn/2cb665a3-bebc-4b09-aa00-2b6df3e33edc.jpg?imageMogr2/auto-orient/format/jpeg/cut/400x400x0x0", - "Email" : "", - "GlobalKey" : "", - "Id" : 183478, - "Name" : "sinkcup", - "Phone" : "", - "Status" : 1, - "TeamGlobalKey" : "", - "TeamId" : 0 - }, - "CustomFields" : [], - "DefectType" : { - "IconUrl" : "", - "Id" : 0, - "Name" : "" - }, - "Description" : "", - "DueDate" : 0, - "Epic" : { - "Assignee" : { - "Avatar" : "", - "Email" : "", - "GlobalKey" : "", - "Id" : 0, - "Name" : "", - "Phone" : "", - "Status" : 0, - "TeamGlobalKey" : "", - "TeamId" : 0 - }, - "Code" : 0, - "IssueStatusId" : 0, - "IssueStatusName" : "", - "Name" : "", - "Priority" : "", - "Type" : "" - }, - "Files" : [], - "IssueStatusId" : 1227034, - "IssueStatusName" : "未开始", - "IssueStatusType" : "TODO", - "IssueTypeDetail" : { - "Description" : "需求是指用户解决某一个问题或达到某一目标所需的软件功能。", - "Id" : 213219, - "IsSystem" : true, - "IssueType" : "REQUIREMENT", - "Name" : "需求" - }, - "IssueTypeId" : 213219, - "Iteration" : { - "Code" : 0, - "Name" : "", - "Status" : "" - }, - "IterationId" : 0, - "Labels" : [], - "Name" : "issue by curl", - "Parent" : { - "Assignee" : { - "Avatar" : "", - "Email" : "", - "GlobalKey" : "", - "Id" : 0, - "Name" : "", - "Phone" : "", - "Status" : 0, - "TeamGlobalKey" : "", - "TeamId" : 0 - }, - "Code" : 0, - "IssueStatusId" : 0, - "IssueStatusName" : "", - "IssueStatusType" : "", - "IssueTypeDetail" : { - "Description" : "", - "Id" : 0, - "IsSystem" : false, - "IssueType" : "", - "Name" : "" - }, - "Name" : "", - "Priority" : "", - "Type" : "" - }, - "ParentType" : "REQUIREMENT", - "Priority" : "0", - "ProjectModule" : { - "Id" : 0, - "Name" : "" - }, - "RequirementType" : { - "Id" : 0, - "Name" : "" - }, - "StartDate" : 0, - "StoryPoint" : "", - "SubTasks" : [], - "ThirdLinks" : [], - "Type" : "REQUIREMENT", - "UpdatedAt" : 1634541907501, - "Watchers" : [], - "WorkingHours" : 0 - }, - "RequestId" : "5b7bae01-f26f-16d7-0d61-c8fa67ea0472" - } -} \ No newline at end of file diff --git a/tests/data/coding/CreateIterationResponse.json b/tests/data/coding/CreateIterationResponse.json deleted file mode 100644 index a73f9c8..0000000 --- a/tests/data/coding/CreateIterationResponse.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "Response" : { - "Iteration" : { - "Assignee" : 0, - "Code" : 2746, - "CompletedCount" : 0, - "CompletedPercent" : 0, - "Completer" : 0, - "CreatedAt" : 1634697259529, - "Creator" : 183478, - "Deleter" : 0, - "EndAt" : -28800000, - "Goal" : "", - "Name" : "it by cli", - "ProcessingCount" : 0, - "StartAt" : -28800000, - "Starter" : 0, - "Status" : "WAIT_PROCESS", - "UpdatedAt" : 1634697259529, - "WaitProcessCount" : 0 - }, - "RequestId" : "58777aa6-e6e4-155a-c99f-415a33615ca6" - } -} diff --git a/tests/data/coding/CreateUploadTokenResponse.json b/tests/data/coding/CreateUploadTokenResponse.json deleted file mode 100644 index 0402a4b..0000000 --- a/tests/data/coding/CreateUploadTokenResponse.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "Response": { - "RequestId": "45a02fd8-95aa-f3c3-84fa-f2752e0edb8a", - "Token": { - "AuthToken": "65e5968b5e17d5aaa3f5d33200aca2d1911fe2ad2948b47d899d46e6da1e4", - "Provide": "TENCENT", - "SecretId": "AKIDU-VqQm39vRar-ZrHj1UIE5u2gYJ7gWFcG2ThwFNO9eU1HbyQlZp8vVcQ99", - "SecretKey": "clUYSNeg2es16EILsrF6RyCD3ss6uFLX3Xgc=", - "UploadLink": "https://coding-net-dev-file-123456.cos.ap-shanghai.myqcloud.com", - "UpToken": "EOlMEc2x0xbrFoL9CMy7OqDl5413654938410a360a63207e30dab4655pMKmNJ3t5M-Z8bGt", - "StorageKey": "b5d0d8e0-3aca-11eb-8673-a9b6d94ca755.zip", - "Time": 1625579588693 - } - } -} \ No newline at end of file diff --git a/tests/data/coding/CreateWikiByZipResponse.json b/tests/data/coding/CreateWikiByZipResponse.json deleted file mode 100644 index d715b54..0000000 --- a/tests/data/coding/CreateWikiByZipResponse.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "Response" : { - "JobId" : "a12353fa-f45b-4af2-83db-666bf9f66615", - "RequestId" : "1237f454-321f-5eb6-dec1-08a25f876999" - } -} \ No newline at end of file diff --git a/tests/data/coding/CreateWikiResponse.json b/tests/data/coding/CreateWikiResponse.json deleted file mode 100644 index 7a30ea1..0000000 --- a/tests/data/coding/CreateWikiResponse.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "Response" : { - "Data" : { - "CanMaintain" : true, - "CanRead" : true, - "Content" : "foo foo", - "CreatedAt" : 1625214079010, - "Creator" : { - "Avatar" : "https://coding-net-production-static-ci.codehub.cn/2cb665a3-aa00-2b6df3e33edc.jpg", - "Email" : "", - "GlobalKey" : "KMRnIKgzbV", - "Id" : 183478, - "Name" : "sinkcup", - "Phone" : "", - "RequestId" : "", - "Status" : "ACTIVE", - "TeamId" : 0 - }, - "CreatorId" : 0, - "CurrentUserRoleId" : 0, - "CurrentVersion" : 1, - "Editor" : { - "Avatar" : "https://coding-net-production-static-ci.codehub.cn/2cb665a3--aa00-2b6df3e33edc.jpg", - "Email" : "", - "GlobalKey" : "KMRnIKgzbV", - "Id" : 183478, - "Name" : "sinkcup", - "Phone" : "", - "RequestId" : "", - "Status" : "ACTIVE", - "TeamId" : 0 - }, - "EditorId" : 0, - "HistoriesCount" : 1, - "HistoryId" : 2707176, - "Html" : "

foo foo

", - "Id" : 1325288, - "Iid" : 27, - "LastVersion" : 1, - "Msg" : "", - "Order" : 2, - "ParentIid" : 0, - "ParentShared" : false, - "ParentVisibleRange" : "PUBLIC", - "Path" : "27", - "Title" : "foo by curl", - "UpdatedAt" : 1625214079014, - "VisibleRange" : "INHERIT" - }, - "RequestId" : "a50c8805-8e1f-fc4d-f965-855e5a3cf709" - } -} \ No newline at end of file diff --git a/tests/data/coding/DescribeImportJobStatusResponse.json b/tests/data/coding/DescribeImportJobStatusResponse.json deleted file mode 100644 index 34c5d58..0000000 --- a/tests/data/coding/DescribeImportJobStatusResponse.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "Response" : { - "Data": { - "JobId": "123456ad-f123-4ac2-9586-42ebe5d1234d", - "Status": "success", - "Iids": [27] - }, - "RequestId": "78d6ecf8-9123-574f-8da9-23bb44c467f1" - } -} \ No newline at end of file diff --git a/tests/data/coding/DescribeImportJobStatusResponseError.json b/tests/data/coding/DescribeImportJobStatusResponseError.json deleted file mode 100644 index 26ea759..0000000 --- a/tests/data/coding/DescribeImportJobStatusResponseError.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Response" : { - "Error" : { - "Code" : "InvalidParameterValue", - "Message" : "资源未找到" - }, - "RequestId" : "cca345b2-762e-c257-da19-b98d27a62ab2" - } -} \ No newline at end of file diff --git a/tests/data/coding/DescribeProjectIssueStatusListResponse.json b/tests/data/coding/DescribeProjectIssueStatusListResponse.json deleted file mode 100644 index 09c446a..0000000 --- a/tests/data/coding/DescribeProjectIssueStatusListResponse.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "Response" : { - "ProjectIssueStatusList" : [ - { - "CreatedAt" : 1634639726000, - "IsDefault" : true, - "IssueStatus" : { - "CreatedAt" : 1572178128000, - "Description" : "", - "Id" : 1227034, - "Index" : 3, - "IsSystem" : true, - "Name" : "未开始", - "Type" : "TODO", - "UpdatedAt" : 1572178128000 - }, - "IssueStatusId" : 1227034, - "IssueType" : "REQUIREMENT", - "Sort" : 0, - "UpdatedAt" : 1634639726000 - }, - { - "CreatedAt" : 1634639726000, - "IsDefault" : false, - "IssueStatus" : { - "CreatedAt" : 1572178128000, - "Description" : "", - "Id" : 1227037, - "Index" : 4, - "IsSystem" : true, - "Name" : "处理中", - "Type" : "PROCESSING", - "UpdatedAt" : 1572178128000 - }, - "IssueStatusId" : 1227037, - "IssueType" : "REQUIREMENT", - "Sort" : 0, - "UpdatedAt" : 1634639726000 - }, - { - "CreatedAt" : 1634639726000, - "IsDefault" : false, - "IssueStatus" : { - "CreatedAt" : 1572178128000, - "Description" : "", - "Id" : 1227040, - "Index" : 5, - "IsSystem" : true, - "Name" : "待验证", - "Type" : "PROCESSING", - "UpdatedAt" : 1572178128000 - }, - "IssueStatusId" : 1227040, - "IssueType" : "REQUIREMENT", - "Sort" : 0, - "UpdatedAt" : 1634639726000 - }, - { - "CreatedAt" : 1634639726000, - "IsDefault" : false, - "IssueStatus" : { - "CreatedAt" : 1572178128000, - "Description" : "", - "Id" : 1227058, - "Index" : 11, - "IsSystem" : true, - "Name" : "已完成", - "Type" : "COMPLETED", - "UpdatedAt" : 1572178128000 - }, - "IssueStatusId" : 1227058, - "IssueType" : "REQUIREMENT", - "Sort" : 0, - "UpdatedAt" : 1634639726000 - } - ], - "RequestId" : "3a8bb049-e28f-01c9-9990-0f17b92952c4" - } -} diff --git a/tests/data/coding/DescribeProjectIssueTypeListResponse.json b/tests/data/coding/DescribeProjectIssueTypeListResponse.json deleted file mode 100644 index d18c46c..0000000 --- a/tests/data/coding/DescribeProjectIssueTypeListResponse.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "Response" : { - "IssueTypes" : [ - { - "Description" : "史诗是一个较大的功能或特性,可以分解为多个较小的需求或任务。通常其需要分多次迭代才可完成。", - "Id" : 213217, - "IsSystem" : true, - "IssueType" : "EPIC", - "Name" : "史诗", - "SplitTargetIssueTypeId" : [], - "SplitType" : "UNSPLITTABLE" - }, - { - "Description" : "用户故事是敏捷框架中最小的工作单元,是从用户角度描述软件如何为其带来特定的价值。", - "Id" : 213218, - "IsSystem" : true, - "IssueType" : "REQUIREMENT", - "Name" : "用户故事", - "SplitTargetIssueTypeId" : [], - "SplitType" : "ALL_REQUIREMENT" - }, - { - "Description" : "任务是指为实现某个目标或需求所进行的具体活动。", - "Id" : 213220, - "IsSystem" : true, - "IssueType" : "MISSION", - "Name" : "任务", - "SplitTargetIssueTypeId" : [], - "SplitType" : "UNSPLITTABLE" - }, - { - "Description" : "缺陷是指软件不符合最初定义的业务需求的现象,缺陷管理用于跟踪这些问题和错误。", - "Id" : 213221, - "IsSystem" : true, - "IssueType" : "DEFECT", - "Name" : "缺陷", - "SplitTargetIssueTypeId" : [], - "SplitType" : "UNSPLITTABLE" - }, - { - "Description" : "在敏捷模式下,将一个事项拆分成更小的块。", - "Id" : 213222, - "IsSystem" : true, - "IssueType" : "SUB_TASK", - "Name" : "子工作项", - "SplitTargetIssueTypeId" : [], - "SplitType" : "UNSPLITTABLE" - } - ], - "RequestId" : "9f7e8405-943d-fb02-96bf-3ee3c63e0fe6" - } -} diff --git a/tests/data/coding/DescribeWikiResponse.json b/tests/data/coding/DescribeWikiResponse.json deleted file mode 100644 index c409b97..0000000 --- a/tests/data/coding/DescribeWikiResponse.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "Response" : { - "Data" : { - "CanMaintain" : true, - "CanRead" : true, - "Content" : "foo foo", - "CreatedAt" : 1626070084000, - "Creator" : { - "Avatar" : "https://coding-net-production-static-ci.codehub.cn/2cb665a3-bebc-4b09-aa00-2b6df3e33edc.jpg?imageMogr2/auto-orient/format/jpeg/cut/400x400x0x0", - "Email" : "", - "GlobalKey" : "KMRnIKgzbV", - "Id" : 183478, - "Name" : "sinkcup", - "Phone" : "", - "RequestId" : "", - "Status" : "ACTIVE", - "TeamId" : 0 - }, - "CreatorId" : 0, - "CurrentUserRoleId" : 0, - "CurrentVersion" : 1, - "Editor" : { - "Avatar" : "https://coding-net-production-static-ci.codehub.cn/2cb665a3-bebc-4b09-aa00-2b6df3e33edc.jpg?imageMogr2/auto-orient/format/jpeg/cut/400x400x0x0", - "Email" : "", - "GlobalKey" : "KMRnIKgzbV", - "Id" : 183478, - "Name" : "sinkcup", - "Phone" : "", - "RequestId" : "", - "Status" : "ACTIVE", - "TeamId" : 0 - }, - "EditorId" : 0, - "HistoriesCount" : 1, - "HistoryId" : 2755733, - "Html" : "

foo foo

", - "Id" : 1362209, - "Iid" : 148, - "LastVersion" : 1, - "Msg" : "", - "Order" : 120, - "ParentIid" : 0, - "ParentShared" : false, - "ParentVisibleRange" : "PUBLIC", - "Path" : "148", - "Title" : "foo by curl", - "UpdatedAt" : 1626070084000, - "VisibleRange" : "INHERIT" - }, - "RequestId" : "555fd71a-8719-f74f-49b2-097726e5ebe9" - } -} diff --git a/tests/data/coding/ModifyWikiTitleResponse.json b/tests/data/coding/ModifyWikiTitleResponse.json deleted file mode 100644 index 5a19a88..0000000 --- a/tests/data/coding/ModifyWikiTitleResponse.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "Response" : { - "Data" : { - "HistoriesCount" : 2, - "HistoryId" : 2756351, - "Id" : 1362209, - "Iid" : 148, - "LastVersion" : 2, - "Path" : "148", - "Title" : "new title", - "UpdatedAt" : 1626075508079, - "VisibleRange" : "INHERIT" - }, - "RequestId" : "0509b996-3b9f-8d7f-8c2f-03613327bb1c" - } -} diff --git a/tests/data/coding/scrum-issue-5.csv b/tests/data/coding/scrum-issue-5.csv deleted file mode 100644 index 26d5df2..0000000 --- a/tests/data/coding/scrum-issue-5.csv +++ /dev/null @@ -1,2 +0,0 @@ -ID,事项类型,标题,描述,状态,创建时间,创建人,更新时间,所属迭代,故事点,处理人,缺陷类型,优先级,截止日期,模块,标签,关注人,开始日期 -5,用户故事,用户可通过手机号注册账户,,处理中,2021-10-19 11:26:37,sinkcup,2021-10-19 11:26:37,第 1 次迭代,2,sinkcup,,中,2021-10-21,,,, diff --git a/tests/data/coding/scrum-issues-5-6-7.csv b/tests/data/coding/scrum-issues-5-6-7.csv deleted file mode 100644 index 65d7046..0000000 --- a/tests/data/coding/scrum-issues-5-6-7.csv +++ /dev/null @@ -1,4 +0,0 @@ -ID,ParentCode,事项类型,标题,描述,状态,创建时间,创建人,更新时间,所属迭代,故事点,处理人,缺陷类型,优先级,截止日期,模块,标签,关注人,开始日期 -7,5,子工作项,完成通过手机号注册用户的接口,,已完成,2021-10-19 11:26:38,sinkcup,2021-10-19 11:26:38,,,,,中,,,,, -6,5,子工作项,完成手机号注册的短信验证码发送接口,,已完成,2021-10-19 11:26:38,sinkcup,2021-10-19 11:26:38,,,,,低,,,,, -5,,用户故事,用户可通过手机号注册账户,,处理中,2021-10-19 11:26:37,sinkcup,2021-10-19 11:26:37,,2,sinkcup,,,2021-10-21,,,, diff --git a/tests/data/coding/scrum-issues.csv b/tests/data/coding/scrum-issues.csv deleted file mode 100644 index 17c86a4..0000000 --- a/tests/data/coding/scrum-issues.csv +++ /dev/null @@ -1,32 +0,0 @@ -ID,ParentCode,事项类型,标题,描述,状态,创建时间,创建人,更新时间,所属迭代,故事点,处理人,缺陷类型,优先级,截止日期,模块,标签,关注人,开始日期 -23,,缺陷,商品详情页中商品价格字体应当显示为红色并且加粗,"步骤: - -测试环境中,打开商品列表页; -点击任意商品进详情页。 -测试结果:商品的价格字体显示为正常大小,颜色为黑色。 -预期结果:商品价格字体为红色加粗。",待处理,2021-10-19 11:26:39,sinkcup,2021-10-19 11:26:39,,,,,中,,,,, -22,,缺陷,登录页输入正确的用户名和密码后提示“用户不存在”,"步骤: -测试环境中,输入URL https://mywebsite.com/login 进入登录页; -输入用户名 Admin 和密码 mypassword; -点击“登录”按钮。 -测试结果:页面提示“用户不存在”。 -预期结果:提示“登录成功”并且页面自动跳转到首页。",处理中,2021-10-19 11:26:39,sinkcup,2021-10-19 11:26:39,,,sinkcup,,中,,,,, -21,,任务,编制新功能的帮助文档并发布,,未开始,2021-10-19 11:26:39,sinkcup,2021-10-19 11:26:39,,,,,中,,,,, -20,,任务,编写脚本将 Excel 中的线下订单转换为商城后台订单,,未开始,2021-10-19 11:26:39,sinkcup,2021-10-19 11:26:39,第 2 次迭代,5,,,中,,,,, -19,,任务,注册腾讯云账户,搭建测试环境和生产环境服务器,,处理中,2021-10-19 11:26:39,sinkcup,2021-10-19 11:26:39,第 1 次迭代,5,sinkcup,,中,,,,, -18,,用户故事,用户可对未支付的订单执行取消订单操作,,未开始,2021-10-19 11:26:39,sinkcup,2021-10-19 11:26:39,,,,,中,,,,, -17,,用户故事,管理员可在商城后台对订单执行发货操作,,未开始,2021-10-19 11:26:39,sinkcup,2021-10-19 11:26:39,第 2 次迭代,3,,,中,,,,, -16,,用户故事,用户可在手机端搜索并查看指定的订单详情,,未开始,2021-10-19 11:26:39,sinkcup,2021-10-19 11:26:39,第 2 次迭代,1,,,中,,,,, -15,,用户故事,通过访问邀请链接可注册成为商城用户,,未开始,2021-10-19 11:26:39,sinkcup,2021-10-19 11:26:39,第 2 次迭代,2,,,中,,,,, -14,,用户故事,管理员可取消未发货且状态异常的订单,,未开始,2021-10-19 11:26:38,sinkcup,2021-10-19 11:26:38,第 2 次迭代,3,,,中,,,,, -13,,用户故事,用户可在“个人信息”中编辑个人基本信息,包括修改密码,,未开始,2021-10-19 11:26:38,sinkcup,2021-10-19 11:26:38,第 2 次迭代,2,sinkcup,,中,,,,, -12,,用户故事,管理员可在商城后台搜索订单,,未开始,2021-10-19 11:26:38,sinkcup,2021-10-19 11:26:38,第 1 次迭代,2,,,中,,,,, -11,,用户故事,管理员可在商城后台手工为用户下单,,未开始,2021-10-19 11:26:38,sinkcup,2021-10-19 11:26:38,第 1 次迭代,5,,,中,,,,, -10,,用户故事,用户可在个人中心的“个人信息”中查看个人信息,,已完成,2021-10-19 11:26:38,sinkcup,2021-10-19 11:26:38,第 1 次迭代,1,,,中,,,,, -9,,用户故事,用户可通过短信验证码登录商城,,处理中,2021-10-19 11:26:38,sinkcup,2021-10-19 11:26:38,第 1 次迭代,1,,,中,,,,, -8,5,子工作项,完成用户注册页面控件并集成后端接口,,处理中,2021-10-19 11:26:38,sinkcup,2021-10-19 11:26:38,第 1 次迭代,,,,中,,,,, -7,5,子工作项,完成通过手机号注册用户的接口,,已完成,2021-10-19 11:26:38,sinkcup,2021-10-19 11:26:38,第 1 次迭代,,,,中,,,,, -6,5,子工作项,完成手机号注册的短信验证码发送接口,,已完成,2021-10-19 11:26:38,sinkcup,2021-10-19 11:26:38,第 1 次迭代,,,,中,,,,, -5,,用户故事,用户可通过手机号注册账户,,处理中,2021-10-19 11:26:37,sinkcup,2021-10-19 11:26:37,第 1 次迭代,2,sinkcup,,中,,,,, -2,,史诗,订单管理,订单管理将实现用户的订单列表查询、订单详情、订单改价、订单地址修改、申请售后、订单取消等功能,未开始,2021-10-19 11:26:37,sinkcup,2021-10-19 11:26:37,,,,,中,,,,, -1,,史诗,用户管理,用户管理将实现用户的注册、邀请、用户查询、个人信息管理、删除用户、注销账户等功能。,未开始,2021-10-19 11:26:37,sinkcup,2021-10-19 11:26:37,,,,,中,,,,, diff --git a/tests/data/confluence/Confluence-space-export-231543-81.html.zip b/tests/data/confluence/Confluence-space-export-231543-81.html.zip deleted file mode 100644 index 5c0e439..0000000 Binary files a/tests/data/confluence/Confluence-space-export-231543-81.html.zip and /dev/null differ diff --git a/tests/data/confluence/image-not-exist-demo.md b/tests/data/confluence/image-not-exist-demo.md deleted file mode 100644 index 8223afb..0000000 --- a/tests/data/confluence/image-not-exist-demo.md +++ /dev/null @@ -1 +0,0 @@ - ![](not/exist.png)world diff --git a/tests/data/confluence/recent-space-activity-demo.html b/tests/data/confluence/recent-space-activity-demo.html deleted file mode 100644 index b97017b..0000000 --- a/tests/data/confluence/recent-space-activity-demo.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - Codestin Search App - - - - - -
-
-
- -

- - 空间 1 : Image Demo - -

-
- -
- -
-

hello

-
-
-

Recent space activity

-
- -
- - -
-
-

-
- -
-
-

Space contributors

-

-
    -
  • - 张三 (59天以前)
  • -
  • - 周1 (340天以前)
  • -
  • - 魏1 (428天以前)
  • -
  • - 李四 (736天以前)
  • -
-
-

-
-

Hello World!

-
- -
-
- -
- - diff --git a/tests/data/confluence/recent-space-activity-demo.md b/tests/data/confluence/recent-space-activity-demo.md deleted file mode 100644 index 32e4048..0000000 --- a/tests/data/confluence/recent-space-activity-demo.md +++ /dev/null @@ -1,4 +0,0 @@ -hello -===== - -Hello World! diff --git a/tests/data/confluence/space-contributors-demo.html b/tests/data/confluence/space-contributors-demo.html deleted file mode 100644 index ac765f4..0000000 --- a/tests/data/confluence/space-contributors-demo.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - Codestin Search App - - - - - -
-
-
- -

- - 空间 1 : Image Demo - -

-
- -
- -
-

hello

-
-
-

Space contributors

-

-
    -
  • - 张三 (59天以前)
  • -
  • - 周1 (340天以前)
  • -
  • - 魏1 (428天以前)
  • -
  • - 李四 (736天以前)
  • -
-
-

-
-

Hello World!

-
- -
-
- -
- - diff --git a/tests/data/confluence/space-contributors-demo.md b/tests/data/confluence/space-contributors-demo.md deleted file mode 100644 index 32e4048..0000000 --- a/tests/data/confluence/space-contributors-demo.md +++ /dev/null @@ -1,4 +0,0 @@ -hello -===== - -Hello World! diff --git a/tests/data/confluence/space1/65591.html b/tests/data/confluence/space1/65591.html deleted file mode 100644 index 7d08528..0000000 --- a/tests/data/confluence/space1/65591.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - Codestin Search App - - - - - -
-
-
- -

- Home Page - - 空间 1 : 你好世界 - -

-
- -
- -
-

Quick navigation

-

When you create new pages in this space, they'll appear here automatically.

-

-

-

-
- -
-
- -
- - diff --git a/tests/data/confluence/space1/attachment-demo_65615.html b/tests/data/confluence/space1/attachment-demo_65615.html deleted file mode 100644 index c9d50e0..0000000 --- a/tests/data/confluence/space1/attachment-demo_65615.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - Codestin Search App - - - - - -
-
-
- -

- - 空间 1 : Attachment Demo - -

-
- -
- -
-

-

This is a demo page with attachment. Lorem Ipsum 2021-06-08T10_55_27+0800.txt -

-
-
-
- 此处没有共享的文件。 -
- - -
-
-
- -
-
-

Attachments:

-
- - -
- - -
-
- -
- - diff --git a/tests/data/confluence/space1/attachments/.DS_Store b/tests/data/confluence/space1/attachments/.DS_Store deleted file mode 100644 index ffca1b7..0000000 Binary files a/tests/data/confluence/space1/attachments/.DS_Store and /dev/null differ diff --git a/tests/data/confluence/space1/attachments/65615/65616.txt b/tests/data/confluence/space1/attachments/65615/65616.txt deleted file mode 100644 index a98fa00..0000000 --- a/tests/data/confluence/space1/attachments/65615/65616.txt +++ /dev/null @@ -1,12 +0,0 @@ -Lorem Ipsum -"Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..." -"无人爱苦,亦无人寻之欲之,乃因其苦..." -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce quis enim egestas diam tincidunt aliquam. Nunc quis lorem in tellus venenatis sollicitudin in vel leo. Ut efficitur enim placerat malesuada tristique. Aliquam finibus odio id turpis lobortis, vitae ultrices neque interdum. Donec congue finibus purus, id auctor purus faucibus ac. Phasellus ultricies nulla eu ex porttitor condimentum. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean nisi metus, lobortis rhoncus euismod in, tempus in risus. Sed sagittis et ante at sollicitudin. Fusce nec urna ante. - -Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Suspendisse eu elit faucibus, aliquam orci sagittis, dignissim erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aenean a interdum urna. Sed at nisl quis sem blandit tempor. Nunc eget mi a enim finibus tincidunt. Suspendisse laoreet est sit amet enim dignissim, et cursus ipsum bibendum. Sed consectetur gravida turpis, et faucibus orci gravida sit amet. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse nulla orci, molestie vitae sapien vitae, commodo finibus nulla. Pellentesque sollicitudin leo et felis dignissim porttitor. Donec nisl lacus, viverra in congue at, tempus ut nunc. Etiam vulputate luctus augue, a vehicula ex convallis sit amet. Nulla facilisi. - -Duis posuere lectus purus, vitae gravida lorem porta et. Vivamus nisl dolor, elementum quis diam at, dictum mollis enim. Nullam tortor lorem, rhoncus quis facilisis quis, scelerisque vel eros. Suspendisse ac lobortis ipsum, eu tincidunt erat. Praesent lacinia, tortor suscipit aliquam iaculis, mi dolor lacinia tellus, vitae aliquam sapien arcu dictum libero. Nullam ullamcorper molestie urna, id auctor libero porta sit amet. Etiam eu quam dui. - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas sit amet molestie diam, a pharetra massa. Pellentesque a maximus sapien, id egestas ipsum. Phasellus ac gravida tortor, feugiat bibendum ante. Praesent posuere faucibus ex, aliquam dapibus lorem tincidunt ut. Quisque vitae tempus ipsum. Integer vestibulum, risus a ullamcorper lacinia, diam turpis iaculis odio, a tincidunt lacus dolor et purus. Nam ipsum sem, posuere placerat nisl et, euismod convallis arcu. Nam molestie, quam vitae rutrum pellentesque, ligula tellus consectetur risus, et tincidunt ipsum ex quis nisi. Duis laoreet tortor ex, et ullamcorper erat dapibus eu. Vivamus sollicitudin pharetra sem, vitae finibus purus posuere eget. Phasellus augue risus, interdum vel viverra non, interdum commodo risus. Sed aliquet nunc ut sodales tincidunt. Cras sapien ipsum, dictum sed nibh non, elementum sollicitudin massa. Suspendisse mollis diam et mollis facilisis. Nunc ut est magna. - -Nullam sollicitudin, nisl vel condimentum hendrerit, ligula odio venenatis nulla, non ultricies nunc nulla non lectus. Aliquam sit amet semper turpis, elementum tempor nisi. Etiam varius porta tortor vitae tempor. Proin ante est, fringilla nec vestibulum in, rhoncus in ante. Nulla sit amet pharetra tortor. Proin mollis, tellus ut placerat lacinia, ex eros auctor lorem, non sodales purus eros sit amet libero. Aenean eu libero enim. Pellentesque feugiat vitae arcu feugiat accumsan. \ No newline at end of file diff --git a/tests/data/confluence/space1/attachments/65619/65623.png b/tests/data/confluence/space1/attachments/65619/65623.png deleted file mode 100644 index 9993d8d..0000000 Binary files a/tests/data/confluence/space1/attachments/65619/65623.png and /dev/null differ diff --git a/tests/data/confluence/space1/attachments/65619/65624.png b/tests/data/confluence/space1/attachments/65619/65624.png deleted file mode 100644 index 4233ece..0000000 Binary files a/tests/data/confluence/space1/attachments/65619/65624.png and /dev/null differ diff --git a/tests/data/confluence/space1/image-demo_65619.html b/tests/data/confluence/space1/image-demo_65619.html deleted file mode 100644 index 4d7c86f..0000000 --- a/tests/data/confluence/space1/image-demo_65619.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - Codestin Search App - - - - - -
-
-
- -

- - 空间 1 : Image Demo - -

-
- -
- -
-

Hello World!

-

第一章

-

hello

-

1.1 What is Lorem Ipsum?

-

Lorem Ipsum is simply dummy text of the - printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever - since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type - specimen book. It has survived not only five centuries, but also the leap into electronic - typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of - Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software - like Aldus PageMaker including versions of Lorem Ipsum.

-

1.2 Why do we use it?

-

It is a long established fact that a reader will be distracted by the - readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has - a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', - making it look like readable English. Many desktop publishing packages and web page editors now use - Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites - still in their infancy. Various versions have evolved over the years, sometimes by accident, - sometimes on purpose (injected humour and the like).

-

-

-

第二章

- -

world

-

-

-

-

-
- -
-
-

Attachments:

-
- -
- - github-ubuntu-16.04.png (image/png) -
- - coding-logo.png (image/png) -
-
-
- - -
-
- -
- - diff --git a/tests/data/confluence/space1/image-demo_65619.md b/tests/data/confluence/space1/image-demo_65619.md deleted file mode 100644 index 66d3aac..0000000 --- a/tests/data/confluence/space1/image-demo_65619.md +++ /dev/null @@ -1,23 +0,0 @@ -Hello World! - -第一章 ---- - -hello - -### 1.1 What is Lorem Ipsum? - -**Lorem Ipsum** is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. - -### 1.2 Why do we use it? - -It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). - -![](attachments/65619/65624.png) - -第二章 ---- - -world - -![](attachments/65619/65623.png)![](attachments/65619/65624.png) diff --git a/tests/data/confluence/space1/images/icons/bullet_blue.gif b/tests/data/confluence/space1/images/icons/bullet_blue.gif deleted file mode 100644 index 25bfa0c..0000000 Binary files a/tests/data/confluence/space1/images/icons/bullet_blue.gif and /dev/null differ diff --git a/tests/data/confluence/space1/images/icons/contenttypes/home_page_16.png b/tests/data/confluence/space1/images/icons/contenttypes/home_page_16.png deleted file mode 100644 index 32888f6..0000000 Binary files a/tests/data/confluence/space1/images/icons/contenttypes/home_page_16.png and /dev/null differ diff --git a/tests/data/confluence/space1/images/icons/profilepics/default.svg b/tests/data/confluence/space1/images/icons/profilepics/default.svg deleted file mode 100644 index 698e2fb..0000000 --- a/tests/data/confluence/space1/images/icons/profilepics/default.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - Codestin Search App - Created with Sketch. - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/data/confluence/space1/index.html b/tests/data/confluence/space1/index.html deleted file mode 100644 index a2836a1..0000000 --- a/tests/data/confluence/space1/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - Codestin Search App - - - - - -
-
-
-

- Space Details: -

-
- -
-
- - - - - - - - - - - - - - - - - -
Keyspace1
Name空间 1
Description
Created byadmin (六月 04, 2021)
-
-
-
- -
-
-

Available Pages:

-
- -
- -
-
- -
- - diff --git a/tests/data/confluence/space1/text-demo_65601.html b/tests/data/confluence/space1/text-demo_65601.html deleted file mode 100644 index c05f62f..0000000 --- a/tests/data/confluence/space1/text-demo_65601.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - Codestin Search App - - - - - -
-
-
- -

- - 空间 1 : Text Demo - -

-
- -
- -
-

你好

-
- -
-
- -
- - diff --git a/tests/data/confluence/table-demo.html b/tests/data/confluence/table-demo.html deleted file mode 100644 index 04f3872..0000000 --- a/tests/data/confluence/table-demo.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - Codestin Search App - - - - - -
-
-
-

- - 表格 demo - -

-
- -
- -
-

hello

-

请求参数:

-
参数名称是否必传说明
order_id申请单ID

 

- -

返回参数说明:

-
参数名称类型说明
codestring申请单号 
created_atdatetime申请时间 
imageslist  图片

 

-
- - - -
- -
- diff --git a/tests/data/confluence/table-demo.md b/tests/data/confluence/table-demo.md deleted file mode 100644 index a919171..0000000 --- a/tests/data/confluence/table-demo.md +++ /dev/null @@ -1,15 +0,0 @@ -hello - -**请求参数:** - -| 参数名称 | 是否必传 | 说明 | -|---|---|---| -| order\_id | 是 | 申请单ID | - -返回参数说明: - - | 参数名称 | 类型 | 说明 | -|---|---|---| -| code | string | 申请单号 | -| created\_at | datetime | 申请时间 | -| images | list | 图片 | diff --git a/tests/data/confluence/userlink-demo.html b/tests/data/confluence/userlink-demo.html deleted file mode 100644 index 280bb3a..0000000 --- a/tests/data/confluence/userlink-demo.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - Codestin Search App - - - - - -
-
-
- -

- - 空间 1 : Image Demo - -

-
- -
- -
- -

world

-
- -
-
- -
- - diff --git a/tests/data/confluence/userlink-demo.md b/tests/data/confluence/userlink-demo.md deleted file mode 100644 index cc628cc..0000000 --- a/tests/data/confluence/userlink-demo.md +++ /dev/null @@ -1 +0,0 @@ -world