Compare commits
10 Commits
8cce9c38cd
...
643504edc9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
643504edc9 | ||
|
|
6ff6de7124 | ||
|
|
ea880e87ab | ||
|
|
3c9e8f9f2e | ||
|
|
a3898c007d | ||
|
|
3257f7a8ec | ||
|
|
2baa06c9e8 | ||
|
|
2b6c9b74ed | ||
|
|
b87287e0f8 | ||
|
|
f3d95815f3 |
2
.github/workflows/_python-lint.yml
vendored
2
.github/workflows/_python-lint.yml
vendored
@ -15,7 +15,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v5
|
||||||
- uses: actions/setup-python@v5
|
- uses: actions/setup-python@v6
|
||||||
with:
|
with:
|
||||||
python-version: "3.12"
|
python-version: "3.12"
|
||||||
- uses: actions/cache@v4
|
- uses: actions/cache@v4
|
||||||
|
|||||||
2
.github/workflows/api-schema.yml
vendored
2
.github/workflows/api-schema.yml
vendored
@ -25,7 +25,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- uses: actions/setup-python@v5
|
- uses: actions/setup-python@v6
|
||||||
with:
|
with:
|
||||||
python-version: "3.12"
|
python-version: "3.12"
|
||||||
|
|
||||||
|
|||||||
2
.github/workflows/docs.yml
vendored
2
.github/workflows/docs.yml
vendored
@ -34,7 +34,7 @@ jobs:
|
|||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-docs-lint-tools
|
${{ runner.os }}-docs-lint-tools
|
||||||
|
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v5
|
||||||
with:
|
with:
|
||||||
node-version: "22"
|
node-version: "22"
|
||||||
|
|
||||||
|
|||||||
6
.github/workflows/housekeeping.yml
vendored
6
.github/workflows/housekeeping.yml
vendored
@ -22,7 +22,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v5
|
||||||
|
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v5
|
||||||
with:
|
with:
|
||||||
node-version: "22"
|
node-version: "22"
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Check Links
|
- name: Check Links
|
||||||
id: lychee
|
id: lychee
|
||||||
uses: lycheeverse/lychee-action@v2.5.0
|
uses: lycheeverse/lychee-action@v2.6.1
|
||||||
with:
|
with:
|
||||||
args: >-
|
args: >-
|
||||||
'**/*.md'
|
'**/*.md'
|
||||||
@ -77,7 +77,7 @@ jobs:
|
|||||||
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/stale@v9
|
- uses: actions/stale@v10
|
||||||
with:
|
with:
|
||||||
stale-issue-message: >
|
stale-issue-message: >
|
||||||
This issue has been automatically marked as stale because it has not had
|
This issue has been automatically marked as stale because it has not had
|
||||||
|
|||||||
2
.github/workflows/pr.yml
vendored
2
.github/workflows/pr.yml
vendored
@ -12,7 +12,7 @@ jobs:
|
|||||||
name: Validate PR title
|
name: Validate PR title
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: amannn/action-semantic-pull-request@v6.1.0
|
- uses: amannn/action-semantic-pull-request@v6.1.1
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
with:
|
with:
|
||||||
|
|||||||
4
.github/workflows/project.yml
vendored
4
.github/workflows/project.yml
vendored
@ -17,7 +17,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v5
|
||||||
|
|
||||||
- uses: actions/setup-python@v5
|
- uses: actions/setup-python@v6
|
||||||
with:
|
with:
|
||||||
python-version: "3.12"
|
python-version: "3.12"
|
||||||
|
|
||||||
@ -34,7 +34,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v5
|
||||||
- uses: actions/setup-python@v5
|
- uses: actions/setup-python@v6
|
||||||
with:
|
with:
|
||||||
python-version: "3.x"
|
python-version: "3.x"
|
||||||
- run: make all
|
- run: make all
|
||||||
|
|||||||
@ -47,7 +47,7 @@ repos:
|
|||||||
args: [--py38-plus]
|
args: [--py38-plus]
|
||||||
|
|
||||||
- repo: https://github.com/adamchainz/django-upgrade
|
- repo: https://github.com/adamchainz/django-upgrade
|
||||||
rev: 1.25.0
|
rev: 1.28.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: django-upgrade
|
- id: django-upgrade
|
||||||
args: [--target-version, "4.2"]
|
args: [--target-version, "4.2"]
|
||||||
|
|||||||
@ -85,7 +85,7 @@ class Importer:
|
|||||||
|
|
||||||
return File.objects.filter(md5=file_md5).exists()
|
return File.objects.filter(md5=file_md5).exists()
|
||||||
|
|
||||||
def _upload_file(self, filepath: Path, library: Optional[str]) -> None:
|
def _upload_file(self, filepath: Path, library_id: Optional[int]) -> None:
|
||||||
try:
|
try:
|
||||||
resp = requests.post(
|
resp = requests.post(
|
||||||
f"{self.url}/rest/media",
|
f"{self.url}/rest/media",
|
||||||
@ -94,7 +94,11 @@ class Importer:
|
|||||||
("file", (filepath.name, filepath.open("rb"))),
|
("file", (filepath.name, filepath.open("rb"))),
|
||||||
],
|
],
|
||||||
timeout=30,
|
timeout=30,
|
||||||
cookies={"tt_upload": library} if library is not None else {},
|
cookies=(
|
||||||
|
{"tt_upload": str(library_id)}
|
||||||
|
if library_id not in (None, 0)
|
||||||
|
else {}
|
||||||
|
),
|
||||||
)
|
)
|
||||||
resp.raise_for_status()
|
resp.raise_for_status()
|
||||||
|
|
||||||
@ -105,7 +109,7 @@ class Importer:
|
|||||||
logger.info("deleting %s", filepath)
|
logger.info("deleting %s", filepath)
|
||||||
filepath.unlink()
|
filepath.unlink()
|
||||||
|
|
||||||
def _handle_file(self, filepath: Path, library: Optional[str]) -> None:
|
def _handle_file(self, filepath: Path, library_id: Optional[int]) -> None:
|
||||||
logger.debug("handling file %s", filepath)
|
logger.debug("handling file %s", filepath)
|
||||||
|
|
||||||
if not filepath.is_file():
|
if not filepath.is_file():
|
||||||
@ -117,7 +121,7 @@ class Importer:
|
|||||||
self._delete_file(filepath)
|
self._delete_file(filepath)
|
||||||
return
|
return
|
||||||
|
|
||||||
self._upload_file(filepath, library)
|
self._upload_file(filepath, library_id)
|
||||||
|
|
||||||
if self.delete_after_upload:
|
if self.delete_after_upload:
|
||||||
self._delete_file(filepath)
|
self._delete_file(filepath)
|
||||||
@ -125,7 +129,7 @@ class Importer:
|
|||||||
def _walk_dir(
|
def _walk_dir(
|
||||||
self,
|
self,
|
||||||
path: Path,
|
path: Path,
|
||||||
library: Optional[str],
|
library_id: Optional[int],
|
||||||
allowed_extensions: List[str],
|
allowed_extensions: List[str],
|
||||||
) -> None:
|
) -> None:
|
||||||
if not path.is_dir():
|
if not path.is_dir():
|
||||||
@ -133,13 +137,13 @@ class Importer:
|
|||||||
|
|
||||||
for sub_path in path.iterdir():
|
for sub_path in path.iterdir():
|
||||||
if sub_path.is_dir():
|
if sub_path.is_dir():
|
||||||
self._walk_dir(sub_path, library, allowed_extensions)
|
self._walk_dir(sub_path, library_id, allowed_extensions)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if sub_path.suffix.lower() not in allowed_extensions:
|
if sub_path.suffix.lower() not in allowed_extensions:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
self._handle_file(sub_path.resolve(), library)
|
self._handle_file(sub_path.resolve(), library_id)
|
||||||
|
|
||||||
def _check_library(self, library: str) -> bool:
|
def _check_library(self, library: str) -> bool:
|
||||||
return Library.objects.filter(code=library).exists()
|
return Library.objects.filter(code=library).exists()
|
||||||
@ -153,8 +157,16 @@ class Importer:
|
|||||||
if library is not None and not self._check_library(library):
|
if library is not None and not self._check_library(library):
|
||||||
raise ValueError(f"provided library {library} does not exist")
|
raise ValueError(f"provided library {library} does not exist")
|
||||||
|
|
||||||
|
if library:
|
||||||
|
try:
|
||||||
|
library_id = Library.objects.get(code=library).id
|
||||||
|
except Library.DoesNotExist as exc:
|
||||||
|
raise ValueError(f"provided library {library} does not exist") from exc
|
||||||
|
else:
|
||||||
|
library_id = 0
|
||||||
|
|
||||||
allowed_extensions = [
|
allowed_extensions = [
|
||||||
(x if x.startswith(".") else "." + x) for x in allowed_extensions
|
(x if x.startswith(".") else "." + x) for x in allowed_extensions
|
||||||
]
|
]
|
||||||
|
|
||||||
self._walk_dir(path, library, allowed_extensions)
|
self._walk_dir(path, library_id, allowed_extensions)
|
||||||
|
|||||||
@ -22,6 +22,8 @@ class Library(models.Model):
|
|||||||
db_column="analyze_cue_points",
|
db_column="analyze_cue_points",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
id = models.AutoField(primary_key=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
managed = False
|
managed = False
|
||||||
db_table = "cc_track_types"
|
db_table = "cc_track_types"
|
||||||
|
|||||||
@ -30,6 +30,7 @@ def _import_paths(tmp_path: Path):
|
|||||||
def _library():
|
def _library():
|
||||||
return baker.make(
|
return baker.make(
|
||||||
"storage.Library",
|
"storage.Library",
|
||||||
|
id=1,
|
||||||
code="MUS",
|
code="MUS",
|
||||||
name="Music",
|
name="Music",
|
||||||
description="Some music",
|
description="Some music",
|
||||||
@ -62,8 +63,8 @@ def test_importer(
|
|||||||
):
|
):
|
||||||
importer.import_dir(import_paths[0], library.code, [".mp3"])
|
importer.import_dir(import_paths[0], library.code, [".mp3"])
|
||||||
|
|
||||||
importer._handle_file.assert_called_with(import_paths[1], library.code)
|
importer._handle_file.assert_called_with(import_paths[1], library.id)
|
||||||
importer._upload_file.assert_called_with(import_paths[1], library.code)
|
importer._upload_file.assert_called_with(import_paths[1], library.id)
|
||||||
importer._delete_file.assert_not_called()
|
importer._delete_file.assert_not_called()
|
||||||
|
|
||||||
|
|
||||||
@ -76,8 +77,8 @@ def test_importer_and_delete(
|
|||||||
importer.delete_after_upload = True
|
importer.delete_after_upload = True
|
||||||
importer.import_dir(import_paths[0], library.code, [".mp3"])
|
importer.import_dir(import_paths[0], library.code, [".mp3"])
|
||||||
|
|
||||||
importer._handle_file.assert_called_with(import_paths[1], library.code)
|
importer._handle_file.assert_called_with(import_paths[1], library.id)
|
||||||
importer._upload_file.assert_called_with(import_paths[1], library.code)
|
importer._upload_file.assert_called_with(import_paths[1], library.id)
|
||||||
importer._delete_file.assert_called_with(import_paths[1])
|
importer._delete_file.assert_called_with(import_paths[1])
|
||||||
|
|
||||||
|
|
||||||
@ -87,11 +88,11 @@ def test_importer_existing_file(
|
|||||||
importer: MockImporter,
|
importer: MockImporter,
|
||||||
library,
|
library,
|
||||||
):
|
):
|
||||||
baker.make("storage.File", md5="46305a7cf42ee53976c88d337e47e940")
|
baker.make("storage.File", id=1, md5="46305a7cf42ee53976c88d337e47e940")
|
||||||
|
|
||||||
importer.import_dir(import_paths[0], library.code, [".mp3"])
|
importer.import_dir(import_paths[0], library.code, [".mp3"])
|
||||||
|
|
||||||
importer._handle_file.assert_called_with(import_paths[1], library.code)
|
importer._handle_file.assert_called_with(import_paths[1], library.id)
|
||||||
importer._upload_file.assert_not_called()
|
importer._upload_file.assert_not_called()
|
||||||
importer._delete_file.assert_not_called()
|
importer._delete_file.assert_not_called()
|
||||||
|
|
||||||
@ -102,12 +103,12 @@ def test_importer_existing_file_and_delete(
|
|||||||
importer: MockImporter,
|
importer: MockImporter,
|
||||||
library,
|
library,
|
||||||
):
|
):
|
||||||
baker.make("storage.File", md5="46305a7cf42ee53976c88d337e47e940")
|
baker.make("storage.File", id=1, md5="46305a7cf42ee53976c88d337e47e940")
|
||||||
|
|
||||||
importer.delete_if_exists = True
|
importer.delete_if_exists = True
|
||||||
importer.import_dir(import_paths[0], library.code, [".mp3"])
|
importer.import_dir(import_paths[0], library.code, [".mp3"])
|
||||||
|
|
||||||
importer._handle_file.assert_called_with(import_paths[1], library.code)
|
importer._handle_file.assert_called_with(import_paths[1], library.id)
|
||||||
importer._upload_file.assert_not_called()
|
importer._upload_file.assert_not_called()
|
||||||
importer._delete_file.assert_called_with(import_paths[1])
|
importer._delete_file.assert_called_with(import_paths[1])
|
||||||
|
|
||||||
|
|||||||
187
legacy/composer.lock
generated
187
legacy/composer.lock
generated
@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "99a8bfaf51b5e36bb702f789ce200fea",
|
"content-hash": "3664fa9473d4b70e3c383b59ca794c82",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "adbario/php-dot-notation",
|
"name": "adbario/php-dot-notation",
|
||||||
@ -62,16 +62,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "composer/semver",
|
"name": "composer/semver",
|
||||||
"version": "3.4.4",
|
"version": "3.4.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/composer/semver.git",
|
"url": "https://github.com/composer/semver.git",
|
||||||
"reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95"
|
"reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95",
|
"url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
|
||||||
"reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95",
|
"reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -123,7 +123,7 @@
|
|||||||
"support": {
|
"support": {
|
||||||
"irc": "ircs://irc.libera.chat:6697/composer",
|
"irc": "ircs://irc.libera.chat:6697/composer",
|
||||||
"issues": "https://github.com/composer/semver/issues",
|
"issues": "https://github.com/composer/semver/issues",
|
||||||
"source": "https://github.com/composer/semver/tree/3.4.4"
|
"source": "https://github.com/composer/semver/tree/3.4.3"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -133,9 +133,13 @@
|
|||||||
{
|
{
|
||||||
"url": "https://github.com/composer",
|
"url": "https://github.com/composer",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
|
||||||
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-08-20T19:15:30+00:00"
|
"time": "2024-09-19T14:15:21+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "james-heinrich/getid3",
|
"name": "james-heinrich/getid3",
|
||||||
@ -454,17 +458,17 @@
|
|||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/libretime/propel1.git",
|
"url": "https://github.com/libretime/propel1.git",
|
||||||
"reference": "64a9a47a8d492945b6810d8c3f0e5fc1b20a7d90"
|
"reference": "b7e07124f494646da5be7342e949e133140c8eba"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/libretime/propel1/zipball/64a9a47a8d492945b6810d8c3f0e5fc1b20a7d90",
|
"url": "https://api.github.com/repos/libretime/propel1/zipball/b7e07124f494646da5be7342e949e133140c8eba",
|
||||||
"reference": "64a9a47a8d492945b6810d8c3f0e5fc1b20a7d90",
|
"reference": "b7e07124f494646da5be7342e949e133140c8eba",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"phing/phing": "^2.17",
|
"phing/phing": "~2.4",
|
||||||
"php": ">7.1"
|
"php": "^7.1"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"pear-pear.php.net/pear_packagefilemanager2": "@stable",
|
"pear-pear.php.net/pear_packagefilemanager2": "@stable",
|
||||||
@ -523,7 +527,7 @@
|
|||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/libretime/propel1/tree/main"
|
"source": "https://github.com/libretime/propel1/tree/main"
|
||||||
},
|
},
|
||||||
"time": "2025-08-10T11:00:05+00:00"
|
"time": "2023-01-12T16:06:29+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "paragonie/constant_time_encoding",
|
"name": "paragonie/constant_time_encoding",
|
||||||
@ -756,16 +760,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "php-amqplib/php-amqplib",
|
"name": "php-amqplib/php-amqplib",
|
||||||
"version": "v3.7.3",
|
"version": "v3.7.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/php-amqplib/php-amqplib.git",
|
"url": "https://github.com/php-amqplib/php-amqplib.git",
|
||||||
"reference": "9f50fe69a9f1a19e2cb25596a354d705de36fe59"
|
"reference": "738a73eb0019b6c99d9bc25d7a0c0dd8f56a5199"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/9f50fe69a9f1a19e2cb25596a354d705de36fe59",
|
"url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/738a73eb0019b6c99d9bc25d7a0c0dd8f56a5199",
|
||||||
"reference": "9f50fe69a9f1a19e2cb25596a354d705de36fe59",
|
"reference": "738a73eb0019b6c99d9bc25d7a0c0dd8f56a5199",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -831,22 +835,22 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/php-amqplib/php-amqplib/issues",
|
"issues": "https://github.com/php-amqplib/php-amqplib/issues",
|
||||||
"source": "https://github.com/php-amqplib/php-amqplib/tree/v3.7.3"
|
"source": "https://github.com/php-amqplib/php-amqplib/tree/v3.7.2"
|
||||||
},
|
},
|
||||||
"time": "2025-02-18T20:11:13+00:00"
|
"time": "2024-11-21T09:21:41+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpseclib/phpseclib",
|
"name": "phpseclib/phpseclib",
|
||||||
"version": "3.0.46",
|
"version": "3.0.42",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpseclib/phpseclib.git",
|
"url": "https://github.com/phpseclib/phpseclib.git",
|
||||||
"reference": "56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6"
|
"reference": "db92f1b1987b12b13f248fe76c3a52cadb67bb98"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6",
|
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/db92f1b1987b12b13f248fe76c3a52cadb67bb98",
|
||||||
"reference": "56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6",
|
"reference": "db92f1b1987b12b13f248fe76c3a52cadb67bb98",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -927,7 +931,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/phpseclib/phpseclib/issues",
|
"issues": "https://github.com/phpseclib/phpseclib/issues",
|
||||||
"source": "https://github.com/phpseclib/phpseclib/tree/3.0.46"
|
"source": "https://github.com/phpseclib/phpseclib/tree/3.0.42"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -943,7 +947,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-06-26T16:29:55+00:00"
|
"time": "2024-09-16T03:06:04+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "psr/http-message",
|
"name": "psr/http-message",
|
||||||
@ -1172,12 +1176,12 @@
|
|||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"thanks": {
|
|
||||||
"url": "https://github.com/symfony/contracts",
|
|
||||||
"name": "symfony/contracts"
|
|
||||||
},
|
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-main": "2.5-dev"
|
"dev-main": "2.5-dev"
|
||||||
|
},
|
||||||
|
"thanks": {
|
||||||
|
"name": "symfony/contracts",
|
||||||
|
"url": "https://github.com/symfony/contracts"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@ -1289,7 +1293,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-ctype",
|
"name": "symfony/polyfill-ctype",
|
||||||
"version": "v1.33.0",
|
"version": "v1.31.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-ctype.git",
|
"url": "https://github.com/symfony/polyfill-ctype.git",
|
||||||
@ -1313,8 +1317,8 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"thanks": {
|
"thanks": {
|
||||||
"url": "https://github.com/symfony/polyfill",
|
"name": "symfony/polyfill",
|
||||||
"name": "symfony/polyfill"
|
"url": "https://github.com/symfony/polyfill"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@ -1348,7 +1352,7 @@
|
|||||||
"portable"
|
"portable"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0"
|
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -1359,10 +1363,6 @@
|
|||||||
"url": "https://github.com/fabpot",
|
"url": "https://github.com/fabpot",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"url": "https://github.com/nicolas-grekas",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
@ -1372,20 +1372,19 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-mbstring",
|
"name": "symfony/polyfill-mbstring",
|
||||||
"version": "v1.33.0",
|
"version": "v1.31.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
||||||
"reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493"
|
"reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493",
|
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341",
|
||||||
"reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493",
|
"reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"ext-iconv": "*",
|
|
||||||
"php": ">=7.2"
|
"php": ">=7.2"
|
||||||
},
|
},
|
||||||
"provide": {
|
"provide": {
|
||||||
@ -1397,8 +1396,8 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"thanks": {
|
"thanks": {
|
||||||
"url": "https://github.com/symfony/polyfill",
|
"name": "symfony/polyfill",
|
||||||
"name": "symfony/polyfill"
|
"url": "https://github.com/symfony/polyfill"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@ -1433,7 +1432,7 @@
|
|||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0"
|
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -1444,29 +1443,25 @@
|
|||||||
"url": "https://github.com/fabpot",
|
"url": "https://github.com/fabpot",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"url": "https://github.com/nicolas-grekas",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-12-23T08:48:59+00:00"
|
"time": "2024-09-09T11:45:10+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-php80",
|
"name": "symfony/polyfill-php80",
|
||||||
"version": "v1.33.0",
|
"version": "v1.31.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-php80.git",
|
"url": "https://github.com/symfony/polyfill-php80.git",
|
||||||
"reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608"
|
"reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
|
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
|
||||||
"reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
|
"reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -1475,8 +1470,8 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"thanks": {
|
"thanks": {
|
||||||
"url": "https://github.com/symfony/polyfill",
|
"name": "symfony/polyfill",
|
||||||
"name": "symfony/polyfill"
|
"url": "https://github.com/symfony/polyfill"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@ -1517,7 +1512,7 @@
|
|||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0"
|
"source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -1528,20 +1523,16 @@
|
|||||||
"url": "https://github.com/fabpot",
|
"url": "https://github.com/fabpot",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"url": "https://github.com/nicolas-grekas",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-01-02T08:10:11+00:00"
|
"time": "2024-09-09T11:45:10+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-php81",
|
"name": "symfony/polyfill-php81",
|
||||||
"version": "v1.33.0",
|
"version": "v1.31.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-php81.git",
|
"url": "https://github.com/symfony/polyfill-php81.git",
|
||||||
@ -1559,8 +1550,8 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"thanks": {
|
"thanks": {
|
||||||
"url": "https://github.com/symfony/polyfill",
|
"name": "symfony/polyfill",
|
||||||
"name": "symfony/polyfill"
|
"url": "https://github.com/symfony/polyfill"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@ -1597,7 +1588,7 @@
|
|||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/polyfill-php81/tree/v1.33.0"
|
"source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -1608,10 +1599,6 @@
|
|||||||
"url": "https://github.com/fabpot",
|
"url": "https://github.com/fabpot",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"url": "https://github.com/nicolas-grekas",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
@ -3336,27 +3323,29 @@
|
|||||||
"packages-dev": [
|
"packages-dev": [
|
||||||
{
|
{
|
||||||
"name": "doctrine/deprecations",
|
"name": "doctrine/deprecations",
|
||||||
"version": "1.1.4",
|
"version": "1.1.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/doctrine/deprecations.git",
|
"url": "https://github.com/doctrine/deprecations.git",
|
||||||
"reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9"
|
"reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9",
|
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
|
||||||
"reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9",
|
"reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7.1 || ^8.0"
|
"php": "^7.1 || ^8.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"doctrine/coding-standard": "^9 || ^12",
|
"doctrine/coding-standard": "^9",
|
||||||
"phpstan/phpstan": "1.4.10 || 2.0.3",
|
"phpstan/phpstan": "1.4.10 || 1.10.15",
|
||||||
"phpstan/phpstan-phpunit": "^1.0 || ^2",
|
"phpstan/phpstan-phpunit": "^1.0",
|
||||||
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
|
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
|
||||||
"psr/log": "^1 || ^2 || ^3"
|
"psalm/plugin-phpunit": "0.18.4",
|
||||||
|
"psr/log": "^1 || ^2 || ^3",
|
||||||
|
"vimeo/psalm": "4.30.0 || 5.12.0"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"psr/log": "Allows logging deprecations via PSR-3 logger implementation"
|
"psr/log": "Allows logging deprecations via PSR-3 logger implementation"
|
||||||
@ -3364,7 +3353,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
"Doctrine\\Deprecations\\": "src"
|
"Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
@ -3375,9 +3364,9 @@
|
|||||||
"homepage": "https://www.doctrine-project.org/",
|
"homepage": "https://www.doctrine-project.org/",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/doctrine/deprecations/issues",
|
"issues": "https://github.com/doctrine/deprecations/issues",
|
||||||
"source": "https://github.com/doctrine/deprecations/tree/1.1.4"
|
"source": "https://github.com/doctrine/deprecations/tree/1.1.3"
|
||||||
},
|
},
|
||||||
"time": "2024-12-07T21:18:45+00:00"
|
"time": "2024-01-30T19:34:25+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "doctrine/instantiator",
|
"name": "doctrine/instantiator",
|
||||||
@ -3451,16 +3440,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "myclabs/deep-copy",
|
"name": "myclabs/deep-copy",
|
||||||
"version": "1.13.4",
|
"version": "1.12.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/myclabs/DeepCopy.git",
|
"url": "https://github.com/myclabs/DeepCopy.git",
|
||||||
"reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a"
|
"reference": "123267b2c49fbf30d78a7b2d333f6be754b94845"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a",
|
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845",
|
||||||
"reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a",
|
"reference": "123267b2c49fbf30d78a7b2d333f6be754b94845",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -3499,7 +3488,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/myclabs/DeepCopy/issues",
|
"issues": "https://github.com/myclabs/DeepCopy/issues",
|
||||||
"source": "https://github.com/myclabs/DeepCopy/tree/1.13.4"
|
"source": "https://github.com/myclabs/DeepCopy/tree/1.12.1"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -3507,7 +3496,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-08-01T08:46:24+00:00"
|
"time": "2024-11-08T17:47:46+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpdocumentor/reflection-common",
|
"name": "phpdocumentor/reflection-common",
|
||||||
@ -3564,16 +3553,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpdocumentor/reflection-docblock",
|
"name": "phpdocumentor/reflection-docblock",
|
||||||
"version": "5.6.3",
|
"version": "5.6.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
|
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
|
||||||
"reference": "94f8051919d1b0369a6bcc7931d679a511c03fe9"
|
"reference": "f3558a4c23426d12bffeaab463f8a8d8b681193c"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94f8051919d1b0369a6bcc7931d679a511c03fe9",
|
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/f3558a4c23426d12bffeaab463f8a8d8b681193c",
|
||||||
"reference": "94f8051919d1b0369a6bcc7931d679a511c03fe9",
|
"reference": "f3558a4c23426d12bffeaab463f8a8d8b681193c",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -3622,9 +3611,9 @@
|
|||||||
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
|
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
|
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
|
||||||
"source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.3"
|
"source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.0"
|
||||||
},
|
},
|
||||||
"time": "2025-08-01T19:43:32+00:00"
|
"time": "2024-11-12T11:25:25+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpdocumentor/type-resolver",
|
"name": "phpdocumentor/type-resolver",
|
||||||
@ -3753,16 +3742,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpstan/phpdoc-parser",
|
"name": "phpstan/phpdoc-parser",
|
||||||
"version": "2.2.0",
|
"version": "2.0.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpstan/phpdoc-parser.git",
|
"url": "https://github.com/phpstan/phpdoc-parser.git",
|
||||||
"reference": "b9e61a61e39e02dd90944e9115241c7f7e76bfd8"
|
"reference": "c00d78fb6b29658347f9d37ebe104bffadf36299"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/b9e61a61e39e02dd90944e9115241c7f7e76bfd8",
|
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/c00d78fb6b29658347f9d37ebe104bffadf36299",
|
||||||
"reference": "b9e61a61e39e02dd90944e9115241c7f7e76bfd8",
|
"reference": "c00d78fb6b29658347f9d37ebe104bffadf36299",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -3794,9 +3783,9 @@
|
|||||||
"description": "PHPDoc parser with support for nullable, intersection and generic types",
|
"description": "PHPDoc parser with support for nullable, intersection and generic types",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
|
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
|
||||||
"source": "https://github.com/phpstan/phpdoc-parser/tree/2.2.0"
|
"source": "https://github.com/phpstan/phpdoc-parser/tree/2.0.0"
|
||||||
},
|
},
|
||||||
"time": "2025-07-13T07:04:09+00:00"
|
"time": "2024-10-13T11:29:49+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/dbunit",
|
"name": "phpunit/dbunit",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user