249 Commits

Author SHA1 Message Date
J. King 114dcc568f Update dependencies 1 month ago
Dustin Wilson 1331b14a04 Reverting for now 1 month ago
Dustin Wilson 035feae0ce Removed postcss in favor of sass for building manual theme 1 month ago
J. King 8e063bea2f Appease GitHub again 1 month ago
J. King 4a9e66d872 Fix inconsistent grammar 2 months ago
J. King fa4ab3218a Version bump 2 months ago
J. King c4260323bc Answer 201 to PUTs like Miniflux 2 months ago
J. King abc291460c Update Web server configuration in manual 2 months ago
J. King bff3e21cd2 Date release 2 months ago
J. King 764b604edd Note Fiery Feeds' support for HTTP auth with Fever 2 months ago
J. King 4b0571299a Add results of client testing 2 months ago
J. King 2e4c57b75b Work around Microflux for Miniflux 2 months ago
J. King dcb81ea043 Only provide icon ID when there is data 2 months ago
J. King 77a9bb801d Defer testing of Maxiflux 2 months ago
J. King f90b78a976 Fix compatibility issues 2 months ago
J. King e6b4edd160 Supress deprecation messages during runtime 2 months ago
J. King 8aca42c882 Minor fixes for correctness 2 months ago
J. King 458126416c Fix PostgreSQL coverage annotations 2 months ago
J. King 6b7257a6c4 Work around more MySQL stupidity 2 months ago
J. King 5cfa01f4d5 Work around MySQL stupidity 2 months ago
J. King 64ca5f1be0 Fix strict comparison failures 2 months ago
J. King ed285ee28b Shut Robo up 2 months ago
J. King 4642b9fd1c PRovide upgrade path for assertRegExp 2 months ago
J. King 3a1fcaac39 Remove last uses of Phake 2 months ago
J. King 75148bfbc6 Convert NCNv1 tests to PHony 2 months ago
J. King 95812b8ba3 Convert last TT-RSS test 2 months ago
J. King a322d034f3 More TT-RSS test conversions to Phony 2 months ago
J. King 2d951fb071 More TT-RSS test conversions 3 months ago
J. King c7350c6d57 Convert Miniflux tests to using Phony 3 months ago
J. King 9dfe3919cf Progress on TT-RSS tests 3 months ago
J. King e90aa585b2 PArtial rewrite of TT-RSS tests 3 months ago
J. King 2348786a92 Start on replacing Phake with Phony 3 months ago
J. King 9b369d902f Update tooling for PHP 8 3 months ago
J. King dab4cb21e6 Geekttrss seems to work 3 months ago
J. King d836d6a243 Add more clients to the untested list 3 months ago
J. King 50b2ca4500 Document tokens and metadata in the manual 3 months ago
J. King 9c0a3b7a57 Fix typo 3 months ago
J. King 3ba82b7c6d Fix CLI bootstrap problem 3 months ago
J. King fa6d641634 Implement CLI for tokens 3 months ago
J. King 3795b1ccd8 Simplify CLI command processing 3 months ago
J. King e8ed716ae6 Fix errors in CLI documentation 3 months ago
J. King 97d1de46f8 Fill in upgrade notes 3 months ago
J. King 68422390da Implement CLI for user metadata 3 months ago
J. King b7c7915a65 Enforce admin rquirements in NCNv1 3 months ago
J. King a760bf2ded Implement "t" and "f" booleans in TT-RSS 3 months ago
J. King 9ad4a37ddf Tests and fixes for Miniflux with PDO 3 months ago
J. King 687995c497 More potential Miniflux Web clints 3 months ago
J. King 29761d767a Update documentation 3 months ago
J. King dad74c2616 Implement Fever icons 3 months ago
J. King 90034ac1f8 Style fixes 3 months ago
J. King 211cea648e Implement TT-RSS API level 15 3 months ago
J. King f2e5d567ec Update sample Web server configuration 3 months ago
J. King eae0ba4b68 Tests fortoken operations 3 months ago
J. King 9cc779a717 Import/export tests 3 months ago
J. King 37fd2ad4e9 Tests for new exception features 3 months ago
J. King 6c2de89f3e Revert copy-paste corruption 3 months ago
J. King 54a6fcc0d6 Consolidate object factoriesinto one place 3 months ago
J. King a0d563e468 Update dependencies 3 months ago
J. King b4ae988b79 Prototype OPML handling 3 months ago
J. King 681654f249 Documentation update 3 months ago
J. King dd29ef6c1b Add feed refreshing stubs 3 months ago
J. King ab1cf7447b Implement article marking 3 months ago
J. King 334a585cb8 Implement single-entry querying 3 months ago
J. King a7d05a7717 Feed- and category-specific entry list routes 3 months ago
J. King 00ad1cc5b9 Last tests for article querying 3 months ago
J. King d4a6909cf6 Positional article queries tests 3 months ago
J. King e42e25d333 More article query tests 3 months ago
J. King f7b3a473a9 Clarify ordering syntax rationale 3 months ago
J. King af51377fe9 First set of article query tests 3 months ago
J. King 23ca6bb77b Count articles without offset or limit 3 months ago
J. King 0e7abfa8f9 Largely complete article querying 3 months ago
J. King a43f8797c5 Add ability to sort by folder ID or name 3 months ago
J. King ed27e0aaaa Sort nulls consistently 3 months ago
J. King 9d7ada7f59 Partial implementation of article sorting 3 months ago
J. King 007183450a Context and column list for article queries 3 months ago
J. King 197cbba77d Document article column definitions 3 months ago
J. King ddbcb598e8 Match more closely Miniflux query string behaviour 3 months ago
J. King bb89083444 Perform strict validation of query parameters 3 months ago
J. King 1e924bed83 Partial query string normalization 3 months ago
J. King 3b2190ca10 Include folder names directly in subscription list 4 months ago
J. King ad094f5217 Don't return icons without types at all 4 months ago
J. King cd5f13f4b9 Tests for icon querying 4 months ago
J. King 76f1cc8e91 Adjust users of subscriptionIcon 4 months ago
J. King cc2672fb0a Improve icon fetching interface 4 months ago
J. King 1eea3b3a4c Fix feed update test 4 months ago
J. King 8e749bb73c Report 404 on icons for absence of data 4 months ago
J. King bdf9c0e9d2 Prototype feed icon querying 4 months ago
J. King 9197a8d08b Implement feed deletion 4 months ago
J. King 8eebb75b18 Implement feed editing 4 months ago
J. King 5a8a044a92 Implement single-feed querying 4 months ago
J. King a646ad77b7 Use a read transaction when computing filter rules 4 months ago
J. King cca4b205e4 Correct error output of getCategoryFeeds 4 months ago
J. King a34edcb0d1 Last tests for feed creation 4 months ago
J. King 7893b5f59d More feed adding tests 4 months ago
J. King 36cc4928b9 Test feed fetching errors for Miniflux 4 months ago
J. King 727864f401 Implement feed listing by category 4 months ago
J. King 4972c79e32 Allow simpler feed exception creation 4 months ago
J. King 6936f365e4 Add calls coming in next version of Miniflux 4 months ago
J. King fd25be5c27 Basic tests for feed creation 4 months ago
J. King e7b2f54183 Prototype feed creation 4 months ago
J. King 14d2d19ae1 Tests for Miniflux feed listing 4 months ago
J. King 2cf4bf0d4d Prototype Miniflux feed listing 4 months ago
J. King 86897af0b3 Add ability to enable scraper 4 months ago
J. King 7897585d98 Test scraping 4 months ago
J. King 76f70119fd More work on scraping 4 months ago
J. King 4cb23dd198 Partial implementation of proper content scraping 4 months ago
J. King e74b44cc39 Change favicon to icon_url and add icon_id 4 months ago
J. King 2536c9fe03 Last tests for article filters 4 months ago
J. King 9f2b8d4f83 Imprement setting of filter rules 4 months ago
J. King 618fd67f80 Set marks for filtered articles on feed refresh 4 months ago
J. King 7a6186f2d7 Update Miniflux documentation 4 months ago
J. King 097362881b Tests for filtering during feed parsing 4 months ago
J. King a4146ec129 Start on test for filtering during feed parsing 4 months ago
J. King 9e29235d87 Don't fetch from example.com during tests 4 months ago
J. King 549c7bdc72 Style fixes 4 months ago
J. King 4f34b4ff29 Rule refactoring 4 months ago
J. King c1eff8479c Simplify configuration property caching 4 months ago
J. King 6dba8aa66b Fixes for rules 4 months ago
J. King 461e256052 Work around MySQL syntax weirdness 4 months ago
J. King 47ae65b9d3 Function to apply filter rules 4 months ago
J. King b12f87e231 Support Xdebug 3.x for coverage 4 months ago
J. King ffc5579a7a Partial implementation of filter rule handling 4 months ago
J. King 7e17332714 Implement marking all as read for Miniflux 4 months ago
J. King 31f0539dc0 Implement Miniflux user deletion 4 months ago
J. King bf95b134bd Fix up error codes for category changes 4 months ago
J. King 197922f92f Implement Miniflux user creation 4 months ago
J. King ee0c3c9449 Tests and fixes for user modification 4 months ago
J. King cc648e1c3a Update tooling 5 months ago
J. King 67f577d573 Bump emulated Miniflux version 5 months ago
J. King f58005640a Prototype user modification 5 months ago
J. King 2946d950f2 Forbid more user names 5 months ago
J. King 405f3af257 Invalidate sessions and Fever passwords when renaming users 5 months ago
J. King 5ec04d33c6 Add backend functionality to rename users 5 months ago
J. King 88cf3c6dae Test filter rule retrieval 5 months ago
J. King d66cf32c1f Style fixes 5 months ago
J. King a81760e39d Aggressivly clean up hidden articles 5 months ago
J. King ade0402210 Adjust TT-RSS to ignore hidden items 5 months ago
J. King f33359f3e3 Move some Miniflux features to abstract handler 5 months ago
J. King b7ce6f5c79 Adjust Fever to ignore hidden items 5 months ago
J. King b2fae336e8 Adjust Nextcloud News to ignore hidden items 5 months ago
J. King f0bfe1fdff Simplify editionLatest Database method 5 months ago
J. King 8527c83976 Exclude hiddens from subscription unread count 5 months ago
J. King 97010d8822 Tests for marking articles hidden 5 months ago
J. King 86c4a30744 Adjust articleStarred function to discount hidden 5 months ago
J. King ffc98daff3 Adjust article marking tests to account for new hidden mark 5 months ago
J. King 8ae3740d5f Implement querying articles by hidden mark 5 months ago
J. King d5cd5b6a17 Implement hidden marks 5 months ago
J. King c43d0dcae3 Groundwork for filtering rules 5 months ago
J. King 95a2018e75 Implement caategory marking as read 5 months ago
J. King 5124f76b70 Implementcategory deletion 5 months ago
J. King eb079166de Tests for category renaming 5 months ago
J. King 3ebb46f48e Some work on categories 5 months ago
J. King 2e6c5d2ad2 Query Miniflux categories 5 months ago
J. King 4b73698381 More user query tests 5 months ago
J. King ebdfad535c More Miniflux user tests 5 months ago
J. King 7c841b5fc2 Test for listing users 5 months ago
J. King 5c83655541 Add modification timestamp to user metadata 5 months ago
J. King d85988f09d Prototype Miniflux user querying 5 months ago
J. King 2eedf7d38c Finally fix MySQL 5 months ago
J. King e9d449a8ba Fix user manager and tests 5 months ago
J. King ce68566fcb Hopefully fix MySQL 5 months ago
J. King a431243421 Fixes for MySQL and PostgreSQL 5 months ago
J. King fcf1260dab Adjust database portion of user property manager 5 months ago
J. King 978929aabd WIP redesign of user properties 5 months ago
J. King 0f3e0411f0 Document some differences frrom Miniflux 5 months ago
J. King 94154d4354 Implement Miniflux feed discovery 5 months ago
J. King 669e17a1f6 Add ability to discover multiple feeds 5 months ago
J. King 2a0d6e6599 OPTIONS tests 5 months ago
J. King 7fa5523a7d Simplify handling of invalid paths and methods 5 months ago
J. King def07bb1ad Tests for Miniflux authentication 6 months ago
J. King 8c059773bb Update tooling 6 months ago
J. King 90117b5cd7 Fix Miniflux strip value 6 months ago
J. King 06dee77bac First tests for Miniflux 6 months ago
J. King f6cd2b87ce Port token data from Microsub branch 6 months ago
J. King d4bcdcdadd Fix TTRSS coverage 6 months ago
J. King d3ebb1bd56 Last set of tests for user management. Fixes #180 6 months ago
J. King e16df90bae Style fixes 6 months ago
J. King 180b4ecc9b More user tests 6 months ago
J. King 27d9c046d5 More work on user management 6 months ago
J. King 7f2117adaa Differentiate between duplicate/missing users and other failure modes 6 months ago
J. King 351f972512 Tests for internal user driver 6 months ago
J. King 4baf5fa2f9 Tests for new user functionality in Database 6 months ago
J. King dde9d7a28a Refinements to user manager 6 months ago
J. King eb2fe522bf Last bits of the new user metadata handling 6 months ago
J. King 5a17efc7b5 Clean up user driver API 6 months ago
J. King 771f79323c Strip out remnants of the authorizer 6 months ago
J. King 576d7e16a8 Fix handling of bytea-typed nulls 6 months ago
J. King 1b1789988a More client compatibility updates 6 months ago
J. King 532ce4a502 Prototype changes to user management 6 months ago
J. King ee050e505c Add more Android clients to manual 6 months ago
J. King 9fb185a8e2 Add TT-RSS Web client to manual 6 months ago
J. King b62c11a43e Lasts tests for icon cache; fixes #177 6 months ago
J. King 1d3725341a Fix detection of Xdebug for coverage 6 months ago
J. King 311910795a More tests for icon cache 6 months ago
J. King 3d3c20de5c Don't anticipate API features 6 months ago
J. King 4d532cba3f Initial Miniflux documentation 6 months ago
J. King e861cca53d Integrate schema change necessary for microsub 6 months ago
J. King b24c469dca Update changelog 6 months ago
J. King 8f739cec85 Excluse empty-string URLs from icons table 6 months ago
J. King 424b14d2b4 Clean up use of subscriptionFavicon 6 months ago
J. King dd1a80f279 Consolidate subscription icon querying 6 months ago
J. King 4fc208d940 More consistent icon API 6 months ago
J. King c3a57ca68b Tests for icon cache population 6 months ago
J. King bd650765e1 Generalize icon fetching tests 6 months ago
J. King 50fd127ac4 Test for icon fetching 6 months ago
J. King 7c40c81fb3 Add icons to the database upon feed update 6 months ago
J. King c25782f98c Partial icon handling skeleton 6 months ago
J. King af675479b8 Remove excess whitespace 6 months ago
J. King 2438f35f3d Add icon cache to database 6 months ago
J. King 5e60da00a9 Merge branch 'master' into miniflux 6 months ago
J. King b5f959aabf Fix blob tests 6 months ago
J. King 41bcffd6fb Correctly query PostgreSQL byte arrays 6 months ago
J. King c21ae3eca9 Correctly send binary data to PostgreSQL 6 months ago
J. King c92bb12a11 Prototype Miniflux dispatcher 6 months ago
J. King 905f8938e2 Typo 6 months ago
J. King 8ad7fc81a8 Initially mapping out of Miniflux API 6 months ago
J. King 16d2e01668 New schema for PostgreSQL and MySQL 7 months ago
J. King 4db1b95cf4 Add numeric IDs and other Miniflux data to SQLite schema 7 months ago
J. King 3ac010d5b6 Fix tests in absence of database extensions 7 months ago
J. King b58a326461 Prepare for schema changes 7 months ago
J. King e9682bc601 Correct typos 7 months ago
J. King 5a09dcb3ed Update changelog 7 months ago
J. King e3ebd89aa8 Add NewsFlash to supported clients 7 months ago
J. King 0117e7f9bf Relax Fever's HTTP correctness for client compat 7 months ago
J. King 7ef02e1d65 Revert wishful thinking 7 months ago
J. King 3d909da1e5 Update iOS/macOS client URLs 7 months ago
J. King 6520ed38fb Update dependencies 7 months ago
J. King 9b11001402 Fix sample Nginx configuration 7 months ago
J. King 2e0ed5e923 Add reference to MariaDB missing features 8 months ago
J. King afbf3be031 Use 'union all' instead of 'union' in queries 8 months ago
J. King 6ee7ca4aa4 Update PicoFeed to latest release version 8 months ago
J. King 9bc1373998 Version bump 8 months ago
J. King 0f3ada598e Work around Picofeed bug 8 months ago
J. King d29917caf8 Update Yarn again 8 months ago
J. King e75d15e552 Update dependencies 8 months ago
J. King 77aef9c995 Yarn update 10 months ago
J. King ee549cdee7 Appease GitHub (yet again) 11 months ago
J. King 2620314583 GitHub should now be kept in sync at all times 1 year ago
J. King 20fe65b67e Make changelog point to manual instead of readme 1 year ago
J. King 66a4f71ef3 Minor simplification 1 year ago
J. King 5f35a680e3 Appease GitHub (again) 1 year ago
J. King c1e27684d4 Appease GitHub 1 year ago
J. King 1268e5fd73 Finally fix DST error in tests 1 year ago
J. King 7777ff962f Group more style rules under PSR-12 1 year ago
J. King e60f7ea03f Add class constant visibility 1 year ago
J. King bc53a2d24a Style fixes 1 year ago
J. King a7f69c845f Use a more specific house style 1 year ago
J. King 3aa17ee70f Whitespace 1 year ago
J. King e8091fa740 Speed up coverage slightly. 1 year ago
  1. 1
      .gitignore
  2. 62
      .php_cs.dist
  3. 53
      CHANGELOG
  4. 2
      README.md
  5. 23
      RoboFile.php
  6. 27
      UPGRADING
  7. 7
      arsse.php
  8. 4
      composer.json
  9. 508
      composer.lock
  10. 8
      dist/apache.conf
  11. 18
      dist/nginx.conf
  12. 1
      docs/en/010_About.md
  13. 26
      docs/en/020_Getting_Started/030_Web_Server_Configuration.md
  14. 2
      docs/en/020_Getting_Started/040_Database_Setup/020_MySQL.md
  15. 37
      docs/en/025_Using_The_Arsse/010_Managing_Users.md
  16. 60
      docs/en/030_Supported_Protocols/005_Miniflux.md
  17. 1
      docs/en/030_Supported_Protocols/010_Nextcloud_News.md
  18. 3
      docs/en/030_Supported_Protocols/030_Fever.md
  19. 1
      docs/en/030_Supported_Protocols/index.md
  20. 230
      docs/en/040_Compatible_Clients.md
  21. 2
      docs/theme/arsse/arsse.css
  22. 4
      docs/theme/src/arsse.scss
  23. 27
      lib/AbstractException.php
  24. 5
      lib/Arsse.php
  25. 265
      lib/CLI.php
  26. 124
      lib/Conf.php
  27. 5
      lib/Context/Context.php
  28. 1183
      lib/Database.php
  29. 6
      lib/Db/AbstractDriver.php
  30. 16
      lib/Db/AbstractStatement.php
  31. 13
      lib/Db/Driver.php
  32. 18
      lib/Db/MySQL/Driver.php
  33. 2
      lib/Db/MySQL/PDODriver.php
  34. 2
      lib/Db/MySQL/Result.php
  35. 8
      lib/Db/MySQL/Statement.php
  36. 4
      lib/Db/PDODriver.php
  37. 4
      lib/Db/PDOError.php
  38. 2
      lib/Db/PDOResult.php
  39. 6
      lib/Db/PDOStatement.php
  40. 14
      lib/Db/PostgreSQL/Driver.php
  41. 3
      lib/Db/PostgreSQL/PDODriver.php
  42. 26
      lib/Db/PostgreSQL/PDOResult.php
  43. 14
      lib/Db/PostgreSQL/PDOStatement.php
  44. 16
      lib/Db/PostgreSQL/Result.php
  45. 7
      lib/Db/PostgreSQL/Statement.php
  46. 2
      lib/Db/ResultEmpty.php
  47. 4
      lib/Db/SQLState.php
  48. 17
      lib/Db/SQLite3/Driver.php
  49. 1
      lib/Db/SQLite3/PDODriver.php
  50. 2
      lib/Db/SQLite3/Result.php
  51. 12
      lib/Db/SQLite3/Statement.php
  52. 16
      lib/Db/Statement.php
  53. 7
      lib/Factory.php
  54. 100
      lib/Feed.php
  55. 49
      lib/Feed/Exception.php
  56. 8
      lib/ImportExport/AbstractImportExport.php
  57. 4
      lib/ImportExport/OPML.php
  58. 10
      lib/Lang.php
  59. 2
      lib/Misc/Date.php
  60. 1
      lib/Misc/Query.php
  61. 2
      lib/Misc/URL.php
  62. 65
      lib/Misc/ValueInfo.php
  63. 34
      lib/REST.php
  64. 22
      lib/REST/AbstractHandler.php
  65. 82
      lib/REST/Fever/API.php
  66. 19
      lib/REST/Miniflux/ErrorResponse.php
  67. 37
      lib/REST/Miniflux/Status.php
  68. 31
      lib/REST/Miniflux/Token.php
  69. 1206
      lib/REST/Miniflux/V1.php
  70. 101
      lib/REST/NextcloudNews/V1_2.php
  71. 2
      lib/REST/NextcloudNews/Versions.php
  72. 414
      lib/REST/TinyTinyRSS/API.php
  73. 11
      lib/REST/TinyTinyRSS/Icon.php
  74. 21
      lib/REST/TinyTinyRSS/Search.php
  75. 4
      lib/Rule/Exception.php
  76. 85
      lib/Rule/Rule.php
  77. 6
      lib/Service.php
  78. 173
      lib/User.php
  79. 89
      lib/User/Driver.php
  80. 2
      lib/User/ExceptionConflict.php
  81. 2
      lib/User/ExceptionInput.php
  82. 57
      lib/User/Internal/Driver.php
  83. 55
      locale/en.php
  84. 29
      package.json
  85. 56
      sql/MySQL/6.sql
  86. 55
      sql/PostgreSQL/6.sql
  87. 116
      sql/SQLite3/6.sql
  88. 9
      tests/bootstrap.php
  89. 264
      tests/cases/CLI/TestCLI.php
  90. 16
      tests/cases/Conf/TestConf.php
  91. 5
      tests/cases/Database/AbstractTest.php
  92. 893
      tests/cases/Database/SeriesArticle.php
  93. 114
      tests/cases/Database/SeriesCleanup.php
  94. 161
      tests/cases/Database/SeriesFeed.php
  95. 53
      tests/cases/Database/SeriesFolder.php
  96. 97
      tests/cases/Database/SeriesIcon.php
  97. 107
      tests/cases/Database/SeriesLabel.php
  98. 30
      tests/cases/Database/SeriesSession.php
  99. 366
      tests/cases/Database/SeriesSubscription.php
  100. 72
      tests/cases/Database/SeriesTag.php

