From f549104a79a6d80a399cf426dae910f337a62027 Mon Sep 17 00:00:00 2001 From: ghisch <168481965+ghisch@users.noreply.github.com> Date: Mon, 2 Dec 2024 02:25:34 +0100 Subject: [PATCH 01/20] Switch to @vladmandic/human Signed-off-by: ghisch <168481965+ghisch@users.noreply.github.com> Signed-off-by: QuentinLemCode --- src/classifier_faces.js | 67 ++++++++++++++++++++++++++++------------- 1 file changed, 46 insertions(+), 21 deletions(-) diff --git a/src/classifier_faces.js b/src/classifier_faces.js index c573ec5a4..c09061d3a 100644 --- a/src/classifier_faces.js +++ b/src/classifier_faces.js @@ -1,36 +1,60 @@ const path = require('path') const fs = require('fs/promises') -let tf, faceapi, Jimp +let tf, Human, Jimp, wasm let PUREJS = false if (process.env.RECOGNIZE_PUREJS === 'true') { tf = require('@tensorflow/tfjs') - require('@tensorflow/tfjs-backend-wasm') - faceapi = require('@vladmandic/face-api/dist/face-api.node-wasm.js') + wasm = require('@tensorflow/tfjs-backend-wasm') + Human = require('@vladmandic/human/dist/human.node-wasm.js') Jimp = require('jimp') PUREJS = true } else { try { if (process.env.RECOGNIZE_GPU === 'true') { tf = require('@tensorflow/tfjs-node-gpu') - faceapi = require('@vladmandic/face-api/dist/face-api.node-gpu.js') + Human = require('@vladmandic/human/dist/human.node-gpu.js') } else { tf = require('@tensorflow/tfjs-node') - faceapi = require('@vladmandic/face-api/dist/face-api.node.js') + Human = require('@vladmandic/human/dist/human.node.js') } } catch (e) { console.error(e) console.error('Trying js-only mode') tf = require('@tensorflow/tfjs') - require('@tensorflow/tfjs-backend-wasm') - faceapi = require('@vladmandic/face-api/dist/face-api.node-wasm.js') + wasm = require('@tensorflow/tfjs-backend-wasm') + Human = require('@vladmandic/human/dist/human.node-wasm.js') Jimp = require('jimp') PUREJS = true } } - if (process.argv.length < 3) throw new Error('Incorrect arguments: node classifier_faces.js ... | node classify.js -') +const config = { + cacheSensitivity: 0.01, + //modelBasePath: 'file://node_modules/@vladmandic/human/models/', + modelBasePath: 'https://vladmandic.github.io/human-models/models/', + backend: PUREJS ? 'wasm' : 'tensorflow', + //wasmPath: 'file://node_modules/@tensorflow/tfjs-backend-wasm/dist/', + wasmPath: `https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@${tf.version_core}/dist/`, + debug: false, + async: false, + softwareKernels: true, + face: { + enabled: true, + detector: { rotation: false, maxDetected: 100 }, + iris: { enabled: true }, + description: { enabled: true }, + antispoof: { enabled: true }, + liveness: { enabled: true }, + }, + hand: { enabled: false }, + body: { enabled: false }, + object: { enabled: false }, + segmentation: { enabled: false }, + filter: { enabled: false }, +} + /** * */ @@ -43,9 +67,8 @@ async function main() { paths = process.argv.slice(2) } - await faceapi.nets.ssdMobilenetv1.loadFromDisk(path.resolve(__dirname, '..', 'node_modules/@vladmandic/face-api/model')) - await faceapi.nets.faceLandmark68Net.loadFromDisk(path.resolve(__dirname, '..', 'node_modules/@vladmandic/face-api/model')) - await faceapi.nets.faceRecognitionNet.loadFromDisk(path.resolve(__dirname, '..', 'node_modules/@vladmandic/face-api/model')) + Human.env.updateBackend(); + const human = new Human.Human(config) for (const path of paths) { try { @@ -55,19 +78,18 @@ async function main() { } else { tensor = await tf.node.decodeImage(await fs.readFile(path), 3) } - const results = await faceapi.detectAllFaces(tensor).withFaceLandmarks().withFaceDescriptors() + const results = await human.detect(tensor) tensor.dispose() - const vectors = results + const vectors = results.face .map(result => ({ - angle: result.angle, - vector: result.descriptor, - x: result.detection.relativeBox.x, - y: result.detection.relativeBox.y, - height: result.detection.relativeBox.height, - width: result.detection.relativeBox.width, - score: result.detection.score, + angle: result.rotation.angle, + vector: result.embedding, + x: result.boxRaw[0], + y: result.boxRaw[1], + height: result.boxRaw[3], + width: result.boxRaw[2], + score: result.score, })) - console.log(JSON.stringify(vectors)) } catch (e) { console.error(e) @@ -76,6 +98,9 @@ async function main() { } } +if (PUREJS) { + wasm.setWasmPaths(config.wasmPath, true); +} tf.setBackend(PUREJS ? 'wasm' : 'tensorflow') .then(() => main()) .catch(e => { From 32e0327b38bb7a854d4a75ff8b1e42c205bd081b Mon Sep 17 00:00:00 2001 From: ghisch <168481965+ghisch@users.noreply.github.com> Date: Mon, 2 Dec 2024 02:31:16 +0100 Subject: [PATCH 02/20] Update Dimensions Adapt dimensions to 1024 as outputed by @vladmandic/human Signed-off-by: ghisch <168481965+ghisch@users.noreply.github.com> Signed-off-by: QuentinLemCode --- lib/Service/FaceClusterAnalyzer.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/Service/FaceClusterAnalyzer.php b/lib/Service/FaceClusterAnalyzer.php index ee08cd84e..919121f93 100644 --- a/lib/Service/FaceClusterAnalyzer.php +++ b/lib/Service/FaceClusterAnalyzer.php @@ -19,7 +19,7 @@ class FaceClusterAnalyzer { public const MIN_DETECTION_SIZE = 0.03; public const MIN_CLUSTER_SEPARATION = 0.35; public const MAX_CLUSTER_EDGE_LENGTH = 0.5; - public const DIMENSIONS = 128; + public const DIMENSIONS = 1024; public const MAX_OVERLAP_NEW_CLUSTER = 0.1; public const MIN_OVERLAP_EXISTING_CLUSTER = 0.5; @@ -186,7 +186,7 @@ public function calculateClusters(string $userId, int $batchSize = 0): void { * @return list */ public static function calculateCentroidOfDetections(array $detections): array { - // init 128 dimensional vector + // init 1024 dimensional vector /** @var list $sum */ $sum = []; for ($i = 0; $i < self::DIMENSIONS; $i++) { From d64cf988375d612565a53566211116d1f29788ba Mon Sep 17 00:00:00 2001 From: ghisch <168481965+ghisch@users.noreply.github.com> Date: Mon, 2 Dec 2024 02:41:00 +0100 Subject: [PATCH 03/20] Add @vladmandic/human to package.json Signed-off-by: ghisch <168481965+ghisch@users.noreply.github.com> Signed-off-by: QuentinLemCode --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a618417ee..57eb931e7 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "@tensorflow/tfjs-backend-wasm": "4.x", "@tensorflow/tfjs-node": "4.x", "@tensorflow/tfjs-node-gpu": "4.x", - "@vladmandic/face-api": "^1.7.11", + "@vladmandic/human": "^3.3.4", "download": "^8.0.0", "execa": "^5.1.1", "exifer": "^1.0.0-beta.2", From f61c32a5d12cb94c600bbd177f37e06a7ecee4ba Mon Sep 17 00:00:00 2001 From: ghisch <168481965+ghisch@users.noreply.github.com> Date: Mon, 2 Dec 2024 02:42:08 +0100 Subject: [PATCH 04/20] Update package-lock.json Signed-off-by: ghisch <168481965+ghisch@users.noreply.github.com> Signed-off-by: QuentinLemCode --- package-lock.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 890977248..78b924230 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@tensorflow/tfjs-backend-wasm": "4.x", "@tensorflow/tfjs-node": "4.x", "@tensorflow/tfjs-node-gpu": "4.x", - "@vladmandic/face-api": "^1.7.11", + "@vladmandic/human": "^3.3.4", "download": "^8.0.0", "execa": "^5.1.1", "exifer": "^1.0.0-beta.2", @@ -4213,10 +4213,10 @@ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true }, - "node_modules/@vladmandic/face-api": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@vladmandic/face-api/-/face-api-1.7.11.tgz", - "integrity": "sha512-jEQRN5/HDrdIEcg6pembiRvU7hk0hhkZfGfN2gxBDG95BmFZEWT/85qUrZDBJMtH51nCtcw20SI+4EGYZfqvIg==", + "node_modules/@vladmandic/human": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vladmandic/human/-/human-3.3.4.tgz", + "integrity": "sha512-olq1HsFVj/cxMXYh6MDI3IWUibMmTtQ8dCGLuldVLcbGrgBZjWPpW6PMW6xQWw1ImwffrenN/U4Gi7LA4Sk3dA==", "engines": { "node": ">=14.0.0" } From c7a0e4e2653f178f79b3f16c17cb59f4bb2e8f6d Mon Sep 17 00:00:00 2001 From: QuentinLemCode Date: Thu, 23 Jan 2025 23:28:51 +0100 Subject: [PATCH 05/20] Fix ESLint Signed-off-by: QuentinLemCode --- src/classifier_faces.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/classifier_faces.js b/src/classifier_faces.js index c09061d3a..526fde672 100644 --- a/src/classifier_faces.js +++ b/src/classifier_faces.js @@ -1,4 +1,3 @@ -const path = require('path') const fs = require('fs/promises') let tf, Human, Jimp, wasm @@ -32,10 +31,10 @@ if (process.argv.length < 3) throw new Error('Incorrect arguments: node classifi const config = { cacheSensitivity: 0.01, - //modelBasePath: 'file://node_modules/@vladmandic/human/models/', + // modelBasePath: 'file://node_modules/@vladmandic/human/models/', modelBasePath: 'https://vladmandic.github.io/human-models/models/', backend: PUREJS ? 'wasm' : 'tensorflow', - //wasmPath: 'file://node_modules/@tensorflow/tfjs-backend-wasm/dist/', + // wasmPath: 'file://node_modules/@tensorflow/tfjs-backend-wasm/dist/', wasmPath: `https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@${tf.version_core}/dist/`, debug: false, async: false, @@ -67,7 +66,7 @@ async function main() { paths = process.argv.slice(2) } - Human.env.updateBackend(); + Human.env.updateBackend() const human = new Human.Human(config) for (const path of paths) { @@ -99,7 +98,7 @@ async function main() { } if (PUREJS) { - wasm.setWasmPaths(config.wasmPath, true); + wasm.setWasmPaths(config.wasmPath, true) } tf.setBackend(PUREJS ? 'wasm' : 'tensorflow') .then(() => main()) From 89c8c5829dfe65e9c7b329a46601fcd6c732c10d Mon Sep 17 00:00:00 2001 From: QuentinLemCode Date: Thu, 23 Jan 2025 23:46:08 +0100 Subject: [PATCH 06/20] composer lock file Signed-off-by: QuentinLemCode --- .gitignore | 2 + composer.lock | 2462 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 2464 insertions(+) create mode 100644 composer.lock diff --git a/.gitignore b/.gitignore index b5e7fa647..2922ebce0 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,5 @@ build /vendor-bin/*/vendor /lib/Vendor /lib/autoload +/js/ +/vendor-bin/ \ No newline at end of file diff --git a/composer.lock b/composer.lock new file mode 100644 index 000000000..2c5298be5 --- /dev/null +++ b/composer.lock @@ -0,0 +1,2462 @@ +{ + "_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": "86cf63b6f86bebb78731bbc60510ebb7", + "packages": [ + { + "name": "amphp/amp", + "version": "v2.6.4", + "source": { + "type": "git", + "url": "https://github.com/amphp/amp.git", + "reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/amp/zipball/ded3d9be08f526089eb7ee8d9f16a9768f9dec2d", + "reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "dev-master", + "amphp/phpunit-util": "^1", + "ext-json": "*", + "jetbrains/phpstorm-stubs": "^2019.3", + "phpunit/phpunit": "^7 | ^8 | ^9", + "react/promise": "^2", + "vimeo/psalm": "^3.12" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "files": [ + "lib/functions.php", + "lib/Internal/functions.php" + ], + "psr-4": { + "Amp\\": "lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Lowrey", + "email": "rdlowrey@php.net" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Bob Weinand", + "email": "bobwei9@hotmail.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "A non-blocking concurrency framework for PHP applications.", + "homepage": "https://amphp.org/amp", + "keywords": [ + "async", + "asynchronous", + "awaitable", + "concurrency", + "event", + "event-loop", + "future", + "non-blocking", + "promise" + ], + "support": { + "irc": "irc://irc.freenode.org/amphp", + "issues": "https://github.com/amphp/amp/issues", + "source": "https://github.com/amphp/amp/tree/v2.6.4" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-03-21T18:52:26+00:00" + }, + { + "name": "amphp/byte-stream", + "version": "v1.8.2", + "source": { + "type": "git", + "url": "https://github.com/amphp/byte-stream.git", + "reference": "4f0e968ba3798a423730f567b1b50d3441c16ddc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/byte-stream/zipball/4f0e968ba3798a423730f567b1b50d3441c16ddc", + "reference": "4f0e968ba3798a423730f567b1b50d3441c16ddc", + "shasum": "" + }, + "require": { + "amphp/amp": "^2", + "php": ">=7.1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "dev-master", + "amphp/phpunit-util": "^1.4", + "friendsofphp/php-cs-fixer": "^2.3", + "jetbrains/phpstorm-stubs": "^2019.3", + "phpunit/phpunit": "^6 || ^7 || ^8", + "psalm/phar": "^3.11.4" + }, + "type": "library", + "autoload": { + "files": [ + "lib/functions.php" + ], + "psr-4": { + "Amp\\ByteStream\\": "lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "A stream abstraction to make working with non-blocking I/O simple.", + "homepage": "https://amphp.org/byte-stream", + "keywords": [ + "amp", + "amphp", + "async", + "io", + "non-blocking", + "stream" + ], + "support": { + "issues": "https://github.com/amphp/byte-stream/issues", + "source": "https://github.com/amphp/byte-stream/tree/v1.8.2" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-04-13T18:00:56+00:00" + }, + { + "name": "amphp/parallel", + "version": "v1.4.3", + "source": { + "type": "git", + "url": "https://github.com/amphp/parallel.git", + "reference": "3aac213ba7858566fd83d38ccb85b91b2d652cb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/parallel/zipball/3aac213ba7858566fd83d38ccb85b91b2d652cb0", + "reference": "3aac213ba7858566fd83d38ccb85b91b2d652cb0", + "shasum": "" + }, + "require": { + "amphp/amp": "^2", + "amphp/byte-stream": "^1.6.1", + "amphp/parser": "^1", + "amphp/process": "^1", + "amphp/serialization": "^1", + "amphp/sync": "^1.0.1", + "php": ">=7.1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "dev-master", + "amphp/phpunit-util": "^1.1", + "phpunit/phpunit": "^8 || ^7" + }, + "type": "library", + "autoload": { + "files": [ + "lib/Context/functions.php", + "lib/Sync/functions.php", + "lib/Worker/functions.php" + ], + "psr-4": { + "Amp\\Parallel\\": "lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Stephen Coakley", + "email": "me@stephencoakley.com" + } + ], + "description": "Parallel processing component for Amp.", + "homepage": "https://github.com/amphp/parallel", + "keywords": [ + "async", + "asynchronous", + "concurrent", + "multi-processing", + "multi-threading" + ], + "support": { + "issues": "https://github.com/amphp/parallel/issues", + "source": "https://github.com/amphp/parallel/tree/v1.4.3" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2023-03-23T08:04:23+00:00" + }, + { + "name": "amphp/parser", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/amphp/parser.git", + "reference": "3cf1f8b32a0171d4b1bed93d25617637a77cded7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/parser/zipball/3cf1f8b32a0171d4b1bed93d25617637a77cded7", + "reference": "3cf1f8b32a0171d4b1bed93d25617637a77cded7", + "shasum": "" + }, + "require": { + "php": ">=7.4" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Amp\\Parser\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "A generator parser to make streaming parsers simple.", + "homepage": "https://github.com/amphp/parser", + "keywords": [ + "async", + "non-blocking", + "parser", + "stream" + ], + "support": { + "issues": "https://github.com/amphp/parser/issues", + "source": "https://github.com/amphp/parser/tree/v1.1.1" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-03-21T19:16:53+00:00" + }, + { + "name": "amphp/process", + "version": "v1.1.9", + "source": { + "type": "git", + "url": "https://github.com/amphp/process.git", + "reference": "55b837d4f1857b9bd7efb7bb859ae6b0e804f13f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/process/zipball/55b837d4f1857b9bd7efb7bb859ae6b0e804f13f", + "reference": "55b837d4f1857b9bd7efb7bb859ae6b0e804f13f", + "shasum": "" + }, + "require": { + "amphp/amp": "^2", + "amphp/byte-stream": "^1.4", + "php": ">=7.1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "dev-master", + "amphp/phpunit-util": "^1", + "phpunit/phpunit": "^6" + }, + "type": "library", + "autoload": { + "files": [ + "lib/functions.php" + ], + "psr-4": { + "Amp\\Process\\": "lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bob Weinand", + "email": "bobwei9@hotmail.com" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "Asynchronous process manager.", + "homepage": "https://github.com/amphp/process", + "support": { + "issues": "https://github.com/amphp/process/issues", + "source": "https://github.com/amphp/process/tree/v1.1.9" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-12-13T17:38:25+00:00" + }, + { + "name": "amphp/serialization", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/amphp/serialization.git", + "reference": "693e77b2fb0b266c3c7d622317f881de44ae94a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/serialization/zipball/693e77b2fb0b266c3c7d622317f881de44ae94a1", + "reference": "693e77b2fb0b266c3c7d622317f881de44ae94a1", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "dev-master", + "phpunit/phpunit": "^9 || ^8 || ^7" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Amp\\Serialization\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "Serialization tools for IPC and data storage in PHP.", + "homepage": "https://github.com/amphp/serialization", + "keywords": [ + "async", + "asynchronous", + "serialization", + "serialize" + ], + "support": { + "issues": "https://github.com/amphp/serialization/issues", + "source": "https://github.com/amphp/serialization/tree/master" + }, + "time": "2020-03-25T21:39:07+00:00" + }, + { + "name": "amphp/sync", + "version": "v1.4.2", + "source": { + "type": "git", + "url": "https://github.com/amphp/sync.git", + "reference": "85ab06764f4f36d63b1356b466df6111cf4b89cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/sync/zipball/85ab06764f4f36d63b1356b466df6111cf4b89cf", + "reference": "85ab06764f4f36d63b1356b466df6111cf4b89cf", + "shasum": "" + }, + "require": { + "amphp/amp": "^2.2", + "php": ">=7.1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "dev-master", + "amphp/phpunit-util": "^1.1", + "phpunit/phpunit": "^9 || ^8 || ^7" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php", + "src/ConcurrentIterator/functions.php" + ], + "psr-4": { + "Amp\\Sync\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Stephen Coakley", + "email": "me@stephencoakley.com" + } + ], + "description": "Mutex, Semaphore, and other synchronization tools for Amp.", + "homepage": "https://github.com/amphp/sync", + "keywords": [ + "async", + "asynchronous", + "mutex", + "semaphore", + "synchronization" + ], + "support": { + "issues": "https://github.com/amphp/sync/issues", + "source": "https://github.com/amphp/sync/tree/v1.4.2" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2021-10-25T18:29:10+00:00" + }, + { + "name": "andrewdalpino/okbloomer", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/andrewdalpino/OkBloomer.git", + "reference": "39321cb515c1e99128d28489b0187120ba7ce84c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/andrewdalpino/OkBloomer/zipball/39321cb515c1e99128d28489b0187120ba7ce84c", + "reference": "39321cb515c1e99128d28489b0187120ba7ce84c", + "shasum": "" + }, + "require": { + "php": ">=7.4" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.0", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "OkBloomer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrew DalPino", + "email": "support@andrewdalpino.com", + "homepage": "https://github.com/andrewdalpino", + "role": "Lead Developer" + } + ], + "description": "An autoscaling Bloom filter with ultra-low memory usage for PHP.", + "keywords": [ + "Bloom Filter", + "layered bloom filter", + "scalable bloom filter" + ], + "support": { + "docs": "https://github.com/andrewdalpino/OkBloomer/README.md", + "email": "support@andrewdalpino.com", + "issues": "https://github.com/andrewdalpino/OkBloomer/issues", + "source": "https://github.com/andrewdalpino/OkBloomer" + }, + "funding": [ + { + "url": "https://github.com/sponsors/andrewdalpino", + "type": "github" + } + ], + "time": "2022-01-24T03:41:23+00:00" + }, + { + "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" + }, + { + "name": "psr/log", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "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/3.0.2" + }, + "time": "2024-09-11T13:17:53+00:00" + }, + { + "name": "rubix/ml", + "version": "2.5.2", + "source": { + "type": "git", + "url": "https://github.com/RubixML/ML.git", + "reference": "59782a24bd09f0faa00e7df335fd58ca288d1eab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/RubixML/ML/zipball/59782a24bd09f0faa00e7df335fd58ca288d1eab", + "reference": "59782a24bd09f0faa00e7df335fd58ca288d1eab", + "shasum": "" + }, + "require": { + "amphp/parallel": "^1.3", + "andrewdalpino/okbloomer": "^1.0", + "ext-json": "*", + "php": ">=7.4", + "psr/log": "^1.1|^2.0|^3.0", + "rubix/tensor": "^3.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.17", + "symfony/polyfill-php82": "^1.27", + "symfony/polyfill-php83": "^1.27", + "wamania/php-stemmer": "^3.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.0", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.0" + }, + "suggest": { + "ext-gd": "For image support", + "ext-mbstring": "For fast multibyte string manipulation", + "ext-svm": "For Support Vector Machine engine (libsvm)", + "ext-tensor": "For fast Matrix/Vector computing" + }, + "type": "library", + "autoload": { + "files": [ + "src/constants.php", + "src/functions.php" + ], + "psr-4": { + "Rubix\\ML\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrew DalPino", + "homepage": "https://github.com/andrewdalpino" + }, + { + "name": "Contributors", + "homepage": "https://github.com/RubixML/ML/graphs/contributors" + } + ], + "description": "A high-level machine learning and deep learning library for the PHP language.", + "homepage": "https://rubixml.com", + "keywords": [ + "Algorithm", + "Deep learning", + "Linear regression", + "Neural network", + "Rubix", + "TF-IDF", + "adaboost", + "ai", + "analytics", + "anomaly detection", + "artificial intelligence", + "cart", + "classification", + "classifier", + "clustering", + "cross validation", + "data mining", + "data science", + "dataset", + "dbscan", + "dimensionality reduction", + "ensemble", + "estimator", + "etl", + "feature extraction", + "feature importance", + "feature selection", + "gaussian mixture", + "gbm", + "gmm", + "gradient boost", + "grid search", + "image recognition", + "imputation", + "inference", + "isolation forest", + "k-means", + "k-nearest neighbors", + "kmeans", + "knn", + "local outlier factor", + "loda", + "lof", + "logistic regression", + "machine learning", + "manifold learning", + "mean shift", + "ml", + "mlp", + "multilayer perceptron", + "naive bayes", + "natural language processing", + "nearest neighbors", + "nlp", + "outlier detection", + "php", + "php ai", + "php machine learning", + "php ml", + "prediction", + "predictive modeling", + "random forest", + "ranking", + "recommendation", + "regression", + "regressor", + "ridge", + "rubix ml", + "rubixml", + "softmax", + "supervised learning", + "support vector machine", + "svm", + "t-sne", + "text mining", + "tf idf", + "tsne", + "unsupervised learning" + ], + "support": { + "chat": "https://t.me/RubixML", + "docs": "https://docs.rubixml.com", + "issues": "https://github.com/RubixML/ML/issues", + "source": "https://github.com/RubixML/ML" + }, + "funding": [ + { + "url": "https://github.com/sponsors/andrewdalpino", + "type": "github" + } + ], + "time": "2024-11-09T23:02:27+00:00" + }, + { + "name": "rubix/tensor", + "version": "3.0.5", + "source": { + "type": "git", + "url": "https://github.com/RubixML/Tensor.git", + "reference": "9f0ee170319280dcf081984adccefa8b0e6f06b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/RubixML/Tensor/zipball/9f0ee170319280dcf081984adccefa8b0e6f06b8", + "reference": "9f0ee170319280dcf081984adccefa8b0e6f06b8", + "shasum": "" + }, + "require": { + "php": ">=7.4" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.0", + "phalcon/zephir": "^0.17", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "autoload": { + "files": [ + "src/constants.php" + ], + "psr-4": { + "Tensor\\": "src/", + "Zephir\\Optimizers\\FunctionCall\\": "optimizers/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrew DalPino", + "email": "support@andrewdalpino.com", + "homepage": "https://github.com/andrewdalpino", + "role": "Project Lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/RubixML/Tensor/graphs/contributors" + } + ], + "description": "A library and extension that provides objects for scientific computing in PHP.", + "homepage": "https://github.com/RubixML/Tensor", + "keywords": [ + "1d convolution", + "2d convolution", + "arithmetic", + "blas", + "computation", + "computing", + "convolution", + "decomposition", + "dot product", + "eigendecomposition", + "eigenvalue", + "eigenvector", + "engineering", + "extension", + "lapack", + "linear algebra", + "math", + "matmul", + "matrix", + "matrix multiplication", + "multithreaded", + "php", + "php extension", + "pseudoinverse", + "scientific computing", + "signal processing", + "singular value decomposition", + "statistics", + "svd", + "tensor", + "trigonometry", + "vector", + "vector norm" + ], + "support": { + "chat": "https://t.me/RubixML", + "email": "support@andrewdalpino.com", + "issues": "https://github.com/RubixML/Tensor/issues", + "source": "https://github.com/RubixML/Tensor" + }, + "funding": [ + { + "url": "https://github.com/andrewdalpino", + "type": "github" + } + ], + "time": "2024-03-15T19:43:50+00:00" + }, + { + "name": "symfony/polyfill-iconv", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "48becf00c920479ca2e910c22a5a39e5d47ca956" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/48becf00c920479ca2e910c22a5a39e5d47ca956", + "reference": "48becf00c920479ca2e910c22a5a39e5d47ca956", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-iconv": "*" + }, + "suggest": { + "ext-iconv": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Iconv extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "3833d7255cc303546435cb650316bff708a1c75c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "fa2ae56c44f03bed91a39bfc9822e31e7c5c38ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/fa2ae56c44f03bed91a39bfc9822e31e7c5c38ce", + "reference": "fa2ae56c44f03bed91a39bfc9822e31e7c5c38ce", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "metapackage", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-php82", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php82.git", + "reference": "5d2ed36f7734637dacc025f179698031951b1692" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php82/zipball/5d2ed36f7734637dacc025f179698031951b1692", + "reference": "5d2ed36f7734637dacc025f179698031951b1692", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php82\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php82/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-php83", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491", + "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", + "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "https://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/2.0.3" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2024-11-21T01:49:47+00:00" + }, + { + "name": "voku/portable-utf8", + "version": "6.0.13", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-utf8.git", + "reference": "b8ce36bf26593e5c2e81b1850ef0ffb299d2043f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-utf8/zipball/b8ce36bf26593e5c2e81b1850ef0ffb299d2043f", + "reference": "b8ce36bf26593e5c2e81b1850ef0ffb299d2043f", + "shasum": "" + }, + "require": { + "php": ">=7.0.0", + "symfony/polyfill-iconv": "~1.0", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php72": "~1.0", + "voku/portable-ascii": "~2.0.0" + }, + "require-dev": { + "phpstan/phpstan": "1.9.*@dev", + "phpstan/phpstan-strict-rules": "1.4.*@dev", + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0", + "thecodingmachine/phpstan-strict-rules": "1.0.*@dev", + "voku/phpstan-rules": "3.1.*@dev" + }, + "suggest": { + "ext-ctype": "Use Ctype for e.g. hexadecimal digit detection", + "ext-fileinfo": "Use Fileinfo for better binary file detection", + "ext-iconv": "Use iconv for best performance", + "ext-intl": "Use Intl for best performance", + "ext-json": "Use JSON for string detection", + "ext-mbstring": "Use Mbstring for best performance" + }, + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "(Apache-2.0 or GPL-2.0)" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Hamid Sarfraz", + "homepage": "http://pageconfig.com/" + }, + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable UTF-8 library - performance optimized (unicode) string functions for php.", + "homepage": "https://github.com/voku/portable-utf8", + "keywords": [ + "UTF", + "clean", + "php", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "issues": "https://github.com/voku/portable-utf8/issues", + "source": "https://github.com/voku/portable-utf8/tree/6.0.13" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-utf8", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-utf8", + "type": "tidelift" + } + ], + "time": "2023-03-08T08:35:38+00:00" + }, + { + "name": "wamania/php-stemmer", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/wamania/php-stemmer.git", + "reference": "8ea32b6fa27d6888587fe860b64a8763525c5a66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wamania/php-stemmer/zipball/8ea32b6fa27d6888587fe860b64a8763525c5a66", + "reference": "8ea32b6fa27d6888587fe860b64a8763525c5a66", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "voku/portable-utf8": "^5.4|^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Wamania\\Snowball\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Wamania", + "homepage": "http://wamania.com" + } + ], + "description": "Native PHP Stemmer", + "keywords": [ + "php", + "porter", + "stemmer" + ], + "support": { + "issues": "https://github.com/wamania/php-stemmer/issues", + "source": "https://github.com/wamania/php-stemmer/tree/v3.0.1" + }, + "time": "2023-05-11T10:50:27+00:00" + } + ], + "packages-dev": [ + { + "name": "nextcloud/ocp", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/nextcloud-deps/ocp.git", + "reference": "5fef60af2abc2ac68393358765623b4c5e4789d6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/5fef60af2abc2ac68393358765623b4c5e4789d6", + "reference": "5fef60af2abc2ac68393358765623b4c5e4789d6", + "shasum": "" + }, + "require": { + "php": "~8.1 || ~8.2 || ~8.3 || ~8.4", + "psr/clock": "^1.0", + "psr/container": "^2.0.2", + "psr/event-dispatcher": "^1.0", + "psr/log": "^3.0.2" + }, + "default-branch": true, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "32.0.0-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "AGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Christoph Wurst", + "email": "christoph@winzerhof-wurst.at" + }, + { + "name": "Joas Schilling", + "email": "coding@schilljs.com" + } + ], + "description": "Composer package containing Nextcloud's public OCP API and the unstable NCU API", + "support": { + "issues": "https://github.com/nextcloud-deps/ocp/issues", + "source": "https://github.com/nextcloud-deps/ocp/tree/master" + }, + "time": "2025-01-23T08:35:04+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": "symfony/console", + "version": "v6.4.17", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "799445db3f15768ecc382ac5699e6da0520a0a04" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/799445db3f15768ecc382ac5699e6da0520a0a04", + "reference": "799445db3f15768ecc382ac5699e6da0520a0a04", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0|^7.0" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v6.4.17" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-12-07T12:07:30+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:20:29+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/process", + "version": "v6.4.15", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "3cb242f059c14ae08591c5c4087d1fe443564392" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/3cb242f059c14ae08591c5c4087d1fe443564392", + "reference": "3cb242f059c14ae08591c5c4087d1fe443564392", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v6.4.15" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-11-06T14:19:14+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:20:29+00:00" + }, + { + "name": "symfony/string", + "version": "v6.4.15", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f", + "reference": "73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/intl": "^6.2|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v6.4.15" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-11-13T13:31:12+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": { + "nextcloud/ocp": 20 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=8.1", + "ext-json": "*", + "ext-pdo": "*" + }, + "platform-dev": {}, + "platform-overrides": { + "php": "8.1.0" + }, + "plugin-api-version": "2.6.0" +} From 04e92c35cc0e47b9ed4d88d77b0bd8da385cf0ba Mon Sep 17 00:00:00 2001 From: QuentinLemCode Date: Thu, 23 Jan 2025 23:47:02 +0100 Subject: [PATCH 07/20] Apply php-cs-fixer Signed-off-by: QuentinLemCode --- lib/BackgroundJobs/ClassifierJob.php | 1 + lib/BackgroundJobs/ClassifyFacesJob.php | 1 + lib/BackgroundJobs/ClassifyImagenetJob.php | 1 + lib/BackgroundJobs/ClassifyLandmarksJob.php | 1 + lib/BackgroundJobs/ClassifyMovinetJob.php | 1 + lib/BackgroundJobs/ClassifyMusicnnJob.php | 1 + lib/BackgroundJobs/ClusterFacesJob.php | 1 + lib/BackgroundJobs/MaintenanceJob.php | 1 + lib/BackgroundJobs/SchedulerJob.php | 1 + lib/BackgroundJobs/StorageCrawlJob.php | 1 + lib/Classifiers/Audio/MusicnnClassifier.php | 1 + lib/Classifiers/Classifier.php | 1 + lib/Classifiers/Images/ClusteringFaceClassifier.php | 1 + lib/Classifiers/Images/ImagenetClassifier.php | 1 + lib/Classifiers/Images/LandmarksClassifier.php | 1 + lib/Classifiers/Video/MovinetClassifier.php | 1 + lib/Clustering/DualTreeBall.php | 1 + lib/Clustering/DualTreeClique.php | 1 + lib/Clustering/HDBSCAN.php | 1 + lib/Clustering/MrdBallTree.php | 1 + lib/Clustering/MstClusterer.php | 1 + lib/Clustering/MstSolver.php | 1 + lib/Clustering/SquaredDistance.php | 1 + lib/Command/Classify.php | 1 + lib/Command/CleanupTags.php | 1 + lib/Command/ClearBackgroundJobs.php | 1 + lib/Command/ClusterFaces.php | 1 + lib/Command/DownloadModels.php | 1 + lib/Command/Recrawl.php | 1 + lib/Command/RemoveLegacyTags.php | 1 + lib/Command/ResetFaceClusters.php | 1 + lib/Command/ResetFaces.php | 1 + lib/Command/ResetTags.php | 1 + lib/Constants.php | 1 + lib/Dav/Faces/FacePhoto.php | 1 + lib/Dav/Faces/FaceRoot.php | 1 + lib/Dav/Faces/FacesHome.php | 1 + lib/Dav/Faces/PropFindPlugin.php | 1 + lib/Dav/Faces/UnassignedFacePhoto.php | 1 + lib/Dav/Faces/UnassignedFacesHome.php | 1 + lib/Dav/RecognizeHome.php | 1 + lib/Dav/RootCollection.php | 1 + lib/Db/FaceCluster.php | 1 + lib/Db/FaceClusterMapper.php | 1 + lib/Db/FaceDetection.php | 1 + lib/Db/FaceDetectionMapper.php | 1 + lib/Db/FaceDetectionWithTitle.php | 1 + lib/Db/QueueFile.php | 1 + lib/Db/QueueMapper.php | 1 + lib/Exception/Exception.php | 1 + lib/Helper/Archive.php | 1 + lib/Helper/TAR.php | 1 + lib/Hooks/FileListener.php | 1 + lib/Migration/Version002002000Date20220614094721.php | 1 + lib/Migration/Version002003000Date20220713094721.php | 1 + lib/Migration/Version003001000Date20221017094721.php | 1 + lib/Migration/Version003004000Date20230107094721.php | 1 + lib/Service/DownloadModelsService.php | 1 + lib/Service/FaceClusterAnalyzer.php | 1 + lib/Service/IgnoreService.php | 1 + lib/Service/Logger.php | 1 + lib/Service/QueueService.php | 1 + lib/Service/StorageService.php | 1 + lib/Service/TagManager.php | 1 + lib/Settings/AdminSection.php | 1 + lib/Settings/AdminSettings.php | 1 + 66 files changed, 66 insertions(+) diff --git a/lib/BackgroundJobs/ClassifierJob.php b/lib/BackgroundJobs/ClassifierJob.php index 144efbd99..d4d43a45e 100644 --- a/lib/BackgroundJobs/ClassifierJob.php +++ b/lib/BackgroundJobs/ClassifierJob.php @@ -1,4 +1,5 @@ Date: Fri, 24 Jan 2025 13:32:25 +0100 Subject: [PATCH 08/20] fix: run cs:fix Signed-off-by: Marcel Klehr Signed-off-by: QuentinLemCode --- lib/Service/Logger.php | 49 ++++--- vendor-bin/php-scoper/composer.lock | 190 ++++++++++++++-------------- 2 files changed, 119 insertions(+), 120 deletions(-) diff --git a/lib/Service/Logger.php b/lib/Service/Logger.php index fb6f0c0bf..94832c896 100644 --- a/lib/Service/Logger.php +++ b/lib/Service/Logger.php @@ -7,7 +7,6 @@ declare(strict_types=1); namespace OCA\Recognize\Service; -use \Stringable; use Psr\Log\LoggerInterface; use Symfony\Component\Console\Output\OutputInterface; @@ -32,69 +31,69 @@ public function setCliOutput(OutputInterface $out): Logger { /** * @inheritDoc */ - public function emergency(Stringable|string $message, array $context = array()): void { + public function emergency($message, array $context = array()): void { if (isset($this->cliOutput)) { - $this->cliOutput->writeln($message); + $this->cliOutput->writeln((string)$message); } - $this->logger->emergency($message, $context); + $this->logger->emergency((string)$message, $context); } /** * @inheritDoc */ - public function alert(Stringable|string $message, array $context = array()): void { + public function alert($message, array $context = array()): void { if (isset($this->cliOutput)) { - $this->cliOutput->writeln($message); + $this->cliOutput->writeln((string)$message); } - $this->logger->alert($message, $context); + $this->logger->alert((string)$message, $context); } /** * @inheritDoc */ - public function critical(Stringable|string $message, array $context = array()): void { + public function critical($message, array $context = array()): void { if (isset($this->cliOutput)) { - $this->cliOutput->writeln($message); + $this->cliOutput->writeln((string)$message); } - $this->logger->critical($message, $context); + $this->logger->critical((string)$message, $context); } /** * @inheritDoc */ - public function error(Stringable|string $message, array $context = array()): void { + public function error($message, array $context = array()): void { if (isset($this->cliOutput)) { - $this->cliOutput->writeln($message); + $this->cliOutput->writeln((string)$message); } - $this->logger->error($message, $context); + $this->logger->error((string)$message, $context); } /** * @inheritDoc */ - public function warning(Stringable|string $message, array $context = array()): void { + public function warning($message, array $context = array()): void { if (isset($this->cliOutput)) { - $this->cliOutput->writeln($message); + $this->cliOutput->writeln((string)$message); } - $this->logger->warning($message, $context); + $this->logger->warning((string)$message, $context); } /** * @inheritDoc */ - public function notice(Stringable|string $message, array $context = array()): void { + public function notice($message, array $context = array()): void { if (isset($this->cliOutput)) { - $this->cliOutput->writeln($message); + $this->cliOutput->writeln((string)$message); } - $this->logger->notice($message, $context); + $this->logger->notice((string)$message, $context); } /** * @inheritDoc */ - public function info(Stringable|string $message, array $context = array()): void { + public function info($message, array $context = array()): void { if (isset($this->cliOutput) && !$this->cliOutput->isQuiet()) { - $this->cliOutput->writeln($message); + $this->cliOutput->writeln((string)$message); } $this->logger->info($message, $context); } @@ -102,17 +101,17 @@ public function info(Stringable|string $message, array $context = array()): void /** * @inheritDoc */ - public function debug(Stringable|string $message, array $context = array()): void { + public function debug($message, array $context = array()): void { if (isset($this->cliOutput) && !$this->cliOutput->isQuiet()) { - $this->cliOutput->writeln($message); + $this->cliOutput->writeln((string)$message); } - $this->logger->debug($message, $context); + $this->logger->debug((string)$message, $context); } /** * @inheritDoc */ - public function log($level, Stringable|string $message, array $context = array()): void { + public function log($level, $message, array $context = array()): void { if (isset($this->cliOutput)) { $this->cliOutput->writeln($message); } diff --git a/vendor-bin/php-scoper/composer.lock b/vendor-bin/php-scoper/composer.lock index de81ac68e..40f188f78 100644 --- a/vendor-bin/php-scoper/composer.lock +++ b/vendor-bin/php-scoper/composer.lock @@ -161,16 +161,16 @@ }, { "name": "humbug/php-scoper", - "version": "0.18.15", + "version": "0.18.16", "source": { "type": "git", "url": "https://github.com/humbug/php-scoper.git", - "reference": "79b2b4e0fbc1d1ef6ae99c4e078137b42bd43d19" + "reference": "aff0ef968d8a07ea5be8a2fe797dbf4927e750af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/humbug/php-scoper/zipball/79b2b4e0fbc1d1ef6ae99c4e078137b42bd43d19", - "reference": "79b2b4e0fbc1d1ef6ae99c4e078137b42bd43d19", + "url": "https://api.github.com/repos/humbug/php-scoper/zipball/aff0ef968d8a07ea5be8a2fe797dbf4927e750af", + "reference": "aff0ef968d8a07ea5be8a2fe797dbf4927e750af", "shasum": "" }, "require": { @@ -191,7 +191,7 @@ "fidry/makefile": "^1.0", "humbug/box": "^4.6.2", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^10.0", + "phpunit/phpunit": "^10.0 || ^11.0", "symfony/yaml": "^6.4 || ^7.0" }, "bin": [ @@ -239,29 +239,29 @@ "description": "Prefixes all PHP namespaces in a file or directory.", "support": { "issues": "https://github.com/humbug/php-scoper/issues", - "source": "https://github.com/humbug/php-scoper/tree/0.18.15" + "source": "https://github.com/humbug/php-scoper/tree/0.18.16" }, - "time": "2024-09-02T13:35:10+00:00" + "time": "2025-01-12T15:48:25+00:00" }, { "name": "jetbrains/phpstorm-stubs", - "version": "v2024.2", + "version": "v2024.3", "source": { "type": "git", "url": "https://github.com/JetBrains/phpstorm-stubs.git", - "reference": "cf7e447ddfa7f0cbab0c1dd38392f0cb05f9881c" + "reference": "0e82bdfe850c71857ee4ee3501ed82a9fc5d043c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/JetBrains/phpstorm-stubs/zipball/cf7e447ddfa7f0cbab0c1dd38392f0cb05f9881c", - "reference": "cf7e447ddfa7f0cbab0c1dd38392f0cb05f9881c", + "url": "https://api.github.com/repos/JetBrains/phpstorm-stubs/zipball/0e82bdfe850c71857ee4ee3501ed82a9fc5d043c", + "reference": "0e82bdfe850c71857ee4ee3501ed82a9fc5d043c", "shasum": "" }, "require-dev": { - "friendsofphp/php-cs-fixer": "v3.46.0", - "nikic/php-parser": "v5.0.0", - "phpdocumentor/reflection-docblock": "5.3.0", - "phpunit/phpunit": "10.5.5" + "friendsofphp/php-cs-fixer": "v3.64.0", + "nikic/php-parser": "v5.3.1", + "phpdocumentor/reflection-docblock": "5.6.0", + "phpunit/phpunit": "11.4.3" }, "type": "library", "autoload": { @@ -286,22 +286,22 @@ "type" ], "support": { - "source": "https://github.com/JetBrains/phpstorm-stubs/tree/v2024.2" + "source": "https://github.com/JetBrains/phpstorm-stubs/tree/v2024.3" }, - "time": "2024-06-17T19:18:18+00:00" + "time": "2024-12-14T08:03:12+00:00" }, { "name": "nikic/php-parser", - "version": "v5.3.1", + "version": "v5.4.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b" + "reference": "447a020a1f875a434d62f2a401f53b82a396e494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8eea230464783aa9671db8eea6f8c6ac5285794b", - "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", + "reference": "447a020a1f875a434d62f2a401f53b82a396e494", "shasum": "" }, "require": { @@ -344,9 +344,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.3.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" }, - "time": "2024-10-08T18:51:32+00:00" + "time": "2024-12-30T11:07:19+00:00" }, { "name": "psr/container", @@ -503,16 +503,16 @@ }, { "name": "symfony/console", - "version": "v7.1.5", + "version": "v7.2.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "0fa539d12b3ccf068a722bbbffa07ca7079af9ee" + "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/0fa539d12b3ccf068a722bbbffa07ca7079af9ee", - "reference": "0fa539d12b3ccf068a722bbbffa07ca7079af9ee", + "url": "https://api.github.com/repos/symfony/console/zipball/fefcc18c0f5d0efe3ab3152f15857298868dc2c3", + "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3", "shasum": "" }, "require": { @@ -576,7 +576,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.1.5" + "source": "https://github.com/symfony/console/tree/v7.2.1" }, "funding": [ { @@ -592,20 +592,20 @@ "type": "tidelift" } ], - "time": "2024-09-20T08:28:38+00:00" + "time": "2024-12-11T03:49:26+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", "shasum": "" }, "require": { @@ -613,12 +613,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -643,7 +643,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" }, "funding": [ { @@ -659,20 +659,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f", + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f", "shasum": "" }, "require": { @@ -681,12 +681,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -719,7 +719,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1" }, "funding": [ { @@ -735,20 +735,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/filesystem", - "version": "v7.1.5", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "61fe0566189bf32e8cfee78335d8776f64a66f5a" + "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/61fe0566189bf32e8cfee78335d8776f64a66f5a", - "reference": "61fe0566189bf32e8cfee78335d8776f64a66f5a", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b8dce482de9d7c9fe2891155035a7248ab5c7fdb", + "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb", "shasum": "" }, "require": { @@ -785,7 +785,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.1.5" + "source": "https://github.com/symfony/filesystem/tree/v7.2.0" }, "funding": [ { @@ -801,20 +801,20 @@ "type": "tidelift" } ], - "time": "2024-09-17T09:16:35+00:00" + "time": "2024-10-25T15:15:23+00:00" }, { "name": "symfony/finder", - "version": "v7.1.4", + "version": "v7.2.2", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "d95bbf319f7d052082fb7af147e0f835a695e823" + "reference": "87a71856f2f56e4100373e92529eed3171695cfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/d95bbf319f7d052082fb7af147e0f835a695e823", - "reference": "d95bbf319f7d052082fb7af147e0f835a695e823", + "url": "https://api.github.com/repos/symfony/finder/zipball/87a71856f2f56e4100373e92529eed3171695cfb", + "reference": "87a71856f2f56e4100373e92529eed3171695cfb", "shasum": "" }, "require": { @@ -849,7 +849,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.1.4" + "source": "https://github.com/symfony/finder/tree/v7.2.2" }, "funding": [ { @@ -865,7 +865,7 @@ "type": "tidelift" } ], - "time": "2024-08-13T14:28:19+00:00" + "time": "2024-12-30T19:00:17+00:00" }, { "name": "symfony/polyfill-ctype", @@ -893,8 +893,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -969,8 +969,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -1047,8 +1047,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -1131,8 +1131,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -1187,16 +1187,16 @@ }, { "name": "symfony/service-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", "shasum": "" }, "require": { @@ -1209,12 +1209,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -1250,7 +1250,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" }, "funding": [ { @@ -1266,20 +1266,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/string", - "version": "v7.1.5", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "d66f9c343fa894ec2037cc928381df90a7ad4306" + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/d66f9c343fa894ec2037cc928381df90a7ad4306", - "reference": "d66f9c343fa894ec2037cc928381df90a7ad4306", + "url": "https://api.github.com/repos/symfony/string/zipball/446e0d146f991dde3e73f45f2c97a9faad773c82", + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82", "shasum": "" }, "require": { @@ -1337,7 +1337,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.1.5" + "source": "https://github.com/symfony/string/tree/v7.2.0" }, "funding": [ { @@ -1353,20 +1353,20 @@ "type": "tidelift" } ], - "time": "2024-09-20T08:28:38+00:00" + "time": "2024-11-13T13:31:26+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.1.5", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "e20e03889539fd4e4211e14d2179226c513c010d" + "reference": "c6a22929407dec8765d6e2b6ff85b800b245879c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/e20e03889539fd4e4211e14d2179226c513c010d", - "reference": "e20e03889539fd4e4211e14d2179226c513c010d", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c6a22929407dec8765d6e2b6ff85b800b245879c", + "reference": "c6a22929407dec8765d6e2b6ff85b800b245879c", "shasum": "" }, "require": { @@ -1382,7 +1382,7 @@ "symfony/http-kernel": "^6.4|^7.0", "symfony/process": "^6.4|^7.0", "symfony/uid": "^6.4|^7.0", - "twig/twig": "^3.0.4" + "twig/twig": "^3.12" }, "bin": [ "Resources/bin/var-dump-server" @@ -1420,7 +1420,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.1.5" + "source": "https://github.com/symfony/var-dumper/tree/v7.2.0" }, "funding": [ { @@ -1436,7 +1436,7 @@ "type": "tidelift" } ], - "time": "2024-09-16T10:07:02+00:00" + "time": "2024-11-08T15:48:14+00:00" }, { "name": "thecodingmachine/safe", @@ -1638,10 +1638,10 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": false, "prefer-lowest": false, - "platform": [], - "platform-dev": [], + "platform": {}, + "platform-dev": {}, "plugin-api-version": "2.6.0" } From 462501748fc7e968817170e1cbbf4a57b161f57b Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Fri, 24 Jan 2025 13:33:53 +0100 Subject: [PATCH 09/20] fix: Fix psalm errors Signed-off-by: Marcel Klehr Signed-off-by: QuentinLemCode --- lib/BackgroundJobs/ClusterFacesJob.php | 1 - lib/Db/FaceDetection.php | 2 +- lib/Service/Logger.php | 4 ++-- psalm-baseline.xml | 24 +++++++++++++++++++++++- 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/lib/BackgroundJobs/ClusterFacesJob.php b/lib/BackgroundJobs/ClusterFacesJob.php index 9f7162d0c..5f486b3bb 100644 --- a/lib/BackgroundJobs/ClusterFacesJob.php +++ b/lib/BackgroundJobs/ClusterFacesJob.php @@ -37,7 +37,6 @@ public function __construct(ITimeFactory $time, Logger $logger, IJobList $jobLis * @return void */ protected function run($argument) { - /** @var string $userId */ $userId = (string) $argument['userId']; try { $this->clusterAnalyzer->calculateClusters($userId, self::BATCH_SIZE); diff --git a/lib/Db/FaceDetection.php b/lib/Db/FaceDetection.php index 568efc74f..abbceda58 100644 --- a/lib/Db/FaceDetection.php +++ b/lib/Db/FaceDetection.php @@ -61,7 +61,7 @@ public function __construct() { $this->addType('height', 'float'); $this->addType('width', 'float'); $this->addType('vector', 'json'); - $this->addType('clusterId', 'int'); + $this->addType('clusterId', 'integer'); $this->addType('threshold', 'float'); } diff --git a/lib/Service/Logger.php b/lib/Service/Logger.php index 94832c896..d54465e73 100644 --- a/lib/Service/Logger.php +++ b/lib/Service/Logger.php @@ -113,8 +113,8 @@ public function debug($message, array $context = array()): void { */ public function log($level, $message, array $context = array()): void { if (isset($this->cliOutput)) { - $this->cliOutput->writeln($message); + $this->cliOutput->writeln((string)$message); } - $this->logger->log($level, $message, $context); + $this->logger->log($level, (string)$message, $context); } } diff --git a/psalm-baseline.xml b/psalm-baseline.xml index d66b43c4f..d2818a79f 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1,5 +1,5 @@ - + getContainer()]]> @@ -84,6 +84,9 @@ + + + @@ -767,6 +770,9 @@ + + + @@ -1050,6 +1056,22 @@ + + + + + + + + + + + + + + + + From 8eae22915c478fc9042a673f44f5cb8f556a944b Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Fri, 24 Jan 2025 14:38:55 +0100 Subject: [PATCH 10/20] fix(cluster-faces-test): Update IMDB-Face share link Signed-off-by: Marcel Klehr Signed-off-by: QuentinLemCode --- .github/workflows/cluster-faces-test.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cluster-faces-test.yml b/.github/workflows/cluster-faces-test.yml index 0885ef9c6..a8bebcf9d 100644 --- a/.github/workflows/cluster-faces-test.yml +++ b/.github/workflows/cluster-faces-test.yml @@ -140,21 +140,21 @@ jobs: id: photos-cache with: path: data/admin/files/ - key: https://cloud.marcelklehr.de/s/PkNYbmKnwMiQMFD/download/IMDb-Face.zip + key: https://cloud.nextcloud.com/s/4JqQdPy3dicQRPr/download/IMDb-Face.zip - name: Upload photos if: steps.photos-cache.outputs.cache-hit != 'true' run: | mkdir -p data/admin/files/ cd data/admin/files - wget https://cloud.marcelklehr.de/s/PkNYbmKnwMiQMFD/download/IMDb-Face.zip + wget https://cloud.nextcloud.com/s/4JqQdPy3dicQRPr/download/IMDb-Face.zip unzip IMDb-Face.zip rm IMDb-Face.zip - uses: actions/cache/save@v3 with: path: data/admin/files/ - key: https://cloud.marcelklehr.de/s/PkNYbmKnwMiQMFD/download/IMDb-Face.zip + key: https://cloud.nextcloud.com/s/4JqQdPy3dicQRPr/download/IMDb-Face.zip - name: Set config run: | @@ -259,7 +259,7 @@ jobs: - name: Download IMDb-Face.csv working-directory: apps/${{ env.APP_NAME }}/tests/res run: | - wget https://cloud.marcelklehr.de/s/ZKe7MY7gZRRxBPq/download/IMDb-Face-csv.zip + wget https://cloud.nextcloud.com/s/4JqQdPy3dicQRPr/download/IMDb-Face-csv.zip unzip IMDb-Face-csv.zip rm IMDb-Face-csv.zip From 7f182a33be7a09c967c36d1008030e4e3b0ad89a Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Thu, 9 Jan 2025 10:14:20 +0100 Subject: [PATCH 11/20] Update php-scoper Signed-off-by: Marcel Klehr # Conflicts: # vendor-bin/php-scoper/composer.lock Signed-off-by: QuentinLemCode --- vendor-bin/php-scoper/composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor-bin/php-scoper/composer.json b/vendor-bin/php-scoper/composer.json index 61735d40e..676dd4cff 100644 --- a/vendor-bin/php-scoper/composer.json +++ b/vendor-bin/php-scoper/composer.json @@ -1,5 +1,5 @@ { "require-dev": { - "humbug/php-scoper": "^0.18.7" + "humbug/php-scoper": "0.18.x" } } From 6f31da1b19c86daa8f56651bf3e45a65be5aed97 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Tue, 21 Jan 2025 09:31:52 +0100 Subject: [PATCH 12/20] fix: Patch php-scoper to support php 8.4 Signed-off-by: Marcel Klehr Signed-off-by: QuentinLemCode --- vendor-bin/php-scoper/composer.json | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/vendor-bin/php-scoper/composer.json b/vendor-bin/php-scoper/composer.json index 676dd4cff..84babd300 100644 --- a/vendor-bin/php-scoper/composer.json +++ b/vendor-bin/php-scoper/composer.json @@ -1,5 +1,23 @@ { - "require-dev": { - "humbug/php-scoper": "0.18.x" + "require": { + "humbug/php-scoper": "^0.18", + "cweagans/composer-patches": "^1.7" + }, + "config": { + "platform": { + "php": "8.1" + }, + "allow-plugins": { + "cweagans/composer-patches": true + } + }, + "extra": { + "patches": { + "thecodingmachine/safe": { + "PHP 8.4 compatibility, patch 1": "https://patch-diff.githubusercontent.com/raw/thecodingmachine/safe/pull/464.patch", + "PHP 8.4 compatibility, patch 2": "https://patch-diff.githubusercontent.com/raw/thecodingmachine/safe/pull/466.patch", + "PHP 8.4 compatibility, patch 3": "https://github.com/blizzz/safe/commit/6eeee2a20ffb2be3456ae8615b227c78e1ca8a20.patch" + } + } } -} +} \ No newline at end of file From 824c44fef511aa68726630c41e6917a500ae22d4 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Tue, 21 Jan 2025 13:28:57 +0100 Subject: [PATCH 13/20] fix: Fix psalm workflow Signed-off-by: Marcel Klehr Signed-off-by: QuentinLemCode --- .github/workflows/psalm-matrix.yml | 52 +++++++++--------------------- 1 file changed, 16 insertions(+), 36 deletions(-) diff --git a/.github/workflows/psalm-matrix.yml b/.github/workflows/psalm-matrix.yml index 840f8c3f9..01a9c035e 100644 --- a/.github/workflows/psalm-matrix.yml +++ b/.github/workflows/psalm-matrix.yml @@ -21,34 +21,27 @@ concurrency: 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@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - 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 }} + name: static-psalm-analysis steps: - name: Checkout - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + + - name: Get php version + id: versions + uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 - - name: Set up php${{ matrix.php-versions }} + - name: Check enforcement of minimum PHP version ${{ steps.versions.outputs.php-min }} in psalm.xml + run: grep 'phpVersion="${{ steps.versions.outputs.php-min }}' psalm.xml + + - name: Set up php${{ steps.versions.outputs.php-available }} uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 # v2.31.1 with: - php-version: ${{ matrix.php-versions }} + 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 @@ -60,21 +53,8 @@ jobs: composer remove nextcloud/ocp --dev composer i - - - name: Install dependencies - run: composer require --dev 'nextcloud/ocp:${{ matrix.ocp-version }}' --ignore-platform-reqs --with-dependencies + - name: Install nextcloud/ocp + run: composer require --dev nextcloud/ocp:dev-${{ steps.versions.outputs.branches-max }} --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 + run: composer run psalm -- --threads=1 --monochrome --no-progress --output-format=github \ No newline at end of file From 9f9f30996d30c8535b2268677c0bbae348e72dcd Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Tue, 21 Jan 2025 13:32:36 +0100 Subject: [PATCH 14/20] fix: Fix psalm workflow Signed-off-by: Marcel Klehr Signed-off-by: QuentinLemCode --- psalm.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/psalm.xml b/psalm.xml index da15746f8..a88c55e6e 100644 --- a/psalm.xml +++ b/psalm.xml @@ -6,6 +6,7 @@ xmlns="https://getpsalm.org/schema/config" xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd" errorBaseline="psalm-baseline.xml" + phpVersion="8.1" > From 68b9bda796bbe824f08e90b63a85daab8c4818e6 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Thu, 23 Jan 2025 11:22:55 +0100 Subject: [PATCH 15/20] feat(deps): Add Nextcloud 32 support Signed-off-by: Joas Schilling Signed-off-by: QuentinLemCode --- appinfo/info.xml | 4 ++-- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/appinfo/info.xml b/appinfo/info.xml index 71624f2c2..ae59c62e9 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -76,7 +76,7 @@ Requirements: The app does not send any sensitive data to cloud providers or similar services. All processing is done on your Nextcloud machine, using Tensorflow.js running in Node.js. ]]> - 9.0.0-dev.0 + 10.0.0-dev.0 agpl Marcel Klehr @@ -92,7 +92,7 @@ The app does not send any sensitive data to cloud providers or similar services. https://raw.githubusercontent.com/nextcloud/recognize/main/screenshots/Logo.png https://raw.githubusercontent.com/nextcloud/recognize/main/screenshots/imagenet_examples.jpg - + OCA\Recognize\BackgroundJobs\MaintenanceJob diff --git a/package-lock.json b/package-lock.json index 78b924230..2033f55b7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "recognize", - "version": "9.0.0-dev.0", + "version": "10.0.0-dev.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "recognize", - "version": "9.0.0-dev.0", + "version": "10.0.0-dev.0", "license": "MIT", "dependencies": { "@exifer/gps": "^1.0.0-beta.2", diff --git a/package.json b/package.json index 57eb931e7..5bee1bef1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "recognize", - "version": "9.0.0-dev.0", + "version": "10.0.0-dev.0", "description": "Image recognition in nextcloud", "main": "src/classifier_imagenet.js", "directories": { From 5e48935f0d071fcc7e9992fee4dd4b6230d1f267 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Sat, 1 Feb 2025 01:36:37 +0000 Subject: [PATCH 16/20] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot Signed-off-by: QuentinLemCode --- l10n/de.js | 4 ++-- l10n/de.json | 4 ++-- l10n/de_DE.js | 4 ++-- l10n/de_DE.json | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/l10n/de.js b/l10n/de.js index a540c8a05..56e5dd5f4 100644 --- a/l10n/de.js +++ b/l10n/de.js @@ -3,7 +3,7 @@ OC.L10N.register( { "Recognize" : "Recognize", "Smart media tagging and face recognition with on-premises machine learning models" : "Intelligente Medienverschlagwortung und Gesichtserkennung mit vor Ort installierten Modellen für maschinelles Lernen", - "Smart media tagging and face recognition with on-premises machine learning models.\nThis app goes through your media collection and adds fitting tags, automatically categorizing your photos and music.\n\n* 📷 👪 Recognizes faces from contact photos\n* 📷 🏔 Recognizes animals, landscapes, food, vehicles, buildings and other objects\n* 📷 🗼 Recognizes landmarks and monuments\n* 👂 🎵 Recognizes music genres\n* 🎥 🤸 Recognizes human actions on video\n\n⚡ Tagging works via Nextcloud's Collaborative Tags\n * 👂 listen to your tagged music with the audioplayer app\n * 📷 view your tagged photos and videos with the photos app\n\nModel sizes:\n\n * Object recognition: 1GB\n * Landmark recognition: 300MB\n * Video action recognition: 50MB\n * Music genre recognition: 50MB\n\n## Ethical AI Rating\n### Rating for Photo object detection: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Photo face recognition: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Video action recognition: 🟢\n\nPositive:\n* the software for training and inferencing of this model is open source\n* the trained model is freely available, and thus can be ran on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n## Ethical AI Rating\n### Rating Music genre recognition: 🟡\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n\nNegative:\n* the training data is not freely available, limiting the ability of external parties to check and correct for bias or optimise the model’s performance and CO2 usage.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nAfter installation, you can enable tagging in the admin settings.\n\nRequirements:\n- php 7.4 and above\n- App \"collaborative tags\" enabled\n- For native speed:\n - Processor: x86 64-bit (with support for AVX instructions)\n - System with glibc (usually the norm on Linux; FreeBSD, Alpine linux and thus also the official Nextcloud Docker container and Nextcloud AIO are *not* such systems)\n- For sub-native speed (using WASM mode)\n - Processor: x86 64-bit, arm64, armv7l (no AVX needed)\n - System with glibc or musl (incl. Alpine linux and thus also the official Nextcloud Docker container and also Nextcloud AIO)\n- ~4GB of free RAM (if you're cutting it close, make sure you have some swap available)\n- This app is currently incompatible with the *Suspicious Login* app due to a dependency conflict (ie. you can only have one of the two installed)\n\nThe app does not send any sensitive data to cloud providers or similar services. All processing is done on your Nextcloud machine, using Tensorflow.js running in Node.js." : "Intelligente Medienverschlagwortung und Gesichtserkennung mit lokalen maschinellen Lernmodellen.\nDiese App durchsucht deine Mediensammlung und fügt passende Schlagworte hinzu, um deine Fotos und Musik automatisch zu kategorisieren.\n\n* 📷 👪 Erkennt Gesichter anhand von Kontaktfotos\n* 📷 🏔 Erkennt Tiere, Landschaften, Lebensmittel, Fahrzeuge, Gebäude und andere Objekte\n* 📷 🗼 Erkennt Wahrzeichen und Denkmäler\n* 👂 🎵 Erkennt Musikgenres\n* 🎥 🤸 Erkennt menschliche Handlungen im Video\n\n⚡ Verschlagwortung funktioniert über die kollaborativen Schlagworte von Nextcloud\n* 👂 Höre deine verschlagwortete Musik mit der Audioplayer-App.\n* 📷 Betrachte deineverschlagworteten Fotos und Videos mit der Fotos-App\n\nModellgrößen:\n\n* Objekterkennung: 1GB\n* Landmark-Erkennung: 300MB\n* Video-Aktionserkennung: 50MB\n* Musikgenre-Erkennung: 50MB\n\n## Ethische KI-Bewertung\n### Bewertung für Fotoobjekterkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Foto-Gesichtserkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Video-Aktionserkennung: 🟢\n\nPositiv:\n* Die Software zum Trainieren und Inferenzieren dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n## Ethische KI-Bewertung\n### Bewertung Erkennung des Musikgenres: 🟡\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n\nNegativ:\n* Die Trainingsdaten sind nicht frei verfügbar, was die Möglichkeiten externer Parteien einschränkt, die Leistung des Modells und den CO2-Verbrauch zu überprüfen und auf Verzerrungen zu korrigieren oder sie zu optimieren.\n\nErfahre mehr über das Nextcloud Ethical AI Rating [in unserem Blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nNach der Installation kannst du das Tagging in den Admin-Einstellungen aktivieren.\n\nAnforderungen:\n- PHP 7.4 und höher\n- App „Kollaborative Tags“ aktiviert\n- Für native Geschwindigkeit:\n- Prozessor: x86 64-Bit (mit Unterstützung für AVX-Anweisungen)\n- System mit glibc (normalerweise die Norm unter Linux; FreeBSD, Alpine Linux und damit auch der offizielle Nextcloud Docker-Container und Nextcloud AIO sind *keine* solchen Systeme)\n- Für subnative Geschwindigkeit (im WASM-Modus)\n- Prozessor: x86 64-bit, arm64, armv7l (kein AVX erforderlich)\n- System mit glibc oder musl (inkl. Alpine Linux und damit auch der offizielle Nextcloud Docker Container und auch Nextcloud AIO)\n- ~4 GB freier RAM (wenn weniger verfügbar ist, stelle sicher, dass du etwas Swap zur Verfügung hast)\n- Diese App ist derzeit aufgrund eines Abhängigkeitskonflikts nicht mit der App *Suspicious Login* kompatibel (d. h. du kannst nur eine der beiden installiert haben).\n\nDie App sendet keine sensiblen Daten an Cloud-Anbieter oder ähnliche Dienste. Die gesamte Verarbeitung erfolgt auf deinem Nextcloud-Computer mithilfe von Tensorflow.js, das in Node.js ausgeführt wird.", + "Smart media tagging and face recognition with on-premises machine learning models.\nThis app goes through your media collection and adds fitting tags, automatically categorizing your photos and music.\n\n* 📷 👪 Recognizes faces from contact photos\n* 📷 🏔 Recognizes animals, landscapes, food, vehicles, buildings and other objects\n* 📷 🗼 Recognizes landmarks and monuments\n* 👂 🎵 Recognizes music genres\n* 🎥 🤸 Recognizes human actions on video\n\n⚡ Tagging works via Nextcloud's Collaborative Tags\n * 👂 listen to your tagged music with the audioplayer app\n * 📷 view your tagged photos and videos with the photos app\n\nModel sizes:\n\n * Object recognition: 1GB\n * Landmark recognition: 300MB\n * Video action recognition: 50MB\n * Music genre recognition: 50MB\n\n## Ethical AI Rating\n### Rating for Photo object detection: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Photo face recognition: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Video action recognition: 🟢\n\nPositive:\n* the software for training and inferencing of this model is open source\n* the trained model is freely available, and thus can be ran on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n## Ethical AI Rating\n### Rating Music genre recognition: 🟡\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n\nNegative:\n* the training data is not freely available, limiting the ability of external parties to check and correct for bias or optimise the model’s performance and CO2 usage.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nAfter installation, you can enable tagging in the admin settings.\n\nRequirements:\n- php 7.4 and above\n- App \"collaborative tags\" enabled\n- For native speed:\n - Processor: x86 64-bit (with support for AVX instructions)\n - System with glibc (usually the norm on Linux; FreeBSD, Alpine linux and thus also the official Nextcloud Docker container and Nextcloud AIO are *not* such systems)\n- For sub-native speed (using WASM mode)\n - Processor: x86 64-bit, arm64, armv7l (no AVX needed)\n - System with glibc or musl (incl. Alpine linux and thus also the official Nextcloud Docker container and also Nextcloud AIO)\n- ~4GB of free RAM (if you're cutting it close, make sure you have some swap available)\n- This app is currently incompatible with the *Suspicious Login* app due to a dependency conflict (ie. you can only have one of the two installed)\n\nThe app does not send any sensitive data to cloud providers or similar services. All processing is done on your Nextcloud machine, using Tensorflow.js running in Node.js." : "Intelligente Medienverschlagwortung und Gesichtserkennung mit lokalen maschinellen Lernmodellen.\nDiese App durchsucht deine Mediensammlung und fügt passende Schlagworte hinzu, um deine Fotos und Musik automatisch zu kategorisieren.\n\n* 📷 👪 Erkennt Gesichter anhand von Kontaktfotos\n* 📷 🏔 Erkennt Tiere, Landschaften, Lebensmittel, Fahrzeuge, Gebäude und andere Objekte\n* 📷 🗼 Erkennt Wahrzeichen und Denkmäler\n* 👂 🎵 Erkennt Musikgenres\n* 🎥 🤸 Erkennt menschliche Handlungen im Video\n\n⚡ Verschlagwortung funktioniert über die kollaborativen Schlagworte von Nextcloud\n* 👂 Höre deine verschlagwortete Musik mit der Audioplayer-App.\n* 📷 Betrachte deineverschlagworteten Fotos und Videos mit der Fotos-App\n\nModellgrößen:\n\n* Objekterkennung: 1GB\n* Landmark-Erkennung: 300MB\n* Video-Aktionserkennung: 50MB\n* Musikgenre-Erkennung: 50MB\n\n## Ethische KI-Bewertung\n### Bewertung für Fotoobjekterkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Foto-Gesichtserkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Video-Aktionserkennung: 🟢\n\nPositiv:\n* Die Software zum Trainieren und Inferenzieren dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n## Ethische KI-Bewertung\n### Bewertung Erkennung des Musikgenres: 🟡\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n\nNegativ:\n* Die Trainingsdaten sind nicht frei verfügbar, was die Möglichkeiten externer Parteien einschränkt, die Leistung des Modells und den CO2-Verbrauch zu überprüfen und auf Verzerrungen zu korrigieren oder sie zu optimieren.\n\nErfahre mehr über das Nextcloud Ethical AI Rating [in unserem Blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nNach der Installation kannst du das Tagging in den Admin-Einstellungen aktivieren.\n\nAnforderungen:\n- PHP 7.4 und höher\n- App \"Kollaborative Tags\" aktiviert\n- Für native Geschwindigkeit:\n- Prozessor: x86 64-Bit (mit Unterstützung für AVX-Anweisungen)\n- System mit glibc (normalerweise die Norm unter Linux; FreeBSD, Alpine Linux und damit auch der offizielle Nextcloud Docker-Container und Nextcloud AIO sind *keine* solchen Systeme)\n- Für subnative Geschwindigkeit (im WASM-Modus)\n- Prozessor: x86 64-bit, arm64, armv7l (kein AVX erforderlich)\n- System mit glibc oder musl (inkl. Alpine Linux und damit auch der offizielle Nextcloud Docker Container und auch Nextcloud AIO)\n- ~4 GB freier RAM (wenn weniger verfügbar ist, stelle sicher, dass du etwas Swap zur Verfügung hast)\n- Diese App ist derzeit aufgrund eines Abhängigkeitskonflikts nicht mit der App *Suspicious Login* kompatibel (d. h. du kannst nur eine der beiden installiert haben).\n\nDie App sendet keine sensiblen Daten an Cloud-Anbieter oder ähnliche Dienste. Die gesamte Verarbeitung erfolgt auf deinem Nextcloud-Computer mithilfe von Tensorflow.js, das in Node.js ausgeführt wird.", "Status" : "Status", "The machine learning models have been downloaded successfully." : "Die Modelle für maschinelles Lernen wurden erfolgreich heruntergeladen.", "The machine learning models still need to be downloaded." : "Die Modelle für maschinelles Lernen müssen noch heruntergeladen werden.", @@ -90,7 +90,7 @@ OC.L10N.register( "Could not load Tensorflow WASM in Node.js. Something is wrong with your setup." : "Tensorflow WASM konnte nicht in Node.js geladen werden. Irgendetwas stimmt mit deinem Setup nicht.", "Tensorflow WASM was loaded successfully into Node.js." : "Tensorflow WASM wurde erfolgreich in Node.js geladen.", "If the shipped Node.js binary doesn't work on your system for some reason you can set the path to a custom node.js binary. Currently supported is Node v20.9 and newer v20 releases." : "Wenn die mitgelieferte Node.js-Binärdatei auf deinem System aus irgendeinem Grund nicht funktioniert, kannst du den Pfad zu einer benutzerdefinierten Node.js-Binärdatei festlegen. Derzeit werden Node v20.9 und neuere v20-Versionen unterstützt.", - "For Nextcloud Snap users, you need to adjust this path to point to the snap's \"current\" directory as the pre-configured path will change with each update. For example, set it to \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" instead of \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\"" : "Für Nextcloud Snap-Benutzer musst du diesen Pfad so anpassen, dass er auf das „aktuelle“ Verzeichnis des Snaps verweist, da sich der vorkonfigurierte Pfad mit jedem Update ändert. Stelle es beispielsweise auf „/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node“ anstelle von „/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node“ ein.", + "For Nextcloud Snap users, you need to adjust this path to point to the snap's \"current\" directory as the pre-configured path will change with each update. For example, set it to \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" instead of \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\"" : "Für Nextcloud Snap-Benutzer musst du diesen Pfad so anpassen, dass er auf das \"aktuelle\" Verzeichnis des Snaps verweist, da sich der vorkonfigurierte Pfad mit jedem Update ändert. Stelle es beispielsweise auf \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" anstelle von \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\" ein.", "Classifier process priority" : "Priorität des Klassifikationsprozesses", "Checking Nice binary" : "Überprüfung der Nice-Binärdatei", "Could not find the Nice binary. You may need to set the path to a working binary manually." : "Die Node.js-Bibliothek konnte nicht gefunden werden. Möglicherweise musst du den Pfad zu einer funktionierenden Bibliothek manuell festlegen.", diff --git a/l10n/de.json b/l10n/de.json index 69e8cc422..a5689c3bc 100644 --- a/l10n/de.json +++ b/l10n/de.json @@ -1,7 +1,7 @@ { "translations": { "Recognize" : "Recognize", "Smart media tagging and face recognition with on-premises machine learning models" : "Intelligente Medienverschlagwortung und Gesichtserkennung mit vor Ort installierten Modellen für maschinelles Lernen", - "Smart media tagging and face recognition with on-premises machine learning models.\nThis app goes through your media collection and adds fitting tags, automatically categorizing your photos and music.\n\n* 📷 👪 Recognizes faces from contact photos\n* 📷 🏔 Recognizes animals, landscapes, food, vehicles, buildings and other objects\n* 📷 🗼 Recognizes landmarks and monuments\n* 👂 🎵 Recognizes music genres\n* 🎥 🤸 Recognizes human actions on video\n\n⚡ Tagging works via Nextcloud's Collaborative Tags\n * 👂 listen to your tagged music with the audioplayer app\n * 📷 view your tagged photos and videos with the photos app\n\nModel sizes:\n\n * Object recognition: 1GB\n * Landmark recognition: 300MB\n * Video action recognition: 50MB\n * Music genre recognition: 50MB\n\n## Ethical AI Rating\n### Rating for Photo object detection: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Photo face recognition: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Video action recognition: 🟢\n\nPositive:\n* the software for training and inferencing of this model is open source\n* the trained model is freely available, and thus can be ran on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n## Ethical AI Rating\n### Rating Music genre recognition: 🟡\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n\nNegative:\n* the training data is not freely available, limiting the ability of external parties to check and correct for bias or optimise the model’s performance and CO2 usage.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nAfter installation, you can enable tagging in the admin settings.\n\nRequirements:\n- php 7.4 and above\n- App \"collaborative tags\" enabled\n- For native speed:\n - Processor: x86 64-bit (with support for AVX instructions)\n - System with glibc (usually the norm on Linux; FreeBSD, Alpine linux and thus also the official Nextcloud Docker container and Nextcloud AIO are *not* such systems)\n- For sub-native speed (using WASM mode)\n - Processor: x86 64-bit, arm64, armv7l (no AVX needed)\n - System with glibc or musl (incl. Alpine linux and thus also the official Nextcloud Docker container and also Nextcloud AIO)\n- ~4GB of free RAM (if you're cutting it close, make sure you have some swap available)\n- This app is currently incompatible with the *Suspicious Login* app due to a dependency conflict (ie. you can only have one of the two installed)\n\nThe app does not send any sensitive data to cloud providers or similar services. All processing is done on your Nextcloud machine, using Tensorflow.js running in Node.js." : "Intelligente Medienverschlagwortung und Gesichtserkennung mit lokalen maschinellen Lernmodellen.\nDiese App durchsucht deine Mediensammlung und fügt passende Schlagworte hinzu, um deine Fotos und Musik automatisch zu kategorisieren.\n\n* 📷 👪 Erkennt Gesichter anhand von Kontaktfotos\n* 📷 🏔 Erkennt Tiere, Landschaften, Lebensmittel, Fahrzeuge, Gebäude und andere Objekte\n* 📷 🗼 Erkennt Wahrzeichen und Denkmäler\n* 👂 🎵 Erkennt Musikgenres\n* 🎥 🤸 Erkennt menschliche Handlungen im Video\n\n⚡ Verschlagwortung funktioniert über die kollaborativen Schlagworte von Nextcloud\n* 👂 Höre deine verschlagwortete Musik mit der Audioplayer-App.\n* 📷 Betrachte deineverschlagworteten Fotos und Videos mit der Fotos-App\n\nModellgrößen:\n\n* Objekterkennung: 1GB\n* Landmark-Erkennung: 300MB\n* Video-Aktionserkennung: 50MB\n* Musikgenre-Erkennung: 50MB\n\n## Ethische KI-Bewertung\n### Bewertung für Fotoobjekterkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Foto-Gesichtserkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Video-Aktionserkennung: 🟢\n\nPositiv:\n* Die Software zum Trainieren und Inferenzieren dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n## Ethische KI-Bewertung\n### Bewertung Erkennung des Musikgenres: 🟡\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n\nNegativ:\n* Die Trainingsdaten sind nicht frei verfügbar, was die Möglichkeiten externer Parteien einschränkt, die Leistung des Modells und den CO2-Verbrauch zu überprüfen und auf Verzerrungen zu korrigieren oder sie zu optimieren.\n\nErfahre mehr über das Nextcloud Ethical AI Rating [in unserem Blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nNach der Installation kannst du das Tagging in den Admin-Einstellungen aktivieren.\n\nAnforderungen:\n- PHP 7.4 und höher\n- App „Kollaborative Tags“ aktiviert\n- Für native Geschwindigkeit:\n- Prozessor: x86 64-Bit (mit Unterstützung für AVX-Anweisungen)\n- System mit glibc (normalerweise die Norm unter Linux; FreeBSD, Alpine Linux und damit auch der offizielle Nextcloud Docker-Container und Nextcloud AIO sind *keine* solchen Systeme)\n- Für subnative Geschwindigkeit (im WASM-Modus)\n- Prozessor: x86 64-bit, arm64, armv7l (kein AVX erforderlich)\n- System mit glibc oder musl (inkl. Alpine Linux und damit auch der offizielle Nextcloud Docker Container und auch Nextcloud AIO)\n- ~4 GB freier RAM (wenn weniger verfügbar ist, stelle sicher, dass du etwas Swap zur Verfügung hast)\n- Diese App ist derzeit aufgrund eines Abhängigkeitskonflikts nicht mit der App *Suspicious Login* kompatibel (d. h. du kannst nur eine der beiden installiert haben).\n\nDie App sendet keine sensiblen Daten an Cloud-Anbieter oder ähnliche Dienste. Die gesamte Verarbeitung erfolgt auf deinem Nextcloud-Computer mithilfe von Tensorflow.js, das in Node.js ausgeführt wird.", + "Smart media tagging and face recognition with on-premises machine learning models.\nThis app goes through your media collection and adds fitting tags, automatically categorizing your photos and music.\n\n* 📷 👪 Recognizes faces from contact photos\n* 📷 🏔 Recognizes animals, landscapes, food, vehicles, buildings and other objects\n* 📷 🗼 Recognizes landmarks and monuments\n* 👂 🎵 Recognizes music genres\n* 🎥 🤸 Recognizes human actions on video\n\n⚡ Tagging works via Nextcloud's Collaborative Tags\n * 👂 listen to your tagged music with the audioplayer app\n * 📷 view your tagged photos and videos with the photos app\n\nModel sizes:\n\n * Object recognition: 1GB\n * Landmark recognition: 300MB\n * Video action recognition: 50MB\n * Music genre recognition: 50MB\n\n## Ethical AI Rating\n### Rating for Photo object detection: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Photo face recognition: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Video action recognition: 🟢\n\nPositive:\n* the software for training and inferencing of this model is open source\n* the trained model is freely available, and thus can be ran on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n## Ethical AI Rating\n### Rating Music genre recognition: 🟡\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n\nNegative:\n* the training data is not freely available, limiting the ability of external parties to check and correct for bias or optimise the model’s performance and CO2 usage.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nAfter installation, you can enable tagging in the admin settings.\n\nRequirements:\n- php 7.4 and above\n- App \"collaborative tags\" enabled\n- For native speed:\n - Processor: x86 64-bit (with support for AVX instructions)\n - System with glibc (usually the norm on Linux; FreeBSD, Alpine linux and thus also the official Nextcloud Docker container and Nextcloud AIO are *not* such systems)\n- For sub-native speed (using WASM mode)\n - Processor: x86 64-bit, arm64, armv7l (no AVX needed)\n - System with glibc or musl (incl. Alpine linux and thus also the official Nextcloud Docker container and also Nextcloud AIO)\n- ~4GB of free RAM (if you're cutting it close, make sure you have some swap available)\n- This app is currently incompatible with the *Suspicious Login* app due to a dependency conflict (ie. you can only have one of the two installed)\n\nThe app does not send any sensitive data to cloud providers or similar services. All processing is done on your Nextcloud machine, using Tensorflow.js running in Node.js." : "Intelligente Medienverschlagwortung und Gesichtserkennung mit lokalen maschinellen Lernmodellen.\nDiese App durchsucht deine Mediensammlung und fügt passende Schlagworte hinzu, um deine Fotos und Musik automatisch zu kategorisieren.\n\n* 📷 👪 Erkennt Gesichter anhand von Kontaktfotos\n* 📷 🏔 Erkennt Tiere, Landschaften, Lebensmittel, Fahrzeuge, Gebäude und andere Objekte\n* 📷 🗼 Erkennt Wahrzeichen und Denkmäler\n* 👂 🎵 Erkennt Musikgenres\n* 🎥 🤸 Erkennt menschliche Handlungen im Video\n\n⚡ Verschlagwortung funktioniert über die kollaborativen Schlagworte von Nextcloud\n* 👂 Höre deine verschlagwortete Musik mit der Audioplayer-App.\n* 📷 Betrachte deineverschlagworteten Fotos und Videos mit der Fotos-App\n\nModellgrößen:\n\n* Objekterkennung: 1GB\n* Landmark-Erkennung: 300MB\n* Video-Aktionserkennung: 50MB\n* Musikgenre-Erkennung: 50MB\n\n## Ethische KI-Bewertung\n### Bewertung für Fotoobjekterkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Foto-Gesichtserkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Video-Aktionserkennung: 🟢\n\nPositiv:\n* Die Software zum Trainieren und Inferenzieren dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n## Ethische KI-Bewertung\n### Bewertung Erkennung des Musikgenres: 🟡\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n\nNegativ:\n* Die Trainingsdaten sind nicht frei verfügbar, was die Möglichkeiten externer Parteien einschränkt, die Leistung des Modells und den CO2-Verbrauch zu überprüfen und auf Verzerrungen zu korrigieren oder sie zu optimieren.\n\nErfahre mehr über das Nextcloud Ethical AI Rating [in unserem Blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nNach der Installation kannst du das Tagging in den Admin-Einstellungen aktivieren.\n\nAnforderungen:\n- PHP 7.4 und höher\n- App \"Kollaborative Tags\" aktiviert\n- Für native Geschwindigkeit:\n- Prozessor: x86 64-Bit (mit Unterstützung für AVX-Anweisungen)\n- System mit glibc (normalerweise die Norm unter Linux; FreeBSD, Alpine Linux und damit auch der offizielle Nextcloud Docker-Container und Nextcloud AIO sind *keine* solchen Systeme)\n- Für subnative Geschwindigkeit (im WASM-Modus)\n- Prozessor: x86 64-bit, arm64, armv7l (kein AVX erforderlich)\n- System mit glibc oder musl (inkl. Alpine Linux und damit auch der offizielle Nextcloud Docker Container und auch Nextcloud AIO)\n- ~4 GB freier RAM (wenn weniger verfügbar ist, stelle sicher, dass du etwas Swap zur Verfügung hast)\n- Diese App ist derzeit aufgrund eines Abhängigkeitskonflikts nicht mit der App *Suspicious Login* kompatibel (d. h. du kannst nur eine der beiden installiert haben).\n\nDie App sendet keine sensiblen Daten an Cloud-Anbieter oder ähnliche Dienste. Die gesamte Verarbeitung erfolgt auf deinem Nextcloud-Computer mithilfe von Tensorflow.js, das in Node.js ausgeführt wird.", "Status" : "Status", "The machine learning models have been downloaded successfully." : "Die Modelle für maschinelles Lernen wurden erfolgreich heruntergeladen.", "The machine learning models still need to be downloaded." : "Die Modelle für maschinelles Lernen müssen noch heruntergeladen werden.", @@ -88,7 +88,7 @@ "Could not load Tensorflow WASM in Node.js. Something is wrong with your setup." : "Tensorflow WASM konnte nicht in Node.js geladen werden. Irgendetwas stimmt mit deinem Setup nicht.", "Tensorflow WASM was loaded successfully into Node.js." : "Tensorflow WASM wurde erfolgreich in Node.js geladen.", "If the shipped Node.js binary doesn't work on your system for some reason you can set the path to a custom node.js binary. Currently supported is Node v20.9 and newer v20 releases." : "Wenn die mitgelieferte Node.js-Binärdatei auf deinem System aus irgendeinem Grund nicht funktioniert, kannst du den Pfad zu einer benutzerdefinierten Node.js-Binärdatei festlegen. Derzeit werden Node v20.9 und neuere v20-Versionen unterstützt.", - "For Nextcloud Snap users, you need to adjust this path to point to the snap's \"current\" directory as the pre-configured path will change with each update. For example, set it to \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" instead of \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\"" : "Für Nextcloud Snap-Benutzer musst du diesen Pfad so anpassen, dass er auf das „aktuelle“ Verzeichnis des Snaps verweist, da sich der vorkonfigurierte Pfad mit jedem Update ändert. Stelle es beispielsweise auf „/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node“ anstelle von „/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node“ ein.", + "For Nextcloud Snap users, you need to adjust this path to point to the snap's \"current\" directory as the pre-configured path will change with each update. For example, set it to \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" instead of \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\"" : "Für Nextcloud Snap-Benutzer musst du diesen Pfad so anpassen, dass er auf das \"aktuelle\" Verzeichnis des Snaps verweist, da sich der vorkonfigurierte Pfad mit jedem Update ändert. Stelle es beispielsweise auf \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" anstelle von \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\" ein.", "Classifier process priority" : "Priorität des Klassifikationsprozesses", "Checking Nice binary" : "Überprüfung der Nice-Binärdatei", "Could not find the Nice binary. You may need to set the path to a working binary manually." : "Die Node.js-Bibliothek konnte nicht gefunden werden. Möglicherweise musst du den Pfad zu einer funktionierenden Bibliothek manuell festlegen.", diff --git a/l10n/de_DE.js b/l10n/de_DE.js index eddcc89d9..1d908809a 100644 --- a/l10n/de_DE.js +++ b/l10n/de_DE.js @@ -3,7 +3,7 @@ OC.L10N.register( { "Recognize" : "Recognize", "Smart media tagging and face recognition with on-premises machine learning models" : "Intelligente Medienverschlagwortung und Gesichtserkennung mit vor Ort installierten Modellen für maschinelles Lernen", - "Smart media tagging and face recognition with on-premises machine learning models.\nThis app goes through your media collection and adds fitting tags, automatically categorizing your photos and music.\n\n* 📷 👪 Recognizes faces from contact photos\n* 📷 🏔 Recognizes animals, landscapes, food, vehicles, buildings and other objects\n* 📷 🗼 Recognizes landmarks and monuments\n* 👂 🎵 Recognizes music genres\n* 🎥 🤸 Recognizes human actions on video\n\n⚡ Tagging works via Nextcloud's Collaborative Tags\n * 👂 listen to your tagged music with the audioplayer app\n * 📷 view your tagged photos and videos with the photos app\n\nModel sizes:\n\n * Object recognition: 1GB\n * Landmark recognition: 300MB\n * Video action recognition: 50MB\n * Music genre recognition: 50MB\n\n## Ethical AI Rating\n### Rating for Photo object detection: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Photo face recognition: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Video action recognition: 🟢\n\nPositive:\n* the software for training and inferencing of this model is open source\n* the trained model is freely available, and thus can be ran on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n## Ethical AI Rating\n### Rating Music genre recognition: 🟡\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n\nNegative:\n* the training data is not freely available, limiting the ability of external parties to check and correct for bias or optimise the model’s performance and CO2 usage.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nAfter installation, you can enable tagging in the admin settings.\n\nRequirements:\n- php 7.4 and above\n- App \"collaborative tags\" enabled\n- For native speed:\n - Processor: x86 64-bit (with support for AVX instructions)\n - System with glibc (usually the norm on Linux; FreeBSD, Alpine linux and thus also the official Nextcloud Docker container and Nextcloud AIO are *not* such systems)\n- For sub-native speed (using WASM mode)\n - Processor: x86 64-bit, arm64, armv7l (no AVX needed)\n - System with glibc or musl (incl. Alpine linux and thus also the official Nextcloud Docker container and also Nextcloud AIO)\n- ~4GB of free RAM (if you're cutting it close, make sure you have some swap available)\n- This app is currently incompatible with the *Suspicious Login* app due to a dependency conflict (ie. you can only have one of the two installed)\n\nThe app does not send any sensitive data to cloud providers or similar services. All processing is done on your Nextcloud machine, using Tensorflow.js running in Node.js." : "Intelligente Medienverschlagwortung und Gesichtserkennung mit lokalen maschinellen Lernmodellen.\nDiese App durchsucht Ihre Mediensammlung und fügt passende Schlagworte hinzu, um Ihre Fotos und Musik automatisch zu kategorisieren.\n\n* 📷 👪 Erkennt Gesichter anhand von Kontaktfotos\n* 📷 🏔 Erkennt Tiere, Landschaften, Lebensmittel, Fahrzeuge, Gebäude und andere Objekte\n* 📷 🗼 Erkennt Wahrzeichen und Denkmäler\n* 👂 🎵 Erkennt Musikgenres\n* 🎥 🤸 Erkennt menschliche Handlungen im Video\n\n⚡ Verschlagwortung funktioniert über die kollaborativen Schlagworte von Nextcloud\n* 👂 Hören Sie Ihre verschlagwortete Musik mit der Audioplayer-App.\n* 📷 Betrachten Sie Ihre verschlagworteten Fotos und Videos mit der Fotos-App\n\nModellgrößen:\n\n* Objekterkennung: 1GB\n* Landmark-Erkennung: 300MB\n* Video-Aktionserkennung: 50MB\n* Musikgenre-Erkennung: 50MB\n\n## Ethische KI-Bewertung\n### Bewertung für Fotoobjekterkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Foto-Gesichtserkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Video-Aktionserkennung: 🟢\n\nPositiv:\n* Die Software zum Trainieren und Inferenzieren dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n## Ethische KI-Bewertung\n### Bewertung Erkennung des Musikgenres: 🟡\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n\nNegativ:\n* Die Trainingsdaten sind nicht frei verfügbar, was die Möglichkeiten externer Parteien einschränkt, die Leistung des Modells und den CO2-Verbrauch zu überprüfen und auf Verzerrungen zu korrigieren oder sie zu optimieren.\n\nErfahren Sie mehr über das Nextcloud Ethical AI Rating [in unserem Blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nNach der Installation können Sie das Tagging in den Admin-Einstellungen aktivieren.\n\nAnforderungen:\n- PHP 7.4 und höher\n- App „Collaborative Tags“ aktiviert\n- Für native Geschwindigkeit:\n- Prozessor: x86 64-Bit (mit Unterstützung für AVX-Anweisungen)\n- System mit glibc (normalerweise die Norm unter Linux; FreeBSD, Alpine Linux und damit auch der offizielle Nextcloud Docker-Container und Nextcloud AIO sind *keine* solchen Systeme)\n- Für subnative Geschwindigkeit (im WASM-Modus)\n- Prozessor: x86 64-bit, arm64, armv7l (kein AVX erforderlich)\n- System mit glibc oder musl (inkl. Alpine Linux und damit auch der offizielle Nextcloud Docker Container und auch Nextcloud AIO)\n- ~4 GB freier RAM (wenn Sie es knapp machen, stellen Sie sicher, dass Sie etwas Swap zur Verfügung haben)\n- Diese App ist derzeit aufgrund eines Abhängigkeitskonflikts nicht mit der App *Suspicious Login* kompatibel (d. h. Sie können nur eine der beiden installiert haben).\n\nDie App sendet keine sensiblen Daten an Cloud-Anbieter oder ähnliche Dienste. Die gesamte Verarbeitung erfolgt auf Ihrem Nextcloud-Computer mithilfe von Tensorflow.js, das in Node.js ausgeführt wird.", + "Smart media tagging and face recognition with on-premises machine learning models.\nThis app goes through your media collection and adds fitting tags, automatically categorizing your photos and music.\n\n* 📷 👪 Recognizes faces from contact photos\n* 📷 🏔 Recognizes animals, landscapes, food, vehicles, buildings and other objects\n* 📷 🗼 Recognizes landmarks and monuments\n* 👂 🎵 Recognizes music genres\n* 🎥 🤸 Recognizes human actions on video\n\n⚡ Tagging works via Nextcloud's Collaborative Tags\n * 👂 listen to your tagged music with the audioplayer app\n * 📷 view your tagged photos and videos with the photos app\n\nModel sizes:\n\n * Object recognition: 1GB\n * Landmark recognition: 300MB\n * Video action recognition: 50MB\n * Music genre recognition: 50MB\n\n## Ethical AI Rating\n### Rating for Photo object detection: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Photo face recognition: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Video action recognition: 🟢\n\nPositive:\n* the software for training and inferencing of this model is open source\n* the trained model is freely available, and thus can be ran on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n## Ethical AI Rating\n### Rating Music genre recognition: 🟡\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n\nNegative:\n* the training data is not freely available, limiting the ability of external parties to check and correct for bias or optimise the model’s performance and CO2 usage.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nAfter installation, you can enable tagging in the admin settings.\n\nRequirements:\n- php 7.4 and above\n- App \"collaborative tags\" enabled\n- For native speed:\n - Processor: x86 64-bit (with support for AVX instructions)\n - System with glibc (usually the norm on Linux; FreeBSD, Alpine linux and thus also the official Nextcloud Docker container and Nextcloud AIO are *not* such systems)\n- For sub-native speed (using WASM mode)\n - Processor: x86 64-bit, arm64, armv7l (no AVX needed)\n - System with glibc or musl (incl. Alpine linux and thus also the official Nextcloud Docker container and also Nextcloud AIO)\n- ~4GB of free RAM (if you're cutting it close, make sure you have some swap available)\n- This app is currently incompatible with the *Suspicious Login* app due to a dependency conflict (ie. you can only have one of the two installed)\n\nThe app does not send any sensitive data to cloud providers or similar services. All processing is done on your Nextcloud machine, using Tensorflow.js running in Node.js." : "Intelligente Medienverschlagwortung und Gesichtserkennung mit lokalen maschinellen Lernmodellen.\nDiese App durchsucht Ihre Mediensammlung und fügt passende Schlagworte hinzu, um Ihre Fotos und Musik automatisch zu kategorisieren.\n\n* 📷 👪 Erkennt Gesichter anhand von Kontaktfotos\n* 📷 🏔 Erkennt Tiere, Landschaften, Lebensmittel, Fahrzeuge, Gebäude und andere Objekte\n* 📷 🗼 Erkennt Wahrzeichen und Denkmäler\n* 👂 🎵 Erkennt Musikgenres\n* 🎥 🤸 Erkennt menschliche Handlungen im Video\n\n⚡ Verschlagwortung funktioniert über die kollaborativen Schlagworte von Nextcloud\n* 👂 Hören Sie Ihre verschlagwortete Musik mit der Audioplayer-App.\n* 📷 Betrachten Sie Ihre verschlagworteten Fotos und Videos mit der Fotos-App\n\nModellgrößen:\n\n* Objekterkennung: 1GB\n* Landmark-Erkennung: 300MB\n* Video-Aktionserkennung: 50MB\n* Musikgenre-Erkennung: 50MB\n\n## Ethische KI-Bewertung\n### Bewertung für Fotoobjekterkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Foto-Gesichtserkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Video-Aktionserkennung: 🟢\n\nPositiv:\n* Die Software zum Trainieren und Inferenzieren dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n## Ethische KI-Bewertung\n### Bewertung Erkennung des Musikgenres: 🟡\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n\nNegativ:\n* Die Trainingsdaten sind nicht frei verfügbar, was die Möglichkeiten externer Parteien einschränkt, die Leistung des Modells und den CO2-Verbrauch zu überprüfen und auf Verzerrungen zu korrigieren oder sie zu optimieren.\n\nErfahren Sie mehr über das Nextcloud Ethical AI Rating [in unserem Blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nNach der Installation können Sie das Tagging in den Admin-Einstellungen aktivieren.\n\nAnforderungen:\n- PHP 7.4 und höher\n- App \"Collaborative Tags\" aktiviert\n- Für native Geschwindigkeit:\n- Prozessor: x86 64-Bit (mit Unterstützung für AVX-Anweisungen)\n- System mit glibc (normalerweise die Norm unter Linux; FreeBSD, Alpine Linux und damit auch der offizielle Nextcloud Docker-Container und Nextcloud AIO sind *keine* solchen Systeme)\n- Für subnative Geschwindigkeit (im WASM-Modus)\n- Prozessor: x86 64-bit, arm64, armv7l (kein AVX erforderlich)\n- System mit glibc oder musl (inkl. Alpine Linux und damit auch der offizielle Nextcloud Docker Container und auch Nextcloud AIO)\n- ~4 GB freier RAM (wenn Sie es knapp machen, stellen Sie sicher, dass Sie etwas Swap zur Verfügung haben)\n- Diese App ist derzeit aufgrund eines Abhängigkeitskonflikts nicht mit der App *Suspicious Login* kompatibel (d. h. Sie können nur eine der beiden installiert haben).\n\nDie App sendet keine sensiblen Daten an Cloud-Anbieter oder ähnliche Dienste. Die gesamte Verarbeitung erfolgt auf Ihrem Nextcloud-Computer mithilfe von Tensorflow.js, das in Node.js ausgeführt wird.", "Status" : "Status", "The machine learning models have been downloaded successfully." : "Die Modelle für maschinelles Lernen wurden erfolgreich heruntergeladen.", "The machine learning models still need to be downloaded." : "Die Modelle für maschinelles Lernen müssen noch heruntergeladen werden.", @@ -90,7 +90,7 @@ OC.L10N.register( "Could not load Tensorflow WASM in Node.js. Something is wrong with your setup." : "Tensorflow WASM konnte nicht in Node.js geladen werden. Irgendetwas stimmt mit den Einstellungen nicht.", "Tensorflow WASM was loaded successfully into Node.js." : "Tensorflow WASM wurde erfolgreich in Node.js geladen.", "If the shipped Node.js binary doesn't work on your system for some reason you can set the path to a custom node.js binary. Currently supported is Node v20.9 and newer v20 releases." : "Wenn die mitgelieferte Node.js-Binärdatei auf Ihrem System aus irgendeinem Grund nicht funktioniert, können Sie den Pfad zu einer benutzerdefinierte Node.js-Binärdatei festlegen. Derzeit werden Node v20.9 und neuere v20-Versionen unterstützt.", - "For Nextcloud Snap users, you need to adjust this path to point to the snap's \"current\" directory as the pre-configured path will change with each update. For example, set it to \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" instead of \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\"" : "Für Nextcloud Snap-Benutzer müssen Sie diesen Pfad so anpassen, dass er auf das „aktuelle“ Verzeichnis des Snaps verweist, da sich der vorkonfigurierte Pfad mit jedem Update ändert. Stellen Sie es beispielsweise auf „/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node“ anstelle von „/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node“ ein.", + "For Nextcloud Snap users, you need to adjust this path to point to the snap's \"current\" directory as the pre-configured path will change with each update. For example, set it to \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" instead of \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\"" : "Für Nextcloud Snap-Benutzer müssen Sie diesen Pfad so anpassen, dass er auf das \"aktuelle\" Verzeichnis des Snaps verweist, da sich der vorkonfigurierte Pfad mit jedem Update ändert. Stellen Sie es beispielsweise auf \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" anstelle von \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\" ein.", "Classifier process priority" : "Priorität des Klassifikationsprozesses", "Checking Nice binary" : "Überprüfung der Nice-Binärdatei", "Could not find the Nice binary. You may need to set the path to a working binary manually." : "Die Nice-Binärdatei konnte nicht gefunden werden. Möglicherweise müssen Sie den Pfad zu einer funktionierenden Binärdatei manuell festlegen.", diff --git a/l10n/de_DE.json b/l10n/de_DE.json index 306437a38..f8e629ef2 100644 --- a/l10n/de_DE.json +++ b/l10n/de_DE.json @@ -1,7 +1,7 @@ { "translations": { "Recognize" : "Recognize", "Smart media tagging and face recognition with on-premises machine learning models" : "Intelligente Medienverschlagwortung und Gesichtserkennung mit vor Ort installierten Modellen für maschinelles Lernen", - "Smart media tagging and face recognition with on-premises machine learning models.\nThis app goes through your media collection and adds fitting tags, automatically categorizing your photos and music.\n\n* 📷 👪 Recognizes faces from contact photos\n* 📷 🏔 Recognizes animals, landscapes, food, vehicles, buildings and other objects\n* 📷 🗼 Recognizes landmarks and monuments\n* 👂 🎵 Recognizes music genres\n* 🎥 🤸 Recognizes human actions on video\n\n⚡ Tagging works via Nextcloud's Collaborative Tags\n * 👂 listen to your tagged music with the audioplayer app\n * 📷 view your tagged photos and videos with the photos app\n\nModel sizes:\n\n * Object recognition: 1GB\n * Landmark recognition: 300MB\n * Video action recognition: 50MB\n * Music genre recognition: 50MB\n\n## Ethical AI Rating\n### Rating for Photo object detection: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Photo face recognition: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Video action recognition: 🟢\n\nPositive:\n* the software for training and inferencing of this model is open source\n* the trained model is freely available, and thus can be ran on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n## Ethical AI Rating\n### Rating Music genre recognition: 🟡\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n\nNegative:\n* the training data is not freely available, limiting the ability of external parties to check and correct for bias or optimise the model’s performance and CO2 usage.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nAfter installation, you can enable tagging in the admin settings.\n\nRequirements:\n- php 7.4 and above\n- App \"collaborative tags\" enabled\n- For native speed:\n - Processor: x86 64-bit (with support for AVX instructions)\n - System with glibc (usually the norm on Linux; FreeBSD, Alpine linux and thus also the official Nextcloud Docker container and Nextcloud AIO are *not* such systems)\n- For sub-native speed (using WASM mode)\n - Processor: x86 64-bit, arm64, armv7l (no AVX needed)\n - System with glibc or musl (incl. Alpine linux and thus also the official Nextcloud Docker container and also Nextcloud AIO)\n- ~4GB of free RAM (if you're cutting it close, make sure you have some swap available)\n- This app is currently incompatible with the *Suspicious Login* app due to a dependency conflict (ie. you can only have one of the two installed)\n\nThe app does not send any sensitive data to cloud providers or similar services. All processing is done on your Nextcloud machine, using Tensorflow.js running in Node.js." : "Intelligente Medienverschlagwortung und Gesichtserkennung mit lokalen maschinellen Lernmodellen.\nDiese App durchsucht Ihre Mediensammlung und fügt passende Schlagworte hinzu, um Ihre Fotos und Musik automatisch zu kategorisieren.\n\n* 📷 👪 Erkennt Gesichter anhand von Kontaktfotos\n* 📷 🏔 Erkennt Tiere, Landschaften, Lebensmittel, Fahrzeuge, Gebäude und andere Objekte\n* 📷 🗼 Erkennt Wahrzeichen und Denkmäler\n* 👂 🎵 Erkennt Musikgenres\n* 🎥 🤸 Erkennt menschliche Handlungen im Video\n\n⚡ Verschlagwortung funktioniert über die kollaborativen Schlagworte von Nextcloud\n* 👂 Hören Sie Ihre verschlagwortete Musik mit der Audioplayer-App.\n* 📷 Betrachten Sie Ihre verschlagworteten Fotos und Videos mit der Fotos-App\n\nModellgrößen:\n\n* Objekterkennung: 1GB\n* Landmark-Erkennung: 300MB\n* Video-Aktionserkennung: 50MB\n* Musikgenre-Erkennung: 50MB\n\n## Ethische KI-Bewertung\n### Bewertung für Fotoobjekterkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Foto-Gesichtserkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Video-Aktionserkennung: 🟢\n\nPositiv:\n* Die Software zum Trainieren und Inferenzieren dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n## Ethische KI-Bewertung\n### Bewertung Erkennung des Musikgenres: 🟡\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n\nNegativ:\n* Die Trainingsdaten sind nicht frei verfügbar, was die Möglichkeiten externer Parteien einschränkt, die Leistung des Modells und den CO2-Verbrauch zu überprüfen und auf Verzerrungen zu korrigieren oder sie zu optimieren.\n\nErfahren Sie mehr über das Nextcloud Ethical AI Rating [in unserem Blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nNach der Installation können Sie das Tagging in den Admin-Einstellungen aktivieren.\n\nAnforderungen:\n- PHP 7.4 und höher\n- App „Collaborative Tags“ aktiviert\n- Für native Geschwindigkeit:\n- Prozessor: x86 64-Bit (mit Unterstützung für AVX-Anweisungen)\n- System mit glibc (normalerweise die Norm unter Linux; FreeBSD, Alpine Linux und damit auch der offizielle Nextcloud Docker-Container und Nextcloud AIO sind *keine* solchen Systeme)\n- Für subnative Geschwindigkeit (im WASM-Modus)\n- Prozessor: x86 64-bit, arm64, armv7l (kein AVX erforderlich)\n- System mit glibc oder musl (inkl. Alpine Linux und damit auch der offizielle Nextcloud Docker Container und auch Nextcloud AIO)\n- ~4 GB freier RAM (wenn Sie es knapp machen, stellen Sie sicher, dass Sie etwas Swap zur Verfügung haben)\n- Diese App ist derzeit aufgrund eines Abhängigkeitskonflikts nicht mit der App *Suspicious Login* kompatibel (d. h. Sie können nur eine der beiden installiert haben).\n\nDie App sendet keine sensiblen Daten an Cloud-Anbieter oder ähnliche Dienste. Die gesamte Verarbeitung erfolgt auf Ihrem Nextcloud-Computer mithilfe von Tensorflow.js, das in Node.js ausgeführt wird.", + "Smart media tagging and face recognition with on-premises machine learning models.\nThis app goes through your media collection and adds fitting tags, automatically categorizing your photos and music.\n\n* 📷 👪 Recognizes faces from contact photos\n* 📷 🏔 Recognizes animals, landscapes, food, vehicles, buildings and other objects\n* 📷 🗼 Recognizes landmarks and monuments\n* 👂 🎵 Recognizes music genres\n* 🎥 🤸 Recognizes human actions on video\n\n⚡ Tagging works via Nextcloud's Collaborative Tags\n * 👂 listen to your tagged music with the audioplayer app\n * 📷 view your tagged photos and videos with the photos app\n\nModel sizes:\n\n * Object recognition: 1GB\n * Landmark recognition: 300MB\n * Video action recognition: 50MB\n * Music genre recognition: 50MB\n\n## Ethical AI Rating\n### Rating for Photo object detection: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Photo face recognition: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Video action recognition: 🟢\n\nPositive:\n* the software for training and inferencing of this model is open source\n* the trained model is freely available, and thus can be ran on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n## Ethical AI Rating\n### Rating Music genre recognition: 🟡\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n\nNegative:\n* the training data is not freely available, limiting the ability of external parties to check and correct for bias or optimise the model’s performance and CO2 usage.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nAfter installation, you can enable tagging in the admin settings.\n\nRequirements:\n- php 7.4 and above\n- App \"collaborative tags\" enabled\n- For native speed:\n - Processor: x86 64-bit (with support for AVX instructions)\n - System with glibc (usually the norm on Linux; FreeBSD, Alpine linux and thus also the official Nextcloud Docker container and Nextcloud AIO are *not* such systems)\n- For sub-native speed (using WASM mode)\n - Processor: x86 64-bit, arm64, armv7l (no AVX needed)\n - System with glibc or musl (incl. Alpine linux and thus also the official Nextcloud Docker container and also Nextcloud AIO)\n- ~4GB of free RAM (if you're cutting it close, make sure you have some swap available)\n- This app is currently incompatible with the *Suspicious Login* app due to a dependency conflict (ie. you can only have one of the two installed)\n\nThe app does not send any sensitive data to cloud providers or similar services. All processing is done on your Nextcloud machine, using Tensorflow.js running in Node.js." : "Intelligente Medienverschlagwortung und Gesichtserkennung mit lokalen maschinellen Lernmodellen.\nDiese App durchsucht Ihre Mediensammlung und fügt passende Schlagworte hinzu, um Ihre Fotos und Musik automatisch zu kategorisieren.\n\n* 📷 👪 Erkennt Gesichter anhand von Kontaktfotos\n* 📷 🏔 Erkennt Tiere, Landschaften, Lebensmittel, Fahrzeuge, Gebäude und andere Objekte\n* 📷 🗼 Erkennt Wahrzeichen und Denkmäler\n* 👂 🎵 Erkennt Musikgenres\n* 🎥 🤸 Erkennt menschliche Handlungen im Video\n\n⚡ Verschlagwortung funktioniert über die kollaborativen Schlagworte von Nextcloud\n* 👂 Hören Sie Ihre verschlagwortete Musik mit der Audioplayer-App.\n* 📷 Betrachten Sie Ihre verschlagworteten Fotos und Videos mit der Fotos-App\n\nModellgrößen:\n\n* Objekterkennung: 1GB\n* Landmark-Erkennung: 300MB\n* Video-Aktionserkennung: 50MB\n* Musikgenre-Erkennung: 50MB\n\n## Ethische KI-Bewertung\n### Bewertung für Fotoobjekterkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Foto-Gesichtserkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Video-Aktionserkennung: 🟢\n\nPositiv:\n* Die Software zum Trainieren und Inferenzieren dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n## Ethische KI-Bewertung\n### Bewertung Erkennung des Musikgenres: 🟡\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n\nNegativ:\n* Die Trainingsdaten sind nicht frei verfügbar, was die Möglichkeiten externer Parteien einschränkt, die Leistung des Modells und den CO2-Verbrauch zu überprüfen und auf Verzerrungen zu korrigieren oder sie zu optimieren.\n\nErfahren Sie mehr über das Nextcloud Ethical AI Rating [in unserem Blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nNach der Installation können Sie das Tagging in den Admin-Einstellungen aktivieren.\n\nAnforderungen:\n- PHP 7.4 und höher\n- App \"Collaborative Tags\" aktiviert\n- Für native Geschwindigkeit:\n- Prozessor: x86 64-Bit (mit Unterstützung für AVX-Anweisungen)\n- System mit glibc (normalerweise die Norm unter Linux; FreeBSD, Alpine Linux und damit auch der offizielle Nextcloud Docker-Container und Nextcloud AIO sind *keine* solchen Systeme)\n- Für subnative Geschwindigkeit (im WASM-Modus)\n- Prozessor: x86 64-bit, arm64, armv7l (kein AVX erforderlich)\n- System mit glibc oder musl (inkl. Alpine Linux und damit auch der offizielle Nextcloud Docker Container und auch Nextcloud AIO)\n- ~4 GB freier RAM (wenn Sie es knapp machen, stellen Sie sicher, dass Sie etwas Swap zur Verfügung haben)\n- Diese App ist derzeit aufgrund eines Abhängigkeitskonflikts nicht mit der App *Suspicious Login* kompatibel (d. h. Sie können nur eine der beiden installiert haben).\n\nDie App sendet keine sensiblen Daten an Cloud-Anbieter oder ähnliche Dienste. Die gesamte Verarbeitung erfolgt auf Ihrem Nextcloud-Computer mithilfe von Tensorflow.js, das in Node.js ausgeführt wird.", "Status" : "Status", "The machine learning models have been downloaded successfully." : "Die Modelle für maschinelles Lernen wurden erfolgreich heruntergeladen.", "The machine learning models still need to be downloaded." : "Die Modelle für maschinelles Lernen müssen noch heruntergeladen werden.", @@ -88,7 +88,7 @@ "Could not load Tensorflow WASM in Node.js. Something is wrong with your setup." : "Tensorflow WASM konnte nicht in Node.js geladen werden. Irgendetwas stimmt mit den Einstellungen nicht.", "Tensorflow WASM was loaded successfully into Node.js." : "Tensorflow WASM wurde erfolgreich in Node.js geladen.", "If the shipped Node.js binary doesn't work on your system for some reason you can set the path to a custom node.js binary. Currently supported is Node v20.9 and newer v20 releases." : "Wenn die mitgelieferte Node.js-Binärdatei auf Ihrem System aus irgendeinem Grund nicht funktioniert, können Sie den Pfad zu einer benutzerdefinierte Node.js-Binärdatei festlegen. Derzeit werden Node v20.9 und neuere v20-Versionen unterstützt.", - "For Nextcloud Snap users, you need to adjust this path to point to the snap's \"current\" directory as the pre-configured path will change with each update. For example, set it to \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" instead of \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\"" : "Für Nextcloud Snap-Benutzer müssen Sie diesen Pfad so anpassen, dass er auf das „aktuelle“ Verzeichnis des Snaps verweist, da sich der vorkonfigurierte Pfad mit jedem Update ändert. Stellen Sie es beispielsweise auf „/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node“ anstelle von „/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node“ ein.", + "For Nextcloud Snap users, you need to adjust this path to point to the snap's \"current\" directory as the pre-configured path will change with each update. For example, set it to \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" instead of \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\"" : "Für Nextcloud Snap-Benutzer müssen Sie diesen Pfad so anpassen, dass er auf das \"aktuelle\" Verzeichnis des Snaps verweist, da sich der vorkonfigurierte Pfad mit jedem Update ändert. Stellen Sie es beispielsweise auf \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" anstelle von \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\" ein.", "Classifier process priority" : "Priorität des Klassifikationsprozesses", "Checking Nice binary" : "Überprüfung der Nice-Binärdatei", "Could not find the Nice binary. You may need to set the path to a working binary manually." : "Die Nice-Binärdatei konnte nicht gefunden werden. Möglicherweise müssen Sie den Pfad zu einer funktionierenden Binärdatei manuell festlegen.", From 79a7c734340b773bcd9b6783b8e122d6fdc71d4d Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Thu, 6 Feb 2025 01:37:47 +0000 Subject: [PATCH 17/20] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot Signed-off-by: QuentinLemCode --- l10n/et_EE.js | 21 +++++++++++++++++++++ l10n/et_EE.json | 19 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 l10n/et_EE.js create mode 100644 l10n/et_EE.json diff --git a/l10n/et_EE.js b/l10n/et_EE.js new file mode 100644 index 000000000..c7b2ed3a2 --- /dev/null +++ b/l10n/et_EE.js @@ -0,0 +1,21 @@ +OC.L10N.register( + "recognize", + { + "Status" : "Staatus", + "Reset" : "Lähtesta", + "never" : "mitte kunagi", + "Landscape" : "Horisontaalne", + "Portrait" : "Vertikaalne", + "People" : "Inimese", + "Office" : "Kontor", + "Car" : "Auto", + "Display" : "Vaade", + "Camping" : "Telkimine", + "Pizza" : "Pitsa", + "Info" : "Info", + "Bucket" : "Korv", + "Event" : "Sündmus", + "Gallery" : "Galerii", + "Park" : "Park" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/l10n/et_EE.json b/l10n/et_EE.json new file mode 100644 index 000000000..5f00f6e3b --- /dev/null +++ b/l10n/et_EE.json @@ -0,0 +1,19 @@ +{ "translations": { + "Status" : "Staatus", + "Reset" : "Lähtesta", + "never" : "mitte kunagi", + "Landscape" : "Horisontaalne", + "Portrait" : "Vertikaalne", + "People" : "Inimese", + "Office" : "Kontor", + "Car" : "Auto", + "Display" : "Vaade", + "Camping" : "Telkimine", + "Pizza" : "Pitsa", + "Info" : "Info", + "Bucket" : "Korv", + "Event" : "Sündmus", + "Gallery" : "Galerii", + "Park" : "Park" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file From c2a8f8559577cc19e0787959bc477d700ddf2279 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Sun, 9 Feb 2025 01:36:59 +0000 Subject: [PATCH 18/20] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot Signed-off-by: QuentinLemCode --- l10n/da.js | 2 +- l10n/da.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/l10n/da.js b/l10n/da.js index 980993ff0..640c93b20 100644 --- a/l10n/da.js +++ b/l10n/da.js @@ -30,7 +30,7 @@ OC.L10N.register( "Pizza" : "Pizza", "Info" : "Info", "Document" : "Dokument", - "Bucket" : "Bucket", + "Bucket" : "Spand", "Festival" : "Festival", "Event" : "Begivenhed", "Gallery" : "Galleri", diff --git a/l10n/da.json b/l10n/da.json index c3f14b55f..f3db6a022 100644 --- a/l10n/da.json +++ b/l10n/da.json @@ -28,7 +28,7 @@ "Pizza" : "Pizza", "Info" : "Info", "Document" : "Dokument", - "Bucket" : "Bucket", + "Bucket" : "Spand", "Festival" : "Festival", "Event" : "Begivenhed", "Gallery" : "Galleri", From d2fe5a93cc98be0856f5d1313b24ed56a3b087bc Mon Sep 17 00:00:00 2001 From: QuentinLemCode Date: Sun, 9 Feb 2025 23:01:58 +0100 Subject: [PATCH 19/20] remove composer lockfile Signed-off-by: QuentinLemCode --- composer.lock | 2462 ------------------------------------------------- 1 file changed, 2462 deletions(-) delete mode 100644 composer.lock diff --git a/composer.lock b/composer.lock deleted file mode 100644 index 2c5298be5..000000000 --- a/composer.lock +++ /dev/null @@ -1,2462 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "86cf63b6f86bebb78731bbc60510ebb7", - "packages": [ - { - "name": "amphp/amp", - "version": "v2.6.4", - "source": { - "type": "git", - "url": "https://github.com/amphp/amp.git", - "reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/amp/zipball/ded3d9be08f526089eb7ee8d9f16a9768f9dec2d", - "reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1", - "ext-json": "*", - "jetbrains/phpstorm-stubs": "^2019.3", - "phpunit/phpunit": "^7 | ^8 | ^9", - "react/promise": "^2", - "vimeo/psalm": "^3.12" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "files": [ - "lib/functions.php", - "lib/Internal/functions.php" - ], - "psr-4": { - "Amp\\": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Lowrey", - "email": "rdlowrey@php.net" - }, - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - }, - { - "name": "Bob Weinand", - "email": "bobwei9@hotmail.com" - }, - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - } - ], - "description": "A non-blocking concurrency framework for PHP applications.", - "homepage": "https://amphp.org/amp", - "keywords": [ - "async", - "asynchronous", - "awaitable", - "concurrency", - "event", - "event-loop", - "future", - "non-blocking", - "promise" - ], - "support": { - "irc": "irc://irc.freenode.org/amphp", - "issues": "https://github.com/amphp/amp/issues", - "source": "https://github.com/amphp/amp/tree/v2.6.4" - }, - "funding": [ - { - "url": "https://github.com/amphp", - "type": "github" - } - ], - "time": "2024-03-21T18:52:26+00:00" - }, - { - "name": "amphp/byte-stream", - "version": "v1.8.2", - "source": { - "type": "git", - "url": "https://github.com/amphp/byte-stream.git", - "reference": "4f0e968ba3798a423730f567b1b50d3441c16ddc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/byte-stream/zipball/4f0e968ba3798a423730f567b1b50d3441c16ddc", - "reference": "4f0e968ba3798a423730f567b1b50d3441c16ddc", - "shasum": "" - }, - "require": { - "amphp/amp": "^2", - "php": ">=7.1" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1.4", - "friendsofphp/php-cs-fixer": "^2.3", - "jetbrains/phpstorm-stubs": "^2019.3", - "phpunit/phpunit": "^6 || ^7 || ^8", - "psalm/phar": "^3.11.4" - }, - "type": "library", - "autoload": { - "files": [ - "lib/functions.php" - ], - "psr-4": { - "Amp\\ByteStream\\": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - }, - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - } - ], - "description": "A stream abstraction to make working with non-blocking I/O simple.", - "homepage": "https://amphp.org/byte-stream", - "keywords": [ - "amp", - "amphp", - "async", - "io", - "non-blocking", - "stream" - ], - "support": { - "issues": "https://github.com/amphp/byte-stream/issues", - "source": "https://github.com/amphp/byte-stream/tree/v1.8.2" - }, - "funding": [ - { - "url": "https://github.com/amphp", - "type": "github" - } - ], - "time": "2024-04-13T18:00:56+00:00" - }, - { - "name": "amphp/parallel", - "version": "v1.4.3", - "source": { - "type": "git", - "url": "https://github.com/amphp/parallel.git", - "reference": "3aac213ba7858566fd83d38ccb85b91b2d652cb0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/parallel/zipball/3aac213ba7858566fd83d38ccb85b91b2d652cb0", - "reference": "3aac213ba7858566fd83d38ccb85b91b2d652cb0", - "shasum": "" - }, - "require": { - "amphp/amp": "^2", - "amphp/byte-stream": "^1.6.1", - "amphp/parser": "^1", - "amphp/process": "^1", - "amphp/serialization": "^1", - "amphp/sync": "^1.0.1", - "php": ">=7.1" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1.1", - "phpunit/phpunit": "^8 || ^7" - }, - "type": "library", - "autoload": { - "files": [ - "lib/Context/functions.php", - "lib/Sync/functions.php", - "lib/Worker/functions.php" - ], - "psr-4": { - "Amp\\Parallel\\": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - }, - { - "name": "Stephen Coakley", - "email": "me@stephencoakley.com" - } - ], - "description": "Parallel processing component for Amp.", - "homepage": "https://github.com/amphp/parallel", - "keywords": [ - "async", - "asynchronous", - "concurrent", - "multi-processing", - "multi-threading" - ], - "support": { - "issues": "https://github.com/amphp/parallel/issues", - "source": "https://github.com/amphp/parallel/tree/v1.4.3" - }, - "funding": [ - { - "url": "https://github.com/amphp", - "type": "github" - } - ], - "time": "2023-03-23T08:04:23+00:00" - }, - { - "name": "amphp/parser", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/amphp/parser.git", - "reference": "3cf1f8b32a0171d4b1bed93d25617637a77cded7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/parser/zipball/3cf1f8b32a0171d4b1bed93d25617637a77cded7", - "reference": "3cf1f8b32a0171d4b1bed93d25617637a77cded7", - "shasum": "" - }, - "require": { - "php": ">=7.4" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "^2", - "phpunit/phpunit": "^9", - "psalm/phar": "^5.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Amp\\Parser\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - }, - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - } - ], - "description": "A generator parser to make streaming parsers simple.", - "homepage": "https://github.com/amphp/parser", - "keywords": [ - "async", - "non-blocking", - "parser", - "stream" - ], - "support": { - "issues": "https://github.com/amphp/parser/issues", - "source": "https://github.com/amphp/parser/tree/v1.1.1" - }, - "funding": [ - { - "url": "https://github.com/amphp", - "type": "github" - } - ], - "time": "2024-03-21T19:16:53+00:00" - }, - { - "name": "amphp/process", - "version": "v1.1.9", - "source": { - "type": "git", - "url": "https://github.com/amphp/process.git", - "reference": "55b837d4f1857b9bd7efb7bb859ae6b0e804f13f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/process/zipball/55b837d4f1857b9bd7efb7bb859ae6b0e804f13f", - "reference": "55b837d4f1857b9bd7efb7bb859ae6b0e804f13f", - "shasum": "" - }, - "require": { - "amphp/amp": "^2", - "amphp/byte-stream": "^1.4", - "php": ">=7.1" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1", - "phpunit/phpunit": "^6" - }, - "type": "library", - "autoload": { - "files": [ - "lib/functions.php" - ], - "psr-4": { - "Amp\\Process\\": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bob Weinand", - "email": "bobwei9@hotmail.com" - }, - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - }, - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - } - ], - "description": "Asynchronous process manager.", - "homepage": "https://github.com/amphp/process", - "support": { - "issues": "https://github.com/amphp/process/issues", - "source": "https://github.com/amphp/process/tree/v1.1.9" - }, - "funding": [ - { - "url": "https://github.com/amphp", - "type": "github" - } - ], - "time": "2024-12-13T17:38:25+00:00" - }, - { - "name": "amphp/serialization", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/amphp/serialization.git", - "reference": "693e77b2fb0b266c3c7d622317f881de44ae94a1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/serialization/zipball/693e77b2fb0b266c3c7d622317f881de44ae94a1", - "reference": "693e77b2fb0b266c3c7d622317f881de44ae94a1", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "phpunit/phpunit": "^9 || ^8 || ^7" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Amp\\Serialization\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - }, - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - } - ], - "description": "Serialization tools for IPC and data storage in PHP.", - "homepage": "https://github.com/amphp/serialization", - "keywords": [ - "async", - "asynchronous", - "serialization", - "serialize" - ], - "support": { - "issues": "https://github.com/amphp/serialization/issues", - "source": "https://github.com/amphp/serialization/tree/master" - }, - "time": "2020-03-25T21:39:07+00:00" - }, - { - "name": "amphp/sync", - "version": "v1.4.2", - "source": { - "type": "git", - "url": "https://github.com/amphp/sync.git", - "reference": "85ab06764f4f36d63b1356b466df6111cf4b89cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/sync/zipball/85ab06764f4f36d63b1356b466df6111cf4b89cf", - "reference": "85ab06764f4f36d63b1356b466df6111cf4b89cf", - "shasum": "" - }, - "require": { - "amphp/amp": "^2.2", - "php": ">=7.1" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1.1", - "phpunit/phpunit": "^9 || ^8 || ^7" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions.php", - "src/ConcurrentIterator/functions.php" - ], - "psr-4": { - "Amp\\Sync\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - }, - { - "name": "Stephen Coakley", - "email": "me@stephencoakley.com" - } - ], - "description": "Mutex, Semaphore, and other synchronization tools for Amp.", - "homepage": "https://github.com/amphp/sync", - "keywords": [ - "async", - "asynchronous", - "mutex", - "semaphore", - "synchronization" - ], - "support": { - "issues": "https://github.com/amphp/sync/issues", - "source": "https://github.com/amphp/sync/tree/v1.4.2" - }, - "funding": [ - { - "url": "https://github.com/amphp", - "type": "github" - } - ], - "time": "2021-10-25T18:29:10+00:00" - }, - { - "name": "andrewdalpino/okbloomer", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/andrewdalpino/OkBloomer.git", - "reference": "39321cb515c1e99128d28489b0187120ba7ce84c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/andrewdalpino/OkBloomer/zipball/39321cb515c1e99128d28489b0187120ba7ce84c", - "reference": "39321cb515c1e99128d28489b0187120ba7ce84c", - "shasum": "" - }, - "require": { - "php": ">=7.4" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.0", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "OkBloomer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Andrew DalPino", - "email": "support@andrewdalpino.com", - "homepage": "https://github.com/andrewdalpino", - "role": "Lead Developer" - } - ], - "description": "An autoscaling Bloom filter with ultra-low memory usage for PHP.", - "keywords": [ - "Bloom Filter", - "layered bloom filter", - "scalable bloom filter" - ], - "support": { - "docs": "https://github.com/andrewdalpino/OkBloomer/README.md", - "email": "support@andrewdalpino.com", - "issues": "https://github.com/andrewdalpino/OkBloomer/issues", - "source": "https://github.com/andrewdalpino/OkBloomer" - }, - "funding": [ - { - "url": "https://github.com/sponsors/andrewdalpino", - "type": "github" - } - ], - "time": "2022-01-24T03:41:23+00:00" - }, - { - "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" - }, - { - "name": "psr/log", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", - "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "src" - } - }, - "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/3.0.2" - }, - "time": "2024-09-11T13:17:53+00:00" - }, - { - "name": "rubix/ml", - "version": "2.5.2", - "source": { - "type": "git", - "url": "https://github.com/RubixML/ML.git", - "reference": "59782a24bd09f0faa00e7df335fd58ca288d1eab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/RubixML/ML/zipball/59782a24bd09f0faa00e7df335fd58ca288d1eab", - "reference": "59782a24bd09f0faa00e7df335fd58ca288d1eab", - "shasum": "" - }, - "require": { - "amphp/parallel": "^1.3", - "andrewdalpino/okbloomer": "^1.0", - "ext-json": "*", - "php": ">=7.4", - "psr/log": "^1.1|^2.0|^3.0", - "rubix/tensor": "^3.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.17", - "symfony/polyfill-php82": "^1.27", - "symfony/polyfill-php83": "^1.27", - "wamania/php-stemmer": "^3.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.0", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.0" - }, - "suggest": { - "ext-gd": "For image support", - "ext-mbstring": "For fast multibyte string manipulation", - "ext-svm": "For Support Vector Machine engine (libsvm)", - "ext-tensor": "For fast Matrix/Vector computing" - }, - "type": "library", - "autoload": { - "files": [ - "src/constants.php", - "src/functions.php" - ], - "psr-4": { - "Rubix\\ML\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Andrew DalPino", - "homepage": "https://github.com/andrewdalpino" - }, - { - "name": "Contributors", - "homepage": "https://github.com/RubixML/ML/graphs/contributors" - } - ], - "description": "A high-level machine learning and deep learning library for the PHP language.", - "homepage": "https://rubixml.com", - "keywords": [ - "Algorithm", - "Deep learning", - "Linear regression", - "Neural network", - "Rubix", - "TF-IDF", - "adaboost", - "ai", - "analytics", - "anomaly detection", - "artificial intelligence", - "cart", - "classification", - "classifier", - "clustering", - "cross validation", - "data mining", - "data science", - "dataset", - "dbscan", - "dimensionality reduction", - "ensemble", - "estimator", - "etl", - "feature extraction", - "feature importance", - "feature selection", - "gaussian mixture", - "gbm", - "gmm", - "gradient boost", - "grid search", - "image recognition", - "imputation", - "inference", - "isolation forest", - "k-means", - "k-nearest neighbors", - "kmeans", - "knn", - "local outlier factor", - "loda", - "lof", - "logistic regression", - "machine learning", - "manifold learning", - "mean shift", - "ml", - "mlp", - "multilayer perceptron", - "naive bayes", - "natural language processing", - "nearest neighbors", - "nlp", - "outlier detection", - "php", - "php ai", - "php machine learning", - "php ml", - "prediction", - "predictive modeling", - "random forest", - "ranking", - "recommendation", - "regression", - "regressor", - "ridge", - "rubix ml", - "rubixml", - "softmax", - "supervised learning", - "support vector machine", - "svm", - "t-sne", - "text mining", - "tf idf", - "tsne", - "unsupervised learning" - ], - "support": { - "chat": "https://t.me/RubixML", - "docs": "https://docs.rubixml.com", - "issues": "https://github.com/RubixML/ML/issues", - "source": "https://github.com/RubixML/ML" - }, - "funding": [ - { - "url": "https://github.com/sponsors/andrewdalpino", - "type": "github" - } - ], - "time": "2024-11-09T23:02:27+00:00" - }, - { - "name": "rubix/tensor", - "version": "3.0.5", - "source": { - "type": "git", - "url": "https://github.com/RubixML/Tensor.git", - "reference": "9f0ee170319280dcf081984adccefa8b0e6f06b8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/RubixML/Tensor/zipball/9f0ee170319280dcf081984adccefa8b0e6f06b8", - "reference": "9f0ee170319280dcf081984adccefa8b0e6f06b8", - "shasum": "" - }, - "require": { - "php": ">=7.4" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.0", - "phalcon/zephir": "^0.17", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "autoload": { - "files": [ - "src/constants.php" - ], - "psr-4": { - "Tensor\\": "src/", - "Zephir\\Optimizers\\FunctionCall\\": "optimizers/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Andrew DalPino", - "email": "support@andrewdalpino.com", - "homepage": "https://github.com/andrewdalpino", - "role": "Project Lead" - }, - { - "name": "Contributors", - "homepage": "https://github.com/RubixML/Tensor/graphs/contributors" - } - ], - "description": "A library and extension that provides objects for scientific computing in PHP.", - "homepage": "https://github.com/RubixML/Tensor", - "keywords": [ - "1d convolution", - "2d convolution", - "arithmetic", - "blas", - "computation", - "computing", - "convolution", - "decomposition", - "dot product", - "eigendecomposition", - "eigenvalue", - "eigenvector", - "engineering", - "extension", - "lapack", - "linear algebra", - "math", - "matmul", - "matrix", - "matrix multiplication", - "multithreaded", - "php", - "php extension", - "pseudoinverse", - "scientific computing", - "signal processing", - "singular value decomposition", - "statistics", - "svd", - "tensor", - "trigonometry", - "vector", - "vector norm" - ], - "support": { - "chat": "https://t.me/RubixML", - "email": "support@andrewdalpino.com", - "issues": "https://github.com/RubixML/Tensor/issues", - "source": "https://github.com/RubixML/Tensor" - }, - "funding": [ - { - "url": "https://github.com/andrewdalpino", - "type": "github" - } - ], - "time": "2024-03-15T19:43:50+00:00" - }, - { - "name": "symfony/polyfill-iconv", - "version": "v1.31.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "48becf00c920479ca2e910c22a5a39e5d47ca956" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/48becf00c920479ca2e910c22a5a39e5d47ca956", - "reference": "48becf00c920479ca2e910c22a5a39e5d47ca956", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "provide": { - "ext-iconv": "*" - }, - "suggest": { - "ext-iconv": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Iconv\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Iconv extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "iconv", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-09T11:45:10+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.31.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-09T11:45:10+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.31.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "3833d7255cc303546435cb650316bff708a1c75c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", - "reference": "3833d7255cc303546435cb650316bff708a1c75c", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-09T11:45:10+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.31.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-09T11:45:10+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.31.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "fa2ae56c44f03bed91a39bfc9822e31e7c5c38ce" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/fa2ae56c44f03bed91a39bfc9822e31e7c5c38ce", - "reference": "fa2ae56c44f03bed91a39bfc9822e31e7c5c38ce", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "type": "metapackage", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-09T11:45:10+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.31.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-09T11:45:10+00:00" - }, - { - "name": "symfony/polyfill-php82", - "version": "v1.31.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php82.git", - "reference": "5d2ed36f7734637dacc025f179698031951b1692" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php82/zipball/5d2ed36f7734637dacc025f179698031951b1692", - "reference": "5d2ed36f7734637dacc025f179698031951b1692", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php82\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php82/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-09T11:45:10+00:00" - }, - { - "name": "symfony/polyfill-php83", - "version": "v1.31.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491", - "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php83\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-09T11:45:10+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", - "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", - "shasum": "" - }, - "require": { - "php": ">=7.0.0" - }, - "require-dev": { - "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" - }, - "suggest": { - "ext-intl": "Use Intl for transliterator_transliterate() support" - }, - "type": "library", - "autoload": { - "psr-4": { - "voku\\": "src/voku/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Lars Moelleken", - "homepage": "https://www.moelleken.org/" - } - ], - "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", - "homepage": "https://github.com/voku/portable-ascii", - "keywords": [ - "ascii", - "clean", - "php" - ], - "support": { - "issues": "https://github.com/voku/portable-ascii/issues", - "source": "https://github.com/voku/portable-ascii/tree/2.0.3" - }, - "funding": [ - { - "url": "https://www.paypal.me/moelleken", - "type": "custom" - }, - { - "url": "https://github.com/voku", - "type": "github" - }, - { - "url": "https://opencollective.com/portable-ascii", - "type": "open_collective" - }, - { - "url": "https://www.patreon.com/voku", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", - "type": "tidelift" - } - ], - "time": "2024-11-21T01:49:47+00:00" - }, - { - "name": "voku/portable-utf8", - "version": "6.0.13", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-utf8.git", - "reference": "b8ce36bf26593e5c2e81b1850ef0ffb299d2043f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-utf8/zipball/b8ce36bf26593e5c2e81b1850ef0ffb299d2043f", - "reference": "b8ce36bf26593e5c2e81b1850ef0ffb299d2043f", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "symfony/polyfill-iconv": "~1.0", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.0", - "voku/portable-ascii": "~2.0.0" - }, - "require-dev": { - "phpstan/phpstan": "1.9.*@dev", - "phpstan/phpstan-strict-rules": "1.4.*@dev", - "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0", - "thecodingmachine/phpstan-strict-rules": "1.0.*@dev", - "voku/phpstan-rules": "3.1.*@dev" - }, - "suggest": { - "ext-ctype": "Use Ctype for e.g. hexadecimal digit detection", - "ext-fileinfo": "Use Fileinfo for better binary file detection", - "ext-iconv": "Use iconv for best performance", - "ext-intl": "Use Intl for best performance", - "ext-json": "Use JSON for string detection", - "ext-mbstring": "Use Mbstring for best performance" - }, - "type": "library", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "voku\\": "src/voku/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "(Apache-2.0 or GPL-2.0)" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Hamid Sarfraz", - "homepage": "http://pageconfig.com/" - }, - { - "name": "Lars Moelleken", - "homepage": "http://www.moelleken.org/" - } - ], - "description": "Portable UTF-8 library - performance optimized (unicode) string functions for php.", - "homepage": "https://github.com/voku/portable-utf8", - "keywords": [ - "UTF", - "clean", - "php", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "issues": "https://github.com/voku/portable-utf8/issues", - "source": "https://github.com/voku/portable-utf8/tree/6.0.13" - }, - "funding": [ - { - "url": "https://www.paypal.me/moelleken", - "type": "custom" - }, - { - "url": "https://github.com/voku", - "type": "github" - }, - { - "url": "https://opencollective.com/portable-utf8", - "type": "open_collective" - }, - { - "url": "https://www.patreon.com/voku", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/voku/portable-utf8", - "type": "tidelift" - } - ], - "time": "2023-03-08T08:35:38+00:00" - }, - { - "name": "wamania/php-stemmer", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/wamania/php-stemmer.git", - "reference": "8ea32b6fa27d6888587fe860b64a8763525c5a66" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wamania/php-stemmer/zipball/8ea32b6fa27d6888587fe860b64a8763525c5a66", - "reference": "8ea32b6fa27d6888587fe860b64a8763525c5a66", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "voku/portable-utf8": "^5.4|^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Wamania\\Snowball\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Wamania", - "homepage": "http://wamania.com" - } - ], - "description": "Native PHP Stemmer", - "keywords": [ - "php", - "porter", - "stemmer" - ], - "support": { - "issues": "https://github.com/wamania/php-stemmer/issues", - "source": "https://github.com/wamania/php-stemmer/tree/v3.0.1" - }, - "time": "2023-05-11T10:50:27+00:00" - } - ], - "packages-dev": [ - { - "name": "nextcloud/ocp", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/nextcloud-deps/ocp.git", - "reference": "5fef60af2abc2ac68393358765623b4c5e4789d6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/5fef60af2abc2ac68393358765623b4c5e4789d6", - "reference": "5fef60af2abc2ac68393358765623b4c5e4789d6", - "shasum": "" - }, - "require": { - "php": "~8.1 || ~8.2 || ~8.3 || ~8.4", - "psr/clock": "^1.0", - "psr/container": "^2.0.2", - "psr/event-dispatcher": "^1.0", - "psr/log": "^3.0.2" - }, - "default-branch": true, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "32.0.0-dev" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "AGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Christoph Wurst", - "email": "christoph@winzerhof-wurst.at" - }, - { - "name": "Joas Schilling", - "email": "coding@schilljs.com" - } - ], - "description": "Composer package containing Nextcloud's public OCP API and the unstable NCU API", - "support": { - "issues": "https://github.com/nextcloud-deps/ocp/issues", - "source": "https://github.com/nextcloud-deps/ocp/tree/master" - }, - "time": "2025-01-23T08:35:04+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": "symfony/console", - "version": "v6.4.17", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "799445db3f15768ecc382ac5699e6da0520a0a04" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/799445db3f15768ecc382ac5699e6da0520a0a04", - "reference": "799445db3f15768ecc382ac5699e6da0520a0a04", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0|^7.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command-line", - "console", - "terminal" - ], - "support": { - "source": "https://github.com/symfony/console/tree/v6.4.17" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-12-07T12:07:30+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.5.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.5-dev" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-25T14:20:29+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.31.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", - "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-09T11:45:10+00:00" - }, - { - "name": "symfony/process", - "version": "v6.4.15", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "3cb242f059c14ae08591c5c4087d1fe443564392" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/3cb242f059c14ae08591c5c4087d1fe443564392", - "reference": "3cb242f059c14ae08591c5c4087d1fe443564392", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v6.4.15" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-11-06T14:19:14+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.5.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", - "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.5|^3" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.5-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-25T14:20:29+00:00" - }, - { - "name": "symfony/string", - "version": "v6.4.15", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f", - "reference": "73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.5" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/intl": "^6.2|^7.0", - "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^5.4|^6.0|^7.0" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.4.15" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-11-13T13:31:12+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": { - "nextcloud/ocp": 20 - }, - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": ">=8.1", - "ext-json": "*", - "ext-pdo": "*" - }, - "platform-dev": {}, - "platform-overrides": { - "php": "8.1.0" - }, - "plugin-api-version": "2.6.0" -} From d972a81aeecd89d414d3cbe6251d995f0182adef Mon Sep 17 00:00:00 2001 From: QuentinLemCode Date: Sun, 9 Feb 2025 23:18:01 +0100 Subject: [PATCH 20/20] Fix CI by passing the github repositoy --- .github/workflows/files-scan-test.yml | 1 + src/model-manager.js | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/files-scan-test.yml b/.github/workflows/files-scan-test.yml index af7a5e91d..b16f84773 100644 --- a/.github/workflows/files-scan-test.yml +++ b/.github/workflows/files-scan-test.yml @@ -138,6 +138,7 @@ jobs: - name: Run scan env: GITHUB_REF: ${{ github.ref }} + GITHUB_REPOSITORY: ${{ github.repository }} run: | ./occ files:scan admin -vvv rm data/admin/files/res/alpine.JPG diff --git a/src/model-manager.js b/src/model-manager.js index fe20c27ab..73740f105 100644 --- a/src/model-manager.js +++ b/src/model-manager.js @@ -3,10 +3,11 @@ const path = require('path') const tar = require('tar') const VERSION = require('../package.json').version const ref = process.env.GITHUB_REF ? process.env.GITHUB_REF : `refs/tags/v${VERSION}` +const repository = process.env.GITHUB_REPOSITORY ?? 'nextcloud/recognize' exports.downloadAll = async () => { await download( - `https://github.com/nextcloud/recognize/archive/${ref}.tar.gz`, + `https://github.com/${repository}/archive/${ref}.tar.gz`, path.resolve(__dirname, '..'), { filename: 'recognize.tar.gz' } )