From 4f5a8e3180bd84b10a1e2dd21b03bad16c08b249 Mon Sep 17 00:00:00 2001 From: "J. King" Date: Fri, 27 Sep 2019 22:38:03 -0400 Subject: [PATCH 01/12] Make media type checking more robust --- lib/Misc/HTTP.php | 22 ++++++++++++++++++++++ lib/REST/Fever/API.php | 8 +++++--- lib/REST/NextCloudNews/V1_2.php | 13 +++++-------- lib/REST/TinyTinyRSS/API.php | 3 ++- tests/cases/Misc/TestHTTP.php | 32 ++++++++++++++++++++++++++++++++ tests/phpunit.dist.xml | 1 + 6 files changed, 67 insertions(+), 12 deletions(-) create mode 100644 lib/Misc/HTTP.php create mode 100644 tests/cases/Misc/TestHTTP.php diff --git a/lib/Misc/HTTP.php b/lib/Misc/HTTP.php new file mode 100644 index 00000000..78a817b7 --- /dev/null +++ b/lib/Misc/HTTP.php @@ -0,0 +1,22 @@ +getHeaderLine("Content-Type") ?? ""; + foreach ($type as $t) { + $pattern = "/^".preg_quote(trim($t), "/")."($|;|,)/i"; + if (preg_match($pattern, $header)) { + return true; + } + } + return false; + } +} diff --git a/lib/REST/Fever/API.php b/lib/REST/Fever/API.php index 1401d63a..a83b3e1a 100644 --- a/lib/REST/Fever/API.php +++ b/lib/REST/Fever/API.php @@ -11,6 +11,7 @@ use JKingWeb\Arsse\Context\Context; use JKingWeb\Arsse\Misc\ValueInfo as V; use JKingWeb\Arsse\Misc\Date; use JKingWeb\Arsse\Db\ExceptionInput; +use JKingWeb\Arsse\Misc\HTTP; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ResponseInterface; use Zend\Diactoros\Response\JsonResponse; @@ -21,6 +22,7 @@ class API extends \JKingWeb\Arsse\REST\AbstractHandler { const LEVEL = 3; const GENERIC_ICON_TYPE = "image/png;base64"; const GENERIC_ICON_DATA = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMjHxIGmVAAAADUlEQVQYV2NgYGBgAAAABQABijPjAAAAAABJRU5ErkJggg=="; + const ACCEPTED_TYPE = "application/x-www-form-urlencoded"; // GET parameters for which we only check presence: these will be converted to booleans const PARAM_BOOL = ["groups", "feeds", "items", "favicons", "links", "unread_item_ids", "saved_item_ids"]; @@ -66,11 +68,11 @@ class API extends \JKingWeb\Arsse\REST\AbstractHandler { case "OPTIONS": return new EmptyResponse(204, [ 'Allow' => "POST", - 'Accept' => "application/x-www-form-urlencoded", + 'Accept' => self::ACCEPTED_TYPE, ]); case "POST": - if (strlen($req->getHeaderLine("Content-Type")) && $req->getHeaderLine("Content-Type") !== "application/x-www-form-urlencoded") { - return new EmptyResponse(415, ['Accept' => "application/x-www-form-urlencoded"]); + if (!HTTP::matchType($req, self::ACCEPTED_TYPE, "")) { + return new EmptyResponse(415, ['Accept' => self::ACCEPTED_TYPE]); } $out = [ 'api_version' => self::LEVEL, diff --git a/lib/REST/NextCloudNews/V1_2.php b/lib/REST/NextCloudNews/V1_2.php index f64d9cb2..29652d17 100644 --- a/lib/REST/NextCloudNews/V1_2.php +++ b/lib/REST/NextCloudNews/V1_2.php @@ -13,6 +13,7 @@ use JKingWeb\Arsse\Misc\ValueInfo; use JKingWeb\Arsse\AbstractException; use JKingWeb\Arsse\Db\ExceptionInput; use JKingWeb\Arsse\Feed\Exception as FeedException; +use JKingWeb\Arsse\Misc\HTTP; use JKingWeb\Arsse\REST\Exception404; use JKingWeb\Arsse\REST\Exception405; use Psr\Http\Message\ServerRequestInterface; @@ -23,6 +24,7 @@ use Zend\Diactoros\Response\EmptyResponse; class V1_2 extends \JKingWeb\Arsse\REST\AbstractHandler { const REALM = "NextCloud News API v1-2"; const VERSION = "11.0.5"; + const ACCEPTED_TYPE = "application/json"; protected $dateFormat = "unix"; @@ -90,15 +92,10 @@ class V1_2 extends \JKingWeb\Arsse\REST\AbstractHandler { } // normalize the input $data = (string) $req->getBody(); - $type = ""; - if ($req->hasHeader("Content-Type")) { - $type = $req->getHeader("Content-Type"); - $type = array_pop($type); - } if ($data) { // if the entity body is not JSON according to content type, return "415 Unsupported Media Type" - if (!preg_match("<^application/json\b|^$>", $type)) { - return new EmptyResponse(415, ['Accept' => "application/json"]); + if (!HTTP::matchType($req, "", self::ACCEPTED_TYPE)) { + return new EmptyResponse(415, ['Accept' => self::ACCEPTED_TYPE]); } $data = @json_decode($data, true); if (json_last_error() !== \JSON_ERROR_NONE) { @@ -269,7 +266,7 @@ class V1_2 extends \JKingWeb\Arsse\REST\AbstractHandler { } return new EmptyResponse(204, [ 'Allow' => implode(",", $allowed), - 'Accept' => "application/json", + 'Accept' => self::ACCEPTED_TYPE, ]); } else { // if the path is not supported, return 404 diff --git a/lib/REST/TinyTinyRSS/API.php b/lib/REST/TinyTinyRSS/API.php index 045710cf..56a24374 100644 --- a/lib/REST/TinyTinyRSS/API.php +++ b/lib/REST/TinyTinyRSS/API.php @@ -43,6 +43,7 @@ class API extends \JKingWeb\Arsse\REST\AbstractHandler { const CAT_NOT_SPECIAL = -3; const CAT_ALL = -4; // valid input + const ACCEPTED_TYPES = ["application/json", "text/json"]; const VALID_INPUT = [ 'op' => ValueInfo::T_STRING, // the function ("operation") to perform 'sid' => ValueInfo::T_STRING, // session ID @@ -99,7 +100,7 @@ class API extends \JKingWeb\Arsse\REST\AbstractHandler { // respond to OPTIONS rquests; the response is a fib, as we technically accept any type or method return new EmptyResponse(204, [ 'Allow' => "POST", - 'Accept' => "application/json, text/json", + 'Accept' => implode(", ", self::ACCEPTED_TYPES), ]); } $data = (string) $req->getBody(); diff --git a/tests/cases/Misc/TestHTTP.php b/tests/cases/Misc/TestHTTP.php new file mode 100644 index 00000000..5d6f4656 --- /dev/null +++ b/tests/cases/Misc/TestHTTP.php @@ -0,0 +1,32 @@ +withHeader("Content-Type", $header); + $this->assertSame($exp, HTTP::matchType($msg, ...$types)); + $msg = (new \Zend\Diactoros\Response)->withHeader("Content-Type", $header); + $this->assertSame($exp, HTTP::matchType($msg, ...$types)); + } + + public function provideMediaTypes() { + return [ + ["application/json", ["application/json"], true], + ["APPLICATION/JSON", ["application/json"], true], + ["text/JSON", ["application/json", "text/json"], true], + ["text/json; charset=utf-8", ["application/json", "text/json"], true], + ["", ["application/json"], false], + ["", ["application/json", ""], true], + ]; + } +} diff --git a/tests/phpunit.dist.xml b/tests/phpunit.dist.xml index 5489f948..28d2f899 100644 --- a/tests/phpunit.dist.xml +++ b/tests/phpunit.dist.xml @@ -47,6 +47,7 @@ cases/Misc/TestDate.php cases/Misc/TestContext.php cases/Misc/TestURL.php + cases/Misc/TestHTTP.php cases/User/TestInternal.php From 1809fb254e7cadb43ca6319fa656a9de8ff26d93 Mon Sep 17 00:00:00 2001 From: "J. King" Date: Fri, 27 Sep 2019 22:54:33 -0400 Subject: [PATCH 02/12] Deal with trailing whitespace in media types --- lib/Misc/HTTP.php | 2 +- tests/cases/Misc/TestHTTP.php | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/Misc/HTTP.php b/lib/Misc/HTTP.php index 78a817b7..15bfce9b 100644 --- a/lib/Misc/HTTP.php +++ b/lib/Misc/HTTP.php @@ -12,7 +12,7 @@ class HTTP { public static function matchType(MessageInterface $msg, string ...$type): bool { $header = $msg->getHeaderLine("Content-Type") ?? ""; foreach ($type as $t) { - $pattern = "/^".preg_quote(trim($t), "/")."($|;|,)/i"; + $pattern = "/^".preg_quote(trim($t), "/")."\s*($|;|,)/i"; if (preg_match($pattern, $header)) { return true; } diff --git a/tests/cases/Misc/TestHTTP.php b/tests/cases/Misc/TestHTTP.php index 5d6f4656..70d1316b 100644 --- a/tests/cases/Misc/TestHTTP.php +++ b/tests/cases/Misc/TestHTTP.php @@ -27,6 +27,7 @@ class TestHTTP extends \JKingWeb\Arsse\Test\AbstractTest { ["text/json; charset=utf-8", ["application/json", "text/json"], true], ["", ["application/json"], false], ["", ["application/json", ""], true], + ["application/json ;", ["application/json"], true], ]; } } From 737dd9f6b8965ad14e2fbe50986f03eb575db478 Mon Sep 17 00:00:00 2001 From: "J. King" Date: Sun, 1 Dec 2019 15:00:28 -0500 Subject: [PATCH 03/12] Fix foreign keys in MySQL --- CHANGELOG | 6 ++++ UPGRADING | 10 ++++++ lib/Database.php | 6 ++-- sql/MySQL/5.sql | 49 +++++++++++++++++++++++++++++ sql/PostgreSQL/5.sql | 7 +++++ sql/SQLite3/5.sql | 7 +++++ tests/lib/DatabaseDrivers/MySQL.php | 4 +++ 7 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 sql/MySQL/5.sql create mode 100644 sql/PostgreSQL/5.sql create mode 100644 sql/SQLite3/5.sql diff --git a/CHANGELOG b/CHANGELOG index a381c822..ae28fc0e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,9 @@ +Version 0.8.2 (????-??-??) +========================== + +Bug fixes: +- Enforce foreign key constraints in MySQL + Version 0.8.1 (2019-10-28) ========================== diff --git a/UPGRADING b/UPGRADING index c96f41c6..e0fa200e 100644 --- a/UPGRADING +++ b/UPGRADING @@ -10,6 +10,15 @@ usually prudent: - If installing from source, update dependencies with: `composer install -o --no-dev` + +Upgrading from 0.8.1 to 0.8.2 +============================= + +- The database schema has changed from rev5 to rev6; if upgrading the database + manually, apply the 5.sql file. MySQL databases may need manual + intervention to ensure foreign key constraints are not violated + + Upgrading from 0.7.1 to 0.8.0 ============================= @@ -22,6 +31,7 @@ Upgrading from 0.7.1 to 0.8.0 - zendframework/zend-diactoros (version 2.x) - zendframework/zend-httphandlerrunner + Upgrading from 0.5.1 to 0.6.0 ============================= diff --git a/lib/Database.php b/lib/Database.php index 4036f91d..bcca3eb0 100644 --- a/lib/Database.php +++ b/lib/Database.php @@ -39,7 +39,7 @@ use JKingWeb\Arsse\Misc\URL; */ class Database { /** The version number of the latest schema the interface is aware of */ - const SCHEMA_VERSION = 5; + const SCHEMA_VERSION = 6; /** The size of a set of values beyond which the set will be embedded into the query text */ const LIMIT_SET_SIZE = 25; /** The length of a string in an embedded set beyond which a parameter placeholder will be used for the string */ @@ -50,7 +50,7 @@ class Database { const ASSOC_ADD = 1; /** Makes tag/label association change operations replace members */ const ASSOC_REPLACE = 2; - /** A map database driver short-names and their associated class names */ + /** A map of database driver short-names and their associated class names */ const DRIVER_NAMES = [ 'sqlite3' => \JKingWeb\Arsse\Db\SQLite3\Driver::class, 'postgresql' => \JKingWeb\Arsse\Db\PostgreSQL\Driver::class, @@ -520,7 +520,7 @@ class Database { if (!ValueInfo::id($id)) { throw new Db\ExceptionInput("typeViolation", ["action" => __FUNCTION__, "field" => "folder", 'type' => "int > 0"]); } - $changes = $this->db->prepare("WITH RECURSIVE folders(folder) as (SELECT ? union select id from arsse_folders join folders on parent = folder) DELETE FROM arsse_folders where owner = ? and id in (select folder from folders)", "int", "str")->run($id, $user)->changes(); + $changes = $this->db->prepare("DELETE FROM arsse_folders where owner = ? and id = ?", "str", "int")->run($user, $id)->changes(); if (!$changes) { throw new Db\ExceptionInput("subjectMissing", ["action" => __FUNCTION__, "field" => "folder", 'id' => $id]); } diff --git a/sql/MySQL/5.sql b/sql/MySQL/5.sql new file mode 100644 index 00000000..7e8ef7e8 --- /dev/null +++ b/sql/MySQL/5.sql @@ -0,0 +1,49 @@ +-- SPDX-License-Identifier: MIT +-- Copyright 2017 J. King, Dustin Wilson et al. +-- See LICENSE and AUTHORS files for details + +-- Please consult the SQLite 3 schemata for commented version + +-- Correct character set and collation of sessions table +alter table arsse_sessions default character set utf8mb4 collate utf8mb4_unicode_ci; +alter table arsse_sessions convert to character set utf8mb4 collate utf8mb4_unicode_ci; + +-- Make integer foreign key referrers unsigned to match serial-type keys +alter table arsse_folders modify parent bigint unsigned; +alter table arsse_subscriptions modify feed bigint unsigned not null; +alter table arsse_subscriptions modify folder bigint unsigned; +alter table arsse_articles modify feed bigint unsigned not null; +alter table arsse_enclosures modify article bigint unsigned not null; +alter table arsse_marks modify article bigint unsigned not null; +alter table arsse_marks modify subscription bigint unsigned not null; +alter table arsse_editions modify article bigint unsigned not null; +alter table arsse_categories modify article bigint unsigned not null; +alter table arsse_label_members modify label bigint unsigned not null; +alter table arsse_label_members modify article bigint unsigned not null; +alter table arsse_label_members modify subscription bigint unsigned not null; +alter table arsse_tag_members modify tag bigint unsigned not null; +alter table arsse_tag_members modify subscription bigint unsigned not null; + +-- Fix foreign key constraints +alter table arsse_folders add foreign key(owner) references arsse_users(id) on delete cascade on update cascade; +alter table arsse_folders add foreign key(parent) references arsse_folders(id) on delete cascade; +alter table arsse_subscriptions add foreign key(owner) references arsse_users(id) on delete cascade on update cascade; +alter table arsse_subscriptions add foreign key(feed) references arsse_feeds(id) on delete cascade; +alter table arsse_subscriptions add foreign key(folder) references arsse_folders(id) on delete cascade; +alter table arsse_articles add foreign key(feed) references arsse_feeds(id) on delete cascade; +alter table arsse_enclosures add foreign key(article) references arsse_articles(id) on delete cascade; +alter table arsse_marks add foreign key(article) references arsse_articles(id) on delete cascade; +alter table arsse_marks add foreign key(subscription) references arsse_subscriptions(id) on delete cascade; +alter table arsse_editions add foreign key(article) references arsse_articles(id) on delete cascade; +alter table arsse_categories add foreign key(article) references arsse_articles(id) on delete cascade; +alter table arsse_sessions add foreign key("user") references arsse_users(id) on delete cascade on update cascade; +alter table arsse_labels add foreign key(owner) references arsse_users(id) on delete cascade on update cascade; +alter table arsse_label_members add foreign key(label) references arsse_labels(id) on delete cascade; +alter table arsse_label_members add foreign key(article) references arsse_articles(id) on delete cascade; +alter table arsse_label_members add foreign key(subscription) references arsse_subscriptions(id) on delete cascade; +alter table arsse_tags add foreign key(owner) references arsse_users(id) on delete cascade on update cascade; +alter table arsse_tag_members add foreign key(tag) references arsse_tags(id) on delete cascade; +alter table arsse_tag_members add foreign key(subscription) references arsse_subscriptions(id) on delete cascade; +alter table arsse_tokens add foreign key("user") references arsse_users(id) on delete cascade on update cascade; + +update arsse_meta set value = '6' where "key" = 'schema_version'; diff --git a/sql/PostgreSQL/5.sql b/sql/PostgreSQL/5.sql new file mode 100644 index 00000000..ac48a432 --- /dev/null +++ b/sql/PostgreSQL/5.sql @@ -0,0 +1,7 @@ +-- SPDX-License-Identifier: MIT +-- Copyright 2017 J. King, Dustin Wilson et al. +-- See LICENSE and AUTHORS files for details + +-- Please consult the SQLite 3 schemata for commented version + +update arsse_meta set value = '6' where "key" = 'schema_version'; diff --git a/sql/SQLite3/5.sql b/sql/SQLite3/5.sql new file mode 100644 index 00000000..24c5b914 --- /dev/null +++ b/sql/SQLite3/5.sql @@ -0,0 +1,7 @@ +-- SPDX-License-Identifier: MIT +-- Copyright 2017 J. King, Dustin Wilson et al. +-- See LICENSE and AUTHORS files for details + +-- set version marker +pragma user_version = 6; +update arsse_meta set value = '6' where "key" = 'schema_version'; diff --git a/tests/lib/DatabaseDrivers/MySQL.php b/tests/lib/DatabaseDrivers/MySQL.php index 048266d4..332f3d99 100644 --- a/tests/lib/DatabaseDrivers/MySQL.php +++ b/tests/lib/DatabaseDrivers/MySQL.php @@ -48,6 +48,7 @@ trait MySQL { $db->query("UNLOCK TABLES; ROLLBACK"); } catch (\Throwable $e) { } + $db->query("SET FOREIGN_KEY_CHECKS=0"); foreach (self::dbTableList($db) as $table) { if ($table === "arsse_meta") { $db->query("DELETE FROM $table where `key` <> 'schema_version'"); @@ -56,6 +57,7 @@ trait MySQL { } $db->query("ALTER TABLE $table auto_increment = 1"); } + $db->query("SET FOREIGN_KEY_CHECKS=1"); foreach ($afterStatements as $st) { $db->query($st); } @@ -67,9 +69,11 @@ trait MySQL { $db->query("UNLOCK TABLES; ROLLBACK"); } catch (\Throwable $e) { } + $db->query("SET FOREIGN_KEY_CHECKS=0"); foreach (self::dbTableList($db) as $table) { $db->query("DROP TABLE IF EXISTS $table"); } + $db->query("SET FOREIGN_KEY_CHECKS=1"); foreach ($afterStatements as $st) { $db->query($st); } From 568e6e4660b4fd362d169b4a258b217f377e7015 Mon Sep 17 00:00:00 2001 From: "J. King" Date: Sun, 1 Dec 2019 22:29:48 -0500 Subject: [PATCH 04/12] Delete dangling MySQL records when updating MySQL seems to reject queries involving arsse_folders.parent and arsse_subscription.folder, though they appear to be valid. More testing is required. --- UPGRADING | 3 +-- sql/MySQL/5.sql | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/UPGRADING b/UPGRADING index e0fa200e..a78867b1 100644 --- a/UPGRADING +++ b/UPGRADING @@ -15,8 +15,7 @@ Upgrading from 0.8.1 to 0.8.2 ============================= - The database schema has changed from rev5 to rev6; if upgrading the database - manually, apply the 5.sql file. MySQL databases may need manual - intervention to ensure foreign key constraints are not violated + manually, apply the 5.sql file Upgrading from 0.7.1 to 0.8.0 diff --git a/sql/MySQL/5.sql b/sql/MySQL/5.sql index 7e8ef7e8..2fe87f34 100644 --- a/sql/MySQL/5.sql +++ b/sql/MySQL/5.sql @@ -8,6 +8,33 @@ alter table arsse_sessions default character set utf8mb4 collate utf8mb4_unicode_ci; alter table arsse_sessions convert to character set utf8mb4 collate utf8mb4_unicode_ci; +-- Ensure referential integrity +delete from arsse_folders where + owner not in (select id from arsse_users) or + (parent is not null and parent not in (select id from arsse_folders)); +delete from arsse_subscriptions where + owner not in (select id from arsse_users) or + feed not in (select id from arsse_feeds) or + (folder is not null and folder not in (select id from arsse_folders)); +delete from arsse_articles where feed not in (select id from arsse_feeds); +delete from arsse_enclosures where article not in (select id from arsse_articles); +delete from arsse_marks where + article not in (select id from arsse_articles) or + subscription not in (select id from arsse_subscriptions); +delete from arsse_editions where article not in (select id from arsse_articles); +delete from arsse_categories where article not in (select id from arsse_articles); +delete from arsse_sessions where "user" not in (select id from arsse_users); +delete from arsse_labels where owner not in (select id from arsse_users); +delete from arsse_label_members where + label not in (select id from arsse_labels) or + article not in (select id from arsse_articles) or + subscription not in (select id from arsse_subscriptions); +delete from arsse_tags where owner not in (select id from arsse_users); +delete from arsse_tag_members where + tag not in (select id from arsse_tags) or + subscription not in (select id from arsse_subscriptions); +delete from arsse_tokens where "user" not in (select id from arsse_users); + -- Make integer foreign key referrers unsigned to match serial-type keys alter table arsse_folders modify parent bigint unsigned; alter table arsse_subscriptions modify feed bigint unsigned not null; From f4b08170bfdb9458a3441df5de9223b2627d4cb1 Mon Sep 17 00:00:00 2001 From: "J. King" Date: Mon, 2 Dec 2019 16:38:41 -0500 Subject: [PATCH 05/12] Fix MySQL schema --- sql/MySQL/5.sql | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sql/MySQL/5.sql b/sql/MySQL/5.sql index 2fe87f34..6d3defe5 100644 --- a/sql/MySQL/5.sql +++ b/sql/MySQL/5.sql @@ -9,9 +9,10 @@ alter table arsse_sessions default character set utf8mb4 collate utf8mb4_unicode alter table arsse_sessions convert to character set utf8mb4 collate utf8mb4_unicode_ci; -- Ensure referential integrity -delete from arsse_folders where - owner not in (select id from arsse_users) or - (parent is not null and parent not in (select id from arsse_folders)); +with valid as (select id from arsse_folders) + delete from arsse_folders where + owner not in (select id from arsse_users) or + (parent is not null and parent not in (select id from valid)); delete from arsse_subscriptions where owner not in (select id from arsse_users) or feed not in (select id from arsse_feeds) or From 15de8c23201c066ce6a3755b9a0efee7c0cff25f Mon Sep 17 00:00:00 2001 From: "J. King" Date: Mon, 2 Dec 2019 17:14:03 -0500 Subject: [PATCH 06/12] Fix PostgreSQL connection error message --- lib/Db/PostgreSQL/Driver.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Db/PostgreSQL/Driver.php b/lib/Db/PostgreSQL/Driver.php index d1ed5584..94497ddf 100644 --- a/lib/Db/PostgreSQL/Driver.php +++ b/lib/Db/PostgreSQL/Driver.php @@ -185,7 +185,7 @@ class Driver extends \JKingWeb\Arsse\Db\AbstractDriver { $dsn = $this->makeconnectionString(false, $user, $pass, $db, $host, $port, $service); set_error_handler(function(int $code, string $msg) { $msg = substr($msg, 62); - throw new Exception("connectionFailure", ["PostgreSQL", $msg]); + throw new Exception("connectionFailure", ['engine' => "PostgreSQL", 'message' => $msg]); }); try { $this->db = pg_connect($dsn, \PGSQL_CONNECT_FORCE_NEW); From e3144ecbf52223cc563a8ab58307d188708e86c9 Mon Sep 17 00:00:00 2001 From: "J. King" Date: Mon, 2 Dec 2019 19:12:48 -0500 Subject: [PATCH 07/12] Update tool dependencies --- vendor-bin/csfixer/composer.lock | 347 ++++++++++++++++++------------- vendor-bin/daux/composer.lock | 213 ++++++++++--------- vendor-bin/phpunit/composer.lock | 70 +++---- vendor-bin/robo/composer.lock | 215 +++++++++---------- 4 files changed, 449 insertions(+), 396 deletions(-) diff --git a/vendor-bin/csfixer/composer.lock b/vendor-bin/csfixer/composer.lock index 93447597..6bf072a5 100644 --- a/vendor-bin/csfixer/composer.lock +++ b/vendor-bin/csfixer/composer.lock @@ -70,24 +70,24 @@ }, { "name": "composer/xdebug-handler", - "version": "1.3.3", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f" + "reference": "cbe23383749496fe0f373345208b79568e4bc248" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/46867cbf8ca9fb8d60c506895449eb799db1184f", - "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/cbe23383749496fe0f373345208b79568e4bc248", + "reference": "cbe23383749496fe0f373345208b79568e4bc248", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0", + "php": "^5.3.2 || ^7.0 || ^8.0", "psr/log": "^1.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" }, "type": "library", "autoload": { @@ -105,12 +105,12 @@ "email": "john-stevenson@blueyonder.co.uk" } ], - "description": "Restarts a process without xdebug.", + "description": "Restarts a process without Xdebug.", "keywords": [ "Xdebug", "performance" ], - "time": "2019-05-27T17:52:04+00:00" + "time": "2019-11-06T16:40:04+00:00" }, { "name": "doctrine/annotations", @@ -182,16 +182,16 @@ }, { "name": "doctrine/lexer", - "version": "1.1.0", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "e17f069ede36f7534b95adec71910ed1b49c74ea" + "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/e17f069ede36f7534b95adec71910ed1b49c74ea", - "reference": "e17f069ede36f7534b95adec71910ed1b49c74ea", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", + "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", "shasum": "" }, "require": { @@ -205,7 +205,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -240,20 +240,20 @@ "parser", "php" ], - "time": "2019-07-30T19:33:28+00:00" + "time": "2019-10-30T14:39:59+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v2.15.3", + "version": "v2.16.1", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "705490b0f282f21017d73561e9498d2b622ee34c" + "reference": "c8afb599858876e95e8ebfcd97812d383fa23f02" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/705490b0f282f21017d73561e9498d2b622ee34c", - "reference": "705490b0f282f21017d73561e9498d2b622ee34c", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/c8afb599858876e95e8ebfcd97812d383fa23f02", + "reference": "c8afb599858876e95e8ebfcd97812d383fa23f02", "shasum": "" }, "require": { @@ -264,15 +264,15 @@ "ext-tokenizer": "*", "php": "^5.6 || ^7.0", "php-cs-fixer/diff": "^1.3", - "symfony/console": "^3.4.17 || ^4.1.6", - "symfony/event-dispatcher": "^3.0 || ^4.0", - "symfony/filesystem": "^3.0 || ^4.0", - "symfony/finder": "^3.0 || ^4.0", - "symfony/options-resolver": "^3.0 || ^4.0", + "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0", + "symfony/event-dispatcher": "^3.0 || ^4.0 || ^5.0", + "symfony/filesystem": "^3.0 || ^4.0 || ^5.0", + "symfony/finder": "^3.0 || ^4.0 || ^5.0", + "symfony/options-resolver": "^3.0 || ^4.0 || ^5.0", "symfony/polyfill-php70": "^1.0", "symfony/polyfill-php72": "^1.4", - "symfony/process": "^3.0 || ^4.0", - "symfony/stopwatch": "^3.0 || ^4.0" + "symfony/process": "^3.0 || ^4.0 || ^5.0", + "symfony/stopwatch": "^3.0 || ^4.0 || ^5.0" }, "require-dev": { "johnkary/phpunit-speedtrap": "^1.1 || ^2.0 || ^3.0", @@ -285,8 +285,8 @@ "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.1", "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.1", "phpunitgoodpractices/traits": "^1.8", - "symfony/phpunit-bridge": "^4.3", - "symfony/yaml": "^3.0 || ^4.0" + "symfony/phpunit-bridge": "^4.3 || ^5.0", + "symfony/yaml": "^3.0 || ^4.0 || ^5.0" }, "suggest": { "ext-mbstring": "For handling non-UTF8 characters in cache signature.", @@ -329,7 +329,7 @@ } ], "description": "A tool to automatically fix PHP code style", - "time": "2019-08-31T12:51:54+00:00" + "time": "2019-11-25T22:10:32+00:00" }, { "name": "paragonie/random_compat", @@ -477,17 +477,63 @@ "time": "2017-02-14T16:28:37+00:00" }, { - "name": "psr/log", - "version": "1.1.0", + "name": "psr/event-dispatcher", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "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" + ], + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/log", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801", + "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801", "shasum": "" }, "require": { @@ -496,7 +542,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { @@ -521,44 +567,45 @@ "psr", "psr-3" ], - "time": "2018-11-20T15:27:04+00:00" + "time": "2019-11-01T11:05:21+00:00" }, { "name": "symfony/console", - "version": "v4.3.5", + "version": "v5.0.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "929ddf360d401b958f611d44e726094ab46a7369" + "reference": "dae5ef273d700771168ab889d9f8a19b2d206656" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/929ddf360d401b958f611d44e726094ab46a7369", - "reference": "929ddf360d401b958f611d44e726094ab46a7369", + "url": "https://api.github.com/repos/symfony/console/zipball/dae5ef273d700771168ab889d9f8a19b2d206656", + "reference": "dae5ef273d700771168ab889d9f8a19b2d206656", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": "^7.2.5", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php73": "^1.8", - "symfony/service-contracts": "^1.1" + "symfony/service-contracts": "^1.1|^2" }, "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3", - "symfony/process": "<3.3" + "symfony/dependency-injection": "<4.4", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" }, "provide": { "psr/log-implementation": "1.0" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0", - "symfony/var-dumper": "^4.3" + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" }, "suggest": { "psr/log": "For using the console logger", @@ -569,7 +616,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -596,41 +643,41 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2019-10-07T12:36:49+00:00" + "time": "2019-12-01T10:51:15+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.3.5", + "version": "v5.0.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6229f58993e5a157f6096fc7145c0717d0be8807" + "reference": "7b738a51645e10f864cc25c24d232fb03f37b475" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6229f58993e5a157f6096fc7145c0717d0be8807", - "reference": "6229f58993e5a157f6096fc7145c0717d0be8807", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7b738a51645e10f864cc25c24d232fb03f37b475", + "reference": "7b738a51645e10f864cc25c24d232fb03f37b475", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/event-dispatcher-contracts": "^1.1" + "php": "^7.2.5", + "symfony/event-dispatcher-contracts": "^2" }, "conflict": { - "symfony/dependency-injection": "<3.4" + "symfony/dependency-injection": "<4.4" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "symfony/event-dispatcher-implementation": "2.0" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/http-foundation": "^3.4|^4.0", - "symfony/service-contracts": "^1.1", - "symfony/stopwatch": "~3.4|~4.0" + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/stopwatch": "^4.4|^5.0" }, "suggest": { "symfony/dependency-injection": "", @@ -639,7 +686,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -666,33 +713,33 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2019-10-01T16:40:32+00:00" + "time": "2019-11-18T17:27:11+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.7", + "version": "v2.0.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18" + "reference": "af23c2584d4577d54661c434446fb8fbed6025dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c43ab685673fb6c8d84220c77897b1d6cdbe1d18", - "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/af23c2584d4577d54661c434446fb8fbed6025dd", + "reference": "af23c2584d4577d54661c434446fb8fbed6025dd", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^7.2.5", + "psr/event-dispatcher": "^1" }, "suggest": { - "psr/event-dispatcher": "", "symfony/event-dispatcher-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -724,30 +771,30 @@ "interoperability", "standards" ], - "time": "2019-09-17T09:54:03+00:00" + "time": "2019-11-18T17:27:11+00:00" }, { "name": "symfony/filesystem", - "version": "v4.3.5", + "version": "v5.0.1", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "9abbb7ef96a51f4d7e69627bc6f63307994e4263" + "reference": "1d71f670bc5a07b9ccc97dc44f932177a322d4e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/9abbb7ef96a51f4d7e69627bc6f63307994e4263", - "reference": "9abbb7ef96a51f4d7e69627bc6f63307994e4263", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/1d71f670bc5a07b9ccc97dc44f932177a322d4e6", + "reference": "1d71f670bc5a07b9ccc97dc44f932177a322d4e6", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": "^7.2.5", "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -774,29 +821,29 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2019-08-20T14:07:54+00:00" + "time": "2019-11-26T23:25:11+00:00" }, { "name": "symfony/finder", - "version": "v4.3.5", + "version": "v5.0.1", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "5e575faa95548d0586f6bedaeabec259714e44d1" + "reference": "17874dd8ab9a19422028ad56172fb294287a701b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/5e575faa95548d0586f6bedaeabec259714e44d1", - "reference": "5e575faa95548d0586f6bedaeabec259714e44d1", + "url": "https://api.github.com/repos/symfony/finder/zipball/17874dd8ab9a19422028ad56172fb294287a701b", + "reference": "17874dd8ab9a19422028ad56172fb294287a701b", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^7.2.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -823,29 +870,29 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2019-09-16T11:29:48+00:00" + "time": "2019-11-18T17:27:11+00:00" }, { "name": "symfony/options-resolver", - "version": "v4.3.5", + "version": "v5.0.1", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "81c2e120522a42f623233968244baebd6b36cb6a" + "reference": "1ad3d0ffc00cc1990e5c9c7bb6b81578ec3f5f68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/81c2e120522a42f623233968244baebd6b36cb6a", - "reference": "81c2e120522a42f623233968244baebd6b36cb6a", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/1ad3d0ffc00cc1990e5c9c7bb6b81578ec3f5f68", + "reference": "1ad3d0ffc00cc1990e5c9c7bb6b81578ec3f5f68", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^7.2.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -877,20 +924,20 @@ "configuration", "options" ], - "time": "2019-08-08T09:29:19+00:00" + "time": "2019-11-18T17:27:11+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "550ebaac289296ce228a706d0867afc34687e3f4" + "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4", - "reference": "550ebaac289296ce228a706d0867afc34687e3f4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", + "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", "shasum": "" }, "require": { @@ -902,7 +949,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -935,20 +982,20 @@ "polyfill", "portable" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T13:56:44+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17" + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17", - "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", "shasum": "" }, "require": { @@ -960,7 +1007,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -994,20 +1041,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T14:18:11+00:00" }, { "name": "symfony/polyfill-php70", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "54b4c428a0054e254223797d2713c31e08610831" + "reference": "af23c7bb26a73b850840823662dda371484926c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/54b4c428a0054e254223797d2713c31e08610831", - "reference": "54b4c428a0054e254223797d2713c31e08610831", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/af23c7bb26a73b850840823662dda371484926c4", + "reference": "af23c7bb26a73b850840823662dda371484926c4", "shasum": "" }, "require": { @@ -1017,7 +1064,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -1053,20 +1100,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T13:56:44+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "04ce3335667451138df4307d6a9b61565560199e" + "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/04ce3335667451138df4307d6a9b61565560199e", - "reference": "04ce3335667451138df4307d6a9b61565560199e", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/66fea50f6cb37a35eea048d75a7d99a45b586038", + "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038", "shasum": "" }, "require": { @@ -1075,7 +1122,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -1108,20 +1155,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T13:56:44+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188" + "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/2ceb49eaccb9352bff54d22570276bb75ba4a188", - "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/4b0e2222c55a25b4541305a053013d5647d3a25f", + "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f", "shasum": "" }, "require": { @@ -1130,7 +1177,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -1166,29 +1213,29 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T16:25:15+00:00" }, { "name": "symfony/process", - "version": "v4.3.5", + "version": "v5.0.1", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "50556892f3cc47d4200bfd1075314139c4c9ff4b" + "reference": "1568a2e8370fbc7416ef64eb5a698e4a05db5ff4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/50556892f3cc47d4200bfd1075314139c4c9ff4b", - "reference": "50556892f3cc47d4200bfd1075314139c4c9ff4b", + "url": "https://api.github.com/repos/symfony/process/zipball/1568a2e8370fbc7416ef64eb5a698e4a05db5ff4", + "reference": "1568a2e8370fbc7416ef64eb5a698e4a05db5ff4", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^7.2.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -1215,24 +1262,24 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2019-09-26T21:17:10+00:00" + "time": "2019-11-28T14:20:16+00:00" }, { "name": "symfony/service-contracts", - "version": "v1.1.7", + "version": "v2.0.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "ffcde9615dc5bb4825b9f6aed07716f1f57faae0" + "reference": "144c5e51266b281231e947b51223ba14acf1a749" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/ffcde9615dc5bb4825b9f6aed07716f1f57faae0", - "reference": "ffcde9615dc5bb4825b9f6aed07716f1f57faae0", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749", + "reference": "144c5e51266b281231e947b51223ba14acf1a749", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": "^7.2.5", "psr/container": "^1.0" }, "suggest": { @@ -1241,7 +1288,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -1273,30 +1320,30 @@ "interoperability", "standards" ], - "time": "2019-09-17T11:12:18+00:00" + "time": "2019-11-18T17:27:11+00:00" }, { "name": "symfony/stopwatch", - "version": "v4.3.5", + "version": "v5.0.1", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "1e4ff456bd625be5032fac9be4294e60442e9b71" + "reference": "d410282956706e0b08681a5527447a8e6b6f421e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/1e4ff456bd625be5032fac9be4294e60442e9b71", - "reference": "1e4ff456bd625be5032fac9be4294e60442e9b71", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/d410282956706e0b08681a5527447a8e6b6f421e", + "reference": "d410282956706e0b08681a5527447a8e6b6f421e", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/service-contracts": "^1.0" + "php": "^7.2.5", + "symfony/service-contracts": "^1.0|^2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -1323,7 +1370,7 @@ ], "description": "Symfony Stopwatch Component", "homepage": "https://symfony.com", - "time": "2019-08-07T11:52:19+00:00" + "time": "2019-11-18T17:27:11+00:00" } ], "packages-dev": [], diff --git a/vendor-bin/daux/composer.lock b/vendor-bin/daux/composer.lock index d2befae3..116c2b28 100644 --- a/vendor-bin/daux/composer.lock +++ b/vendor-bin/daux/composer.lock @@ -79,27 +79,28 @@ }, { "name": "guzzlehttp/guzzle", - "version": "6.3.3", + "version": "6.4.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" + "reference": "0895c932405407fd3a7368b6910c09a24d26db11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", - "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/0895c932405407fd3a7368b6910c09a24d26db11", + "reference": "0895c932405407fd3a7368b6910c09a24d26db11", "shasum": "" }, "require": { + "ext-json": "*", "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.4", + "guzzlehttp/psr7": "^1.6.1", "php": ">=5.5" }, "require-dev": { "ext-curl": "*", "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.0" + "psr/log": "^1.1" }, "suggest": { "psr/log": "Required for using the Log middleware" @@ -111,12 +112,12 @@ } }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\": "src/" - } + }, + "files": [ + "src/functions_include.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -140,7 +141,7 @@ "rest", "web service" ], - "time": "2018-04-22T15:46:56+00:00" + "time": "2019-10-23T15:58:00+00:00" }, { "name": "guzzlehttp/promises", @@ -644,27 +645,28 @@ }, { "name": "symfony/console", - "version": "v4.3.5", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "929ddf360d401b958f611d44e726094ab46a7369" + "reference": "f0aea3df20d15635b3cb9730ca5eea1c65b7f201" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/929ddf360d401b958f611d44e726094ab46a7369", - "reference": "929ddf360d401b958f611d44e726094ab46a7369", + "url": "https://api.github.com/repos/symfony/console/zipball/f0aea3df20d15635b3cb9730ca5eea1c65b7f201", + "reference": "f0aea3df20d15635b3cb9730ca5eea1c65b7f201", "shasum": "" }, "require": { "php": "^7.1.3", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php73": "^1.8", - "symfony/service-contracts": "^1.1" + "symfony/service-contracts": "^1.1|^2" }, "conflict": { "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3", + "symfony/event-dispatcher": "<4.3|>=5", + "symfony/lock": "<4.4", "symfony/process": "<3.3" }, "provide": { @@ -672,12 +674,12 @@ }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", "symfony/event-dispatcher": "^4.3", - "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0", - "symfony/var-dumper": "^4.3" + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/var-dumper": "^4.3|^5.0" }, "suggest": { "psr/log": "For using the console logger", @@ -688,7 +690,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -715,35 +717,35 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2019-10-07T12:36:49+00:00" + "time": "2019-12-01T10:06:17+00:00" }, { "name": "symfony/http-foundation", - "version": "v4.3.5", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "76590ced16d4674780863471bae10452b79210a5" + "reference": "8bccc59e61b41963d14c3dbdb23181e5c932a1d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/76590ced16d4674780863471bae10452b79210a5", - "reference": "76590ced16d4674780863471bae10452b79210a5", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8bccc59e61b41963d14c3dbdb23181e5c932a1d5", + "reference": "8bccc59e61b41963d14c3dbdb23181e5c932a1d5", "shasum": "" }, "require": { "php": "^7.1.3", - "symfony/mime": "^4.3", + "symfony/mime": "^4.3|^5.0", "symfony/polyfill-mbstring": "~1.1" }, "require-dev": { "predis/predis": "~1.0", - "symfony/expression-language": "~3.4|~4.0" + "symfony/expression-language": "^3.4|^4.0|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -770,28 +772,28 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2019-10-04T19:48:13+00:00" + "time": "2019-11-28T13:33:56+00:00" }, { "name": "symfony/intl", - "version": "v4.3.5", + "version": "v5.0.1", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "818771ff6acef04cdce05023ddfc39b7078014bf" + "reference": "41f910d47883c6ab37087ca4a3332e21e1d682f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/818771ff6acef04cdce05023ddfc39b7078014bf", - "reference": "818771ff6acef04cdce05023ddfc39b7078014bf", + "url": "https://api.github.com/repos/symfony/intl/zipball/41f910d47883c6ab37087ca4a3332e21e1d682f4", + "reference": "41f910d47883c6ab37087ca4a3332e21e1d682f4", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": "^7.2.5", "symfony/polyfill-intl-icu": "~1.0" }, "require-dev": { - "symfony/filesystem": "~3.4|~4.0" + "symfony/filesystem": "^4.4|^5.0" }, "suggest": { "ext-intl": "to use the component with locales other than \"en\"" @@ -799,7 +801,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -845,35 +847,38 @@ "l10n", "localization" ], - "time": "2019-10-04T21:18:34+00:00" + "time": "2019-11-26T23:25:11+00:00" }, { "name": "symfony/mime", - "version": "v4.3.5", + "version": "v5.0.1", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "32f71570547b91879fdbd9cf50317d556ae86916" + "reference": "0e6a4ced216e49d457eddcefb61132173a876d79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/32f71570547b91879fdbd9cf50317d556ae86916", - "reference": "32f71570547b91879fdbd9cf50317d556ae86916", + "url": "https://api.github.com/repos/symfony/mime/zipball/0e6a4ced216e49d457eddcefb61132173a876d79", + "reference": "0e6a4ced216e49d457eddcefb61132173a876d79", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": "^7.2.5", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, + "conflict": { + "symfony/mailer": "<4.4" + }, "require-dev": { "egulias/email-validator": "^2.1.10", - "symfony/dependency-injection": "~3.4|^4.1" + "symfony/dependency-injection": "^4.4|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -904,20 +909,20 @@ "mime", "mime-type" ], - "time": "2019-09-19T17:00:15+00:00" + "time": "2019-11-30T14:12:50+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "550ebaac289296ce228a706d0867afc34687e3f4" + "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4", - "reference": "550ebaac289296ce228a706d0867afc34687e3f4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", + "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", "shasum": "" }, "require": { @@ -929,7 +934,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -962,20 +967,20 @@ "polyfill", "portable" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T13:56:44+00:00" }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "66810b9d6eb4af54d543867909d65ab9af654d7e" + "reference": "b3dffd68afa61ca70f2327f2dd9bbeb6aa53d70b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/66810b9d6eb4af54d543867909d65ab9af654d7e", - "reference": "66810b9d6eb4af54d543867909d65ab9af654d7e", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/b3dffd68afa61ca70f2327f2dd9bbeb6aa53d70b", + "reference": "b3dffd68afa61ca70f2327f2dd9bbeb6aa53d70b", "shasum": "" }, "require": { @@ -988,7 +993,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -1020,20 +1025,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T13:56:44+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2" + "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6af626ae6fa37d396dc90a399c0ff08e5cfc45b2", - "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6f9c239e61e1b0c9229a28ff89a812dc449c3d46", + "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46", "shasum": "" }, "require": { @@ -1047,7 +1052,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -1082,20 +1087,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T13:56:44+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17" + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17", - "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", "shasum": "" }, "require": { @@ -1107,7 +1112,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -1141,20 +1146,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T14:18:11+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "04ce3335667451138df4307d6a9b61565560199e" + "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/04ce3335667451138df4307d6a9b61565560199e", - "reference": "04ce3335667451138df4307d6a9b61565560199e", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/66fea50f6cb37a35eea048d75a7d99a45b586038", + "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038", "shasum": "" }, "require": { @@ -1163,7 +1168,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -1196,20 +1201,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T13:56:44+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188" + "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/2ceb49eaccb9352bff54d22570276bb75ba4a188", - "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/4b0e2222c55a25b4541305a053013d5647d3a25f", + "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f", "shasum": "" }, "require": { @@ -1218,7 +1223,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -1254,20 +1259,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T16:25:15+00:00" }, { "name": "symfony/process", - "version": "v4.3.5", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "50556892f3cc47d4200bfd1075314139c4c9ff4b" + "reference": "51c0135ef3f44c5803b33dc60e96bf4f77752726" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/50556892f3cc47d4200bfd1075314139c4c9ff4b", - "reference": "50556892f3cc47d4200bfd1075314139c4c9ff4b", + "url": "https://api.github.com/repos/symfony/process/zipball/51c0135ef3f44c5803b33dc60e96bf4f77752726", + "reference": "51c0135ef3f44c5803b33dc60e96bf4f77752726", "shasum": "" }, "require": { @@ -1276,7 +1281,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -1303,24 +1308,24 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2019-09-26T21:17:10+00:00" + "time": "2019-11-28T13:33:56+00:00" }, { "name": "symfony/service-contracts", - "version": "v1.1.7", + "version": "v2.0.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "ffcde9615dc5bb4825b9f6aed07716f1f57faae0" + "reference": "144c5e51266b281231e947b51223ba14acf1a749" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/ffcde9615dc5bb4825b9f6aed07716f1f57faae0", - "reference": "ffcde9615dc5bb4825b9f6aed07716f1f57faae0", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749", + "reference": "144c5e51266b281231e947b51223ba14acf1a749", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": "^7.2.5", "psr/container": "^1.0" }, "suggest": { @@ -1329,7 +1334,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -1361,20 +1366,20 @@ "interoperability", "standards" ], - "time": "2019-09-17T11:12:18+00:00" + "time": "2019-11-18T17:27:11+00:00" }, { "name": "symfony/yaml", - "version": "v4.3.5", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "41e16350a2a1c7383c4735aa2f9fce74cf3d1178" + "reference": "76de473358fe802578a415d5bb43c296cf09d211" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/41e16350a2a1c7383c4735aa2f9fce74cf3d1178", - "reference": "41e16350a2a1c7383c4735aa2f9fce74cf3d1178", + "url": "https://api.github.com/repos/symfony/yaml/zipball/76de473358fe802578a415d5bb43c296cf09d211", + "reference": "76de473358fe802578a415d5bb43c296cf09d211", "shasum": "" }, "require": { @@ -1385,7 +1390,7 @@ "symfony/console": "<3.4" }, "require-dev": { - "symfony/console": "~3.4|~4.0" + "symfony/console": "^3.4|^4.0|^5.0" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" @@ -1393,7 +1398,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -1420,7 +1425,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2019-09-11T15:41:19+00:00" + "time": "2019-11-12T14:51:11+00:00" }, { "name": "webuni/commonmark-table-extension", diff --git a/vendor-bin/phpunit/composer.lock b/vendor-bin/phpunit/composer.lock index 558318c8..b9a96460 100644 --- a/vendor-bin/phpunit/composer.lock +++ b/vendor-bin/phpunit/composer.lock @@ -58,16 +58,16 @@ }, { "name": "doctrine/instantiator", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "a2c590166b2133a4633738648b6b064edae0814a" + "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", - "reference": "a2c590166b2133a4633738648b6b064edae0814a", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", + "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", "shasum": "" }, "require": { @@ -110,20 +110,20 @@ "constructor", "instantiate" ], - "time": "2019-03-17T17:37:11+00:00" + "time": "2019-10-21T16:45:58+00:00" }, { "name": "mikey179/vfsstream", - "version": "v1.6.7", + "version": "v1.6.8", "source": { "type": "git", "url": "https://github.com/bovigo/vfsStream.git", - "reference": "2b544ac3a21bcc4dde5d90c4ae8d06f4319055fb" + "reference": "231c73783ebb7dd9ec77916c10037eff5a2b6efe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/2b544ac3a21bcc4dde5d90c4ae8d06f4319055fb", - "reference": "2b544ac3a21bcc4dde5d90c4ae8d06f4319055fb", + "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/231c73783ebb7dd9ec77916c10037eff5a2b6efe", + "reference": "231c73783ebb7dd9ec77916c10037eff5a2b6efe", "shasum": "" }, "require": { @@ -156,7 +156,7 @@ ], "description": "Virtual file system to mock the real file system in unit tests.", "homepage": "http://vfs.bovigo.org/", - "time": "2019-08-01T01:38:37+00:00" + "time": "2019-10-30T15:31:00+00:00" }, { "name": "myclabs/deep-copy", @@ -833,16 +833,16 @@ }, { "name": "phpunit/phpunit", - "version": "7.5.16", + "version": "7.5.17", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "316afa6888d2562e04aeb67ea7f2017a0eb41661" + "reference": "4c92a15296e58191a4cd74cff3b34fc8e374174a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/316afa6888d2562e04aeb67ea7f2017a0eb41661", - "reference": "316afa6888d2562e04aeb67ea7f2017a0eb41661", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4c92a15296e58191a4cd74cff3b34fc8e374174a", + "reference": "4c92a15296e58191a4cd74cff3b34fc8e374174a", "shasum": "" }, "require": { @@ -913,7 +913,7 @@ "testing", "xunit" ], - "time": "2019-09-14T09:08:39+00:00" + "time": "2019-10-28T10:37:36+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -1082,16 +1082,16 @@ }, { "name": "sebastian/environment", - "version": "4.2.2", + "version": "4.2.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404" + "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/f2a2c8e1c97c11ace607a7a667d73d47c19fe404", - "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", + "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", "shasum": "" }, "require": { @@ -1131,7 +1131,7 @@ "environment", "hhvm" ], - "time": "2019-05-05T09:05:15+00:00" + "time": "2019-11-20T08:46:58+00:00" }, { "name": "sebastian/exporter", @@ -1483,16 +1483,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "550ebaac289296ce228a706d0867afc34687e3f4" + "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4", - "reference": "550ebaac289296ce228a706d0867afc34687e3f4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", + "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", "shasum": "" }, "require": { @@ -1504,7 +1504,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -1537,7 +1537,7 @@ "polyfill", "portable" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T13:56:44+00:00" }, { "name": "theseer/tokenizer", @@ -1581,31 +1581,29 @@ }, { "name": "webmozart/assert", - "version": "1.5.0", + "version": "1.6.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4" + "reference": "573381c0a64f155a0d9a23f4b0c797194805b925" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/88e6d84706d09a236046d686bbea96f07b3a34f4", - "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4", + "url": "https://api.github.com/repos/webmozart/assert/zipball/573381c0a64f155a0d9a23f4b0c797194805b925", + "reference": "573381c0a64f155a0d9a23f4b0c797194805b925", "shasum": "" }, "require": { "php": "^5.3.3 || ^7.0", "symfony/polyfill-ctype": "^1.8" }, + "conflict": { + "vimeo/psalm": "<3.6.0" + }, "require-dev": { "phpunit/phpunit": "^4.8.36 || ^7.5.13" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, "autoload": { "psr-4": { "Webmozart\\Assert\\": "src/" @@ -1627,7 +1625,7 @@ "check", "validate" ], - "time": "2019-08-24T08:43:50+00:00" + "time": "2019-11-24T13:36:37+00:00" }, { "name": "webmozart/glob", diff --git a/vendor-bin/robo/composer.lock b/vendor-bin/robo/composer.lock index 6ebab025..7c5979c1 100644 --- a/vendor-bin/robo/composer.lock +++ b/vendor-bin/robo/composer.lock @@ -376,20 +376,20 @@ }, { "name": "consolidation/robo", - "version": "1.4.10", + "version": "1.4.11", "source": { "type": "git", "url": "https://github.com/consolidation/Robo.git", - "reference": "e5a6ca64cf1324151873672e484aceb21f365681" + "reference": "5fa1d901776a628167a325baa9db95d8edf13a80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/Robo/zipball/e5a6ca64cf1324151873672e484aceb21f365681", - "reference": "e5a6ca64cf1324151873672e484aceb21f365681", + "url": "https://api.github.com/repos/consolidation/Robo/zipball/5fa1d901776a628167a325baa9db95d8edf13a80", + "reference": "5fa1d901776a628167a325baa9db95d8edf13a80", "shasum": "" }, "require": { - "consolidation/annotated-command": "^2.10.2", + "consolidation/annotated-command": "^2.11.0", "consolidation/config": "^1.2", "consolidation/log": "~1", "consolidation/output-formatters": "^3.1.13", @@ -419,6 +419,7 @@ "pear/archive_tar": "^1.4.4", "php-coveralls/php-coveralls": "^1", "phpunit/php-code-coverage": "~2|~4", + "sebastian/comparator": "^1.2.4", "squizlabs/php_codesniffer": "^2.8" }, "suggest": { @@ -480,7 +481,7 @@ } ], "description": "Modern task runner", - "time": "2019-07-29T15:40:50+00:00" + "time": "2019-10-29T15:50:02+00:00" }, { "name": "consolidation/self-update", @@ -561,6 +562,7 @@ ], "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", "homepage": "https://github.com/container-interop/container-interop", + "abandoned": "psr/container", "time": "2017-02-14T19:40:03+00:00" }, { @@ -784,16 +786,16 @@ }, { "name": "pear/archive_tar", - "version": "1.4.7", + "version": "1.4.8", "source": { "type": "git", "url": "https://github.com/pear/Archive_Tar.git", - "reference": "7e48add6f8edc3027dd98ad15964b1a28fd0c845" + "reference": "442bdffb7edb84c898cfd94f7ac8500e49d5bbb5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/7e48add6f8edc3027dd98ad15964b1a28fd0c845", - "reference": "7e48add6f8edc3027dd98ad15964b1a28fd0c845", + "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/442bdffb7edb84c898cfd94f7ac8500e49d5bbb5", + "reference": "442bdffb7edb84c898cfd94f7ac8500e49d5bbb5", "shasum": "" }, "require": { @@ -846,20 +848,20 @@ "archive", "tar" ], - "time": "2019-04-08T13:15:55+00:00" + "time": "2019-10-21T13:31:24+00:00" }, { "name": "pear/console_getopt", - "version": "v1.4.2", + "version": "v1.4.3", "source": { "type": "git", "url": "https://github.com/pear/Console_Getopt.git", - "reference": "6c77aeb625b32bd752e89ee17972d103588b90c0" + "reference": "a41f8d3e668987609178c7c4a9fe48fecac53fa0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/Console_Getopt/zipball/6c77aeb625b32bd752e89ee17972d103588b90c0", - "reference": "6c77aeb625b32bd752e89ee17972d103588b90c0", + "url": "https://api.github.com/repos/pear/Console_Getopt/zipball/a41f8d3e668987609178c7c4a9fe48fecac53fa0", + "reference": "a41f8d3e668987609178c7c4a9fe48fecac53fa0", "shasum": "" }, "type": "library", @@ -876,11 +878,6 @@ "BSD-2-Clause" ], "authors": [ - { - "name": "Greg Beaver", - "email": "cellog@php.net", - "role": "Helper" - }, { "name": "Andrei Zmievski", "email": "andrei@php.net", @@ -890,23 +887,28 @@ "name": "Stig Bakken", "email": "stig@php.net", "role": "Developer" + }, + { + "name": "Greg Beaver", + "email": "cellog@php.net", + "role": "Helper" } ], "description": "More info available on: http://pear.php.net/package/Console_Getopt", - "time": "2019-02-06T16:52:33+00:00" + "time": "2019-11-20T18:27:48+00:00" }, { "name": "pear/pear-core-minimal", - "version": "v1.10.9", + "version": "v1.10.10", "source": { "type": "git", "url": "https://github.com/pear/pear-core-minimal.git", - "reference": "742be8dd68c746a01e4b0a422258e9c9cae1c37f" + "reference": "625a3c429d9b2c1546438679074cac1b089116a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/742be8dd68c746a01e4b0a422258e9c9cae1c37f", - "reference": "742be8dd68c746a01e4b0a422258e9c9cae1c37f", + "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/625a3c429d9b2c1546438679074cac1b089116a7", + "reference": "625a3c429d9b2c1546438679074cac1b089116a7", "shasum": "" }, "require": { @@ -937,7 +939,7 @@ } ], "description": "Minimal set of PEAR core files to be used as composer dependency", - "time": "2019-03-13T18:15:44+00:00" + "time": "2019-11-19T19:00:24+00:00" }, { "name": "pear/pear_exception", @@ -1045,16 +1047,16 @@ }, { "name": "psr/log", - "version": "1.1.0", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" + "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801", + "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801", "shasum": "" }, "require": { @@ -1063,7 +1065,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { @@ -1088,31 +1090,32 @@ "psr", "psr-3" ], - "time": "2018-11-20T15:27:04+00:00" + "time": "2019-11-01T11:05:21+00:00" }, { "name": "symfony/console", - "version": "v4.3.5", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "929ddf360d401b958f611d44e726094ab46a7369" + "reference": "f0aea3df20d15635b3cb9730ca5eea1c65b7f201" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/929ddf360d401b958f611d44e726094ab46a7369", - "reference": "929ddf360d401b958f611d44e726094ab46a7369", + "url": "https://api.github.com/repos/symfony/console/zipball/f0aea3df20d15635b3cb9730ca5eea1c65b7f201", + "reference": "f0aea3df20d15635b3cb9730ca5eea1c65b7f201", "shasum": "" }, "require": { "php": "^7.1.3", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php73": "^1.8", - "symfony/service-contracts": "^1.1" + "symfony/service-contracts": "^1.1|^2" }, "conflict": { "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3", + "symfony/event-dispatcher": "<4.3|>=5", + "symfony/lock": "<4.4", "symfony/process": "<3.3" }, "provide": { @@ -1120,12 +1123,12 @@ }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", "symfony/event-dispatcher": "^4.3", - "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0", - "symfony/var-dumper": "^4.3" + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/var-dumper": "^4.3|^5.0" }, "suggest": { "psr/log": "For using the console logger", @@ -1136,7 +1139,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -1163,20 +1166,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2019-10-07T12:36:49+00:00" + "time": "2019-12-01T10:06:17+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.3.5", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6229f58993e5a157f6096fc7145c0717d0be8807" + "reference": "b3c3068a72623287550fe20b84a2b01dcba2686f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6229f58993e5a157f6096fc7145c0717d0be8807", - "reference": "6229f58993e5a157f6096fc7145c0717d0be8807", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b3c3068a72623287550fe20b84a2b01dcba2686f", + "reference": "b3c3068a72623287550fe20b84a2b01dcba2686f", "shasum": "" }, "require": { @@ -1192,12 +1195,12 @@ }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/http-foundation": "^3.4|^4.0", - "symfony/service-contracts": "^1.1", - "symfony/stopwatch": "~3.4|~4.0" + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/stopwatch": "^3.4|^4.0|^5.0" }, "suggest": { "symfony/dependency-injection": "", @@ -1206,7 +1209,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -1233,7 +1236,7 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2019-10-01T16:40:32+00:00" + "time": "2019-11-28T13:33:56+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -1295,16 +1298,16 @@ }, { "name": "symfony/filesystem", - "version": "v4.3.5", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "9abbb7ef96a51f4d7e69627bc6f63307994e4263" + "reference": "40c2606131d56eff6f193b6e2ceb92414653b591" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/9abbb7ef96a51f4d7e69627bc6f63307994e4263", - "reference": "9abbb7ef96a51f4d7e69627bc6f63307994e4263", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/40c2606131d56eff6f193b6e2ceb92414653b591", + "reference": "40c2606131d56eff6f193b6e2ceb92414653b591", "shasum": "" }, "require": { @@ -1314,7 +1317,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -1341,20 +1344,20 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2019-08-20T14:07:54+00:00" + "time": "2019-11-26T23:16:41+00:00" }, { "name": "symfony/finder", - "version": "v4.3.5", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "5e575faa95548d0586f6bedaeabec259714e44d1" + "reference": "ce8743441da64c41e2a667b8eb66070444ed911e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/5e575faa95548d0586f6bedaeabec259714e44d1", - "reference": "5e575faa95548d0586f6bedaeabec259714e44d1", + "url": "https://api.github.com/repos/symfony/finder/zipball/ce8743441da64c41e2a667b8eb66070444ed911e", + "reference": "ce8743441da64c41e2a667b8eb66070444ed911e", "shasum": "" }, "require": { @@ -1363,7 +1366,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -1390,20 +1393,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2019-09-16T11:29:48+00:00" + "time": "2019-11-17T21:56:56+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "550ebaac289296ce228a706d0867afc34687e3f4" + "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4", - "reference": "550ebaac289296ce228a706d0867afc34687e3f4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", + "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", "shasum": "" }, "require": { @@ -1415,7 +1418,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -1448,20 +1451,20 @@ "polyfill", "portable" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T13:56:44+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17" + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17", - "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", "shasum": "" }, "require": { @@ -1473,7 +1476,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -1507,20 +1510,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T14:18:11+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188" + "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/2ceb49eaccb9352bff54d22570276bb75ba4a188", - "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/4b0e2222c55a25b4541305a053013d5647d3a25f", + "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f", "shasum": "" }, "require": { @@ -1529,7 +1532,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -1565,20 +1568,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T16:25:15+00:00" }, { "name": "symfony/process", - "version": "v3.4.32", + "version": "v3.4.36", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "344dc588b163ff58274f1769b90b75237f32ed16" + "reference": "9a4545c01e1e4f473492bd52b71e574dcc401ca2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/344dc588b163ff58274f1769b90b75237f32ed16", - "reference": "344dc588b163ff58274f1769b90b75237f32ed16", + "url": "https://api.github.com/repos/symfony/process/zipball/9a4545c01e1e4f473492bd52b71e574dcc401ca2", + "reference": "9a4545c01e1e4f473492bd52b71e574dcc401ca2", "shasum": "" }, "require": { @@ -1614,24 +1617,24 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2019-09-25T14:09:38+00:00" + "time": "2019-11-28T10:05:51+00:00" }, { "name": "symfony/service-contracts", - "version": "v1.1.7", + "version": "v2.0.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "ffcde9615dc5bb4825b9f6aed07716f1f57faae0" + "reference": "144c5e51266b281231e947b51223ba14acf1a749" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/ffcde9615dc5bb4825b9f6aed07716f1f57faae0", - "reference": "ffcde9615dc5bb4825b9f6aed07716f1f57faae0", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749", + "reference": "144c5e51266b281231e947b51223ba14acf1a749", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": "^7.2.5", "psr/container": "^1.0" }, "suggest": { @@ -1640,7 +1643,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -1672,20 +1675,20 @@ "interoperability", "standards" ], - "time": "2019-09-17T11:12:18+00:00" + "time": "2019-11-18T17:27:11+00:00" }, { "name": "symfony/yaml", - "version": "v4.3.5", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "41e16350a2a1c7383c4735aa2f9fce74cf3d1178" + "reference": "76de473358fe802578a415d5bb43c296cf09d211" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/41e16350a2a1c7383c4735aa2f9fce74cf3d1178", - "reference": "41e16350a2a1c7383c4735aa2f9fce74cf3d1178", + "url": "https://api.github.com/repos/symfony/yaml/zipball/76de473358fe802578a415d5bb43c296cf09d211", + "reference": "76de473358fe802578a415d5bb43c296cf09d211", "shasum": "" }, "require": { @@ -1696,7 +1699,7 @@ "symfony/console": "<3.4" }, "require-dev": { - "symfony/console": "~3.4|~4.0" + "symfony/console": "^3.4|^4.0|^5.0" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" @@ -1704,7 +1707,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -1731,7 +1734,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2019-09-11T15:41:19+00:00" + "time": "2019-11-12T14:51:11+00:00" } ], "packages-dev": [], From 484510cf8c1c97fd823fd96d297ab80472b40f04 Mon Sep 17 00:00:00 2001 From: "J. King" Date: Tue, 3 Dec 2019 17:10:47 -0500 Subject: [PATCH 08/12] Expand text fields other than user id and feed URL --- sql/MySQL/5.sql | 57 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/sql/MySQL/5.sql b/sql/MySQL/5.sql index 6d3defe5..6756300b 100644 --- a/sql/MySQL/5.sql +++ b/sql/MySQL/5.sql @@ -4,6 +4,32 @@ -- Please consult the SQLite 3 schemata for commented version +-- Drop unnecessary indexes +drop index id on arsse_folders; +drop index id on arsse_feeds; +drop index id on arsse_subscriptions; +drop index id on arsse_articles; +drop index id on arsse_editions; +drop index id on arsse_labels; +drop index id on arsse_tags; + +-- Ensure tables use dynamic row-format; these should be no-ops for most installations +alter table arsse_meta engine=InnoDB row_format=dynamic; +alter table arsse_users engine=InnoDB row_format=dynamic; +alter table arsse_feeds engine=InnoDB row_format=dynamic; +alter table arsse_folders engine=InnoDB row_format=dynamic; +alter table arsse_subscriptions engine=InnoDB row_format=dynamic; +alter table arsse_articles engine=InnoDB row_format=dynamic; +alter table arsse_marks engine=InnoDB row_format=dynamic; +alter table arsse_labels engine=InnoDB row_format=dynamic; +alter table arsse_label_members engine=InnoDB row_format=dynamic; +alter table arsse_tags engine=InnoDB row_format=dynamic; +alter table arsse_tag_members engine=InnoDB row_format=dynamic; +alter table arsse_editions engine=InnoDB row_format=dynamic; +alter table arsse_categories engine=InnoDB row_format=dynamic; +alter table arsse_tokens engine=InnoDB row_format=dynamic; +alter table arsse_sessions engine=InnoDB row_format=dynamic; + -- Correct character set and collation of sessions table alter table arsse_sessions default character set utf8mb4 collate utf8mb4_unicode_ci; alter table arsse_sessions convert to character set utf8mb4 collate utf8mb4_unicode_ci; @@ -52,6 +78,37 @@ alter table arsse_label_members modify subscription bigint unsigned not null; alter table arsse_tag_members modify tag bigint unsigned not null; alter table arsse_tag_members modify subscription bigint unsigned not null; +-- Use longtext columns whenever possible +alter table arsse_users modify password longtext; +alter table arsse_sessions drop primary key; +alter table arsse_sessions modify id longtext; +alter table arsse_sessions add primary key(id(768)); +alter table arsse_tokens drop primary key; +alter table arsse_tokens modify id longtext; +alter table arsse_tokens add primary key(id(512), class); +alter table arsse_feeds modify title longtext; +alter table arsse_feeds modify favicon longtext; +alter table arsse_feeds modify source longtext; +alter table arsse_feeds modify etag longtext; +alter table arsse_feeds modify err_msg longtext; +alter table arsse_articles modify url longtext; +alter table arsse_articles modify title longtext; +alter table arsse_articles modify author longtext; +alter table arsse_articles modify guid longtext; +alter table arsse_enclosures modify url longtext; +alter table arsse_enclosures modify type longtext; +alter table arsse_categories modify name longtext; +drop index owner on arsse_folders; +alter table arsse_folders modify name longtext not null; +alter table arsse_folders add unique index(owner, name(255), parent); +drop index owner on arsse_tags; +alter table arsse_tags modify name longtext not null; +alter table arsse_tags add unique index(owner, name(255)); +drop index owner on arsse_labels; +alter table arsse_labels modify name longtext not null; +alter table arsse_labels add unique index(owner, name(255)); + + -- Fix foreign key constraints alter table arsse_folders add foreign key(owner) references arsse_users(id) on delete cascade on update cascade; alter table arsse_folders add foreign key(parent) references arsse_folders(id) on delete cascade; From 794fb506a5b3dff7fae08b891361c34b611259c7 Mon Sep 17 00:00:00 2001 From: "J. King" Date: Tue, 3 Dec 2019 22:33:44 -0500 Subject: [PATCH 09/12] Widen URL field --- CHANGELOG | 1 + sql/MySQL/5.sql | 7 +++---- sql/PostgreSQL/5.sql | 3 ++- sql/SQLite3/5.sql | 3 +++ 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index ae28fc0e..27d114fc 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ Version 0.8.2 (????-??-??) Bug fixes: - Enforce foreign key constraints in MySQL +- Widen most text fields for MySQL Version 0.8.1 (2019-10-28) ========================== diff --git a/sql/MySQL/5.sql b/sql/MySQL/5.sql index 6756300b..06697be4 100644 --- a/sql/MySQL/5.sql +++ b/sql/MySQL/5.sql @@ -2,8 +2,6 @@ -- Copyright 2017 J. King, Dustin Wilson et al. -- See LICENSE and AUTHORS files for details --- Please consult the SQLite 3 schemata for commented version - -- Drop unnecessary indexes drop index id on arsse_folders; drop index id on arsse_feeds; @@ -86,10 +84,12 @@ alter table arsse_sessions add primary key(id(768)); alter table arsse_tokens drop primary key; alter table arsse_tokens modify id longtext; alter table arsse_tokens add primary key(id(512), class); +drop index url on arsse_feeds; +alter table arsse_feeds modify url longtext not null; +alter table arsse_feeds add unique index(url(255), username, password); alter table arsse_feeds modify title longtext; alter table arsse_feeds modify favicon longtext; alter table arsse_feeds modify source longtext; -alter table arsse_feeds modify etag longtext; alter table arsse_feeds modify err_msg longtext; alter table arsse_articles modify url longtext; alter table arsse_articles modify title longtext; @@ -108,7 +108,6 @@ drop index owner on arsse_labels; alter table arsse_labels modify name longtext not null; alter table arsse_labels add unique index(owner, name(255)); - -- Fix foreign key constraints alter table arsse_folders add foreign key(owner) references arsse_users(id) on delete cascade on update cascade; alter table arsse_folders add foreign key(parent) references arsse_folders(id) on delete cascade; diff --git a/sql/PostgreSQL/5.sql b/sql/PostgreSQL/5.sql index ac48a432..5e96fb43 100644 --- a/sql/PostgreSQL/5.sql +++ b/sql/PostgreSQL/5.sql @@ -2,6 +2,7 @@ -- Copyright 2017 J. King, Dustin Wilson et al. -- See LICENSE and AUTHORS files for details --- Please consult the SQLite 3 schemata for commented version +-- This schema version strictly applies fixes for MySQL, +-- hence this file is functionally empty update arsse_meta set value = '6' where "key" = 'schema_version'; diff --git a/sql/SQLite3/5.sql b/sql/SQLite3/5.sql index 24c5b914..942e9a6a 100644 --- a/sql/SQLite3/5.sql +++ b/sql/SQLite3/5.sql @@ -2,6 +2,9 @@ -- Copyright 2017 J. King, Dustin Wilson et al. -- See LICENSE and AUTHORS files for details +-- This schema version strictly applies fixes for MySQL, +-- hence this file is functionally empty + -- set version marker pragma user_version = 6; update arsse_meta set value = '6' where "key" = 'schema_version'; From bbe70b6abc8c31e2eafa4a0091097ede8362aef4 Mon Sep 17 00:00:00 2001 From: "J. King" Date: Thu, 5 Dec 2019 13:02:02 -0500 Subject: [PATCH 10/12] Corect CamelCase references to Nextcloud --- CHANGELOG | 14 +++++++------- dist/apache.conf | 4 ++-- dist/nginx.conf | 2 +- docs/en/010_About.md | 2 +- .../030_Web_Server_Configuration.md | 6 +++--- ...010_NextCloud_News.md => 010_Nextcloud_News.md} | 6 +++--- .../030_Supported_Protocols/020_Tiny_Tiny_RSS.md | 2 +- docs/en/030_Supported_Protocols/index.md | 2 +- docs/en/040_Compatible_Clients.md | 4 ++-- lib/REST.php | 10 +++++----- lib/REST/{NextCloudNews => NextcloudNews}/V1_2.php | 4 ++-- .../{NextCloudNews => NextcloudNews}/Versions.php | 2 +- sql/SQLite3/0.sql | 10 +++++----- sql/SQLite3/2.sql | 6 +++--- .../PDO/TestV1_2.php | 6 +++--- .../{NextCloudNews => NextcloudNews}/TestV1_2.php | 6 +++--- .../TestVersions.php | 6 +++--- tests/cases/REST/TestREST.php | 10 +++++----- tests/phpunit.dist.xml | 6 +++--- 19 files changed, 54 insertions(+), 54 deletions(-) rename docs/en/030_Supported_Protocols/{010_NextCloud_News.md => 010_Nextcloud_News.md} (94%) rename lib/REST/{NextCloudNews => NextcloudNews}/V1_2.php (99%) rename lib/REST/{NextCloudNews => NextcloudNews}/Versions.php (96%) rename tests/cases/REST/{NextCloudNews => NextcloudNews}/PDO/TestV1_2.php (54%) rename tests/cases/REST/{NextCloudNews => NextcloudNews}/TestV1_2.php (99%) rename tests/cases/REST/{NextCloudNews => NextcloudNews}/TestVersions.php (90%) diff --git a/CHANGELOG b/CHANGELOG index a381c822..ce4bc96d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -99,11 +99,11 @@ Bug fixes: - Print command-line error messages more sensibly - Allow exporting default configuration to standard output - Fail correctly on authentication failure -- Prefer JSON data over GET parameters in NextCloud News +- Prefer JSON data over GET parameters in Nextcloud News Changes: - Simplify user management backend to minimize opportunity for bugs -- Document previously unknown NextCloud News behaviour +- Document previously unknown Nextcloud News behaviour Version 0.4.0 (2018-10-26) ========================== @@ -120,7 +120,7 @@ Bug fixes: - Minor fixes to code and documentation Changes: -- Disable memory and time limits to avoid deadlocks with NextCloud News +- Disable memory and time limits to avoid deadlocks with Nextcloud News Version 0.3.0 (2018-01-12) ========================== @@ -146,7 +146,7 @@ Bug fixes: - Rename feeds correctly via TTRSS protocol - Toggle marks correctly via TTRSS protocol - Sort everything case-insensitively -- Be even stricter about output data types in NextCloud News +- Be even stricter about output data types in Nextcloud News Changes: - Do not omit read feeds from TTRSS' getCounters, to fix some clients @@ -160,8 +160,8 @@ New features: Bug fixes: - Perform feed discovery *correctly* -- Expose the incorrectDbCharset boolean in the NextCloud News server status -- Give NextCloud News articles' guidHash attribute the correct type (string) +- Expose the incorrectDbCharset boolean in the Nextcloud News server status +- Give Nextcloud News articles' guidHash attribute the correct type (string) Changes: - Overhaul input type normalization to minimize bug opportunities @@ -170,7 +170,7 @@ Version 0.1.1 (2017-09-30) ========================== Bug fixes: -- Perform feed discovery like NextCloud News does +- Perform feed discovery like Nextcloud News does - Respond correctly to HEAD requests - Various minor fixes diff --git a/dist/apache.conf b/dist/apache.conf index 575d3aed..3c27b5a2 100644 --- a/dist/apache.conf +++ b/dist/apache.conf @@ -10,12 +10,12 @@ ProxyFCGISetEnvIf "true" SCRIPT_FILENAME "/usr/share/arsse/arsse.php" ProxyPreserveHost On - # NextCloud News v1.2, Tiny Tiny RSS API, TT-RSS newsfeed icons + # Nextcloud News v1.2, Tiny Tiny RSS API, TT-RSS newsfeed icons ProxyPass "unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/usr/share/arsse" - # NextCloud News API detection, Fever API + # Nextcloud News API detection, Fever API # these locations should not be behind HTTP authentication ProxyPass "unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/usr/share/arsse" diff --git a/dist/nginx.conf b/dist/nginx.conf index 1daabd42..6b488d74 100644 --- a/dist/nginx.conf +++ b/dist/nginx.conf @@ -23,7 +23,7 @@ server { fastcgi_param REMOTE_USER $remote_user; } - # NextCloud News protocol + # Nextcloud News protocol location /index.php/apps/news/api { try_files $uri @arsse; diff --git a/docs/en/010_About.md b/docs/en/010_About.md index 3e6ec642..615185f4 100644 --- a/docs/en/010_About.md +++ b/docs/en/010_About.md @@ -1,6 +1,6 @@ The Advanced RSS Environment (affectionately called "The Arsse") is a news aggregator server which implements multiple synchronization protocols. Unlike most other aggregator servers, The Arsse does not include a Web front-end (though one is planned as a separate project), and it relies on [existing protocols](Supported_Protocols) to maximize compatibility with [existing clients](Compatible_Clients). Supported protocols are: -- NextCloud News +- Nextcloud News - Tiny Tiny RSS - Fever diff --git a/docs/en/020_Getting_Started/030_Web_Server_Configuration.md b/docs/en/020_Getting_Started/030_Web_Server_Configuration.md index 392f1177..361624ac 100644 --- a/docs/en/020_Getting_Started/030_Web_Server_Configuration.md +++ b/docs/en/020_Getting_Started/030_Web_Server_Configuration.md @@ -34,7 +34,7 @@ server { fastcgi_param REMOTE_USER $remote_user; } - # NextCloud News protocol + # Nextcloud News protocol location /index.php/apps/news/api { try_files $uri @arsse; @@ -92,12 +92,12 @@ Afterward the follow virtual host configuration should work, after modifying pat ProxyFCGISetEnvIf "true" SCRIPT_FILENAME "/usr/share/arsse/arsse.php" ProxyPreserveHost On - # NextCloud News v1.2, Tiny Tiny RSS API, TT-RSS newsfeed icons + # Nextcloud News v1.2, Tiny Tiny RSS API, TT-RSS newsfeed icons ProxyPass "unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/usr/share/arsse" - # NextCloud News API detection, Fever API + # Nextcloud News API detection, Fever API # these locations should not be behind HTTP authentication ProxyPass "unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/usr/share/arsse" diff --git a/docs/en/030_Supported_Protocols/010_NextCloud_News.md b/docs/en/030_Supported_Protocols/010_Nextcloud_News.md similarity index 94% rename from docs/en/030_Supported_Protocols/010_NextCloud_News.md rename to docs/en/030_Supported_Protocols/010_Nextcloud_News.md index a7dad694..a2c34d04 100644 --- a/docs/en/030_Supported_Protocols/010_NextCloud_News.md +++ b/docs/en/030_Supported_Protocols/010_Nextcloud_News.md @@ -13,7 +13,7 @@
Version 1.2
-The NextCloud News protocol was the first supported by The Arsse, and has been supported in full since version 0.3.0. +The Nextcloud News protocol was the first supported by The Arsse, and has been supported in full since version 0.3.0. It allows organizing newsfeeds into single-level folders, and supports a wide range of operations on newsfeeds, folders, and articles. @@ -25,7 +25,7 @@ It allows organizing newsfeeds into single-level folders, and supports a wide ra - The feed updater ignores the `userId` parameter: feeds in The Arsse are deduplicated, and have no owner - The `/feeds/all` route lists only feeds which should be checked for updates, and it also returns all `userId` attributes as empty strings: feeds in The Arsse are deduplicated, and have no owner - The API's "updater" routes do not require administrator priviledges as The Arsse has no concept of user classes -- The "updater" console commands mentioned in the protocol specification are not implemented, as The Arsse does not implement the required NextCloud subsystems +- The "updater" console commands mentioned in the protocol specification are not implemented, as The Arsse does not implement the required Nextcloud subsystems - The `lastLoginTimestamp` attribute of the user metadata is always the current time: The Arsse's implementation of the protocol is fully stateless - Syntactically invalid JSON input will yield a `400 Bad Request` response instead of falling back to GET parameters - Folder names consisting only of whitespace are rejected along with the empty string @@ -36,4 +36,4 @@ It allows organizing newsfeeds into single-level folders, and supports a wide ra # Interaction with nested folders -Tiny Tiny RSS is unique in allowing newsfeeds to be grouped into folders nested to arbitrary depth. When newsfeeds are placed into nested folders, they simply appear in the top-level folder when accessed via the NextCloud News protocol. +Tiny Tiny RSS is unique in allowing newsfeeds to be grouped into folders nested to arbitrary depth. When newsfeeds are placed into nested folders, they simply appear in the top-level folder when accessed via the Nextcloud News protocol. diff --git a/docs/en/030_Supported_Protocols/020_Tiny_Tiny_RSS.md b/docs/en/030_Supported_Protocols/020_Tiny_Tiny_RSS.md index 1dc4ba0d..e34ca456 100644 --- a/docs/en/030_Supported_Protocols/020_Tiny_Tiny_RSS.md +++ b/docs/en/030_Supported_Protocols/020_Tiny_Tiny_RSS.md @@ -59,7 +59,7 @@ The Arsse does not currently support the entire protocol. Notably missing featur # Interaction with HTTP authentication -Tiny Tiny RSS itself is unaware of HTTP authentication: if HTTP authentication is used in the server configuration, it has no effect on authentication in the API. The Arsse, however, makes use of HTTP authentication for NextCloud News, and can do so for TT-RSS as well. In a default configuration The Arsse functions in the same way as TT-RSS: HTTP authentication and API authentication are completely separate and independent. Alternative behaviour is summarized below: +Tiny Tiny RSS itself is unaware of HTTP authentication: if HTTP authentication is used in the server configuration, it has no effect on authentication in the API. The Arsse, however, makes use of HTTP authentication for Nextcloud News, and can do so for TT-RSS as well. In a default configuration The Arsse functions in the same way as TT-RSS: HTTP authentication and API authentication are completely separate and independent. Alternative behaviour is summarized below: - With default settings: - Clients may optionally provide HTTP credentials diff --git a/docs/en/030_Supported_Protocols/index.md b/docs/en/030_Supported_Protocols/index.md index 6124960f..7e58df6e 100644 --- a/docs/en/030_Supported_Protocols/index.md +++ b/docs/en/030_Supported_Protocols/index.md @@ -1,6 +1,6 @@ The Arsse was designed from the start as a server for multiple synchronization protocols which clients can make use of. Currently the following protocols are supported: -- [NextCloud News](NextCloud_News) +- [Nextcloud News](Nextcloud_News) - [Tiny Tiny RSS](Tiny_Tiny_RSS) - [Fever](Fever) diff --git a/docs/en/040_Compatible_Clients.md b/docs/en/040_Compatible_Clients.md index a293c7b8..279c25f5 100644 --- a/docs/en/040_Compatible_Clients.md +++ b/docs/en/040_Compatible_Clients.md @@ -127,13 +127,13 @@ The Arsse does not at this time have any first party clients. However, because T - NextCloud News + Nextcloud News Android ✔ ✘ ✘ -

Official Android client for NextCloud News.

+

Official Android client for Nextcloud News.

diff --git a/lib/REST.php b/lib/REST.php index 9212326d..07389baf 100644 --- a/lib/REST.php +++ b/lib/REST.php @@ -16,15 +16,15 @@ use Zend\Diactoros\Response\EmptyResponse; class REST { const API_LIST = [ - 'ncn' => [ // NextCloud News version enumerator + 'ncn' => [ // Nextcloud News version enumerator 'match' => '/index.php/apps/news/api', 'strip' => '/index.php/apps/news/api', - 'class' => REST\NextCloudNews\Versions::class, + 'class' => REST\NextcloudNews\Versions::class, ], - 'ncn_v1-2' => [ // NextCloud News v1-2 https://github.com/nextcloud/news/blob/master/docs/externalapi/Legacy.md + 'ncn_v1-2' => [ // Nextcloud News v1-2 https://github.com/nextcloud/news/blob/master/docs/externalapi/Legacy.md 'match' => '/index.php/apps/news/api/v1-2/', 'strip' => '/index.php/apps/news/api/v1-2', - 'class' => REST\NextCloudNews\V1_2::class, + 'class' => REST\NextcloudNews\V1_2::class, ], 'ttrss_api' => [ // Tiny Tiny RSS https://git.tt-rss.org/git/tt-rss/wiki/ApiReference 'match' => '/tt-rss/api', @@ -50,7 +50,7 @@ class REST { // NewsBlur http://www.newsblur.com/api // Unclear if clients exist: // Miniflux https://docs.miniflux.app/en/latest/api.html#api-reference - // NextCloud News v2 https://github.com/nextcloud/news/blob/master/docs/externalapi/External-Api.md + // Nextcloud News v2 https://github.com/nextcloud/news/blob/master/docs/externalapi/External-Api.md // BirdReader https://github.com/glynnbird/birdreader/blob/master/API.md // Feedbin v1 https://github.com/feedbin/feedbin-api/commit/86da10aac5f1a57531a6e17b08744e5f9e7db8a9 // Proprietary (centralized) entities: diff --git a/lib/REST/NextCloudNews/V1_2.php b/lib/REST/NextcloudNews/V1_2.php similarity index 99% rename from lib/REST/NextCloudNews/V1_2.php rename to lib/REST/NextcloudNews/V1_2.php index 29652d17..8e850d28 100644 --- a/lib/REST/NextCloudNews/V1_2.php +++ b/lib/REST/NextcloudNews/V1_2.php @@ -4,7 +4,7 @@ * See LICENSE and AUTHORS files for details */ declare(strict_types=1); -namespace JKingWeb\Arsse\REST\NextCloudNews; +namespace JKingWeb\Arsse\REST\NextcloudNews; use JKingWeb\Arsse\Arsse; use JKingWeb\Arsse\Service; @@ -22,7 +22,7 @@ use Zend\Diactoros\Response\JsonResponse as Response; use Zend\Diactoros\Response\EmptyResponse; class V1_2 extends \JKingWeb\Arsse\REST\AbstractHandler { - const REALM = "NextCloud News API v1-2"; + const REALM = "Nextcloud News API v1-2"; const VERSION = "11.0.5"; const ACCEPTED_TYPE = "application/json"; diff --git a/lib/REST/NextCloudNews/Versions.php b/lib/REST/NextcloudNews/Versions.php similarity index 96% rename from lib/REST/NextCloudNews/Versions.php rename to lib/REST/NextcloudNews/Versions.php index 77924bd4..78d4ac7f 100644 --- a/lib/REST/NextCloudNews/Versions.php +++ b/lib/REST/NextcloudNews/Versions.php @@ -4,7 +4,7 @@ * See LICENSE and AUTHORS files for details */ declare(strict_types=1); -namespace JKingWeb\Arsse\REST\NextCloudNews; +namespace JKingWeb\Arsse\REST\NextcloudNews; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ResponseInterface; diff --git a/sql/SQLite3/0.sql b/sql/SQLite3/0.sql index d9a9b9f0..623c502f 100644 --- a/sql/SQLite3/0.sql +++ b/sql/SQLite3/0.sql @@ -28,7 +28,7 @@ create table arsse_users_meta( ); create table arsse_folders( --- folders, used by NextCloud News and Tiny Tiny RSS +-- folders, used by Nextcloud News and Tiny Tiny RSS -- feed subscriptions may belong to at most one folder; -- in Tiny Tiny RSS folders may nest id integer primary key, -- sequence number @@ -69,9 +69,9 @@ create table arsse_subscriptions( added text not null default CURRENT_TIMESTAMP, -- time at which feed was added modified text not null default CURRENT_TIMESTAMP, -- time at which subscription properties were last modified title text, -- user-supplied title - order_type int not null default 0, -- NextCloud sort order + order_type int not null default 0, -- Nextcloud sort order pinned boolean not null default 0, -- whether feed is pinned (always sorts at top) - folder integer references arsse_folders(id) on delete cascade, -- TT-RSS category (nestable); the first-level category (which acts as NextCloud folder) is joined in when needed + folder integer references arsse_folders(id) on delete cascade, -- TT-RSS category (nestable); the first-level category (which acts as Nextcloud folder) is joined in when needed unique(owner,feed) -- a given feed should only appear once for a given owner ); @@ -109,9 +109,9 @@ create table arsse_marks( ); create table arsse_editions( --- IDs for specific editions of articles (required for at least NextCloud News) +-- IDs for specific editions of articles (required for at least Nextcloud News) -- every time an article is updated by its author, a new unique edition number is assigned --- with NextCloud News this prevents users from marking as read an article which has been +-- with Nextcloud News this prevents users from marking as read an article which has been -- updated since the client state was last refreshed id integer primary key, -- sequence number article integer not null references arsse_articles(id) on delete cascade, -- the article of which this is an edition diff --git a/sql/SQLite3/2.sql b/sql/SQLite3/2.sql index 14a253d1..1894126d 100644 --- a/sql/SQLite3/2.sql +++ b/sql/SQLite3/2.sql @@ -20,7 +20,7 @@ drop table arsse_users; alter table arsse_users_new rename to arsse_users; create table arsse_folders_new( --- folders, used by NextCloud News and Tiny Tiny RSS +-- folders, used by Nextcloud News and Tiny Tiny RSS -- feed subscriptions may belong to at most one folder; -- in Tiny Tiny RSS folders may nest id integer primary key, -- sequence number @@ -67,9 +67,9 @@ create table arsse_subscriptions_new( added text not null default CURRENT_TIMESTAMP, -- time at which feed was added modified text not null default CURRENT_TIMESTAMP, -- time at which subscription properties were last modified title text collate nocase, -- user-supplied title - order_type int not null default 0, -- NextCloud sort order + order_type int not null default 0, -- Nextcloud sort order pinned boolean not null default 0, -- whether feed is pinned (always sorts at top) - folder integer references arsse_folders(id) on delete cascade, -- TT-RSS category (nestable); the first-level category (which acts as NextCloud folder) is joined in when needed + folder integer references arsse_folders(id) on delete cascade, -- TT-RSS category (nestable); the first-level category (which acts as Nextcloud folder) is joined in when needed unique(owner,feed) -- a given feed should only appear once for a given owner ); insert into arsse_subscriptions_new select * from arsse_subscriptions; diff --git a/tests/cases/REST/NextCloudNews/PDO/TestV1_2.php b/tests/cases/REST/NextcloudNews/PDO/TestV1_2.php similarity index 54% rename from tests/cases/REST/NextCloudNews/PDO/TestV1_2.php rename to tests/cases/REST/NextcloudNews/PDO/TestV1_2.php index afc67516..a781a2bf 100644 --- a/tests/cases/REST/NextCloudNews/PDO/TestV1_2.php +++ b/tests/cases/REST/NextcloudNews/PDO/TestV1_2.php @@ -4,11 +4,11 @@ * See LICENSE and AUTHORS files for details */ declare(strict_types=1); -namespace JKingWeb\Arsse\TestCase\REST\NextCloudNews\PDO; +namespace JKingWeb\Arsse\TestCase\REST\NextcloudNews\PDO; -/** @covers \JKingWeb\Arsse\REST\NextCloudNews\V1_2 +/** @covers \JKingWeb\Arsse\REST\NextcloudNews\V1_2 * @group optional */ -class TestV1_2 extends \JKingWeb\Arsse\TestCase\REST\NextCloudNews\TestV1_2 { +class TestV1_2 extends \JKingWeb\Arsse\TestCase\REST\NextcloudNews\TestV1_2 { use \JKingWeb\Arsse\Test\PDOTest; } diff --git a/tests/cases/REST/NextCloudNews/TestV1_2.php b/tests/cases/REST/NextcloudNews/TestV1_2.php similarity index 99% rename from tests/cases/REST/NextCloudNews/TestV1_2.php rename to tests/cases/REST/NextcloudNews/TestV1_2.php index 5ae10feb..b18f852d 100644 --- a/tests/cases/REST/NextCloudNews/TestV1_2.php +++ b/tests/cases/REST/NextcloudNews/TestV1_2.php @@ -4,7 +4,7 @@ * See LICENSE and AUTHORS files for details */ declare(strict_types=1); -namespace JKingWeb\Arsse\TestCase\REST\NextCloudNews; +namespace JKingWeb\Arsse\TestCase\REST\NextcloudNews; use JKingWeb\Arsse\Arsse; use JKingWeb\Arsse\User; @@ -14,13 +14,13 @@ use JKingWeb\Arsse\Misc\Date; use JKingWeb\Arsse\Context\Context; use JKingWeb\Arsse\Db\ExceptionInput; use JKingWeb\Arsse\Db\Transaction; -use JKingWeb\Arsse\REST\NextCloudNews\V1_2; +use JKingWeb\Arsse\REST\NextcloudNews\V1_2; use Psr\Http\Message\ResponseInterface; use Zend\Diactoros\ServerRequest; use Zend\Diactoros\Response\JsonResponse as Response; use Zend\Diactoros\Response\EmptyResponse; -/** @covers \JKingWeb\Arsse\REST\NextCloudNews\V1_2 */ +/** @covers \JKingWeb\Arsse\REST\NextcloudNews\V1_2 */ class TestV1_2 extends \JKingWeb\Arsse\Test\AbstractTest { protected $h; protected $feeds = [ // expected sample output of a feed list from the database, and the resultant expected transformation by the REST handler diff --git a/tests/cases/REST/NextCloudNews/TestVersions.php b/tests/cases/REST/NextcloudNews/TestVersions.php similarity index 90% rename from tests/cases/REST/NextCloudNews/TestVersions.php rename to tests/cases/REST/NextcloudNews/TestVersions.php index dff02afa..4adaf0d0 100644 --- a/tests/cases/REST/NextCloudNews/TestVersions.php +++ b/tests/cases/REST/NextcloudNews/TestVersions.php @@ -4,15 +4,15 @@ * See LICENSE and AUTHORS files for details */ declare(strict_types=1); -namespace JKingWeb\Arsse\TestCase\REST\NextCloudNews; +namespace JKingWeb\Arsse\TestCase\REST\NextcloudNews; -use JKingWeb\Arsse\REST\NextCloudNews\Versions; +use JKingWeb\Arsse\REST\NextcloudNews\Versions; use Psr\Http\Message\ResponseInterface; use Zend\Diactoros\ServerRequest; use Zend\Diactoros\Response\JsonResponse as Response; use Zend\Diactoros\Response\EmptyResponse; -/** @covers \JKingWeb\Arsse\REST\NextCloudNews\Versions */ +/** @covers \JKingWeb\Arsse\REST\NextcloudNews\Versions */ class TestVersions extends \JKingWeb\Arsse\Test\AbstractTest { public function setUp() { self::clearData(); diff --git a/tests/cases/REST/TestREST.php b/tests/cases/REST/TestREST.php index fb0dc2f7..8a35720b 100644 --- a/tests/cases/REST/TestREST.php +++ b/tests/cases/REST/TestREST.php @@ -11,7 +11,7 @@ use JKingWeb\Arsse\User; use JKingWeb\Arsse\REST; use JKingWeb\Arsse\REST\Handler; use JKingWeb\Arsse\REST\Exception501; -use JKingWeb\Arsse\REST\NextCloudNews\V1_2 as NCN; +use JKingWeb\Arsse\REST\NextcloudNews\V1_2 as NCN; use JKingWeb\Arsse\REST\TinyTinyRSS\API as TTRSS; use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ResponseInterface; @@ -41,10 +41,10 @@ class TestREST extends \JKingWeb\Arsse\Test\AbstractTest { 'unstripped' => ['match' => "/full/url", 'strip' => "", 'class' => "UnstrippedProtocol"], ]; return [ - [$real, "/index.php/apps/news/api/v1-2/feeds", ["ncn_v1-2", "/feeds", \JKingWeb\Arsse\REST\NextCloudNews\V1_2::class]], - [$real, "/index.php/apps/news/api/v1-2", ["ncn", "/v1-2", \JKingWeb\Arsse\REST\NextCloudNews\Versions::class]], - [$real, "/index.php/apps/news/api/", ["ncn", "/", \JKingWeb\Arsse\REST\NextCloudNews\Versions::class]], - [$real, "/index%2Ephp/apps/news/api/", ["ncn", "/", \JKingWeb\Arsse\REST\NextCloudNews\Versions::class]], + [$real, "/index.php/apps/news/api/v1-2/feeds", ["ncn_v1-2", "/feeds", \JKingWeb\Arsse\REST\NextcloudNews\V1_2::class]], + [$real, "/index.php/apps/news/api/v1-2", ["ncn", "/v1-2", \JKingWeb\Arsse\REST\NextcloudNews\Versions::class]], + [$real, "/index.php/apps/news/api/", ["ncn", "/", \JKingWeb\Arsse\REST\NextcloudNews\Versions::class]], + [$real, "/index%2Ephp/apps/news/api/", ["ncn", "/", \JKingWeb\Arsse\REST\NextcloudNews\Versions::class]], [$real, "/index.php/apps/news/", []], [$real, "/index!php/apps/news/api/", []], [$real, "/tt-rss/api/index.php", ["ttrss_api", "/index.php", \JKingWeb\Arsse\REST\TinyTinyRSS\API::class]], diff --git a/tests/phpunit.dist.xml b/tests/phpunit.dist.xml index 1ede519d..27c31d9d 100644 --- a/tests/phpunit.dist.xml +++ b/tests/phpunit.dist.xml @@ -112,9 +112,9 @@ cases/REST/TestREST.php
- cases/REST/NextCloudNews/TestVersions.php - cases/REST/NextCloudNews/TestV1_2.php - cases/REST/NextCloudNews/PDO/TestV1_2.php + cases/REST/NextcloudNews/TestVersions.php + cases/REST/NextcloudNews/TestV1_2.php + cases/REST/NextcloudNews/PDO/TestV1_2.php cases/REST/TinyTinyRSS/TestSearch.php From 3cb8dfafe25c2c25b0ccb54f31b93ae0691d7f04 Mon Sep 17 00:00:00 2001 From: "J. King" Date: Fri, 6 Dec 2019 17:43:50 -0500 Subject: [PATCH 11/12] Change download URL in manual --- docs/en/020_Getting_Started/020_Download_and_Installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/020_Getting_Started/020_Download_and_Installation.md b/docs/en/020_Getting_Started/020_Download_and_Installation.md index 8f0cadcf..ed47a7d1 100644 --- a/docs/en/020_Getting_Started/020_Download_and_Installation.md +++ b/docs/en/020_Getting_Started/020_Download_and_Installation.md @@ -2,7 +2,7 @@ # Downloading The Arse -The latest version of The Arsse can be downloaded [from our releases page](https://code.mensbeam.com/MensBeam/arsse/releases). The attachments named _arsse-x.x.x.tar.gz_ should be used rather than those marked "Source Code". +The latest version of The Arsse can be downloaded [from our Web site](https://thearsse.com/). If installing an older release from our archives, the attachments named _arsse-x.x.x.tar.gz_ should be used rather than those marked "Source Code". Installation from source code is also possible, but the release packages are recommended. From 3ee89bf669ab14e66609cd448065a5c1fc9cea21 Mon Sep 17 00:00:00 2001 From: "J. King" Date: Fri, 6 Dec 2019 17:46:53 -0500 Subject: [PATCH 12/12] Version bump --- CHANGELOG | 2 +- lib/Arsse.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 21ee2e8d..7aac0189 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,4 @@ -Version 0.8.2 (????-??-??) +Version 0.8.2 (2019-12-07) ========================== Bug fixes: diff --git a/lib/Arsse.php b/lib/Arsse.php index 68088311..c122e897 100644 --- a/lib/Arsse.php +++ b/lib/Arsse.php @@ -7,7 +7,7 @@ declare(strict_types=1); namespace JKingWeb\Arsse; class Arsse { - const VERSION = "0.8.1"; + const VERSION = "0.8.2"; /** @var Lang */ public static $lang;