1
.gitignore

@ -26,7 +26,6 @@ $RECYCLE.BIN/
.DS_Store
.AppleDouble
.LSOverride
Icon
._*
.Spotlight-V100
.Trashes

62
.php_cs.dist

@ -3,6 +3,7 @@
* Copyright 2017 J. King, Dustin Wilson et al.
* See LICENSE and AUTHORS files for details */
declare(strict_types=1);
namespace JKingWeb\Arsse;
const BASE = __DIR__.DIRECTORY_SEPARATOR;
@ -15,10 +16,63 @@ $paths = [
BASE."tests",
];
$rules = [
// house rules where PSR series is silent
'align_multiline_comment' => ['comment_type' => "phpdocs_only"],
'array_syntax' => ['syntax' => "short"],
'binary_operator_spaces' => [
'default' => "single_space",
'operators' => ['=>' => "align_single_space"],
],
'cast_spaces' => ['space' => "single"],
'concat_space' => ['spacing' => "none"],
'list_syntax' => ['syntax' => "short"],
'magic_constant_casing' => true,
'magic_method_casing' => true,
'modernize_types_casting' => true,
'native_function_casing' => true,
'native_function_type_declaration_casing' => true,
'no_binary_string' => true,
'no_blank_lines_after_phpdoc' => true,
'no_empty_comment' => true,
'no_empty_phpdoc' => true,
'no_extra_blank_lines' => true, // this could probably use more configuration
'no_mixed_echo_print' => ['use' => "echo"],
'no_short_bool_cast' => true,
'no_trailing_comma_in_singleline_array' => true,
'no_unneeded_control_parentheses' => true,
'no_unneeded_curly_braces' => true,
'no_unused_imports' => true,
'no_whitespace_before_comma_in_array' => true,
'normalize_index_brace' => true,
'object_operator_without_whitespace' => true,
'pow_to_exponentiation' => true,
'set_type_to_cast' => true,
'standardize_not_equals' => true,
'trailing_comma_in_multiline_array' => true,
'unary_operator_spaces' => true,
'yoda_style' => false,
// PSR standard to apply
'@PSR2' => true,
'braces' => ['position_after_functions_and_oop_constructs' => "same"],
'function_declaration' => ['closure_function_spacing' => "none"],
];
// PSR-12 rules; php-cs-fixer does not yet support PSR-12 natively
'compact_nullable_typehint' => true,
'declare_equal_normalize' => ['space' => "none"],
'function_typehint_space' => true,
'lowercase_cast' => true,
'lowercase_static_reference' => true,
'no_alternative_syntax' => true,
'no_empty_statement' => true,
'no_leading_import_slash' => true,
'no_leading_namespace_whitespace' => true,
'no_whitespace_in_blank_line' => true,
'return_type_declaration' => ['space_before' => "none"],
'single_trait_insert_per_statement' => true,
'short_scalar_cast' => true,
'visibility_required' => ['elements' => ["const", "property", "method"]],
// house exceptions to PSR rules
'braces' => ['position_after_functions_and_oop_constructs' => "same"],
'function_declaration' => ['closure_function_spacing' => "none"],
'new_with_braces' => false, // no option to specify absence of braces
];
$finder = \PhpCsFixer\Finder::create();
foreach ($paths as $path) {
@ -28,4 +82,4 @@ foreach ($paths as $path) {
$finder = $finder->in($path);
}
}
return \PhpCsFixer\Config::create()->setRules($rules)->setFinder($finder);
return \PhpCsFixer\Config::create()->setRiskyAllowed(true)->setRules($rules)->setFinder($finder);

