├── .npmignore ├── templates └── main.php ├── .eslintrc.js ├── babel.config.js ├── webpack.js ├── .editorconfig ├── .github ├── dependabot.yml └── workflows │ ├── fixup.yml │ ├── lint-php.yml │ ├── dependabot-approve-merge.yml │ ├── lint-eslint.yml │ ├── lint-stylelint.yml │ ├── node.yml │ ├── command-rebase.yml │ └── command-compile.yml ├── .gitignore ├── .php_cs.dist ├── README.md ├── img └── app.svg ├── composer.json ├── Makefile ├── stylelint.config.js ├── appinfo ├── info.xml └── routes.php ├── css └── icons.scss ├── src ├── main.js └── App.vue ├── package.json ├── lib └── Controller │ └── PageController.php ├── js └── vueexample-main.js.LICENSE.txt ├── COPYING └── composer.lock /.npmignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /templates/main.php: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: [ 3 | '@nextcloud' 4 | ] 5 | }; 6 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | const babelConfig = require('@nextcloud/babel-config') 2 | 3 | module.exports = babelConfig 4 | -------------------------------------------------------------------------------- /webpack.js: -------------------------------------------------------------------------------- 1 | const webpackConfig = require('@nextcloud/webpack-vue-config') 2 | 3 | module.exports = webpackConfig 4 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = tab 6 | indent_size = 4 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: npm 4 | directory: "/" 5 | schedule: 6 | interval: daily 7 | timezone: Europe/Paris 8 | open-pull-requests-limit: 10 9 | labels: 10 | - dependencies 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | npm-debug.log* 4 | yarn-debug.log* 5 | yarn-error.log* 6 | 7 | # Editor directories and files 8 | .idea 9 | .vscode 10 | *.suo 11 | *.ntvs* 12 | *.njsproj 13 | *.sln 14 | 15 | .marginalia 16 | 17 | build/ 18 | coverage/ 19 | .php_cs.cache 20 | vendor 21 | -------------------------------------------------------------------------------- /.php_cs.dist: -------------------------------------------------------------------------------- 1 | getFinder() 12 | ->notPath('build') 13 | ->notPath('l10n') 14 | ->notPath('src') 15 | ->notPath('vendor') 16 | ->in(__DIR__); 17 | return $config; 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Vue example app for Nextcloud 2 | 3 | 1. ☁ Clone this into your `apps` folder of your Nextcloud 4 | 2. 👩‍💻 In a terminal, run the command `make dev-setup` to install the dependencies 5 | 3. 🏗 Then to build the Javascript whenever you make changes, run `make build-js` 6 | 4. ✅ Enable the app through the app management of your Nextcloud 7 | 5. 🎉 Partytime! 8 | -------------------------------------------------------------------------------- /img/app.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "skjnldsv/vueexample", 3 | "description": "Lint config for skjnldsv/vueexample", 4 | "license": "MIT", 5 | "config": { 6 | "optimize-autoloader": true, 7 | "classmap-authoritative": true, 8 | "platform": { 9 | "php": "7.3" 10 | } 11 | }, 12 | "scripts": { 13 | "cs:fix": "php-cs-fixer fix", 14 | "cs:check": "php-cs-fixer fix --dry-run --diff", 15 | "lint": "find . -name \\*.php -not -path './vendor/*' -exec php -l \"{}\" \\;" 16 | }, 17 | "require-dev": { 18 | "nextcloud/coding-standard": "^0.5.0" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /.github/workflows/fixup.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | 6 | name: Pull request checks 7 | 8 | on: pull_request 9 | 10 | jobs: 11 | commit-message-check: 12 | name: Block fixup and squash commits 13 | 14 | runs-on: ubuntu-latest 15 | 16 | steps: 17 | - name: Run check 18 | uses: xt0rted/block-autosquash-commits-action@v2 19 | with: 20 | repo-token: ${{ secrets.GITHUB_TOKEN }} 21 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | all: dev-setup lint build-js-production test 2 | 3 | # Dev env management 4 | dev-setup: clean clean-dev npm-init 5 | 6 | npm-init: 7 | npm ci 8 | 9 | npm-update: 10 | npm update 11 | 12 | # Building 13 | build-js: 14 | npm run dev 15 | 16 | build-js-production: 17 | npm run build 18 | 19 | watch-js: 20 | npm run watch 21 | 22 | # Testing 23 | test: 24 | npm run test 25 | 26 | test-watch: 27 | npm run test:watch 28 | 29 | test-coverage: 30 | npm run test:coverage 31 | 32 | # Linting 33 | lint: 34 | npm run lint 35 | 36 | lint-fix: 37 | npm run lint:fix 38 | 39 | # Style linting 40 | stylelint: 41 | npm run stylelint 42 | 43 | stylelint-fix: 44 | npm run stylelint:fix 45 | 46 | # Cleaning 47 | clean: 48 | rm -f js/* 49 | 50 | clean-dev: 51 | rm -rf node_modules 52 | 53 | -------------------------------------------------------------------------------- /stylelint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: 'stylelint-config-recommended-scss', 3 | rules: { 4 | indentation: 'tab', 5 | 'selector-type-no-unknown': null, 6 | 'number-leading-zero': null, 7 | 'rule-empty-line-before': [ 8 | 'always', 9 | { 10 | ignore: ['after-comment', 'inside-block'], 11 | } 12 | ], 13 | 'declaration-empty-line-before': [ 14 | 'never', 15 | { 16 | ignore: ['after-declaration'], 17 | }, 18 | ], 19 | 'comment-empty-line-before': null, 20 | 'selector-type-case': null, 21 | 'selector-list-comma-newline-after': null, 22 | 'no-descending-specificity': null, 23 | 'string-quotes': 'single', 24 | 'selector-pseudo-element-no-unknown': [ 25 | true, 26 | { 27 | ignorePseudoElements: ['v-deep'], 28 | }, 29 | ], 30 | }, 31 | plugins: ['stylelint-scss'], 32 | } 33 | -------------------------------------------------------------------------------- /.github/workflows/lint-php.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | 6 | name: Lint 7 | 8 | on: 9 | pull_request: 10 | push: 11 | branches: 12 | - master 13 | - stable* 14 | 15 | jobs: 16 | lint: 17 | runs-on: ubuntu-latest 18 | strategy: 19 | matrix: 20 | php-versions: ["7.3", "7.4", "8.0"] 21 | 22 | name: php 23 | 24 | steps: 25 | - name: Checkout 26 | uses: actions/checkout@v2 27 | 28 | - name: Set up php ${{ matrix.php-versions }} 29 | uses: shivammathur/setup-php@v2 30 | with: 31 | php-version: ${{ matrix.php-versions }} 32 | coverage: none 33 | 34 | - name: Lint 35 | run: composer run lint 36 | -------------------------------------------------------------------------------- /.github/workflows/dependabot-approve-merge.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | 6 | name: Dependabot 7 | 8 | on: 9 | pull_request_target: 10 | branches: 11 | - master 12 | - stable* 13 | 14 | jobs: 15 | auto-merge: 16 | runs-on: ubuntu-latest 17 | if: github.actor == 'dependabot[bot]' 18 | 19 | steps: 20 | # Github actions bot approve 21 | - uses: hmarr/auto-approve-action@v2 22 | with: 23 | github-token: ${{ secrets.GITHUB_TOKEN }} 24 | 25 | # Nextcloud bot approve and merge request 26 | - uses: ahmadnassri/action-dependabot-auto-merge@v2 27 | with: 28 | target: minor 29 | github-token: ${{ secrets.DEPENDABOT_AUTOMERGE_TOKEN }} 30 | -------------------------------------------------------------------------------- /appinfo/info.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | vueexample 5 | Vue example 6 | A vue example app 7 | 8 | 6.0.0 9 | agpl 10 | Julius Härtl 11 | John Molakvoæ 12 | VueExample 13 | tools 14 | https://github.com 15 | 16 | 17 | 18 | 19 | 20 | VueExample 21 | vueexample.page.index 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /css/icons.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * @copyright Copyright (c) 2019 John Molakvoæ 4 | * 5 | * @author John Molakvoæ 6 | * 7 | * @license GNU AGPL version 3 or any later version 8 | * 9 | * This program is free software: you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * This program is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General Public License 20 | * along with this program. If not, see . 21 | * 22 | */ 23 | 24 | @include icon-black-white('vueexample', 'app', 1); 25 | -------------------------------------------------------------------------------- /appinfo/routes.php: -------------------------------------------------------------------------------- 1 | 4 | * 5 | * @author John Molakvoæ 6 | * 7 | * @license GNU AGPL version 3 or any later version 8 | * 9 | * This program is free software: you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * This program is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General Public License 20 | * along with this program. If not, see . 21 | * 22 | */ 23 | 24 | return [ 25 | 'routes' => [ 26 | ['name' => 'page#index', 'url' => '/', 'verb' => 'GET'], 27 | ['name' => 'page#mail', 'url' => '/mail', 'verb' => 'GET'], 28 | ] 29 | ]; 30 | -------------------------------------------------------------------------------- /.github/workflows/lint-eslint.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | 6 | name: Lint 7 | 8 | on: 9 | pull_request: 10 | push: 11 | branches: 12 | - master 13 | - stable* 14 | 15 | jobs: 16 | lint: 17 | runs-on: ubuntu-latest 18 | 19 | name: eslint 20 | 21 | steps: 22 | - name: Checkout 23 | uses: actions/checkout@v2 24 | 25 | - name: Read package.json node and npm engines version 26 | uses: skjnldsv/read-package-engines-version-actions@v1.1 27 | id: versions 28 | with: 29 | fallbackNode: '^12' 30 | fallbackNpm: '^6' 31 | 32 | - name: Set up node ${{ steps.versions.outputs.nodeVersion }} 33 | uses: actions/setup-node@v2 34 | with: 35 | node-version: ${{ steps.versions.outputs.nodeVersion }} 36 | 37 | - name: Set up npm ${{ steps.versions.outputs.npmVersion }} 38 | run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}" 39 | 40 | - name: Install dependencies 41 | run: npm ci 42 | 43 | - name: Lint 44 | run: npm run lint 45 | -------------------------------------------------------------------------------- /.github/workflows/lint-stylelint.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | 6 | name: Lint 7 | 8 | on: 9 | pull_request: 10 | push: 11 | branches: 12 | - master 13 | - stable* 14 | 15 | jobs: 16 | lint: 17 | runs-on: ubuntu-latest 18 | 19 | name: stylelint 20 | 21 | steps: 22 | - name: Checkout 23 | uses: actions/checkout@v2 24 | 25 | - name: Read package.json node and npm engines version 26 | uses: skjnldsv/read-package-engines-version-actions@v1.1 27 | id: versions 28 | with: 29 | fallbackNode: '^12' 30 | fallbackNpm: '^6' 31 | 32 | - name: Set up node ${{ steps.versions.outputs.nodeVersion }} 33 | uses: actions/setup-node@v2 34 | with: 35 | node-version: ${{ steps.versions.outputs.nodeVersion }} 36 | 37 | - name: Set up npm ${{ steps.versions.outputs.npmVersion }} 38 | run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}" 39 | 40 | - name: Install dependencies 41 | run: npm ci 42 | 43 | - name: Lint 44 | run: npm run stylelint 45 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @copyright Copyright (c) 2018 John Molakvoæ 3 | * 4 | * @author John Molakvoæ 5 | * 6 | * @license GNU AGPL version 3 or any later version 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Affero General Public License as 10 | * published by the Free Software Foundation, either version 3 of the 11 | * License, or (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU Affero General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Affero General Public License 19 | * along with this program. If not, see . 20 | * 21 | */ 22 | import Vue from 'vue' 23 | import { translate as t, translatePlural as n } from '@nextcloud/l10n' 24 | 25 | import App from './App' 26 | 27 | // Adding translations to the whole app 28 | Vue.mixin({ 29 | methods: { 30 | t, 31 | n, 32 | }, 33 | }) 34 | 35 | export default new Vue({ 36 | el: '#content', 37 | render: h => h(App), 38 | }) 39 | -------------------------------------------------------------------------------- /.github/workflows/node.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | 6 | name: Node 7 | 8 | on: 9 | pull_request: 10 | push: 11 | branches: 12 | - master 13 | - stable* 14 | 15 | jobs: 16 | build: 17 | runs-on: ubuntu-latest 18 | 19 | name: node 20 | steps: 21 | - name: Checkout 22 | uses: actions/checkout@v2 23 | 24 | - name: Read package.json node and npm engines version 25 | uses: skjnldsv/read-package-engines-version-actions@v1.1 26 | id: versions 27 | with: 28 | fallbackNode: '^12' 29 | fallbackNpm: '^6' 30 | 31 | - name: Set up node ${{ steps.versions.outputs.nodeVersion }} 32 | uses: actions/setup-node@v2 33 | with: 34 | node-version: ${{ steps.versions.outputs.nodeVersion }} 35 | 36 | - name: Set up npm ${{ steps.versions.outputs.npmVersion }} 37 | run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}" 38 | 39 | - name: Install dependencies & build 40 | run: | 41 | npm ci 42 | npm run build --if-present 43 | 44 | - name: Check webpack build changes 45 | run: | 46 | bash -c "[[ ! \"`git status --porcelain `\" ]] || exit 1" 47 | 48 | - name: Show changes on failure 49 | if: failure() 50 | run: | 51 | git status 52 | git --no-pager diff 53 | -------------------------------------------------------------------------------- /.github/workflows/command-rebase.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | 6 | name: Rebase command 7 | 8 | on: 9 | issue_comment: 10 | types: created 11 | 12 | jobs: 13 | rebase: 14 | runs-on: ubuntu-latest 15 | 16 | # On pull requests and if the comment starts with `/rebase` 17 | if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/rebase') 18 | 19 | steps: 20 | - name: Add reaction on start 21 | uses: peter-evans/create-or-update-comment@v1 22 | with: 23 | token: ${{ secrets.COMMAND_BOT_PAT }} 24 | repository: ${{ github.event.repository.full_name }} 25 | comment-id: ${{ github.event.comment.id }} 26 | reaction-type: "+1" 27 | 28 | - name: Checkout the latest code 29 | uses: actions/checkout@v2 30 | with: 31 | fetch-depth: 0 32 | token: ${{ secrets.COMMAND_BOT_PAT }} 33 | 34 | - name: Automatic Rebase 35 | uses: cirrus-actions/rebase@1.5 36 | env: 37 | GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }} 38 | 39 | - name: Add reaction on failure 40 | uses: peter-evans/create-or-update-comment@v1 41 | if: failure() 42 | with: 43 | token: ${{ secrets.COMMAND_BOT_PAT }} 44 | repository: ${{ github.event.repository.full_name }} 45 | comment-id: ${{ github.event.comment.id }} 46 | reaction-type: "-1" 47 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vueexample", 3 | "description": "A simple Nextcloud app using vue-components", 4 | "version": "6.0.0", 5 | "author": "John Molakvoæ ", 6 | "contributors": [ 7 | "John Molakvoæ " 8 | ], 9 | "keywords": [ 10 | "nextcloud", 11 | "vueexample", 12 | "app", 13 | "dev", 14 | "vuejs" 15 | ], 16 | "bugs": { 17 | "url": "https://github.com/skjnldsv/vueexample/issues" 18 | }, 19 | "repository": { 20 | "url": "https://github.com/skjnldsv/vueexample", 21 | "type": "git" 22 | }, 23 | "homepage": "https://github.com/skjnldsv/vueexample", 24 | "license": "agpl", 25 | "private": true, 26 | "scripts": { 27 | "build": "NODE_ENV=production webpack --progress --config webpack.js", 28 | "dev": "NODE_ENV=development webpack --progress --config webpack.js", 29 | "watch": "NODE_ENV=development webpack --progress --watch --config webpack.js", 30 | "lint": "eslint --ext .js,.vue src", 31 | "lint:fix": "eslint --ext .js,.vue src --fix", 32 | "stylelint": "stylelint src", 33 | "stylelint:fix": "stylelint src --fix" 34 | }, 35 | "dependencies": { 36 | "@nextcloud/l10n": "^1.4.1", 37 | "@nextcloud/vue": "^4.0.2", 38 | "vue": "^2.6.12" 39 | }, 40 | "browserslist": [ 41 | "extends @nextcloud/browserslist-config" 42 | ], 43 | "engines": { 44 | "node": ">=14.0.0", 45 | "npm": ">=7.0.0" 46 | }, 47 | "devDependencies": { 48 | "@nextcloud/babel-config": "^1.0.0", 49 | "@nextcloud/browserslist-config": "^2.1.0", 50 | "@nextcloud/eslint-config": "^6.0.0", 51 | "@nextcloud/stylelint-config": "^1.0.0-beta.0", 52 | "@nextcloud/webpack-vue-config": "^4.0.3" 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /lib/Controller/PageController.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * @author John Molakvoæ 8 | * 9 | * @license GNU AGPL version 3 or any later version 10 | * 11 | * This program is free software: you can redistribute it and/or modify 12 | * it under the terms of the GNU Affero General Public License as 13 | * published by the Free Software Foundation, either version 3 of the 14 | * License, or (at your option) any later version. 15 | * 16 | * This program is distributed in the hope that it will be useful, 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | * GNU Affero General Public License for more details. 20 | * 21 | * You should have received a copy of the GNU Affero General Public License 22 | * along with this program. If not, see . 23 | * 24 | */ 25 | 26 | namespace OCA\VueExample\Controller; 27 | 28 | use OCP\IRequest; 29 | use OCP\AppFramework\Http\TemplateResponse; 30 | use OCP\AppFramework\Controller; 31 | use OCP\Util; 32 | 33 | class PageController extends Controller { 34 | protected $appName; 35 | 36 | public function __construct($appName, IRequest $request) { 37 | parent::__construct($appName, $request); 38 | $this->appName = $appName; 39 | } 40 | 41 | /** 42 | * @NoAdminRequired 43 | * @NoCSRFRequired 44 | */ 45 | public function index() { 46 | Util::addScript($this->appName, 'vueexample-main'); 47 | Util::addStyle($this->appName, 'icons'); 48 | 49 | $response = new TemplateResponse($this->appName, $this->appName . '-main'); 50 | return $response; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /.github/workflows/command-compile.yml: -------------------------------------------------------------------------------- 1 | name: Compile Command 2 | on: 3 | issue_comment: 4 | types: [created] 5 | 6 | jobs: 7 | init: 8 | runs-on: ubuntu-latest 9 | 10 | # On pull requests and if the comment starts with `/compile` 11 | if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/compile') 12 | 13 | outputs: 14 | git_path: ${{ steps.git-path.outputs.path }} 15 | arg1: ${{ steps.command.outputs.arg1 }} 16 | arg2: ${{ steps.command.outputs.arg2 }} 17 | head_ref: ${{ steps.comment-branch.outputs.head_ref }} 18 | 19 | steps: 20 | - name: Check actor permission 21 | uses: skjnldsv/check-actor-permission@v2 22 | with: 23 | require: write 24 | 25 | - name: Add reaction on start 26 | uses: peter-evans/create-or-update-comment@v1 27 | with: 28 | token: ${{ secrets.COMMAND_BOT_PAT }} 29 | repository: ${{ github.event.repository.full_name }} 30 | comment-id: ${{ github.event.comment.id }} 31 | reaction-type: "+1" 32 | 33 | - name: Parse command 34 | uses: skjnldsv/parse-command-comment@master 35 | id: command 36 | 37 | # Init path depending on which command is run 38 | - name: Init path 39 | id: git-path 40 | run: | 41 | if ${{ startsWith(steps.command.outputs.arg1, '/') }}; then 42 | echo "::set-output name=path::${{ github.workspace }}${{steps.command.outputs.arg1}}" 43 | else 44 | echo "::set-output name=path::${{ github.workspace }}${{steps.command.outputs.arg2}}" 45 | fi 46 | 47 | - name: Init branch 48 | uses: xt0rted/pull-request-comment-branch@v1 49 | id: comment-branch 50 | 51 | process: 52 | runs-on: ubuntu-latest 53 | needs: init 54 | 55 | steps: 56 | - name: Checkout ${{ needs.init.outputs.head_ref }} 57 | # https://github.com/actions/checkout/issues/417 58 | uses: actions/checkout@v2.1.1 59 | with: 60 | token: ${{ secrets.COMMAND_BOT_PAT }} 61 | fetch-depth: 0 62 | ref: ${{ needs.init.outputs.head_ref }} 63 | 64 | - name: Read package.json node and npm engines version 65 | uses: skjnldsv/read-package-engines-version-actions@v1 66 | id: package-engines-versions 67 | with: 68 | fallbackNode: '^12' 69 | fallbackNpm: '^6' 70 | 71 | - name: Set up node ${{ steps.package-engines-versions.outputs.nodeVersion }} 72 | uses: actions/setup-node@v2 73 | with: 74 | node-version: ${{ steps.package-engines-versions.outputs.nodeVersion }} 75 | cache: npm 76 | 77 | - name: Set up npm ${{ steps.package-engines-versions.outputs.npmVersion }} 78 | run: npm i -g npm@"${{ steps.package-engines-versions.outputs.npmVersion }}" 79 | 80 | - name: Install dependencies & build 81 | run: | 82 | npm ci 83 | npm run build --if-present 84 | 85 | - name: Commit and push default 86 | if: ${{ needs.init.outputs.arg1 != 'fixup' && needs.init.outputs.arg1 != 'amend' }} 87 | run: | 88 | git add ${{ needs.init.outputs.git_path }} 89 | git commit --signoff -m 'Compile assets' 90 | git push origin ${{ needs.init.outputs.head_ref }} 91 | 92 | - name: Commit and push fixup 93 | if: ${{ needs.init.outputs.arg1 == 'fixup' }} 94 | run: | 95 | git add ${{ needs.init.outputs.git_path }} 96 | git commit --fixup=HEAD --signoff 97 | git push origin ${{ needs.init.outputs.head_ref }} 98 | 99 | - name: Commit and push amend 100 | if: ${{ needs.init.outputs.arg1 == 'amend' }} 101 | run: | 102 | git add ${{ needs.init.outputs.git_path }} 103 | git commit --amend --no-edit --signoff 104 | git push --force origin ${{ needs.init.outputs.head_ref }} 105 | 106 | - name: Add reaction on failure 107 | uses: peter-evans/create-or-update-comment@v1 108 | if: failure() 109 | with: 110 | token: ${{ secrets.COMMAND_BOT_PAT }} 111 | repository: ${{ github.event.repository.full_name }} 112 | comment-id: ${{ github.event.comment.id }} 113 | reaction-type: "-1" 114 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 156 | 157 | 218 | -------------------------------------------------------------------------------- /js/vueexample-main.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /* 2 | * @copyright 2018 Christoph Wurst 3 | * 4 | * @author 2018 Christoph Wurst 5 | * 6 | * @license GNU AGPL version 3 or any later version 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Affero General Public License as 10 | * published by the Free Software Foundation, either version 3 of the 11 | * License, or (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU Affero General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Affero General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | /* 23 | * @copyright 2019 Christoph Wurst 24 | * 25 | * @author 2019 Christoph Wurst 26 | * 27 | * @license GNU AGPL version 3 or any later version 28 | * 29 | * This program is free software: you can redistribute it and/or modify 30 | * it under the terms of the GNU Affero General Public License as 31 | * published by the Free Software Foundation, either version 3 of the 32 | * License, or (at your option) any later version. 33 | * 34 | * This program is distributed in the hope that it will be useful, 35 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 36 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 37 | * GNU Affero General Public License for more details. 38 | * 39 | * You should have received a copy of the GNU Affero General Public License 40 | * along with this program. If not, see . 41 | */ 42 | 43 | /*! 44 | * Determine if an object is a Buffer 45 | * 46 | * @author Feross Aboukhadijeh 47 | * @license MIT 48 | */ 49 | 50 | /*! 51 | * The buffer module from node.js, for the browser. 52 | * 53 | * @author Feross Aboukhadijeh 54 | * @license MIT 55 | */ 56 | 57 | /*! 58 | * Vue.js v2.6.14 59 | * (c) 2014-2021 Evan You 60 | * Released under the MIT License. 61 | */ 62 | 63 | /*! 64 | * escape-html 65 | * Copyright(c) 2012-2013 TJ Holowaychuk 66 | * Copyright(c) 2015 Andreas Lubbe 67 | * Copyright(c) 2015 Tiancheng "Timothy" Gu 68 | * MIT Licensed 69 | */ 70 | 71 | /*! Hammer.JS - v2.0.7 - 2016-04-22 72 | * http://hammerjs.github.io/ 73 | * 74 | * Copyright (c) 2016 Jorik Tangelder; 75 | * Licensed under the MIT license */ 76 | 77 | /** 78 | * @copyright 2019 Christoph Wurst 79 | * 80 | * @author 2019 Christoph Wurst 81 | * 82 | * @license GNU AGPL version 3 or any later version 83 | * 84 | * This program is free software: you can redistribute it and/or modify 85 | * it under the terms of the GNU Affero General Public License as 86 | * published by the Free Software Foundation, either version 3 of the 87 | * License, or (at your option) any later version. 88 | * 89 | * This program is distributed in the hope that it will be useful, 90 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 91 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 92 | * GNU Affero General Public License for more details. 93 | * 94 | * You should have received a copy of the GNU Affero General Public License 95 | * along with this program. If not, see . 96 | */ 97 | 98 | /** 99 | * @copyright Copyright (c) 2018 John Molakvoæ 100 | * 101 | * @author John Molakvoæ 102 | * 103 | * @license GNU AGPL version 3 or any later version 104 | * 105 | * This program is free software: you can redistribute it and/or modify 106 | * it under the terms of the GNU Affero General Public License as 107 | * published by the Free Software Foundation, either version 3 of the 108 | * License, or (at your option) any later version. 109 | * 110 | * This program is distributed in the hope that it will be useful, 111 | * but WITHOUT ANY WARRANTY without even the implied warranty of 112 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 113 | * GNU Affero General Public License for more details. 114 | * 115 | * You should have received a copy of the GNU Affero General Public License 116 | * along with this program. If not, see . 117 | * 118 | */ 119 | 120 | /** 121 | * @copyright Copyright (c) 2018 John Molakvoæ 122 | * 123 | * @author John Molakvoæ 124 | * 125 | * @license GNU AGPL version 3 or any later version 126 | * 127 | * This program is free software: you can redistribute it and/or modify 128 | * it under the terms of the GNU Affero General Public License as 129 | * published by the Free Software Foundation, either version 3 of the 130 | * License, or (at your option) any later version. 131 | * 132 | * This program is distributed in the hope that it will be useful, 133 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 134 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 135 | * GNU Affero General Public License for more details. 136 | * 137 | * You should have received a copy of the GNU Affero General Public License 138 | * along with this program. If not, see . 139 | * 140 | */ 141 | 142 | /** 143 | * @copyright Copyright (c) 2018 John Molakvoæ 144 | * 145 | * @author John Molakvoæ 146 | * 147 | * @license GNU AGPL version 3 or any later version 148 | * 149 | * This program is free software: you can redistribute it and/or modify 150 | * it under the terms of the GNU Affero General Public License as 151 | * published by the Free Software Foundation, either version 3 of the 152 | * License, or (at your option) any later version. 153 | * 154 | * This program is distributed in the hope that it will be useful, 155 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 156 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 157 | * GNU Affero General Public License for more details. 158 | * 159 | * You should have received a copy of the GNU Affero General Public License 160 | * along with this program. If not, see . 161 | * 162 | */ 163 | 164 | /** 165 | * @copyright Copyright (c) 2018 Julius Härtl 166 | * 167 | * @author Julius Härtl 168 | * 169 | * @license GNU AGPL version 3 or any later version 170 | * 171 | * This program is free software: you can redistribute it and/or modify 172 | * it under the terms of the GNU Affero General Public License as 173 | * published by the Free Software Foundation, either version 3 of the 174 | * License, or (at your option) any later version. 175 | * 176 | * This program is distributed in the hope that it will be useful, 177 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 178 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 179 | * GNU Affero General Public License for more details. 180 | * 181 | * You should have received a copy of the GNU Affero General Public License 182 | * along with this program. If not, see . 183 | * 184 | */ 185 | 186 | /** 187 | * @copyright Copyright (c) 2019 Georg Ehrke 188 | * 189 | * @author Georg Ehrke 190 | * 191 | * @license GNU AGPL version 3 or any later version 192 | * 193 | * This program is free software: you can redistribute it and/or modify 194 | * it under the terms of the GNU Affero General Public License as 195 | * published by the Free Software Foundation, either version 3 of the 196 | * License, or (at your option) any later version. 197 | * 198 | * This program is distributed in the hope that it will be useful, 199 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 200 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 201 | * GNU Affero General Public License for more details. 202 | * 203 | * You should have received a copy of the GNU Affero General Public License 204 | * along with this program. If not, see . 205 | * 206 | */ 207 | 208 | /** 209 | * @copyright Copyright (c) 2019 John Molakvoæ 210 | * 211 | * @author John Molakvoæ 212 | * 213 | * @license GNU AGPL version 3 or any later version 214 | * 215 | * This program is free software: you can redistribute it and/or modify 216 | * it under the terms of the GNU Affero General Public License as 217 | * published by the Free Software Foundation, either version 3 of the 218 | * License, or (at your option) any later version. 219 | * 220 | * This program is distributed in the hope that it will be useful, 221 | * but WITHOUT ANY WARRANTY without even the implied warranty of 222 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 223 | * GNU Affero General Public License for more details. 224 | * 225 | * You should have received a copy of the GNU Affero General Public License 226 | * along with this program. If not, see . 227 | * 228 | */ 229 | 230 | /** 231 | * @copyright Copyright (c) 2019 John Molakvoæ 232 | * 233 | * @author John Molakvoæ 234 | * 235 | * @license GNU AGPL version 3 or any later version 236 | * 237 | * This program is free software: you can redistribute it and/or modify 238 | * it under the terms of the GNU Affero General Public License as 239 | * published by the Free Software Foundation, either version 3 of the 240 | * License, or (at your option) any later version. 241 | * 242 | * This program is distributed in the hope that it will be useful, 243 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 244 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 245 | * GNU Affero General Public License for more details. 246 | * 247 | * You should have received a copy of the GNU Affero General Public License 248 | * along with this program. If not, see . 249 | */ 250 | 251 | /** 252 | * @copyright Copyright (c) 2019 John Molakvoæ 253 | * 254 | * @author John Molakvoæ 255 | * 256 | * @license GNU AGPL version 3 or any later version 257 | * 258 | * This program is free software: you can redistribute it and/or modify 259 | * it under the terms of the GNU Affero General Public License as 260 | * published by the Free Software Foundation, either version 3 of the 261 | * License, or (at your option) any later version. 262 | * 263 | * This program is distributed in the hope that it will be useful, 264 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 265 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 266 | * GNU Affero General Public License for more details. 267 | * 268 | * You should have received a copy of the GNU Affero General Public License 269 | * along with this program. If not, see . 270 | * 271 | */ 272 | 273 | /** 274 | * @copyright Copyright (c) 2019 John Molakvoæ 275 | * 276 | * @author John Molakvoæ 277 | * 278 | * @license GNU AGPL version 3 or any later version 279 | * 280 | * This program is free software: you can redistribute it and/or modify 281 | * it under the terms of the GNU Affero General Public License as 282 | * published by the Free Software Foundation, either version 3 of the 283 | * License, or (at your option) any later version. 284 | * 285 | * This program is distributed in the hope that it will be useful, 286 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 287 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 288 | * GNU Affero General Public License for more details. 289 | * 290 | * You should have received a copy of the GNU Affero General Public License 291 | * along with this program. If not, see . 292 | * 293 | */ 294 | 295 | /** 296 | * @copyright Copyright (c) 2019 Julius Härtl 297 | * 298 | * @author Julius Härtl 299 | * @author John Molakvoæ 300 | * 301 | * @license GNU AGPL version 3 or any later version 302 | * 303 | * This program is free software: you can redistribute it and/or modify 304 | * it under the terms of the GNU Affero General Public License as 305 | * published by the Free Software Foundation, either version 3 of the 306 | * License, or (at your option) any later version. 307 | * 308 | * This program is distributed in the hope that it will be useful, 309 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 310 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 311 | * GNU Affero General Public License for more details. 312 | * 313 | * You should have received a copy of the GNU Affero General Public License 314 | * along with this program. If not, see . 315 | * 316 | */ 317 | 318 | /** 319 | * @copyright Copyright (c) 2019 Kristof Hamann, Paul Schwörer 320 | * 321 | * @author Kristof Hamann 322 | * @author Paul Schwörer 323 | * 324 | * @license GNU AGPL version 3 or any later version 325 | * 326 | * This program is free software: you can redistribute it and/or modify 327 | * it under the terms of the GNU Affero General Public License as 328 | * published by the Free Software Foundation, either version 3 of the 329 | * License, or (at your option) any later version. 330 | * 331 | * This program is distributed in the hope that it will be useful, 332 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 333 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 334 | * GNU Affero General Public License for more details. 335 | * 336 | * You should have received a copy of the GNU Affero General Public License 337 | * along with this program. If not, see . 338 | * 339 | */ 340 | 341 | /** 342 | * @copyright Copyright (c) 2019 Marco Ambrosini 343 | * 344 | * @author Marco Ambrosini 345 | * 346 | * @license GNU AGPL version 3 or any later version 347 | * 348 | * This program is free software: you can redistribute it and/or modify 349 | * it under the terms of the GNU Affero General Public License as 350 | * published by the Free Software Foundation, either version 3 of the 351 | * License, or (at your option) any later version. 352 | * 353 | * This program is distributed in the hope that it will be useful, 354 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 355 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 356 | * GNU Affero General Public License for more details. 357 | * 358 | * You should have received a copy of the GNU Affero General Public License 359 | * along with this program. If not, see . 360 | * 361 | */ 362 | 363 | /** 364 | * @copyright Copyright (c) 2020 Georg Ehrke 365 | * 366 | * @author Georg Ehrke 367 | * 368 | * @license GNU AGPL version 3 or any later version 369 | * 370 | * This program is free software: you can redistribute it and/or modify 371 | * it under the terms of the GNU Affero General Public License as 372 | * published by the Free Software Foundation, either version 3 of the 373 | * License, or (at your option) any later version. 374 | * 375 | * This program is distributed in the hope that it will be useful, 376 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 377 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 378 | * GNU Affero General Public License for more details. 379 | * 380 | * You should have received a copy of the GNU Affero General Public License 381 | * along with this program. If not, see . 382 | * 383 | */ 384 | 385 | /** 386 | * @copyright Copyright (c) 2020 John Molakvoæ 387 | * 388 | * @author John Molakvoæ 389 | * 390 | * @license GNU AGPL version 3 or any later version 391 | * 392 | * This program is free software: you can redistribute it and/or modify 393 | * it under the terms of the GNU Affero General Public License as 394 | * published by the Free Software Foundation, either version 3 of the 395 | * License, or (at your option) any later version. 396 | * 397 | * This program is distributed in the hope that it will be useful, 398 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 399 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 400 | * GNU Affero General Public License for more details. 401 | * 402 | * You should have received a copy of the GNU Affero General Public License 403 | * along with this program. If not, see . 404 | * 405 | */ 406 | 407 | /** 408 | * @copyright Copyright (c) 2020 Raimund Schlüßler 409 | * 410 | * @author Raimund Schlüßler 411 | * 412 | * @license GNU AGPL version 3 or any later version 413 | * 414 | * This program is free software: you can redistribute it and/or modify 415 | * it under the terms of the GNU Affero General Public License as 416 | * published by the Free Software Foundation, either version 3 of the 417 | * License, or (at your option) any later version. 418 | * 419 | * This program is distributed in the hope that it will be useful, 420 | * but WITHOUT ANY WARRANTY without even the implied warranty of 421 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 422 | * GNU Affero General Public License for more details. 423 | * 424 | * You should have received a copy of the GNU Affero General Public License 425 | * along with this program. If not, see . 426 | * 427 | */ 428 | 429 | /** 430 | * @copyright Copyright (c) 2020 Raimund Schlüßler 431 | * 432 | * @author Raimund Schlüßler 433 | * 434 | * @license GNU AGPL version 3 or any later version 435 | * 436 | * This program is free software: you can redistribute it and/or modify 437 | * it under the terms of the GNU Affero General Public License as 438 | * published by the Free Software Foundation, either version 3 of the 439 | * License, or (at your option) any later version. 440 | * 441 | * This program is distributed in the hope that it will be useful, 442 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 443 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 444 | * GNU Affero General Public License for more details. 445 | * 446 | * You should have received a copy of the GNU Affero General Public License 447 | * along with this program. If not, see . 448 | * 449 | */ 450 | 451 | /**! 452 | * @fileOverview Kickass library to create and place poppers near their reference elements. 453 | * @version 1.16.1 454 | * @license 455 | * Copyright (c) 2016 Federico Zivolo and contributors 456 | * 457 | * Permission is hereby granted, free of charge, to any person obtaining a copy 458 | * of this software and associated documentation files (the "Software"), to deal 459 | * in the Software without restriction, including without limitation the rights 460 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 461 | * copies of the Software, and to permit persons to whom the Software is 462 | * furnished to do so, subject to the following conditions: 463 | * 464 | * The above copyright notice and this permission notice shall be included in all 465 | * copies or substantial portions of the Software. 466 | * 467 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 468 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 469 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 470 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 471 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 472 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 473 | * SOFTWARE. 474 | */ 475 | -------------------------------------------------------------------------------- /COPYING: -------------------------------------------------------------------------------- 1 | GNU AFFERO GENERAL PUBLIC LICENSE 2 | Version 3, 19 November 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU Affero General Public License is a free, copyleft license for 11 | software and other kinds of works, specifically designed to ensure 12 | cooperation with the community in the case of network server software. 13 | 14 | The licenses for most software and other practical works are designed 15 | to take away your freedom to share and change the works. By contrast, 16 | our General Public Licenses are intended to guarantee your freedom to 17 | share and change all versions of a program--to make sure it remains free 18 | software for all its users. 19 | 20 | When we speak of free software, we are referring to freedom, not 21 | price. Our General Public Licenses are designed to make sure that you 22 | have the freedom to distribute copies of free software (and charge for 23 | them if you wish), that you receive source code or can get it if you 24 | want it, that you can change the software or use pieces of it in new 25 | free programs, and that you know you can do these things. 26 | 27 | Developers that use our General Public Licenses protect your rights 28 | with two steps: (1) assert copyright on the software, and (2) offer 29 | you this License which gives you legal permission to copy, distribute 30 | and/or modify the software. 31 | 32 | A secondary benefit of defending all users' freedom is that 33 | improvements made in alternate versions of the program, if they 34 | receive widespread use, become available for other developers to 35 | incorporate. Many developers of free software are heartened and 36 | encouraged by the resulting cooperation. However, in the case of 37 | software used on network servers, this result may fail to come about. 38 | The GNU General Public License permits making a modified version and 39 | letting the public access it on a server without ever releasing its 40 | source code to the public. 41 | 42 | The GNU Affero General Public License is designed specifically to 43 | ensure that, in such cases, the modified source code becomes available 44 | to the community. It requires the operator of a network server to 45 | provide the source code of the modified version running there to the 46 | users of that server. Therefore, public use of a modified version, on 47 | a publicly accessible server, gives the public access to the source 48 | code of the modified version. 49 | 50 | An older license, called the Affero General Public License and 51 | published by Affero, was designed to accomplish similar goals. This is 52 | a different license, not a version of the Affero GPL, but Affero has 53 | released a new version of the Affero GPL which permits relicensing under 54 | this license. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | TERMS AND CONDITIONS 60 | 61 | 0. Definitions. 62 | 63 | "This License" refers to version 3 of the GNU Affero General Public License. 64 | 65 | "Copyright" also means copyright-like laws that apply to other kinds of 66 | works, such as semiconductor masks. 67 | 68 | "The Program" refers to any copyrightable work licensed under this 69 | License. Each licensee is addressed as "you". "Licensees" and 70 | "recipients" may be individuals or organizations. 71 | 72 | To "modify" a work means to copy from or adapt all or part of the work 73 | in a fashion requiring copyright permission, other than the making of an 74 | exact copy. The resulting work is called a "modified version" of the 75 | earlier work or a work "based on" the earlier work. 76 | 77 | A "covered work" means either the unmodified Program or a work based 78 | on the Program. 79 | 80 | To "propagate" a work means to do anything with it that, without 81 | permission, would make you directly or secondarily liable for 82 | infringement under applicable copyright law, except executing it on a 83 | computer or modifying a private copy. Propagation includes copying, 84 | distribution (with or without modification), making available to the 85 | public, and in some countries other activities as well. 86 | 87 | To "convey" a work means any kind of propagation that enables other 88 | parties to make or receive copies. Mere interaction with a user through 89 | a computer network, with no transfer of a copy, is not conveying. 90 | 91 | An interactive user interface displays "Appropriate Legal Notices" 92 | to the extent that it includes a convenient and prominently visible 93 | feature that (1) displays an appropriate copyright notice, and (2) 94 | tells the user that there is no warranty for the work (except to the 95 | extent that warranties are provided), that licensees may convey the 96 | work under this License, and how to view a copy of this License. If 97 | the interface presents a list of user commands or options, such as a 98 | menu, a prominent item in the list meets this criterion. 99 | 100 | 1. Source Code. 101 | 102 | The "source code" for a work means the preferred form of the work 103 | for making modifications to it. "Object code" means any non-source 104 | form of a work. 105 | 106 | A "Standard Interface" means an interface that either is an official 107 | standard defined by a recognized standards body, or, in the case of 108 | interfaces specified for a particular programming language, one that 109 | is widely used among developers working in that language. 110 | 111 | The "System Libraries" of an executable work include anything, other 112 | than the work as a whole, that (a) is included in the normal form of 113 | packaging a Major Component, but which is not part of that Major 114 | Component, and (b) serves only to enable use of the work with that 115 | Major Component, or to implement a Standard Interface for which an 116 | implementation is available to the public in source code form. A 117 | "Major Component", in this context, means a major essential component 118 | (kernel, window system, and so on) of the specific operating system 119 | (if any) on which the executable work runs, or a compiler used to 120 | produce the work, or an object code interpreter used to run it. 121 | 122 | The "Corresponding Source" for a work in object code form means all 123 | the source code needed to generate, install, and (for an executable 124 | work) run the object code and to modify the work, including scripts to 125 | control those activities. However, it does not include the work's 126 | System Libraries, or general-purpose tools or generally available free 127 | programs which are used unmodified in performing those activities but 128 | which are not part of the work. For example, Corresponding Source 129 | includes interface definition files associated with source files for 130 | the work, and the source code for shared libraries and dynamically 131 | linked subprograms that the work is specifically designed to require, 132 | such as by intimate data communication or control flow between those 133 | subprograms and other parts of the work. 134 | 135 | The Corresponding Source need not include anything that users 136 | can regenerate automatically from other parts of the Corresponding 137 | Source. 138 | 139 | The Corresponding Source for a work in source code form is that 140 | same work. 141 | 142 | 2. Basic Permissions. 143 | 144 | All rights granted under this License are granted for the term of 145 | copyright on the Program, and are irrevocable provided the stated 146 | conditions are met. This License explicitly affirms your unlimited 147 | permission to run the unmodified Program. The output from running a 148 | covered work is covered by this License only if the output, given its 149 | content, constitutes a covered work. This License acknowledges your 150 | rights of fair use or other equivalent, as provided by copyright law. 151 | 152 | You may make, run and propagate covered works that you do not 153 | convey, without conditions so long as your license otherwise remains 154 | in force. You may convey covered works to others for the sole purpose 155 | of having them make modifications exclusively for you, or provide you 156 | with facilities for running those works, provided that you comply with 157 | the terms of this License in conveying all material for which you do 158 | not control copyright. Those thus making or running the covered works 159 | for you must do so exclusively on your behalf, under your direction 160 | and control, on terms that prohibit them from making any copies of 161 | your copyrighted material outside their relationship with you. 162 | 163 | Conveying under any other circumstances is permitted solely under 164 | the conditions stated below. Sublicensing is not allowed; section 10 165 | makes it unnecessary. 166 | 167 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 168 | 169 | No covered work shall be deemed part of an effective technological 170 | measure under any applicable law fulfilling obligations under article 171 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 172 | similar laws prohibiting or restricting circumvention of such 173 | measures. 174 | 175 | When you convey a covered work, you waive any legal power to forbid 176 | circumvention of technological measures to the extent such circumvention 177 | is effected by exercising rights under this License with respect to 178 | the covered work, and you disclaim any intention to limit operation or 179 | modification of the work as a means of enforcing, against the work's 180 | users, your or third parties' legal rights to forbid circumvention of 181 | technological measures. 182 | 183 | 4. Conveying Verbatim Copies. 184 | 185 | You may convey verbatim copies of the Program's source code as you 186 | receive it, in any medium, provided that you conspicuously and 187 | appropriately publish on each copy an appropriate copyright notice; 188 | keep intact all notices stating that this License and any 189 | non-permissive terms added in accord with section 7 apply to the code; 190 | keep intact all notices of the absence of any warranty; and give all 191 | recipients a copy of this License along with the Program. 192 | 193 | You may charge any price or no price for each copy that you convey, 194 | and you may offer support or warranty protection for a fee. 195 | 196 | 5. Conveying Modified Source Versions. 197 | 198 | You may convey a work based on the Program, or the modifications to 199 | produce it from the Program, in the form of source code under the 200 | terms of section 4, provided that you also meet all of these conditions: 201 | 202 | a) The work must carry prominent notices stating that you modified 203 | it, and giving a relevant date. 204 | 205 | b) The work must carry prominent notices stating that it is 206 | released under this License and any conditions added under section 207 | 7. This requirement modifies the requirement in section 4 to 208 | "keep intact all notices". 209 | 210 | c) You must license the entire work, as a whole, under this 211 | License to anyone who comes into possession of a copy. This 212 | License will therefore apply, along with any applicable section 7 213 | additional terms, to the whole of the work, and all its parts, 214 | regardless of how they are packaged. This License gives no 215 | permission to license the work in any other way, but it does not 216 | invalidate such permission if you have separately received it. 217 | 218 | d) If the work has interactive user interfaces, each must display 219 | Appropriate Legal Notices; however, if the Program has interactive 220 | interfaces that do not display Appropriate Legal Notices, your 221 | work need not make them do so. 222 | 223 | A compilation of a covered work with other separate and independent 224 | works, which are not by their nature extensions of the covered work, 225 | and which are not combined with it such as to form a larger program, 226 | in or on a volume of a storage or distribution medium, is called an 227 | "aggregate" if the compilation and its resulting copyright are not 228 | used to limit the access or legal rights of the compilation's users 229 | beyond what the individual works permit. Inclusion of a covered work 230 | in an aggregate does not cause this License to apply to the other 231 | parts of the aggregate. 232 | 233 | 6. Conveying Non-Source Forms. 234 | 235 | You may convey a covered work in object code form under the terms 236 | of sections 4 and 5, provided that you also convey the 237 | machine-readable Corresponding Source under the terms of this License, 238 | in one of these ways: 239 | 240 | a) Convey the object code in, or embodied in, a physical product 241 | (including a physical distribution medium), accompanied by the 242 | Corresponding Source fixed on a durable physical medium 243 | customarily used for software interchange. 244 | 245 | b) Convey the object code in, or embodied in, a physical product 246 | (including a physical distribution medium), accompanied by a 247 | written offer, valid for at least three years and valid for as 248 | long as you offer spare parts or customer support for that product 249 | model, to give anyone who possesses the object code either (1) a 250 | copy of the Corresponding Source for all the software in the 251 | product that is covered by this License, on a durable physical 252 | medium customarily used for software interchange, for a price no 253 | more than your reasonable cost of physically performing this 254 | conveying of source, or (2) access to copy the 255 | Corresponding Source from a network server at no charge. 256 | 257 | c) Convey individual copies of the object code with a copy of the 258 | written offer to provide the Corresponding Source. This 259 | alternative is allowed only occasionally and noncommercially, and 260 | only if you received the object code with such an offer, in accord 261 | with subsection 6b. 262 | 263 | d) Convey the object code by offering access from a designated 264 | place (gratis or for a charge), and offer equivalent access to the 265 | Corresponding Source in the same way through the same place at no 266 | further charge. You need not require recipients to copy the 267 | Corresponding Source along with the object code. If the place to 268 | copy the object code is a network server, the Corresponding Source 269 | may be on a different server (operated by you or a third party) 270 | that supports equivalent copying facilities, provided you maintain 271 | clear directions next to the object code saying where to find the 272 | Corresponding Source. Regardless of what server hosts the 273 | Corresponding Source, you remain obligated to ensure that it is 274 | available for as long as needed to satisfy these requirements. 275 | 276 | e) Convey the object code using peer-to-peer transmission, provided 277 | you inform other peers where the object code and Corresponding 278 | Source of the work are being offered to the general public at no 279 | charge under subsection 6d. 280 | 281 | A separable portion of the object code, whose source code is excluded 282 | from the Corresponding Source as a System Library, need not be 283 | included in conveying the object code work. 284 | 285 | A "User Product" is either (1) a "consumer product", which means any 286 | tangible personal property which is normally used for personal, family, 287 | or household purposes, or (2) anything designed or sold for incorporation 288 | into a dwelling. In determining whether a product is a consumer product, 289 | doubtful cases shall be resolved in favor of coverage. For a particular 290 | product received by a particular user, "normally used" refers to a 291 | typical or common use of that class of product, regardless of the status 292 | of the particular user or of the way in which the particular user 293 | actually uses, or expects or is expected to use, the product. A product 294 | is a consumer product regardless of whether the product has substantial 295 | commercial, industrial or non-consumer uses, unless such uses represent 296 | the only significant mode of use of the product. 297 | 298 | "Installation Information" for a User Product means any methods, 299 | procedures, authorization keys, or other information required to install 300 | and execute modified versions of a covered work in that User Product from 301 | a modified version of its Corresponding Source. The information must 302 | suffice to ensure that the continued functioning of the modified object 303 | code is in no case prevented or interfered with solely because 304 | modification has been made. 305 | 306 | If you convey an object code work under this section in, or with, or 307 | specifically for use in, a User Product, and the conveying occurs as 308 | part of a transaction in which the right of possession and use of the 309 | User Product is transferred to the recipient in perpetuity or for a 310 | fixed term (regardless of how the transaction is characterized), the 311 | Corresponding Source conveyed under this section must be accompanied 312 | by the Installation Information. But this requirement does not apply 313 | if neither you nor any third party retains the ability to install 314 | modified object code on the User Product (for example, the work has 315 | been installed in ROM). 316 | 317 | The requirement to provide Installation Information does not include a 318 | requirement to continue to provide support service, warranty, or updates 319 | for a work that has been modified or installed by the recipient, or for 320 | the User Product in which it has been modified or installed. Access to a 321 | network may be denied when the modification itself materially and 322 | adversely affects the operation of the network or violates the rules and 323 | protocols for communication across the network. 324 | 325 | Corresponding Source conveyed, and Installation Information provided, 326 | in accord with this section must be in a format that is publicly 327 | documented (and with an implementation available to the public in 328 | source code form), and must require no special password or key for 329 | unpacking, reading or copying. 330 | 331 | 7. Additional Terms. 332 | 333 | "Additional permissions" are terms that supplement the terms of this 334 | License by making exceptions from one or more of its conditions. 335 | Additional permissions that are applicable to the entire Program shall 336 | be treated as though they were included in this License, to the extent 337 | that they are valid under applicable law. If additional permissions 338 | apply only to part of the Program, that part may be used separately 339 | under those permissions, but the entire Program remains governed by 340 | this License without regard to the additional permissions. 341 | 342 | When you convey a copy of a covered work, you may at your option 343 | remove any additional permissions from that copy, or from any part of 344 | it. (Additional permissions may be written to require their own 345 | removal in certain cases when you modify the work.) You may place 346 | additional permissions on material, added by you to a covered work, 347 | for which you have or can give appropriate copyright permission. 348 | 349 | Notwithstanding any other provision of this License, for material you 350 | add to a covered work, you may (if authorized by the copyright holders of 351 | that material) supplement the terms of this License with terms: 352 | 353 | a) Disclaiming warranty or limiting liability differently from the 354 | terms of sections 15 and 16 of this License; or 355 | 356 | b) Requiring preservation of specified reasonable legal notices or 357 | author attributions in that material or in the Appropriate Legal 358 | Notices displayed by works containing it; or 359 | 360 | c) Prohibiting misrepresentation of the origin of that material, or 361 | requiring that modified versions of such material be marked in 362 | reasonable ways as different from the original version; or 363 | 364 | d) Limiting the use for publicity purposes of names of licensors or 365 | authors of the material; or 366 | 367 | e) Declining to grant rights under trademark law for use of some 368 | trade names, trademarks, or service marks; or 369 | 370 | f) Requiring indemnification of licensors and authors of that 371 | material by anyone who conveys the material (or modified versions of 372 | it) with contractual assumptions of liability to the recipient, for 373 | any liability that these contractual assumptions directly impose on 374 | those licensors and authors. 375 | 376 | All other non-permissive additional terms are considered "further 377 | restrictions" within the meaning of section 10. If the Program as you 378 | received it, or any part of it, contains a notice stating that it is 379 | governed by this License along with a term that is a further 380 | restriction, you may remove that term. If a license document contains 381 | a further restriction but permits relicensing or conveying under this 382 | License, you may add to a covered work material governed by the terms 383 | of that license document, provided that the further restriction does 384 | not survive such relicensing or conveying. 385 | 386 | If you add terms to a covered work in accord with this section, you 387 | must place, in the relevant source files, a statement of the 388 | additional terms that apply to those files, or a notice indicating 389 | where to find the applicable terms. 390 | 391 | Additional terms, permissive or non-permissive, may be stated in the 392 | form of a separately written license, or stated as exceptions; 393 | the above requirements apply either way. 394 | 395 | 8. Termination. 396 | 397 | You may not propagate or modify a covered work except as expressly 398 | provided under this License. Any attempt otherwise to propagate or 399 | modify it is void, and will automatically terminate your rights under 400 | this License (including any patent licenses granted under the third 401 | paragraph of section 11). 402 | 403 | However, if you cease all violation of this License, then your 404 | license from a particular copyright holder is reinstated (a) 405 | provisionally, unless and until the copyright holder explicitly and 406 | finally terminates your license, and (b) permanently, if the copyright 407 | holder fails to notify you of the violation by some reasonable means 408 | prior to 60 days after the cessation. 409 | 410 | Moreover, your license from a particular copyright holder is 411 | reinstated permanently if the copyright holder notifies you of the 412 | violation by some reasonable means, this is the first time you have 413 | received notice of violation of this License (for any work) from that 414 | copyright holder, and you cure the violation prior to 30 days after 415 | your receipt of the notice. 416 | 417 | Termination of your rights under this section does not terminate the 418 | licenses of parties who have received copies or rights from you under 419 | this License. If your rights have been terminated and not permanently 420 | reinstated, you do not qualify to receive new licenses for the same 421 | material under section 10. 422 | 423 | 9. Acceptance Not Required for Having Copies. 424 | 425 | You are not required to accept this License in order to receive or 426 | run a copy of the Program. Ancillary propagation of a covered work 427 | occurring solely as a consequence of using peer-to-peer transmission 428 | to receive a copy likewise does not require acceptance. However, 429 | nothing other than this License grants you permission to propagate or 430 | modify any covered work. These actions infringe copyright if you do 431 | not accept this License. Therefore, by modifying or propagating a 432 | covered work, you indicate your acceptance of this License to do so. 433 | 434 | 10. Automatic Licensing of Downstream Recipients. 435 | 436 | Each time you convey a covered work, the recipient automatically 437 | receives a license from the original licensors, to run, modify and 438 | propagate that work, subject to this License. You are not responsible 439 | for enforcing compliance by third parties with this License. 440 | 441 | An "entity transaction" is a transaction transferring control of an 442 | organization, or substantially all assets of one, or subdividing an 443 | organization, or merging organizations. If propagation of a covered 444 | work results from an entity transaction, each party to that 445 | transaction who receives a copy of the work also receives whatever 446 | licenses to the work the party's predecessor in interest had or could 447 | give under the previous paragraph, plus a right to possession of the 448 | Corresponding Source of the work from the predecessor in interest, if 449 | the predecessor has it or can get it with reasonable efforts. 450 | 451 | You may not impose any further restrictions on the exercise of the 452 | rights granted or affirmed under this License. For example, you may 453 | not impose a license fee, royalty, or other charge for exercise of 454 | rights granted under this License, and you may not initiate litigation 455 | (including a cross-claim or counterclaim in a lawsuit) alleging that 456 | any patent claim is infringed by making, using, selling, offering for 457 | sale, or importing the Program or any portion of it. 458 | 459 | 11. Patents. 460 | 461 | A "contributor" is a copyright holder who authorizes use under this 462 | License of the Program or a work on which the Program is based. The 463 | work thus licensed is called the contributor's "contributor version". 464 | 465 | A contributor's "essential patent claims" are all patent claims 466 | owned or controlled by the contributor, whether already acquired or 467 | hereafter acquired, that would be infringed by some manner, permitted 468 | by this License, of making, using, or selling its contributor version, 469 | but do not include claims that would be infringed only as a 470 | consequence of further modification of the contributor version. For 471 | purposes of this definition, "control" includes the right to grant 472 | patent sublicenses in a manner consistent with the requirements of 473 | this License. 474 | 475 | Each contributor grants you a non-exclusive, worldwide, royalty-free 476 | patent license under the contributor's essential patent claims, to 477 | make, use, sell, offer for sale, import and otherwise run, modify and 478 | propagate the contents of its contributor version. 479 | 480 | In the following three paragraphs, a "patent license" is any express 481 | agreement or commitment, however denominated, not to enforce a patent 482 | (such as an express permission to practice a patent or covenant not to 483 | sue for patent infringement). To "grant" such a patent license to a 484 | party means to make such an agreement or commitment not to enforce a 485 | patent against the party. 486 | 487 | If you convey a covered work, knowingly relying on a patent license, 488 | and the Corresponding Source of the work is not available for anyone 489 | to copy, free of charge and under the terms of this License, through a 490 | publicly available network server or other readily accessible means, 491 | then you must either (1) cause the Corresponding Source to be so 492 | available, or (2) arrange to deprive yourself of the benefit of the 493 | patent license for this particular work, or (3) arrange, in a manner 494 | consistent with the requirements of this License, to extend the patent 495 | license to downstream recipients. "Knowingly relying" means you have 496 | actual knowledge that, but for the patent license, your conveying the 497 | covered work in a country, or your recipient's use of the covered work 498 | in a country, would infringe one or more identifiable patents in that 499 | country that you have reason to believe are valid. 500 | 501 | If, pursuant to or in connection with a single transaction or 502 | arrangement, you convey, or propagate by procuring conveyance of, a 503 | covered work, and grant a patent license to some of the parties 504 | receiving the covered work authorizing them to use, propagate, modify 505 | or convey a specific copy of the covered work, then the patent license 506 | you grant is automatically extended to all recipients of the covered 507 | work and works based on it. 508 | 509 | A patent license is "discriminatory" if it does not include within 510 | the scope of its coverage, prohibits the exercise of, or is 511 | conditioned on the non-exercise of one or more of the rights that are 512 | specifically granted under this License. You may not convey a covered 513 | work if you are a party to an arrangement with a third party that is 514 | in the business of distributing software, under which you make payment 515 | to the third party based on the extent of your activity of conveying 516 | the work, and under which the third party grants, to any of the 517 | parties who would receive the covered work from you, a discriminatory 518 | patent license (a) in connection with copies of the covered work 519 | conveyed by you (or copies made from those copies), or (b) primarily 520 | for and in connection with specific products or compilations that 521 | contain the covered work, unless you entered into that arrangement, 522 | or that patent license was granted, prior to 28 March 2007. 523 | 524 | Nothing in this License shall be construed as excluding or limiting 525 | any implied license or other defenses to infringement that may 526 | otherwise be available to you under applicable patent law. 527 | 528 | 12. No Surrender of Others' Freedom. 529 | 530 | If conditions are imposed on you (whether by court order, agreement or 531 | otherwise) that contradict the conditions of this License, they do not 532 | excuse you from the conditions of this License. If you cannot convey a 533 | covered work so as to satisfy simultaneously your obligations under this 534 | License and any other pertinent obligations, then as a consequence you may 535 | not convey it at all. For example, if you agree to terms that obligate you 536 | to collect a royalty for further conveying from those to whom you convey 537 | the Program, the only way you could satisfy both those terms and this 538 | License would be to refrain entirely from conveying the Program. 539 | 540 | 13. Remote Network Interaction; Use with the GNU General Public License. 541 | 542 | Notwithstanding any other provision of this License, if you modify the 543 | Program, your modified version must prominently offer all users 544 | interacting with it remotely through a computer network (if your version 545 | supports such interaction) an opportunity to receive the Corresponding 546 | Source of your version by providing access to the Corresponding Source 547 | from a network server at no charge, through some standard or customary 548 | means of facilitating copying of software. This Corresponding Source 549 | shall include the Corresponding Source for any work covered by version 3 550 | of the GNU General Public License that is incorporated pursuant to the 551 | following paragraph. 552 | 553 | Notwithstanding any other provision of this License, you have 554 | permission to link or combine any covered work with a work licensed 555 | under version 3 of the GNU General Public License into a single 556 | combined work, and to convey the resulting work. The terms of this 557 | License will continue to apply to the part which is the covered work, 558 | but the work with which it is combined will remain governed by version 559 | 3 of the GNU General Public License. 560 | 561 | 14. Revised Versions of this License. 562 | 563 | The Free Software Foundation may publish revised and/or new versions of 564 | the GNU Affero General Public License from time to time. Such new versions 565 | will be similar in spirit to the present version, but may differ in detail to 566 | address new problems or concerns. 567 | 568 | Each version is given a distinguishing version number. If the 569 | Program specifies that a certain numbered version of the GNU Affero General 570 | Public License "or any later version" applies to it, you have the 571 | option of following the terms and conditions either of that numbered 572 | version or of any later version published by the Free Software 573 | Foundation. If the Program does not specify a version number of the 574 | GNU Affero General Public License, you may choose any version ever published 575 | by the Free Software Foundation. 576 | 577 | If the Program specifies that a proxy can decide which future 578 | versions of the GNU Affero General Public License can be used, that proxy's 579 | public statement of acceptance of a version permanently authorizes you 580 | to choose that version for the Program. 581 | 582 | Later license versions may give you additional or different 583 | permissions. However, no additional obligations are imposed on any 584 | author or copyright holder as a result of your choosing to follow a 585 | later version. 586 | 587 | 15. Disclaimer of Warranty. 588 | 589 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 590 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 591 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 592 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 593 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 594 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 595 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 596 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 597 | 598 | 16. Limitation of Liability. 599 | 600 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 601 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 602 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 603 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 604 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 605 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 606 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 607 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 608 | SUCH DAMAGES. 609 | 610 | 17. Interpretation of Sections 15 and 16. 611 | 612 | If the disclaimer of warranty and limitation of liability provided 613 | above cannot be given local legal effect according to their terms, 614 | reviewing courts shall apply local law that most closely approximates 615 | an absolute waiver of all civil liability in connection with the 616 | Program, unless a warranty or assumption of liability accompanies a 617 | copy of the Program in return for a fee. 618 | 619 | END OF TERMS AND CONDITIONS 620 | 621 | How to Apply These Terms to Your New Programs 622 | 623 | If you develop a new program, and you want it to be of the greatest 624 | possible use to the public, the best way to achieve this is to make it 625 | free software which everyone can redistribute and change under these terms. 626 | 627 | To do so, attach the following notices to the program. It is safest 628 | to attach them to the start of each source file to most effectively 629 | state the exclusion of warranty; and each file should have at least 630 | the "copyright" line and a pointer to where the full notice is found. 631 | 632 | 633 | Copyright (C) 634 | 635 | This program is free software: you can redistribute it and/or modify 636 | it under the terms of the GNU Affero General Public License as published by 637 | the Free Software Foundation, either version 3 of the License, or 638 | (at your option) any later version. 639 | 640 | This program is distributed in the hope that it will be useful, 641 | but WITHOUT ANY WARRANTY; without even the implied warranty of 642 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 643 | GNU Affero General Public License for more details. 644 | 645 | You should have received a copy of the GNU Affero General Public License 646 | along with this program. If not, see . 647 | 648 | Also add information on how to contact you by electronic and paper mail. 649 | 650 | If your software can interact with users remotely through a computer 651 | network, you should also make sure that it provides a way for users to 652 | get its source. For example, if your program is a web application, its 653 | interface could display a "Source" link that leads users to an archive 654 | of the code. There are many ways you could offer source, and different 655 | solutions will be better for different programs; see section 13 for the 656 | specific requirements. 657 | 658 | You should also get your employer (if you work as a programmer) or school, 659 | if any, to sign a "copyright disclaimer" for the program, if necessary. 660 | For more information on this, and how to apply and follow the GNU AGPL, see 661 | . 662 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "ff3254f50d7ecd9ea91ecb93108ec881", 8 | "packages": [], 9 | "packages-dev": [ 10 | { 11 | "name": "composer/semver", 12 | "version": "3.2.5", 13 | "source": { 14 | "type": "git", 15 | "url": "https://github.com/composer/semver.git", 16 | "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9" 17 | }, 18 | "dist": { 19 | "type": "zip", 20 | "url": "https://api.github.com/repos/composer/semver/zipball/31f3ea725711245195f62e54ffa402d8ef2fdba9", 21 | "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9", 22 | "shasum": "" 23 | }, 24 | "require": { 25 | "php": "^5.3.2 || ^7.0 || ^8.0" 26 | }, 27 | "require-dev": { 28 | "phpstan/phpstan": "^0.12.54", 29 | "symfony/phpunit-bridge": "^4.2 || ^5" 30 | }, 31 | "type": "library", 32 | "extra": { 33 | "branch-alias": { 34 | "dev-main": "3.x-dev" 35 | } 36 | }, 37 | "autoload": { 38 | "psr-4": { 39 | "Composer\\Semver\\": "src" 40 | } 41 | }, 42 | "notification-url": "https://packagist.org/downloads/", 43 | "license": [ 44 | "MIT" 45 | ], 46 | "authors": [ 47 | { 48 | "name": "Nils Adermann", 49 | "email": "naderman@naderman.de", 50 | "homepage": "http://www.naderman.de" 51 | }, 52 | { 53 | "name": "Jordi Boggiano", 54 | "email": "j.boggiano@seld.be", 55 | "homepage": "http://seld.be" 56 | }, 57 | { 58 | "name": "Rob Bast", 59 | "email": "rob.bast@gmail.com", 60 | "homepage": "http://robbast.nl" 61 | } 62 | ], 63 | "description": "Semver library that offers utilities, version constraint parsing and validation.", 64 | "keywords": [ 65 | "semantic", 66 | "semver", 67 | "validation", 68 | "versioning" 69 | ], 70 | "support": { 71 | "irc": "irc://irc.freenode.org/composer", 72 | "issues": "https://github.com/composer/semver/issues", 73 | "source": "https://github.com/composer/semver/tree/3.2.5" 74 | }, 75 | "funding": [ 76 | { 77 | "url": "https://packagist.com", 78 | "type": "custom" 79 | }, 80 | { 81 | "url": "https://github.com/composer", 82 | "type": "github" 83 | }, 84 | { 85 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 86 | "type": "tidelift" 87 | } 88 | ], 89 | "time": "2021-05-24T12:41:47+00:00" 90 | }, 91 | { 92 | "name": "composer/xdebug-handler", 93 | "version": "2.0.1", 94 | "source": { 95 | "type": "git", 96 | "url": "https://github.com/composer/xdebug-handler.git", 97 | "reference": "964adcdd3a28bf9ed5d9ac6450064e0d71ed7496" 98 | }, 99 | "dist": { 100 | "type": "zip", 101 | "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/964adcdd3a28bf9ed5d9ac6450064e0d71ed7496", 102 | "reference": "964adcdd3a28bf9ed5d9ac6450064e0d71ed7496", 103 | "shasum": "" 104 | }, 105 | "require": { 106 | "php": "^5.3.2 || ^7.0 || ^8.0", 107 | "psr/log": "^1.0" 108 | }, 109 | "require-dev": { 110 | "phpstan/phpstan": "^0.12.55", 111 | "symfony/phpunit-bridge": "^4.2 || ^5" 112 | }, 113 | "type": "library", 114 | "autoload": { 115 | "psr-4": { 116 | "Composer\\XdebugHandler\\": "src" 117 | } 118 | }, 119 | "notification-url": "https://packagist.org/downloads/", 120 | "license": [ 121 | "MIT" 122 | ], 123 | "authors": [ 124 | { 125 | "name": "John Stevenson", 126 | "email": "john-stevenson@blueyonder.co.uk" 127 | } 128 | ], 129 | "description": "Restarts a process without Xdebug.", 130 | "keywords": [ 131 | "Xdebug", 132 | "performance" 133 | ], 134 | "support": { 135 | "irc": "irc://irc.freenode.org/composer", 136 | "issues": "https://github.com/composer/xdebug-handler/issues", 137 | "source": "https://github.com/composer/xdebug-handler/tree/2.0.1" 138 | }, 139 | "funding": [ 140 | { 141 | "url": "https://packagist.com", 142 | "type": "custom" 143 | }, 144 | { 145 | "url": "https://github.com/composer", 146 | "type": "github" 147 | }, 148 | { 149 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 150 | "type": "tidelift" 151 | } 152 | ], 153 | "time": "2021-05-05T19:37:51+00:00" 154 | }, 155 | { 156 | "name": "doctrine/annotations", 157 | "version": "1.13.1", 158 | "source": { 159 | "type": "git", 160 | "url": "https://github.com/doctrine/annotations.git", 161 | "reference": "e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f" 162 | }, 163 | "dist": { 164 | "type": "zip", 165 | "url": "https://api.github.com/repos/doctrine/annotations/zipball/e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f", 166 | "reference": "e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f", 167 | "shasum": "" 168 | }, 169 | "require": { 170 | "doctrine/lexer": "1.*", 171 | "ext-tokenizer": "*", 172 | "php": "^7.1 || ^8.0", 173 | "psr/cache": "^1 || ^2 || ^3" 174 | }, 175 | "require-dev": { 176 | "doctrine/cache": "^1.11 || ^2.0", 177 | "doctrine/coding-standard": "^6.0 || ^8.1", 178 | "phpstan/phpstan": "^0.12.20", 179 | "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", 180 | "symfony/cache": "^4.4 || ^5.2" 181 | }, 182 | "type": "library", 183 | "autoload": { 184 | "psr-4": { 185 | "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" 186 | } 187 | }, 188 | "notification-url": "https://packagist.org/downloads/", 189 | "license": [ 190 | "MIT" 191 | ], 192 | "authors": [ 193 | { 194 | "name": "Guilherme Blanco", 195 | "email": "guilhermeblanco@gmail.com" 196 | }, 197 | { 198 | "name": "Roman Borschel", 199 | "email": "roman@code-factory.org" 200 | }, 201 | { 202 | "name": "Benjamin Eberlei", 203 | "email": "kontakt@beberlei.de" 204 | }, 205 | { 206 | "name": "Jonathan Wage", 207 | "email": "jonwage@gmail.com" 208 | }, 209 | { 210 | "name": "Johannes Schmitt", 211 | "email": "schmittjoh@gmail.com" 212 | } 213 | ], 214 | "description": "Docblock Annotations Parser", 215 | "homepage": "https://www.doctrine-project.org/projects/annotations.html", 216 | "keywords": [ 217 | "annotations", 218 | "docblock", 219 | "parser" 220 | ], 221 | "support": { 222 | "issues": "https://github.com/doctrine/annotations/issues", 223 | "source": "https://github.com/doctrine/annotations/tree/1.13.1" 224 | }, 225 | "time": "2021-05-16T18:07:53+00:00" 226 | }, 227 | { 228 | "name": "doctrine/lexer", 229 | "version": "1.2.1", 230 | "source": { 231 | "type": "git", 232 | "url": "https://github.com/doctrine/lexer.git", 233 | "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" 234 | }, 235 | "dist": { 236 | "type": "zip", 237 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", 238 | "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", 239 | "shasum": "" 240 | }, 241 | "require": { 242 | "php": "^7.2 || ^8.0" 243 | }, 244 | "require-dev": { 245 | "doctrine/coding-standard": "^6.0", 246 | "phpstan/phpstan": "^0.11.8", 247 | "phpunit/phpunit": "^8.2" 248 | }, 249 | "type": "library", 250 | "extra": { 251 | "branch-alias": { 252 | "dev-master": "1.2.x-dev" 253 | } 254 | }, 255 | "autoload": { 256 | "psr-4": { 257 | "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" 258 | } 259 | }, 260 | "notification-url": "https://packagist.org/downloads/", 261 | "license": [ 262 | "MIT" 263 | ], 264 | "authors": [ 265 | { 266 | "name": "Guilherme Blanco", 267 | "email": "guilhermeblanco@gmail.com" 268 | }, 269 | { 270 | "name": "Roman Borschel", 271 | "email": "roman@code-factory.org" 272 | }, 273 | { 274 | "name": "Johannes Schmitt", 275 | "email": "schmittjoh@gmail.com" 276 | } 277 | ], 278 | "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", 279 | "homepage": "https://www.doctrine-project.org/projects/lexer.html", 280 | "keywords": [ 281 | "annotations", 282 | "docblock", 283 | "lexer", 284 | "parser", 285 | "php" 286 | ], 287 | "support": { 288 | "issues": "https://github.com/doctrine/lexer/issues", 289 | "source": "https://github.com/doctrine/lexer/tree/1.2.1" 290 | }, 291 | "funding": [ 292 | { 293 | "url": "https://www.doctrine-project.org/sponsorship.html", 294 | "type": "custom" 295 | }, 296 | { 297 | "url": "https://www.patreon.com/phpdoctrine", 298 | "type": "patreon" 299 | }, 300 | { 301 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", 302 | "type": "tidelift" 303 | } 304 | ], 305 | "time": "2020-05-25T17:44:05+00:00" 306 | }, 307 | { 308 | "name": "friendsofphp/php-cs-fixer", 309 | "version": "v2.19.0", 310 | "source": { 311 | "type": "git", 312 | "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", 313 | "reference": "d5b8a9d852b292c2f8a035200fa6844b1f82300b" 314 | }, 315 | "dist": { 316 | "type": "zip", 317 | "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/d5b8a9d852b292c2f8a035200fa6844b1f82300b", 318 | "reference": "d5b8a9d852b292c2f8a035200fa6844b1f82300b", 319 | "shasum": "" 320 | }, 321 | "require": { 322 | "composer/semver": "^1.4 || ^2.0 || ^3.0", 323 | "composer/xdebug-handler": "^1.2 || ^2.0", 324 | "doctrine/annotations": "^1.2", 325 | "ext-json": "*", 326 | "ext-tokenizer": "*", 327 | "php": "^5.6 || ^7.0 || ^8.0", 328 | "php-cs-fixer/diff": "^1.3", 329 | "symfony/console": "^3.4.43 || ^4.1.6 || ^5.0", 330 | "symfony/event-dispatcher": "^3.0 || ^4.0 || ^5.0", 331 | "symfony/filesystem": "^3.0 || ^4.0 || ^5.0", 332 | "symfony/finder": "^3.0 || ^4.0 || ^5.0", 333 | "symfony/options-resolver": "^3.0 || ^4.0 || ^5.0", 334 | "symfony/polyfill-php70": "^1.0", 335 | "symfony/polyfill-php72": "^1.4", 336 | "symfony/process": "^3.0 || ^4.0 || ^5.0", 337 | "symfony/stopwatch": "^3.0 || ^4.0 || ^5.0" 338 | }, 339 | "require-dev": { 340 | "justinrainbow/json-schema": "^5.0", 341 | "keradus/cli-executor": "^1.4", 342 | "mikey179/vfsstream": "^1.6", 343 | "php-coveralls/php-coveralls": "^2.4.2", 344 | "php-cs-fixer/accessible-object": "^1.0", 345 | "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", 346 | "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", 347 | "phpspec/prophecy-phpunit": "^1.1 || ^2.0", 348 | "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.13 || ^9.5", 349 | "phpunitgoodpractices/polyfill": "^1.5", 350 | "phpunitgoodpractices/traits": "^1.9.1", 351 | "sanmai/phpunit-legacy-adapter": "^6.4 || ^8.2.1", 352 | "symfony/phpunit-bridge": "^5.2.1", 353 | "symfony/yaml": "^3.0 || ^4.0 || ^5.0" 354 | }, 355 | "suggest": { 356 | "ext-dom": "For handling output formats in XML", 357 | "ext-mbstring": "For handling non-UTF8 characters.", 358 | "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.", 359 | "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.", 360 | "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." 361 | }, 362 | "bin": [ 363 | "php-cs-fixer" 364 | ], 365 | "type": "application", 366 | "extra": { 367 | "branch-alias": { 368 | "dev-master": "2.19-dev" 369 | } 370 | }, 371 | "autoload": { 372 | "psr-4": { 373 | "PhpCsFixer\\": "src/" 374 | }, 375 | "classmap": [ 376 | "tests/Test/AbstractFixerTestCase.php", 377 | "tests/Test/AbstractIntegrationCaseFactory.php", 378 | "tests/Test/AbstractIntegrationTestCase.php", 379 | "tests/Test/Assert/AssertTokensTrait.php", 380 | "tests/Test/IntegrationCase.php", 381 | "tests/Test/IntegrationCaseFactory.php", 382 | "tests/Test/IntegrationCaseFactoryInterface.php", 383 | "tests/Test/InternalIntegrationCaseFactory.php", 384 | "tests/Test/IsIdenticalConstraint.php", 385 | "tests/Test/TokensWithObservedTransformers.php", 386 | "tests/TestCase.php" 387 | ] 388 | }, 389 | "notification-url": "https://packagist.org/downloads/", 390 | "license": [ 391 | "MIT" 392 | ], 393 | "authors": [ 394 | { 395 | "name": "Fabien Potencier", 396 | "email": "fabien@symfony.com" 397 | }, 398 | { 399 | "name": "Dariusz Rumiński", 400 | "email": "dariusz.ruminski@gmail.com" 401 | } 402 | ], 403 | "description": "A tool to automatically fix PHP code style", 404 | "support": { 405 | "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues", 406 | "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v2.19.0" 407 | }, 408 | "funding": [ 409 | { 410 | "url": "https://github.com/keradus", 411 | "type": "github" 412 | } 413 | ], 414 | "time": "2021-05-03T21:43:24+00:00" 415 | }, 416 | { 417 | "name": "nextcloud/coding-standard", 418 | "version": "v0.5.0", 419 | "source": { 420 | "type": "git", 421 | "url": "https://github.com/nextcloud/coding-standard.git", 422 | "reference": "742ed895ae76c10daf95e08488cfb3f554199f40" 423 | }, 424 | "dist": { 425 | "type": "zip", 426 | "url": "https://api.github.com/repos/nextcloud/coding-standard/zipball/742ed895ae76c10daf95e08488cfb3f554199f40", 427 | "reference": "742ed895ae76c10daf95e08488cfb3f554199f40", 428 | "shasum": "" 429 | }, 430 | "require": { 431 | "friendsofphp/php-cs-fixer": "^2.17", 432 | "php": "^7.2|^8.0" 433 | }, 434 | "type": "library", 435 | "autoload": { 436 | "psr-4": { 437 | "Nextcloud\\CodingStandard\\": "src" 438 | } 439 | }, 440 | "notification-url": "https://packagist.org/downloads/", 441 | "license": [ 442 | "MIT" 443 | ], 444 | "authors": [ 445 | { 446 | "name": "Christoph Wurst", 447 | "email": "christoph@winzerhof-wurst.at" 448 | } 449 | ], 450 | "description": "Nextcloud coding standards for the php cs fixer", 451 | "support": { 452 | "issues": "https://github.com/nextcloud/coding-standard/issues", 453 | "source": "https://github.com/nextcloud/coding-standard/tree/v0.5.0" 454 | }, 455 | "time": "2021-01-11T14:15:58+00:00" 456 | }, 457 | { 458 | "name": "php-cs-fixer/diff", 459 | "version": "v1.3.1", 460 | "source": { 461 | "type": "git", 462 | "url": "https://github.com/PHP-CS-Fixer/diff.git", 463 | "reference": "dbd31aeb251639ac0b9e7e29405c1441907f5759" 464 | }, 465 | "dist": { 466 | "type": "zip", 467 | "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/dbd31aeb251639ac0b9e7e29405c1441907f5759", 468 | "reference": "dbd31aeb251639ac0b9e7e29405c1441907f5759", 469 | "shasum": "" 470 | }, 471 | "require": { 472 | "php": "^5.6 || ^7.0 || ^8.0" 473 | }, 474 | "require-dev": { 475 | "phpunit/phpunit": "^5.7.23 || ^6.4.3 || ^7.0", 476 | "symfony/process": "^3.3" 477 | }, 478 | "type": "library", 479 | "autoload": { 480 | "classmap": [ 481 | "src/" 482 | ] 483 | }, 484 | "notification-url": "https://packagist.org/downloads/", 485 | "license": [ 486 | "BSD-3-Clause" 487 | ], 488 | "authors": [ 489 | { 490 | "name": "Sebastian Bergmann", 491 | "email": "sebastian@phpunit.de" 492 | }, 493 | { 494 | "name": "Kore Nordmann", 495 | "email": "mail@kore-nordmann.de" 496 | }, 497 | { 498 | "name": "SpacePossum" 499 | } 500 | ], 501 | "description": "sebastian/diff v2 backport support for PHP5.6", 502 | "homepage": "https://github.com/PHP-CS-Fixer", 503 | "keywords": [ 504 | "diff" 505 | ], 506 | "support": { 507 | "issues": "https://github.com/PHP-CS-Fixer/diff/issues", 508 | "source": "https://github.com/PHP-CS-Fixer/diff/tree/v1.3.1" 509 | }, 510 | "time": "2020-10-14T08:39:05+00:00" 511 | }, 512 | { 513 | "name": "psr/cache", 514 | "version": "1.0.1", 515 | "source": { 516 | "type": "git", 517 | "url": "https://github.com/php-fig/cache.git", 518 | "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" 519 | }, 520 | "dist": { 521 | "type": "zip", 522 | "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", 523 | "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", 524 | "shasum": "" 525 | }, 526 | "require": { 527 | "php": ">=5.3.0" 528 | }, 529 | "type": "library", 530 | "extra": { 531 | "branch-alias": { 532 | "dev-master": "1.0.x-dev" 533 | } 534 | }, 535 | "autoload": { 536 | "psr-4": { 537 | "Psr\\Cache\\": "src/" 538 | } 539 | }, 540 | "notification-url": "https://packagist.org/downloads/", 541 | "license": [ 542 | "MIT" 543 | ], 544 | "authors": [ 545 | { 546 | "name": "PHP-FIG", 547 | "homepage": "http://www.php-fig.org/" 548 | } 549 | ], 550 | "description": "Common interface for caching libraries", 551 | "keywords": [ 552 | "cache", 553 | "psr", 554 | "psr-6" 555 | ], 556 | "support": { 557 | "source": "https://github.com/php-fig/cache/tree/master" 558 | }, 559 | "time": "2016-08-06T20:24:11+00:00" 560 | }, 561 | { 562 | "name": "psr/container", 563 | "version": "1.1.1", 564 | "source": { 565 | "type": "git", 566 | "url": "https://github.com/php-fig/container.git", 567 | "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" 568 | }, 569 | "dist": { 570 | "type": "zip", 571 | "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", 572 | "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", 573 | "shasum": "" 574 | }, 575 | "require": { 576 | "php": ">=7.2.0" 577 | }, 578 | "type": "library", 579 | "autoload": { 580 | "psr-4": { 581 | "Psr\\Container\\": "src/" 582 | } 583 | }, 584 | "notification-url": "https://packagist.org/downloads/", 585 | "license": [ 586 | "MIT" 587 | ], 588 | "authors": [ 589 | { 590 | "name": "PHP-FIG", 591 | "homepage": "https://www.php-fig.org/" 592 | } 593 | ], 594 | "description": "Common Container Interface (PHP FIG PSR-11)", 595 | "homepage": "https://github.com/php-fig/container", 596 | "keywords": [ 597 | "PSR-11", 598 | "container", 599 | "container-interface", 600 | "container-interop", 601 | "psr" 602 | ], 603 | "support": { 604 | "issues": "https://github.com/php-fig/container/issues", 605 | "source": "https://github.com/php-fig/container/tree/1.1.1" 606 | }, 607 | "time": "2021-03-05T17:36:06+00:00" 608 | }, 609 | { 610 | "name": "psr/event-dispatcher", 611 | "version": "1.0.0", 612 | "source": { 613 | "type": "git", 614 | "url": "https://github.com/php-fig/event-dispatcher.git", 615 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" 616 | }, 617 | "dist": { 618 | "type": "zip", 619 | "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", 620 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", 621 | "shasum": "" 622 | }, 623 | "require": { 624 | "php": ">=7.2.0" 625 | }, 626 | "type": "library", 627 | "extra": { 628 | "branch-alias": { 629 | "dev-master": "1.0.x-dev" 630 | } 631 | }, 632 | "autoload": { 633 | "psr-4": { 634 | "Psr\\EventDispatcher\\": "src/" 635 | } 636 | }, 637 | "notification-url": "https://packagist.org/downloads/", 638 | "license": [ 639 | "MIT" 640 | ], 641 | "authors": [ 642 | { 643 | "name": "PHP-FIG", 644 | "homepage": "http://www.php-fig.org/" 645 | } 646 | ], 647 | "description": "Standard interfaces for event handling.", 648 | "keywords": [ 649 | "events", 650 | "psr", 651 | "psr-14" 652 | ], 653 | "support": { 654 | "issues": "https://github.com/php-fig/event-dispatcher/issues", 655 | "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" 656 | }, 657 | "time": "2019-01-08T18:20:26+00:00" 658 | }, 659 | { 660 | "name": "psr/log", 661 | "version": "1.1.4", 662 | "source": { 663 | "type": "git", 664 | "url": "https://github.com/php-fig/log.git", 665 | "reference": "d49695b909c3b7628b6289db5479a1c204601f11" 666 | }, 667 | "dist": { 668 | "type": "zip", 669 | "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", 670 | "reference": "d49695b909c3b7628b6289db5479a1c204601f11", 671 | "shasum": "" 672 | }, 673 | "require": { 674 | "php": ">=5.3.0" 675 | }, 676 | "type": "library", 677 | "extra": { 678 | "branch-alias": { 679 | "dev-master": "1.1.x-dev" 680 | } 681 | }, 682 | "autoload": { 683 | "psr-4": { 684 | "Psr\\Log\\": "Psr/Log/" 685 | } 686 | }, 687 | "notification-url": "https://packagist.org/downloads/", 688 | "license": [ 689 | "MIT" 690 | ], 691 | "authors": [ 692 | { 693 | "name": "PHP-FIG", 694 | "homepage": "https://www.php-fig.org/" 695 | } 696 | ], 697 | "description": "Common interface for logging libraries", 698 | "homepage": "https://github.com/php-fig/log", 699 | "keywords": [ 700 | "log", 701 | "psr", 702 | "psr-3" 703 | ], 704 | "support": { 705 | "source": "https://github.com/php-fig/log/tree/1.1.4" 706 | }, 707 | "time": "2021-05-03T11:20:27+00:00" 708 | }, 709 | { 710 | "name": "symfony/console", 711 | "version": "v5.3.0", 712 | "source": { 713 | "type": "git", 714 | "url": "https://github.com/symfony/console.git", 715 | "reference": "058553870f7809087fa80fa734704a21b9bcaeb2" 716 | }, 717 | "dist": { 718 | "type": "zip", 719 | "url": "https://api.github.com/repos/symfony/console/zipball/058553870f7809087fa80fa734704a21b9bcaeb2", 720 | "reference": "058553870f7809087fa80fa734704a21b9bcaeb2", 721 | "shasum": "" 722 | }, 723 | "require": { 724 | "php": ">=7.2.5", 725 | "symfony/deprecation-contracts": "^2.1", 726 | "symfony/polyfill-mbstring": "~1.0", 727 | "symfony/polyfill-php73": "^1.8", 728 | "symfony/polyfill-php80": "^1.15", 729 | "symfony/service-contracts": "^1.1|^2", 730 | "symfony/string": "^5.1" 731 | }, 732 | "conflict": { 733 | "symfony/dependency-injection": "<4.4", 734 | "symfony/dotenv": "<5.1", 735 | "symfony/event-dispatcher": "<4.4", 736 | "symfony/lock": "<4.4", 737 | "symfony/process": "<4.4" 738 | }, 739 | "provide": { 740 | "psr/log-implementation": "1.0" 741 | }, 742 | "require-dev": { 743 | "psr/log": "~1.0", 744 | "symfony/config": "^4.4|^5.0", 745 | "symfony/dependency-injection": "^4.4|^5.0", 746 | "symfony/event-dispatcher": "^4.4|^5.0", 747 | "symfony/lock": "^4.4|^5.0", 748 | "symfony/process": "^4.4|^5.0", 749 | "symfony/var-dumper": "^4.4|^5.0" 750 | }, 751 | "suggest": { 752 | "psr/log": "For using the console logger", 753 | "symfony/event-dispatcher": "", 754 | "symfony/lock": "", 755 | "symfony/process": "" 756 | }, 757 | "type": "library", 758 | "autoload": { 759 | "psr-4": { 760 | "Symfony\\Component\\Console\\": "" 761 | }, 762 | "exclude-from-classmap": [ 763 | "/Tests/" 764 | ] 765 | }, 766 | "notification-url": "https://packagist.org/downloads/", 767 | "license": [ 768 | "MIT" 769 | ], 770 | "authors": [ 771 | { 772 | "name": "Fabien Potencier", 773 | "email": "fabien@symfony.com" 774 | }, 775 | { 776 | "name": "Symfony Community", 777 | "homepage": "https://symfony.com/contributors" 778 | } 779 | ], 780 | "description": "Eases the creation of beautiful and testable command line interfaces", 781 | "homepage": "https://symfony.com", 782 | "keywords": [ 783 | "cli", 784 | "command line", 785 | "console", 786 | "terminal" 787 | ], 788 | "support": { 789 | "source": "https://github.com/symfony/console/tree/v5.3.0" 790 | }, 791 | "funding": [ 792 | { 793 | "url": "https://symfony.com/sponsor", 794 | "type": "custom" 795 | }, 796 | { 797 | "url": "https://github.com/fabpot", 798 | "type": "github" 799 | }, 800 | { 801 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 802 | "type": "tidelift" 803 | } 804 | ], 805 | "time": "2021-05-26T17:43:10+00:00" 806 | }, 807 | { 808 | "name": "symfony/deprecation-contracts", 809 | "version": "v2.4.0", 810 | "source": { 811 | "type": "git", 812 | "url": "https://github.com/symfony/deprecation-contracts.git", 813 | "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627" 814 | }, 815 | "dist": { 816 | "type": "zip", 817 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627", 818 | "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627", 819 | "shasum": "" 820 | }, 821 | "require": { 822 | "php": ">=7.1" 823 | }, 824 | "type": "library", 825 | "extra": { 826 | "branch-alias": { 827 | "dev-main": "2.4-dev" 828 | }, 829 | "thanks": { 830 | "name": "symfony/contracts", 831 | "url": "https://github.com/symfony/contracts" 832 | } 833 | }, 834 | "autoload": { 835 | "files": [ 836 | "function.php" 837 | ] 838 | }, 839 | "notification-url": "https://packagist.org/downloads/", 840 | "license": [ 841 | "MIT" 842 | ], 843 | "authors": [ 844 | { 845 | "name": "Nicolas Grekas", 846 | "email": "p@tchwork.com" 847 | }, 848 | { 849 | "name": "Symfony Community", 850 | "homepage": "https://symfony.com/contributors" 851 | } 852 | ], 853 | "description": "A generic function and convention to trigger deprecation notices", 854 | "homepage": "https://symfony.com", 855 | "support": { 856 | "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0" 857 | }, 858 | "funding": [ 859 | { 860 | "url": "https://symfony.com/sponsor", 861 | "type": "custom" 862 | }, 863 | { 864 | "url": "https://github.com/fabpot", 865 | "type": "github" 866 | }, 867 | { 868 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 869 | "type": "tidelift" 870 | } 871 | ], 872 | "time": "2021-03-23T23:28:01+00:00" 873 | }, 874 | { 875 | "name": "symfony/event-dispatcher", 876 | "version": "v5.3.0", 877 | "source": { 878 | "type": "git", 879 | "url": "https://github.com/symfony/event-dispatcher.git", 880 | "reference": "67a5f354afa8e2f231081b3fa11a5912f933c3ce" 881 | }, 882 | "dist": { 883 | "type": "zip", 884 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/67a5f354afa8e2f231081b3fa11a5912f933c3ce", 885 | "reference": "67a5f354afa8e2f231081b3fa11a5912f933c3ce", 886 | "shasum": "" 887 | }, 888 | "require": { 889 | "php": ">=7.2.5", 890 | "symfony/deprecation-contracts": "^2.1", 891 | "symfony/event-dispatcher-contracts": "^2", 892 | "symfony/polyfill-php80": "^1.15" 893 | }, 894 | "conflict": { 895 | "symfony/dependency-injection": "<4.4" 896 | }, 897 | "provide": { 898 | "psr/event-dispatcher-implementation": "1.0", 899 | "symfony/event-dispatcher-implementation": "2.0" 900 | }, 901 | "require-dev": { 902 | "psr/log": "~1.0", 903 | "symfony/config": "^4.4|^5.0", 904 | "symfony/dependency-injection": "^4.4|^5.0", 905 | "symfony/error-handler": "^4.4|^5.0", 906 | "symfony/expression-language": "^4.4|^5.0", 907 | "symfony/http-foundation": "^4.4|^5.0", 908 | "symfony/service-contracts": "^1.1|^2", 909 | "symfony/stopwatch": "^4.4|^5.0" 910 | }, 911 | "suggest": { 912 | "symfony/dependency-injection": "", 913 | "symfony/http-kernel": "" 914 | }, 915 | "type": "library", 916 | "autoload": { 917 | "psr-4": { 918 | "Symfony\\Component\\EventDispatcher\\": "" 919 | }, 920 | "exclude-from-classmap": [ 921 | "/Tests/" 922 | ] 923 | }, 924 | "notification-url": "https://packagist.org/downloads/", 925 | "license": [ 926 | "MIT" 927 | ], 928 | "authors": [ 929 | { 930 | "name": "Fabien Potencier", 931 | "email": "fabien@symfony.com" 932 | }, 933 | { 934 | "name": "Symfony Community", 935 | "homepage": "https://symfony.com/contributors" 936 | } 937 | ], 938 | "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", 939 | "homepage": "https://symfony.com", 940 | "support": { 941 | "source": "https://github.com/symfony/event-dispatcher/tree/v5.3.0" 942 | }, 943 | "funding": [ 944 | { 945 | "url": "https://symfony.com/sponsor", 946 | "type": "custom" 947 | }, 948 | { 949 | "url": "https://github.com/fabpot", 950 | "type": "github" 951 | }, 952 | { 953 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 954 | "type": "tidelift" 955 | } 956 | ], 957 | "time": "2021-05-26T17:43:10+00:00" 958 | }, 959 | { 960 | "name": "symfony/event-dispatcher-contracts", 961 | "version": "v2.4.0", 962 | "source": { 963 | "type": "git", 964 | "url": "https://github.com/symfony/event-dispatcher-contracts.git", 965 | "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11" 966 | }, 967 | "dist": { 968 | "type": "zip", 969 | "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/69fee1ad2332a7cbab3aca13591953da9cdb7a11", 970 | "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11", 971 | "shasum": "" 972 | }, 973 | "require": { 974 | "php": ">=7.2.5", 975 | "psr/event-dispatcher": "^1" 976 | }, 977 | "suggest": { 978 | "symfony/event-dispatcher-implementation": "" 979 | }, 980 | "type": "library", 981 | "extra": { 982 | "branch-alias": { 983 | "dev-main": "2.4-dev" 984 | }, 985 | "thanks": { 986 | "name": "symfony/contracts", 987 | "url": "https://github.com/symfony/contracts" 988 | } 989 | }, 990 | "autoload": { 991 | "psr-4": { 992 | "Symfony\\Contracts\\EventDispatcher\\": "" 993 | } 994 | }, 995 | "notification-url": "https://packagist.org/downloads/", 996 | "license": [ 997 | "MIT" 998 | ], 999 | "authors": [ 1000 | { 1001 | "name": "Nicolas Grekas", 1002 | "email": "p@tchwork.com" 1003 | }, 1004 | { 1005 | "name": "Symfony Community", 1006 | "homepage": "https://symfony.com/contributors" 1007 | } 1008 | ], 1009 | "description": "Generic abstractions related to dispatching event", 1010 | "homepage": "https://symfony.com", 1011 | "keywords": [ 1012 | "abstractions", 1013 | "contracts", 1014 | "decoupling", 1015 | "interfaces", 1016 | "interoperability", 1017 | "standards" 1018 | ], 1019 | "support": { 1020 | "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.4.0" 1021 | }, 1022 | "funding": [ 1023 | { 1024 | "url": "https://symfony.com/sponsor", 1025 | "type": "custom" 1026 | }, 1027 | { 1028 | "url": "https://github.com/fabpot", 1029 | "type": "github" 1030 | }, 1031 | { 1032 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1033 | "type": "tidelift" 1034 | } 1035 | ], 1036 | "time": "2021-03-23T23:28:01+00:00" 1037 | }, 1038 | { 1039 | "name": "symfony/filesystem", 1040 | "version": "v5.3.0", 1041 | "source": { 1042 | "type": "git", 1043 | "url": "https://github.com/symfony/filesystem.git", 1044 | "reference": "348116319d7fb7d1faa781d26a48922428013eb2" 1045 | }, 1046 | "dist": { 1047 | "type": "zip", 1048 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/348116319d7fb7d1faa781d26a48922428013eb2", 1049 | "reference": "348116319d7fb7d1faa781d26a48922428013eb2", 1050 | "shasum": "" 1051 | }, 1052 | "require": { 1053 | "php": ">=7.2.5", 1054 | "symfony/polyfill-ctype": "~1.8" 1055 | }, 1056 | "type": "library", 1057 | "autoload": { 1058 | "psr-4": { 1059 | "Symfony\\Component\\Filesystem\\": "" 1060 | }, 1061 | "exclude-from-classmap": [ 1062 | "/Tests/" 1063 | ] 1064 | }, 1065 | "notification-url": "https://packagist.org/downloads/", 1066 | "license": [ 1067 | "MIT" 1068 | ], 1069 | "authors": [ 1070 | { 1071 | "name": "Fabien Potencier", 1072 | "email": "fabien@symfony.com" 1073 | }, 1074 | { 1075 | "name": "Symfony Community", 1076 | "homepage": "https://symfony.com/contributors" 1077 | } 1078 | ], 1079 | "description": "Provides basic utilities for the filesystem", 1080 | "homepage": "https://symfony.com", 1081 | "support": { 1082 | "source": "https://github.com/symfony/filesystem/tree/v5.3.0" 1083 | }, 1084 | "funding": [ 1085 | { 1086 | "url": "https://symfony.com/sponsor", 1087 | "type": "custom" 1088 | }, 1089 | { 1090 | "url": "https://github.com/fabpot", 1091 | "type": "github" 1092 | }, 1093 | { 1094 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1095 | "type": "tidelift" 1096 | } 1097 | ], 1098 | "time": "2021-05-26T17:43:10+00:00" 1099 | }, 1100 | { 1101 | "name": "symfony/finder", 1102 | "version": "v5.3.0", 1103 | "source": { 1104 | "type": "git", 1105 | "url": "https://github.com/symfony/finder.git", 1106 | "reference": "0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6" 1107 | }, 1108 | "dist": { 1109 | "type": "zip", 1110 | "url": "https://api.github.com/repos/symfony/finder/zipball/0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6", 1111 | "reference": "0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6", 1112 | "shasum": "" 1113 | }, 1114 | "require": { 1115 | "php": ">=7.2.5" 1116 | }, 1117 | "type": "library", 1118 | "autoload": { 1119 | "psr-4": { 1120 | "Symfony\\Component\\Finder\\": "" 1121 | }, 1122 | "exclude-from-classmap": [ 1123 | "/Tests/" 1124 | ] 1125 | }, 1126 | "notification-url": "https://packagist.org/downloads/", 1127 | "license": [ 1128 | "MIT" 1129 | ], 1130 | "authors": [ 1131 | { 1132 | "name": "Fabien Potencier", 1133 | "email": "fabien@symfony.com" 1134 | }, 1135 | { 1136 | "name": "Symfony Community", 1137 | "homepage": "https://symfony.com/contributors" 1138 | } 1139 | ], 1140 | "description": "Finds files and directories via an intuitive fluent interface", 1141 | "homepage": "https://symfony.com", 1142 | "support": { 1143 | "source": "https://github.com/symfony/finder/tree/v5.3.0" 1144 | }, 1145 | "funding": [ 1146 | { 1147 | "url": "https://symfony.com/sponsor", 1148 | "type": "custom" 1149 | }, 1150 | { 1151 | "url": "https://github.com/fabpot", 1152 | "type": "github" 1153 | }, 1154 | { 1155 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1156 | "type": "tidelift" 1157 | } 1158 | ], 1159 | "time": "2021-05-26T12:52:38+00:00" 1160 | }, 1161 | { 1162 | "name": "symfony/options-resolver", 1163 | "version": "v5.3.0", 1164 | "source": { 1165 | "type": "git", 1166 | "url": "https://github.com/symfony/options-resolver.git", 1167 | "reference": "162e886ca035869866d233a2bfef70cc28f9bbe5" 1168 | }, 1169 | "dist": { 1170 | "type": "zip", 1171 | "url": "https://api.github.com/repos/symfony/options-resolver/zipball/162e886ca035869866d233a2bfef70cc28f9bbe5", 1172 | "reference": "162e886ca035869866d233a2bfef70cc28f9bbe5", 1173 | "shasum": "" 1174 | }, 1175 | "require": { 1176 | "php": ">=7.2.5", 1177 | "symfony/deprecation-contracts": "^2.1", 1178 | "symfony/polyfill-php73": "~1.0", 1179 | "symfony/polyfill-php80": "^1.15" 1180 | }, 1181 | "type": "library", 1182 | "autoload": { 1183 | "psr-4": { 1184 | "Symfony\\Component\\OptionsResolver\\": "" 1185 | }, 1186 | "exclude-from-classmap": [ 1187 | "/Tests/" 1188 | ] 1189 | }, 1190 | "notification-url": "https://packagist.org/downloads/", 1191 | "license": [ 1192 | "MIT" 1193 | ], 1194 | "authors": [ 1195 | { 1196 | "name": "Fabien Potencier", 1197 | "email": "fabien@symfony.com" 1198 | }, 1199 | { 1200 | "name": "Symfony Community", 1201 | "homepage": "https://symfony.com/contributors" 1202 | } 1203 | ], 1204 | "description": "Provides an improved replacement for the array_replace PHP function", 1205 | "homepage": "https://symfony.com", 1206 | "keywords": [ 1207 | "config", 1208 | "configuration", 1209 | "options" 1210 | ], 1211 | "support": { 1212 | "source": "https://github.com/symfony/options-resolver/tree/v5.3.0" 1213 | }, 1214 | "funding": [ 1215 | { 1216 | "url": "https://symfony.com/sponsor", 1217 | "type": "custom" 1218 | }, 1219 | { 1220 | "url": "https://github.com/fabpot", 1221 | "type": "github" 1222 | }, 1223 | { 1224 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1225 | "type": "tidelift" 1226 | } 1227 | ], 1228 | "time": "2021-05-26T17:43:10+00:00" 1229 | }, 1230 | { 1231 | "name": "symfony/polyfill-ctype", 1232 | "version": "v1.23.0", 1233 | "source": { 1234 | "type": "git", 1235 | "url": "https://github.com/symfony/polyfill-ctype.git", 1236 | "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" 1237 | }, 1238 | "dist": { 1239 | "type": "zip", 1240 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", 1241 | "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", 1242 | "shasum": "" 1243 | }, 1244 | "require": { 1245 | "php": ">=7.1" 1246 | }, 1247 | "suggest": { 1248 | "ext-ctype": "For best performance" 1249 | }, 1250 | "type": "library", 1251 | "extra": { 1252 | "branch-alias": { 1253 | "dev-main": "1.23-dev" 1254 | }, 1255 | "thanks": { 1256 | "name": "symfony/polyfill", 1257 | "url": "https://github.com/symfony/polyfill" 1258 | } 1259 | }, 1260 | "autoload": { 1261 | "psr-4": { 1262 | "Symfony\\Polyfill\\Ctype\\": "" 1263 | }, 1264 | "files": [ 1265 | "bootstrap.php" 1266 | ] 1267 | }, 1268 | "notification-url": "https://packagist.org/downloads/", 1269 | "license": [ 1270 | "MIT" 1271 | ], 1272 | "authors": [ 1273 | { 1274 | "name": "Gert de Pagter", 1275 | "email": "BackEndTea@gmail.com" 1276 | }, 1277 | { 1278 | "name": "Symfony Community", 1279 | "homepage": "https://symfony.com/contributors" 1280 | } 1281 | ], 1282 | "description": "Symfony polyfill for ctype functions", 1283 | "homepage": "https://symfony.com", 1284 | "keywords": [ 1285 | "compatibility", 1286 | "ctype", 1287 | "polyfill", 1288 | "portable" 1289 | ], 1290 | "support": { 1291 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" 1292 | }, 1293 | "funding": [ 1294 | { 1295 | "url": "https://symfony.com/sponsor", 1296 | "type": "custom" 1297 | }, 1298 | { 1299 | "url": "https://github.com/fabpot", 1300 | "type": "github" 1301 | }, 1302 | { 1303 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1304 | "type": "tidelift" 1305 | } 1306 | ], 1307 | "time": "2021-02-19T12:13:01+00:00" 1308 | }, 1309 | { 1310 | "name": "symfony/polyfill-intl-grapheme", 1311 | "version": "v1.23.0", 1312 | "source": { 1313 | "type": "git", 1314 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git", 1315 | "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab" 1316 | }, 1317 | "dist": { 1318 | "type": "zip", 1319 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/24b72c6baa32c746a4d0840147c9715e42bb68ab", 1320 | "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab", 1321 | "shasum": "" 1322 | }, 1323 | "require": { 1324 | "php": ">=7.1" 1325 | }, 1326 | "suggest": { 1327 | "ext-intl": "For best performance" 1328 | }, 1329 | "type": "library", 1330 | "extra": { 1331 | "branch-alias": { 1332 | "dev-main": "1.23-dev" 1333 | }, 1334 | "thanks": { 1335 | "name": "symfony/polyfill", 1336 | "url": "https://github.com/symfony/polyfill" 1337 | } 1338 | }, 1339 | "autoload": { 1340 | "psr-4": { 1341 | "Symfony\\Polyfill\\Intl\\Grapheme\\": "" 1342 | }, 1343 | "files": [ 1344 | "bootstrap.php" 1345 | ] 1346 | }, 1347 | "notification-url": "https://packagist.org/downloads/", 1348 | "license": [ 1349 | "MIT" 1350 | ], 1351 | "authors": [ 1352 | { 1353 | "name": "Nicolas Grekas", 1354 | "email": "p@tchwork.com" 1355 | }, 1356 | { 1357 | "name": "Symfony Community", 1358 | "homepage": "https://symfony.com/contributors" 1359 | } 1360 | ], 1361 | "description": "Symfony polyfill for intl's grapheme_* functions", 1362 | "homepage": "https://symfony.com", 1363 | "keywords": [ 1364 | "compatibility", 1365 | "grapheme", 1366 | "intl", 1367 | "polyfill", 1368 | "portable", 1369 | "shim" 1370 | ], 1371 | "support": { 1372 | "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.0" 1373 | }, 1374 | "funding": [ 1375 | { 1376 | "url": "https://symfony.com/sponsor", 1377 | "type": "custom" 1378 | }, 1379 | { 1380 | "url": "https://github.com/fabpot", 1381 | "type": "github" 1382 | }, 1383 | { 1384 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1385 | "type": "tidelift" 1386 | } 1387 | ], 1388 | "time": "2021-05-27T09:17:38+00:00" 1389 | }, 1390 | { 1391 | "name": "symfony/polyfill-intl-normalizer", 1392 | "version": "v1.23.0", 1393 | "source": { 1394 | "type": "git", 1395 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git", 1396 | "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" 1397 | }, 1398 | "dist": { 1399 | "type": "zip", 1400 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", 1401 | "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", 1402 | "shasum": "" 1403 | }, 1404 | "require": { 1405 | "php": ">=7.1" 1406 | }, 1407 | "suggest": { 1408 | "ext-intl": "For best performance" 1409 | }, 1410 | "type": "library", 1411 | "extra": { 1412 | "branch-alias": { 1413 | "dev-main": "1.23-dev" 1414 | }, 1415 | "thanks": { 1416 | "name": "symfony/polyfill", 1417 | "url": "https://github.com/symfony/polyfill" 1418 | } 1419 | }, 1420 | "autoload": { 1421 | "psr-4": { 1422 | "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 1423 | }, 1424 | "files": [ 1425 | "bootstrap.php" 1426 | ], 1427 | "classmap": [ 1428 | "Resources/stubs" 1429 | ] 1430 | }, 1431 | "notification-url": "https://packagist.org/downloads/", 1432 | "license": [ 1433 | "MIT" 1434 | ], 1435 | "authors": [ 1436 | { 1437 | "name": "Nicolas Grekas", 1438 | "email": "p@tchwork.com" 1439 | }, 1440 | { 1441 | "name": "Symfony Community", 1442 | "homepage": "https://symfony.com/contributors" 1443 | } 1444 | ], 1445 | "description": "Symfony polyfill for intl's Normalizer class and related functions", 1446 | "homepage": "https://symfony.com", 1447 | "keywords": [ 1448 | "compatibility", 1449 | "intl", 1450 | "normalizer", 1451 | "polyfill", 1452 | "portable", 1453 | "shim" 1454 | ], 1455 | "support": { 1456 | "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" 1457 | }, 1458 | "funding": [ 1459 | { 1460 | "url": "https://symfony.com/sponsor", 1461 | "type": "custom" 1462 | }, 1463 | { 1464 | "url": "https://github.com/fabpot", 1465 | "type": "github" 1466 | }, 1467 | { 1468 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1469 | "type": "tidelift" 1470 | } 1471 | ], 1472 | "time": "2021-02-19T12:13:01+00:00" 1473 | }, 1474 | { 1475 | "name": "symfony/polyfill-mbstring", 1476 | "version": "v1.23.0", 1477 | "source": { 1478 | "type": "git", 1479 | "url": "https://github.com/symfony/polyfill-mbstring.git", 1480 | "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1" 1481 | }, 1482 | "dist": { 1483 | "type": "zip", 1484 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2df51500adbaebdc4c38dea4c89a2e131c45c8a1", 1485 | "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1", 1486 | "shasum": "" 1487 | }, 1488 | "require": { 1489 | "php": ">=7.1" 1490 | }, 1491 | "suggest": { 1492 | "ext-mbstring": "For best performance" 1493 | }, 1494 | "type": "library", 1495 | "extra": { 1496 | "branch-alias": { 1497 | "dev-main": "1.23-dev" 1498 | }, 1499 | "thanks": { 1500 | "name": "symfony/polyfill", 1501 | "url": "https://github.com/symfony/polyfill" 1502 | } 1503 | }, 1504 | "autoload": { 1505 | "psr-4": { 1506 | "Symfony\\Polyfill\\Mbstring\\": "" 1507 | }, 1508 | "files": [ 1509 | "bootstrap.php" 1510 | ] 1511 | }, 1512 | "notification-url": "https://packagist.org/downloads/", 1513 | "license": [ 1514 | "MIT" 1515 | ], 1516 | "authors": [ 1517 | { 1518 | "name": "Nicolas Grekas", 1519 | "email": "p@tchwork.com" 1520 | }, 1521 | { 1522 | "name": "Symfony Community", 1523 | "homepage": "https://symfony.com/contributors" 1524 | } 1525 | ], 1526 | "description": "Symfony polyfill for the Mbstring extension", 1527 | "homepage": "https://symfony.com", 1528 | "keywords": [ 1529 | "compatibility", 1530 | "mbstring", 1531 | "polyfill", 1532 | "portable", 1533 | "shim" 1534 | ], 1535 | "support": { 1536 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.0" 1537 | }, 1538 | "funding": [ 1539 | { 1540 | "url": "https://symfony.com/sponsor", 1541 | "type": "custom" 1542 | }, 1543 | { 1544 | "url": "https://github.com/fabpot", 1545 | "type": "github" 1546 | }, 1547 | { 1548 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1549 | "type": "tidelift" 1550 | } 1551 | ], 1552 | "time": "2021-05-27T09:27:20+00:00" 1553 | }, 1554 | { 1555 | "name": "symfony/polyfill-php70", 1556 | "version": "v1.20.0", 1557 | "source": { 1558 | "type": "git", 1559 | "url": "https://github.com/symfony/polyfill-php70.git", 1560 | "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644" 1561 | }, 1562 | "dist": { 1563 | "type": "zip", 1564 | "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/5f03a781d984aae42cebd18e7912fa80f02ee644", 1565 | "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644", 1566 | "shasum": "" 1567 | }, 1568 | "require": { 1569 | "php": ">=7.1" 1570 | }, 1571 | "type": "metapackage", 1572 | "extra": { 1573 | "branch-alias": { 1574 | "dev-main": "1.20-dev" 1575 | }, 1576 | "thanks": { 1577 | "name": "symfony/polyfill", 1578 | "url": "https://github.com/symfony/polyfill" 1579 | } 1580 | }, 1581 | "notification-url": "https://packagist.org/downloads/", 1582 | "license": [ 1583 | "MIT" 1584 | ], 1585 | "authors": [ 1586 | { 1587 | "name": "Nicolas Grekas", 1588 | "email": "p@tchwork.com" 1589 | }, 1590 | { 1591 | "name": "Symfony Community", 1592 | "homepage": "https://symfony.com/contributors" 1593 | } 1594 | ], 1595 | "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", 1596 | "homepage": "https://symfony.com", 1597 | "keywords": [ 1598 | "compatibility", 1599 | "polyfill", 1600 | "portable", 1601 | "shim" 1602 | ], 1603 | "support": { 1604 | "source": "https://github.com/symfony/polyfill-php70/tree/v1.20.0" 1605 | }, 1606 | "funding": [ 1607 | { 1608 | "url": "https://symfony.com/sponsor", 1609 | "type": "custom" 1610 | }, 1611 | { 1612 | "url": "https://github.com/fabpot", 1613 | "type": "github" 1614 | }, 1615 | { 1616 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1617 | "type": "tidelift" 1618 | } 1619 | ], 1620 | "time": "2020-10-23T14:02:19+00:00" 1621 | }, 1622 | { 1623 | "name": "symfony/polyfill-php72", 1624 | "version": "v1.23.0", 1625 | "source": { 1626 | "type": "git", 1627 | "url": "https://github.com/symfony/polyfill-php72.git", 1628 | "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" 1629 | }, 1630 | "dist": { 1631 | "type": "zip", 1632 | "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", 1633 | "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", 1634 | "shasum": "" 1635 | }, 1636 | "require": { 1637 | "php": ">=7.1" 1638 | }, 1639 | "type": "library", 1640 | "extra": { 1641 | "branch-alias": { 1642 | "dev-main": "1.23-dev" 1643 | }, 1644 | "thanks": { 1645 | "name": "symfony/polyfill", 1646 | "url": "https://github.com/symfony/polyfill" 1647 | } 1648 | }, 1649 | "autoload": { 1650 | "psr-4": { 1651 | "Symfony\\Polyfill\\Php72\\": "" 1652 | }, 1653 | "files": [ 1654 | "bootstrap.php" 1655 | ] 1656 | }, 1657 | "notification-url": "https://packagist.org/downloads/", 1658 | "license": [ 1659 | "MIT" 1660 | ], 1661 | "authors": [ 1662 | { 1663 | "name": "Nicolas Grekas", 1664 | "email": "p@tchwork.com" 1665 | }, 1666 | { 1667 | "name": "Symfony Community", 1668 | "homepage": "https://symfony.com/contributors" 1669 | } 1670 | ], 1671 | "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", 1672 | "homepage": "https://symfony.com", 1673 | "keywords": [ 1674 | "compatibility", 1675 | "polyfill", 1676 | "portable", 1677 | "shim" 1678 | ], 1679 | "support": { 1680 | "source": "https://github.com/symfony/polyfill-php72/tree/v1.23.0" 1681 | }, 1682 | "funding": [ 1683 | { 1684 | "url": "https://symfony.com/sponsor", 1685 | "type": "custom" 1686 | }, 1687 | { 1688 | "url": "https://github.com/fabpot", 1689 | "type": "github" 1690 | }, 1691 | { 1692 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1693 | "type": "tidelift" 1694 | } 1695 | ], 1696 | "time": "2021-05-27T09:17:38+00:00" 1697 | }, 1698 | { 1699 | "name": "symfony/polyfill-php73", 1700 | "version": "v1.23.0", 1701 | "source": { 1702 | "type": "git", 1703 | "url": "https://github.com/symfony/polyfill-php73.git", 1704 | "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" 1705 | }, 1706 | "dist": { 1707 | "type": "zip", 1708 | "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", 1709 | "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", 1710 | "shasum": "" 1711 | }, 1712 | "require": { 1713 | "php": ">=7.1" 1714 | }, 1715 | "type": "library", 1716 | "extra": { 1717 | "branch-alias": { 1718 | "dev-main": "1.23-dev" 1719 | }, 1720 | "thanks": { 1721 | "name": "symfony/polyfill", 1722 | "url": "https://github.com/symfony/polyfill" 1723 | } 1724 | }, 1725 | "autoload": { 1726 | "psr-4": { 1727 | "Symfony\\Polyfill\\Php73\\": "" 1728 | }, 1729 | "files": [ 1730 | "bootstrap.php" 1731 | ], 1732 | "classmap": [ 1733 | "Resources/stubs" 1734 | ] 1735 | }, 1736 | "notification-url": "https://packagist.org/downloads/", 1737 | "license": [ 1738 | "MIT" 1739 | ], 1740 | "authors": [ 1741 | { 1742 | "name": "Nicolas Grekas", 1743 | "email": "p@tchwork.com" 1744 | }, 1745 | { 1746 | "name": "Symfony Community", 1747 | "homepage": "https://symfony.com/contributors" 1748 | } 1749 | ], 1750 | "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", 1751 | "homepage": "https://symfony.com", 1752 | "keywords": [ 1753 | "compatibility", 1754 | "polyfill", 1755 | "portable", 1756 | "shim" 1757 | ], 1758 | "support": { 1759 | "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0" 1760 | }, 1761 | "funding": [ 1762 | { 1763 | "url": "https://symfony.com/sponsor", 1764 | "type": "custom" 1765 | }, 1766 | { 1767 | "url": "https://github.com/fabpot", 1768 | "type": "github" 1769 | }, 1770 | { 1771 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1772 | "type": "tidelift" 1773 | } 1774 | ], 1775 | "time": "2021-02-19T12:13:01+00:00" 1776 | }, 1777 | { 1778 | "name": "symfony/polyfill-php80", 1779 | "version": "v1.23.0", 1780 | "source": { 1781 | "type": "git", 1782 | "url": "https://github.com/symfony/polyfill-php80.git", 1783 | "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0" 1784 | }, 1785 | "dist": { 1786 | "type": "zip", 1787 | "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0", 1788 | "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0", 1789 | "shasum": "" 1790 | }, 1791 | "require": { 1792 | "php": ">=7.1" 1793 | }, 1794 | "type": "library", 1795 | "extra": { 1796 | "branch-alias": { 1797 | "dev-main": "1.23-dev" 1798 | }, 1799 | "thanks": { 1800 | "name": "symfony/polyfill", 1801 | "url": "https://github.com/symfony/polyfill" 1802 | } 1803 | }, 1804 | "autoload": { 1805 | "psr-4": { 1806 | "Symfony\\Polyfill\\Php80\\": "" 1807 | }, 1808 | "files": [ 1809 | "bootstrap.php" 1810 | ], 1811 | "classmap": [ 1812 | "Resources/stubs" 1813 | ] 1814 | }, 1815 | "notification-url": "https://packagist.org/downloads/", 1816 | "license": [ 1817 | "MIT" 1818 | ], 1819 | "authors": [ 1820 | { 1821 | "name": "Ion Bazan", 1822 | "email": "ion.bazan@gmail.com" 1823 | }, 1824 | { 1825 | "name": "Nicolas Grekas", 1826 | "email": "p@tchwork.com" 1827 | }, 1828 | { 1829 | "name": "Symfony Community", 1830 | "homepage": "https://symfony.com/contributors" 1831 | } 1832 | ], 1833 | "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", 1834 | "homepage": "https://symfony.com", 1835 | "keywords": [ 1836 | "compatibility", 1837 | "polyfill", 1838 | "portable", 1839 | "shim" 1840 | ], 1841 | "support": { 1842 | "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.0" 1843 | }, 1844 | "funding": [ 1845 | { 1846 | "url": "https://symfony.com/sponsor", 1847 | "type": "custom" 1848 | }, 1849 | { 1850 | "url": "https://github.com/fabpot", 1851 | "type": "github" 1852 | }, 1853 | { 1854 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1855 | "type": "tidelift" 1856 | } 1857 | ], 1858 | "time": "2021-02-19T12:13:01+00:00" 1859 | }, 1860 | { 1861 | "name": "symfony/process", 1862 | "version": "v5.3.0", 1863 | "source": { 1864 | "type": "git", 1865 | "url": "https://github.com/symfony/process.git", 1866 | "reference": "53e36cb1c160505cdaf1ef201501669c4c317191" 1867 | }, 1868 | "dist": { 1869 | "type": "zip", 1870 | "url": "https://api.github.com/repos/symfony/process/zipball/53e36cb1c160505cdaf1ef201501669c4c317191", 1871 | "reference": "53e36cb1c160505cdaf1ef201501669c4c317191", 1872 | "shasum": "" 1873 | }, 1874 | "require": { 1875 | "php": ">=7.2.5", 1876 | "symfony/polyfill-php80": "^1.15" 1877 | }, 1878 | "type": "library", 1879 | "autoload": { 1880 | "psr-4": { 1881 | "Symfony\\Component\\Process\\": "" 1882 | }, 1883 | "exclude-from-classmap": [ 1884 | "/Tests/" 1885 | ] 1886 | }, 1887 | "notification-url": "https://packagist.org/downloads/", 1888 | "license": [ 1889 | "MIT" 1890 | ], 1891 | "authors": [ 1892 | { 1893 | "name": "Fabien Potencier", 1894 | "email": "fabien@symfony.com" 1895 | }, 1896 | { 1897 | "name": "Symfony Community", 1898 | "homepage": "https://symfony.com/contributors" 1899 | } 1900 | ], 1901 | "description": "Executes commands in sub-processes", 1902 | "homepage": "https://symfony.com", 1903 | "support": { 1904 | "source": "https://github.com/symfony/process/tree/v5.3.0" 1905 | }, 1906 | "funding": [ 1907 | { 1908 | "url": "https://symfony.com/sponsor", 1909 | "type": "custom" 1910 | }, 1911 | { 1912 | "url": "https://github.com/fabpot", 1913 | "type": "github" 1914 | }, 1915 | { 1916 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1917 | "type": "tidelift" 1918 | } 1919 | ], 1920 | "time": "2021-05-26T12:52:38+00:00" 1921 | }, 1922 | { 1923 | "name": "symfony/service-contracts", 1924 | "version": "v2.4.0", 1925 | "source": { 1926 | "type": "git", 1927 | "url": "https://github.com/symfony/service-contracts.git", 1928 | "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb" 1929 | }, 1930 | "dist": { 1931 | "type": "zip", 1932 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", 1933 | "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", 1934 | "shasum": "" 1935 | }, 1936 | "require": { 1937 | "php": ">=7.2.5", 1938 | "psr/container": "^1.1" 1939 | }, 1940 | "suggest": { 1941 | "symfony/service-implementation": "" 1942 | }, 1943 | "type": "library", 1944 | "extra": { 1945 | "branch-alias": { 1946 | "dev-main": "2.4-dev" 1947 | }, 1948 | "thanks": { 1949 | "name": "symfony/contracts", 1950 | "url": "https://github.com/symfony/contracts" 1951 | } 1952 | }, 1953 | "autoload": { 1954 | "psr-4": { 1955 | "Symfony\\Contracts\\Service\\": "" 1956 | } 1957 | }, 1958 | "notification-url": "https://packagist.org/downloads/", 1959 | "license": [ 1960 | "MIT" 1961 | ], 1962 | "authors": [ 1963 | { 1964 | "name": "Nicolas Grekas", 1965 | "email": "p@tchwork.com" 1966 | }, 1967 | { 1968 | "name": "Symfony Community", 1969 | "homepage": "https://symfony.com/contributors" 1970 | } 1971 | ], 1972 | "description": "Generic abstractions related to writing services", 1973 | "homepage": "https://symfony.com", 1974 | "keywords": [ 1975 | "abstractions", 1976 | "contracts", 1977 | "decoupling", 1978 | "interfaces", 1979 | "interoperability", 1980 | "standards" 1981 | ], 1982 | "support": { 1983 | "source": "https://github.com/symfony/service-contracts/tree/v2.4.0" 1984 | }, 1985 | "funding": [ 1986 | { 1987 | "url": "https://symfony.com/sponsor", 1988 | "type": "custom" 1989 | }, 1990 | { 1991 | "url": "https://github.com/fabpot", 1992 | "type": "github" 1993 | }, 1994 | { 1995 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1996 | "type": "tidelift" 1997 | } 1998 | ], 1999 | "time": "2021-04-01T10:43:52+00:00" 2000 | }, 2001 | { 2002 | "name": "symfony/stopwatch", 2003 | "version": "v5.3.0", 2004 | "source": { 2005 | "type": "git", 2006 | "url": "https://github.com/symfony/stopwatch.git", 2007 | "reference": "313d02f59d6543311865007e5ff4ace05b35ee65" 2008 | }, 2009 | "dist": { 2010 | "type": "zip", 2011 | "url": "https://api.github.com/repos/symfony/stopwatch/zipball/313d02f59d6543311865007e5ff4ace05b35ee65", 2012 | "reference": "313d02f59d6543311865007e5ff4ace05b35ee65", 2013 | "shasum": "" 2014 | }, 2015 | "require": { 2016 | "php": ">=7.2.5", 2017 | "symfony/service-contracts": "^1.0|^2" 2018 | }, 2019 | "type": "library", 2020 | "autoload": { 2021 | "psr-4": { 2022 | "Symfony\\Component\\Stopwatch\\": "" 2023 | }, 2024 | "exclude-from-classmap": [ 2025 | "/Tests/" 2026 | ] 2027 | }, 2028 | "notification-url": "https://packagist.org/downloads/", 2029 | "license": [ 2030 | "MIT" 2031 | ], 2032 | "authors": [ 2033 | { 2034 | "name": "Fabien Potencier", 2035 | "email": "fabien@symfony.com" 2036 | }, 2037 | { 2038 | "name": "Symfony Community", 2039 | "homepage": "https://symfony.com/contributors" 2040 | } 2041 | ], 2042 | "description": "Provides a way to profile code", 2043 | "homepage": "https://symfony.com", 2044 | "support": { 2045 | "source": "https://github.com/symfony/stopwatch/tree/v5.3.0" 2046 | }, 2047 | "funding": [ 2048 | { 2049 | "url": "https://symfony.com/sponsor", 2050 | "type": "custom" 2051 | }, 2052 | { 2053 | "url": "https://github.com/fabpot", 2054 | "type": "github" 2055 | }, 2056 | { 2057 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2058 | "type": "tidelift" 2059 | } 2060 | ], 2061 | "time": "2021-05-26T17:43:10+00:00" 2062 | }, 2063 | { 2064 | "name": "symfony/string", 2065 | "version": "v5.3.0", 2066 | "source": { 2067 | "type": "git", 2068 | "url": "https://github.com/symfony/string.git", 2069 | "reference": "a9a0f8b6aafc5d2d1c116dcccd1573a95153515b" 2070 | }, 2071 | "dist": { 2072 | "type": "zip", 2073 | "url": "https://api.github.com/repos/symfony/string/zipball/a9a0f8b6aafc5d2d1c116dcccd1573a95153515b", 2074 | "reference": "a9a0f8b6aafc5d2d1c116dcccd1573a95153515b", 2075 | "shasum": "" 2076 | }, 2077 | "require": { 2078 | "php": ">=7.2.5", 2079 | "symfony/polyfill-ctype": "~1.8", 2080 | "symfony/polyfill-intl-grapheme": "~1.0", 2081 | "symfony/polyfill-intl-normalizer": "~1.0", 2082 | "symfony/polyfill-mbstring": "~1.0", 2083 | "symfony/polyfill-php80": "~1.15" 2084 | }, 2085 | "require-dev": { 2086 | "symfony/error-handler": "^4.4|^5.0", 2087 | "symfony/http-client": "^4.4|^5.0", 2088 | "symfony/translation-contracts": "^1.1|^2", 2089 | "symfony/var-exporter": "^4.4|^5.0" 2090 | }, 2091 | "type": "library", 2092 | "autoload": { 2093 | "psr-4": { 2094 | "Symfony\\Component\\String\\": "" 2095 | }, 2096 | "files": [ 2097 | "Resources/functions.php" 2098 | ], 2099 | "exclude-from-classmap": [ 2100 | "/Tests/" 2101 | ] 2102 | }, 2103 | "notification-url": "https://packagist.org/downloads/", 2104 | "license": [ 2105 | "MIT" 2106 | ], 2107 | "authors": [ 2108 | { 2109 | "name": "Nicolas Grekas", 2110 | "email": "p@tchwork.com" 2111 | }, 2112 | { 2113 | "name": "Symfony Community", 2114 | "homepage": "https://symfony.com/contributors" 2115 | } 2116 | ], 2117 | "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", 2118 | "homepage": "https://symfony.com", 2119 | "keywords": [ 2120 | "grapheme", 2121 | "i18n", 2122 | "string", 2123 | "unicode", 2124 | "utf-8", 2125 | "utf8" 2126 | ], 2127 | "support": { 2128 | "source": "https://github.com/symfony/string/tree/v5.3.0" 2129 | }, 2130 | "funding": [ 2131 | { 2132 | "url": "https://symfony.com/sponsor", 2133 | "type": "custom" 2134 | }, 2135 | { 2136 | "url": "https://github.com/fabpot", 2137 | "type": "github" 2138 | }, 2139 | { 2140 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2141 | "type": "tidelift" 2142 | } 2143 | ], 2144 | "time": "2021-05-26T17:43:10+00:00" 2145 | } 2146 | ], 2147 | "aliases": [], 2148 | "minimum-stability": "stable", 2149 | "stability-flags": [], 2150 | "prefer-stable": false, 2151 | "prefer-lowest": false, 2152 | "platform": [], 2153 | "platform-dev": [], 2154 | "platform-overrides": { 2155 | "php": "7.3" 2156 | }, 2157 | "plugin-api-version": "2.0.0" 2158 | } 2159 | --------------------------------------------------------------------------------