From a98bc909ecd28882fdecab63e854f5776fcaec16 Mon Sep 17 00:00:00 2001 From: "Misha M.-Kupriyanov" Date: Thu, 12 Sep 2024 16:04:49 +0200 Subject: [PATCH 1/9] chore: add generated code Signed-off-by: Misha M.-Kupriyanov --- .eslintrc.js | 9 + .github/dependabot.yml | 50 ++ .../block-unconventional-commits.yml | 31 + .github/workflows/fixup.yml | 33 + .github/workflows/lint-eslint.yml | 95 +++ .github/workflows/lint-info-xml.yml | 33 + .github/workflows/lint-php-cs.yml | 45 ++ .github/workflows/lint-php.yml | 67 ++ .github/workflows/lint-stylelint.yml | 48 ++ .github/workflows/npm-audit-fix.yml | 73 ++ .github/workflows/openapi.yml | 85 +++ .github/workflows/psalm-matrix.yml | 68 ++ .../update-nextcloud-ocp-approve-merge.yml | 49 ++ .../workflows/update-nextcloud-ocp-matrix.yml | 94 +++ .gitignore | 11 + .nvmrc | 1 + .php-cs-fixer.dist.php | 19 + CHANGELOG.md | 12 + CODE_OF_CONDUCT.md | 9 + LICENSE | 661 ++++++++++++++++++ README.md | 25 + appinfo/info.xml | 26 + composer.json | 49 ++ img/app-dark.svg | 1 + img/app.svg | 1 + lib/AppInfo/Application.php | 25 + lib/Controller/ApiController.php | 31 + lib/Controller/PageController.php | 29 + openapi.json | 121 ++++ package.json | 31 + psalm.xml | 20 + src/App.vue | 26 + src/main.js | 6 + stylelint.config.js | 3 + templates/index.php | 11 + tests/bootstrap.php | 9 + tests/phpunit.xml | 12 + tests/unit/Controller/ApiTest.php | 19 + vendor-bin/cs-fixer/composer.json | 10 + vendor-bin/openapi-extractor/composer.json | 16 + vendor-bin/phpunit/composer.json | 10 + vendor-bin/psalm/composer.json | 10 + webpack.js | 27 + 43 files changed, 2011 insertions(+) create mode 100644 .eslintrc.js create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/block-unconventional-commits.yml create mode 100644 .github/workflows/fixup.yml create mode 100644 .github/workflows/lint-eslint.yml create mode 100644 .github/workflows/lint-info-xml.yml create mode 100644 .github/workflows/lint-php-cs.yml create mode 100644 .github/workflows/lint-php.yml create mode 100644 .github/workflows/lint-stylelint.yml create mode 100644 .github/workflows/npm-audit-fix.yml create mode 100644 .github/workflows/openapi.yml create mode 100644 .github/workflows/psalm-matrix.yml create mode 100644 .github/workflows/update-nextcloud-ocp-approve-merge.yml create mode 100644 .github/workflows/update-nextcloud-ocp-matrix.yml create mode 100644 .gitignore create mode 100644 .nvmrc create mode 100644 .php-cs-fixer.dist.php create mode 100644 CHANGELOG.md create mode 100644 CODE_OF_CONDUCT.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 appinfo/info.xml create mode 100644 composer.json create mode 100644 img/app-dark.svg create mode 100644 img/app.svg create mode 100644 lib/AppInfo/Application.php create mode 100644 lib/Controller/ApiController.php create mode 100644 lib/Controller/PageController.php create mode 100644 openapi.json create mode 100644 package.json create mode 100644 psalm.xml create mode 100644 src/App.vue create mode 100644 src/main.js create mode 100644 stylelint.config.js create mode 100644 templates/index.php create mode 100644 tests/bootstrap.php create mode 100644 tests/phpunit.xml create mode 100644 tests/unit/Controller/ApiTest.php create mode 100644 vendor-bin/cs-fixer/composer.json create mode 100644 vendor-bin/openapi-extractor/composer.json create mode 100644 vendor-bin/phpunit/composer.json create mode 100644 vendor-bin/psalm/composer.json create mode 100644 webpack.js diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..9175db9 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,9 @@ +module.exports = { + extends: [ + '@nextcloud', + ], + rules: { + 'jsdoc/require-jsdoc': 'off', + 'vue/first-attribute-linebreak': 'off', + }, +} diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..852b265 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,50 @@ +version: 2 +updates: + - package-ecosystem: composer + directory: "/" + schedule: + interval: weekly + day: saturday + time: "03:00" + timezone: Europe/Paris + open-pull-requests-limit: 10 + - package-ecosystem: composer + directory: "/vendor-bin/cs-fixer" + schedule: + interval: weekly + day: saturday + time: "03:00" + timezone: Europe/Paris + open-pull-requests-limit: 10 + - package-ecosystem: composer + directory: "/vendor-bin/openapi-extractor" + schedule: + interval: weekly + day: saturday + time: "03:00" + timezone: Europe/Paris + open-pull-requests-limit: 10 + - package-ecosystem: composer + directory: "/vendor-bin/phpunit" + schedule: + interval: weekly + day: saturday + time: "03:00" + timezone: Europe/Paris + open-pull-requests-limit: 10 + - package-ecosystem: composer + directory: "/vendor-bin/psalm" + schedule: + interval: weekly + day: saturday + time: "03:00" + timezone: Europe/Paris + open-pull-requests-limit: 10 + - package-ecosystem: npm + directory: "/" + schedule: + interval: weekly + day: saturday + time: "03:00" + timezone: Europe/Paris + open-pull-requests-limit: 10 diff --git a/.github/workflows/block-unconventional-commits.yml b/.github/workflows/block-unconventional-commits.yml new file mode 100644 index 0000000..295c30b --- /dev/null +++ b/.github/workflows/block-unconventional-commits.yml @@ -0,0 +1,31 @@ +# This workflow is provided via the organization template repository +# +# https://github.com/nextcloud/.github +# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization + +name: Block unconventional commits + +on: + pull_request: + types: [opened, ready_for_review, reopened, synchronize] + +permissions: + contents: read + +concurrency: + group: block-unconventional-commits-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + block-unconventional-commits: + name: Block unconventional commits + + runs-on: ubuntu-latest-low + + steps: + - name: Checkout + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - uses: webiny/action-conventional-commits@8bc41ff4e7d423d56fa4905f6ff79209a78776c7 # v1.3.0 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/fixup.yml b/.github/workflows/fixup.yml new file mode 100644 index 0000000..98d4992 --- /dev/null +++ b/.github/workflows/fixup.yml @@ -0,0 +1,33 @@ +# This workflow is provided via the organization template repository +# +# https://github.com/nextcloud/.github +# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization + +name: Block fixup and squash commits + +on: + pull_request: + types: [opened, ready_for_review, reopened, synchronize] + +permissions: + contents: read + +concurrency: + group: fixup-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + commit-message-check: + if: github.event.pull_request.draft == false + + permissions: + pull-requests: write + name: Block fixup and squash commits + + runs-on: ubuntu-latest-low + + steps: + - name: Run check + uses: skjnldsv/block-fixup-merge-action@42d26e1b536ce61e5cf467d65fb76caf4aa85acf # v1 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/lint-eslint.yml b/.github/workflows/lint-eslint.yml new file mode 100644 index 0000000..d0a8a2f --- /dev/null +++ b/.github/workflows/lint-eslint.yml @@ -0,0 +1,95 @@ +# This workflow is provided via the organization template repository +# +# https://github.com/nextcloud/.github +# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization +# +# Use lint-eslint together with lint-eslint-when-unrelated to make eslint a required check for GitHub actions +# https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks#handling-skipped-but-required-checks + +name: Lint eslint + +on: pull_request + +permissions: + contents: read + +concurrency: + group: lint-eslint-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + changes: + runs-on: ubuntu-latest-low + + outputs: + src: ${{ steps.changes.outputs.src}} + + steps: + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: changes + continue-on-error: true + with: + filters: | + src: + - '.github/workflows/**' + - 'src/**' + - 'appinfo/info.xml' + - 'package.json' + - 'package-lock.json' + - 'tsconfig.json' + - '.eslintrc.*' + - '.eslintignore' + - '**.js' + - '**.ts' + - '**.vue' + + lint: + runs-on: ubuntu-latest + + needs: changes + if: needs.changes.outputs.src != 'false' + + name: NPM lint + + steps: + - name: Checkout + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - name: Read package.json node and npm engines version + uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2 + id: versions + with: + fallbackNode: '^20' + fallbackNpm: '^10' + + - name: Set up node ${{ steps.versions.outputs.nodeVersion }} + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3 + with: + node-version: ${{ steps.versions.outputs.nodeVersion }} + + - name: Set up npm ${{ steps.versions.outputs.npmVersion }} + run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}" + + - name: Install dependencies + env: + CYPRESS_INSTALL_BINARY: 0 + PUPPETEER_SKIP_DOWNLOAD: true + run: npm ci + + - name: Lint + run: npm run lint + + summary: + permissions: + contents: none + runs-on: ubuntu-latest-low + needs: [changes, lint] + + if: always() + + # This is the summary, we just avoid to rename it so that branch protection rules still match + name: eslint + + steps: + - name: Summary status + run: if ${{ needs.changes.outputs.src != 'false' && needs.lint.result != 'success' }}; then exit 1; fi diff --git a/.github/workflows/lint-info-xml.yml b/.github/workflows/lint-info-xml.yml new file mode 100644 index 0000000..492e8a0 --- /dev/null +++ b/.github/workflows/lint-info-xml.yml @@ -0,0 +1,33 @@ +# This workflow is provided via the organization template repository +# +# https://github.com/nextcloud/.github +# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization + +name: Lint info.xml + +on: pull_request + +permissions: + contents: read + +concurrency: + group: lint-info-xml-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + xml-linters: + runs-on: ubuntu-latest-low + + name: info.xml lint + steps: + - name: Checkout + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - name: Download schema + run: wget https://raw.githubusercontent.com/nextcloud/appstore/master/nextcloudappstore/api/v1/release/info.xsd + + - name: Lint info.xml + uses: ChristophWurst/xmllint-action@36f2a302f84f8c83fceea0b9c59e1eb4a616d3c1 # v1.2 + with: + xml-file: ./appinfo/info.xml + xml-schema-file: ./info.xsd diff --git a/.github/workflows/lint-php-cs.yml b/.github/workflows/lint-php-cs.yml new file mode 100644 index 0000000..1ffee78 --- /dev/null +++ b/.github/workflows/lint-php-cs.yml @@ -0,0 +1,45 @@ +# This workflow is provided via the organization template repository +# +# https://github.com/nextcloud/.github +# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization + +name: Lint php-cs + +on: pull_request + +permissions: + contents: read + +concurrency: + group: lint-php-cs-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + lint: + runs-on: ubuntu-latest + + name: php-cs + + steps: + - name: Checkout + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - name: Get php version + id: versions + uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 + + - name: Set up php${{ steps.versions.outputs.php-available }} + uses: shivammathur/setup-php@a4e22b60bbb9c1021113f2860347b0759f66fe5d # v2 + with: + php-version: ${{ steps.versions.outputs.php-available }} + extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite + coverage: none + ini-file: development + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Install dependencies + run: composer i + + - name: Lint + run: composer run cs:check || ( echo 'Please run `composer run cs:fix` to format your code' && exit 1 ) diff --git a/.github/workflows/lint-php.yml b/.github/workflows/lint-php.yml new file mode 100644 index 0000000..c37ab3f --- /dev/null +++ b/.github/workflows/lint-php.yml @@ -0,0 +1,67 @@ +# This workflow is provided via the organization template repository +# +# https://github.com/nextcloud/.github +# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization + +name: Lint php + +on: pull_request + +permissions: + contents: read + +concurrency: + group: lint-php-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + matrix: + runs-on: ubuntu-latest-low + outputs: + php-versions: ${{ steps.versions.outputs.php-versions }} + steps: + - name: Checkout app + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Get version matrix + id: versions + uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.0.0 + + php-lint: + runs-on: ubuntu-latest + needs: matrix + strategy: + matrix: + php-versions: ${{fromJson(needs.matrix.outputs.php-versions)}} + + name: php-lint + + steps: + - name: Checkout + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - name: Set up php ${{ matrix.php-versions }} + uses: shivammathur/setup-php@a4e22b60bbb9c1021113f2860347b0759f66fe5d # v2 + with: + php-version: ${{ matrix.php-versions }} + extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite + coverage: none + ini-file: development + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Lint + run: composer run lint + + summary: + permissions: + contents: none + runs-on: ubuntu-latest-low + needs: php-lint + + if: always() + + name: php-lint-summary + + steps: + - name: Summary status + run: if ${{ needs.php-lint.result != 'success' && needs.php-lint.result != 'skipped' }}; then exit 1; fi diff --git a/.github/workflows/lint-stylelint.yml b/.github/workflows/lint-stylelint.yml new file mode 100644 index 0000000..4effd42 --- /dev/null +++ b/.github/workflows/lint-stylelint.yml @@ -0,0 +1,48 @@ +# This workflow is provided via the organization template repository +# +# https://github.com/nextcloud/.github +# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization + +name: Lint stylelint + +on: pull_request + +permissions: + contents: read + +concurrency: + group: lint-stylelint-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + lint: + runs-on: ubuntu-latest + + name: stylelint + + steps: + - name: Checkout + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - name: Read package.json node and npm engines version + uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2 + id: versions + with: + fallbackNode: '^20' + fallbackNpm: '^10' + + - name: Set up node ${{ steps.versions.outputs.nodeVersion }} + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3 + with: + node-version: ${{ steps.versions.outputs.nodeVersion }} + + - name: Set up npm ${{ steps.versions.outputs.npmVersion }} + run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}" + + - name: Install dependencies + env: + CYPRESS_INSTALL_BINARY: 0 + run: npm ci + + - name: Lint + run: npm run stylelint diff --git a/.github/workflows/npm-audit-fix.yml b/.github/workflows/npm-audit-fix.yml new file mode 100644 index 0000000..0fa447f --- /dev/null +++ b/.github/workflows/npm-audit-fix.yml @@ -0,0 +1,73 @@ +# This workflow is provided via the organization template repository +# +# https://github.com/nextcloud/.github +# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization + +name: Npm audit fix and compile + +on: + workflow_dispatch: + schedule: + # At 2:30 on Sundays + - cron: '30 2 * * 0' + +jobs: + build: + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + branches: ['main', 'master', 'stable29', 'stable28', 'stable27'] + + name: npm-audit-fix-${{ matrix.branches }} + + steps: + - name: Checkout + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + ref: ${{ matrix.branches }} + + - name: Read package.json node and npm engines version + uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2 + id: versions + with: + fallbackNode: '^20' + fallbackNpm: '^10' + + - name: Set up node ${{ steps.versions.outputs.nodeVersion }} + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3 + with: + node-version: ${{ steps.versions.outputs.nodeVersion }} + + - name: Set up npm ${{ steps.versions.outputs.npmVersion }} + run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}" + + - name: Fix npm audit + run: | + npm audit fix + + - name: Run npm ci and npm run build + if: always() + env: + CYPRESS_INSTALL_BINARY: 0 + run: | + npm ci + npm run build --if-present + + - name: Create Pull Request + if: always() + uses: peter-evans/create-pull-request@a4f52f8033a6168103c2538976c07b467e8163bc # v6.0.1 + with: + token: ${{ secrets.COMMAND_BOT_PAT }} + commit-message: "fix(deps): fix npm audit" + committer: GitHub + author: nextcloud-command + signoff: true + branch: automated/noid/${{ matrix.branches }}-fix-npm-audit + title: "[${{ matrix.branches }}] Fix npm audit" + body: | + Auto-generated fix of npm audit + labels: | + dependencies + 3. to review diff --git a/.github/workflows/openapi.yml b/.github/workflows/openapi.yml new file mode 100644 index 0000000..b0c3ce2 --- /dev/null +++ b/.github/workflows/openapi.yml @@ -0,0 +1,85 @@ +name: OpenAPI + +on: pull_request + +permissions: + contents: read + +concurrency: + group: openapi-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + openapi: + runs-on: ubuntu-latest + + if: ${{ github.repository_owner != 'nextcloud-gmbh' }} + + steps: + - name: Checkout + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - name: Get php version + id: php_versions + uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 + + - name: Set up php + uses: shivammathur/setup-php@a4e22b60bbb9c1021113f2860347b0759f66fe5d # v2 + with: + php-version: ${{ steps.php_versions.outputs.php-available }} + extensions: xml + coverage: none + ini-file: development + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Check Typescript OpenApi types + id: check_typescript_openapi + uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0 + with: + files: "src/types/openapi/openapi*.ts" + + - name: Read package.json node and npm engines version + if: steps.check_typescript_openapi.outputs.files_exists == 'true' + uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2 + id: node_versions + # Continue if no package.json + continue-on-error: true + with: + fallbackNode: '^20' + fallbackNpm: '^10' + + - name: Set up node ${{ steps.node_versions.outputs.nodeVersion }} + if: ${{ steps.node_versions.outputs.nodeVersion }} + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + with: + node-version: ${{ steps.node_versions.outputs.nodeVersion }} + + - name: Set up npm ${{ steps.node_versions.outputs.npmVersion }} + if: ${{ steps.node_versions.outputs.nodeVersion }} + run: npm i -g npm@"${{ steps.node_versions.outputs.npmVersion }}" + + - name: Install dependencies & build + if: ${{ steps.node_versions.outputs.nodeVersion }} + env: + CYPRESS_INSTALL_BINARY: 0 + PUPPETEER_SKIP_DOWNLOAD: true + run: | + npm ci + + - name: Set up dependencies + run: composer i + + - name: Regenerate OpenAPI + run: composer run openapi + + - name: Check openapi*.json and typescript changes + run: | + bash -c "[[ ! \"`git status --porcelain `\" ]] || (echo 'Please run \"composer run openapi\" and commit the openapi*.json files and (if applicable) src/types/openapi/openapi*.ts, see the section \"Show changes on failure\" for details' && exit 1)" + + - name: Show changes on failure + if: failure() + run: | + git status + git --no-pager diff + exit 1 # make it red to grab attention diff --git a/.github/workflows/psalm-matrix.yml b/.github/workflows/psalm-matrix.yml new file mode 100644 index 0000000..8e3d42f --- /dev/null +++ b/.github/workflows/psalm-matrix.yml @@ -0,0 +1,68 @@ +# This workflow is provided via the organization template repository +# +# https://github.com/nextcloud/.github +# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization + +name: Static analysis + +on: pull_request + +concurrency: + group: psalm-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + matrix: + runs-on: ubuntu-latest-low + outputs: + ocp-matrix: ${{ steps.versions.outputs.ocp-matrix }} + steps: + - name: Checkout app + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Get version matrix + id: versions + uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 + + static-analysis: + runs-on: ubuntu-latest + needs: matrix + strategy: + # do not stop on another job's failure + fail-fast: false + matrix: ${{ fromJson(needs.matrix.outputs.ocp-matrix) }} + + name: static-psalm-analysis ${{ matrix.ocp-version }} + steps: + - name: Checkout + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - name: Set up php${{ matrix.php-versions }} + uses: shivammathur/setup-php@a4e22b60bbb9c1021113f2860347b0759f66fe5d # v2 + with: + php-version: ${{ matrix.php-versions }} + extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite + coverage: none + ini-file: development + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Install dependencies + run: composer i + + - name: Install dependencies + run: composer require --dev nextcloud/ocp:${{ matrix.ocp-version }} --ignore-platform-reqs --with-dependencies + + - name: Run coding standards check + run: composer run psalm + + summary: + runs-on: ubuntu-latest-low + needs: static-analysis + + if: always() + + name: static-psalm-analysis-summary + + steps: + - name: Summary status + run: if ${{ needs.static-analysis.result != 'success' }}; then exit 1; fi diff --git a/.github/workflows/update-nextcloud-ocp-approve-merge.yml b/.github/workflows/update-nextcloud-ocp-approve-merge.yml new file mode 100644 index 0000000..9d24f73 --- /dev/null +++ b/.github/workflows/update-nextcloud-ocp-approve-merge.yml @@ -0,0 +1,49 @@ +# This workflow is provided via the organization template repository +# +# https://github.com/nextcloud/.github +# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization + +name: Auto approve nextcloud/ocp + +on: + pull_request_target: + branches: + - main + - master + - stable* + +permissions: + contents: read + +concurrency: + group: update-nextcloud-ocp-approve-merge-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + auto-approve-merge: + if: github.actor == 'nextcloud-command' + runs-on: ubuntu-latest-low + permissions: + # for hmarr/auto-approve-action to approve PRs + pull-requests: write + # for alexwilson/enable-github-automerge-action to approve PRs + contents: write + + steps: + - uses: mdecoleman/pr-branch-name@bab4c71506bcd299fb350af63bb8e53f2940a599 # v2.0.0 + id: branchname + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + + # GitHub actions bot approve + - uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v2 + if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-nextcloud-ocp') + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + + # Enable GitHub auto merge + - name: Auto merge + uses: alexwilson/enable-github-automerge-action@56e3117d1ae1540309dc8f7a9f2825bc3c5f06ff # main + if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-nextcloud-ocp') + with: + github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/update-nextcloud-ocp-matrix.yml b/.github/workflows/update-nextcloud-ocp-matrix.yml new file mode 100644 index 0000000..e1fa4d9 --- /dev/null +++ b/.github/workflows/update-nextcloud-ocp-matrix.yml @@ -0,0 +1,94 @@ +# This workflow is provided via the organization template repository +# +# https://github.com/nextcloud/.github +# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization + +name: Update nextcloud/ocp + +on: + workflow_dispatch: + schedule: + - cron: '5 2 * * 0' + +jobs: + update-nextcloud-ocp: + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + branches: ['main'] + target: ['stable29'] + + name: update-nextcloud-ocp-${{ matrix.branches }} + + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + ref: ${{ matrix.branches }} + submodules: true + + - name: Set up php8.2 + uses: shivammathur/setup-php@a4e22b60bbb9c1021113f2860347b0759f66fe5d # v2 + with: + php-version: 8.2 + # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation + extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite + coverage: none + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Read codeowners + id: codeowners + run: | + grep '/appinfo/info.xml' .github/CODEOWNERS | cut -f 2- -d ' ' | xargs | awk '{ print "codeowners="$0 }' >> $GITHUB_OUTPUT + continue-on-error: true + + - name: Composer install + run: composer install + + - name: Composer update nextcloud/ocp + id: update_branch + run: composer require --dev nextcloud/ocp:dev-${{ matrix.target }} + + - name: Raise on issue on failure + uses: dacbd/create-issue-action@cdb57ab6ff8862aa09fee2be6ba77a59581921c2 # v2.0.0 + if: ${{ failure() && steps.update_branch.conclusion == 'failure' }} + with: + token: ${{ secrets.GITHUB_TOKEN }} + title: Failed to update nextcloud/ocp package} + body: Please check the output of the GitHub action and manually resolve the issues
${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
${{ steps.codeowners.outputs.codeowners }} + + - name: Reset checkout 3rdparty + run: | + git clean -f 3rdparty + git checkout 3rdparty + continue-on-error: true + + - name: Reset checkout vendor + run: | + git clean -f vendor + git checkout vendor + continue-on-error: true + + - name: Reset checkout vendor-bin + run: | + git clean -f vendor-bin + git checkout vendor-bin + continue-on-error: true + + - name: Create Pull Request + uses: peter-evans/create-pull-request@a4f52f8033a6168103c2538976c07b467e8163bc # v6.0.1 + with: + token: ${{ secrets.COMMAND_BOT_PAT }} + commit-message: "chore(dev-deps): Bump nextcloud/ocp package" + committer: GitHub + author: nextcloud-command + signoff: true + branch: automated/noid/${{ matrix.branches }}-update-nextcloud-ocp + title: "[${{ matrix.branches }}] Update nextcloud/ocp dependency" + body: | + Auto-generated update of [nextcloud/ocp](https://github.com/nextcloud-deps/ocp/) dependency + labels: | + dependencies + 3. to review diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e8388fe --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +/.idea/ +/*.iml + +/vendor/ +/vendor-bin/*/vendor/ + +/.php-cs-fixer.cache +/tests/.phpunit.cache + +/node_modules/ +/js/ diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..209e3ef --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +20 diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php new file mode 100644 index 0000000..91fc1d9 --- /dev/null +++ b/.php-cs-fixer.dist.php @@ -0,0 +1,19 @@ +getFinder() + ->notPath('build') + ->notPath('l10n') + ->notPath('node_modules') + ->notPath('src') + ->notPath('vendor') + ->in(__DIR__); + +return $config; diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..ab830f7 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,12 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +### Added + +- First release diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..d906007 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,9 @@ +In the Nextcloud community, participants from all over the world come together to create Free Software for a free internet. This is made possible by the support, hard work and enthusiasm of thousands of people, including those who create and use Nextcloud software. + +Our code of conduct offers some guidance to ensure Nextcloud participants can cooperate effectively in a positive and inspiring atmosphere, and to explain how together we can strengthen and support each other. + +The Code of Conduct is shared by all contributors and users who engage with the Nextcloud team and its community services. It presents a summary of the shared values and “common sense” thinking in our community. + +You can find our full code of conduct on our website: https://nextcloud.com/code-of-conduct/ + +Please, keep our CoC in mind when you contribute! That way, everyone can be a part of our community in a productive, positive, creative and fun way. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..be3f7b2 --- /dev/null +++ b/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..4236fc9 --- /dev/null +++ b/README.md @@ -0,0 +1,25 @@ +# Nc Theming + +A template to get started with Nextcloud app development. + +## Usage + +- To get started easily use the [Appstore App generator](https://apps.nextcloud.com/developer/apps/generate) to + dynamically generate an App based on this repository with all the constants prefilled. +- Alternatively you can use the "Use this template" button on the top of this page to create a new repository based on + this repository. Afterwards adjust all the necessary constants like App ID, namespace, descriptions etc. + +Once your app is ready follow the [instructions](https://nextcloudappstore.readthedocs.io/en/latest/developer.html) to +upload it to the Appstore. + +## Resources + +### Documentation for developers: + +- General documentation and tutorials: https://nextcloud.com/developer +- Technical documentation: https://docs.nextcloud.com/server/latest/developer_manual + +### Help for developers: + +- Official community chat: https://cloud.nextcloud.com/call/xs25tz5y +- Official community forum: https://help.nextcloud.com/c/dev/11 diff --git a/appinfo/info.xml b/appinfo/info.xml new file mode 100644 index 0000000..cdabaa3 --- /dev/null +++ b/appinfo/info.xml @@ -0,0 +1,26 @@ + + + nc_theming + Nc Theming + NC Theme + NC Theme + 29.0.0 + agpl + IONOS + NcTheming + customization + https://github.com/IONOS-Productivity/nc-theming/issues + + + + + + ncthemingionos + Nc Theming Ionos + ncthemingionos.page.index + app.svg + link + + + diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..f50f28a --- /dev/null +++ b/composer.json @@ -0,0 +1,49 @@ +{ + "name": "nextcloud/nctheming", + "description": "NC Theme", + "license": "AGPL-3.0-or-later", + "authors": [ + { + "name": "Milhailo Matiyenko-Kupriaynov", + "email": "kupriyanov@strato.de", + "homepage": "https://github.com/IONOS-Productivity/nc-theming/" + } + ], + "autoload": { + "psr-4": { + "OCA\\NcTheming\\": "lib/" + } + }, + "scripts": { + "post-install-cmd": [ + "@composer bin all install --ansi" + ], + "post-update-cmd": [ + "@composer bin all update --ansi" + ], + "lint": "find . -name \\*.php -not -path './vendor/*' -not -path './vendor-bin/*' -not -path './build/*' -print0 | xargs -0 -n1 php -l", + "cs:check": "php-cs-fixer fix --dry-run --diff", + "cs:fix": "php-cs-fixer fix", + "psalm": "psalm --threads=1 --no-cache", + "test:unit": "phpunit tests -c tests/phpunit.xml --colors=always --fail-on-warning --fail-on-risky", + "openapi": "generate-spec" + }, + "require": { + "bamarni/composer-bin-plugin": "^1.8", + "php": "^8.1" + }, + "require-dev": { + "nextcloud/ocp": "dev-stable29", + "roave/security-advisories": "dev-latest" + }, + "config": { + "allow-plugins": { + "bamarni/composer-bin-plugin": true + }, + "optimize-autoloader": true, + "sort-packages": true, + "platform": { + "php": "8.1" + } + } +} diff --git a/img/app-dark.svg b/img/app-dark.svg new file mode 100644 index 0000000..7c6ab6d --- /dev/null +++ b/img/app-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/app.svg b/img/app.svg new file mode 100644 index 0000000..9da6665 --- /dev/null +++ b/img/app.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php new file mode 100644 index 0000000..3e5ce89 --- /dev/null +++ b/lib/AppInfo/Application.php @@ -0,0 +1,25 @@ + + * + * 200: Data returned + */ + #[NoAdminRequired] + #[ApiRoute(verb: 'GET', url: '/api')] + public function index(): DataResponse { + return new DataResponse( + ['message' => 'Hello world!'] + ); + } +} diff --git a/lib/Controller/PageController.php b/lib/Controller/PageController.php new file mode 100644 index 0000000..2c51de1 --- /dev/null +++ b/lib/Controller/PageController.php @@ -0,0 +1,29 @@ + + + + + + + + + + + + diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..3140f62 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..fb9ee0f --- /dev/null +++ b/src/main.js @@ -0,0 +1,6 @@ +import Vue from 'vue' +import App from './App.vue' +Vue.mixin({ methods: { t, n } }) + +const View = Vue.extend(App) +new View().$mount('#nctheming') diff --git a/stylelint.config.js b/stylelint.config.js new file mode 100644 index 0000000..3be3a7b --- /dev/null +++ b/stylelint.config.js @@ -0,0 +1,3 @@ +module.exports = { + extends: 'stylelint-config-recommended-vue', +} diff --git a/templates/index.php b/templates/index.php new file mode 100644 index 0000000..a34051c --- /dev/null +++ b/templates/index.php @@ -0,0 +1,11 @@ + + +
diff --git a/tests/bootstrap.php b/tests/bootstrap.php new file mode 100644 index 0000000..744d31c --- /dev/null +++ b/tests/bootstrap.php @@ -0,0 +1,9 @@ + + + + . + + + + ../appinfo + ../lib + + + diff --git a/tests/unit/Controller/ApiTest.php b/tests/unit/Controller/ApiTest.php new file mode 100644 index 0000000..a87e474 --- /dev/null +++ b/tests/unit/Controller/ApiTest.php @@ -0,0 +1,19 @@ +createMock(IRequest::class); + $controller = new ApiController(Application::APP_ID, $request); + + $this->assertEquals($controller->index()->getData()['message'], 'Hello world!'); + } +} diff --git a/vendor-bin/cs-fixer/composer.json b/vendor-bin/cs-fixer/composer.json new file mode 100644 index 0000000..dc131e7 --- /dev/null +++ b/vendor-bin/cs-fixer/composer.json @@ -0,0 +1,10 @@ +{ + "require-dev": { + "nextcloud/coding-standard": "^1.2" + }, + "config": { + "platform": { + "php": "8.1" + } + } +} diff --git a/vendor-bin/openapi-extractor/composer.json b/vendor-bin/openapi-extractor/composer.json new file mode 100644 index 0000000..dde3ad3 --- /dev/null +++ b/vendor-bin/openapi-extractor/composer.json @@ -0,0 +1,16 @@ +{ + "repositories": [ + { + "type": "vcs", + "url": "https://github.com/nextcloud/openapi-extractor" + } + ], + "require-dev": { + "nextcloud/openapi-extractor": "dev-main" + }, + "config": { + "platform": { + "php": "8.1" + } + } +} diff --git a/vendor-bin/phpunit/composer.json b/vendor-bin/phpunit/composer.json new file mode 100644 index 0000000..fe8b171 --- /dev/null +++ b/vendor-bin/phpunit/composer.json @@ -0,0 +1,10 @@ +{ + "require-dev": { + "phpunit/phpunit": "^10.5" + }, + "config": { + "platform": { + "php": "8.1" + } + } +} diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json new file mode 100644 index 0000000..553d5af --- /dev/null +++ b/vendor-bin/psalm/composer.json @@ -0,0 +1,10 @@ +{ + "require-dev": { + "vimeo/psalm": "^5.23" + }, + "config": { + "platform": { + "php": "8.1" + } + } +} diff --git a/webpack.js b/webpack.js new file mode 100644 index 0000000..49ae69e --- /dev/null +++ b/webpack.js @@ -0,0 +1,27 @@ +const webpackConfig = require('@nextcloud/webpack-vue-config') +const ESLintPlugin = require('eslint-webpack-plugin') +const StyleLintPlugin = require('stylelint-webpack-plugin') +const path = require('path') + +webpackConfig.entry = { + main: { import: path.join(__dirname, 'src', 'main.js'), filename: 'main.js' }, +} + +webpackConfig.plugins.push( + new ESLintPlugin({ + extensions: ['js', 'vue'], + files: 'src', + }), +) +webpackConfig.plugins.push( + new StyleLintPlugin({ + files: 'src/**/*.{css,scss,vue}', + }), +) + +webpackConfig.module.rules.push({ + test: /\.svg$/i, + type: 'asset/source', +}) + +module.exports = webpackConfig From efe520c875bd8da2956237c4aea279ecb6ac25ad Mon Sep 17 00:00:00 2001 From: "Misha M.-Kupriyanov" Date: Thu, 12 Sep 2024 17:44:55 +0200 Subject: [PATCH 2/9] chore: drop openapi Signed-off-by: Misha M.-Kupriyanov --- .github/dependabot.yml | 8 -- .github/workflows/openapi.yml | 85 --------------- composer.json | 3 +- lib/Controller/ApiController.php | 31 ------ openapi.json | 121 --------------------- tests/unit/Controller/ApiTest.php | 19 ---- vendor-bin/openapi-extractor/composer.json | 16 --- 7 files changed, 1 insertion(+), 282 deletions(-) delete mode 100644 .github/workflows/openapi.yml delete mode 100644 lib/Controller/ApiController.php delete mode 100644 openapi.json delete mode 100644 tests/unit/Controller/ApiTest.php delete mode 100644 vendor-bin/openapi-extractor/composer.json diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 852b265..56d96c4 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -16,14 +16,6 @@ updates: time: "03:00" timezone: Europe/Paris open-pull-requests-limit: 10 - - package-ecosystem: composer - directory: "/vendor-bin/openapi-extractor" - schedule: - interval: weekly - day: saturday - time: "03:00" - timezone: Europe/Paris - open-pull-requests-limit: 10 - package-ecosystem: composer directory: "/vendor-bin/phpunit" schedule: diff --git a/.github/workflows/openapi.yml b/.github/workflows/openapi.yml deleted file mode 100644 index b0c3ce2..0000000 --- a/.github/workflows/openapi.yml +++ /dev/null @@ -1,85 +0,0 @@ -name: OpenAPI - -on: pull_request - -permissions: - contents: read - -concurrency: - group: openapi-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - openapi: - runs-on: ubuntu-latest - - if: ${{ github.repository_owner != 'nextcloud-gmbh' }} - - steps: - - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - - name: Get php version - id: php_versions - uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 - - - name: Set up php - uses: shivammathur/setup-php@a4e22b60bbb9c1021113f2860347b0759f66fe5d # v2 - with: - php-version: ${{ steps.php_versions.outputs.php-available }} - extensions: xml - coverage: none - ini-file: development - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Check Typescript OpenApi types - id: check_typescript_openapi - uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0 - with: - files: "src/types/openapi/openapi*.ts" - - - name: Read package.json node and npm engines version - if: steps.check_typescript_openapi.outputs.files_exists == 'true' - uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2 - id: node_versions - # Continue if no package.json - continue-on-error: true - with: - fallbackNode: '^20' - fallbackNpm: '^10' - - - name: Set up node ${{ steps.node_versions.outputs.nodeVersion }} - if: ${{ steps.node_versions.outputs.nodeVersion }} - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 - with: - node-version: ${{ steps.node_versions.outputs.nodeVersion }} - - - name: Set up npm ${{ steps.node_versions.outputs.npmVersion }} - if: ${{ steps.node_versions.outputs.nodeVersion }} - run: npm i -g npm@"${{ steps.node_versions.outputs.npmVersion }}" - - - name: Install dependencies & build - if: ${{ steps.node_versions.outputs.nodeVersion }} - env: - CYPRESS_INSTALL_BINARY: 0 - PUPPETEER_SKIP_DOWNLOAD: true - run: | - npm ci - - - name: Set up dependencies - run: composer i - - - name: Regenerate OpenAPI - run: composer run openapi - - - name: Check openapi*.json and typescript changes - run: | - bash -c "[[ ! \"`git status --porcelain `\" ]] || (echo 'Please run \"composer run openapi\" and commit the openapi*.json files and (if applicable) src/types/openapi/openapi*.ts, see the section \"Show changes on failure\" for details' && exit 1)" - - - name: Show changes on failure - if: failure() - run: | - git status - git --no-pager diff - exit 1 # make it red to grab attention diff --git a/composer.json b/composer.json index f50f28a..4efcad6 100644 --- a/composer.json +++ b/composer.json @@ -25,8 +25,7 @@ "cs:check": "php-cs-fixer fix --dry-run --diff", "cs:fix": "php-cs-fixer fix", "psalm": "psalm --threads=1 --no-cache", - "test:unit": "phpunit tests -c tests/phpunit.xml --colors=always --fail-on-warning --fail-on-risky", - "openapi": "generate-spec" + "test:unit": "phpunit tests -c tests/phpunit.xml --colors=always --fail-on-warning --fail-on-risky" }, "require": { "bamarni/composer-bin-plugin": "^1.8", diff --git a/lib/Controller/ApiController.php b/lib/Controller/ApiController.php deleted file mode 100644 index c79939f..0000000 --- a/lib/Controller/ApiController.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * 200: Data returned - */ - #[NoAdminRequired] - #[ApiRoute(verb: 'GET', url: '/api')] - public function index(): DataResponse { - return new DataResponse( - ['message' => 'Hello world!'] - ); - } -} diff --git a/openapi.json b/openapi.json deleted file mode 100644 index f7e8983..0000000 --- a/openapi.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "openapi": "3.0.3", - "info": { - "title": "nctheming", - "version": "0.0.1", - "description": "IONOS Theme", - "license": { - "name": "agpl" - } - }, - "components": { - "securitySchemes": { - "basic_auth": { - "type": "http", - "scheme": "basic" - }, - "bearer_auth": { - "type": "http", - "scheme": "bearer" - } - }, - "schemas": { - "OCSMeta": { - "type": "object", - "required": [ - "status", - "statuscode" - ], - "properties": { - "status": { - "type": "string" - }, - "statuscode": { - "type": "integer" - }, - "message": { - "type": "string" - }, - "totalitems": { - "type": "string" - }, - "itemsperpage": { - "type": "string" - } - } - } - } - }, - "paths": { - "/ocs/v2.php/apps/nctheming/api": { - "get": { - "operationId": "api-index", - "summary": "An example API endpoint", - "tags": [ - "api" - ], - "security": [ - { - "bearer_auth": [] - }, - { - "basic_auth": [] - } - ], - "parameters": [ - { - "name": "OCS-APIRequest", - "in": "header", - "description": "Required to be true for the API request to pass", - "required": true, - "schema": { - "type": "boolean", - "default": true - } - } - ], - "responses": { - "200": { - "description": "Data returned", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "ocs" - ], - "properties": { - "ocs": { - "type": "object", - "required": [ - "meta", - "data" - ], - "properties": { - "meta": { - "$ref": "#/components/schemas/OCSMeta" - }, - "data": { - "type": "object", - "required": [ - "message" - ], - "properties": { - "message": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - } - }, - "tags": [] -} diff --git a/tests/unit/Controller/ApiTest.php b/tests/unit/Controller/ApiTest.php deleted file mode 100644 index a87e474..0000000 --- a/tests/unit/Controller/ApiTest.php +++ /dev/null @@ -1,19 +0,0 @@ -createMock(IRequest::class); - $controller = new ApiController(Application::APP_ID, $request); - - $this->assertEquals($controller->index()->getData()['message'], 'Hello world!'); - } -} diff --git a/vendor-bin/openapi-extractor/composer.json b/vendor-bin/openapi-extractor/composer.json deleted file mode 100644 index dde3ad3..0000000 --- a/vendor-bin/openapi-extractor/composer.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "repositories": [ - { - "type": "vcs", - "url": "https://github.com/nextcloud/openapi-extractor" - } - ], - "require-dev": { - "nextcloud/openapi-extractor": "dev-main" - }, - "config": { - "platform": { - "php": "8.1" - } - } -} From 32518f3744c2cd2c86a3898287a2777cdb1e7ddc Mon Sep 17 00:00:00 2001 From: "Misha M.-Kupriyanov" Date: Fri, 13 Sep 2024 11:52:06 +0200 Subject: [PATCH 3/9] chore: drop frontend part since it is not used yet Signed-off-by: Misha M.-Kupriyanov --- .eslintrc.js | 9 --- .github/workflows/lint-eslint.yml | 95 ---------------------------- .github/workflows/lint-stylelint.yml | 48 -------------- .github/workflows/npm-audit-fix.yml | 73 --------------------- package.json | 31 --------- src/App.vue | 26 -------- src/main.js | 6 -- stylelint.config.js | 3 - templates/index.php | 11 ---- webpack.js | 27 -------- 10 files changed, 329 deletions(-) delete mode 100644 .eslintrc.js delete mode 100644 .github/workflows/lint-eslint.yml delete mode 100644 .github/workflows/lint-stylelint.yml delete mode 100644 .github/workflows/npm-audit-fix.yml delete mode 100644 package.json delete mode 100644 src/App.vue delete mode 100644 src/main.js delete mode 100644 stylelint.config.js delete mode 100644 templates/index.php delete mode 100644 webpack.js diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 9175db9..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - extends: [ - '@nextcloud', - ], - rules: { - 'jsdoc/require-jsdoc': 'off', - 'vue/first-attribute-linebreak': 'off', - }, -} diff --git a/.github/workflows/lint-eslint.yml b/.github/workflows/lint-eslint.yml deleted file mode 100644 index d0a8a2f..0000000 --- a/.github/workflows/lint-eslint.yml +++ /dev/null @@ -1,95 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -# -# Use lint-eslint together with lint-eslint-when-unrelated to make eslint a required check for GitHub actions -# https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks#handling-skipped-but-required-checks - -name: Lint eslint - -on: pull_request - -permissions: - contents: read - -concurrency: - group: lint-eslint-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - changes: - runs-on: ubuntu-latest-low - - outputs: - src: ${{ steps.changes.outputs.src}} - - steps: - - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 - id: changes - continue-on-error: true - with: - filters: | - src: - - '.github/workflows/**' - - 'src/**' - - 'appinfo/info.xml' - - 'package.json' - - 'package-lock.json' - - 'tsconfig.json' - - '.eslintrc.*' - - '.eslintignore' - - '**.js' - - '**.ts' - - '**.vue' - - lint: - runs-on: ubuntu-latest - - needs: changes - if: needs.changes.outputs.src != 'false' - - name: NPM lint - - steps: - - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - - name: Read package.json node and npm engines version - uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2 - id: versions - with: - fallbackNode: '^20' - fallbackNpm: '^10' - - - name: Set up node ${{ steps.versions.outputs.nodeVersion }} - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3 - with: - node-version: ${{ steps.versions.outputs.nodeVersion }} - - - name: Set up npm ${{ steps.versions.outputs.npmVersion }} - run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}" - - - name: Install dependencies - env: - CYPRESS_INSTALL_BINARY: 0 - PUPPETEER_SKIP_DOWNLOAD: true - run: npm ci - - - name: Lint - run: npm run lint - - summary: - permissions: - contents: none - runs-on: ubuntu-latest-low - needs: [changes, lint] - - if: always() - - # This is the summary, we just avoid to rename it so that branch protection rules still match - name: eslint - - steps: - - name: Summary status - run: if ${{ needs.changes.outputs.src != 'false' && needs.lint.result != 'success' }}; then exit 1; fi diff --git a/.github/workflows/lint-stylelint.yml b/.github/workflows/lint-stylelint.yml deleted file mode 100644 index 4effd42..0000000 --- a/.github/workflows/lint-stylelint.yml +++ /dev/null @@ -1,48 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization - -name: Lint stylelint - -on: pull_request - -permissions: - contents: read - -concurrency: - group: lint-stylelint-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - lint: - runs-on: ubuntu-latest - - name: stylelint - - steps: - - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - - name: Read package.json node and npm engines version - uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2 - id: versions - with: - fallbackNode: '^20' - fallbackNpm: '^10' - - - name: Set up node ${{ steps.versions.outputs.nodeVersion }} - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3 - with: - node-version: ${{ steps.versions.outputs.nodeVersion }} - - - name: Set up npm ${{ steps.versions.outputs.npmVersion }} - run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}" - - - name: Install dependencies - env: - CYPRESS_INSTALL_BINARY: 0 - run: npm ci - - - name: Lint - run: npm run stylelint diff --git a/.github/workflows/npm-audit-fix.yml b/.github/workflows/npm-audit-fix.yml deleted file mode 100644 index 0fa447f..0000000 --- a/.github/workflows/npm-audit-fix.yml +++ /dev/null @@ -1,73 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization - -name: Npm audit fix and compile - -on: - workflow_dispatch: - schedule: - # At 2:30 on Sundays - - cron: '30 2 * * 0' - -jobs: - build: - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - branches: ['main', 'master', 'stable29', 'stable28', 'stable27'] - - name: npm-audit-fix-${{ matrix.branches }} - - steps: - - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - with: - ref: ${{ matrix.branches }} - - - name: Read package.json node and npm engines version - uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2 - id: versions - with: - fallbackNode: '^20' - fallbackNpm: '^10' - - - name: Set up node ${{ steps.versions.outputs.nodeVersion }} - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3 - with: - node-version: ${{ steps.versions.outputs.nodeVersion }} - - - name: Set up npm ${{ steps.versions.outputs.npmVersion }} - run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}" - - - name: Fix npm audit - run: | - npm audit fix - - - name: Run npm ci and npm run build - if: always() - env: - CYPRESS_INSTALL_BINARY: 0 - run: | - npm ci - npm run build --if-present - - - name: Create Pull Request - if: always() - uses: peter-evans/create-pull-request@a4f52f8033a6168103c2538976c07b467e8163bc # v6.0.1 - with: - token: ${{ secrets.COMMAND_BOT_PAT }} - commit-message: "fix(deps): fix npm audit" - committer: GitHub - author: nextcloud-command - signoff: true - branch: automated/noid/${{ matrix.branches }}-fix-npm-audit - title: "[${{ matrix.branches }}] Fix npm audit" - body: | - Auto-generated fix of npm audit - labels: | - dependencies - 3. to review diff --git a/package.json b/package.json deleted file mode 100644 index 3031e5e..0000000 --- a/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "nctheming", - "version": "1.0.0", - "license": "AGPL-3.0-or-later", - "engines": { - "node": "^20.0.0", - "npm": "^10.0.0" - }, - "scripts": { - "build": "NODE_ENV=production webpack --config webpack.js --progress", - "dev": "NODE_ENV=development webpack --config webpack.js --progress", - "watch": "NODE_ENV=development webpack --config webpack.js --progress --watch", - "lint": "eslint src", - "stylelint": "stylelint src/**/*.vue src/**/*.scss src/**/*.css" - }, - "browserslist": [ - "extends @nextcloud/browserslist-config" - ], - "dependencies": { - "@nextcloud/vue": "^8.11.2", - "vue": "^2.7.16" - }, - "devDependencies": { - "@nextcloud/browserslist-config": "^3.0.1", - "@nextcloud/eslint-config": "^8.3.0", - "@nextcloud/stylelint-config": "^2.4.0", - "@nextcloud/webpack-vue-config": "^6.0.1", - "eslint-webpack-plugin": "^4.1.0", - "stylelint-webpack-plugin": "^5.0.0" - } -} diff --git a/src/App.vue b/src/App.vue deleted file mode 100644 index 3140f62..0000000 --- a/src/App.vue +++ /dev/null @@ -1,26 +0,0 @@ - - - - - diff --git a/src/main.js b/src/main.js deleted file mode 100644 index fb9ee0f..0000000 --- a/src/main.js +++ /dev/null @@ -1,6 +0,0 @@ -import Vue from 'vue' -import App from './App.vue' -Vue.mixin({ methods: { t, n } }) - -const View = Vue.extend(App) -new View().$mount('#nctheming') diff --git a/stylelint.config.js b/stylelint.config.js deleted file mode 100644 index 3be3a7b..0000000 --- a/stylelint.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - extends: 'stylelint-config-recommended-vue', -} diff --git a/templates/index.php b/templates/index.php deleted file mode 100644 index a34051c..0000000 --- a/templates/index.php +++ /dev/null @@ -1,11 +0,0 @@ - - -
diff --git a/webpack.js b/webpack.js deleted file mode 100644 index 49ae69e..0000000 --- a/webpack.js +++ /dev/null @@ -1,27 +0,0 @@ -const webpackConfig = require('@nextcloud/webpack-vue-config') -const ESLintPlugin = require('eslint-webpack-plugin') -const StyleLintPlugin = require('stylelint-webpack-plugin') -const path = require('path') - -webpackConfig.entry = { - main: { import: path.join(__dirname, 'src', 'main.js'), filename: 'main.js' }, -} - -webpackConfig.plugins.push( - new ESLintPlugin({ - extensions: ['js', 'vue'], - files: 'src', - }), -) -webpackConfig.plugins.push( - new StyleLintPlugin({ - files: 'src/**/*.{css,scss,vue}', - }), -) - -webpackConfig.module.rules.push({ - test: /\.svg$/i, - type: 'asset/source', -}) - -module.exports = webpackConfig From 52682a24091626f9eed364172caedef73bf6e807 Mon Sep 17 00:00:00 2001 From: "Misha M.-Kupriyanov" Date: Thu, 12 Sep 2024 16:44:45 +0200 Subject: [PATCH 4/9] chore: add composer.lock file Signed-off-by: Misha M.-Kupriyanov --- composer.lock | 1152 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1152 insertions(+) create mode 100644 composer.lock diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..abed015 --- /dev/null +++ b/composer.lock @@ -0,0 +1,1152 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "ff15934a01c460254ce07e8ba9f3384f", + "packages": [ + { + "name": "bamarni/composer-bin-plugin", + "version": "1.8.2", + "source": { + "type": "git", + "url": "https://github.com/bamarni/composer-bin-plugin.git", + "reference": "92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bamarni/composer-bin-plugin/zipball/92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880", + "reference": "92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.0", + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "composer/composer": "^2.0", + "ext-json": "*", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.5", + "symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", + "symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", + "symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Bamarni\\Composer\\Bin\\BamarniBinPlugin" + }, + "autoload": { + "psr-4": { + "Bamarni\\Composer\\Bin\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "No conflicts for your bin dependencies", + "keywords": [ + "composer", + "conflict", + "dependency", + "executable", + "isolation", + "tool" + ], + "support": { + "issues": "https://github.com/bamarni/composer-bin-plugin/issues", + "source": "https://github.com/bamarni/composer-bin-plugin/tree/1.8.2" + }, + "time": "2022-10-31T08:38:03+00:00" + } + ], + "packages-dev": [ + { + "name": "nextcloud/ocp", + "version": "dev-stable29", + "source": { + "type": "git", + "url": "https://github.com/nextcloud-deps/ocp.git", + "reference": "b130f11ce24351a6a91115aa6f386271f7aeee9d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/b130f11ce24351a6a91115aa6f386271f7aeee9d", + "reference": "b130f11ce24351a6a91115aa6f386271f7aeee9d", + "shasum": "" + }, + "require": { + "php": "~8.0 || ~8.1 || ~8.2 || ~8.3", + "psr/clock": "^1.0", + "psr/container": "^2.0.2", + "psr/event-dispatcher": "^1.0", + "psr/log": "^1.1.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-stable29": "29.0.0-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "AGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Christoph Wurst", + "email": "christoph@winzerhof-wurst.at" + } + ], + "description": "Composer package containing Nextcloud's public API (classes, interfaces)", + "support": { + "issues": "https://github.com/nextcloud-deps/ocp/issues", + "source": "https://github.com/nextcloud-deps/ocp/tree/stable29" + }, + "time": "2024-09-05T00:40:09+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/log", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, + "time": "2021-05-03T11:20:27+00:00" + }, + { + "name": "roave/security-advisories", + "version": "dev-latest", + "source": { + "type": "git", + "url": "https://github.com/Roave/SecurityAdvisories.git", + "reference": "ed0688c3e18bf76d2a17fb243b99acb52c2e29ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/ed0688c3e18bf76d2a17fb243b99acb52c2e29ef", + "reference": "ed0688c3e18bf76d2a17fb243b99acb52c2e29ef", + "shasum": "" + }, + "conflict": { + "3f/pygmentize": "<1.2", + "admidio/admidio": "<4.3.10", + "adodb/adodb-php": "<=5.20.20|>=5.21,<=5.21.3", + "aheinze/cockpit": "<2.2", + "aimeos/ai-admin-graphql": ">=2022.04.1,<2022.10.10|>=2023.04.1,<2023.10.6|>=2024.04.1,<2024.04.6", + "aimeos/ai-admin-jsonadm": "<2020.10.13|>=2021.04.1,<2021.10.6|>=2022.04.1,<2022.10.3|>=2023.04.1,<2023.10.4|==2024.04.1", + "aimeos/ai-client-html": ">=2020.04.1,<2020.10.27|>=2021.04.1,<2021.10.22|>=2022.04.1,<2022.10.13|>=2023.04.1,<2023.10.15|>=2024.04.1,<2024.04.7", + "aimeos/ai-controller-frontend": "<2020.10.15|>=2021.04.1,<2021.10.8|>=2022.04.1,<2022.10.8|>=2023.04.1,<2023.10.9", + "aimeos/aimeos-core": ">=2022.04.1,<2022.10.17|>=2023.04.1,<2023.10.17|>=2024.04.1,<2024.04.7", + "aimeos/aimeos-typo3": "<19.10.12|>=20,<20.10.5", + "airesvsg/acf-to-rest-api": "<=3.1", + "akaunting/akaunting": "<2.1.13", + "akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53", + "alextselegidis/easyappointments": "<1.5", + "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", + "amazing/media2click": ">=1,<1.3.3", + "amphp/artax": "<1.0.6|>=2,<2.0.6", + "amphp/http": "<=1.7.2|>=2,<=2.1", + "amphp/http-client": ">=4,<4.4", + "anchorcms/anchor-cms": "<=0.12.7", + "andreapollastri/cipi": "<=3.1.15", + "andrewhaine/silverstripe-form-capture": ">=0.2,<=0.2.3|>=1,<1.0.2|>=2,<2.2.5", + "apache-solr-for-typo3/solr": "<2.8.3", + "apereo/phpcas": "<1.6", + "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6|>=2.6,<2.7.10|>=3,<3.0.12|>=3.1,<3.1.3", + "appwrite/server-ce": "<=1.2.1", + "arc/web": "<3", + "area17/twill": "<1.2.5|>=2,<2.5.3", + "artesaos/seotools": "<0.17.2", + "asymmetricrypt/asymmetricrypt": "<9.9.99", + "athlon1600/php-proxy": "<=5.1", + "athlon1600/php-proxy-app": "<=3", + "austintoddj/canvas": "<=3.4.2", + "auth0/wordpress": "<=4.6", + "automad/automad": "<2.0.0.0-alpha5", + "automattic/jetpack": "<9.8", + "awesome-support/awesome-support": "<=6.0.7", + "aws/aws-sdk-php": "<3.288.1", + "azuracast/azuracast": "<0.18.3", + "backdrop/backdrop": "<1.27.3|>=1.28,<1.28.2", + "backpack/crud": "<3.4.9", + "bacula-web/bacula-web": "<8.0.0.0-RC2-dev", + "badaso/core": "<2.7", + "bagisto/bagisto": "<2.1", + "barrelstrength/sprout-base-email": "<1.2.7", + "barrelstrength/sprout-forms": "<3.9", + "barryvdh/laravel-translation-manager": "<0.6.2", + "barzahlen/barzahlen-php": "<2.0.1", + "baserproject/basercms": "<5.0.9", + "bassjobsen/bootstrap-3-typeahead": ">4.0.2", + "bbpress/bbpress": "<2.6.5", + "bcosca/fatfree": "<3.7.2", + "bedita/bedita": "<4", + "bigfork/silverstripe-form-capture": ">=3,<3.1.1", + "billz/raspap-webgui": "<=3.1.4", + "bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3", + "blueimp/jquery-file-upload": "==6.4.4", + "bmarshall511/wordpress_zero_spam": "<5.2.13", + "bolt/bolt": "<3.7.2", + "bolt/core": "<=4.2", + "born05/craft-twofactorauthentication": "<3.3.4", + "bottelet/flarepoint": "<2.2.1", + "bref/bref": "<2.1.17", + "brightlocal/phpwhois": "<=4.2.5", + "brotkrueml/codehighlight": "<2.7", + "brotkrueml/schema": "<1.13.1|>=2,<2.5.1", + "brotkrueml/typo3-matomo-integration": "<1.3.2", + "buddypress/buddypress": "<7.2.1", + "bugsnag/bugsnag-laravel": ">=2,<2.0.2", + "bytefury/crater": "<6.0.2", + "cachethq/cachet": "<2.5.1", + "cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.1,<4.1.4|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", + "cakephp/database": ">=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", + "cardgate/magento2": "<2.0.33", + "cardgate/woocommerce": "<=3.1.15", + "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", + "cart2quote/module-quotation-encoded": ">=4.1.6,<=4.4.5|>=5,<5.4.4", + "cartalyst/sentry": "<=2.1.6", + "catfan/medoo": "<1.7.5", + "causal/oidc": "<2.1", + "cecil/cecil": "<7.47.1", + "centreon/centreon": "<22.10.15", + "cesnet/simplesamlphp-module-proxystatistics": "<3.1", + "chriskacerguis/codeigniter-restserver": "<=2.7.1", + "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3", + "ckeditor/ckeditor": "<4.24", + "cockpit-hq/cockpit": "<2.7|==2.7", + "codeception/codeception": "<3.1.3|>=4,<4.1.22", + "codeigniter/framework": "<3.1.9", + "codeigniter4/framework": "<4.4.7", + "codeigniter4/shield": "<1.0.0.0-beta8", + "codiad/codiad": "<=2.8.4", + "composer/composer": "<1.10.27|>=2,<2.2.24|>=2.3,<2.7.7", + "concrete5/concrete5": "<9.3.3", + "concrete5/core": "<8.5.8|>=9,<9.1", + "contao-components/mediaelement": ">=2.14.2,<2.21.1", + "contao/comments-bundle": ">=2,<4.13.40|>=5.0.0.0-RC1-dev,<5.3.4", + "contao/contao": ">=3,<3.5.37|>=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4", + "contao/core": "<3.5.39", + "contao/core-bundle": "<4.13.40|>=5,<5.3.4", + "contao/listing-bundle": ">=3,<=3.5.30|>=4,<4.4.8", + "contao/managed-edition": "<=1.5", + "corveda/phpsandbox": "<1.3.5", + "cosenary/instagram": "<=2.3", + "craftcms/cms": "<4.6.2|>=5,<=5.2.2", + "croogo/croogo": "<4", + "cuyz/valinor": "<0.12", + "czproject/git-php": "<4.0.3", + "damienharper/auditor-bundle": "<6", + "dapphp/securimage": "<3.6.6", + "darylldoyle/safe-svg": "<1.9.10", + "datadog/dd-trace": ">=0.30,<0.30.2", + "datatables/datatables": "<1.10.10", + "david-garcia/phpwhois": "<=4.3.1", + "dbrisinajumi/d2files": "<1", + "dcat/laravel-admin": "<=2.1.3", + "derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3", + "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4", + "desperado/xml-bundle": "<=0.1.7", + "devgroup/dotplant": "<2020.09.14-dev", + "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2", + "doctrine/annotations": "<1.2.7", + "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", + "doctrine/common": "<2.4.3|>=2.5,<2.5.1", + "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2|>=3,<3.1.4", + "doctrine/doctrine-bundle": "<1.5.2", + "doctrine/doctrine-module": "<0.7.2", + "doctrine/mongodb-odm": "<1.0.2", + "doctrine/mongodb-odm-bundle": "<3.0.1", + "doctrine/orm": ">=1,<1.2.4|>=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4", + "dolibarr/dolibarr": "<19.0.2", + "dompdf/dompdf": "<2.0.4", + "doublethreedigital/guest-entries": "<3.1.2", + "drupal/core": ">=6,<6.38|>=7,<7.96|>=8,<10.1.8|>=10.2,<10.2.2|==11.9999999.9999999.9999999-dev", + "drupal/core-recommended": "==11.9999999.9999999.9999999-dev", + "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4|==11.9999999.9999999.9999999-dev", + "duncanmcclean/guest-entries": "<3.1.2", + "dweeves/magmi": "<=0.7.24", + "ec-cube/ec-cube": "<2.4.4|>=2.11,<=2.17.1|>=3,<=3.0.18.0-patch4|>=4,<=4.1.2", + "ecodev/newsletter": "<=4", + "ectouch/ectouch": "<=2.7.2", + "egroupware/egroupware": "<23.1.20240624", + "elefant/cms": "<2.0.7", + "elgg/elgg": "<3.3.24|>=4,<4.0.5", + "elijaa/phpmemcacheadmin": "<=1.3", + "encore/laravel-admin": "<=1.8.19", + "endroid/qr-code-bundle": "<3.4.2", + "enhavo/enhavo-app": "<=0.13.1", + "enshrined/svg-sanitize": "<0.15", + "erusev/parsedown": "<1.7.2", + "ether/logs": "<3.0.4", + "evolutioncms/evolution": "<=3.2.3", + "exceedone/exment": "<4.4.3|>=5,<5.0.3", + "exceedone/laravel-admin": "<2.2.3|==3", + "ezsystems/demobundle": ">=5.4,<5.4.6.1-dev", + "ezsystems/ez-support-tools": ">=2.2,<2.2.3", + "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1-dev", + "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1-dev|>=5.4,<5.4.11.1-dev|>=2017.12,<2017.12.0.1-dev", + "ezsystems/ezplatform": "<=1.13.6|>=2,<=2.5.24", + "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.26|>=3.3,<3.3.39", + "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1", + "ezsystems/ezplatform-graphql": ">=1.0.0.0-RC1-dev,<1.0.13|>=2.0.0.0-beta1,<2.3.12", + "ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.35", + "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8", + "ezsystems/ezplatform-richtext": ">=2.3,<2.3.7.1-dev|>=3.3,<3.3.40", + "ezsystems/ezplatform-solr-search-engine": ">=1.7,<1.7.12|>=2,<2.0.2|>=3.3,<3.3.15", + "ezsystems/ezplatform-user": ">=1,<1.0.1", + "ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.31", + "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.03.5.1", + "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3", + "ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15", + "ezyang/htmlpurifier": "<4.1.1", + "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2", + "facturascripts/facturascripts": "<=2022.08", + "fastly/magento2": "<1.2.26", + "feehi/cms": "<=2.1.1", + "feehi/feehicms": "<=2.1.1", + "fenom/fenom": "<=2.12.1", + "filegator/filegator": "<7.8", + "filp/whoops": "<2.1.13", + "fineuploader/php-traditional-server": "<=1.2.2", + "firebase/php-jwt": "<6", + "fisharebest/webtrees": "<=2.1.18", + "fixpunkt/fp-masterquiz": "<2.2.1|>=3,<3.5.2", + "fixpunkt/fp-newsletter": "<1.1.1|>=2,<2.1.2|>=2.2,<3.2.6", + "flarum/core": "<1.8.5", + "flarum/flarum": "<0.1.0.0-beta8", + "flarum/framework": "<1.8.5", + "flarum/mentions": "<1.6.3", + "flarum/sticky": ">=0.1.0.0-beta14,<=0.1.0.0-beta15", + "flarum/tags": "<=0.1.0.0-beta13", + "floriangaerber/magnesium": "<0.3.1", + "fluidtypo3/vhs": "<5.1.1", + "fof/byobu": ">=0.3.0.0-beta2,<1.1.7", + "fof/upload": "<1.2.3", + "foodcoopshop/foodcoopshop": ">=3.2,<3.6.1", + "fooman/tcpdf": "<6.2.22", + "forkcms/forkcms": "<5.11.1", + "fossar/tcpdf-parser": "<6.2.22", + "francoisjacquet/rosariosis": "<=11.5.1", + "frappant/frp-form-answers": "<3.1.2|>=4,<4.0.2", + "friendsofsymfony/oauth2-php": "<1.3", + "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", + "friendsofsymfony/user-bundle": ">=1,<1.3.5", + "friendsofsymfony1/swiftmailer": ">=4,<5.4.13|>=6,<6.2.5", + "friendsofsymfony1/symfony1": ">=1.1,<1.5.19", + "friendsoftypo3/mediace": ">=7.6.2,<7.6.5", + "friendsoftypo3/openid": ">=4.5,<4.5.31|>=4.7,<4.7.16|>=6,<6.0.11|>=6.1,<6.1.6", + "froala/wysiwyg-editor": "<3.2.7|>=4.0.1,<=4.1.3", + "froxlor/froxlor": "<=2.2.0.0-RC3", + "frozennode/administrator": "<=5.0.12", + "fuel/core": "<1.8.1", + "funadmin/funadmin": "<=3.2|>=3.3.2,<=3.3.3", + "gaoming13/wechat-php-sdk": "<=1.10.2", + "genix/cms": "<=1.1.11", + "getformwork/formwork": "<1.13.1|==2.0.0.0-beta1", + "getgrav/grav": "<1.7.46", + "getkirby/cms": "<=3.6.6.5|>=3.7,<=3.7.5.4|>=3.8,<=3.8.4.3|>=3.9,<=3.9.8.1|>=3.10,<=3.10.1|>=4,<=4.3", + "getkirby/kirby": "<=2.5.12", + "getkirby/panel": "<2.5.14", + "getkirby/starterkit": "<=3.7.0.2", + "gilacms/gila": "<=1.15.4", + "gleez/cms": "<=1.3|==2", + "globalpayments/php-sdk": "<2", + "gogentooss/samlbase": "<1.2.7", + "google/protobuf": "<3.15", + "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3", + "gree/jose": "<2.2.1", + "gregwar/rst": "<1.0.3", + "grumpydictator/firefly-iii": "<6.1.17", + "gugoan/economizzer": "<=0.9.0.0-beta1", + "guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5", + "guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5", + "haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2", + "harvesthq/chosen": "<1.8.7", + "helloxz/imgurl": "<=2.31", + "hhxsv5/laravel-s": "<3.7.36", + "hillelcoren/invoice-ninja": "<5.3.35", + "himiklab/yii2-jqgrid-widget": "<1.0.8", + "hjue/justwriting": "<=1", + "hov/jobfair": "<1.0.13|>=2,<2.0.2", + "httpsoft/http-message": "<1.0.12", + "hyn/multi-tenant": ">=5.6,<5.7.2", + "ibexa/admin-ui": ">=4.2,<4.2.3|>=4.6.0.0-beta1,<4.6.9", + "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3|>=4.5,<4.5.6|>=4.6,<4.6.2", + "ibexa/fieldtype-richtext": ">=4.6,<4.6.10", + "ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3", + "ibexa/post-install": "<=1.0.4", + "ibexa/solr": ">=4.5,<4.5.4", + "ibexa/user": ">=4,<4.4.3", + "icecoder/icecoder": "<=8.1", + "idno/known": "<=1.3.1", + "ilicmiljan/secure-props": ">=1.2,<1.2.2", + "illuminate/auth": "<5.5.10", + "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<6.18.31|>=7,<7.22.4", + "illuminate/database": "<6.20.26|>=7,<7.30.5|>=8,<8.40", + "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", + "illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75", + "imdbphp/imdbphp": "<=5.1.1", + "impresscms/impresscms": "<=1.4.5", + "impresspages/impresspages": "<=1.0.12", + "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.2.3", + "in2code/ipandlanguageredirect": "<5.1.2", + "in2code/lux": "<17.6.1|>=18,<24.0.2", + "in2code/powermail": "<7.5|>=8,<8.5|>=9,<10.9|>=11,<12.4", + "innologi/typo3-appointments": "<2.0.6", + "intelliants/subrion": "<4.2.2", + "inter-mediator/inter-mediator": "==5.5", + "ipl/web": "<0.10.1", + "islandora/islandora": ">=2,<2.4.1", + "ivankristianto/phpwhois": "<=4.3", + "jackalope/jackalope-doctrine-dbal": "<1.7.4", + "james-heinrich/getid3": "<1.9.21", + "james-heinrich/phpthumb": "<1.7.12", + "jasig/phpcas": "<1.3.3", + "jcbrand/converse.js": "<3.3.3", + "johnbillion/wp-crontrol": "<1.16.2", + "joomla/application": "<1.0.13", + "joomla/archive": "<1.1.12|>=2,<2.0.1", + "joomla/filesystem": "<1.6.2|>=2,<2.0.1", + "joomla/filter": "<1.4.4|>=2,<2.0.1", + "joomla/framework": "<1.5.7|>=2.5.4,<=3.8.12", + "joomla/input": ">=2,<2.0.2", + "joomla/joomla-cms": ">=2.5,<3.9.12", + "joomla/session": "<1.3.1", + "joyqi/hyper-down": "<=2.4.27", + "jsdecena/laracom": "<2.0.9", + "jsmitty12/phpwhois": "<5.1", + "juzaweb/cms": "<=3.4", + "jweiland/events2": "<8.3.8|>=9,<9.0.6", + "kazist/phpwhois": "<=4.2.6", + "kelvinmo/simplexrd": "<3.1.1", + "kevinpapst/kimai2": "<1.16.7", + "khodakhah/nodcms": "<=3", + "kimai/kimai": "<2.16", + "kitodo/presentation": "<3.2.3|>=3.3,<3.3.4", + "klaviyo/magento2-extension": ">=1,<3", + "knplabs/knp-snappy": "<=1.4.2", + "kohana/core": "<3.3.3", + "krayin/laravel-crm": "<1.2.2", + "kreait/firebase-php": ">=3.2,<3.8.1", + "kumbiaphp/kumbiapp": "<=1.1.1", + "la-haute-societe/tcpdf": "<6.2.22", + "laminas/laminas-diactoros": "<2.18.1|==2.19|==2.20|==2.21|==2.22|==2.23|>=2.24,<2.24.2|>=2.25,<2.25.2", + "laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1", + "laminas/laminas-http": "<2.14.2", + "laravel/fortify": "<1.11.1", + "laravel/framework": "<6.20.44|>=7,<7.30.6|>=8,<8.75", + "laravel/laravel": ">=5.4,<5.4.22", + "laravel/socialite": ">=1,<2.0.10", + "latte/latte": "<2.10.8", + "lavalite/cms": "<=9|==10.1", + "lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5", + "league/commonmark": "<0.18.3", + "league/flysystem": "<1.1.4|>=2,<2.1.1", + "league/oauth2-server": ">=8.3.2,<8.4.2|>=8.5,<8.5.3", + "lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3", + "libreform/libreform": ">=2,<=2.0.8", + "librenms/librenms": "<2017.08.18", + "liftkit/database": "<2.13.2", + "lightsaml/lightsaml": "<1.3.5", + "limesurvey/limesurvey": "<3.27.19", + "livehelperchat/livehelperchat": "<=3.91", + "livewire/livewire": ">2.2.4,<2.2.6|>=3.3.5,<3.4.9", + "lms/routes": "<2.1.1", + "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2", + "luyadev/yii-helpers": "<1.2.1", + "magento/community-edition": "<2.4.5|==2.4.5|>=2.4.5.0-patch1,<2.4.5.0-patch8|==2.4.6|>=2.4.6.0-patch1,<2.4.6.0-patch6|==2.4.7", + "magento/core": "<=1.9.4.5", + "magento/magento1ce": "<1.9.4.3-dev", + "magento/magento1ee": ">=1,<1.14.4.3-dev", + "magento/product-community-edition": "<2.4.4.0-patch9|>=2.4.5,<2.4.5.0-patch8|>=2.4.6,<2.4.6.0-patch6|>=2.4.7,<2.4.7.0-patch1", + "magneto/core": "<1.9.4.4-dev", + "maikuolan/phpmussel": ">=1,<1.6", + "mainwp/mainwp": "<=4.4.3.3", + "mantisbt/mantisbt": "<2.26.2", + "marcwillmann/turn": "<0.3.3", + "matyhtf/framework": "<3.0.6", + "mautic/core": "<4.4.12|>=5.0.0.0-alpha,<5.0.4", + "mdanter/ecc": "<2", + "mediawiki/core": "<1.36.2", + "mediawiki/matomo": "<2.4.3", + "mediawiki/semantic-media-wiki": "<4.0.2", + "melisplatform/melis-asset-manager": "<5.0.1", + "melisplatform/melis-cms": "<5.0.1", + "melisplatform/melis-front": "<5.0.1", + "mezzio/mezzio-swoole": "<3.7|>=4,<4.3", + "mgallegos/laravel-jqgrid": "<=1.3", + "microsoft/microsoft-graph": ">=1.16,<1.109.1|>=2,<2.0.1", + "microsoft/microsoft-graph-beta": "<2.0.1", + "microsoft/microsoft-graph-core": "<2.0.2", + "microweber/microweber": "<=2.0.16", + "mikehaertl/php-shellcommand": "<1.6.1", + "miniorange/miniorange-saml": "<1.4.3", + "mittwald/typo3_forum": "<1.2.1", + "mobiledetect/mobiledetectlib": "<2.8.32", + "modx/revolution": "<=2.8.3.0-patch", + "mojo42/jirafeau": "<4.4", + "mongodb/mongodb": ">=1,<1.9.2", + "monolog/monolog": ">=1.8,<1.12", + "moodle/moodle": "<4.3.5|>=4.4.0.0-beta,<4.4.1", + "mos/cimage": "<0.7.19", + "movim/moxl": ">=0.8,<=0.10", + "movingbytes/social-network": "<=1.2.1", + "mpdf/mpdf": "<=7.1.7", + "munkireport/comment": "<4.1", + "munkireport/managedinstalls": "<2.6", + "munkireport/munki_facts": "<1.5", + "munkireport/munkireport": ">=2.5.3,<5.6.3", + "munkireport/reportdata": "<3.5", + "munkireport/softwareupdate": "<1.6", + "mustache/mustache": ">=2,<2.14.1", + "namshi/jose": "<2.2", + "nategood/httpful": "<1", + "neoan3-apps/template": "<1.1.1", + "neorazorx/facturascripts": "<2022.04", + "neos/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", + "neos/form": ">=1.2,<4.3.3|>=5,<5.0.9|>=5.1,<5.1.3", + "neos/media-browser": "<7.3.19|>=8,<8.0.16|>=8.1,<8.1.11|>=8.2,<8.2.11|>=8.3,<8.3.9", + "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2", + "neos/swiftmailer": "<5.4.5", + "netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15", + "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6", + "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13", + "nilsteampassnet/teampass": "<3.0.10", + "nonfiction/nterchange": "<4.1.1", + "notrinos/notrinos-erp": "<=0.7", + "noumo/easyii": "<=0.9", + "novaksolutions/infusionsoft-php-sdk": "<1", + "nukeviet/nukeviet": "<4.5.02", + "nyholm/psr7": "<1.6.1", + "nystudio107/craft-seomatic": "<3.4.12", + "nzedb/nzedb": "<0.8", + "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1", + "october/backend": "<1.1.2", + "october/cms": "<1.0.469|==1.0.469|==1.0.471|==1.1.1", + "october/october": "<=3.4.4", + "october/rain": "<1.0.472|>=1.1,<1.1.2", + "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.5.15", + "omeka/omeka-s": "<4.0.3", + "onelogin/php-saml": "<2.10.4", + "oneup/uploader-bundle": ">=1,<1.9.3|>=2,<2.1.5", + "open-web-analytics/open-web-analytics": "<1.7.4", + "opencart/opencart": ">=0", + "openid/php-openid": "<2.3", + "openmage/magento-lts": "<20.10.1", + "opensolutions/vimbadmin": "<=3.0.15", + "opensource-workshop/connect-cms": "<1.7.2|>=2,<2.3.2", + "orchid/platform": ">=9,<9.4.4|>=14.0.0.0-alpha4,<14.5", + "oro/calendar-bundle": ">=4.2,<=4.2.6|>=5,<=5.0.6|>=5.1,<5.1.1", + "oro/commerce": ">=4.1,<5.0.11|>=5.1,<5.1.1", + "oro/crm": ">=1.7,<1.7.4|>=3.1,<4.1.17|>=4.2,<4.2.7", + "oro/crm-call-bundle": ">=4.2,<=4.2.5|>=5,<5.0.4|>=5.1,<5.1.1", + "oro/customer-portal": ">=4.1,<=4.1.13|>=4.2,<=4.2.10|>=5,<=5.0.11|>=5.1,<=5.1.3", + "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<=4.2.10|>=5,<=5.0.12|>=5.1,<=5.1.3", + "oveleon/contao-cookiebar": "<1.16.3|>=2,<2.1.3", + "oxid-esales/oxideshop-ce": "<4.5", + "oxid-esales/paymorrow-module": ">=1,<1.0.2|>=2,<2.0.1", + "packbackbooks/lti-1-3-php-library": "<5", + "padraic/humbug_get_contents": "<1.1.2", + "pagarme/pagarme-php": "<3", + "pagekit/pagekit": "<=1.0.18", + "paragonie/ecc": "<2.0.1", + "paragonie/random_compat": "<2", + "passbolt/passbolt_api": "<4.6.2", + "paypal/adaptivepayments-sdk-php": "<=3.9.2", + "paypal/invoice-sdk-php": "<=3.9", + "paypal/merchant-sdk-php": "<3.12", + "paypal/permissions-sdk-php": "<=3.9.1", + "pear/archive_tar": "<1.4.14", + "pear/auth": "<1.2.4", + "pear/crypt_gpg": "<1.6.7", + "pear/pear": "<=1.10.1", + "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1", + "personnummer/personnummer": "<3.0.2", + "phanan/koel": "<5.1.4", + "phenx/php-svg-lib": "<0.5.2", + "php-censor/php-censor": "<2.0.13|>=2.1,<2.1.5", + "php-mod/curl": "<2.3.2", + "phpbb/phpbb": "<3.2.10|>=3.3,<3.3.1", + "phpems/phpems": ">=6,<=6.1.3", + "phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7", + "phpmailer/phpmailer": "<6.5", + "phpmussel/phpmussel": ">=1,<1.6", + "phpmyadmin/phpmyadmin": "<5.2.1", + "phpmyfaq/phpmyfaq": "<3.2.5|==3.2.5", + "phpoffice/common": "<0.2.9", + "phpoffice/phpexcel": "<1.8", + "phpoffice/phpspreadsheet": "<1.29.1|>=2,<2.2.1", + "phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36", + "phpservermon/phpservermon": "<3.6", + "phpsysinfo/phpsysinfo": "<3.4.3", + "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", + "phpwhois/phpwhois": "<=4.2.5", + "phpxmlrpc/extras": "<0.6.1", + "phpxmlrpc/phpxmlrpc": "<4.9.2", + "pi/pi": "<=2.5", + "pimcore/admin-ui-classic-bundle": "<1.5.4", + "pimcore/customer-management-framework-bundle": "<4.0.6", + "pimcore/data-hub": "<1.2.4", + "pimcore/data-importer": "<1.8.9|>=1.9,<1.9.3", + "pimcore/demo": "<10.3", + "pimcore/ecommerce-framework-bundle": "<1.0.10", + "pimcore/perspective-editor": "<1.5.1", + "pimcore/pimcore": "<11.2.4", + "pixelfed/pixelfed": "<0.11.11", + "plotly/plotly.js": "<2.25.2", + "pocketmine/bedrock-protocol": "<8.0.2", + "pocketmine/pocketmine-mp": "<5.11.2", + "pocketmine/raklib": ">=0.14,<0.14.6|>=0.15,<0.15.1", + "pressbooks/pressbooks": "<5.18", + "prestashop/autoupgrade": ">=4,<4.10.1", + "prestashop/blockreassurance": "<=5.1.3", + "prestashop/blockwishlist": ">=2,<2.1.1", + "prestashop/contactform": ">=1.0.1,<4.3", + "prestashop/gamification": "<2.3.2", + "prestashop/prestashop": "<8.1.6", + "prestashop/productcomments": "<5.0.2", + "prestashop/ps_emailsubscription": "<2.6.1", + "prestashop/ps_facetedsearch": "<3.4.1", + "prestashop/ps_linklist": "<3.1", + "privatebin/privatebin": "<1.4|>=1.5,<1.7.4", + "processwire/processwire": "<=3.0.229", + "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7", + "propel/propel1": ">=1,<=1.7.1", + "pterodactyl/panel": "<1.11.6", + "ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2", + "ptrofimov/beanstalk_console": "<1.7.14", + "pubnub/pubnub": "<6.1", + "pusher/pusher-php-server": "<2.2.1", + "pwweb/laravel-core": "<=0.3.6.0-beta", + "pxlrbt/filament-excel": "<2.3.3", + "pyrocms/pyrocms": "<=3.9.1", + "qcubed/qcubed": "<=3.1.1", + "quickapps/cms": "<=2.0.0.0-beta2", + "rainlab/blog-plugin": "<1.4.1", + "rainlab/debugbar-plugin": "<3.1", + "rainlab/user-plugin": "<=1.4.5", + "rankmath/seo-by-rank-math": "<=1.0.95", + "rap2hpoutre/laravel-log-viewer": "<0.13", + "react/http": ">=0.7,<1.9", + "really-simple-plugins/complianz-gdpr": "<6.4.2", + "redaxo/source": "<=5.15.1", + "remdex/livehelperchat": "<4.29", + "reportico-web/reportico": "<=8.1", + "rhukster/dom-sanitizer": "<1.0.7", + "rmccue/requests": ">=1.6,<1.8", + "robrichards/xmlseclibs": ">=1,<3.0.4", + "roots/soil": "<4.1", + "rudloff/alltube": "<3.0.3", + "s-cart/core": "<6.9", + "s-cart/s-cart": "<6.9", + "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1", + "sabre/dav": ">=1.6,<1.7.11|>=1.8,<1.8.9", + "scheb/two-factor-bundle": "<3.26|>=4,<4.11", + "sensiolabs/connect": "<4.2.3", + "serluck/phpwhois": "<=4.2.6", + "sfroemken/url_redirect": "<=1.2.1", + "sheng/yiicms": "<=1.2", + "shopware/core": "<=6.5.8.12|>=6.6,<=6.6.5", + "shopware/platform": "<=6.5.8.12|>=6.6,<=6.6.5", + "shopware/production": "<=6.3.5.2", + "shopware/shopware": "<=5.7.17", + "shopware/storefront": "<=6.4.8.1|>=6.5.8,<6.5.8.7-dev", + "shopxo/shopxo": "<=6.1", + "showdoc/showdoc": "<2.10.4", + "silverstripe-australia/advancedreports": ">=1,<=2", + "silverstripe/admin": "<1.13.19|>=2,<2.1.8", + "silverstripe/assets": ">=1,<1.11.1", + "silverstripe/cms": "<4.11.3", + "silverstripe/comments": ">=1.3,<3.1.1", + "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", + "silverstripe/framework": "<5.2.16", + "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.3", + "silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1", + "silverstripe/recipe-cms": ">=4.5,<4.5.3", + "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1", + "silverstripe/reports": "<5.2.3", + "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4|>=2.1,<2.1.2", + "silverstripe/silverstripe-omnipay": "<2.5.2|>=3,<3.0.2|>=3.1,<3.1.4|>=3.2,<3.2.1", + "silverstripe/subsites": ">=2,<2.6.1", + "silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1", + "silverstripe/userforms": "<3|>=5,<5.4.2", + "silverstripe/versioned-admin": ">=1,<1.11.1", + "simple-updates/phpwhois": "<=1", + "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4|==5.0.0.0-alpha12", + "simplesamlphp/simplesamlphp": "<1.18.6", + "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", + "simplesamlphp/simplesamlphp-module-openid": "<1", + "simplesamlphp/simplesamlphp-module-openidprovider": "<0.9", + "simplesamlphp/xml-security": "==1.6.11", + "simplito/elliptic-php": "<1.0.6", + "sitegeist/fluid-components": "<3.5", + "sjbr/sr-freecap": "<2.4.6|>=2.5,<2.5.3", + "slim/psr7": "<1.4.1|>=1.5,<1.5.1|>=1.6,<1.6.1", + "slim/slim": "<2.6", + "slub/slub-events": "<3.0.3", + "smarty/smarty": "<4.5.3|>=5,<5.1.1", + "snipe/snipe-it": "<6.4.2", + "socalnick/scn-social-auth": "<1.15.2", + "socialiteproviders/steam": "<1.1", + "spatie/browsershot": "<3.57.4", + "spatie/image-optimizer": "<1.7.3", + "spipu/html2pdf": "<5.2.8", + "spoon/library": "<1.4.1", + "spoonity/tcpdf": "<6.2.22", + "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", + "ssddanbrown/bookstack": "<24.05.1", + "statamic/cms": "<4.46|>=5.3,<5.6.2", + "stormpath/sdk": "<9.9.99", + "studio-42/elfinder": "<=2.1.64", + "studiomitte/friendlycaptcha": "<0.1.4", + "subhh/libconnect": "<7.0.8|>=8,<8.1", + "sukohi/surpass": "<1", + "sulu/form-bundle": ">=2,<2.5.3", + "sulu/sulu": "<1.6.44|>=2,<2.4.17|>=2.5,<2.5.13", + "sumocoders/framework-user-bundle": "<1.4", + "superbig/craft-audit": "<3.0.2", + "swag/paypal": "<5.4.4", + "swiftmailer/swiftmailer": "<6.2.5", + "swiftyedit/swiftyedit": "<1.2", + "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", + "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", + "sylius/grid-bundle": "<1.10.1", + "sylius/paypal-plugin": ">=1,<1.2.4|>=1.3,<1.3.1", + "sylius/resource-bundle": ">=1,<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4", + "sylius/sylius": "<1.12.19|>=1.13.0.0-alpha1,<1.13.4", + "symbiote/silverstripe-multivaluefield": ">=3,<3.1", + "symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4", + "symbiote/silverstripe-seed": "<6.0.3", + "symbiote/silverstripe-versionedfiles": "<=2.0.3", + "symfont/process": ">=0", + "symfony/cache": ">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8", + "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4", + "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", + "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<5.3.15|>=5.4.3,<5.4.4|>=6.0.3,<6.0.4", + "symfony/http-foundation": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7", + "symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", + "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", + "symfony/maker-bundle": ">=1.27,<1.29.2|>=1.30,<1.31.1", + "symfony/mime": ">=4.3,<4.3.8", + "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/polyfill": ">=1,<1.10", + "symfony/polyfill-php55": ">=1,<1.10", + "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/routing": ">=2,<2.0.19", + "symfony/security": ">=2,<2.7.51|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.8", + "symfony/security-bundle": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", + "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.9", + "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8", + "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.3.2|>=5.4,<5.4.31|>=6,<6.3.8", + "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12", + "symfony/symfony": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", + "symfony/translation": ">=2,<2.0.17", + "symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", + "symfony/ux-autocomplete": "<2.11.2", + "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", + "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8", + "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", + "symfony/webhook": ">=6.3,<6.3.8", + "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7|>=2.2.0.0-beta1,<2.2.0.0-beta2", + "symphonycms/symphony-2": "<2.6.4", + "t3/dce": "<0.11.5|>=2.2,<2.6.2", + "t3g/svg-sanitizer": "<1.0.3", + "t3s/content-consent": "<1.0.3|>=2,<2.0.2", + "tastyigniter/tastyigniter": "<3.3", + "tcg/voyager": "<=1.4", + "tecnickcom/tcpdf": "<=6.7.4", + "terminal42/contao-tablelookupwizard": "<3.3.5", + "thelia/backoffice-default-template": ">=2.1,<2.1.2", + "thelia/thelia": ">=2.1,<2.1.3", + "theonedemon/phpwhois": "<=4.2.5", + "thinkcmf/thinkcmf": "<6.0.8", + "thorsten/phpmyfaq": "<3.2.2", + "tikiwiki/tiki-manager": "<=17.1", + "timber/timber": ">=0.16.6,<1.23.1|>=1.24,<1.24.1|>=2,<2.1", + "tinymce/tinymce": "<7.2", + "tinymighty/wiki-seo": "<1.2.2", + "titon/framework": "<9.9.99", + "tobiasbg/tablepress": "<=2.0.0.0-RC1", + "topthink/framework": "<6.0.17|>=6.1,<=8.0.4", + "topthink/think": "<=6.1.1", + "topthink/thinkphp": "<=3.2.3", + "torrentpier/torrentpier": "<=2.4.3", + "tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2", + "tribalsystems/zenario": "<9.5.60602", + "truckersmp/phpwhois": "<=4.3.1", + "ttskch/pagination-service-provider": "<1", + "twbs/bootstrap": "<=3.4.1|>=4,<=4.6.2", + "twig/twig": "<1.44.8|>=2,<2.16.1|>=3,<3.11.1|>=3.12,<3.14", + "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", + "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", + "typo3/cms-core": "<=8.7.56|>=9,<=9.5.47|>=10,<=10.4.44|>=11,<=11.5.36|>=12,<=12.4.14|>=13,<=13.1", + "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1", + "typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1", + "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", + "typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5", + "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8", + "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30", + "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", + "typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3", + "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3", + "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1", + "typo3/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5", + "typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10", + "ua-parser/uap-php": "<3.8", + "uasoft-indonesia/badaso": "<=2.9.7", + "unisharp/laravel-filemanager": "<2.6.4", + "userfrosting/userfrosting": ">=0.3.1,<4.6.3", + "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2", + "uvdesk/community-skeleton": "<=1.1.1", + "uvdesk/core-framework": "<=1.1.1", + "vanilla/safecurl": "<0.9.2", + "verbb/comments": "<1.5.5", + "verbb/formie": "<2.1.6", + "verbb/image-resizer": "<2.0.9", + "verbb/knock-knock": "<1.2.8", + "verot/class.upload.php": "<=2.1.6", + "villagedefrance/opencart-overclocked": "<=1.11.1", + "vova07/yii2-fileapi-widget": "<0.1.9", + "vrana/adminer": "<4.8.1", + "vufind/vufind": ">=2,<9.1.1", + "waldhacker/hcaptcha": "<2.1.2", + "wallabag/tcpdf": "<6.2.22", + "wallabag/wallabag": "<2.6.7", + "wanglelecc/laracms": "<=1.0.3", + "web-auth/webauthn-framework": ">=3.3,<3.3.4|>=4.5,<4.9", + "web-auth/webauthn-lib": ">=4.5,<4.9", + "web-feet/coastercms": "==5.5", + "webbuilders-group/silverstripe-kapost-bridge": "<0.4", + "webcoast/deferred-image-processing": "<1.0.2", + "webklex/laravel-imap": "<5.3", + "webklex/php-imap": "<5.3", + "webpa/webpa": "<3.1.2", + "wikibase/wikibase": "<=1.39.3", + "wikimedia/parsoid": "<0.12.2", + "willdurand/js-translation-bundle": "<2.1.1", + "winter/wn-backend-module": "<1.2.4", + "winter/wn-dusk-plugin": "<2.1", + "winter/wn-system-module": "<1.2.4", + "wintercms/winter": "<=1.2.3", + "woocommerce/woocommerce": "<6.6|>=8.8,<8.8.5|>=8.9,<8.9.3", + "wp-cli/wp-cli": ">=0.12,<2.5", + "wp-graphql/wp-graphql": "<=1.14.5", + "wp-premium/gravityforms": "<2.4.21", + "wpanel/wpanel4-cms": "<=4.3.1", + "wpcloud/wp-stateless": "<3.2", + "wpglobus/wpglobus": "<=1.9.6", + "wwbn/avideo": "<14.3", + "xataface/xataface": "<3", + "xpressengine/xpressengine": "<3.0.15", + "yab/quarx": "<2.4.5", + "yeswiki/yeswiki": "<4.1", + "yetiforce/yetiforce-crm": "<=6.4", + "yidashi/yii2cmf": "<=2", + "yii2mod/yii2-cms": "<1.9.2", + "yiisoft/yii": "<1.1.29", + "yiisoft/yii2": "<2.0.49.4-dev", + "yiisoft/yii2-authclient": "<2.2.15", + "yiisoft/yii2-bootstrap": "<2.0.4", + "yiisoft/yii2-dev": "<2.0.43", + "yiisoft/yii2-elasticsearch": "<2.0.5", + "yiisoft/yii2-gii": "<=2.2.4", + "yiisoft/yii2-jui": "<2.0.4", + "yiisoft/yii2-redis": "<2.0.8", + "yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6", + "yoast-seo-for-typo3/yoast_seo": "<7.2.3", + "yourls/yourls": "<=1.8.2", + "yuan1994/tpadmin": "<=1.3.12", + "zencart/zencart": "<=1.5.7.0-beta", + "zendesk/zendesk_api_client_php": "<2.2.11", + "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", + "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-db": "<2.2.10|>=2.3,<2.3.5", + "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3", + "zendframework/zend-diactoros": "<1.8.4", + "zendframework/zend-feed": "<2.10.3", + "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-http": "<2.8.1", + "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", + "zendframework/zend-mail": "<2.4.11|>=2.5,<2.7.2", + "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-session": ">=2,<2.2.9|>=2.3,<2.3.4", + "zendframework/zend-validator": ">=2.3,<2.3.6", + "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zendframework": "<=3", + "zendframework/zendframework1": "<1.12.20", + "zendframework/zendopenid": "<2.0.2", + "zendframework/zendrest": "<2.0.2", + "zendframework/zendservice-amazon": "<2.0.3", + "zendframework/zendservice-api": "<1", + "zendframework/zendservice-audioscrobbler": "<2.0.2", + "zendframework/zendservice-nirvanix": "<2.0.2", + "zendframework/zendservice-slideshare": "<2.0.2", + "zendframework/zendservice-technorati": "<2.0.2", + "zendframework/zendservice-windowsazure": "<2.0.2", + "zendframework/zendxml": ">=1,<1.0.1", + "zenstruck/collection": "<0.2.1", + "zetacomponents/mail": "<1.8.2", + "zf-commons/zfc-user": "<1.2.2", + "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", + "zfr/zfr-oauth2-server-module": "<0.1.2", + "zoujingli/thinkadmin": "<=6.1.53" + }, + "default-branch": true, + "type": "metapackage", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "role": "maintainer" + }, + { + "name": "Ilya Tribusean", + "email": "slash3b@gmail.com", + "role": "maintainer" + } + ], + "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", + "keywords": [ + "dev" + ], + "support": { + "issues": "https://github.com/Roave/SecurityAdvisories/issues", + "source": "https://github.com/Roave/SecurityAdvisories/tree/latest" + }, + "funding": [ + { + "url": "https://github.com/Ocramius", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/roave/security-advisories", + "type": "tidelift" + } + ], + "time": "2024-09-10T18:06:22+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": { + "nextcloud/ocp": 20, + "roave/security-advisories": 20 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": "^8.1" + }, + "platform-dev": [], + "platform-overrides": { + "php": "8.1" + }, + "plugin-api-version": "2.2.0" +} From a2ba8d5c8c000ad0287e62220c818130355b32e2 Mon Sep 17 00:00:00 2001 From: "Misha M.-Kupriyanov" Date: Thu, 12 Sep 2024 17:01:53 +0200 Subject: [PATCH 5/9] chore: disable navigation Signed-off-by: Misha M.-Kupriyanov --- appinfo/info.xml | 12 +++--------- lib/Controller/PageController.php | 29 ----------------------------- 2 files changed, 3 insertions(+), 38 deletions(-) delete mode 100644 lib/Controller/PageController.php diff --git a/appinfo/info.xml b/appinfo/info.xml index cdabaa3..5b3451c 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -14,13 +14,7 @@ - - - ncthemingionos - Nc Theming Ionos - ncthemingionos.page.index - app.svg - link - - + diff --git a/lib/Controller/PageController.php b/lib/Controller/PageController.php deleted file mode 100644 index 2c51de1..0000000 --- a/lib/Controller/PageController.php +++ /dev/null @@ -1,29 +0,0 @@ - Date: Fri, 13 Sep 2024 11:48:10 +0200 Subject: [PATCH 6/9] chore: add licensing Signed-off-by: Misha M.-Kupriyanov --- lib/AppInfo/Application.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index 3e5ce89..6e8e90b 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -1,4 +1,8 @@ Date: Thu, 12 Sep 2024 16:45:31 +0200 Subject: [PATCH 7/9] feat(theming): add initial default theme override Signed-off-by: Misha M.-Kupriyanov --- lib/AppInfo/Application.php | 44 ++++++ lib/Service/NcThemesService.php | 185 +++++++++++++++++++++++++ lib/Themes/NCDefaultTheme.php | 85 ++++++++++++ tests/unit/AppInfo/ApplicationTest.php | 33 +++++ 4 files changed, 347 insertions(+) create mode 100644 lib/Service/NcThemesService.php create mode 100644 lib/Themes/NCDefaultTheme.php create mode 100644 tests/unit/AppInfo/ApplicationTest.php diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index 6e8e90b..d205e0c 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -8,10 +8,24 @@ namespace OCA\NcTheming\AppInfo; +use OC\AppFramework\DependencyInjection\DIContainer; +use OCA\NcTheming\Service\NcThemesService; +use OCA\NcTheming\Themes\NCDefaultTheme; +use OCA\Theming\Service\ThemesService; +use OCA\Theming\Themes\DarkHighContrastTheme; +use OCA\Theming\Themes\DarkTheme; +use OCA\Theming\Themes\DefaultTheme; +use OCA\Theming\Themes\DyslexiaFont; +use OCA\Theming\Themes\HighContrastTheme; +use OCA\Theming\Themes\LightTheme; use OCP\AppFramework\App; use OCP\AppFramework\Bootstrap\IBootContext; use OCP\AppFramework\Bootstrap\IBootstrap; use OCP\AppFramework\Bootstrap\IRegistrationContext; +use OCP\AppFramework\QueryException; +use OCP\IConfig; +use OCP\IUserSession; +use Psr\Log\LoggerInterface; class Application extends App implements IBootstrap { public const APP_ID = 'nc_theming'; @@ -21,7 +35,37 @@ public function __construct() { parent::__construct(self::APP_ID); } + /** + * Get the container for another app in order to override services + * @param string $appName the name of the app to get the container for + * @return DIContainer + */ + public function getAppContainer(string $appName) { + try { + $container = \OC::$server->getRegisteredAppContainer($appName); + } catch (QueryException) { + $container = new DIContainer($appName); + \OC::$server->registerAppContainer($appName, $container); + } + + return $container; + } + public function register(IRegistrationContext $context): void { + $this->getAppContainer('theming')->registerService(ThemesService::class, function ($c) { + return new NcThemesService( + $c->get(IUserSession::class), + $c->get(IConfig::class), + $c->get(LoggerInterface::class), + $c->get(NCDefaultTheme::class), + $c->get(DefaultTheme::class), // the rest is overhead due to undefined interface (yet) + $c->get(LightTheme::class), + $c->get(DarkTheme::class), + $c->get(HighContrastTheme::class), + $c->get(DarkHighContrastTheme::class), + $c->get(DyslexiaFont::class) + ); + }); } public function boot(IBootContext $context): void { diff --git a/lib/Service/NcThemesService.php b/lib/Service/NcThemesService.php new file mode 100644 index 0000000..9d6f4e6 --- /dev/null +++ b/lib/Service/NcThemesService.php @@ -0,0 +1,185 @@ +userSession = $userSession; + $this->config = $config; + + $this->staticThemeIds = [ $defaultOverride->getId() ]; + $this->themeClasses = [ $defaultOverride->getId() => $defaultOverride ]; + $this->selectableThemeIds = [ + $defaultOverride->getId() + ]; + } + + /** + * Get the list of all registered themes + * + * @return ITheme[] the (id, $theme) map of registered themes + */ + public function getThemes(): array { + return $this->themeClasses; + } + + /** + * Get the list of all enabled themes IDs + * for the logged-in user + * + * @return string[] + */ + public function getEnabledThemes(): array { + $enforcedThemeId = $this->config->getSystemValueString('enforce_theme', ''); + if ($enforcedThemeId !== '') { + // a theme enforce page setup, make sure that the theme is in selectable list + return array_unique(array_merge([$enforcedThemeId], $this->staticThemeIds)); + } + + $user = $this->userSession->getUser(); + if ($user === null) { + // a non-enforce, anonymous page setup + return array_unique(array_merge(['default'], $this->staticThemeIds)); + } + + // a user selected page setup + $userValues = $this->config->getUserValue($user->getUID(), Application::APP_ID, 'enabled-themes', '[]'); + $enabledThemeIds = json_decode($userValues); + $selectedThemeIds = array_intersect($this->selectableThemeIds, $enabledThemeIds); + if (empty($selectedThemeIds)) { + // add default to the enabled fonts adn statics (as there is no selected theme) + return array_unique(array_merge(['default'], $this->staticThemeIds)); + } + + return array_unique(array_merge($selectedThemeIds, $this->staticThemeIds)); + } + + /** + * Enable a theme for the logged-in user + * + * @param ITheme $theme the theme to enable + * @return string[] the enabled themes + */ + public function enableTheme(ITheme $theme): array { + $themeIds = $this->getEnabledThemes(); + + // If already enabled, ignore + if (in_array($theme->getId(), $themeIds)) { + return $themeIds; + } + + // we are not in user context + $user = $this->userSession->getUser(); + if ($user === null) { + return $themeIds; + } + + if (in_array($theme->getId(), $this->selectableThemeIds)) { + // change selection and sort it + $themeIds = array_unique( + array_merge([$theme->getId()], + array_diff($themeIds, $this->selectableThemeIds))); + } // statics are already always included + + $this->config->setUserValue($user->getUID(), Application::APP_ID, + 'enabled-themes', json_encode(array_values($themeIds))); + return $themeIds; + } + + /** + * Disable a theme for the logged-in user + * + * @param ITheme $theme the theme to disable + * @return string[] the enabled themes + */ + public function disableTheme(ITheme $theme): array { + $themeIds = $this->getEnabledThemes(); + + $foundId = array_search($theme->getId(), $themeIds); + + // If already disabled, ignore + if (!$foundId) { + return $themeIds; + } + + if (in_array($theme->getId(), $this->staticThemeIds)) { + return $themeIds; + } + + // we are not in user context + $user = $this->userSession->getUser(); + if ($user === null) { + return $themeIds; + } + + // we are not testing for not disabling a selectable theme as this + // may produces trouble with Nextcloud settings page (TODO) + + array_splice($themeIds, $foundId, $foundId); + $this->config->setUserValue($user->getUID(), Application::APP_ID, + 'enabled-themes', json_encode(array_values($themeIds))); + return $themeIds; + } + + /** + * Check whether a theme is enabled or not + * + * @return bool + */ + public function isEnabled(ITheme $theme): bool { + $themeIds = $this->getEnabledThemes(); + return in_array($theme->getId(), $themeIds); + } + +} diff --git a/lib/Themes/NCDefaultTheme.php b/lib/Themes/NCDefaultTheme.php new file mode 100644 index 0000000..df8dead --- /dev/null +++ b/lib/Themes/NCDefaultTheme.php @@ -0,0 +1,85 @@ +l->t('NC theme'); + } + + public function getEnableLabel(): string { + return $this->l->t('Enable NC theme'); + } + + public function getDescription(): string { + return $this->l->t('The NC appearance.'); + } + + public function getMediaQuery(): string { + return '(prefers-color-scheme: light)'; + } + + public function getMeta(): array { + // https://html.spec.whatwg.org/multipage/semantics.html#meta-color-scheme + return [[ + 'name' => 'color-scheme', + 'content' => 'light', + ]]; + } + + public function getCSSVariables(): array { + $defaultVariables = parent::getCSSVariables(); + + return array_merge( + $defaultVariables, + [ + ] + ); + } +} diff --git a/tests/unit/AppInfo/ApplicationTest.php b/tests/unit/AppInfo/ApplicationTest.php new file mode 100644 index 0000000..465b745 --- /dev/null +++ b/tests/unit/AppInfo/ApplicationTest.php @@ -0,0 +1,33 @@ +application = new Application(); + $coordinator = \OC::$server->get(Coordinator::class); + $this->application->register($coordinator->getRegistrationContext()->for('nc_theming')); + } + + public function testThemingOverrideRegistration(): void { + $themesService = \OC::$server->getRegisteredAppContainer('theming')->get(ThemesService::class); + $this->assertInstanceOf(NcThemesService::class, $themesService, 'FATAL: NcThemesService is not registered!'); + } +} From 6e80418547dda040ea1fbc7a4e5d7939fefd2e16 Mon Sep 17 00:00:00 2001 From: "Misha M.-Kupriyanov" Date: Thu, 12 Sep 2024 17:28:20 +0200 Subject: [PATCH 8/9] feat(theming-fonts): use OpenSans as --font-face Signed-off-by: Misha M.-Kupriyanov --- fonts/OpenSans/OpenSans-Bold-webfont.eot | Bin 0 -> 18866 bytes fonts/OpenSans/OpenSans-Bold-webfont.svg | 1635 ++++++++++++++++ fonts/OpenSans/OpenSans-Bold-webfont.ttf | Bin 0 -> 35924 bytes fonts/OpenSans/OpenSans-Bold-webfont.woff | Bin 0 -> 14192 bytes fonts/OpenSans/OpenSans-Bold-webfont.woff2 | Bin 0 -> 10284 bytes fonts/OpenSans/OpenSans-Regular-webfont.eot | Bin 0 -> 18233 bytes fonts/OpenSans/OpenSans-Regular-webfont.svg | 1637 +++++++++++++++++ fonts/OpenSans/OpenSans-Regular-webfont.ttf | Bin 0 -> 34156 bytes fonts/OpenSans/OpenSans-Regular-webfont.woff | Bin 0 -> 14260 bytes fonts/OpenSans/OpenSans-Regular-webfont.woff2 | Bin 0 -> 10352 bytes fonts/OpenSans/OpenSans-SemiBold-webfont.eot | Bin 0 -> 18805 bytes fonts/OpenSans/OpenSans-SemiBold-webfont.svg | 1637 +++++++++++++++++ fonts/OpenSans/OpenSans-SemiBold-webfont.ttf | Bin 0 -> 35240 bytes fonts/OpenSans/OpenSans-SemiBold-webfont.woff | Bin 0 -> 14344 bytes .../OpenSans/OpenSans-SemiBold-webfont.woff2 | Bin 0 -> 10328 bytes lib/Themes/NCDefaultTheme.php | 62 + 16 files changed, 4971 insertions(+) create mode 100755 fonts/OpenSans/OpenSans-Bold-webfont.eot create mode 100755 fonts/OpenSans/OpenSans-Bold-webfont.svg create mode 100755 fonts/OpenSans/OpenSans-Bold-webfont.ttf create mode 100755 fonts/OpenSans/OpenSans-Bold-webfont.woff create mode 100755 fonts/OpenSans/OpenSans-Bold-webfont.woff2 create mode 100755 fonts/OpenSans/OpenSans-Regular-webfont.eot create mode 100755 fonts/OpenSans/OpenSans-Regular-webfont.svg create mode 100755 fonts/OpenSans/OpenSans-Regular-webfont.ttf create mode 100755 fonts/OpenSans/OpenSans-Regular-webfont.woff create mode 100755 fonts/OpenSans/OpenSans-Regular-webfont.woff2 create mode 100755 fonts/OpenSans/OpenSans-SemiBold-webfont.eot create mode 100755 fonts/OpenSans/OpenSans-SemiBold-webfont.svg create mode 100755 fonts/OpenSans/OpenSans-SemiBold-webfont.ttf create mode 100755 fonts/OpenSans/OpenSans-SemiBold-webfont.woff create mode 100755 fonts/OpenSans/OpenSans-SemiBold-webfont.woff2 diff --git a/fonts/OpenSans/OpenSans-Bold-webfont.eot b/fonts/OpenSans/OpenSans-Bold-webfont.eot new file mode 100755 index 0000000000000000000000000000000000000000..a78a2a9b068bba30bd86455f57feae8f6e3f233a GIT binary patch literal 18866 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 Qnna<*fIl{EU=ljrXq + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fonts/OpenSans/OpenSans-Bold-webfont.ttf b/fonts/OpenSans/OpenSans-Bold-webfont.ttf new file mode 100755 index 0000000000000000000000000000000000000000..974a7c5edd7f14486c43561220b54244da886885 GIT binary patch literal 35924 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 J*BSue{{xGvL4g1O literal 0 HcmV?d00001 diff --git a/fonts/OpenSans/OpenSans-Bold-webfont.woff2 b/fonts/OpenSans/OpenSans-Bold-webfont.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..51c75cadf14fc03d3971457f5525730a7a21c12f GIT binary patch literal 10284 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 VjUyFw_tG>yE$3x9SE1bvTd + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fonts/OpenSans/OpenSans-Regular-webfont.ttf b/fonts/OpenSans/OpenSans-Regular-webfont.ttf new file mode 100755 index 0000000000000000000000000000000000000000..0dae9c3bbc0b52ccd98b060849e631661a9bebdc GIT binary patch literal 34156 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 literal 0 HcmV?d00001 diff --git a/fonts/OpenSans/OpenSans-Regular-webfont.woff b/fonts/OpenSans/OpenSans-Regular-webfont.woff new file mode 100755 index 0000000000000000000000000000000000000000..ac2b2c65e3d1fbefea04e2caf9e2242f0d997254 GIT binary patch literal 14260 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 literal 0 HcmV?d00001 diff --git a/fonts/OpenSans/OpenSans-Regular-webfont.woff2 b/fonts/OpenSans/OpenSans-Regular-webfont.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..402dfd77bc2b8b5fd212abadf5d24f6c9cfa5d8a GIT binary patch literal 10352 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 literal 0 HcmV?d00001 diff --git a/fonts/OpenSans/OpenSans-SemiBold-webfont.eot b/fonts/OpenSans/OpenSans-SemiBold-webfont.eot new file mode 100755 index 0000000000000000000000000000000000000000..cbbfa5b0d81e3694403669711a6d0dfc41d6bf64 GIT binary patch literal 18805 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 QwMQ!xk#yF0e1vDvyA*O)c>n+a literal 0 HcmV?d00001 diff --git a/fonts/OpenSans/OpenSans-SemiBold-webfont.svg b/fonts/OpenSans/OpenSans-SemiBold-webfont.svg new file mode 100755 index 0000000..7a3f2dd --- /dev/null +++ b/fonts/OpenSans/OpenSans-SemiBold-webfont.svg @@ -0,0 +1,1637 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fonts/OpenSans/OpenSans-SemiBold-webfont.ttf b/fonts/OpenSans/OpenSans-SemiBold-webfont.ttf new file mode 100755 index 0000000000000000000000000000000000000000..314e983a4bce3320b1ebeea9d21aeea88eaab52e GIT binary patch literal 35240 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 literal 0 HcmV?d00001 diff --git a/fonts/OpenSans/OpenSans-SemiBold-webfont.woff b/fonts/OpenSans/OpenSans-SemiBold-webfont.woff new file mode 100755 index 0000000000000000000000000000000000000000..c7cdaffa00c690658764b5131ed5fe953ace493e GIT binary patch literal 14344 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 literal 0 HcmV?d00001 diff --git a/lib/Themes/NCDefaultTheme.php b/lib/Themes/NCDefaultTheme.php index df8dead..640252d 100644 --- a/lib/Themes/NCDefaultTheme.php +++ b/lib/Themes/NCDefaultTheme.php @@ -75,11 +75,73 @@ public function getMeta(): array { public function getCSSVariables(): array { $defaultVariables = parent::getCSSVariables(); + $originalFontFace = $defaultVariables['--font-face']; return array_merge( $defaultVariables, [ + '--font-face' => '"Open sans", ' . $originalFontFace ] ); } + + public function getCustomCss(): string { + $regularEot = $this->urlGenerator->linkTo('nc_theming', 'fonts/OpenSans/OpenSans-Regular-webfont.eot'); + $regularWoff = $this->urlGenerator->linkTo('nc_theming', 'fonts/OpenSans/OpenSans-Regular-webfont.woff'); + $regularWoff2 = $this->urlGenerator->linkTo('nc_theming', 'fonts/OpenSans/OpenSans-Regular-webfont.woff2'); + $regularTtf = $this->urlGenerator->linkTo('nc_theming', 'fonts/OpenSans/OpenSans-Regular-webfont.ttf'); + $regularSvg = $this->urlGenerator->linkTo('nc_theming', 'fonts/OpenSans/OpenSans-Regular-webfont.svg#open_sansregular'); + + $semiBoldEot = $this->urlGenerator->linkTo('nc_theming', 'fonts/OpenSans/OpenSans-SemiBold-webfont.eot'); + $semiBoldWoff = $this->urlGenerator->linkTo('nc_theming', 'fonts/OpenSans/OpenSans-SemiBold-webfont.woff'); + $semiBoldWoff2 = $this->urlGenerator->linkTo('nc_theming', 'fonts/OpenSans/OpenSans-SemiBold-webfont.woff2'); + $semiBoldTtf = $this->urlGenerator->linkTo('nc_theming', 'fonts/OpenSans/OpenSans-SemiBold-webfont.ttf'); + $semiBoldSvg = $this->urlGenerator->linkTo('nc_theming', 'fonts/OpenSans/OpenSans-SemiBold-webfont.svg#open_sansregular'); + + $boldEot = $this->urlGenerator->linkTo('nc_theming', 'fonts/OpenSans/OpenSans-Bold-webfont.eot'); + $boldWoff = $this->urlGenerator->linkTo('nc_theming', 'fonts/OpenSans/OpenSans-Bold-webfont.woff'); + $boldWoff2 = $this->urlGenerator->linkTo('nc_theming', 'fonts/OpenSans/OpenSans-Bold-webfont.woff2'); + $boldTtf = $this->urlGenerator->linkTo('nc_theming', 'fonts/OpenSans/OpenSans-Bold-webfont.ttf'); + $boldSvg = $this->urlGenerator->linkTo('nc_theming', 'fonts/OpenSans/OpenSans-Bold-webfont.svg#open_sansregular'); + + return " + @font-face { + font-family: 'Open sans'; + src: url('$regularEot') format('embedded-opentype'), + url('$regularWoff') format('woff'), + url('$regularWoff2') format('woff2'), + url('$regularTtf') format('truetype'), + url('$regularSvg') format('svg'); + font-weight: normal; + font-style: normal; + font-display: swap; + } + + /* Open sans semi-bold variant */ + @font-face { + font-family: 'Open sans'; + src: url('$semiBoldEot') format('embedded-opentype'), + url('$semiBoldWoff') format('woff'), + url($semiBoldWoff2) format('woff2'), + url('$semiBoldTtf') format('truetype'), + url('$semiBoldSvg') format('svg'); + font-weight: 600; + font-style: normal; + font-display: swap; + } + + /* Open sans bold variant */ + @font-face { + font-family: 'Open sans'; + src: url('$boldEot') format('embedded-opentype'), + url('$boldWoff') format('woff'), + url('$boldWoff2') format('woff2'), + url('$boldTtf') format('truetype'), + url('$boldSvg') format('svg'); + font-weight: bold; + font-style: normal; + font-display: swap; + } + "; + } } From 5b0886ddaba895e022324c7bd7522ee9b3d3d40d Mon Sep 17 00:00:00 2001 From: Kai Henseler Date: Tue, 17 Sep 2024 10:42:17 +0200 Subject: [PATCH 9/9] ci(github): remove low priority runner Signed-off-by: Kai Henseler --- .github/workflows/block-unconventional-commits.yml | 2 +- .github/workflows/fixup.yml | 2 +- .github/workflows/lint-info-xml.yml | 2 +- .github/workflows/lint-php.yml | 4 ++-- .github/workflows/psalm-matrix.yml | 4 ++-- .github/workflows/update-nextcloud-ocp-approve-merge.yml | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/block-unconventional-commits.yml b/.github/workflows/block-unconventional-commits.yml index 295c30b..90dd087 100644 --- a/.github/workflows/block-unconventional-commits.yml +++ b/.github/workflows/block-unconventional-commits.yml @@ -20,7 +20,7 @@ jobs: block-unconventional-commits: name: Block unconventional commits - runs-on: ubuntu-latest-low + runs-on: ubuntu-latest steps: - name: Checkout diff --git a/.github/workflows/fixup.yml b/.github/workflows/fixup.yml index 98d4992..9548d19 100644 --- a/.github/workflows/fixup.yml +++ b/.github/workflows/fixup.yml @@ -24,7 +24,7 @@ jobs: pull-requests: write name: Block fixup and squash commits - runs-on: ubuntu-latest-low + runs-on: ubuntu-latest steps: - name: Run check diff --git a/.github/workflows/lint-info-xml.yml b/.github/workflows/lint-info-xml.yml index 492e8a0..bf6f178 100644 --- a/.github/workflows/lint-info-xml.yml +++ b/.github/workflows/lint-info-xml.yml @@ -16,7 +16,7 @@ concurrency: jobs: xml-linters: - runs-on: ubuntu-latest-low + runs-on: ubuntu-latest name: info.xml lint steps: diff --git a/.github/workflows/lint-php.yml b/.github/workflows/lint-php.yml index c37ab3f..a965ecc 100644 --- a/.github/workflows/lint-php.yml +++ b/.github/workflows/lint-php.yml @@ -16,7 +16,7 @@ concurrency: jobs: matrix: - runs-on: ubuntu-latest-low + runs-on: ubuntu-latest outputs: php-versions: ${{ steps.versions.outputs.php-versions }} steps: @@ -55,7 +55,7 @@ jobs: summary: permissions: contents: none - runs-on: ubuntu-latest-low + runs-on: ubuntu-latest needs: php-lint if: always() diff --git a/.github/workflows/psalm-matrix.yml b/.github/workflows/psalm-matrix.yml index 8e3d42f..1dcd93c 100644 --- a/.github/workflows/psalm-matrix.yml +++ b/.github/workflows/psalm-matrix.yml @@ -13,7 +13,7 @@ concurrency: jobs: matrix: - runs-on: ubuntu-latest-low + runs-on: ubuntu-latest outputs: ocp-matrix: ${{ steps.versions.outputs.ocp-matrix }} steps: @@ -56,7 +56,7 @@ jobs: run: composer run psalm summary: - runs-on: ubuntu-latest-low + runs-on: ubuntu-latest needs: static-analysis if: always() diff --git a/.github/workflows/update-nextcloud-ocp-approve-merge.yml b/.github/workflows/update-nextcloud-ocp-approve-merge.yml index 9d24f73..c3f5716 100644 --- a/.github/workflows/update-nextcloud-ocp-approve-merge.yml +++ b/.github/workflows/update-nextcloud-ocp-approve-merge.yml @@ -22,7 +22,7 @@ concurrency: jobs: auto-approve-merge: if: github.actor == 'nextcloud-command' - runs-on: ubuntu-latest-low + runs-on: ubuntu-latest permissions: # for hmarr/auto-approve-action to approve PRs pull-requests: write