53
CHANGELOG

@ -1,3 +1,50 @@
Version 0.9.1 (2021-03-18)
==========================
Bug fixes:
- Respond to PUT requests with 201 rather than 200 in Miniflux
Changes:
- Correct Web server configuration in manual
Version 0.9.0 (2021-03-06)
==========================
New features:
- Support for the Miniflux protocol (see manual for details)
- Support for API level 15 of Tiny Tiny RSS
- Support for feed icons in Fever
- Command-line functionality for managing user metadata
- Command-line functionality for managing Miniflux login tokens
Bug fixes:
- Further relax Fever HTTP correctness, to fix more clients
- Use icons specified in Atom feeds when available
- Do not return null as subscription unread count
- Explicitly forbid U+003A COLON and control characters in usernames, for
compatibility with RFC 7617
- Never return 401 in response to an OPTIONS request
- Accept "t" and "f" as booleans in Tiny Tiny RSS
Changes:
- Administrator account requirements for Nextcloud News functionality are
now enforced
- E_DEPRECATED is now suppressed for compatibility with PHP 8 until affected
dependencies can be replaced
Version 0.8.5 (2020-10-27)
==========================
Bug fixes:
- Relax Fever HTTP correctness, to fix some clients
- Add the QUERY_STRING FastCGI parameter to the sample Nginx configuration
Version 0.8.4 (2020-09-09)
==========================
Bug fixes:
- Don't crash updating feeds cached without ETag (regression since 0.8.3)
Version 0.8.3 (2020-02-16)
==========================
@ -31,7 +78,7 @@ Version 0.8.0 (2019-07-26)
==========================
New features:
- Support for the Fever protocol (see README.md for details)
- Support for the Fever protocol (see manual for details)
- Command line functionality for clearing a password, disabling the account
- Command line options for dealing with Fever passwords
- Command line functionality for importing and exporting OPML
@ -123,7 +170,7 @@ Version 0.4.0 (2018-10-26)
==========================
New features:
- Support for HTTP authentication in Tiny Tiny RSS (see README.md for details)
- Support for HTTP authentication in Tiny Tiny RSS (see manual for details)
- New userHTTPAuthRequired and userSessionEnforced settings
Version 0.3.1 (2018-07-22)
@ -169,7 +216,7 @@ Version 0.2.0 (2017-11-30)
==========================
New features:
- Support for the Tiny Tiny RSS protocol (see README.md for details)
- Support for the Tiny Tiny RSS protocol (see manual for details)
- Support for HTTP OPTIONS requests in all protocols
Bug fixes:

2
README.md

@ -6,7 +6,7 @@ Information on how to install and use the software can be found in [the manual](
# Installing from source
The main repository for The Arsse can be found at [code.mensbeam.com](https://code.mensbeam.com/MensBeam/arsse/), with a mirror also available [at GitHub](https://github.com/mensbeam/arsse/). The main repository is preferred, as the GitHub mirror can sometimes be out of date.
The main repository for The Arsse can be found at [code.mensbeam.com](https://code.mensbeam.com/MensBeam/arsse/), with a mirror also available [at GitHub](https://github.com/mensbeam/arsse/). The GitHub mirror does not accept bug reports, but the two should otherwise be equivalent.
[Composer](https://getcomposer.org/) is required to manage PHP dependencies. After cloning the repository or downloading a source code tarball, running `composer install` will download all the required dependencies, and will advise if any PHP extensions need to be installed. If not installing as a programming environment, running `composer install --no-dev` is recommended.

23
RoboFile.php

@ -6,6 +6,7 @@ const BASE = __DIR__.\DIRECTORY_SEPARATOR;
const BASE_TEST = BASE."tests".\DIRECTORY_SEPARATOR;
define("IS_WIN", defined("PHP_WINDOWS_VERSION_MAJOR"));
define("IS_MAC", php_uname("s") === "Darwin");
error_reporting(0);
function norm(string $path): string {
$out = realpath($path);
@ -24,7 +25,7 @@ class RoboFile extends \Robo\Tasks {
* ./robo test --testsuite TTRSS --exclude-group slow --testdox
*
* Please see the PHPUnit documentation for available options.
*/
*/
public function test(array $args): Result {
return $this->runTests(escapeshellarg(\PHP_BINARY), "typical", $args);
}
@ -33,7 +34,7 @@ class RoboFile extends \Robo\Tasks {
*
* This includes pedantic tests which may help to identify problems.
* See help for the "test" task for more details.
*/
*/
public function testFull(array $args): Result {
return $this->runTests(escapeshellarg(\PHP_BINARY), "full", $args);
}
@ -42,7 +43,7 @@ class RoboFile extends \Robo\Tasks {
* Runs a quick subset of the test suite
*
* See help for the "test" task for more details.
*/
*/
public function testQuick(array $args): Result {
return $this->runTests(escapeshellarg(\PHP_BINARY), "quick", $args);
}
@ -54,9 +55,9 @@ class RoboFile extends \Robo\Tasks {
* arguments to this task as one would to PHPUnit.
*
* Robo first tries to use pcov and will fall back first to xdebug then
* phpdbg. Neither pcov nor xdebug need to be enabled to be used; they
* phpdbg. Neither pcov nor xdebug need to be enabled to be used; they
* only need to be present in the extension load path to be used.
*/
*/
public function coverage(array $args): Result {
// run tests with code coverage reporting enabled
$exec = $this->findCoverageEngine();
@ -71,7 +72,7 @@ class RoboFile extends \Robo\Tasks {
* run all tests which may cover code.
*
* See also help for the "coverage" task for more details.
*/
*/
public function coverageFull(array $args): Result {
// run tests with code coverage reporting enabled
$exec = $this->findCoverageEngine();
@ -96,11 +97,11 @@ class RoboFile extends \Robo\Tasks {
if (extension_loaded("pcov")) {
return "$php -d pcov.enabled=1 -d pcov.directory=$code";
} elseif (extension_loaded("xdebug")) {
return $php;
return "$php -d xdebug.mode=coverage";
} elseif (file_exists($dir."pcov.$ext")) {
return "$php -d extension=pcov.$ext -d pcov.enabled=1 -d pcov.directory=$code";
} elseif (file_exists($dir."pcov.$ext")) {
return "$php -d zend_extension=xdebug.$ext";
} elseif (file_exists($dir."xdebug.$ext")) {
return "$php -d zend_extension=xdebug.$ext -d xdebug.mode=coverage";
} else {
if (IS_WIN) {
$dbg = dirname(\PHP_BINARY)."\\phpdbg.exe";
@ -121,7 +122,7 @@ class RoboFile extends \Robo\Tasks {
return $all ? ">$hole 2>&1" : "2>$hole";
}
protected function runTests(string $executor, string $set, array $args) : Result {
protected function runTests(string $executor, string $set, array $args): Result {
switch ($set) {
case "typical":
$set = ["--exclude-group", "optional"];
@ -153,7 +154,7 @@ class RoboFile extends \Robo\Tasks {
* Note that while it is possible to re-package old versions, the resultant tarball
* may not be equivalent due to subsequent changes in the exclude list, or because
* of new tooling.
*/
*/
public function package(string $version = null): Result {
// establish which commit to package
$version = $version ?? $this->askDefault("Commit to package:", "HEAD");

27
UPGRADING

@ -11,6 +11,33 @@ usually prudent:
`composer install -o --no-dev`
Upgrading from 0.8.5 to 0.9.0
=============================
- The database schema has changed from rev6 to rev7; if upgrading the database
manually, apply the 6.sql file
- Web server configuration has changed to accommodate Miniflux; the following
URL paths are affected:
- /v1/
- /version
- /healthcheck
- Icons for existing feeds in Miniflux and Fever will only appear once the
feeds in question have been fetched and parsed after upgrade. This may take
some time to occur depending on how often the feed is updated
- An administrator account is now required to refresh feeds via the
Nextcloud News protocol
Upgrading from 0.8.4 to 0.8.5
=============================
- The sample configuration for Nginx has changed, to correct the omission of
the QUERY_STRING FastCGI parameter in those passed to PHP. The omission
affects the Fever protocol in particular (the parameter is required for
Fever to function at all), though it could potentially affect some
Nextcloud News clients as well
Upgrading from 0.8.2 to 0.8.3
=============================

7
arsse.php

@ -3,6 +3,7 @@
* Copyright 2017 J. King, Dustin Wilson et al.
* See LICENSE and AUTHORS files for details */
declare(strict_types=1);
namespace JKingWeb\Arsse;
const BASE = __DIR__.DIRECTORY_SEPARATOR;
@ -12,10 +13,12 @@ require_once BASE."vendor".DIRECTORY_SEPARATOR."autoload.php";
ignore_user_abort(true);
ini_set("memory_limit", "-1");
ini_set("max_execution_time", "0");
// FIXME: This is required by a dependency of Picofeed
error_reporting(\E_ALL & ~\E_DEPRECATED);
if (\PHP_SAPI === "cli") {
// initialize the CLI; this automatically handles --help and --version
// initialize the CLI; this automatically handles --help and --version else
Arsse::$obj = new Factory;
$cli = new CLI;
// handle other CLI requests; some do not require configuration
$exitStatus = $cli->dispatch();

4
composer.json

@ -18,12 +18,12 @@
],
"require": {
"php": "^7.1",
"php": "^7.1 || ^8.0",
"ext-intl": "*",
"ext-json": "*",
"ext-hash": "*",
"ext-dom": "*",
"nicolus/picofeed": "dev-master#0ebdf92852a4725f4807c200dd49bf9fff3905b7",
"nicolus/picofeed": "^0.1.43",
"hosteurope/password-generator": "1.*",
"docopt/docopt": "1.*",
"jkingweb/druuid": "3.*",

508
composer.lock

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "1d03b34d159fbf69097aa783994f9cfa",
"content-hash": "2a87797422ae569bafcbb6476461ac38",
"packages": [
{
"name": "docopt/docopt",
@ -50,27 +50,32 @@
"cli",
"docs"
],
"support": {
"issues": "https://github.com/docopt/docopt.php/issues",
"source": "https://github.com/docopt/docopt.php/tree/1.0.4"
},
"time": "2019-12-03T02:48:46+00:00"
},
{
"name": "guzzlehttp/guzzle",
"version": "6.5.2",
"version": "6.5.5",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "43ece0e75098b7ecd8d13918293029e555a50f82"
"reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/43ece0e75098b7ecd8d13918293029e555a50f82",
"reference": "43ece0e75098b7ecd8d13918293029e555a50f82",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
"reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
"shasum": ""
},
"require": {
"ext-json": "*",
"guzzlehttp/promises": "^1.0",
"guzzlehttp/psr7": "^1.6.1",
"php": ">=5.5"
"php": ">=5.5",
"symfony/polyfill-intl-idn": "^1.17.0"
},
"require-dev": {
"ext-curl": "*",
@ -78,7 +83,6 @@
"psr/log": "^1.1"
},
"suggest": {
"ext-intl": "Required for Internationalized Domain Name (IDN) support",
"psr/log": "Required for using the Log middleware"
},
"type": "library",
@ -117,27 +121,31 @@
"rest",
"web service"
],
"time": "2019-12-23T11:57:10+00:00"
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/6.5"
},
"time": "2020-06-16T21:01:06+00:00"
},
{
"name": "guzzlehttp/promises",
"version": "v1.3.1",
"version": "1.4.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
"reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
"reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
"reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
"url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d",
"reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d",
"shasum": ""
},
"require": {
"php": ">=5.5.0"
"php": ">=5.5"
},
"require-dev": {
"phpunit/phpunit": "^4.0"
"symfony/phpunit-bridge": "^4.4 || ^5.1"
},
"type": "library",
"extra": {
@ -168,20 +176,24 @@
"keywords": [
"promise"
],
"time": "2016-12-20T10:07:11+00:00"
"support": {
"issues": "https://github.com/guzzle/promises/issues",
"source": "https://github.com/guzzle/promises/tree/1.4.1"
},
"time": "2021-03-07T09:25:29+00:00"
},
{
"name": "guzzlehttp/psr7",
"version": "1.6.1",
"version": "1.8.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "239400de7a173fe9901b9ac7c06497751f00727a"
"reference": "35ea11d335fd638b5882ff1725228b3d35496ab1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a",
"reference": "239400de7a173fe9901b9ac7c06497751f00727a",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/35ea11d335fd638b5882ff1725228b3d35496ab1",
"reference": "35ea11d335fd638b5882ff1725228b3d35496ab1",
"shasum": ""
},
"require": {
@ -194,15 +206,15 @@
},
"require-dev": {
"ext-zlib": "*",
"phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8"
"phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
},
"suggest": {
"zendframework/zend-httphandlerrunner": "Emit PSR-7 responses"
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.6-dev"
"dev-master": "1.7-dev"
}
},
"autoload": {
@ -239,7 +251,11 @@
"uri",
"url"
],
"time": "2019-07-01T23:21:34+00:00"
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/1.8.1"
},
"time": "2021-03-21T16:25:00+00:00"
},
{
"name": "hosteurope/password-generator",
@ -279,6 +295,10 @@
}
],
"description": "Password generator for generating policy-compliant passwords.",
"support": {
"issues": "https://github.com/hosteurope/password-generator/issues",
"source": "https://github.com/hosteurope/password-generator/tree/master"
},
"time": "2016-12-08T09:32:12+00:00"
},
{
@ -324,6 +344,10 @@
"keywords": [
"uuid"
],
"support": {
"issues": "https://github.com/JKingweb/DrUUID/issues",
"source": "https://github.com/JKingweb/DrUUID/tree/3.0.0"
},
"time": "2017-02-09T14:17:01+00:00"
},
{
@ -399,20 +423,24 @@
"rfc7234",
"validation"
],
"support": {
"issues": "https://github.com/Kevinrob/guzzle-cache-middleware/issues",
"source": "https://github.com/Kevinrob/guzzle-cache-middleware/tree/master"
},
"time": "2017-08-17T12:23:43+00:00"
},
{
"name": "laminas/laminas-diactoros",
"version": "2.2.2",
"version": "2.4.1",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-diactoros.git",
"reference": "95178c4751d737cdf9ab0a9f70a42754ac860e7b"
"reference": "36ef09b73e884135d2059cc498c938e90821bb57"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/95178c4751d737cdf9ab0a9f70a42754ac860e7b",
"reference": "95178c4751d737cdf9ab0a9f70a42754ac860e7b",
"url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/36ef09b73e884135d2059cc498c938e90821bb57",
"reference": "36ef09b73e884135d2059cc498c938e90821bb57",
"shasum": ""
},
"require": {
@ -429,23 +457,23 @@
"psr/http-message-implementation": "1.0"
},
"replace": {
"zendframework/zend-diactoros": "self.version"
"zendframework/zend-diactoros": "^2.2.1"
},
"require-dev": {
"ext-curl": "*",
"ext-dom": "*",
"ext-gd": "*",
"ext-libxml": "*",
"http-interop/http-factory-tests": "^0.5.0",
"laminas/laminas-coding-standard": "~1.0.0",
"php-http/psr7-integration-tests": "dev-master",
"php-http/psr7-integration-tests": "^1.0",
"phpunit/phpunit": "^7.5.18"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.1.x-dev",
"dev-develop": "2.2.x-dev",
"dev-release-1.8": "1.8.x-dev"
"laminas": {
"config-provider": "Laminas\\Diactoros\\ConfigProvider",
"module": "Laminas\\Diactoros"
}
},
"autoload": {
@ -481,22 +509,37 @@
"http",
"laminas",
"psr",
"psr-17",
"psr-7"
],
"time": "2020-01-07T19:39:26+00:00"
"support": {
"chat": "https://laminas.dev/chat",
"docs": "https://docs.laminas.dev/laminas-diactoros/",
"forum": "https://discourse.laminas.dev",
"issues": "https://github.com/laminas/laminas-diactoros/issues",
"rss": "https://github.com/laminas/laminas-diactoros/releases.atom",
"source": "https://github.com/laminas/laminas-diactoros"
},
"funding": [
{
"url": "https://funding.communitybridge.org/projects/laminas-project",
"type": "community_bridge"
}
],
"time": "2020-09-03T14:29:41+00:00"
},
{
"name": "laminas/laminas-httphandlerrunner",
"version": "1.1.0",
"version": "1.2.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-httphandlerrunner.git",
"reference": "296f5ff35074dd981d1570a66b95596c81808087"
"reference": "e1a5dad040e0043135e8095ee27d1fbf6fb640e1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laminas/laminas-httphandlerrunner/zipball/296f5ff35074dd981d1570a66b95596c81808087",
"reference": "296f5ff35074dd981d1570a66b95596c81808087",
"url": "https://api.github.com/repos/laminas/laminas-httphandlerrunner/zipball/e1a5dad040e0043135e8095ee27d1fbf6fb640e1",
"reference": "e1a5dad040e0043135e8095ee27d1fbf6fb640e1",
"shasum": ""
},
"require": {
@ -507,7 +550,7 @@
"psr/http-server-handler": "^1.0"
},
"replace": {
"zendframework/zend-httphandlerrunner": "self.version"
"zendframework/zend-httphandlerrunner": "^1.1.0"
},
"require-dev": {
"laminas/laminas-coding-standard": "~1.0.0",
@ -517,8 +560,8 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.1.x-dev",
"dev-develop": "1.2.x-dev"
"dev-master": "1.2.x-dev",
"dev-develop": "1.3.x-dev"
},
"laminas": {
"config-provider": "Laminas\\HttpHandlerRunner\\ConfigProvider"
@ -542,7 +585,21 @@
"psr-15",
"psr-7"
],
"time": "2019-12-31T17:06:16+00:00"
"support": {
"chat": "https://laminas.dev/chat",
"docs": "https://docs.laminas.dev/laminas-httphandlerrunner/",
"forum": "https://discourse.laminas.dev",
"issues": "https://github.com/laminas/laminas-httphandlerrunner/issues",
"rss": "https://github.com/laminas/laminas-httphandlerrunner/releases.atom",
"source": "https://github.com/laminas/laminas-httphandlerrunner"
},
"funding": [
{
"url": "https://funding.communitybridge.org/projects/laminas-project",
"type": "community_bridge"
}
],
"time": "2020-06-03T15:52:17+00:00"
},
{
"name": "laminas/laminas-xml",
@ -592,35 +649,39 @@
"security",
"xml"
],
"support": {
"chat": "https://laminas.dev/chat",
"docs": "https://docs.laminas.dev/laminas-xml/",
"forum": "https://discourse.laminas.dev",
"issues": "https://github.com/laminas/laminas-xml/issues",
"rss": "https://github.com/laminas/laminas-xml/releases.atom",
"source": "https://github.com/laminas/laminas-xml"
},
"time": "2019-12-31T18:05:42+00:00"
},
{
"name": "laminas/laminas-zendframework-bridge",
"version": "1.0.1",
"version": "1.1.1",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-zendframework-bridge.git",
"reference": "0fb9675b84a1666ab45182b6c5b29956921e818d"
"reference": "6ede70583e101030bcace4dcddd648f760ddf642"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/0fb9675b84a1666ab45182b6c5b29956921e818d",
"reference": "0fb9675b84a1666ab45182b6c5b29956921e818d",
"url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/6ede70583e101030bcace4dcddd648f760ddf642",
"reference": "6ede70583e101030bcace4dcddd648f760ddf642",
"shasum": ""
},
"require": {
"php": "^5.6 || ^7.0"
"php": "^5.6 || ^7.0 || ^8.0"
},
"require-dev": {
"phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1",
"phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1 || ^9.3",
"squizlabs/php_codesniffer": "^3.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev",
"dev-develop": "1.1.x-dev"
},
"laminas": {
"module": "Laminas\\ZendFrameworkBridge"
}
@ -644,20 +705,32 @@
"laminas",
"zf"
],
"time": "2020-01-07T22:58:31+00:00"
"support": {
"forum": "https://discourse.laminas.dev/",
"issues": "https://github.com/laminas/laminas-zendframework-bridge/issues",
"rss": "https://github.com/laminas/laminas-zendframework-bridge/releases.atom",
"source": "https://github.com/laminas/laminas-zendframework-bridge"
},
"funding": [
{
"url": "https://funding.communitybridge.org/projects/laminas-project",
"type": "community_bridge"
}
],
"time": "2020-09-14T14:23:00+00:00"
},
{
"name": "nicolus/picofeed",
"version": "dev-master",
"version": "0.1.43",
"source": {
"type": "git",
"url": "https://github.com/nicolus/picoFeed.git",
"reference": "0ebdf92852a4725f4807c200dd49bf9fff3905b7"
"reference": "e6bfe8d30009603702d1bff46a7abf8bfb25f8a8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nicolus/picoFeed/zipball/0ebdf92852a4725f4807c200dd49bf9fff3905b7",
"reference": "0ebdf92852a4725f4807c200dd49bf9fff3905b7",
"url": "https://api.github.com/repos/nicolus/picoFeed/zipball/e6bfe8d30009603702d1bff46a7abf8bfb25f8a8",
"reference": "e6bfe8d30009603702d1bff46a7abf8bfb25f8a8",
"shasum": ""
},
"require": {
@ -706,7 +779,10 @@
],
"description": "RSS/Atom parsing library",
"homepage": "https://github.com/nicolus/picoFeed",
"time": "2020-02-13T06:43:47+00:00"
"support": {
"source": "https://github.com/nicolus/picoFeed/tree/0.1.43"
},
"time": "2020-09-15T07:28:23+00:00"
},
{
"name": "psr/http-factory",
@ -758,6 +834,9 @@
"request",
"response"
],
"support": {
"source": "https://github.com/php-fig/http-factory/tree/master"
},
"time": "2019-04-30T12:38:16+00:00"
},
{
@ -808,6 +887,9 @@
"request",
"response"
],
"support": {
"source": "https://github.com/php-fig/http-message/tree/master"
},
"time": "2016-08-06T14:39:51+00:00"
},
{
@ -861,20 +943,24 @@
"response",
"server"
],
"support": {
"issues": "https://github.com/php-fig/http-server-handler/issues",
"source": "https://github.com/php-fig/http-server-handler/tree/master"
},
"time": "2018-10-30T16:46:14+00:00"
},
{
"name": "psr/log",
"version": "1.1.2",
"version": "1.1.3",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801"
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801",
"reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801",
"url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
"shasum": ""
},
"require": {
@ -908,7 +994,10 @@
"psr",
"psr-3"
],
"time": "2019-11-01T11:05:21+00:00"
"support": {
"source": "https://github.com/php-fig/log/tree/1.1.3"
},
"time": "2020-03-23T09:12:05+00:00"
},
{
"name": "ralouphie/getallheaders",
@ -948,37 +1037,286 @@
}
],
"description": "A polyfill for getallheaders.",
"support": {
"issues": "https://github.com/ralouphie/getallheaders/issues",
"source": "https://github.com/ralouphie/getallheaders/tree/develop"
},
"time": "2019-03-08T08:55:37+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
"version": "v1.22.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
"reference": "2d63434d922daf7da8dd863e7907e67ee3031483"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/2d63434d922daf7da8dd863e7907e67ee3031483",
"reference": "2d63434d922daf7da8dd863e7907e67ee3031483",
"shasum": ""
},
"require": {
"php": ">=7.1",
"symfony/polyfill-intl-normalizer": "^1.10",
"symfony/polyfill-php72": "^1.10"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Intl\\Idn\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Laurent Bassin",
"email": "laurent@bassin.info"
},
{
"name": "Trevor Rowbotham",
"email": "trevor.rowbotham@pm.me"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"idn",
"intl",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.22.1"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2021-01-22T09:19:47+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
"version": "v1.22.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
"reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/43a0283138253ed1d48d352ab6d0bdb3f809f248",
"reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Intl\\Normalizer\\": ""
},
"files": [
"bootstrap.php"
],
"classmap": [
"Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for intl's Normalizer class and related functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"intl",
"normalizer",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.22.1"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2021-01-22T09:19:47+00:00"
},
{
"name": "symfony/polyfill-php72",
"version": "v1.22.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
"reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9",
"reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php72\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [